[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /*+*********************************************************************************** 3 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 4 * ("License"); You may not use this file except in compliance with the License 5 * The Original Code is: vtiger CRM Open Source 6 * The Initial Developer of the Original Code is vtiger. 7 * Portions created by vtiger are Copyright (C) vtiger. 8 * All Rights Reserved. 9 *************************************************************************************/ 10 11 class Vtiger_DetailView_Model extends Vtiger_Base_Model { 12 13 protected $module = false; 14 protected $record = false; 15 16 /** 17 * Function to get Module instance 18 * @return <Vtiger_Module_Model> 19 */ 20 public function getModule() { 21 return $this->module; 22 } 23 24 /** 25 * Function to set the module instance 26 * @param <Vtiger_Module_Model> $moduleInstance - module model 27 * @return Vtiger_DetailView_Model> 28 */ 29 public function setModule($moduleInstance) { 30 $this->module = $moduleInstance; 31 return $this; 32 } 33 34 /** 35 * Function to get the Record model 36 * @return <Vtiger_Record_Model> 37 */ 38 public function getRecord() { 39 return $this->record; 40 } 41 42 /** 43 * Function to set the record instance3 44 * @param <type> $recordModuleInstance - record model 45 * @return Vtiger_DetailView_Model 46 */ 47 public function setRecord($recordModuleInstance) { 48 $this->record = $recordModuleInstance; 49 return $this; 50 } 51 52 /** 53 * Function to get the detail view links (links and widgets) 54 * @param <array> $linkParams - parameters which will be used to calicaulate the params 55 * @return <array> - array of link models in the format as below 56 * array('linktype'=>list of link models); 57 */ 58 public function getDetailViewLinks($linkParams) { 59 $linkTypes = array('DETAILVIEWBASIC','DETAILVIEW'); 60 $moduleModel = $this->getModule(); 61 $recordModel = $this->getRecord(); 62 63 $moduleName = $moduleModel->getName(); 64 $recordId = $recordModel->getId(); 65 66 $detailViewLink = array(); 67 68 if(Users_Privileges_Model::isPermitted($moduleName, 'EditView', $recordId)) { 69 $detailViewLinks[] = array( 70 'linktype' => 'DETAILVIEWBASIC', 71 'linklabel' => 'LBL_EDIT', 72 'linkurl' => $recordModel->getEditViewUrl(), 73 'linkicon' => '' 74 ); 75 76 foreach ($detailViewLinks as $detailViewLink) { 77 $linkModelList['DETAILVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($detailViewLink); 78 } 79 } 80 81 $linkModelListDetails = Vtiger_Link_Model::getAllByType($moduleModel->getId(),$linkTypes,$linkParams); 82 //Mark all detail view basic links as detail view links. 83 //Since ui will be look ugly if you need many basic links 84 $detailViewBasiclinks = $linkModelListDetails['DETAILVIEWBASIC']; 85 unset($linkModelListDetails['DETAILVIEWBASIC']); 86 87 if(Users_Privileges_Model::isPermitted($moduleName, 'Delete', $recordId)) { 88 $deletelinkModel = array( 89 'linktype' => 'DETAILVIEW', 90 'linklabel' => sprintf("%s %s", getTranslatedString('LBL_DELETE', $moduleName), vtranslate('SINGLE_'. $moduleName, $moduleName)), 91 'linkurl' => 'javascript:Vtiger_Detail_Js.deleteRecord("'.$recordModel->getDeleteUrl().'")', 92 'linkicon' => '' 93 ); 94 $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($deletelinkModel); 95 } 96 97 if(Users_Privileges_Model::isPermitted($moduleName, 'EditView', $recordId)) { 98 $duplicateLinkModel = array( 99 'linktype' => 'DETAILVIEWBASIC', 100 'linklabel' => 'LBL_DUPLICATE', 101 'linkurl' => $recordModel->getDuplicateRecordUrl(), 102 'linkicon' => '' 103 ); 104 $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($duplicateLinkModel); 105 } 106 107 if(!empty($detailViewBasiclinks)) { 108 foreach($detailViewBasiclinks as $linkModel) { 109 // Remove view history, needed in vtiger5 to see history but not in vtiger6 110 if($linkModel->linklabel == 'View History') { 111 continue; 112 } 113 $linkModelList['DETAILVIEW'][] = $linkModel; 114 } 115 } 116 117 $relatedLinks = $this->getDetailViewRelatedLinks(); 118 119 foreach($relatedLinks as $relatedLinkEntry) { 120 $relatedLink = Vtiger_Link_Model::getInstanceFromValues($relatedLinkEntry); 121 $linkModelList[$relatedLink->getType()][] = $relatedLink; 122 } 123 124 $widgets = $this->getWidgets(); 125 foreach($widgets as $widgetLinkModel) { 126 $linkModelList['DETAILVIEWWIDGET'][] = $widgetLinkModel; 127 } 128 129 $currentUserModel = Users_Record_Model::getCurrentUserModel(); 130 if($currentUserModel->isAdminUser()) { 131 $settingsLinks = $moduleModel->getSettingLinks(); 132 foreach($settingsLinks as $settingsLink) { 133 $linkModelList['DETAILVIEWSETTING'][] = Vtiger_Link_Model::getInstanceFromValues($settingsLink); 134 } 135 } 136 137 return $linkModelList; 138 } 139 140 /** 141 * Function to get the detail view related links 142 * @return <array> - list of links parameters 143 */ 144 public function getDetailViewRelatedLinks() { 145 $recordModel = $this->getRecord(); 146 $moduleName = $recordModel->getModuleName(); 147 $parentModuleModel = $this->getModule(); 148 $relatedLinks = array(); 149 150 if($parentModuleModel->isSummaryViewSupported()) { 151 $relatedLinks = array(array( 152 'linktype' => 'DETAILVIEWTAB', 153 'linklabel' => vtranslate('SINGLE_' . $moduleName, $moduleName) . ' ' . vtranslate('LBL_SUMMARY', $moduleName), 154 'linkKey' => 'LBL_RECORD_SUMMARY', 155 'linkurl' => $recordModel->getDetailViewUrl() . '&mode=showDetailViewByMode&requestMode=summary', 156 'linkicon' => '' 157 )); 158 } 159 //link which shows the summary information(generally detail of record) 160 $relatedLinks[] = array( 161 'linktype' => 'DETAILVIEWTAB', 162 'linklabel' => vtranslate('SINGLE_'.$moduleName, $moduleName).' '. vtranslate('LBL_DETAILS', $moduleName), 163 'linkKey' => 'LBL_RECORD_DETAILS', 164 'linkurl' => $recordModel->getDetailViewUrl().'&mode=showDetailViewByMode&requestMode=full', 165 'linkicon' => '' 166 ); 167 168 $modCommentsModel = Vtiger_Module_Model::getInstance('ModComments'); 169 if($parentModuleModel->isCommentEnabled() && $modCommentsModel->isPermitted('DetailView')) { 170 $relatedLinks[] = array( 171 'linktype' => 'DETAILVIEWTAB', 172 'linklabel' => 'ModComments', 173 'linkurl' => $recordModel->getDetailViewUrl().'&mode=showAllComments', 174 'linkicon' => '' 175 ); 176 } 177 178 if($parentModuleModel->isTrackingEnabled()) { 179 $relatedLinks[] = array( 180 'linktype' => 'DETAILVIEWTAB', 181 'linklabel' => 'LBL_UPDATES', 182 'linkurl' => $recordModel->getDetailViewUrl().'&mode=showRecentActivities&page=1', 183 'linkicon' => '' 184 ); 185 } 186 187 188 $relationModels = $parentModuleModel->getRelations(); 189 190 foreach($relationModels as $relation) { 191 //TODO : Way to get limited information than getting all the information 192 $link = array( 193 'linktype' => 'DETAILVIEWRELATED', 194 'linklabel' => $relation->get('label'), 195 'linkurl' => $relation->getListUrl($recordModel), 196 'linkicon' => '', 197 'relatedModuleName' => $relation->get('relatedModuleName') 198 ); 199 $relatedLinks[] = $link; 200 } 201 202 return $relatedLinks; 203 } 204 205 /** 206 * Function to get the detail view widgets 207 * @return <Array> - List of widgets , where each widget is an Vtiger_Link_Model 208 */ 209 public function getWidgets() { 210 $moduleModel = $this->getModule(); 211 $widgets = array(); 212 213 $modCommentsModel = Vtiger_Module_Model::getInstance('ModComments'); 214 if($moduleModel->isCommentEnabled() && $modCommentsModel->isPermitted('DetailView')) { 215 $widgets[] = array( 216 'linktype' => 'DETAILVIEWWIDGET', 217 'linklabel' => 'ModComments', 218 'linkurl' => 'module='.$this->getModuleName().'&view=Detail&record='.$this->getRecord()->getId(). 219 '&mode=showRecentComments&page=1&limit=5' 220 ); 221 } 222 223 if($moduleModel->isTrackingEnabled()) { 224 $widgets[] = array( 225 'linktype' => 'DETAILVIEWWIDGET', 226 'linklabel' => 'LBL_UPDATES', 227 'linkurl' => 'module='.$this->getModuleName().'&view=Detail&record='.$this->getRecord()->getId(). 228 '&mode=showRecentActivities&page=1&limit=5', 229 ); 230 } 231 232 $widgetLinks = array(); 233 foreach ($widgets as $widgetDetails) { 234 $widgetLinks[] = Vtiger_Link_Model::getInstanceFromValues($widgetDetails); 235 } 236 return $widgetLinks; 237 } 238 239 /** 240 * Function to get the Quick Links for the Detail view of the module 241 * @param <Array> $linkParams 242 * @return <Array> List of Vtiger_Link_Model instances 243 */ 244 public function getSideBarLinks($linkParams) { 245 $currentUser = Users_Record_Model::getCurrentUserModel(); 246 247 $linkTypes = array('SIDEBARLINK', 'SIDEBARWIDGET'); 248 $moduleLinks = $this->getModule()->getSideBarLinks($linkTypes); 249 250 $listLinkTypes = array('DETAILVIEWSIDEBARLINK', 'DETAILVIEWSIDEBARWIDGET'); 251 $listLinks = Vtiger_Link_Model::getAllByType($this->getModule()->getId(), $listLinkTypes); 252 253 if($listLinks['DETAILVIEWSIDEBARLINK']) { 254 foreach($listLinks['DETAILVIEWSIDEBARLINK'] as $link) { 255 $link->linkurl = $link->linkurl.'&record='.$this->getRecord()->getId().'&source_module='.$this->getModule()->getName(); 256 $moduleLinks['SIDEBARLINK'][] = $link; 257 } 258 } 259 260 if($currentUser->getTagCloudStatus()) { 261 $tagWidget = array( 262 'linktype' => 'DETAILVIEWSIDEBARWIDGET', 263 'linklabel' => 'LBL_TAG_CLOUD', 264 'linkurl' => 'module='.$this->getModule()->getName().'&view=ShowTagCloud&mode=showTags', 265 'linkicon' => '', 266 ); 267 $linkModel = Vtiger_Link_Model::getInstanceFromValues($tagWidget); 268 if($listLinks['DETAILVIEWSIDEBARWIDGET']) array_push($listLinks['DETAILVIEWSIDEBARWIDGET'], $linkModel); 269 else $listLinks['DETAILVIEWSIDEBARWIDGET'][] = $linkModel; 270 } 271 272 if($listLinks['DETAILVIEWSIDEBARWIDGET']) { 273 foreach($listLinks['DETAILVIEWSIDEBARWIDGET'] as $link) { 274 $link->linkurl = $link->linkurl.'&record='.$this->getRecord()->getId().'&source_module='.$this->getModule()->getName(); 275 $moduleLinks['SIDEBARWIDGET'][] = $link; 276 } 277 } 278 279 return $moduleLinks; 280 } 281 282 /** 283 * Function to get the module label 284 * @return <String> - label 285 */ 286 public function getModuleLabel() { 287 return $this->getModule()->get('label'); 288 } 289 290 /** 291 * Function to get the module name 292 * @return <String> - name of the module 293 */ 294 public function getModuleName() { 295 return $this->getModule()->get('name'); 296 } 297 298 /** 299 * Function to get the instance 300 * @param <String> $moduleName - module name 301 * @param <String> $recordId - record id 302 * @return <Vtiger_DetailView_Model> 303 */ 304 public static function getInstance($moduleName,$recordId) { 305 $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'DetailView', $moduleName); 306 $instance = new $modelClassName(); 307 308 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 309 $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); 310 311 return $instance->setModule($moduleModel)->setRecord($recordModel); 312 } 313 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |