[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Leads/ -> Leads.php (source)

   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) ."'>&nbsp;";
 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) ."'>&nbsp;";
 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) ."'>&nbsp;";
 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) ."'>&nbsp;";
 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) ."'>&nbsp;";
 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  ?>


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