[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Home/models/ -> Module.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 Home_Module_Model extends Vtiger_Module_Model {
  12  
  13      /**
  14       * Function returns the default view for the Home module
  15       * @return <String>
  16       */
  17  	public function getDefaultViewName() {
  18          return 'DashBoard';
  19      }
  20  
  21      /**
  22       * Function returns latest comments across CRM
  23       * @param <Vtiger_Paging_Model> $pagingModel
  24       * @return <Array>
  25       */
  26  	public function getComments($pagingModel) {
  27          $db = PearDatabase::getInstance();
  28  
  29          $nonAdminAccessQuery = Users_Privileges_Model::getNonAdminAccessControlQuery('ModComments');
  30  
  31          $result = $db->pquery('SELECT *, vtiger_crmentity.createdtime AS createdtime, vtiger_crmentity.smownerid AS smownerid,
  32                          crmentity2.crmid AS parentId, crmentity2.setype AS parentModule FROM vtiger_modcomments
  33                          INNER JOIN vtiger_crmentity ON vtiger_modcomments.modcommentsid = vtiger_crmentity.crmid
  34                              AND vtiger_crmentity.deleted = 0
  35                          INNER JOIN vtiger_crmentity crmentity2 ON vtiger_modcomments.related_to = crmentity2.crmid
  36                              AND crmentity2.deleted = 0
  37                           '.$nonAdminAccessQuery.'
  38                          ORDER BY vtiger_crmentity.crmid DESC LIMIT ?, ?',
  39                  array($pagingModel->getStartIndex(), $pagingModel->getPageLimit()));
  40  
  41          $comments = array();
  42          for($i=0; $i<$db->num_rows($result); $i++) {
  43              $row = $db->query_result_rowdata($result, $i);
  44              if(Users_Privileges_Model::isPermitted($row['setype'], 'DetailView', $row['related_to'])){
  45                  $commentModel = Vtiger_Record_Model::getCleanInstance('ModComments');
  46                  $commentModel->setData($row);
  47                  $time = $commentModel->get('createdtime');
  48                  $comments[$time] = $commentModel;
  49              }
  50          }
  51  
  52          return $comments;
  53      }
  54  
  55      /**
  56       * Function returns comments and recent activities across CRM
  57       * @param <Vtiger_Paging_Model> $pagingModel
  58       * @param <String> $type - comments, updates or all
  59       * @return <Array>
  60       */
  61  	public function getHistory($pagingModel, $type=false) {
  62          if(empty($type)) {
  63              $type = 'all';
  64          }
  65          //TODO: need to handle security
  66          $comments = array();
  67          if($type == 'all' || $type == 'comments') {
  68              $modCommentsModel = Vtiger_Module_Model::getInstance('ModComments'); 
  69              if($modCommentsModel->isPermitted('DetailView')){
  70                  $comments = $this->getComments($pagingModel);
  71              }
  72              if($type == 'comments') {
  73                  return $comments;
  74              }
  75          }
  76          $db = PearDatabase::getInstance();
  77          //As getComments api is used to get comment infomation,no need of getting
  78          //comment information again,so avoiding from modtracker
  79          $result = $db->pquery('SELECT vtiger_modtracker_basic.*
  80                                  FROM vtiger_modtracker_basic
  81                                  INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid
  82                                      AND deleted = 0 AND module != "ModComments"
  83                                  ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?',
  84                  array($pagingModel->getStartIndex(), $pagingModel->getPageLimit()));
  85  
  86          $activites = array();
  87          for($i=0; $i<$db->num_rows($result); $i++) {
  88              $row = $db->query_result_rowdata($result, $i);
  89              $moduleName = $row['module'];
  90              $recordId = $row['crmid'];
  91              if(Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $recordId)){
  92                  $modTrackerRecorModel = new ModTracker_Record_Model();
  93                  $modTrackerRecorModel->setData($row)->setParent($recordId, $moduleName);
  94                  $time = $modTrackerRecorModel->get('changedon');
  95                  $activites[$time] = $modTrackerRecorModel;
  96              }
  97          }
  98  
  99          $history = array_merge($activites, $comments);
 100  
 101          foreach($history as $time=>$model) {
 102              $dateTime[] = $time;
 103          }
 104  
 105          if(!empty($history)) {
 106              array_multisort($dateTime,SORT_DESC,SORT_STRING,$history);
 107              return $history;
 108          }
 109          return false;
 110      }
 111  
 112      /**
 113       * Function returns the Calendar Events for the module
 114       * @param <String> $mode - upcoming/overdue mode
 115       * @param <Vtiger_Paging_Model> $pagingModel - $pagingModel
 116       * @param <String> $user - all/userid
 117       * @param <String> $recordId - record id
 118       * @return <Array>
 119       */
 120  	function getCalendarActivities($mode, $pagingModel, $user, $recordId = false) {
 121          $currentUser = Users_Record_Model::getCurrentUserModel();
 122          $db = PearDatabase::getInstance();
 123  
 124          if (!$user) {
 125              $user = $currentUser->getId();
 126          }
 127  
 128          $nowInUserFormat = Vtiger_Datetime_UIType::getDisplayDateTimeValue(date('Y-m-d H:i:s'));
 129          $nowInDBFormat = Vtiger_Datetime_UIType::getDBDateTimeValue($nowInUserFormat);
 130          list($currentDate, $currentTime) = explode(' ', $nowInDBFormat);
 131  
 132          $query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.setype, vtiger_activity.* FROM vtiger_activity
 133                      INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid
 134                      LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid";
 135  
 136          $query .= Users_Privileges_Model::getNonAdminAccessControlQuery('Calendar');
 137  
 138          $query .= " WHERE vtiger_crmentity.deleted=0
 139                      AND (vtiger_activity.activitytype NOT IN ('Emails'))
 140                      AND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred'))
 141                      AND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held'))";
 142  
 143          if ($mode === 'upcoming') {
 144              $query .= " AND CASE WHEN vtiger_activity.activitytype='Task' THEN due_date >= '$currentDate' ELSE CONCAT(due_date,' ',time_end) >= '$nowInDBFormat' END";
 145          } elseif ($mode === 'overdue') {
 146              $query .= " AND CASE WHEN vtiger_activity.activitytype='Task' THEN due_date < '$currentDate' ELSE CONCAT(due_date,' ',time_end) < '$nowInDBFormat' END";
 147          }
 148  
 149          $params = array();
 150          if($user != 'all' && $user != '') {
 151              if($user === $currentUser->id) {
 152                  $query .= " AND vtiger_crmentity.smownerid = ?";
 153                  $params[] = $user;
 154              }
 155          }
 156  
 157          $query .= " ORDER BY date_start, time_start LIMIT ?, ?";
 158          $params[] = $pagingModel->getStartIndex();
 159          $params[] = $pagingModel->getPageLimit()+1;
 160  
 161          $result = $db->pquery($query, $params);
 162          $numOfRows = $db->num_rows($result);
 163  
 164          $activities = array();
 165          for($i=0; $i<$numOfRows; $i++) {
 166              $row = $db->query_result_rowdata($result, $i);
 167              $model = Vtiger_Record_Model::getCleanInstance('Calendar');
 168              $model->setData($row);
 169              if($row['activitytype'] == 'Task'){
 170                  $due_date = $row["due_date"];
 171                  $dayEndTime = "23:59:59";
 172                  $EndDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($due_date." ".$dayEndTime);
 173                  $dueDateTimeInDbFormat = explode(' ',$EndDateTime);
 174                  $dueTimeInDbFormat = $dueDateTimeInDbFormat[1];
 175                  $model->set('time_end',$dueTimeInDbFormat);
 176              }
 177              $model->setId($row['crmid']);
 178              $activities[] = $model;
 179          }
 180  
 181          $pagingModel->calculatePageRange($activities);
 182          if($numOfRows > $pagingModel->getPageLimit()){
 183              array_pop($activities);
 184              $pagingModel->set('nextPageExists', true);
 185          } else {
 186              $pagingModel->set('nextPageExists', false);
 187          }
 188  
 189          return $activities;
 190      }
 191  }


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