[ 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_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 }
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 |