root/vtigercrm/branches/5.1/modules/Campaigns/Campaigns.php

Revision 12877, 23.1 kB (checked in by asha, 1 year ago)

Following changes added: (Prasad/Mak/Asha/Sandeep)
===================================================

1. EOL Cleanup
2. License cleanup
3. 510 to 510RC version changes
4. Webservice version change from 0.1 to 0.2
5. Installation/Migration changes
6. Performance Changes :

(i) Configuration file for performance added.
(ii) VTCacheUtils.php file added.
(iii) Logging Optimization.
(iv) Export/Import Optimization.
(v) Reports Optimization.
(vi) ListView? Optimization.
(vii) DetailView? Optimization.
(viii) Save Optimization.
(ix) HomePage? Components Optimization.
(x) Webservice Optimization.
(xi) Index Optimization.
(xii) Smarty Optimization.
(xiii) Global Search Optimization.
(xiv) Webmail Optimization.
(xv) Customerportal Optimization.

Line 
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 include_once('config.php');
16 require_once('include/logging.php');
17 require_once('data/SugarBean.php');
18 require_once('include/utils/utils.php');
19 require_once('modules/Contacts/Contacts.php');
20 require_once('modules/Leads/Leads.php');
21 require_once('user_privileges/default_module_view.php');
22
23 class Campaigns extends CRMEntity {
24     var $log;
25     var $db;
26     var $table_name = "vtiger_campaign";
27     var $table_index= 'campaignid';
28
29     var $tab_name = Array('vtiger_crmentity','vtiger_campaign','vtiger_campaignscf');
30     var $tab_name_index = Array('vtiger_crmentity'=>'crmid','vtiger_campaign'=>'campaignid','vtiger_campaignscf'=>'campaignid');
31     /**
32      * Mandatory table for supporting custom fields.
33      */
34     var $customFieldTable = Array('vtiger_campaignscf', 'campaignid');
35     var $column_fields = Array();
36
37     var $sortby_fields = Array('campaignname','smownerid','campaigntype','productname','expectedrevenue','closingdate','campaignstatus','expectedresponse','targetaudience','expectedcost');
38
39     var $list_fields = Array(
40                     'Campaign Name'=>Array('campaign'=>'campaignname'),
41                     'Campaign Type'=>Array('campaign'=>'campaigntype'),
42                     'Campaign Status'=>Array('campaign'=>'campaignstatus'),
43                     'Expected Revenue'=>Array('campaign'=>'expectedrevenue'),
44                     'Expected Close Date'=>Array('campaign'=>'closingdate'),
45                     'Assigned To' => Array('crmentity'=>'smownerid')
46                 );
47
48     var $list_fields_name = Array(
49                     'Campaign Name'=>'campaignname',
50                     'Campaign Type'=>'campaigntype',
51                     'Campaign Status'=>'campaignstatus',
52                     'Expected Revenue'=>'expectedrevenue',
53                     'Expected Close Date'=>'closingdate',
54                     'Assigned To'=>'assigned_user_id'
55                      );                 
56
57     var $list_link_field= 'campaignname';
58     //Added these variables which are used as default order by and sortorder in ListView
59     var $default_order_by = 'crmid';
60     var $default_sort_order = 'DESC';
61
62     //var $groupTable = Array('vtiger_campaigngrouprelation','campaignid');
63
64     var $search_fields = Array(
65             'Campaign Name'=>Array('vtiger_campaign'=>'campaignname'),
66             'Campaign Type'=>Array('vtiger_campaign'=>'campaigntype'),
67             );
68
69     var $search_fields_name = Array(
70             'Campaign Name'=>'campaignname',
71             'Campaign Type'=>'campaigntype',
72             );
73     // Used when enabling/disabling the mandatory fields for the module.
74     // Refers to vtiger_field.fieldname values.
75     var $mandatory_fields = Array('campaignname','createdtime' ,'modifiedtime','assigned_user_id');
76     
77     function Campaigns()
78     {
79         $this->log =LoggerManager::getLogger('campaign');
80         $this->db = PearDatabase::getInstance();
81         $this->column_fields = getColumnFields('Campaigns');
82     }
83
84     /** Function to handle module specific operations when saving a entity
85     */
86     function save_module($module)
87     {
88     }
89
90     // Mike Crowe Mod --------------------------------------------------------Default ordering for us
91     /**
92      * Function to get sort order
93      * return string  $sorder    - sortorder string either 'ASC' or 'DESC'
94      */
95     function getSortOrder()
96     {
97         global $log;
98         $log->debug("Entering getSortOrder() method ...");
99         if(isset($_REQUEST['sorder']))
100             $sorder = $this->db->sql_escape_string($_REQUEST['sorder']);
101         else
102             $sorder = (($_SESSION['CAMPAIGN_SORT_ORDER'] != '')?($_SESSION['CAMPAIGN_SORT_ORDER']):($this->default_sort_order));
103
104         $log->debug("Exiting getSortOrder method ...");
105         return $sorder;
106     }
107
108     /**
109      * Function to get order by
110      * return string  $order_by    - fieldname(eg: 'campaignname')
111      */
112     function getOrderBy()
113     {
114         global $log;
115         $log->debug("Entering getOrderBy() method ...");
116         
117         $use_default_order_by = '';       
118         if(PerformancePrefs::getBoolean('LISTVIEW_DEFAULT_SORTING', true)) {
119             $use_default_order_by = $this->default_order_by;
120         }
121         
122         if (isset($_REQUEST['order_by']))
123             $order_by = $this->db->sql_escape_string($_REQUEST['order_by']);
124         else
125             $order_by = (($_SESSION['CAMPAIGN_ORDER_BY'] != '')?($_SESSION['CAMPAIGN_ORDER_BY']):($use_default_order_by));
126
127         $log->debug("Exiting getOrderBy method ...");
128         return $order_by;
129     }
130     // Mike Crowe Mod --------------------------------------------------------
131
132     /**
133      * Function to get Campaign related Contacts
134      * @param  integer   $id      - campaignid
135      * returns related Contacts record in array format
136      */
137     function get_contacts($id, $cur_tab_id, $rel_tab_id, $actions=false) {
138         global $log, $singlepane_view,$currentModule;
139         $log->debug("Entering get_contacts(".$id.") method ...");
140         $this_module = $currentModule;
141
142         $related_module = vtlib_getModuleNameById($rel_tab_id);
143         require_once("modules/$related_module/$related_module.php");
144         $other = new $related_module();
145         vtlib_setup_modulevars($related_module, $other);       
146         $singular_modname = vtlib_toSingular($related_module);
147         
148         $parenttab = getParentTab();
149         
150         if($singlepane_view == 'true')
151             $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
152         else
153             $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
154         
155         $button = '';
156         
157         // Send mail button for selected Leads
158         $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\")'>";
159         $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
160         
161         /* To get Leads CustomView -START */
162         require_once('modules/CustomView/CustomView.php');
163         $lhtml = "<select id='cont_cv_list' class='small'><option value='None'>-- ".getTranslatedString('Select One')." --</option>";
164         $oCustomView = new CustomView($related_module);
165         $viewid = $oCustomView->getViewId($related_module);
166         $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid, false);
167         $lhtml .= $customviewcombo_html;
168         $lhtml .= "</select>";
169         /* To get Leads CustomView -END */
170         
171         $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\")'>";
172         $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
173         
174         if($actions) {
175             if(is_string($actions)) $actions = explode(',', strtoupper($actions));
176             if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') {
177                 $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;";
178             }
179             if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') {
180                 $button .= "<input title='".getTranslatedString('LBL_ADD_NEW'). " ". getTranslatedString($singular_modname) ."' class='crmbutton small create'" .
181                     " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" .
182                     " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString($singular_modname) ."'>&nbsp;";
183             }
184         }
185
186         $query = "SELECT vtiger_contactdetails.accountid, vtiger_account.accountname,
187                     CASE when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name ,
188                     vtiger_contactdetails.contactid, vtiger_contactdetails.lastname, vtiger_contactdetails.firstname, vtiger_contactdetails.title,
189                     vtiger_contactdetails.department, vtiger_contactdetails.email, vtiger_contactdetails.phone, vtiger_crmentity.crmid,
190                     vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime
191                     FROM vtiger_contactdetails
192                     INNER JOIN vtiger_campaigncontrel ON vtiger_campaigncontrel.contactid = vtiger_contactdetails.contactid
193                     INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_contactdetails.contactid 
194                     LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid
195                     LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id
196                     LEFT JOIN vtiger_account ON vtiger_account.accountid = vtiger_contactdetails.accountid
197                     WHERE vtiger_campaigncontrel.campaignid = ".$id." AND vtiger_crmentity.deleted=0";
198                     
199         $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
200         
201         if($return_value == null) $return_value = Array();
202         $return_value['CUSTOM_BUTTON'] = $button;
203         
204         $log->debug("Exiting get_contacts method ...");       
205         return $return_value;
206     }
207
208     /**
209      * Function to get Campaign related Leads
210      * @param  integer   $id      - campaignid
211      * returns related Leads record in array format
212      */
213     function get_leads($id, $cur_tab_id, $rel_tab_id, $actions=false) {
214         global $log, $singlepane_view, $currentModule;
215         $log->debug("Entering get_leads(".$id.") method ...");
216         $this_module = $currentModule;
217
218         $related_module = vtlib_getModuleNameById($rel_tab_id);
219         require_once("modules/$related_module/$related_module.php");
220         $other = new $related_module();
221         vtlib_setup_modulevars($related_module, $other);       
222         $singular_modname = vtlib_toSingular($related_module);
223         
224         $parenttab = getParentTab();
225         
226         if($singlepane_view == 'true')
227             $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
228         else
229             $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
230         
231         $button = '';
232         
233         // Send mail button for selected Leads
234         $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\")'>";
235         $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
236         
237         /* To get Leads CustomView -START */
238         require_once('modules/CustomView/CustomView.php');
239         $lhtml = "<select id='lead_cv_list' class='small'><option value='None'>-- ".getTranslatedString('Select One')." --</option>";
240         $oCustomView = new CustomView($related_module);
241         $viewid = $oCustomView->getViewId($related_module);
242         $customviewcombo_html = $oCustomView->getCustomViewCombo($viewid, false);
243         $lhtml .= $customviewcombo_html;
244         $lhtml .= "</select>";
245         /* To get Leads CustomView -END */
246         
247         $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\")'>";
248         $button .= '&nbsp;&nbsp;&nbsp;&nbsp';
249         
250         if($actions) {
251             if(is_string($actions)) $actions = explode(',', strtoupper($actions));
252             if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') {
253                 $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;";
254             }
255             if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') {
256                 $button .= "<input title='".getTranslatedString('LBL_ADD_NEW'). " ". getTranslatedString($singular_modname) ."' class='crmbutton small create'" .
257                     " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" .
258                     " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString($singular_modname) ."'>&nbsp;";
259             }
260         }
261
262         $query = "SELECT vtiger_leaddetails.*, vtiger_crmentity.crmid,vtiger_leadaddress.phone,vtiger_leadsubdetails.website,
263                     CASE when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name,
264                     vtiger_crmentity.smownerid FROM vtiger_leaddetails     
265                     INNER JOIN vtiger_campaignleadrel ON vtiger_campaignleadrel.leadid=vtiger_leaddetails.leadid
266                     INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid
267                     INNER JOIN vtiger_leadsubdetails  ON vtiger_leadsubdetails.leadsubscriptionid = vtiger_leaddetails.leadid             
268                     INNER JOIN vtiger_leadaddress ON vtiger_leadaddress.leadaddressid = vtiger_leadsubdetails.leadsubscriptionid
269                     LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id
270                     LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid
271                     WHERE vtiger_crmentity.deleted=0 AND vtiger_campaignleadrel.campaignid = ".$id;
272                     
273         $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
274         
275         if($return_value == null) $return_value = Array();
276         $return_value['CUSTOM_BUTTON'] = $button;
277         
278         $log->debug("Exiting get_leads method ...");       
279         return $return_value;
280     }
281
282     /**
283      * Function to get Campaign related Potentials
284      * @param  integer   $id      - campaignid
285      * returns related potentials record in array format
286      */
287     function get_opportunities($id, $cur_tab_id, $rel_tab_id, $actions=false) {
288         global $log, $singlepane_view,$currentModule,$current_user;
289         $log->debug("Entering get_opportunities(".$id.") method ...");
290         $this_module = $currentModule;
291
292         $related_module = vtlib_getModuleNameById($rel_tab_id);
293         require_once("modules/$related_module/$related_module.php");
294         $other = new $related_module();
295         vtlib_setup_modulevars($related_module, $other);       
296         $singular_modname = vtlib_toSingular($related_module);
297         
298         $parenttab = getParentTab();
299         
300         if($singlepane_view == 'true')
301             $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
302         else
303             $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
304         
305         $button = '';
306                 
307         if($actions && getFieldVisibilityPermission($related_module,$current_user->id,'campaignid') == '0') {
308             if(is_string($actions)) $actions = explode(',', strtoupper($actions));
309             if(in_array('SELECT', $actions) && isPermitted($related_module,4, '') == 'yes') {
310                 $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;";
311             }
312             if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') {
313                 $button .= "<input title='".getTranslatedString('LBL_ADD_NEW'). " ". getTranslatedString($singular_modname) ."' class='crmbutton small create'" .
314                     " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" .
315                     " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString($singular_modname) ."'>&nbsp;";
316             }
317         }
318
319         $query = "SELECT CASE when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name,
320                     vtiger_potential.related_to, vtiger_account.accountname, vtiger_potential.potentialid, vtiger_potential.potentialname, 
321                     vtiger_potential.potentialtype, vtiger_potential.sales_stage, vtiger_potential.amount, vtiger_potential.closingdate, 
322                     vtiger_crmentity.crmid, vtiger_crmentity.smownerid FROM vtiger_campaign 
323                     INNER JOIN vtiger_potential ON vtiger_campaign.campaignid = vtiger_potential.campaignid 
324                     INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_potential.potentialid
325                     LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid
326                     LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid
327                     LEFT JOIN vtiger_account ON vtiger_account.accountid = vtiger_potential.related_to
328                     WHERE vtiger_campaign.campaignid = ".$id." AND vtiger_crmentity.deleted=0";
329                     
330         $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
331         
332         if($return_value == null) $return_value = Array();
333         $return_value['CUSTOM_BUTTON'] = $button;
334         
335         $log->debug("Exiting get_opportunities method ...");       
336         return $return_value;
337     }
338
339     /**
340      * Function to get Campaign related Activities
341      * @param  integer   $id      - campaignid
342      * returns related activities record in array format
343      */
344     function get_activities($id, $cur_tab_id, $rel_tab_id, $actions=false) {
345         global $log, $singlepane_view,$currentModule,$current_user;
346         $log->debug("Entering get_activities(".$id.") method ...");
347         $this_module = $currentModule;
348
349         $related_module = vtlib_getModuleNameById($rel_tab_id);
350         require_once("modules/$related_module/Activity.php");
351         $other = new Activity();
352         vtlib_setup_modulevars($related_module, $other);       
353         $singular_modname = vtlib_toSingular($related_module);
354         
355         $parenttab = getParentTab();
356         
357         if($singlepane_view == 'true')
358             $returnset = '&return_module='.$this_module.'&return_action=DetailView&return_id='.$id;
359         else
360             $returnset = '&return_module='.$this_module.'&return_action=CallRelatedList&return_id='.$id;
361         
362         $button = '';
363                 
364         $button .= '<input type="hidden" name="activity_mode">';
365                 
366         if($actions) {
367             if(is_string($actions)) $actions = explode(',', strtoupper($actions));
368             if(in_array('ADD', $actions) && isPermitted($related_module,1, '') == 'yes') {
369                 $button .= "<input title='".getTranslatedString('LBL_NEW'). " ". getTranslatedString('LBL_TODO', $related_module) ."' class='crmbutton small create'" .
370                     " 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'" .
371                     " value='". getTranslatedString('LBL_ADD_NEW'). " " . getTranslatedString('LBL_TODO', $related_module) ."'>&nbsp;";
372             }
373         }
374
375         $query = "SELECT vtiger_contactdetails.lastname,
376             vtiger_contactdetails.firstname,
377             vtiger_contactdetails.contactid,
378             vtiger_activity.*,
379             vtiger_seactivityrel.*,
380             vtiger_crmentity.crmid, vtiger_crmentity.smownerid,
381             vtiger_crmentity.modifiedtime,
382             CASE when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name,
383             vtiger_recurringevents.recurringtype
384             FROM vtiger_activity
385             INNER JOIN vtiger_seactivityrel
386                 ON vtiger_seactivityrel.activityid = vtiger_activity.activityid
387             INNER JOIN vtiger_crmentity
388                 ON vtiger_crmentity.crmid=vtiger_activity.activityid
389             LEFT JOIN vtiger_cntactivityrel
390                 ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid
391             LEFT JOIN vtiger_contactdetails
392                 ON vtiger_contactdetails.contactid = vtiger_cntactivityrel.contactid
393             LEFT JOIN vtiger_users
394                 ON vtiger_users.id = vtiger_crmentity.smownerid
395             LEFT OUTER JOIN vtiger_recurringevents
396                 ON vtiger_recurringevents.activityid = vtiger_activity.activityid
397             LEFT JOIN vtiger_groups
398                 ON vtiger_groups.groupid = vtiger_crmentity.smownerid
399             WHERE vtiger_seactivityrel.crmid=".$id."
400             AND vtiger_crmentity.deleted = 0
401             AND (activitytype = 'Task'
402                 OR activitytype !='Emails')";
403                     
404         $return_value = GetRelatedList($this_module, $related_module, $other, $query, $button, $returnset);
405         
406         if($return_value == null) $return_value = Array();
407         $return_value['CUSTOM_BUTTON'] = $button;
408         
409         $log->debug("Exiting get_activities method ...");       
410         return $return_value;
411     
412     }
413     
414     /*
415      * Function to get the secondary query part of a report
416      * @param - $module primary module name
417      * @param - $secmodule secondary module name
418      * returns the query string formed on fetching the related data for report for secondary module
419      */
420     function generateReportsSecQuery($module,$secmodule){
421         $query = $this->getRelationQuery($module,$secmodule,"vtiger_campaign","campaignid");
422         $query .=" left join vtiger_crmentity as vtiger_crmentityCampaigns on vtiger_crmentityCampaigns.crmid=vtiger_campaign.campaignid and vtiger_crmentityCampaigns.deleted=0
423                 left join vtiger_products as vtiger_productsCampaigns on vtiger_campaign.product_id = vtiger_productsCampaigns.productid
424                 left join vtiger_campaignscf on vtiger_campaignscf.campaignid = vtiger_crmentityCampaigns.crmid
425                 left join vtiger_groups as vtiger_groupsCampaigns on vtiger_groupsCampaigns.groupid = vtiger_crmentityCampaigns.smownerid
426                 left join vtiger_users as vtiger_usersCampaigns on vtiger_usersCampaigns.id = vtiger_crmentityCampaigns.smownerid";
427
428         return $query;
429     }
430
431     /*
432      * Function to get the relation tables for related modules
433      * @param - $secmodule secondary module name
434      * returns the array with table names and fieldnames storing relations between module and this module
435      */
436     function setRelationTables($secmodule){
437         $rel_tables = array (
438             "Contacts" => array("vtiger_campaigncontrel"=>array("campaignid","contactid"),"vtiger_campaign"=>"campaignid"),
439             "Leads" => array("vtiger_campaignleadrel"=>array("campaignid","leadid"),"vtiger_campaign"=>"campaignid"),
440             "Potentials" => array("vtiger_potential"=>array("campaignid","potentialid"),"vtiger_campaign"=>"campaignid"),
441             "Calendar" => array("vtiger_seactivityrel"=>array("crmid","activityid"),"vtiger_campaign"=>"campaignid"),
442             "Products" => array("vtiger_campaign"=>array("campaignid","product_id")),
443         );
444         return $rel_tables[$secmodule];
445     }
446     
447     // Function to unlink an entity with given Id from another entity
448     function unlinkRelationship($id, $return_module, $return_id) {
449         global $log;
450         if(empty($return_module) || empty($return_id)) return;
451         
452         if($return_module == 'Leads') {
453             $sql = 'DELETE FROM vtiger_campaignleadrel WHERE campaignid=? AND leadid=?';
454             $this->db->pquery($sql, array($id, $return_id));
455         } elseif($return_module == 'Contacts') {
456             $sql = 'DELETE FROM vtiger_campaigncontrel WHERE campaignid=? AND contactid=?';
457             $this->db->pquery($sql, array($id, $return_id));
458         } else {
459             $sql = 'DELETE FROM vtiger_crmentityrel WHERE (crmid=? AND relmodule=? AND relcrmid=?) OR (relcrmid=? AND module=? AND crmid=?)';
460             $params = array($id, $return_module, $return_id, $id, $return_module, $return_id);
461             $this->db->pquery($sql, $params);
462         }
463     }
464
465 }
466 ?>
Note: See TracBrowser for help on using the browser.