[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/views/ -> ComposeEmail.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 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  }


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