[ 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 Settings_CronTasks_Record_Model extends Settings_Vtiger_Record_Model { 12 13 static $STATUS_DISABLED = 0; 14 static $STATUS_ENABLED = 1; 15 static $STATUS_RUNNING = 2; 16 static $STATUS_COMPLETED = 3; 17 18 /** 19 * Function to get Id of this record instance 20 * @return <Integer> id 21 */ 22 public function getId() { 23 return $this->get('id'); 24 } 25 26 /** 27 * Function to get Name of this record 28 * @return <String> 29 */ 30 public function getName() { 31 return $this->get('name'); 32 } 33 34 /** 35 * Function to get module instance of this record 36 * @return <type> 37 */ 38 public function getModule() { 39 return $this->module; 40 } 41 42 /** 43 * Function to set module to this record instance 44 * @param <Settings_CronTasks_Module_Model> $moduleModel 45 * @return <Settings_CronTasks_Record_Model> record model 46 */ 47 public function setModule($moduleModel) { 48 $this->module = $moduleModel; 49 return $this; 50 } 51 52 public function isDisabled() { 53 if($this->get('status') == self::$STATUS_DISABLED){ 54 return true; 55 } 56 return false; 57 } 58 59 public function isRunning() { 60 if($this->get('status') == self::$STATUS_RUNNING){ 61 return true; 62 } 63 return false; 64 } 65 66 public function isCompleted() { 67 if($this->get('status') == self::$STATUS_COMPLETED){ 68 return true; 69 } 70 return false; 71 } 72 73 public function isEnabled() { 74 if($this->get('status') == self::$STATUS_ENABLED){ 75 return true; 76 } 77 return false; 78 } 79 80 /** 81 * Detect if the task was started by never finished. 82 */ 83 function hadTimedout() { 84 if($this->get('lastend') === 0 && $this->get('laststart') != 0) 85 return intval($this->get('lastend')); 86 } 87 88 /** 89 * Get the user datetimefeild 90 */ 91 function getLastEndDateTime() { 92 if($this->get('lastend') != NULL) { 93 $lastScannedTime = Vtiger_Datetime_UIType::getDisplayDateTimeValue(date('Y-m-d H:i:s', $this->get('lastend'))); 94 $userModel = Users_Record_Model::getCurrentUserModel(); 95 $hourFormat = $userModel->get('hour_format'); 96 if($hourFormat == '24') { 97 return $lastScannedTime; 98 } else { 99 $dateTimeList = explode(" ", $lastScannedTime); 100 return $dateTimeList[0]." ".date('g:i:sa', strtotime($dateTimeList[1])); 101 } 102 } else { 103 return ''; 104 } 105 } 106 107 /** 108 * Get Time taken to complete task 109 */ 110 function getTimeDiff() { 111 $lastStart = intval($this->get('laststart')); 112 $lastEnd = intval($this->get('lastend')); 113 $timeDiff = $lastEnd - $lastStart; 114 return $timeDiff; 115 } 116 117 /** 118 * Function to get display value of every field from this record 119 * @param <String> $fieldName 120 * @return <String> 121 */ 122 public function getDisplayValue($fieldName) { 123 $fieldValue = $this->get($fieldName); 124 switch ($fieldName) { 125 case 'frequency' : $fieldValue = intval($fieldValue); 126 $hours = str_pad((int)(($fieldValue/(60*60))),2,0,STR_PAD_LEFT); 127 $minutes = str_pad((int)(($fieldValue%(60*60))/60),2,0,STR_PAD_LEFT); 128 $fieldValue = $hours.':'.$minutes; 129 break; 130 case 'status' : $fieldValue = intval($fieldValue); 131 $moduleModel = $this->getModule(); 132 if ($fieldValue === Settings_CronTasks_Record_Model::$STATUS_COMPLETED) { 133 $fieldLabel = 'LBL_COMPLETED'; 134 } else if ($fieldValue === Settings_CronTasks_Record_Model::$STATUS_RUNNING) { 135 $fieldLabel = 'LBL_RUNNING'; 136 } else if ($fieldValue === Settings_CronTasks_Record_Model::$STATUS_ENABLED) { 137 $fieldLabel = 'LBL_ACTIVE'; 138 } else { 139 $fieldLabel = 'LBL_INACTIVE'; 140 } 141 $fieldValue = vtranslate($fieldLabel, $moduleModel->getParentName().':'.$moduleModel->getName()); 142 break; 143 case 'laststart' : 144 case 'lastend' : $fieldValue = intval($fieldValue); 145 if ($fieldValue) { 146 $fieldValue = dateDiffAsString($fieldValue, time()); 147 } else { 148 $fieldValue = ''; 149 } 150 break; 151 } 152 return $fieldValue; 153 } 154 155 /* 156 * Function to get Edit view url 157 */ 158 public function getEditViewUrl() { 159 return 'module=CronTasks&parent=Settings&view=EditAjax&record='.$this->getId(); 160 } 161 162 /** 163 * Function to save the record 164 */ 165 public function save() { 166 $db = PearDatabase::getInstance(); 167 168 $updateQuery = "UPDATE vtiger_cron_task SET frequency = ?, status = ? WHERE id = ?"; 169 $params = array($this->get('frequency'), $this->get('status'), $this->getId()); 170 $db->pquery($updateQuery, $params); 171 } 172 173 /** 174 * Function to get record instance by using id and moduleName 175 * @param <Integer> $recordId 176 * @param <String> $qualifiedModuleName 177 * @return <Settings_CronTasks_Record_Model> RecordModel 178 */ 179 static public function getInstanceById($recordId, $qualifiedModuleName) { 180 $db = PearDatabase::getInstance(); 181 182 $result = $db->pquery("SELECT * FROM vtiger_cron_task WHERE id = ?", array($recordId)); 183 if ($db->num_rows($result)) { 184 $recordModelClass = Vtiger_Loader::getComponentClassName('Model', 'Record', $qualifiedModuleName); 185 $moduleModel = Settings_Vtiger_Module_Model::getInstance($qualifiedModuleName); 186 $rowData = $db->query_result_rowdata($result, 0); 187 $recordModel = new $recordModelClass(); 188 $recordModel->setData($rowData)->setModule($moduleModel); 189 return $recordModel; 190 } 191 return false; 192 } 193 194 public static function getInstanceByName($name) { 195 $db = PearDatabase::getInstance(); 196 197 $result = $db->pquery("SELECT * FROM vtiger_cron_task WHERE name = ?", array($name)); 198 if ($db->num_rows($result)) { 199 $moduleModel = new Settings_CronTasks_Module_Model(); 200 $rowData = $db->query_result_rowdata($result, 0); 201 $recordModel = new self(); 202 $recordModel->setData($rowData)->setModule($moduleModel); 203 return $recordModel; 204 } 205 return false; 206 } 207 208 209 /** 210 * Function to get the list view actions for the record 211 * @return <Array> - Associate array of Vtiger_Link_Model instances 212 */ 213 public function getRecordLinks() { 214 215 $links = array(); 216 217 $recordLinks = array( 218 array( 219 'linktype' => 'LISTVIEWRECORD', 220 'linklabel' => 'LBL_EDIT_RECORD', 221 'linkurl' => "javascript:Settings_CronTasks_List_Js.triggerEditEvent('".$this->getEditViewUrl()."')", 222 'linkicon' => 'icon-pencil' 223 ) 224 ); 225 foreach($recordLinks as $recordLink) { 226 $links[] = Vtiger_Link_Model::getInstanceFromValues($recordLink); 227 } 228 229 return $links; 230 } 231 232 public function getMinimumFrequency() { 233 return getMinimumCronFrequency()*60; 234 } 235 }
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 |