[ 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 Vtiger_ComposeEmail_View extends Vtiger_Footer_View { 12 13 function __construct() { 14 parent::__construct(); 15 $this->exposeMethod('emailPreview'); 16 $this->exposeMethod('previewPrint'); 17 $this->exposeMethod('emailForward'); 18 $this->exposeMethod('emailEdit'); 19 $this->exposeMethod('composeMailData'); 20 } 21 22 public function checkPermission(Vtiger_Request $request) { 23 $moduleName = $request->getModule(); 24 25 if (!Users_Privileges_Model::isPermitted($moduleName, 'EditView')) { 26 throw new AppException('LBL_PERMISSION_DENIED'); 27 } 28 } 29 30 function preProcess(Vtiger_Request $request, $display=true) { 31 if($request->getMode() == 'previewPrint'){ 32 return; 33 } 34 return parent::preProcess($request,$display); 35 } 36 37 public function composeMailData($request){ 38 $moduleName = 'Emails'; 39 $fieldModule = $request->get('fieldModule'); 40 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 41 $userRecordModel = Users_Record_Model::getCurrentUserModel(); 42 $sourceModule = $request->getModule(); 43 $cvId = $request->get('viewname'); 44 $selectedIds = $request->get('selected_ids',array()); 45 $excludedIds = $request->get('excluded_ids',array()); 46 $selectedFields = $request->get('selectedFields'); 47 $relatedLoad = $request->get('relatedLoad'); 48 $documentIds = $request->get('documentIds'); 49 50 $viewer = $this->getViewer($request); 51 $viewer->assign('MODULE', $moduleName); 52 $viewer->assign('FIELD_MODULE',$fieldModule); 53 $viewer->assign('VIEWNAME', $cvId); 54 $viewer->assign('SELECTED_IDS', $selectedIds); 55 $viewer->assign('EXCLUDED_IDS', $excludedIds); 56 $viewer->assign('SELECTED_FIELDS',$selectedFields); 57 $viewer->assign('USER_MODEL', $userRecordModel); 58 $viewer->assign('MAX_UPLOAD_SIZE', vglobal('upload_maxsize')); 59 $viewer->assign('RELATED_MODULES', $moduleModel->getEmailRelatedModules()); 60 61 if ($documentIds) { 62 $attachements = array(); 63 foreach ($documentIds as $documentId) { 64 $documentRecordModel = Vtiger_Record_Model::getInstanceById($documentId, $sourceModule); 65 if ($documentRecordModel->get('filelocationtype') == 'I') { 66 $fileDetails = $documentRecordModel->getFileDetails(); 67 if ($fileDetails) { 68 $fileDetails['fileid'] = $fileDetails['attachmentsid']; 69 $fileDetails['docid'] = $fileDetails['crmid']; 70 $fileDetails['attachment'] = $fileDetails['name']; 71 $fileDetails['size'] = filesize($fileDetails['path'] . $fileDetails['attachmentsid'] . "_". $fileDetails['name']); 72 $attachements[] = $fileDetails; 73 } 74 } 75 } 76 $viewer->assign('ATTACHMENTS', $attachements); 77 } 78 79 $searchKey = $request->get('search_key'); 80 $searchValue = $request->get('search_value'); 81 $operator = $request->get('operator'); 82 if(!empty($operator)) { 83 $viewer->assign('OPERATOR',$operator); 84 $viewer->assign('ALPHABET_VALUE',$searchValue); 85 $viewer->assign('SEARCH_KEY',$searchKey); 86 } 87 88 $searchParams = $request->get('search_params'); 89 if(!empty($searchParams)) { 90 $viewer->assign('SEARCH_PARAMS',$searchParams); 91 } 92 93 $to =array(); 94 $toMailInfo = array(); 95 $toMailNamesList = array(); 96 $selectIds = $this->getRecordsListFromRequest($request); 97 98 $ccMailInfo = $request->get('ccemailinfo'); 99 if(empty($ccMailInfo)){ 100 $ccMailInfo = array(); 101 } 102 103 $bccMailInfo = $request->get('bccemailinfo'); 104 if(empty($bccMailInfo)){ 105 $bccMailInfo = array(); 106 } 107 108 $sourceRecordId = $request->get('record'); 109 if ($sourceRecordId) { 110 $sourceRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecordId); 111 if ($sourceRecordModel->get('email_flag') === 'SAVED') { 112 $selectIds = explode('|', $sourceRecordModel->get('parent_id')); 113 } 114 } 115 foreach($selectIds as $id) { 116 if ($id) { 117 $parentIdComponents = explode('@', $id); 118 if (count($parentIdComponents) > 1) { 119 $id = $parentIdComponents[0]; 120 if ($parentIdComponents[1] === '-1') { 121 $recordModel = Users_Record_Model::getInstanceById($id, 'Users'); 122 } else { 123 $recordModel = Vtiger_Record_Model::getInstanceById($id); 124 } 125 } else if($fieldModule) { 126 $recordModel = Vtiger_Record_Model::getInstanceById($id, $fieldModule); 127 } else { 128 $recordModel = Vtiger_Record_Model::getInstanceById($id); 129 } 130 if($selectedFields){ 131 foreach($selectedFields as $field) { 132 $value = $recordModel->get($field); 133 $emailOptOutValue = $recordModel->get('emailoptout'); 134 if(!empty($value) && (!$emailOptOutValue)) { 135 $to[] = $value; 136 $toMailInfo[$id][] = $value; 137 $toMailNamesList[$id][] = array('label' => $recordModel->getName(), 'value' => $value); 138 } 139 } 140 } 141 } 142 } 143 144 $requestTo = $request->get('to'); 145 if (!$to && is_array($requestTo)) { 146 $to = $requestTo; 147 } 148 149 $documentsModel = Vtiger_Module_Model::getInstance('Documents'); 150 $documentsURL = $documentsModel->getInternalDocumentsURL(); 151 152 $emailTemplateModuleModel = Settings_Vtiger_Module_Model::getInstance('Settings:EmailTemplates'); 153 154 $emailTemplateListURL = $emailTemplateModuleModel->getListViewUrl(); 155 156 $viewer->assign('DOCUMENTS_URL', $documentsURL); 157 $viewer->assign('EMAIL_TEMPLATE_URL', $emailTemplateListURL); 158 $viewer->assign('TO', $to); 159 $viewer->assign('TOMAIL_INFO', $toMailInfo); 160 $viewer->assign('TOMAIL_NAMES_LIST', $toMailNamesList); 161 $viewer->assign('CC', $request->get('cc')); 162 $viewer->assign('CCMAIL_INFO', $ccMailInfo); 163 $viewer->assign('BCC', $request->get('bcc')); 164 $viewer->assign('BCCMAIL_INFO', $bccMailInfo); 165 166 //EmailTemplate module percission check 167 $userPrevilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); 168 $viewer->assign('MODULE_IS_ACTIVE', $userPrevilegesModel->hasModulePermission(Vtiger_Module_Model::getInstance('EmailTemplates')->getId())); 169 // 170 171 if($relatedLoad){ 172 $viewer->assign('RELATED_LOAD', true); 173 } 174 } 175 176 public function emailActionsData($request){ 177 $recordId = $request->get('record'); 178 $moduleName = $request->getModule(); 179 $viewer = $this->getViewer($request); 180 $attachment = array(); 181 182 if(!$this->record) { 183 $this->record = Vtiger_DetailView_Model::getInstance($moduleName, $recordId); 184 } 185 $recordModel = $this->record->getRecord(); 186 187 $this->composeMailData($request); 188 $subject = $recordModel->get('subject'); 189 $description = $recordModel->get('description'); 190 $attachmentDetails = $recordModel->getAttachmentDetails(); 191 192 $viewer->assign('SUBJECT', $subject); 193 $viewer->assign('DESCRIPTION', $description); 194 $viewer->assign('ATTACHMENTS', $attachmentDetails); 195 $viewer->assign('PARENT_EMAIL_ID', $recordId); 196 $viewer->assign('PARENT_RECORD', $request->get('parentId')); 197 } 198 199 public function process(Vtiger_Request $request) { 200 ini_set('error_reporting', '6135'); 201 $mode = $request->getMode(); 202 if(!empty($mode)) { 203 echo $this->invokeExposedMethod($mode, $request); 204 return; 205 } 206 $this->composeMailData($request); 207 $viewer = $this->getViewer($request); 208 echo $viewer->view('ComposeEmailForm.tpl', $moduleName, true); 209 } 210 211 function postProcess(Vtiger_Request $request) { 212 return; 213 } 214 215 public function getRecordsListFromRequest(Vtiger_Request $request) { 216 $cvId = $request->get('viewname'); 217 $selectedIds = $request->get('selected_ids'); 218 $excludedIds = $request->get('excluded_ids'); 219 220 if(!empty($selectedIds) && $selectedIds != 'all') { 221 if(!empty($selectedIds) && count($selectedIds) > 0) { 222 return $selectedIds; 223 } 224 } 225 226 $sourceRecord = $request->get('sourceRecord'); 227 $sourceModule = $request->get('sourceModule'); 228 if ($sourceRecord && $sourceModule) { 229 $sourceRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecord, $sourceModule); 230 return $sourceRecordModel->getSelectedIdsList($request->get('parentModule'), $excludedIds); 231 } 232 233 $customViewModel = CustomView_Record_Model::getInstanceById($cvId); 234 if($customViewModel) { 235 $searchKey = $request->get('search_key'); 236 $searchValue = $request->get('search_value'); 237 $operator = $request->get('operator'); 238 if(!empty($operator)) { 239 $customViewModel->set('operator', $operator); 240 $customViewModel->set('search_key', $searchKey); 241 $customViewModel->set('search_value', $searchValue); 242 } 243 $customViewModel->set('search_params', $request->get('search_params')); 244 return $customViewModel->getRecordIds($excludedIds); 245 } 246 return array(); 247 } 248 249 /** 250 * Function to get the list of Script models to be included 251 * @param Vtiger_Request $request 252 * @return <Array> - List of Vtiger_JsScript_Model instances 253 */ 254 function getHeaderScripts(Vtiger_Request $request) { 255 $headerScriptInstances = parent::getHeaderScripts($request); 256 $moduleName = $request->getModule(); 257 258 $jsFileNames = array( 259 "libraries.jquery.ckeditor.ckeditor", 260 "libraries.jquery.ckeditor.adapters.jquery", 261 'modules.Vtiger.resources.validator.BaseValidator', 262 'modules.Vtiger.resources.validator.FieldValidator', 263 "modules.Emails.resources.MassEdit", 264 "modules.Emails.resources.EmailPreview", 265 "modules.Vtiger.resources.CkEditor", 266 'modules.Vtiger.resources.Popup', 267 'libraries.jquery.jquery_windowmsg', 268 'libraries.jquery.multiplefileupload.jquery_MultiFile' 269 ); 270 271 $jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames); 272 $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances); 273 return $headerScriptInstances; 274 } 275 276 function emailPreview($request){ 277 $recordId = $request->get('record'); 278 $moduleName = $request->getModule(); 279 280 if(!$this->record){ 281 $this->record = Vtiger_DetailView_Model::getInstance($moduleName, $recordId); 282 } 283 $recordModel = $this->record->getRecord(); 284 285 $viewer = $this->getViewer($request); 286 $TO = Zend_Json::decode(html_entity_decode($recordModel->get('saved_toid'))); 287 $CC = Zend_Json::decode(html_entity_decode($recordModel->get('ccmail'))); 288 $BCC = Zend_Json::decode(html_entity_decode($recordModel->get('bccmail'))); 289 290 $parentId = $request->get('parentId'); 291 if(empty($parentId)) { 292 list($parentRecord, $status) = explode('@', reset(array_filter(explode('|', $recordModel->get('parent_id'))))); 293 $parentId = $parentRecord; 294 } 295 296 $viewer->assign('FROM', $recordModel->get('from_email')); 297 $viewer->assign('TO',$TO); 298 $viewer->assign('CC', implode(',',$CC)); 299 $viewer->assign('BCC', implode(',',$BCC)); 300 $viewer->assign('RECORD', $recordModel); 301 $viewer->assign('MODULE', $moduleName); 302 $viewer->assign('RECORD_ID', $recordId); 303 $viewer->assign('PARENT_RECORD', $parentId); 304 305 if($request->get('mode') == 'previewPrint') { 306 $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); 307 echo $viewer->view('EmailPreviewPrint.tpl',$moduleName,true); 308 }else{ 309 echo $viewer->view('EmailPreview.tpl',$moduleName,true); 310 } 311 312 } 313 314 function emailEdit($request){ 315 $viewer = $this->getViewer($request); 316 $this->emailActionsData($request); 317 318 $recordId = $request->get('record'); 319 $moduleName = $request->getModule(); 320 $viewer = $this->getViewer($request); 321 322 if(!$this->record){ 323 $this->record = Vtiger_DetailView_Model::getInstance($moduleName, $recordId); 324 } 325 $recordModel = $this->record->getRecord(); 326 327 $TO = Zend_Json::decode(html_entity_decode($recordModel->get('saved_toid'))); 328 $CC = Zend_Json::decode(html_entity_decode($recordModel->get('ccmail'))); 329 $BCC = Zend_Json::decode(html_entity_decode($recordModel->get('bccmail'))); 330 331 $parentIds = explode('|',$recordModel->get('parent_id')); 332 333 $toMailInfo = $toMailNamesList = array(); 334 foreach($parentIds as $index=>$parentFieldId) { 335 if(empty($parentFieldId)){ 336 continue; 337 } 338 $parentIdComponents = explode('@',$parentFieldId); 339 $parentId = $parentIdComponents[0]; 340 if ($parentIdComponents[1] === '-1') { 341 $parentRecordModel = Users_Record_Model::getInstanceById($parentId, 'Users'); 342 } else { 343 $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId); 344 } 345 $emailFields = array_keys($parentRecordModel->getModule()->getFieldsByType('email')); 346 foreach ($emailFields as $emailField) { 347 $emailValue = $parentRecordModel->get($emailField); 348 if (in_array($emailValue, $TO)) { 349 //expecting parent ids and to will be same order 350 $toMailInfo[$parentId][] = $emailValue; 351 $toMailNamesList[$parentId][] = array('label' => $parentRecordModel->getName(), 'value' => $emailValue); 352 } 353 } 354 } 355 356 $viewer->assign('TO',$TO); 357 $viewer->assign('TOMAIL_INFO', $toMailInfo); 358 $viewer->assign('TOMAIL_NAMES_LIST', $toMailNamesList); 359 $viewer->assign('CC', implode(',',$CC)); 360 $viewer->assign('BCC', implode(',',$BCC)); 361 $viewer->assign('RECORDID', $request->get('record')); 362 $viewer->assign('RELATED_LOAD', true); 363 $viewer->assign('EMAIL_MODE', 'edit'); 364 echo $viewer->view('ComposeEmailForm.tpl', $moduleName, true); 365 } 366 367 function emailForward($request){ 368 $viewer = $this->getViewer($request); 369 $moduleName = $request->getModule(); 370 $this->emailActionsData($request); 371 $viewer->assign('TO', ''); 372 $viewer->assign('TOMAIL_INFO', array()); 373 $viewer->assign('RELATED_LOAD', true); 374 $viewer->assign('EMAIL_MODE', 'forward'); 375 echo $viewer->view('ComposeEmailForm.tpl', $moduleName, true); 376 } 377 378 public function previewPrint($request) { 379 $this->emailPreview($request); 380 } 381 }
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 |