[ 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 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 }
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 |