[ 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 SugarCRM Public License Version 1.1.2 4 * ("License"); You may not use this file except in compliance with the 5 * License. You may obtain a copy of txhe License at http://www.sugarcrm.com/SPL 6 * Software distributed under the License is distributed on an "AS IS" basis, 7 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for 8 * the specific language governing rights and limitations under the License. 9 * The Original Code is: SugarCRM Open Source 10 * The Initial Developer of the Original Code is SugarCRM, Inc. 11 * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.; 12 * All Rights Reserved. 13 * Contributor(s): ______________________________________. 14 ********************************************************************************/ 15 class Leads extends CRMEntity { 16 var $log; 17 var $db; 18 19 var $table_name = "vtiger_leaddetails"; 20 var $table_index= 'leadid'; 21 22 var $tab_name = Array('vtiger_crmentity','vtiger_leaddetails','vtiger_leadsubdetails','vtiger_leadaddress','vtiger_leadscf'); 23 var $tab_name_index = Array('vtiger_crmentity'=>'crmid','vtiger_leaddetails'=>'leadid','vtiger_leadsubdetails'=>'leadsubscriptionid','vtiger_leadaddress'=>'leadaddressid','vtiger_leadscf'=>'leadid'); 24 25 var $entity_table = "vtiger_crmentity"; 26 27 /** 28 * Mandatory table for supporting custom fields. 29 */ 30 var $customFieldTable = Array('vtiger_leadscf', 'leadid'); 31 32 //construct this from database; 33 var $column_fields = Array(); 34 var $sortby_fields = Array('lastname','firstname','email','phone','company','smownerid','website'); 35 36 // This is used to retrieve related vtiger_fields from form posts. 37 var $additional_column_fields = Array('smcreatorid', 'smownerid', 'contactid','potentialid' ,'crmid'); 38 39 // This is the list of vtiger_fields that are in the lists. 40 var $list_fields = Array( 41 'First Name'=>Array('leaddetails'=>'firstname'), 42 'Last Name'=>Array('leaddetails'=>'lastname'), 43 'Company'=>Array('leaddetails'=>'company'), 44 'Phone'=>Array('leadaddress'=>'phone'), 45 'Website'=>Array('leadsubdetails'=>'website'), 46 'Email'=>Array('leaddetails'=>'email'), 47 'Assigned To'=>Array('crmentity'=>'smownerid') 48 ); 49 var $list_fields_name = Array( 50 'First Name'=>'firstname', 51 'Last Name'=>'lastname', 52 'Company'=>'company', 53 'Phone'=>'phone', 54 'Website'=>'website', 55 'Email'=>'email', 56 'Assigned To'=>'assigned_user_id' 57 ); 58 var $list_link_field= 'lastname'; 59 60 var $search_fields = Array( 61 'Name'=>Array('leaddetails'=>'lastname'), 62 'Company'=>Array('leaddetails'=>'company') 63 ); 64 var $search_fields_name = Array( 65 'Name'=>'lastname', 66 'Company'=>'company' 67 ); 68 69 var $required_fields = array(); 70 71 // Used when enabling/disabling the mandatory fields for the module. 72 // Refers to vtiger_field.fieldname values. 73 var $mandatory_fields = Array('assigned_user_id', 'lastname', 'createdtime' ,'modifiedtime'); 74 75 //Default Fields for Email Templates -- Pavani 76 var $emailTemplate_defaultFields = array('firstname','lastname','leadsource','leadstatus','rating','industry','secondaryemail','email','annualrevenue','designation','salutation'); 77 78 //Added these variables which are used as default order by and sortorder in ListView 79 var $default_order_by = 'lastname'; 80 var $default_sort_order = 'ASC'; 81 82 // For Alphabetical search 83 var $def_basicsearch_col = 'lastname'; 84 85 //var $groupTable = Array('vtiger_leadgrouprelation','leadid'); 86 87 function Leads() { 88 $this->log = LoggerManager::getLogger('lead'); 89 $this->log->debug("Entering Leads() method ..."); 90 $this->db = PearDatabase::getInstance(); 91 $this->column_fields = getColumnFields('Leads'); 92 $this->log->debug("Exiting Lead method ..."); 93 } 94 95 /** Function to handle module specific operations when saving a entity 96 */ 97 function save_module($module) 98 { 99 } 100 101 // Mike Crowe Mod --------------------------------------------------------Default ordering for us 102 103 /** Function to export the lead records in CSV Format 104 * @param reference variable - where condition is passed when the query is executed 105 * Returns Export Leads Query. 106 */ 107 function create_export_query($where) 108 { 109 global $log; 110 global $current_user; 111 $log->debug("Entering create_export_query(".$where.") method ..."); 112 113 include ("include/utils/ExportUtils.php"); 114 115 //To get the Permitted fields query and the permitted fields list 116 $sql = getPermittedFieldsQuery("Leads", "detail_view"); 117 $fields_list = getFieldsListFromQuery($sql); 118 119 $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 120 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); 121 $query = "SELECT $fields_list,case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name 122 FROM ".$this->entity_table." 123 INNER JOIN vtiger_leaddetails 124 ON vtiger_crmentity.crmid=vtiger_leaddetails.leadid 125 LEFT JOIN vtiger_leadsubdetails 126 ON vtiger_leaddetails.leadid = vtiger_leadsubdetails.leadsubscriptionid 127 LEFT JOIN vtiger_leadaddress 128 ON vtiger_leaddetails.leadid=vtiger_leadaddress.leadaddressid 129 LEFT JOIN vtiger_leadscf 130 ON vtiger_leadscf.leadid=vtiger_leaddetails.leadid 131 LEFT JOIN vtiger_groups 132 ON vtiger_groups.groupid = vtiger_crmentity.smownerid 133 LEFT JOIN vtiger_users 134 ON vtiger_crmentity.smownerid = vtiger_users.id and vtiger_users.status='Active' 135 "; 136 137 $query .= $this->getNonAdminAccessControlQuery('Leads',$current_user); 138 $where_auto = " vtiger_crmentity.deleted=0 AND vtiger_leaddetails.converted =0"; 139 140 if($where != "") 141 $query .= " where ($where) AND ".$where_auto; 142 else 143 $query .= " where ".$where_auto; 144 145 $log->debug("Exiting create_export_query method ..."); 146 return $query; 147 } 148 149 150 151 /** Returns a list of the associated tasks 152 * @param integer $id - leadid 153 * returns related Task or Event record in array format 154 */ 155 function get_activities($id, $cur_tab_id, $rel_tab_id, $actions=false) { 156 global $log, $singlepane_view,$currentModule,$current_user; 157 $log->debug("Entering get_activities(".$id.") method ..."); 158 $this_module = $currentModule; 159 160 $related_module = vtlib_getModuleNameById($rel_tab_id); 161 require_once("modules/$related_module/Activity.php"); 162 $other = new Activity(); 163 vtlib_setup_modulevars($related_module, $other); 164 $singular_modname = vtlib_toSingular($related_module); 165 166 $parenttab = getParentTab(); 167 168 if($singlepane_view == 'true') 169 $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; 170 else 171 $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; 172 173 $button = ''; 174 175 $button .= '<input type="hidden" name="activity_mode">'; 176 177 if($actions) { 178 if(is_string($actions)) $actions = explode(',', strtoupper($actions)); 179 if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { 180 if(getFieldVisibilityPermission('Calendar',$current_user->id,'parent_id', 'readwrite') == '0') { 181 $button .= "<input title='".getTranslatedString('LBL_NEW'). " ". getTranslatedString('LBL_TODO', $related_module) ."' class='crmbutton small create'" . 182 " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\";this.form.return_module.value=\"$this_module\";this.form.activity_mode.value=\"Task\";' type='submit' name='button'" . 183 " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString('LBL_TODO', $related_module) ."'> "; 184 } 185 if(getFieldVisibilityPermission('Events',$current_user->id,'parent_id', 'readwrite') == '0') { 186 $button .= "<input title='".getTranslatedString('LBL_NEW'). " ". getTranslatedString('LBL_TODO', $related_module) ."' class='crmbutton small create'" . 187 " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\";this.form.return_module.value=\"$this_module\";this.form.activity_mode.value=\"Events\";' type='submit' name='button'" . 188 " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString('LBL_EVENT', $related_module) ."'>"; 189 } 190 } 191 } 192 193 $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 194 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); 195 $query = "SELECT vtiger_activity.*,vtiger_seactivityrel.crmid as parent_id, vtiger_contactdetails.lastname, 196 vtiger_contactdetails.contactid, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, 197 vtiger_crmentity.modifiedtime,case when (vtiger_users.user_name not like '') then 198 $userNameSql else vtiger_groups.groupname end as user_name, 199 vtiger_recurringevents.recurringtype 200 from vtiger_activity inner join vtiger_seactivityrel on vtiger_seactivityrel.activityid= 201 vtiger_activity.activityid inner join vtiger_crmentity on vtiger_crmentity.crmid= 202 vtiger_activity.activityid left join vtiger_cntactivityrel on 203 vtiger_cntactivityrel.activityid = vtiger_activity.activityid left join 204 vtiger_contactdetails on vtiger_contactdetails.contactid = vtiger_cntactivityrel.contactid 205 left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid 206 left outer join vtiger_recurringevents on vtiger_recurringevents.activityid= 207 vtiger_activity.activityid left join vtiger_groups on vtiger_groups.groupid= 208 vtiger_crmentity.smownerid where vtiger_seactivityrel.crmid=".$id." and 209 vtiger_crmentity.deleted = 0 and ((vtiger_activity.activitytype='Task' and 210 vtiger_activity.status not in ('Completed','Deferred')) or 211 (vtiger_activity.activitytype NOT in ('Emails','Task') and 212 vtiger_activity.eventstatus not in ('','Held'))) "; 213 214 $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); 215 216 if($return_value == null) $return_value = Array(); 217 $return_value['CUSTOM_BUTTON'] = $button; 218 219 $log->debug("Exiting get_activities method ..."); 220 return $return_value; 221 } 222 223 /** Returns a list of the associated Campaigns 224 * @param $id -- campaign id :: Type Integer 225 * @returns list of campaigns in array format 226 */ 227 function get_campaigns($id, $cur_tab_id, $rel_tab_id, $actions=false) { 228 global $log, $singlepane_view,$currentModule,$current_user; 229 $log->debug("Entering get_campaigns(".$id.") method ..."); 230 $this_module = $currentModule; 231 232 $related_module = vtlib_getModuleNameById($rel_tab_id); 233 require_once("modules/$related_module/$related_module.php"); 234 $other = new $related_module(); 235 vtlib_setup_modulevars($related_module, $other); 236 $singular_modname = vtlib_toSingular($related_module); 237 238 $parenttab = getParentTab(); 239 240 if($singlepane_view == 'true') 241 $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; 242 else 243 $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; 244 245 $button = ''; 246 247 $button .= '<input type="hidden" name="email_directing_module"><input type="hidden" name="record">'; 248 249 if($actions) { 250 if(is_string($actions)) $actions = explode(',', strtoupper($actions)); 251 if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { 252 $button .= "<input title='".getTranslatedString('LBL_SELECT')." ". getTranslatedString($related_module). "' class='crmbutton small edit' type='button' onclick=\"return window.open('index.php?module=$related_module&return_module=$currentModule&action=Popup&popuptype=detailview&select=enable&form=EditView&form_submit=false&recordid=$id&parenttab=$parenttab','test','width=640,height=602,resizable=0,scrollbars=0');\" value='". getTranslatedString('LBL_SELECT'). " " . getTranslatedString($related_module) ."'> "; 253 } 254 } 255 256 $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 257 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); 258 $query = "SELECT case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name , 259 vtiger_campaign.campaignid, vtiger_campaign.campaignname, vtiger_campaign.campaigntype, vtiger_campaign.campaignstatus, 260 vtiger_campaign.expectedrevenue, vtiger_campaign.closingdate, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, 261 vtiger_crmentity.modifiedtime from vtiger_campaign 262 inner join vtiger_campaignleadrel on vtiger_campaignleadrel.campaignid=vtiger_campaign.campaignid 263 inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_campaign.campaignid 264 inner join vtiger_campaignscf ON vtiger_campaignscf.campaignid = vtiger_campaign.campaignid 265 left join vtiger_groups on vtiger_groups.groupid=vtiger_crmentity.smownerid 266 left join vtiger_users on vtiger_users.id = vtiger_crmentity.smownerid 267 where vtiger_campaignleadrel.leadid=".$id." and vtiger_crmentity.deleted=0"; 268 269 $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); 270 271 if($return_value == null) $return_value = Array(); 272 $return_value['CUSTOM_BUTTON'] = $button; 273 274 $log->debug("Exiting get_campaigns method ..."); 275 return $return_value; 276 } 277 278 279 /** Returns a list of the associated emails 280 * @param integer $id - leadid 281 * returns related emails record in array format 282 */ 283 function get_emails($id, $cur_tab_id, $rel_tab_id, $actions=false) { 284 global $log, $singlepane_view,$currentModule,$current_user; 285 $log->debug("Entering get_emails(".$id.") method ..."); 286 $this_module = $currentModule; 287 288 $related_module = vtlib_getModuleNameById($rel_tab_id); 289 require_once("modules/$related_module/$related_module.php"); 290 $other = new $related_module(); 291 vtlib_setup_modulevars($related_module, $other); 292 $singular_modname = vtlib_toSingular($related_module); 293 294 $parenttab = getParentTab(); 295 296 if($singlepane_view == 'true') 297 $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; 298 else 299 $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; 300 301 $button = ''; 302 303 $button .= '<input type="hidden" name="email_directing_module"><input type="hidden" name="record">'; 304 305 if($actions) { 306 if(is_string($actions)) $actions = explode(',', strtoupper($actions)); 307 if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { 308 $button .= "<input title='".getTranslatedString('LBL_SELECT')." ". getTranslatedString($related_module). "' class='crmbutton small edit' type='button' onclick=\"return window.open('index.php?module=$related_module&return_module=$currentModule&action=Popup&popuptype=detailview&select=enable&form=EditView&form_submit=false&recordid=$id&parenttab=$parenttab','test','width=640,height=602,resizable=0,scrollbars=0');\" value='". getTranslatedString('LBL_SELECT'). " " . getTranslatedString($related_module) ."'> "; 309 } 310 if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { 311 $button .= "<input title='". getTranslatedString('LBL_ADD_NEW')." ". getTranslatedString($singular_modname)."' accessyKey='F' class='crmbutton small create' onclick='fnvshobj(this,\"sendmail_cont\");sendmail(\"$this_module\",$id);' type='button' name='button' value='". getTranslatedString('LBL_ADD_NEW')." ". getTranslatedString($singular_modname)."'></td>"; 312 } 313 } 314 315 $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 316 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); 317 $query ="select case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name," . 318 " vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.semodule, vtiger_activity.activitytype," . 319 " vtiger_activity.date_start, vtiger_activity.time_start, vtiger_activity.status, vtiger_activity.priority, vtiger_crmentity.crmid," . 320 " vtiger_crmentity.smownerid,vtiger_crmentity.modifiedtime, vtiger_users.user_name, vtiger_seactivityrel.crmid as parent_id " . 321 " from vtiger_activity" . 322 " inner join vtiger_seactivityrel on vtiger_seactivityrel.activityid=vtiger_activity.activityid" . 323 " inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_activity.activityid" . 324 " left join vtiger_groups on vtiger_groups.groupid=vtiger_crmentity.smownerid" . 325 " left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid" . 326 " where vtiger_activity.activitytype='Emails' and vtiger_crmentity.deleted=0 and vtiger_seactivityrel.crmid=".$id; 327 328 $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); 329 330 if($return_value == null) $return_value = Array(); 331 $return_value['CUSTOM_BUTTON'] = $button; 332 333 $log->debug("Exiting get_emails method ..."); 334 return $return_value; 335 } 336 337 /** 338 * Function to get Lead related Task & Event which have activity type Held, Completed or Deferred. 339 * @param integer $id - leadid 340 * returns related Task or Event record in array format 341 */ 342 function get_history($id) 343 { 344 global $log; 345 $log->debug("Entering get_history(".$id.") method ..."); 346 $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=> 347 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); 348 $query = "SELECT vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.status, 349 vtiger_activity.eventstatus, vtiger_activity.activitytype,vtiger_activity.date_start, 350 vtiger_activity.due_date,vtiger_activity.time_start,vtiger_activity.time_end, 351 vtiger_crmentity.modifiedtime,vtiger_crmentity.createdtime, 352 vtiger_crmentity.description, $userNameSql as user_name,vtiger_groups.groupname 353 from vtiger_activity 354 inner join vtiger_seactivityrel on vtiger_seactivityrel.activityid=vtiger_activity.activityid 355 inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_activity.activityid 356 left join vtiger_groups on vtiger_groups.groupid=vtiger_crmentity.smownerid 357 left join vtiger_users on vtiger_crmentity.smownerid= vtiger_users.id 358 where (vtiger_activity.activitytype != 'Emails') 359 and (vtiger_activity.status = 'Completed' or vtiger_activity.status = 'Deferred' or (vtiger_activity.eventstatus = 'Held' and vtiger_activity.eventstatus != '')) 360 and vtiger_seactivityrel.crmid=".$id." 361 and vtiger_crmentity.deleted = 0"; 362 //Don't add order by, because, for security, one more condition will be added with this query in include/RelatedListView.php 363 364 $log->debug("Exiting get_history method ..."); 365 return getHistory('Leads',$query,$id); 366 } 367 368 /** 369 * Function to get lead related Products 370 * @param integer $id - leadid 371 * returns related Products record in array format 372 */ 373 function get_products($id, $cur_tab_id, $rel_tab_id, $actions=false) { 374 global $log, $singlepane_view,$currentModule,$current_user; 375 $log->debug("Entering get_products(".$id.") method ..."); 376 $this_module = $currentModule; 377 378 $related_module = vtlib_getModuleNameById($rel_tab_id); 379 require_once("modules/$related_module/$related_module.php"); 380 $other = new $related_module(); 381 vtlib_setup_modulevars($related_module, $other); 382 $singular_modname = vtlib_toSingular($related_module); 383 384 $parenttab = getParentTab(); 385 386 if($singlepane_view == 'true') 387 $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id; 388 else 389 $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id; 390 391 $button = ''; 392 393 if($actions) { 394 if(is_string($actions)) $actions = explode(',', strtoupper($actions)); 395 if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') { 396 $button .= "<input title='".getTranslatedString('LBL_SELECT')." ". getTranslatedString($related_module). "' class='crmbutton small edit' type='button' onclick=\"return window.open('index.php?module=$related_module&return_module=$currentModule&action=Popup&popuptype=detailview&select=enable&form=EditView&form_submit=false&recordid=$id&parenttab=$parenttab','test','width=640,height=602,resizable=0,scrollbars=0');\" value='". getTranslatedString('LBL_SELECT'). " " . getTranslatedString($related_module) ."'> "; 397 } 398 if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') { 399 $button .= "<input title='".getTranslatedString('LBL_ADD_NEW'). " ". getTranslatedString($singular_modname) ."' class='crmbutton small create'" . 400 " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" . 401 " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString($singular_modname) ."'> "; 402 } 403 } 404 405 $query = "SELECT vtiger_products.productid, vtiger_products.productname, vtiger_products.productcode, 406 vtiger_products.commissionrate, vtiger_products.qty_per_unit, vtiger_products.unit_price, 407 vtiger_crmentity.crmid, vtiger_crmentity.smownerid 408 FROM vtiger_products 409 INNER JOIN vtiger_seproductsrel ON vtiger_products.productid = vtiger_seproductsrel.productid and vtiger_seproductsrel.setype = 'Leads' 410 INNER JOIN vtiger_productcf 411 ON vtiger_products.productid = vtiger_productcf.productid 412 INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_products.productid 413 INNER JOIN vtiger_leaddetails ON vtiger_leaddetails.leadid = vtiger_seproductsrel.crmid 414 LEFT JOIN vtiger_users 415 ON vtiger_users.id=vtiger_crmentity.smownerid 416 LEFT JOIN vtiger_groups 417 ON vtiger_groups.groupid = vtiger_crmentity.smownerid 418 WHERE vtiger_crmentity.deleted = 0 AND vtiger_leaddetails.leadid = $id"; 419 420 $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset); 421 422 if($return_value == null) $return_value = Array(); 423 $return_value['CUSTOM_BUTTON'] = $button; 424 425 $log->debug("Exiting get_products method ..."); 426 return $return_value; 427 } 428 429 /** Function to get the Columnnames of the Leads Record 430 * Used By vtigerCRM Word Plugin 431 * Returns the Merge Fields for Word Plugin 432 */ 433 function getColumnNames_Lead() 434 { 435 global $log,$current_user; 436 $log->debug("Entering getColumnNames_Lead() method ..."); 437 require('user_privileges/user_privileges_'.$current_user->id.'.php'); 438 if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0) 439 { 440 $sql1 = "select fieldlabel from vtiger_field where tabid=7 and vtiger_field.presence in (0,2)"; 441 $params1 = array(); 442 }else 443 { 444 $profileList = getCurrentUserProfileList(); 445 $sql1 = "select vtiger_field.fieldid,fieldlabel from vtiger_field inner join vtiger_profile2field on vtiger_profile2field.fieldid=vtiger_field.fieldid inner join vtiger_def_org_field on vtiger_def_org_field.fieldid=vtiger_field.fieldid where vtiger_field.tabid=7 and vtiger_field.displaytype in (1,2,3,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_field.presence in (0,2)"; 446 $params1 = array(); 447 if (count($profileList) > 0) { 448 $sql1 .= " and vtiger_profile2field.profileid in (". generateQuestionMarks($profileList) .") group by fieldid"; 449 array_push($params1, $profileList); 450 } 451 } 452 $result = $this->db->pquery($sql1, $params1); 453 $numRows = $this->db->num_rows($result); 454 for($i=0; $i < $numRows;$i++) 455 { 456 $custom_fields[$i] = $this->db->query_result($result,$i,"fieldlabel"); 457 $custom_fields[$i] = preg_replace("/\s+/","",$custom_fields[$i]); 458 $custom_fields[$i] = strtoupper($custom_fields[$i]); 459 } 460 $mergeflds = $custom_fields; 461 $log->debug("Exiting getColumnNames_Lead method ..."); 462 return $mergeflds; 463 } 464 465 /** 466 * Move the related records of the specified list of id's to the given record. 467 * @param String This module name 468 * @param Array List of Entity Id's from which related records need to be transfered 469 * @param Integer Id of the the Record to which the related records are to be moved 470 */ 471 function transferRelatedRecords($module, $transferEntityIds, $entityId) { 472 global $adb,$log; 473 $log->debug("Entering function transferRelatedRecords ($module, $transferEntityIds, $entityId)"); 474 475 $rel_table_arr = Array("Activities"=>"vtiger_seactivityrel","Documents"=>"vtiger_senotesrel","Attachments"=>"vtiger_seattachmentsrel", 476 "Products"=>"vtiger_seproductsrel","Campaigns"=>"vtiger_campaignleadrel"); 477 478 $tbl_field_arr = Array("vtiger_seactivityrel"=>"activityid","vtiger_senotesrel"=>"notesid","vtiger_seattachmentsrel"=>"attachmentsid", 479 "vtiger_seproductsrel"=>"productid","vtiger_campaignleadrel"=>"campaignid"); 480 481 $entity_tbl_field_arr = Array("vtiger_seactivityrel"=>"crmid","vtiger_senotesrel"=>"crmid","vtiger_seattachmentsrel"=>"crmid", 482 "vtiger_seproductsrel"=>"crmid","vtiger_campaignleadrel"=>"leadid"); 483 484 foreach($transferEntityIds as $transferId) { 485 foreach($rel_table_arr as $rel_module=>$rel_table) { 486 $id_field = $tbl_field_arr[$rel_table]; 487 $entity_id_field = $entity_tbl_field_arr[$rel_table]; 488 // IN clause to avoid duplicate entries 489 $sel_result = $adb->pquery("select $id_field from $rel_table where $entity_id_field=? " . 490 " and $id_field not in (select $id_field from $rel_table where $entity_id_field=?)", 491 array($transferId,$entityId)); 492 $res_cnt = $adb->num_rows($sel_result); 493 if($res_cnt > 0) { 494 for($i=0;$i<$res_cnt;$i++) { 495 $id_field_value = $adb->query_result($sel_result,$i,$id_field); 496 $adb->pquery("update $rel_table set $entity_id_field=? where $entity_id_field=? and $id_field=?", 497 array($entityId,$transferId,$id_field_value)); 498 } 499 } 500 } 501 } 502 parent::transferRelatedRecords($module, $transferEntityIds, $entityId); 503 $log->debug("Exiting transferRelatedRecords..."); 504 } 505 506 /* 507 * Function to get the secondary query part of a report 508 * @param - $module primary module name 509 * @param - $secmodule secondary module name 510 * returns the query string formed on fetching the related data for report for secondary module 511 */ 512 function generateReportsSecQuery($module,$secmodule, $queryPlanner) { 513 $matrix = $queryPlanner->newDependencyMatrix(); 514 $matrix->setDependency('vtiger_leaddetails',array('vtiger_crmentityLeads', 'vtiger_leadaddress','vtiger_leadsubdetails','vtiger_leadscf','vtiger_email_trackLeads')); 515 $matrix->setDependency('vtiger_crmentityLeads',array('vtiger_groupsLeads','vtiger_usersLeads','vtiger_lastModifiedByLeads')); 516 517 // TODO Support query planner 518 if (!$queryPlanner->requireTable("vtiger_leaddetails",$matrix)){ 519 return ''; 520 } 521 $query = $this->getRelationQuery($module,$secmodule,"vtiger_leaddetails","leadid", $queryPlanner); 522 if ($queryPlanner->requireTable("vtiger_crmentityLeads",$matrix)){ 523 $query .= " left join vtiger_crmentity as vtiger_crmentityLeads on vtiger_crmentityLeads.crmid = vtiger_leaddetails.leadid and vtiger_crmentityLeads.deleted=0"; 524 } 525 if ($queryPlanner->requireTable("vtiger_leadaddress")){ 526 $query .= " left join vtiger_leadaddress on vtiger_leaddetails.leadid = vtiger_leadaddress.leadaddressid"; 527 } 528 if ($queryPlanner->requireTable("vtiger_leadsubdetails")){ 529 $query .= " left join vtiger_leadsubdetails on vtiger_leadsubdetails.leadsubscriptionid = vtiger_leaddetails.leadid"; 530 } 531 if ($queryPlanner->requireTable("vtiger_leadscf")){ 532 $query .= " left join vtiger_leadscf on vtiger_leadscf.leadid = vtiger_leaddetails.leadid"; 533 } 534 if ($queryPlanner->requireTable("vtiger_email_trackLeads")){ 535 $query .= " LEFT JOIN vtiger_email_track AS vtiger_email_trackLeads ON vtiger_email_trackLeads.crmid = vtiger_leaddetails.leadid"; 536 } 537 if ($queryPlanner->requireTable("vtiger_groupsLeads")){ 538 $query .= " left join vtiger_groups as vtiger_groupsLeads on vtiger_groupsLeads.groupid = vtiger_crmentityLeads.smownerid"; 539 } 540 if ($queryPlanner->requireTable("vtiger_usersLeads")){ 541 $query .= " left join vtiger_users as vtiger_usersLeads on vtiger_usersLeads.id = vtiger_crmentityLeads.smownerid"; 542 } 543 if ($queryPlanner->requireTable("vtiger_lastModifiedByLeads")){ 544 $query .= " left join vtiger_users as vtiger_lastModifiedByLeads on vtiger_lastModifiedByLeads.id = vtiger_crmentityLeads.modifiedby "; 545 } 546 if ($queryPlanner->requireTable("vtiger_createdbyLeads")){ 547 $query .= " left join vtiger_users as vtiger_createdbyLeads on vtiger_createdbyLeads.id = vtiger_crmentityLeads.smcreatorid "; 548 } 549 return $query; 550 } 551 552 /* 553 * Function to get the relation tables for related modules 554 * @param - $secmodule secondary module name 555 * returns the array with table names and fieldnames storing relations between module and this module 556 */ 557 function setRelationTables($secmodule){ 558 $rel_tables = array ( 559 "Calendar" => array("vtiger_seactivityrel"=>array("crmid","activityid"),"vtiger_leaddetails"=>"leadid"), 560 "Products" => array("vtiger_seproductsrel"=>array("crmid","productid"),"vtiger_leaddetails"=>"leadid"), 561 "Campaigns" => array("vtiger_campaignleadrel"=>array("leadid","campaignid"),"vtiger_leaddetails"=>"leadid"), 562 "Documents" => array("vtiger_senotesrel"=>array("crmid","notesid"),"vtiger_leaddetails"=>"leadid"), 563 "Services" => array("vtiger_crmentityrel"=>array("crmid","relcrmid"),"vtiger_leaddetails"=>"leadid"), 564 "Emails" => array("vtiger_seactivityrel"=>array("crmid","activityid"),"vtiger_leaddetails"=>"leadid"), 565 ); 566 return $rel_tables[$secmodule]; 567 } 568 569 // Function to unlink an entity with given Id from another entity 570 function unlinkRelationship($id, $return_module, $return_id) { 571 global $log; 572 if(empty($return_module) || empty($return_id)) return; 573 574 if($return_module == 'Campaigns') { 575 $sql = 'DELETE FROM vtiger_campaignleadrel WHERE leadid=? AND campaignid=?'; 576 $this->db->pquery($sql, array($id, $return_id)); 577 } 578 elseif($return_module == 'Products') { 579 $sql = 'DELETE FROM vtiger_seproductsrel WHERE crmid=? AND productid=?'; 580 $this->db->pquery($sql, array($id, $return_id)); 581 } else { 582 $sql = 'DELETE FROM vtiger_crmentityrel WHERE (crmid=? AND relmodule=? AND relcrmid=?) OR (relcrmid=? AND module=? AND crmid=?)'; 583 $params = array($id, $return_module, $return_id, $id, $return_module, $return_id); 584 $this->db->pquery($sql, $params); 585 } 586 } 587 588 function getListButtons($app_strings,$mod_strings = false) { 589 $list_buttons = Array(); 590 591 if(isPermitted('Leads','Delete','') == 'yes') { 592 $list_buttons['del'] = $app_strings[LBL_MASS_DELETE]; 593 } 594 if(isPermitted('Leads','EditView','') == 'yes') { 595 $list_buttons['mass_edit'] = $app_strings[LBL_MASS_EDIT]; 596 $list_buttons['c_owner'] = $app_strings[LBL_CHANGE_OWNER]; 597 } 598 if(isPermitted('Emails','EditView','') == 'yes') 599 $list_buttons['s_mail'] = $app_strings[LBL_SEND_MAIL_BUTTON]; 600 601 // end of mailer export 602 return $list_buttons; 603 } 604 605 function save_related_module($module, $crmid, $with_module, $with_crmids) { 606 $adb = PearDatabase::getInstance(); 607 608 if(!is_array($with_crmids)) $with_crmids = Array($with_crmids); 609 foreach($with_crmids as $with_crmid) { 610 if($with_module == 'Products') 611 $adb->pquery("insert into vtiger_seproductsrel values (?,?,?)", array($crmid, $with_crmid, $module)); 612 elseif($with_module == 'Campaigns') 613 $adb->pquery("insert into vtiger_campaignleadrel values(?,?,1)", array($with_crmid, $crmid)); 614 else { 615 parent::save_related_module($module, $crmid, $with_module, $with_crmid); 616 } 617 } 618 } 619 620 function getQueryForDuplicates($module, $tableColumns, $selectedColumns = '', $ignoreEmpty = false) { 621 if(is_array($tableColumns)) { 622 $tableColumnsString = implode(',', $tableColumns); 623 } 624 $selectClause = "SELECT " . $this->table_name . "." . $this->table_index . " AS recordid," . $tableColumnsString; 625 626 // Select Custom Field Table Columns if present 627 if (isset($this->customFieldTable)) 628 $query .= ", " . $this->customFieldTable[0] . ".* "; 629 630 $fromClause = " FROM $this->table_name"; 631 632 $fromClause .= " INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = $this->table_name.$this->table_index"; 633 634 if($this->tab_name) { 635 foreach($this->tab_name as $tableName) { 636 if($tableName != 'vtiger_crmentity' && $tableName != $this->table_name) { 637 if($this->tab_name_index[$tableName]) { 638 $fromClause .= " INNER JOIN " . $tableName . " ON " . $tableName . '.' . $this->tab_name_index[$tableName] . 639 " = $this->table_name.$this->table_index"; 640 } 641 } 642 } 643 } 644 $fromClause .= " LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid 645 LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid"; 646 647 $whereClause = " WHERE vtiger_crmentity.deleted = 0 AND vtiger_leaddetails.converted=0 "; 648 $whereClause .= $this->getListViewSecurityParameter($module); 649 650 if($ignoreEmpty) { 651 foreach($tableColumns as $tableColumn){ 652 $whereClause .= " AND ($tableColumn IS NOT NULL AND $tableColumn != '') "; 653 } 654 } 655 656 if (isset($selectedColumns) && trim($selectedColumns) != '') { 657 $sub_query = "SELECT $selectedColumns FROM $this->table_name AS t " . 658 " INNER JOIN vtiger_crmentity AS crm ON crm.crmid = t." . $this->table_index; 659 // Consider custom table join as well. 660 if (isset($this->customFieldTable)) { 661 $sub_query .= " LEFT JOIN " . $this->customFieldTable[0] . " tcf ON tcf." . $this->customFieldTable[1] . " = t.$this->table_index"; 662 } 663 $sub_query .= " WHERE crm.deleted=0 GROUP BY $selectedColumns HAVING COUNT(*)>1"; 664 } else { 665 $sub_query = "SELECT $tableColumnsString $fromClause $whereClause GROUP BY $tableColumnsString HAVING COUNT(*)>1"; 666 } 667 668 $i = 1; 669 foreach($tableColumns as $tableColumn){ 670 $tableInfo = explode('.', $tableColumn); 671 $duplicateCheckClause .= " ifnull($tableColumn,'null') = ifnull(temp.$tableInfo[1],'null')"; 672 if (count($tableColumns) != $i++) $duplicateCheckClause .= " AND "; 673 } 674 675 $query = $selectClause . $fromClause . 676 " LEFT JOIN vtiger_users_last_import ON vtiger_users_last_import.bean_id=" . $this->table_name . "." . $this->table_index . 677 " INNER JOIN (" . $sub_query . ") AS temp ON " . $duplicateCheckClause . 678 $whereClause . 679 " ORDER BY $tableColumnsString," . $this->table_name . "." . $this->table_index . " ASC"; 680 return $query; 681 } 682 } 683 684 ?>
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 |