[ 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 class VTSimpleTemplate{ 11 12 function __construct($templateString){ 13 $this->template = $templateString; 14 } 15 16 function render($entityCache, $entityId){ 17 $this->cache = $entityCache; 18 $this->parent = $this->cache->forId($entityId); 19 return $this->parseTemplate(); 20 } 21 22 private function matchHandler($match){ 23 preg_match('/\((\w+) : \(([_\w]+)\) (\w+)\)/', $match[1], $matches); 24 if ($match[1] == 'logo') { 25 return $this->getMetaValue($match[1]); 26 } 27 // If parent is empty then we can't do any thing here 28 if(!empty($this->parent)){ 29 if(count($matches)==0){ 30 $fieldname = $match[1]; 31 32 //To handle comments for this module 33 if (in_array($fieldname, array('lastComment', 'last5Comments', 'allComments'))) { 34 return $this->getComments($this->parent->getModuleName(), $fieldname, $this->parent->getId()); 35 } 36 37 $data = $this->parent->getData(); 38 39 if(isset($data[$fieldname]) || $fieldname === '_DATE_FORMAT_') { 40 if($this->useValue($data, $fieldname)){ 41 $result = $this->transformToUserFormat($this->parent->getModuleName(), $fieldname, $data[$fieldname]); 42 } else { 43 $result =''; 44 } 45 } else { 46 $result ='$'.$fieldname; 47 } 48 }else{ 49 list($full, $referenceField, $referenceModule, $fieldname) = $matches; 50 if($referenceModule === '__VtigerMeta__' || $fieldname === 'dbLabel') { 51 $result = $this->getMetaValue($fieldname); 52 }else{ 53 $referenceId = $this->parent->get($referenceField); 54 if($referenceId==null){ 55 $result=""; 56 }else{ 57 //To handle comments for this reference module 58 if (in_array($fieldname, array('lastComment', 'last5Comments', 'allComments'))) { 59 return $this->getComments($referenceModule, $fieldname, $referenceId); 60 } 61 62 if ($referenceField === 'contact_id') { 63 $referenceIdsList = explode(',', $referenceId); 64 $parts = array(); 65 foreach ($referenceIdsList as $referenceId) { 66 $entity = $this->cache->forId($referenceId); 67 $data = $entity->getData(); 68 if($this->useValue($data, $fieldname)) { 69 $parts[] = $this->transformToUserFormat($referenceModule, $fieldname, $data[$fieldname]); 70 } 71 } 72 return implode(',', $parts); 73 } 74 $entity = $this->cache->forId($referenceId); 75 if($referenceModule==="Users" && $entity->getModuleName()=="Groups"){ 76 list($groupEntityId, $groupId) = vtws_getIdComponents($referenceId); 77 78 require_once ('include/utils/GetGroupUsers.php'); 79 $ggu = new GetGroupUsers(); 80 $ggu->getAllUsersInGroup($groupId); 81 82 $users = $ggu->group_users; 83 $parts = Array(); 84 foreach($users as $userId){ 85 $refId = vtws_getWebserviceEntityId("Users", $userId); 86 $entity = $this->cache->forId($refId); 87 $data = $entity->getData(); 88 if($this->useValue($data, $fieldname)){ 89 $parts[] = $this->transformToUserFormat($referenceModule, $fieldname, $data[$fieldname]); 90 } 91 } 92 $result = implode(", ", $parts); 93 94 } elseif($entity->getModuleName()===$referenceModule){ 95 $data = $entity->getData(); 96 if($this->useValue($data, $fieldname)){ 97 $handler = vtws_getModuleHandlerFromName($referenceModule, $this->cache->user); 98 $meta = $handler->getMeta(); 99 $referenceFieldList = $meta->getReferenceFieldDetails(); 100 if(array_key_exists($fieldname,$referenceFieldList)) { 101 $webserviceId = $data[$fieldname]; 102 $idComponents = vtws_getIdComponents($webserviceId); 103 if($fieldname == 'currency_id' && $referenceModule == 'Users') { 104 $result = decode_html(getCurrencyName($idComponents[1])); 105 } else { 106 $result = decode_html(Vtiger_Util_Helper::getLabel($idComponents[1])); 107 } 108 }else{ 109 $result = $this->transformToUserFormat($referenceModule, $fieldname, $data[$fieldname]); 110 } 111 }else{ 112 $result = ''; 113 } 114 }else{ 115 $result = ''; 116 } 117 } 118 } 119 } 120 } 121 return $result; 122 123 } 124 125 protected function useValue($data, $fieldname) { 126 return true; 127 } 128 129 function parseTemplate(){ 130 return preg_replace_callback('/\\$(\w+|\((\w+) : \(([_\w]+)\) (\w+)\))/', array($this,"matchHandler"), $this->template); 131 } 132 133 function getMetaValue($fieldname){ 134 require_once 'config.inc.php'; 135 global $site_URL, $PORTAL_URL, $current_user, $HELPDESK_SUPPORT_NAME, $HELPDESK_SUPPORT_EMAIL_ID; 136 switch($fieldname){ 137 case 'date' : $referenceId = $this->parent->get('assigned_user_id'); 138 if ($referenceId) { 139 $entity = $this->cache->forId($referenceId); 140 list($entityId, $ownerId) = vtws_getIdComponents($referenceId); 141 if($entity->getModuleName() === 'Groups') { 142 list($moduleId, $recordId) = vtws_getIdComponents($this->parent->getId()); 143 $ownerId = Vtiger_Util_Helper::getCreator($recordId); 144 } 145 } 146 $ownerObject = new Users(); 147 $ownerObject->retrieveCurrentUserInfoFromFile($ownerId); 148 149 $date = new DateTimeField(null); 150 return $date->getDisplayDate($ownerObject); 151 case 'time' : return Vtiger_Util_Helper::convertTimeIntoUsersDisplayFormat(date('h:i:s')); 152 case 'dbtimezone' : return DateTimeField::getDBTimeZone(); 153 case 'usertimezone' : $referenceId = $this->parent->get('assigned_user_id'); 154 if ($referenceId) { 155 $entity = $this->cache->forId($referenceId); 156 list($entityId, $ownerId) = vtws_getIdComponents($referenceId); 157 if($entity->getModuleName() === 'Groups') { 158 list($moduleId, $recordId) = vtws_getIdComponents($this->parent->getId()); 159 $ownerId = Vtiger_Util_Helper::getCreator($recordId); 160 } 161 } 162 163 if ($ownerId) { 164 $ownerFocus = CRMEntity::getInstance('Users'); 165 $ownerFocus->retrieve_entity_info($ownerId, 'Users'); 166 return getTranslatedString($ownerFocus->column_fields['time_zone'], 'Users'); 167 } 168 return ''; 169 case 'crmdetailviewurl' : $wsId = $this->parent->getId(); 170 $parts = explode('x', $wsId); 171 $recordId = $parts[1]; 172 $moduleName = $this->parent->getModuleName(); 173 return "$site_URL/index.php?module=$moduleName&view=Detail&record=$recordId"; 174 case 'portaldetailviewurl' : $wsId = $this->parent->getId(); 175 $parts = explode('x', $wsId); 176 $recordId = $parts[1]; 177 $moduleName = $this->parent->getModuleName(); 178 $recorIdName='id'; 179 if($moduleName == 'HelpDesk') $recorIdName = 'ticketid'; 180 if($moduleName == 'Faq') $recorIdName = 'faqid'; 181 if($moduleName == 'Products') $recorIdName = 'productid'; 182 return $PORTAL_URL.'/index.php?module='.$moduleName.'&action=index&'.$recorIdName.'='.$recordId.'&status=true'; 183 case 'portalpdfurl' : $wsId = $this->parent->getId(); 184 $parts = explode('x', $wsId); 185 $recordId = $parts[1]; 186 $moduleName = $this->parent->getModuleName(); 187 $recorIdName='id'; 188 return $PORTAL_URL.'/index.php?module='.$moduleName.'&action=index&'.$recorIdName.'='.$recordId.'&downloadfile=true'; 189 case 'siteurl' : return $site_URL; 190 case 'portalurl' : return $PORTAL_URL; 191 case 'logo' : return '<img src="cid:logo" />'; 192 193 case 'recordId' : list($moduleId, $recordId) = vtws_getIdComponents($this->parent->getId()); 194 return $recordId; 195 196 case 'supportName' : return $HELPDESK_SUPPORT_NAME; 197 case 'supportEmailId' : return $HELPDESK_SUPPORT_EMAIL_ID; 198 default: ''; 199 } 200 } 201 202 /** 203 * Function to transform the field values into user format 204 * @param <String> $moduleName 205 * @param <String> $fieldName 206 * @param <String> $fieldValue 207 * @return <String> $fieldValue 208 */ 209 public function transformToUserFormat($moduleName, $fieldName, $fieldValue) { 210 global $adb, $log, $current_user; 211 212 //getting owner info 213 $referenceId = $this->parent->get('assigned_user_id'); 214 if ($referenceId) { 215 $entity = $this->cache->forId($referenceId); 216 list($entityId, $ownerId) = vtws_getIdComponents($referenceId); 217 218 if($entity->getModuleName() === 'Groups') { 219 list($moduleId, $recordId) = vtws_getIdComponents($this->parent->getId()); 220 $ownerId = Vtiger_Util_Helper::getCreator($recordId); 221 } 222 } 223 if(!empty($ownerId)) { 224 $ownerObject = new Users(); 225 $ownerObject->retrieveCurrentUserInfoFromFile($ownerId); 226 } 227 228 if ($ownerObject && $fieldName === '_DATE_FORMAT_') { 229 return $ownerObject->column_fields['date_format']; 230 } 231 232 //getting field instance info 233 $entityObject = VtigerWebserviceObject::fromName($adb, $moduleName); 234 $handlerPath = $entityObject->getHandlerPath(); 235 $handlerClass = $entityObject->getHandlerClass(); 236 237 require_once $handlerPath; 238 239 $entityHandler = new $handlerClass($entityObject, $current_user, $adb, $log); 240 $entityMeta = $entityHandler->getMeta(); 241 $entityFields = $entityMeta->getModuleFields(); 242 $fieldInstance = $entityFields[$fieldName]; 243 244 switch($fieldInstance->getFieldDataType()) { 245 246 case 'date' : if (($moduleName === 'Events' && in_array($fieldName, array('date_start', 'due_date'))) || 247 ($moduleName === 'Calendar' && $fieldName === 'date_start')) { 248 if ($fieldName === 'date_start') { 249 $dateTime = $this->parent->get('date_start') .' '. $this->parent->get('time_start'); 250 } else { 251 $dateTime = $this->parent->get('due_date') .' '. $this->parent->get('time_end'); 252 } 253 254 $fieldValue = Vtiger_Util_Helper::convertDateTimeIntoUsersDisplayFormat($dateTime, $ownerObject); 255 256 } else { 257 $dateFieldObj = new DateTimeField($fieldValue); 258 $fieldValue = $dateFieldObj->getDisplayDate($ownerObject); 259 } 260 break; 261 262 case 'datetime' : $fieldValue = Vtiger_Util_Helper::convertDateTimeIntoUsersDisplayFormat($fieldValue, $ownerObject); 263 break; 264 265 case 'currency' : if ($fieldInstance->getUIType() === '72') { 266 $fieldValue = CurrencyField::convertToUserFormat($fieldValue, $ownerObject, true); 267 } else if($fieldInstance->getUIType() == '71') { 268 $fieldValue = CurrencyField::convertToUserFormat($fieldValue, $ownerObject); 269 } 270 break; 271 272 case 'time' : $fieldValue = Vtiger_Util_Helper::convertTimeIntoUsersDisplayFormat($fieldValue, $ownerObject); 273 break; 274 275 case 'picklist' : require_once 'includes/runtime/LanguageHandler.php'; 276 require_once 'includes/runtime/Globals.php'; 277 $fieldValue = vtranslate($fieldValue,$moduleName,$ownerObject->column_fields['language']); 278 break; 279 280 case 'multipicklist' : require_once 'includes/runtime/LanguageHandler.php'; 281 require_once 'includes/runtime/Globals.php'; 282 $fieldValueParts = explode(';',$fieldValue); 283 foreach($fieldValueParts as $index=>$fieldValue) { 284 $fieldValueParts[$index] = vtranslate($fieldValue,$moduleName,$ownerObject->column_fields['language']); 285 } 286 $fieldValue = implode(';', $fieldValueParts); 287 break; 288 case 'boolean' : require_once 'includes/runtime/LanguageHandler.php'; 289 require_once 'includes/runtime/Globals.php'; 290 if($fieldValue == 1){ 291 $fieldValue = vtranslate('LBL_YES',$moduleName); 292 }else { 293 $fieldValue = vtranslate('LBL_NO',$moduleName); 294 } 295 break; 296 case 'reference' : if($fieldName == 'currency_id') { 297 $currencyId = explode('x', $fieldValue); 298 $currencyId = $currencyId[1]; 299 $fieldValue = decode_html(getCurrencyName($currencyId)); 300 }else{ 301 if($fieldValue != 0 && $fieldValue != null){ 302 $id = explode('x', $fieldValue); 303 $webServiceObject = VtigerWebserviceObject::fromId($adb,$id[0]); 304 if($webServiceObject){ 305 $Value = getEntityName($webServiceObject->getEntityName(), $id); 306 $fieldValue = $Value[$id[1]]; 307 } 308 } 309 } 310 break; 311 case 'double' : if ($moduleName === 'HelpDesk' && in_array($fieldName, array('days', 'hours'))) { 312 $fieldValue = decimalFormat($fieldValue); 313 } else { 314 $fieldValue; 315 } 316 break; 317 default : $fieldValue; 318 319 } 320 return nl2br($fieldValue); 321 } 322 323 /** 324 * Function to fieldvalues of Comments 325 * @param <String> $moduleName 326 * @param <String> $fieldName 327 * @param <String> $fieldValue 328 * @return <String> $comments 329 */ 330 public function getComments($moduleName, $fieldName, $fieldValue) { 331 global $adb, $log, $current_user; 332 333 $sql = 'SELECT commentcontent FROM vtiger_modcomments WHERE related_to = ? ORDER BY modcommentsid DESC'; 334 335 switch ($fieldName) { 336 case 'lastComment' : $sql .= ' LIMIT 1'; break; 337 case 'last5Comments' : $sql .= ' LIMIT 5'; break; 338 default : $sql; break; 339 } 340 list($entityId, $recordId) = vtws_getIdComponents($fieldValue); 341 342 $result = $adb->pquery($sql, array($recordId)); 343 $numOfRows = $adb->num_rows($result); 344 345 $commentsList = ''; 346 for ($i=0; $i<$numOfRows; $i++) { 347 $comment = $adb->query_result($result, $i, 'commentcontent'); 348 if ($comment != '') { 349 $commentsList .= '<br><br>' . nl2br($comment); 350 } 351 } 352 353 return $commentsList; 354 } 355 } 356 ?>
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 |