晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/modules/Vtiger/models/ |
Upload File : |
<?php
/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*************************************************************************************/
class Vtiger_DetailView_Model extends Vtiger_Base_Model {
protected $module = false;
protected $record = false;
/**
* Function to get Module instance
* @return <Vtiger_Module_Model>
*/
public function getModule() {
return $this->module;
}
/**
* Function to set the module instance
* @param <Vtiger_Module_Model> $moduleInstance - module model
* @return Vtiger_DetailView_Model>
*/
public function setModule($moduleInstance) {
$this->module = $moduleInstance;
return $this;
}
/**
* Function to get the Record model
* @return <Vtiger_Record_Model>
*/
public function getRecord() {
return $this->record;
}
/**
* Function to set the record instance3
* @param <type> $recordModuleInstance - record model
* @return Vtiger_DetailView_Model
*/
public function setRecord($recordModuleInstance) {
$this->record = $recordModuleInstance;
return $this;
}
/**
* Function to get the detail view links (links and widgets)
* @param <array> $linkParams - parameters which will be used to calicaulate the params
* @return <array> - array of link models in the format as below
* array('linktype'=>list of link models);
*/
public function getDetailViewLinks($linkParams) {
$linkTypes = array('DETAILVIEWBASIC','DETAILVIEW');
$moduleModel = $this->getModule();
$recordModel = $this->getRecord();
$moduleName = $moduleModel->getName();
$recordId = $recordModel->getId();
$detailViewLink = array();
$linkModelList = array();
if(Users_Privileges_Model::isPermitted($moduleName, 'EditView', $recordId)) {
$detailViewLinks[] = array(
'linktype' => 'DETAILVIEWBASIC',
'linklabel' => 'LBL_EDIT',
'linkurl' => $recordModel->getEditViewUrl(),
'linkicon' => ''
);
foreach ($detailViewLinks as $detailViewLink) {
$linkModelList['DETAILVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($detailViewLink);
}
}
if(Users_Privileges_Model::isPermitted($moduleName, 'Delete', $recordId)) {
$deletelinkModel = array(
'linktype' => 'DETAILVIEW',
'linklabel' => sprintf("%s %s", getTranslatedString('LBL_DELETE', $moduleName), vtranslate('SINGLE_'. $moduleName, $moduleName)),
'linkurl' => 'javascript:Vtiger_Detail_Js.deleteRecord("'.$recordModel->getDeleteUrl().'")',
'linkicon' => ''
);
$linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($deletelinkModel);
}
if($moduleModel->isDuplicateOptionAllowed('CreateView', $recordId)) {
$duplicateLinkModel = array(
'linktype' => 'DETAILVIEWBASIC',
'linklabel' => 'LBL_DUPLICATE',
'linkurl' => $recordModel->getDuplicateRecordUrl(),
'linkicon' => ''
);
$linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($duplicateLinkModel);
}
if($this->getModule()->isModuleRelated('Emails') && Vtiger_RecipientPreference_Model::getInstance($this->getModuleName())) {
$emailRecpLink = array('linktype' => 'DETAILVIEW',
'linklabel' => vtranslate('LBL_EMAIL_RECIPIENT_PREFS', $this->getModuleName()),
'linkurl' => 'javascript:Vtiger_Index_Js.showRecipientPreferences("'.$this->getModuleName().'");',
'linkicon' => '');
$linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($emailRecpLink);
}
$linkModelListDetails = Vtiger_Link_Model::getAllByType($moduleModel->getId(),$linkTypes,$linkParams);
foreach($linkTypes as $linkType) {
if(!empty($linkModelListDetails[$linkType])) {
foreach($linkModelListDetails[$linkType] as $linkModel) {
// Remove view history, needed in vtiger5 to see history but not in vtiger6
if($linkModel->linklabel == 'View History') {
continue;
}
$linkModelList[$linkType][] = $linkModel;
}
}
unset($linkModelListDetails[$linkType]);
}
$relatedLinks = $this->getDetailViewRelatedLinks();
foreach($relatedLinks as $relatedLinkEntry) {
$relatedLink = Vtiger_Link_Model::getInstanceFromValues($relatedLinkEntry);
$linkModelList[$relatedLink->getType()][] = $relatedLink;
}
$widgets = $this->getWidgets();
foreach($widgets as $widgetLinkModel) {
$linkModelList['DETAILVIEWWIDGET'][] = $widgetLinkModel;
}
$currentUserModel = Users_Record_Model::getCurrentUserModel();
if($currentUserModel->isAdminUser()) {
$settingsLinks = $moduleModel->getSettingLinks();
foreach($settingsLinks as $settingsLink) {
$linkModelList['DETAILVIEWSETTING'][] = Vtiger_Link_Model::getInstanceFromValues($settingsLink);
}
}
return $linkModelList;
}
/**
* Function to get the detail view related links
* @return <array> - list of links parameters
*/
public function getDetailViewRelatedLinks() {
$recordModel = $this->getRecord();
$moduleName = $recordModel->getModuleName();
$parentModuleModel = $this->getModule();
$relatedLinks = array();
if($parentModuleModel->isSummaryViewSupported()) {
$relatedLinks = array(array(
'linktype' => 'DETAILVIEWTAB',
'linklabel' => vtranslate('LBL_SUMMARY', $moduleName),
'linkKey' => 'LBL_RECORD_SUMMARY',
'linkurl' => $recordModel->getDetailViewUrl() . '&mode=showDetailViewByMode&requestMode=summary',
'linkicon' => ''
));
}
//link which shows the summary information(generally detail of record)
$relatedLinks[] = array(
'linktype' => 'DETAILVIEWTAB',
'linklabel' => vtranslate('LBL_DETAILS', $moduleName),
'linkKey' => 'LBL_RECORD_DETAILS',
'linkurl' => $recordModel->getDetailViewUrl().'&mode=showDetailViewByMode&requestMode=full',
'linkicon' => ''
);
if($parentModuleModel->isTrackingEnabled()) {
$relatedLinks[] = array(
'linktype' => 'DETAILVIEWTAB',
'linklabel' => 'LBL_UPDATES',
'linkurl' => $recordModel->getDetailViewUrl().'&mode=showRecentActivities&page=1',
'linkicon' => ''
);
}
$relationModels = $parentModuleModel->getRelations();
foreach($relationModels as $relation) {
//TODO : Way to get limited information than getting all the information
$link = array(
'linktype' => 'DETAILVIEWRELATED',
'linklabel' => $relation->get('label'),
'linkurl' => $relation->getListUrl($recordModel),
'linkicon' => '',
'relatedModuleName' => $relation->get('relatedModuleName'),
'linkid' => $relation->getId()
);
$relatedLinks[] = $link;
}
return $relatedLinks;
}
/**
* Function to get the detail view widgets
* @return <Array> - List of widgets , where each widget is an Vtiger_Link_Model
*/
public function getWidgets() {
$moduleModel = $this->getModule();
$widgets = array();
if($moduleModel->isTrackingEnabled()) {
$widgets[] = array(
'linktype' => 'DETAILVIEWWIDGET',
'linklabel' => 'LBL_UPDATES',
'linkurl' => 'module='.$this->getModuleName().'&view=Detail&record='.$this->getRecord()->getId().
'&mode=showRecentActivities&page=1&limit=5',
);
}
$modCommentsModel = Vtiger_Module_Model::getInstance('ModComments');
if($moduleModel->isCommentEnabled() && $modCommentsModel->isPermitted('DetailView')) {
$widgets[] = array(
'linktype' => 'DETAILVIEWWIDGET',
'linklabel' => 'ModComments',
'linkurl' => 'module='.$this->getModuleName().'&view=Detail&record='.$this->getRecord()->getId().
'&mode=showRecentComments&page=1&limit=5'
);
}
$userPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
$documentsInstance = Vtiger_Module_Model::getInstance('Documents');
if($userPrivilegesModel->hasModuleActionPermission($documentsInstance->getId(), 'DetailView') && $moduleModel->isModuleRelated('Documents')) {
$createPermission = $userPrivilegesModel->hasModuleActionPermission($documentsInstance->getId(), 'CreateView');
$widgets[] = array(
'linktype' => 'DETAILVIEWWIDGET',
'linklabel' => 'Documents',
'linkName' => $documentsInstance->getName(),
'linkurl' => 'module='.$this->getModuleName().'&view=Detail&record='.$this->getRecord()->getId().
'&relatedModule=Documents&mode=showRelatedRecords&page=1&limit=5',
'action' => ($createPermission == true) ? array('Add') : array(),
'actionURL' => $documentsInstance->getQuickCreateUrl()
);
}
$widgetLinks = array();
foreach ($widgets as $widgetDetails) {
$widgetLinks[] = Vtiger_Link_Model::getInstanceFromValues($widgetDetails);
}
return $widgetLinks;
}
/**
* Function to get the Quick Links for the Detail view of the module
* @param <Array> $linkParams
* @return <Array> List of Vtiger_Link_Model instances
*/
public function getSideBarLinks($linkParams) {
$currentUser = Users_Record_Model::getCurrentUserModel();
$linkTypes = array('SIDEBARLINK', 'SIDEBARWIDGET');
$moduleLinks = $this->getModule()->getSideBarLinks($linkTypes);
$listLinkTypes = array('DETAILVIEWSIDEBARLINK', 'DETAILVIEWSIDEBARWIDGET');
$listLinks = Vtiger_Link_Model::getAllByType($this->getModule()->getId(), $listLinkTypes);
if($listLinks['DETAILVIEWSIDEBARLINK']) {
foreach($listLinks['DETAILVIEWSIDEBARLINK'] as $link) {
$link->linkurl = $link->linkurl.'&record='.$this->getRecord()->getId().'&source_module='.$this->getModule()->getName();
$moduleLinks['SIDEBARLINK'][] = $link;
}
}
if($currentUser->getTagCloudStatus()) {
$tagWidget = array(
'linktype' => 'DETAILVIEWSIDEBARWIDGET',
'linklabel' => 'LBL_TAG_CLOUD',
'linkurl' => 'module='.$this->getModule()->getName().'&view=ShowTagCloud&mode=showTags',
'linkicon' => '',
);
$linkModel = Vtiger_Link_Model::getInstanceFromValues($tagWidget);
if($listLinks['DETAILVIEWSIDEBARWIDGET']) array_push($listLinks['DETAILVIEWSIDEBARWIDGET'], $linkModel);
else $listLinks['DETAILVIEWSIDEBARWIDGET'][] = $linkModel;
}
if($listLinks['DETAILVIEWSIDEBARWIDGET']) {
foreach($listLinks['DETAILVIEWSIDEBARWIDGET'] as $link) {
$link->linkurl = $link->linkurl.'&record='.$this->getRecord()->getId().'&source_module='.$this->getModule()->getName();
$moduleLinks['SIDEBARWIDGET'][] = $link;
}
}
return $moduleLinks;
}
/**
* Function to get the module label
* @return <String> - label
*/
public function getModuleLabel() {
return $this->getModule()->get('label');
}
/**
* Function to get the module name
* @return <String> - name of the module
*/
public function getModuleName() {
return $this->getModule()->get('name');
}
/**
* Function to get the instance
* @param <String> $moduleName - module name
* @param <String> $recordId - record id
* @return <Vtiger_DetailView_Model>
*/
public static function getInstance($moduleName,$recordId) {
$modelClassName = Vtiger_Loader::getComponentClassName('Model', 'DetailView', $moduleName);
$instance = new $modelClassName();
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
return $instance->setModule($moduleModel)->setRecord($recordModel);
}
}