PATH:
home
/
letacommog
/
crmleta
/
modules
/
Vtiger
/
models
<?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); } }
[+]
..
[-] MenuStructure.php
[edit]
[-] SummaryRecordStructure.php
[edit]
[-] Action.php
[edit]
[-] TrackRecord.php
[edit]
[-] Utility.php
[edit]
[-] DetailRecordStructure.php
[edit]
[-] QuickCreateRecordStructure.php
[edit]
[-] ModuleMeta.php
[edit]
[-] MassEditRecordStructure.php
[edit]
[-] CompanyDetails.php
[edit]
[-] Block.php
[edit]
[-] RecipientPreference.php
[edit]
[-] CssScript.php
[edit]
[-] DashBoard.php
[edit]
[-] DetailView.php
[edit]
[-] Image.php
[edit]
[-] EditView.php
[edit]
[-] Record.php
[edit]
[-] Widget.php
[edit]
[-] Tag.php
[edit]
[-] FindDuplicate.php
[edit]
[-] MiniList.php
[edit]
[-] ListView.php
[edit]
[-] Menu.php
[edit]
[-] RelationListView.php
[edit]
[-] Notebook.php
[edit]
[-] FilterRecordStructure.php
[edit]
[-] RecordStructure.php
[edit]
[-] TooltipView.php
[edit]
[-] JsScript.php
[edit]
[-] EditRecordStructure.php
[edit]
[-] Paging.php
[edit]
[-] Link.php
[edit]
[-] Field.php
[edit]
[-] Relation.php
[edit]
[-] Module.php
[edit]