[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/views/ -> MassActionAjax.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_MassActionAjax_View extends Vtiger_IndexAjax_View {
  12  	function __construct() {
  13          parent::__construct();
  14          $this->exposeMethod('showMassEditForm');
  15          $this->exposeMethod('showAddCommentForm');
  16          $this->exposeMethod('showComposeEmailForm');
  17          $this->exposeMethod('showSendSMSForm');
  18          $this->exposeMethod('showDuplicatesSearchForm');
  19          $this->exposeMethod('transferOwnership');
  20      }
  21  
  22  	function process(Vtiger_Request $request) {
  23          $mode = $request->get('mode');
  24          if(!empty($mode)) {
  25              $this->invokeExposedMethod($mode, $request);
  26              return;
  27          }
  28      }
  29  
  30      /**
  31       * Function returns the mass edit form
  32       * @param Vtiger_Request $request
  33       */
  34  	function showMassEditForm (Vtiger_Request $request){
  35          $moduleName = $request->getModule();
  36          $cvId = $request->get('viewname');
  37          $selectedIds = $request->get('selected_ids');
  38          $excludedIds = $request->get('excluded_ids');
  39  
  40          $viewer = $this->getViewer($request);
  41  
  42          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  43          $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceForModule($moduleModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_MASSEDIT);
  44          $fieldInfo = array();
  45          $fieldList = $moduleModel->getFields();
  46          foreach ($fieldList as $fieldName => $fieldModel) {
  47              $fieldInfo[$fieldName] = $fieldModel->getFieldInfo();
  48          }
  49          $picklistDependencyDatasource = Vtiger_DependencyPicklist::getPicklistDependencyDatasource($moduleName);
  50  
  51          $viewer->assign('PICKIST_DEPENDENCY_DATASOURCE',Zend_Json::encode($picklistDependencyDatasource));
  52          $viewer->assign('CURRENTDATE', date('Y-n-j'));
  53          $viewer->assign('MODE', 'massedit');
  54          $viewer->assign('MODULE', $moduleName);
  55          $viewer->assign('CVID', $cvId);
  56          $viewer->assign('SELECTED_IDS', $selectedIds);
  57          $viewer->assign('EXCLUDED_IDS', $excludedIds);
  58          $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance);
  59          $viewer->assign('MODULE_MODEL',$moduleModel); 
  60          $viewer->assign('MASS_EDIT_FIELD_DETAILS',$fieldInfo); 
  61          $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure());
  62          $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
  63          $viewer->assign('MODULE_MODEL', $moduleModel);
  64          $searchKey = $request->get('search_key');
  65          $searchValue = $request->get('search_value');
  66          $operator = $request->get('operator');
  67          if(!empty($operator)) {
  68              $viewer->assign('OPERATOR',$operator);
  69              $viewer->assign('ALPHABET_VALUE',$searchValue);
  70              $viewer->assign('SEARCH_KEY',$searchKey);
  71          }
  72          $searchParams = $request->get('search_params');
  73          if(!empty($searchParams)) {
  74              $viewer->assign('SEARCH_PARAMS',$searchParams);
  75          }
  76  
  77          echo $viewer->view('MassEditForm.tpl',$moduleName,true);
  78      }
  79      
  80      /**
  81       * Function returns the Add Comment form
  82       * @param Vtiger_Request $request
  83       */
  84  	function showAddCommentForm(Vtiger_Request $request){
  85          $sourceModule = $request->getModule();
  86          $moduleName = 'ModComments';
  87          $cvId = $request->get('viewname');
  88          $selectedIds = $request->get('selected_ids');
  89          $excludedIds = $request->get('excluded_ids');
  90  
  91          $viewer = $this->getViewer($request);
  92          $viewer->assign('SOURCE_MODULE', $sourceModule);
  93          $viewer->assign('MODULE', $moduleName);
  94          $viewer->assign('CVID', $cvId);
  95          $viewer->assign('SELECTED_IDS', $selectedIds);
  96          $viewer->assign('EXCLUDED_IDS', $excludedIds);
  97          $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
  98          
  99          $searchKey = $request->get('search_key');
 100          $searchValue = $request->get('search_value');
 101          $operator = $request->get('operator');
 102          if(!empty($operator)) {
 103              $viewer->assign('OPERATOR',$operator);
 104              $viewer->assign('ALPHABET_VALUE',$searchValue);
 105              $viewer->assign('SEARCH_KEY',$searchKey);
 106          }
 107  
 108          $searchParams = $request->get('search_params');
 109          if(!empty($searchParams)) {
 110              $viewer->assign('SEARCH_PARAMS',$searchParams);
 111          }
 112  
 113          echo $viewer->view('AddCommentForm.tpl',$moduleName,true);
 114      }
 115  
 116      /**
 117       * Function returns the Compose Email form
 118       * @param Vtiger_Request $request
 119       */
 120  	function showComposeEmailForm(Vtiger_Request $request) {
 121          $moduleName = 'Emails';
 122          $sourceModule = $request->getModule();
 123          $cvId = $request->get('viewname');
 124          $selectedIds = $request->get('selected_ids');
 125          $excludedIds = $request->get('excluded_ids');
 126          $step = $request->get('step');
 127          $selectedFields = $request->get('selectedFields');
 128          $relatedLoad = $request->get('relatedLoad');
 129  
 130          $moduleModel = Vtiger_Module_Model::getInstance($sourceModule);
 131          $emailFields = $moduleModel->getFieldsByType('email');
 132          $accesibleEmailFields = array();
 133          $emailColumnNames = array();
 134          $emailColumnModelMapping = array();
 135  
 136          foreach($emailFields as $index=>$emailField) {
 137              $fieldName = $emailField->getName();
 138              if($emailField->isViewable()) {
 139                  $accesibleEmailFields[] = $emailField;
 140                  $emailColumnNames[] = $emailField->get('column');
 141                  $emailColumnModelMapping[$emailField->get('column')] = $emailField;
 142              }
 143          }
 144          $emailFields = $accesibleEmailFields;
 145  
 146          $emailFieldCount = count($emailFields);
 147          $tableJoined = array();
 148          if($emailFieldCount > 1) {
 149              $recordIds = $this->getRecordsListFromRequest($request);
 150  
 151              $moduleMeta = $moduleModel->getModuleMeta();
 152              $wsModuleMeta = $moduleMeta->getMeta();
 153              $tabNameIndexList = $wsModuleMeta->getEntityTableIndexList();
 154  
 155              $queryWithFromClause = 'SELECT '. implode(',',$emailColumnNames). ' FROM vtiger_crmentity ';
 156              foreach($emailFields as $emailFieldModel) {
 157                  $fieldTableName = $emailFieldModel->table;
 158                  if(in_array($fieldTableName, $tableJoined)){
 159                      continue;
 160                  }
 161  
 162                  $tableJoined[] = $fieldTableName;
 163                  $queryWithFromClause .= ' INNER JOIN '.$fieldTableName .
 164                              ' ON '.$fieldTableName.'.'.$tabNameIndexList[$fieldTableName].'= vtiger_crmentity.crmid';
 165              }
 166              $query =  $queryWithFromClause . ' WHERE vtiger_crmentity.deleted = 0 AND crmid IN ('.  generateQuestionMarks($recordIds).') AND (';
 167  
 168              for($i=0; $i<$emailFieldCount;$i++) {
 169                  for($j=($i+1);$j<$emailFieldCount;$j++){
 170                      $query .= ' (' . $emailFields[$i]->getName() .' != \'\' and '. $emailFields[$j]->getName().' != \'\')';
 171                      if(!($i == ($emailFieldCount-2) && $j == ($emailFieldCount-1))) {
 172                          $query .= ' or ';
 173                      }
 174                  }
 175              }
 176              $query .=') LIMIT 1';
 177  
 178              $db = PearDatabase::getInstance();
 179              $result = $db->pquery($query,$recordIds);
 180  
 181              $num_rows = $db->num_rows($result);
 182  
 183              if($num_rows == 0) {
 184                  $query = $queryWithFromClause . ' WHERE vtiger_crmentity.deleted = 0 AND crmid IN ('.  generateQuestionMarks($recordIds).') AND (';
 185                  foreach($emailColumnNames as $index =>$columnName) {
 186                      $query .= " $columnName != ''";
 187                      //add glue or untill unless it is the last email field
 188                      if($index != ($emailFieldCount -1 ) ){
 189                          $query .= ' or ';
 190                      }
 191                  }
 192                  $query .= ') LIMIT 1';
 193                  $result = $db->pquery($query, $recordIds);
 194                  if($db->num_rows($result) > 0) {
 195                      //Expecting there will atleast one row 
 196                      $row = $db->query_result_rowdata($result,0);
 197  
 198                      foreach($emailColumnNames as $emailColumnName) {
 199                          if(!empty($row[$emailColumnName])) {
 200                              //To send only the single email field since it is only field which has value
 201                              $emailFields = array($emailColumnModelMapping[$emailColumnName]);
 202                              break;
 203                          }
 204                      }
 205                  }else{
 206                      //No Record which has email field value
 207                      foreach($emailColumnNames as $emailColumnName) {
 208                          //To send only the single email field since it has no email value
 209                          $emailFields = array($emailColumnModelMapping[$emailColumnName]);
 210                          break;
 211                      }
 212                  }
 213              }
 214          }
 215  
 216          $viewer = $this->getViewer($request);
 217          $viewer->assign('MODULE', $moduleName);
 218          $viewer->assign('SOURCE_MODULE',$sourceModule);
 219          $viewer->assign('VIEWNAME', $cvId);
 220          $viewer->assign('SELECTED_IDS', $selectedIds);
 221          $viewer->assign('EXCLUDED_IDS', $excludedIds);
 222          $viewer->assign('EMAIL_FIELDS', $emailFields);
 223          $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
 224          
 225          $searchKey = $request->get('search_key');
 226          $searchValue = $request->get('search_value');
 227          $operator = $request->get('operator');
 228          if(!empty($operator)) {
 229              $viewer->assign('OPERATOR',$operator);
 230              $viewer->assign('ALPHABET_VALUE',$searchValue);
 231              $viewer->assign('SEARCH_KEY',$searchKey);
 232          }
 233          
 234          $searchParams = $request->get('search_params');
 235          if(!empty($searchParams)) {
 236              $viewer->assign('SEARCH_PARAMS',$searchParams);
 237          }
 238  
 239          $to = $request->get('to');
 240          if (!$to) {
 241              $to = array();
 242          }
 243          $viewer->assign('TO', $to);
 244  
 245          $parentModule = $request->get('sourceModule');
 246          $parentRecord = $request->get('sourceRecord');
 247          if (!empty($parentModule)) {
 248              $viewer->assign('PARENT_MODULE', $parentModule);
 249              $viewer->assign('PARENT_RECORD', $parentRecord);
 250              $viewer->assign('RELATED_MODULE', $sourceModule);
 251          }
 252          if($relatedLoad){
 253              $viewer->assign('RELATED_LOAD', true);
 254          }
 255  
 256          if($step == 'step1') {
 257              echo $viewer->view('SelectEmailFields.tpl', $moduleName, true);
 258              exit;
 259          }
 260      }
 261  
 262      /**
 263       * Function shows form that will lets you send SMS
 264       * @param Vtiger_Request $request
 265       */
 266  	function showSendSMSForm(Vtiger_Request $request) {
 267  
 268          $sourceModule = $request->getModule();
 269          $moduleName = 'SMSNotifier';
 270          $selectedIds = $this->getRecordsListFromRequest($request);
 271          $excludedIds = $request->get('excluded_ids');
 272          $cvId = $request->get('viewname');
 273  
 274          $user = Users_Record_Model::getCurrentUserModel();
 275          $moduleModel = Vtiger_Module_Model::getInstance($sourceModule);
 276          $phoneFields = $moduleModel->getFieldsByType('phone');
 277          $viewer = $this->getViewer($request);
 278          
 279          if(count($selectedIds) == 1){
 280              $recordId = $selectedIds[0];
 281              $selectedRecordModel = Vtiger_Record_Model::getInstanceById($recordId, $sourceModule);
 282              $viewer->assign('SINGLE_RECORD', $selectedRecordModel);
 283          }
 284          $viewer->assign('VIEWNAME', $cvId);
 285          $viewer->assign('MODULE', $moduleName);
 286          $viewer->assign('SOURCE_MODULE', $sourceModule);
 287          $viewer->assign('SELECTED_IDS', $selectedIds);
 288          $viewer->assign('EXCLUDED_IDS', $excludedIds);
 289          $viewer->assign('USER_MODEL', $user);
 290          $viewer->assign('PHONE_FIELDS', $phoneFields);
 291          
 292          $searchKey = $request->get('search_key');
 293          $searchValue = $request->get('search_value');
 294          $operator = $request->get('operator');
 295          if(!empty($operator)) {
 296              $viewer->assign('OPERATOR',$operator);
 297              $viewer->assign('ALPHABET_VALUE',$searchValue);
 298              $viewer->assign('SEARCH_KEY',$searchKey);
 299          }
 300  
 301          $searchParams = $request->get('search_params');
 302          if(!empty($searchParams)) {
 303              $viewer->assign('SEARCH_PARAMS',$searchParams);
 304          }
 305          
 306          echo $viewer->view('SendSMSForm.tpl', $moduleName, true);
 307      }
 308  
 309      /**
 310       * Function returns the record Ids selected in the current filter
 311       * @param Vtiger_Request $request
 312       * @return integer
 313       */
 314  	function getRecordsListFromRequest(Vtiger_Request $request, $module = false) {
 315          $cvId = $request->get('viewname');
 316          $selectedIds = $request->get('selected_ids');
 317          $excludedIds = $request->get('excluded_ids');
 318          if(empty($module)) {
 319              $module = $request->getModule();
 320          }
 321          if(!empty($selectedIds) && $selectedIds != 'all') {
 322              if(!empty($selectedIds) && count($selectedIds) > 0) {
 323                  return $selectedIds;
 324              }
 325          }
 326          
 327          $sourceRecord = $request->get('sourceRecord');
 328          $sourceModule = $request->get('sourceModule');
 329          if ($sourceRecord && $sourceModule) {
 330              $sourceRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecord, $sourceModule);
 331              return $sourceRecordModel->getSelectedIdsList($module, $excludedIds);
 332          }
 333  
 334          $customViewModel = CustomView_Record_Model::getInstanceById($cvId);
 335          if($customViewModel) {
 336              $searchKey = $request->get('search_key');
 337              $searchValue = $request->get('search_value');
 338              $operator = $request->get('operator');
 339              if(!empty($operator)) {
 340                  $customViewModel->set('operator', $operator);
 341                  $customViewModel->set('search_key', $searchKey);
 342                  $customViewModel->set('search_value', $searchValue);
 343              }
 344              $customViewModel->set('search_params', $request->get('search_params'));
 345              return $customViewModel->getRecordIds($excludedIds,$module);
 346          }
 347      }
 348  
 349      /**
 350       * Function shows the List of Mail Merge Templates
 351       * @param Vtiger_Request $request
 352       */
 353  	function showMailMergeTemplates(Vtiger_Request $request) {
 354          $selectedIds = $request->get('selected_ids');
 355          $excludedIds = $request->get('excluded_ids');
 356          $cvId = $request->get('viewname');
 357          $module = $request->getModule();
 358          $templates = Settings_MailMerge_Record_Model::getByModule($module);
 359  
 360          $viewer = $this->getViewer($request);
 361          $viewer->assign('TEMPLATES', $templates);
 362          $viewer->assign('SELECTED_IDS', $selectedIds);
 363          $viewer->assign('EXCLUDED_IDS', $excludedIds);
 364          $viewer->assign('VIEWNAME', $cvId);
 365          $viewer->assign('MODULE', $module);
 366  
 367          return $viewer->view('showMergeTemplates.tpl', $module);
 368      }
 369  
 370      /**
 371       * Function shows the duplicate search form
 372       * @param Vtiger_Request $request
 373       */
 374  	function showDuplicatesSearchForm(Vtiger_Request $request) {
 375          $module = $request->getModule();
 376          $moduleModel = Vtiger_Module_Model::getInstance($module);
 377          $fields = $moduleModel->getFields();
 378  
 379          $viewer = $this->getViewer($request);
 380          $viewer->assign('MODULE', $module);
 381          $viewer->assign('FIELDS', $fields);
 382          $viewer->view('showDuplicateSearch.tpl', $module);
 383      }
 384      
 385  	function transferOwnership(Vtiger_Request $request){
 386          $module = $request->getModule();
 387          $moduleModel = Vtiger_Module_Model::getInstance($module);
 388  
 389          $relatedModules = $moduleModel->getRelations();
 390          //User doesn't have the permission to edit related module,
 391          //then don't show that module in related module list.
 392          foreach ($relatedModules as $key => $relModule) {
 393              if (!Users_Privileges_Model::isPermitted($relModule->get('relatedModuleName'), 'EditView')) {
 394                  unset($relatedModules[$key]);
 395              }
 396          }
 397          
 398          $viewer = $this->getViewer($request);
 399          $skipModules = array('Emails');
 400          $viewer->assign('MODULE',$module);
 401          $viewer->assign('RELATED_MODULES', $relatedModules);
 402          $viewer->assign('SKIP_MODULES', $skipModules);
 403          $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
 404          $viewer->view('TransferRecordOwnership.tpl', $module);
 405      }
 406  }


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