[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Campaigns/ -> Campaigns.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 Campaigns extends CRMEntity {
  16      var $log;
  17      var $db;
  18      var $table_name = "vtiger_campaign";
  19      var $table_index= 'campaignid';
  20  
  21      var $tab_name = Array('vtiger_crmentity','vtiger_campaign','vtiger_campaignscf');
  22      var $tab_name_index = Array('vtiger_crmentity'=>'crmid','vtiger_campaign'=>'campaignid','vtiger_campaignscf'=>'campaignid');
  23      /**
  24       * Mandatory table for supporting custom fields.
  25       */
  26      var $customFieldTable = Array('vtiger_campaignscf', 'campaignid');
  27      var $column_fields = Array();
  28  
  29      var $sortby_fields = Array('campaignname','smownerid','campaigntype','productname','expectedrevenue','closingdate','campaignstatus','expectedresponse','targetaudience','expectedcost');
  30  
  31      var $list_fields = Array(
  32                      'Campaign Name'=>Array('campaign'=>'campaignname'),
  33                      'Campaign Type'=>Array('campaign'=>'campaigntype'),
  34                      'Campaign Status'=>Array('campaign'=>'campaignstatus'),
  35                      'Expected Revenue'=>Array('campaign'=>'expectedrevenue'),
  36                      'Expected Close Date'=>Array('campaign'=>'closingdate'),
  37                      'Assigned To' => Array('crmentity'=>'smownerid')
  38                  );
  39  
  40      var $list_fields_name = Array(
  41                      'Campaign Name'=>'campaignname',
  42                      'Campaign Type'=>'campaigntype',
  43                      'Campaign Status'=>'campaignstatus',
  44                      'Expected Revenue'=>'expectedrevenue',
  45                      'Expected Close Date'=>'closingdate',
  46                      'Assigned To'=>'assigned_user_id'
  47                       );
  48  
  49      var $list_link_field= 'campaignname';
  50      //Added these variables which are used as default order by and sortorder in ListView
  51      var $default_order_by = 'crmid';
  52      var $default_sort_order = 'DESC';
  53  
  54      //var $groupTable = Array('vtiger_campaigngrouprelation','campaignid');
  55  
  56      var $search_fields = Array(
  57              'Campaign Name'=>Array('vtiger_campaign'=>'campaignname'),
  58              'Campaign Type'=>Array('vtiger_campaign'=>'campaigntype'),
  59              );
  60  
  61      var $search_fields_name = Array(
  62              'Campaign Name'=>'campaignname',
  63              'Campaign Type'=>'campaigntype',
  64              );
  65      // Used when enabling/disabling the mandatory fields for the module.
  66      // Refers to vtiger_field.fieldname values.
  67      var $mandatory_fields = Array('campaignname','createdtime' ,'modifiedtime','assigned_user_id');
  68  
  69      // For Alphabetical search
  70      var $def_basicsearch_col = 'campaignname';
  71  
  72  	function Campaigns()
  73      {
  74          $this->log =LoggerManager::getLogger('campaign');
  75          $this->db = PearDatabase::getInstance();
  76          $this->column_fields = getColumnFields('Campaigns');
  77      }
  78  
  79      /** Function to handle module specific operations when saving a entity
  80      */
  81  	function save_module($module)
  82      {
  83      }
  84  
  85      // Mike Crowe Mod --------------------------------------------------------Default ordering for us
  86      /**
  87       * Function to get Campaign related Accouts
  88       * @param  integer   $id      - campaignid
  89       * returns related Accounts record in array format
  90       */
  91  	function get_accounts($id, $cur_tab_id, $rel_tab_id, $actions = false) {
  92          global $log, $singlepane_view,$currentModule;
  93          $log->debug("Entering get_accounts(".$id.") method ...");
  94          $this_module = $currentModule;
  95  
  96          $related_module = vtlib_getModuleNameById($rel_tab_id);
  97          require_once("modules/$related_module/$related_module.php");
  98          $other = new $related_module();
  99  
 100          $is_CampaignStatusAllowed = false;
 101          global $current_user;
 102          if(getFieldVisibilityPermission('Accounts', $current_user->id, 'campaignrelstatus') == '0') {
 103              $other->list_fields['Status'] = array('vtiger_campaignrelstatus'=>'campaignrelstatus');
 104              $other->list_fields_name['Status'] = 'campaignrelstatus';
 105              $other->sortby_fields[] = 'campaignrelstatus';
 106              $is_CampaignStatusAllowed = (getFieldVisibilityPermission('Accounts', $current_user->id, 'campaignrelstatus','readwrite') == '0')? true : false;
 107          }
 108  
 109          vtlib_setup_modulevars($related_module, $other);
 110          $singular_modname = vtlib_toSingular($related_module);
 111  
 112          $parenttab = getParentTab();
 113  
 114          if($singlepane_view == 'true')
 115              $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
 116          else
 117              $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
 118  
 119          $button = '';
 120  
 121          // Send mail button for selected Accounts
 122          $button .= "<input title='".getTranslatedString('LBL_SEND_MAIL_BUTTON')."' class='crmbutton small edit' value='".getTranslatedString('LBL_SEND_MAIL_BUTTON')."' type='button' name='button' onclick='rel_eMail(\"$this_module\",this,\"$related_module\")'>";
 123          $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
 124          /* To get Accounts CustomView -START */
 125          require_once ('modules/CustomView/CustomView.php');
 126          $ahtml = "<select id='".$related_module."_cv_list' class='small'><option value='None'>-- ".getTranslatedString('Select One')." --</option>";
 127          $oCustomView = new CustomView($related_module);
 128          $viewid = $oCustomView->getViewId($related_module);
 129          $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid, false);
 130          $ahtml .= $customviewcombo_html;
 131          $ahtml .= "</select>";
 132          /* To get Accounts CustomView -END */
 133  
 134          $button .= $ahtml."<input title='".getTranslatedString('LBL_LOAD_LIST',$this_module)."' class='crmbutton small edit' value='".getTranslatedString('LBL_LOAD_LIST',$this_module)."' type='button' name='button' onclick='loadCvList(\"$related_module\",\"$id\")'>";
 135          $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
 136  
 137          if($actions)
 138          {
 139              if(is_string($actions))
 140                  $actions = explode(',', strtoupper($actions));
 141              if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes')
 142              {
 143                  $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;";
 144              }
 145              if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes')
 146              {
 147                  $button .= "<input type='hidden' name='createmode' id='createmode' value='link' />".
 148                      "<input title='".getTranslatedString('LBL_ADD_NEW'). " ". getTranslatedString($singular_modname) ."' class='crmbutton small create'" .
 149                      " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" .
 150                      " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString($singular_modname) ."'>&nbsp;";
 151              }
 152          }
 153  
 154          $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=>
 155                              'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users');
 156          $query = "SELECT vtiger_account.*,
 157                  CASE when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name,
 158                  vtiger_crmentity.*, vtiger_crmentity.modifiedtime, vtiger_campaignrelstatus.*, vtiger_accountbillads.*
 159                  FROM vtiger_account
 160                  INNER JOIN vtiger_campaignaccountrel ON vtiger_campaignaccountrel.accountid = vtiger_account.accountid
 161                  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_account.accountid
 162                  INNER JOIN vtiger_accountshipads ON vtiger_accountshipads.accountaddressid = vtiger_account.accountid
 163                  LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid
 164                  LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id
 165                  LEFT JOIN vtiger_accountbillads ON vtiger_accountbillads.accountaddressid = vtiger_account.accountid
 166                  LEFT JOIN vtiger_accountscf ON vtiger_account.accountid = vtiger_accountscf.accountid
 167                  LEFT JOIN vtiger_campaignrelstatus ON vtiger_campaignrelstatus.campaignrelstatusid = vtiger_campaignaccountrel.campaignrelstatusid
 168                  WHERE vtiger_campaignaccountrel.campaignid = ".$id." AND vtiger_crmentity.deleted=0";
 169  
 170          $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
 171  
 172          if($return_value == null)
 173              $return_value = Array();
 174          else if($is_CampaignStatusAllowed) {
 175              $statusPos = count($return_value['header']) - 2; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count.
 176              $return_value = $this->add_status_popup($return_value, $statusPos, 'Accounts');
 177          }
 178  
 179          $return_value['CUSTOM_BUTTON'] = $button;
 180  
 181          $log->debug("Exiting get_accounts method ...");
 182          return $return_value;
 183      }
 184  
 185      /**
 186       * Function to get Campaign related Contacts
 187       * @param  integer   $id      - campaignid
 188       * returns related Contacts record in array format
 189       */
 190  	function get_contacts($id, $cur_tab_id, $rel_tab_id, $actions=false) {
 191          global $log, $singlepane_view,$currentModule;
 192          $log->debug("Entering get_contacts(".$id.") method ...");
 193          $this_module = $currentModule;
 194  
 195          $related_module = vtlib_getModuleNameById($rel_tab_id);
 196          require_once("modules/$related_module/$related_module.php");
 197          $other = new $related_module();
 198  
 199          $is_CampaignStatusAllowed = false;
 200          global $current_user;
 201          if(getFieldVisibilityPermission('Contacts', $current_user->id, 'campaignrelstatus') == '0') {
 202              $other->list_fields['Status'] = array('vtiger_campaignrelstatus'=>'campaignrelstatus');
 203              $other->list_fields_name['Status'] = 'campaignrelstatus';
 204              $other->sortby_fields[] = 'campaignrelstatus';
 205              $is_CampaignStatusAllowed = (getFieldVisibilityPermission('Contacts', $current_user->id, 'campaignrelstatus','readwrite') == '0')? true : false;
 206          }
 207  
 208          vtlib_setup_modulevars($related_module, $other);
 209          $singular_modname = vtlib_toSingular($related_module);
 210  
 211          $parenttab = getParentTab();
 212  
 213          if($singlepane_view == 'true')
 214              $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
 215          else
 216              $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
 217  
 218          $button = '';
 219  
 220          // Send mail button for selected Leads
 221          $button .= "<input title='".getTranslatedString('LBL_SEND_MAIL_BUTTON')."' class='crmbutton small edit' value='".getTranslatedString('LBL_SEND_MAIL_BUTTON')."' type='button' name='button' onclick='rel_eMail(\"$this_module\",this,\"$related_module\")'>";
 222          $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
 223  
 224          /* To get Leads CustomView -START */
 225          require_once ('modules/CustomView/CustomView.php');
 226          $lhtml = "<select id='".$related_module."_cv_list' class='small'><option value='None'>-- ".getTranslatedString('Select One')." --</option>";
 227          $oCustomView = new CustomView($related_module);
 228          $viewid = $oCustomView->getViewId($related_module);
 229          $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid, false);
 230          $lhtml .= $customviewcombo_html;
 231          $lhtml .= "</select>";
 232          /* To get Leads CustomView -END */
 233  
 234          $button .= $lhtml."<input title='".getTranslatedString('LBL_LOAD_LIST',$this_module)."' class='crmbutton small edit' value='".getTranslatedString('LBL_LOAD_LIST',$this_module)."' type='button' name='button' onclick='loadCvList(\"$related_module\",\"$id\")'>";
 235          $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
 236  
 237          if($actions) {
 238              if(is_string($actions)) $actions = explode(',', strtoupper($actions));
 239              if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') {
 240                  $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;";
 241              }
 242              if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') {
 243                  $button .= "<input type='hidden' name='createmode' id='createmode' value='link' />".
 244                      "<input title='".getTranslatedString('LBL_ADD_NEW'). " ". getTranslatedString($singular_modname) ."' class='crmbutton small create'" .
 245                      " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" .
 246                      " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString($singular_modname) ."'>&nbsp;";
 247              }
 248          }
 249  
 250          $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=>
 251                              'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users');
 252          $query = "SELECT vtiger_contactdetails.accountid, vtiger_account.accountname,
 253                  CASE when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name ,
 254                  vtiger_contactdetails.contactid, vtiger_contactdetails.lastname, vtiger_contactdetails.firstname, vtiger_contactdetails.title,
 255                  vtiger_contactdetails.department, vtiger_contactdetails.email, vtiger_contactdetails.phone, vtiger_crmentity.crmid,
 256                  vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime, vtiger_campaignrelstatus.*
 257                  FROM vtiger_contactdetails
 258                  INNER JOIN vtiger_campaigncontrel ON vtiger_campaigncontrel.contactid = vtiger_contactdetails.contactid
 259                  INNER JOIN vtiger_contactaddress ON vtiger_contactdetails.contactid = vtiger_contactaddress.contactaddressid
 260                  INNER JOIN vtiger_contactsubdetails ON vtiger_contactdetails.contactid = vtiger_contactsubdetails.contactsubscriptionid
 261                  INNER JOIN vtiger_customerdetails ON vtiger_contactdetails.contactid = vtiger_customerdetails.customerid
 262                  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_contactdetails.contactid
 263                  LEFT JOIN vtiger_contactscf ON vtiger_contactdetails.contactid = vtiger_contactscf.contactid
 264                  LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid
 265                  LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id
 266                  LEFT JOIN vtiger_account ON vtiger_account.accountid = vtiger_contactdetails.accountid
 267                  LEFT JOIN vtiger_campaignrelstatus ON vtiger_campaignrelstatus.campaignrelstatusid = vtiger_campaigncontrel.campaignrelstatusid
 268                  WHERE vtiger_campaigncontrel.campaignid = ".$id." AND vtiger_crmentity.deleted=0";
 269  
 270          $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
 271  
 272          if($return_value == null)
 273              $return_value = Array();
 274          else if($is_CampaignStatusAllowed) {
 275              $statusPos = count($return_value['header']) - 2; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count.
 276              $return_value = $this->add_status_popup($return_value, $statusPos, 'Contacts');
 277          }
 278  
 279          $return_value['CUSTOM_BUTTON'] = $button;
 280  
 281          $log->debug("Exiting get_contacts method ...");
 282          return $return_value;
 283      }
 284  
 285      /**
 286       * Function to get Campaign related Leads
 287       * @param  integer   $id      - campaignid
 288       * returns related Leads record in array format
 289       */
 290  	function get_leads($id, $cur_tab_id, $rel_tab_id, $actions=false) {
 291          global $log, $singlepane_view, $currentModule;
 292          $log->debug("Entering get_leads(".$id.") method ...");
 293          $this_module = $currentModule;
 294  
 295          $related_module = vtlib_getModuleNameById($rel_tab_id);
 296          require_once("modules/$related_module/$related_module.php");
 297          $other = new $related_module();
 298  
 299          $is_CampaignStatusAllowed = false;
 300          global $current_user;
 301          if(getFieldVisibilityPermission('Leads', $current_user->id, 'campaignrelstatus') == '0') {
 302              $other->list_fields['Status'] = array('vtiger_campaignrelstatus'=>'campaignrelstatus');
 303              $other->list_fields_name['Status'] = 'campaignrelstatus';
 304              $other->sortby_fields[] = 'campaignrelstatus';
 305              $is_CampaignStatusAllowed  = (getFieldVisibilityPermission('Leads', $current_user->id, 'campaignrelstatus','readwrite') == '0')? true : false;
 306          }
 307  
 308          vtlib_setup_modulevars($related_module, $other);
 309          $singular_modname = vtlib_toSingular($related_module);
 310  
 311          $parenttab = getParentTab();
 312  
 313          if($singlepane_view == 'true')
 314              $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
 315          else
 316              $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
 317  
 318          $button = '';
 319  
 320          // Send mail button for selected Leads
 321          $button .= "<input title='".getTranslatedString('LBL_SEND_MAIL_BUTTON')."' class='crmbutton small edit' value='".getTranslatedString('LBL_SEND_MAIL_BUTTON')."' type='button' name='button' onclick='rel_eMail(\"$this_module\",this,\"$related_module\")'>";
 322          $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
 323  
 324          /* To get Leads CustomView -START */
 325          require_once ('modules/CustomView/CustomView.php');
 326          $lhtml = "<select id='".$related_module."_cv_list' class='small'><option value='None'>-- ".getTranslatedString('Select One')." --</option>";
 327          $oCustomView = new CustomView($related_module);
 328          $viewid = $oCustomView->getViewId($related_module);
 329          $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid, false);
 330          $lhtml .= $customviewcombo_html;
 331          $lhtml .= "</select>";
 332          /* To get Leads CustomView -END */
 333  
 334          $button .= $lhtml."<input title='".getTranslatedString('LBL_LOAD_LIST',$this_module)."' class='crmbutton small edit' value='".getTranslatedString('LBL_LOAD_LIST',$this_module)."' type='button' name='button' onclick='loadCvList(\"$related_module\",\"$id\")'>";
 335          $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
 336  
 337          if($actions) {
 338              if(is_string($actions)) $actions = explode(',', strtoupper($actions));
 339              if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') {
 340                  $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;";
 341              }
 342              if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') {
 343                  $button .= "<input type='hidden' name='createmode' id='createmode' value='link' />".
 344                      "<input title='".getTranslatedString('LBL_ADD_NEW'). " ". getTranslatedString($singular_modname) ."' class='crmbutton small create'" .
 345                      " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" .
 346                      " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString($singular_modname) ."'>&nbsp;";
 347              }
 348          }
 349  
 350          $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=>
 351                              'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users');
 352          $query = "SELECT vtiger_leaddetails.*, vtiger_crmentity.crmid,vtiger_leadaddress.phone,vtiger_leadsubdetails.website,
 353                  CASE when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name,
 354                  vtiger_crmentity.smownerid, vtiger_campaignrelstatus.*
 355                  FROM vtiger_leaddetails
 356                  INNER JOIN vtiger_campaignleadrel ON vtiger_campaignleadrel.leadid=vtiger_leaddetails.leadid
 357                  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid
 358                  INNER JOIN vtiger_leadsubdetails  ON vtiger_leadsubdetails.leadsubscriptionid = vtiger_leaddetails.leadid
 359                  INNER JOIN vtiger_leadaddress ON vtiger_leadaddress.leadaddressid = vtiger_leadsubdetails.leadsubscriptionid
 360                  INNER JOIN vtiger_leadscf ON vtiger_leaddetails.leadid = vtiger_leadscf.leadid
 361                  LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id
 362                  LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid
 363                  LEFT JOIN vtiger_campaignrelstatus ON vtiger_campaignrelstatus.campaignrelstatusid = vtiger_campaignleadrel.campaignrelstatusid
 364                  WHERE vtiger_crmentity.deleted=0 AND vtiger_campaignleadrel.campaignid = ".$id;
 365  
 366          $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
 367  
 368          if($return_value == null)
 369              $return_value = Array();
 370          else if($is_CampaignStatusAllowed) {
 371              $statusPos = count($return_value['header']) - 2; // Last column is for Actions, exclude that. Also the index starts from 0, so reduce one more count.
 372              $return_value = $this->add_status_popup($return_value, $statusPos, 'Leads');
 373          }
 374  
 375          $return_value['CUSTOM_BUTTON'] = $button;
 376  
 377          $log->debug("Exiting get_leads method ...");
 378          return $return_value;
 379      }
 380  
 381      /**
 382       * Function to get Campaign related Potentials
 383       * @param  integer   $id      - campaignid
 384       * returns related potentials record in array format
 385       */
 386  	function get_opportunities($id, $cur_tab_id, $rel_tab_id, $actions=false) {
 387          global $log, $singlepane_view,$currentModule,$current_user;
 388          $log->debug("Entering get_opportunities(".$id.") method ...");
 389          $this_module = $currentModule;
 390  
 391          $related_module = vtlib_getModuleNameById($rel_tab_id);
 392          require_once("modules/$related_module/$related_module.php");
 393          $other = new $related_module();
 394          vtlib_setup_modulevars($related_module, $other);
 395          $singular_modname = vtlib_toSingular($related_module);
 396  
 397          $parenttab = getParentTab();
 398  
 399          if($singlepane_view == 'true')
 400              $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
 401          else
 402              $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
 403  
 404          $button = '';
 405  
 406          if($actions && getFieldVisibilityPermission($related_module,$current_user->id,'campaignid', 'readwrite') == '0') {
 407              if(is_string($actions)) $actions = explode(',', strtoupper($actions));
 408              if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') {
 409                  $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;";
 410              }
 411              if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') {
 412                  $button .= "<input title='".getTranslatedString('LBL_ADD_NEW'). " ". getTranslatedString($singular_modname) ."' class='crmbutton small create'" .
 413                      " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" .
 414                      " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString($singular_modname) ."'>&nbsp;";
 415              }
 416          }
 417  
 418          $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=>
 419                              'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users');
 420          $query = "SELECT CASE when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name,
 421                      vtiger_potential.related_to, vtiger_potential.contact_id, vtiger_account.accountname, vtiger_potential.potentialid, vtiger_potential.potentialname,
 422                      vtiger_potential.potentialtype, vtiger_potential.sales_stage, vtiger_potential.amount, vtiger_potential.closingdate,
 423                      vtiger_crmentity.crmid, vtiger_crmentity.smownerid FROM vtiger_campaign
 424                      INNER JOIN vtiger_potential ON vtiger_campaign.campaignid = vtiger_potential.campaignid
 425                      INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_potential.potentialid
 426                      INNER JOIN vtiger_potentialscf ON vtiger_potential.potentialid = vtiger_potentialscf.potentialid
 427                      LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid
 428                      LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid
 429                      LEFT JOIN vtiger_account ON vtiger_account.accountid = vtiger_potential.related_to
 430                      LEFT JOIN vtiger_contactdetails ON vtiger_contactdetails.contactid = vtiger_potential.contact_id
 431                      WHERE vtiger_campaign.campaignid = ".$id." AND vtiger_crmentity.deleted=0";
 432  
 433          $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
 434  
 435          if($return_value == null) $return_value = Array();
 436          $return_value['CUSTOM_BUTTON'] = $button;
 437  
 438          $log->debug("Exiting get_opportunities method ...");
 439          return $return_value;
 440      }
 441  
 442      /**
 443       * Function to get Campaign related Activities
 444       * @param  integer   $id      - campaignid
 445       * returns related activities record in array format
 446       */
 447  	function get_activities($id, $cur_tab_id, $rel_tab_id, $actions=false) {
 448          global $log, $singlepane_view,$currentModule,$current_user;
 449          $log->debug("Entering get_activities(".$id.") method ...");
 450          $this_module = $currentModule;
 451  
 452          $related_module = vtlib_getModuleNameById($rel_tab_id);
 453          require_once("modules/$related_module/Activity.php");
 454          $other = new Activity();
 455          vtlib_setup_modulevars($related_module, $other);
 456          $singular_modname = vtlib_toSingular($related_module);
 457  
 458          $parenttab = getParentTab();
 459  
 460          if($singlepane_view == 'true')
 461              $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
 462          else
 463              $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
 464  
 465          $button = '';
 466  
 467          $button .= '<input type="hidden" name="activity_mode">';
 468  
 469          if($actions) {
 470              if(is_string($actions)) $actions = explode(',', strtoupper($actions));
 471              if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') {
 472                  if(getFieldVisibilityPermission('Calendar',$current_user->id,'parent_id', 'readwrite') == '0') {
 473                      $button .= "<input title='".getTranslatedString('LBL_NEW'). " ". getTranslatedString('LBL_TODO', $related_module) ."' class='crmbutton small create'" .
 474                          " 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'" .
 475                          " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString('LBL_TODO', $related_module) ."'>&nbsp;";
 476                  }
 477                  if(getFieldVisibilityPermission('Events',$current_user->id,'parent_id', 'readwrite') == '0') {
 478                      $button .= "<input title='".getTranslatedString('LBL_NEW'). " ". getTranslatedString('LBL_TODO', $related_module) ."' class='crmbutton small create'" .
 479                          " 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'" .
 480                          " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString('LBL_EVENT', $related_module) ."'>";
 481                  }
 482              }
 483          }
 484  
 485          $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=>
 486                              'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users');
 487          $query = "SELECT vtiger_contactdetails.lastname,
 488              vtiger_contactdetails.firstname,
 489              vtiger_contactdetails.contactid,
 490              vtiger_activity.*,
 491              vtiger_seactivityrel.crmid as parent_id,
 492              vtiger_crmentity.crmid, vtiger_crmentity.smownerid,
 493              vtiger_crmentity.modifiedtime,
 494              CASE when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name,
 495              vtiger_recurringevents.recurringtype,
 496              CASE WHEN (vtiger_activity.activitytype = 'Task') THEN vtiger_activity.status ELSE vtiger_activity.eventstatus END AS status
 497              FROM vtiger_activity
 498              INNER JOIN vtiger_seactivityrel
 499                  ON vtiger_seactivityrel.activityid = vtiger_activity.activityid
 500              INNER JOIN vtiger_crmentity
 501                  ON vtiger_crmentity.crmid=vtiger_activity.activityid
 502              LEFT JOIN vtiger_cntactivityrel
 503                  ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid
 504              LEFT JOIN vtiger_contactdetails
 505                  ON vtiger_contactdetails.contactid = vtiger_cntactivityrel.contactid
 506              LEFT JOIN vtiger_users
 507                  ON vtiger_users.id = vtiger_crmentity.smownerid
 508              LEFT OUTER JOIN vtiger_recurringevents
 509                  ON vtiger_recurringevents.activityid = vtiger_activity.activityid
 510              LEFT JOIN vtiger_groups
 511                  ON vtiger_groups.groupid = vtiger_crmentity.smownerid
 512              WHERE vtiger_seactivityrel.crmid=".$id."
 513              AND vtiger_crmentity.deleted = 0
 514              AND (activitytype = 'Task'
 515                  OR activitytype !='Emails')";
 516  
 517          $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
 518  
 519          if($return_value == null) $return_value = Array();
 520          $return_value['CUSTOM_BUTTON'] = $button;
 521  
 522          $log->debug("Exiting get_activities method ...");
 523          return $return_value;
 524  
 525      }
 526      /*
 527       * Function populate the status columns' HTML
 528       * @param - $related_list return value from GetRelatedList
 529       * @param - $status_column index of the status column in the list.
 530       * returns true on success
 531       */
 532  	function add_status_popup($related_list, $status_column = 7, $related_module)
 533      {
 534          global $adb;
 535  
 536          if(!$this->campaignrelstatus)
 537          {
 538              $result = $adb->query('SELECT * FROM vtiger_campaignrelstatus;');
 539              while($row = $adb->fetchByAssoc($result))
 540              {
 541                  $this->campaignrelstatus[$row['campaignrelstatus']] = $row;
 542              }
 543          }
 544          foreach($related_list['entries'] as $key => &$entry)
 545          {
 546              $popupitemshtml = '';
 547              foreach($this->campaignrelstatus as $campaingrelstatus)
 548              {
 549                  $camprelstatus = getTranslatedString($campaingrelstatus[campaignrelstatus],'Campaigns');
 550                  $popupitemshtml .= "<a onmouseover=\"javascript: showBlock('campaignstatus_popup_$key')\" href=\"javascript:updateCampaignRelationStatus('$related_module', '".$this->id."', '$key', '$campaingrelstatus[campaignrelstatusid]', '".addslashes($camprelstatus)."');\">$camprelstatus</a><br />";
 551              }
 552              $popuphtml = '<div onmouseover="javascript:clearTimeout(statusPopupTimer);" onmouseout="javascript:closeStatusPopup(\'campaignstatus_popup_'.$key.'\');" style="margin-top: -14px; width: 200px;" id="campaignstatus_popup_'.$key.'" class="calAction"><div style="background-color: #FFFFFF; padding: 8px;">'.$popupitemshtml.'</div></div>';
 553  
 554              $entry[$status_column] = "<a href=\"javascript: showBlock('campaignstatus_popup_$key');\">[+]</a> <span id='campaignstatus_$key'>".$entry[$status_column]."</span>".$popuphtml;
 555          }
 556  
 557          return $related_list;
 558      }
 559  
 560      /*
 561       * Function to get the secondary query part of a report
 562       * @param - $module primary module name
 563       * @param - $secmodule secondary module name
 564       * returns the query string formed on fetching the related data for report for secondary module
 565       */
 566  	function generateReportsSecQuery($module,$secmodule,$queryplanner){
 567          $matrix = $queryplanner->newDependencyMatrix();
 568          $matrix->setDependency('vtiger_crmentityCampaigns',array('vtiger_groupsCampaigns','vtiger_usersCampaignss','vtiger_lastModifiedByCampaigns','vtiger_campaignscf'));
 569          $matrix->setDependency('vtiger_campaign', array('vtiger_crmentityCampaigns','vtiger_productsCampaigns'));
 570  
 571          if (!$queryplanner->requireTable("vtiger_campaign",$matrix)){
 572              return '';
 573          }
 574  
 575          $query = $this->getRelationQuery($module,$secmodule,"vtiger_campaign","campaignid", $queryplanner);
 576  
 577          if ($queryplanner->requireTable("vtiger_crmentityCampaigns",$matrix)){
 578              $query .=" left join vtiger_crmentity as vtiger_crmentityCampaigns on vtiger_crmentityCampaigns.crmid=vtiger_campaign.campaignid and vtiger_crmentityCampaigns.deleted=0";
 579          }
 580          if ($queryplanner->requireTable("vtiger_productsCampaigns")){
 581              $query .="     left join vtiger_products as vtiger_productsCampaigns on vtiger_campaign.product_id = vtiger_productsCampaigns.productid";
 582          }
 583          if ($queryplanner->requireTable("vtiger_campaignscf")){
 584              $query .="     left join vtiger_campaignscf on vtiger_campaignscf.campaignid = vtiger_crmentityCampaigns.crmid";
 585          }
 586          if ($queryplanner->requireTable("vtiger_groupsCampaigns")){
 587              $query .=" left join vtiger_groups as vtiger_groupsCampaigns on vtiger_groupsCampaigns.groupid = vtiger_crmentityCampaigns.smownerid";
 588          }
 589          if ($queryplanner->requireTable("vtiger_usersCampaigns")){
 590              $query .=" left join vtiger_users as vtiger_usersCampaigns on vtiger_usersCampaigns.id = vtiger_crmentityCampaigns.smownerid";
 591          }
 592          if ($queryplanner->requireTable("vtiger_lastModifiedByCampaigns")){
 593              $query .=" left join vtiger_users as vtiger_lastModifiedByCampaigns on vtiger_lastModifiedByCampaigns.id = vtiger_crmentityCampaigns.modifiedby ";
 594          }
 595          if ($queryplanner->requireTable("vtiger_createdbyCampaigns")){
 596              $query .= " left join vtiger_users as vtiger_createdbyCampaigns on vtiger_createdbyCampaigns.id = vtiger_crmentityCampaigns.smcreatorid ";
 597          }
 598          return $query;
 599      }
 600  
 601      /*
 602       * Function to get the relation tables for related modules
 603       * @param - $secmodule secondary module name
 604       * returns the array with table names and fieldnames storing relations between module and this module
 605       */
 606  	function setRelationTables($secmodule){
 607          $rel_tables = array (
 608              "Contacts" => array("vtiger_campaigncontrel"=>array("campaignid","contactid"),"vtiger_campaign"=>"campaignid"),
 609              "Leads" => array("vtiger_campaignleadrel"=>array("campaignid","leadid"),"vtiger_campaign"=>"campaignid"),
 610              "Accounts" => array("vtiger_campaignaccountrel"=>array("campaignid","accountid"),"vtiger_campaign"=>"campaignid"),
 611              "Potentials" => array("vtiger_potential"=>array("campaignid","potentialid"),"vtiger_campaign"=>"campaignid"),
 612              "Calendar" => array("vtiger_seactivityrel"=>array("crmid","activityid"),"vtiger_campaign"=>"campaignid"),
 613              "Products" => array("vtiger_campaign"=>array("campaignid","product_id")),
 614          );
 615          return $rel_tables[$secmodule];
 616      }
 617  
 618      // Function to unlink an entity with given Id from another entity
 619  	function unlinkRelationship($id, $return_module, $return_id) {
 620          global $log;
 621          if(empty($return_module) || empty($return_id)) return;
 622  
 623          if($return_module == 'Leads') {
 624              $sql = 'DELETE FROM vtiger_campaignleadrel WHERE campaignid=? AND leadid=?';
 625              $this->db->pquery($sql, array($id, $return_id));
 626          } elseif($return_module == 'Contacts') {
 627              $sql = 'DELETE FROM vtiger_campaigncontrel WHERE campaignid=? AND contactid=?';
 628              $this->db->pquery($sql, array($id, $return_id));
 629          } elseif($return_module == 'Accounts') {
 630              $sql = 'DELETE FROM vtiger_campaignaccountrel WHERE campaignid=? AND accountid=?';
 631              $this->db->pquery($sql, array($id, $return_id));
 632              $sql = 'DELETE FROM vtiger_campaigncontrel WHERE campaignid=? AND contactid IN (SELECT contactid FROM vtiger_contactdetails WHERE accountid=?)';
 633              $this->db->pquery($sql, array($id, $return_id));
 634          } else {
 635              $sql = 'DELETE FROM vtiger_crmentityrel WHERE (crmid=? AND relmodule=? AND relcrmid=?) OR (relcrmid=? AND module=? AND crmid=?)';
 636              $params = array($id, $return_module, $return_id, $id, $return_module, $return_id);
 637              $this->db->pquery($sql, $params);
 638          }
 639      }
 640  
 641  	function save_related_module($module, $crmid, $with_module, $with_crmids) {
 642          $adb = PearDatabase::getInstance();
 643  
 644          if(!is_array($with_crmids)) $with_crmids = Array($with_crmids);
 645          foreach($with_crmids as $with_crmid) {
 646              if ($with_module == 'Leads') {
 647                  $checkResult = $adb->pquery('SELECT 1 FROM vtiger_campaignleadrel WHERE campaignid = ? AND leadid = ?',
 648                                                  array($crmid, $with_crmid));
 649                  if($checkResult && $adb->num_rows($checkResult) > 0) {
 650                      continue;
 651                  }
 652                  $sql = 'INSERT INTO vtiger_campaignleadrel VALUES(?,?,1)';
 653                  $adb->pquery($sql, array($crmid, $with_crmid));
 654  
 655              } elseif($with_module == 'Contacts') {
 656                  $checkResult = $adb->pquery('SELECT 1 FROM vtiger_campaigncontrel WHERE campaignid = ? AND contactid = ?',
 657                                                  array($crmid, $with_crmid));
 658                  if($checkResult && $adb->num_rows($checkResult) > 0) {
 659                      continue;
 660                  }
 661                  $sql = 'INSERT INTO vtiger_campaigncontrel VALUES(?,?,1)';
 662                  $adb->pquery($sql, array($crmid, $with_crmid));
 663  
 664              } elseif($with_module == 'Accounts') {
 665                  $checkResult = $adb->pquery('SELECT 1 FROM vtiger_campaignaccountrel WHERE campaignid = ? AND accountid = ?',
 666                                                  array($crmid, $with_crmid));
 667                  if($checkResult && $adb->num_rows($checkResult) > 0) {
 668                      continue;
 669                  }
 670                  $sql = 'INSERT INTO vtiger_campaignaccountrel VALUES(?,?,1)';
 671                  $adb->pquery($sql, array($crmid, $with_crmid));
 672  
 673              } else {
 674                  parent::save_related_module($module, $crmid, $with_module, $with_crmid);
 675              }
 676          }
 677      }
 678  
 679  }
 680  ?>


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