[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/models/ -> DetailView.php (source)

   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  }


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1