[Vtigercrm-commits] [vtiger-commits] r9910 - /vtigercrm/branches/5.0.3/modules/Contacts/Contacts.php
vtigercrm-commits at vtiger.fosslabs.com
vtigercrm-commits at vtiger.fosslabs.com
Mon Nov 27 07:06:09 EST 2006
Author: richie
Date: Mon Nov 27 05:05:56 2006
New Revision: 9910
Log:
added var $groupTable --by Don
Modified:
vtigercrm/branches/5.0.3/modules/Contacts/Contacts.php
Modified: vtigercrm/branches/5.0.3/modules/Contacts/Contacts.php
==============================================================================
--- vtigercrm/branches/5.0.3/modules/Contacts/Contacts.php (original)
+++ vtigercrm/branches/5.0.3/modules/Contacts/Contacts.php Mon Nov 27 05:05:56 2006
@@ -1,869 +1,871 @@
-<?php
-/*********************************************************************************
- * The contents of this file are subject to the SugarCRM Public License Version 1.1.2
- * ("License"); You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
- * the specific language governing rights and limitations under the License.
- * The Original Code is: SugarCRM Open Source
- * The Initial Developer of the Original Code is SugarCRM, Inc.
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
- * All Rights Reserved.
- * Contributor(s): ______________________________________.
- ********************************************************************************/
-/*********************************************************************************
- * $Header: /advent/projects/wesat/vtiger_crm/sugarcrm/modules/Contacts/Contacts.php,v 1.70 2005/04/27 11:21:49 rank Exp $
- * Description: TODO: To be written.
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
- * All Rights Reserved.
- * Contributor(s): ______________________________________..
- ********************************************************************************/
-include_once('config.php');
-require_once('include/logging.php');
-require_once('include/database/PearDatabase.php');
-require_once('data/SugarBean.php');
-require_once('data/CRMEntity.php');
-require_once('include/utils/utils.php');
-require_once('modules/Potentials/Potentials.php');
-require_once('modules/Calendar/Activity.php');
-require_once('modules/Campaigns/Campaigns.php');
-require_once('modules/Notes/Notes.php');
-require_once('modules/Emails/Emails.php');
-require_once('modules/HelpDesk/HelpDesk.php');
-require_once('user_privileges/default_module_view.php');
-
-
-// Contact is used to store customer information.
-class Contacts extends CRMEntity {
- var $log;
- var $db;
-
- var $table_name = "contactdetails";
- var $tab_name = Array('vtiger_crmentity','vtiger_contactdetails','vtiger_contactaddress','vtiger_contactsubdetails','vtiger_contactscf','vtiger_customerdetails','vtiger_attachments');
- var $tab_name_index = Array('vtiger_crmentity'=>'crmid','vtiger_contactdetails'=>'contactid','vtiger_contactaddress'=>'contactaddressid','vtiger_contactsubdetails'=>'contactsubscriptionid','vtiger_contactscf'=>'contactid','vtiger_customerdetails'=>'customerid','vtiger_attachments'=>'attachmentsid');
-
-
-
- var $column_fields = Array();
-
- var $sortby_fields = Array('lastname','firstname','title','email','phone','smownerid','accountid');
-
- var $list_link_field= 'lastname';
-
- // This is the list of vtiger_fields that are in the lists.
- var $list_fields = Array(
- 'Last Name' => Array('contactdetails'=>'lastname'),
- 'First Name' => Array('contactdetails'=>'firstname'),
- 'Title' => Array('contactdetails'=>'title'),
- 'Account Name' => Array('account'=>'accountname'),
- 'Email' => Array('contactdetails'=>'email'),
- 'Phone' => Array('contactdetails'=>'phone'),
- 'Assigned To' => Array('crmentity'=>'smownerid')
- );
-
- var $range_fields = Array(
- 'first_name',
- 'last_name',
- 'primary_address_city',
- 'account_name',
- 'account_id',
- 'id',
- 'email1',
- 'salutation',
- 'title',
- 'phone_mobile',
- 'reports_to_name',
- 'primary_address_street',
- 'primary_address_city',
- 'primary_address_state',
- 'primary_address_postalcode',
- 'primary_address_country',
- 'alt_address_city',
- 'alt_address_street',
- 'alt_address_city',
- 'alt_address_state',
- 'alt_address_postalcode',
- 'alt_address_country',
- 'office_phone',
- 'home_phone',
- 'other_phone',
- 'fax',
- 'department',
- 'birthdate',
- 'assistant_name',
- 'assistant_phone');
-
-
- var $list_fields_name = Array(
- 'Last Name' => 'lastname',
- 'First Name' => 'firstname',
- 'Title' => 'title',
- 'Account Name' => 'accountid',
- 'Email' => 'email',
- 'Phone' => 'phone',
- 'Assigned To' => 'assigned_user_id'
- );
-
- var $search_fields = Array(
- 'Name' => Array('contactdetails'=>'lastname'),
- 'Title' => Array('contactdetails'=>'title')
- );
-
- var $search_fields_name = Array(
- 'Name' => 'lastname',
- 'Title' => 'title'
- );
-
- // This is the list of vtiger_fields that are required
- var $required_fields = array("lastname"=>1);
-
- //Added these variables which are used as default order by and sortorder in ListView
- var $default_order_by = 'lastname';
- var $default_sort_order = 'ASC';
-
- function Contacts() {
- $this->log = LoggerManager::getLogger('contact');
- $this->db = new PearDatabase();
- $this->column_fields = getColumnFields('Contacts');
- }
-
- // Mike Crowe Mod --------------------------------------------------------Default ordering for us
- /**
- * Function to get sort order
- * return string $sorder - sortorder string either 'ASC' or 'DESC'
- */
- function getSortOrder()
- {
- global $log;
- $log->debug("Entering getSortOrder() method ...");
- if(isset($_REQUEST['sorder']))
- $sorder = $_REQUEST['sorder'];
- else
- $sorder = (($_SESSION['CONTACTS_SORT_ORDER'] != '')?($_SESSION['CONTACTS_SORT_ORDER']):($this->default_sort_order));
- $log->debug("Exiting getSortOrder method ...");
- return $sorder;
- }
- /**
- * Function to get order by
- * return string $order_by - fieldname(eg: 'Contactname')
- */
- function getOrderBy()
- {
- global $log;
- $log->debug("Entering getOrderBy() method ...");
- if (isset($_REQUEST['order_by']))
- $order_by = $_REQUEST['order_by'];
- else
- $order_by = (($_SESSION['CONTACTS_ORDER_BY'] != '')?($_SESSION['CONTACTS_ORDER_BY']):($this->default_order_by));
- $log->debug("Exiting getOrderBy method ...");
- return $order_by;
- }
- // Mike Crowe Mod --------------------------------------------------------
- /** Function to get the number of Contacts assigned to a particular User.
- * @param varchar $user name - Assigned to User
- * Returns the count of contacts assigned to user.
- */
- function getCount($user_name)
- {
- global $log;
- $log->debug("Entering getCount(".$user_name.") method ...");
- $query = "select count(*) from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid where user_name='" .$user_name ."' and vtiger_crmentity.deleted=0";
-
- $result = $this->db->query($query,true,"Error retrieving contacts count");
- $rows_found = $this->db->getRowCount($result);
- $row = $this->db->fetchByAssoc($result, 0);
-
-
- $log->debug("Exiting getCount method ...");
- return $row["count(*)"];
- }
- /** Function to get the Contact Details assigned to a given User ID which has a valid Email Address.
- * @param varchar $user_name - User Name (eg. Admin)
- * @param varchar $email_address - Email Addr of each contact record.
- * Returns the query.
- */
- function get_contacts1($user_name,$email_address)
- {
- global $log;
- $log->debug("Entering get_contacts1(".$user_name.",".$email_address.") method ...");
- $query = "select vtiger_users.user_name, vtiger_contactdetails.lastname last_name,vtiger_contactdetails.firstname first_name,vtiger_contactdetails.contactid as id, vtiger_contactdetails.salutation as salutation, vtiger_contactdetails.email as email1,vtiger_contactdetails.title as title,vtiger_contactdetails.mobile as phone_mobile,vtiger_account.accountname as account_name,vtiger_account.accountid as account_id from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_account on vtiger_account.accountid=vtiger_contactdetails.accountid left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid left join vtiger_contactgrouprelation on vtiger_contactdetails.contactid=vtiger_contactgrouprelation.contactid where user_name='" .$user_name ."' and vtiger_crmentity.deleted=0 and vtiger_contactdetails.email like '%" .$email_address ."%' limit 50";
-
- $log->debug("Exiting get_contacts1 method ...");
- return $this->process_list_query1($query);
- }
- /** Function to get the Contact Details assigned to a particular User based on the starting count and the number of subsequent records.
- * @param varchar $user_name - Assigned User
- * @param integer $from_index - Initial record number to be displayed
- * @param integer $offset - Count of the subsequent records to be displayed.
- * Returns Query.
- */
- function get_contacts($user_name,$from_index,$offset)
- {
- global $log;
- $log->debug("Entering get_contacts(".$user_name.",".$from_index.",".$offset.") method ...");
- $query = "select vtiger_users.user_name,vtiger_groups.groupname,vtiger_contactdetails.department department, vtiger_contactdetails.phone office_phone, vtiger_contactdetails.fax fax, vtiger_contactsubdetails.assistant assistant_name, vtiger_contactsubdetails.otherphone other_phone, vtiger_contactsubdetails.homephone home_phone,vtiger_contactsubdetails.birthday birthdate, vtiger_contactdetails.lastname last_name,vtiger_contactdetails.firstname first_name,vtiger_contactdetails.contactid as id, vtiger_contactdetails.salutation as salutation, vtiger_contactdetails.email as email1,vtiger_contactdetails.title as title,vtiger_contactdetails.mobile as phone_mobile,vtiger_account.accountname as account_name,vtiger_account.accountid as account_id, vtiger_contactaddress.mailingcity as primary_address_city,vtiger_contactaddress.mailingstreet as primary_address_street, vtiger_contactaddress.mailingcountry as primary_address_country,vtiger_contactaddress.mailingstate as primary_address_state, vtiger_contactaddress.mailingzip as primary_address_postalcode, vtiger_contactaddress.othercity as alt_address_city,vtiger_contactaddress.otherstreet as alt_address_street, vtiger_contactaddress.othercountry as alt_address_country,vtiger_contactaddress.otherstate as alt_address_state, vtiger_contactaddress.otherzip as alt_address_postalcode from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_account on vtiger_account.accountid=vtiger_contactdetails.accountid left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid left join vtiger_contactsubdetails on vtiger_contactsubdetails.contactsubscriptionid = vtiger_contactdetails.contactid left join vtiger_contactgrouprelation on vtiger_contactdetails.contactid=vtiger_contactgrouprelation.contactid left join vtiger_groups on vtiger_groups.groupname=vtiger_contactgrouprelation.groupname left join vtiger_users on vtiger_crmentity.smownerid=vtiger_users.id where user_name='" .$user_name ."' and vtiger_crmentity.deleted=0 limit " .$from_index ."," .$offset;
-
- $log->debug("Exiting get_contacts method ...");
- return $this->process_list_query1($query);
- }
-
-
- /** Function to process list query for a given query
- * @param $query
- * Returns the results of query in array format
- */
- function process_list_query1($query)
- {
- global $log;
- $log->debug("Entering process_list_query1(".$query.") method ...");
-
- $result =& $this->db->query($query,true,"Error retrieving $this->object_name list: ");
- $list = Array();
- $rows_found = $this->db->getRowCount($result);
- if($rows_found != 0)
- {
- $contact = Array();
- for($index = 0 , $row = $this->db->fetchByAssoc($result, $index); $row && $index <$rows_found;$index++, $row = $this->db->fetchByAssoc($result, $index))
-
- {
- foreach($this->range_fields as $columnName)
- {
- if (isset($row[$columnName])) {
-
- $contact[$columnName] = $row[$columnName];
- }
- else
- {
- $contact[$columnName] = "";
- }
- }
-// TODO OPTIMIZE THE QUERY ACCOUNT NAME AND ID are set separetly for every vtiger_contactdetails and hence
-// vtiger_account query goes for ecery single vtiger_account row
-
- $list[] = $contact;
- }
- }
-
- $response = Array();
- $response['list'] = $list;
- $response['row_count'] = $rows_found;
- $response['next_offset'] = $next_offset;
- $response['previous_offset'] = $previous_offset;
-
-
- $log->debug("Exiting process_list_query1 method ...");
- return $response;
- }
-
-
- /** Function to process list query for Plugin with Security Parameters for a given query
- * @param $query
- * Returns the results of query in array format
- */
- function plugin_process_list_query($query)
- {
- global $log,$adb,$current_user;
- $log->debug("Entering process_list_query1(".$query.") method ...");
- $permitted_field_lists = Array();
- require('user_privileges/user_privileges_'.$current_user->id.'.php');
- if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0)
- {
- $sql1 = "select columnname from vtiger_field where tabid=4 and block <> 75";
- }else
- {
- $profileList = getCurrentUserProfileList();
- $sql1 = "select columnname 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=4 and vtiger_field.block <> 6 and vtiger_field.block <> 75 and vtiger_field.displaytype in (1,2,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_profile2field.profileid in ".$profileList;
- }
- $result1 = $this->db->query($sql1);
- for($i=0;$i < $adb->num_rows($result1);$i++)
- {
- $permitted_field_lists[] = $adb->query_result($result1,$i,'columnname');
- }
-
- $result =& $this->db->query($query,true,"Error retrieving $this->object_name list: ");
- $list = Array();
- $rows_found = $this->db->getRowCount($result);
- if($rows_found != 0)
- {
- for($index = 0 , $row = $this->db->fetchByAssoc($result, $index); $row && $index <$rows_found;$index++, $row = $this->db->fetchByAssoc($result, $index))
- {
- $contact = Array();
- foreach($permitted_field_lists as $columnName)
- {
- if ($columnName == "lastname" || $columnName == "firstname" || $columnName == "email")
- {
- $contact[$columnName] = $row[$columnName];
- }
- else
- {
- $contact[$columnName] = "";
- }
- }
- if(in_array("accountid",$permitted_field_lists))
- {
- $contact[accountname] = $row[accountname];
- $contact[account_id] = $row[accountid];
- }
- $contact[contactid] = $row[contactid];
- $list[] = $contact;
- }
- }
-
- $response = Array();
- $response['list'] = $list;
- $response['row_count'] = $rows_found;
- $response['next_offset'] = $next_offset;
- $response['previous_offset'] = $previous_offset;
- $log->debug("Exiting process_list_query1 method ...");
- return $response;
- }
-
-
- /** Returns a list of the associated opportunities
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
- * All Rights Reserved..
- * Contributor(s): ______________________________________..
- */
- function get_opportunities($id)
- {
- global $log, $singlepane_view;
- $log->debug("Entering get_opportunities(".$id.") method ...");
- global $mod_strings;
-
- $focus = new Potentials();
- $button = '';
-
- if(isPermitted("Potentials",1,"") == 'yes')
- {
-
- $button .= '<input title="New Potential" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Potentials\'" type="submit" name="button" value="'.$mod_strings['LBL_NEW_POTENTIAL'].'"> ';
- }
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
-
- $log->info("Potential Related List for Contact Displayed");
-
- // First, get the list of IDs.
- $query = 'select vtiger_users.user_name,vtiger_groups.groupname,vtiger_contactdetails.accountid, vtiger_contactdetails.contactid , vtiger_potential.potentialid, vtiger_potential.potentialname, vtiger_potential.potentialtype, vtiger_potential.sales_stage, vtiger_potential.amount, vtiger_potential.closingdate, vtiger_crmentity.crmid, vtiger_crmentity.smownerid from vtiger_contactdetails inner join vtiger_potential on vtiger_contactdetails.accountid = vtiger_potential.accountid inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_potential.potentialid left join vtiger_potentialgrouprelation on vtiger_potential.potentialid=vtiger_potentialgrouprelation.potentialid left join vtiger_groups on vtiger_groups.groupname=vtiger_potentialgrouprelation.groupname left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid where vtiger_contactdetails.contactid = '.$id.' and vtiger_crmentity.deleted=0';
- if($this->column_fields['account_id'] != 0)
- $log->debug("Exiting get_opportunities method ...");
- return GetRelatedList('Contacts','Potentials',$focus,$query,$button,$returnset);
- }
-
-
- /** Returns a list of the associated tasks
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
- * All Rights Reserved..
- * Contributor(s): ______________________________________..
- */
- function get_activities($id)
- {
- global $log, $singlepane_view;
- $log->debug("Entering get_activities(".$id.") method ...");
- global $mod_strings;
-
- $focus = new Activity();
-
- $button = '';
-
- if(isPermitted("Calendar",1,"") == 'yes')
- {
- $button .= '<input title="New Task" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.return_action.value=\'DetailView\';this.form.module.value=\'Calendar\';this.form.activity_mode.value=\'Task\';this.form.return_module.value=\'Contacts\'" type="submit" name="button" value="'.$mod_strings['LBL_NEW_TASK'].'"> ';
- $button .= '<input title="New Event" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.return_action.value=\'DetailView\';this.form.module.value=\'Calendar\';this.form.return_module.value=\'Contacts\';this.form.activity_mode.value=\'Events\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_EVENT'].'"> ';
- }
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
-
- $log->info("Activity Related List for Contact Displayed");
-
- $query = "SELECT vtiger_users.user_name,vtiger_contactdetails.lastname, vtiger_contactdetails.firstname, vtiger_activity.activityid , vtiger_activity.subject, vtiger_activity.activitytype, vtiger_activity.date_start, vtiger_activity.due_date, vtiger_cntactivityrel.contactid, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime, vtiger_recurringevents.recurringtype from vtiger_contactdetails inner join vtiger_cntactivityrel on vtiger_cntactivityrel.contactid = vtiger_contactdetails.contactid inner join vtiger_activity on vtiger_cntactivityrel.activityid=vtiger_activity.activityid inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_cntactivityrel.activityid left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left outer join vtiger_recurringevents on vtiger_recurringevents.activityid=vtiger_activity.activityid left join vtiger_activitygrouprelation on vtiger_activitygrouprelation.activityid=vtiger_crmentity.crmid left join vtiger_groups on vtiger_groups.groupname=vtiger_activitygrouprelation.groupname where vtiger_contactdetails.contactid=".$id." and vtiger_crmentity.deleted = 0 and (vtiger_activity.activitytype = 'Meeting' or vtiger_activity.activitytype='Call' or vtiger_activity.activitytype='Task') AND ( vtiger_activity.status is NULL OR vtiger_activity.status != 'Completed' ) and ( vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus != 'Held') "; //recurring type is added in Query -Jaguar
- $log->debug("Exiting get_activities method ...");
- return GetRelatedList('Contacts','Calendar',$focus,$query,$button,$returnset);
-
- }
- /**
- * Function to get Contact related Task & Event which have activity type Held, Completed or Deferred.
- * @param integer $id - contactid
- * returns related Task or Event record in array format
- */
- function get_history($id)
- {
- global $log;
- $log->debug("Entering get_history(".$id.") method ...");
- $query = "SELECT vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.status, vtiger_activity.eventstatus,
- vtiger_activity.activitytype, vtiger_contactdetails.contactid, vtiger_contactdetails.firstname,
- vtiger_contactdetails.lastname, vtiger_crmentity.modifiedtime,
- vtiger_crmentity.createdtime, vtiger_crmentity.description, vtiger_users.user_name
- from vtiger_activity
- inner join vtiger_cntactivityrel on vtiger_cntactivityrel.activityid= vtiger_activity.activityid
- inner join vtiger_contactdetails on vtiger_contactdetails.contactid= vtiger_cntactivityrel.contactid
- inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_activity.activityid
- left join vtiger_seactivityrel on vtiger_seactivityrel.activityid=vtiger_activity.activityid
- left join vtiger_activitygrouprelation on vtiger_activitygrouprelation.activityid=vtiger_activity.activityid
- left join vtiger_groups on vtiger_groups.groupname=vtiger_activitygrouprelation.groupname
- inner join vtiger_users on vtiger_crmentity.smcreatorid= vtiger_users.id
- where (vtiger_activity.activitytype = 'Meeting' or vtiger_activity.activitytype='Call' or vtiger_activity.activitytype='Task')
- and (vtiger_activity.status = 'Completed' or vtiger_activity.status = 'Deferred' or (vtiger_activity.eventstatus = 'Held' and vtiger_activity.eventstatus != ''))
- and vtiger_cntactivityrel.contactid=".$id;
- //Don't add order by, because, for security, one more condition will be added with this query in include/RelatedListView.php
- $log->debug("Entering get_history method ...");
- return getHistory('Contacts',$query,$id);
- }
- /**
- * Function to get Contact related Tickets.
- * @param integer $id - contactid
- * returns related Ticket records in array format
- */
- function get_tickets($id)
- {
- global $log, $singlepane_view;
- global $app_strings;
- $log->debug("Entering get_tickets(".$id.") method ...");
- $focus = new HelpDesk();
-
- $button = '<td valign="bottom" align="right"><input title="New Ticket" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'HelpDesk\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_TICKET'].'"> </td>';
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
-
- $query = "select vtiger_users.user_name,vtiger_crmentity.crmid, vtiger_troubletickets.title, vtiger_contactdetails.contactid, vtiger_troubletickets.parent_id, vtiger_contactdetails.firstname, vtiger_contactdetails.lastname, vtiger_troubletickets.status, vtiger_troubletickets.priority, vtiger_crmentity.smownerid from vtiger_troubletickets inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_troubletickets.ticketid left join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_troubletickets.parent_id left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_ticketgrouprelation on vtiger_troubletickets.ticketid=vtiger_ticketgrouprelation.ticketid left join vtiger_groups on vtiger_groups.groupname=vtiger_ticketgrouprelation.groupname where vtiger_crmentity.deleted=0 and vtiger_contactdetails.contactid=".$id;
- $log->info("Ticket Related List for Contact Displayed");
- $log->debug("Exiting get_tickets method ...");
- return GetRelatedList('Contacts','HelpDesk',$focus,$query,$button,$returnset);
- }
- /**
- * Function to get Contact related Attachments
- * @param integer $id - contactid
- * returns related Attachment record in array format
- */
- function get_attachments($id)
- {
- global $log;
- $log->debug("Entering get_attachments(".$id.") method ...");
- $query = "select vtiger_notes.title,'Notes ' AS ActivityType,
- vtiger_notes.filename, vtiger_attachments.type AS FileType,crm2.modifiedtime AS lastmodified,
- vtiger_seattachmentsrel.attachmentsid AS attachmentsid, vtiger_notes.notesid AS crmid,
- crm2.createdtime, vtiger_notes.notecontent AS description, vtiger_users.user_name
- from vtiger_notes
- inner join vtiger_crmentity on vtiger_crmentity.crmid= vtiger_notes.contact_id
- inner join vtiger_crmentity crm2 on crm2.crmid=vtiger_notes.notesid and crm2.deleted=0
- left join vtiger_seattachmentsrel on vtiger_seattachmentsrel.crmid =vtiger_notes.notesid
- left join vtiger_attachments on vtiger_seattachmentsrel.attachmentsid = vtiger_attachments.attachmentsid
- inner join vtiger_users on crm2.smcreatorid= vtiger_users.id
- where vtiger_crmentity.crmid=".$id;
- $query .= " union all ";
- $query .= "select vtiger_attachments.description AS title,'Attachments' AS ActivityType,
- vtiger_attachments.name AS filename, vtiger_attachments.type AS FileType,crm2.modifiedtime AS lastmodified,
- vtiger_attachments.attachmentsid AS attachmentsid, vtiger_seattachmentsrel.attachmentsid AS crmid,
- crm2.createdtime, vtiger_attachments.description, vtiger_users.user_name
- from vtiger_attachments
- inner join vtiger_seattachmentsrel on vtiger_seattachmentsrel.attachmentsid= vtiger_attachments.attachmentsid
- inner join vtiger_crmentity on vtiger_crmentity.crmid= vtiger_seattachmentsrel.crmid
- inner join vtiger_crmentity crm2 on crm2.crmid=vtiger_attachments.attachmentsid
- inner join vtiger_users on crm2.smcreatorid= vtiger_users.id
- where vtiger_crmentity.crmid=".$id."
- order by createdtime desc";
- $log->info("Notes&Attachmenmts for Contact Displayed");
- $log->debug("Exiting get_attachments method ...");
- return getAttachmentsAndNotes('Contacts',$query,$id);
- }
- /**
- * Function to get Contact related Quotes
- * @param integer $id - contactid
- * returns related Quotes record in array format
- */
- function get_quotes($id)
- {
- global $log, $singlepane_view;
- $log->debug("Entering get_quotes(".$id.") method ...");
- global $app_strings;
- require_once('modules/Quotes/Quotes.php');
- $focus = new Quotes();
-
- $button = '';
- if(isPermitted("Quotes",1,"") == 'yes')
- {
- $button .= '<input title="'.$app_strings['LBL_NEW_QUOTE_BUTTON_TITLE'].'" accessyKey="'.$app_strings['LBL_NEW_QUOTE_BUTTON_KEY'].'" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Quotes\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_QUOTE_BUTTON'].'"> </td>';
- }
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
- $query = "select vtiger_users.user_name,vtiger_crmentity.*, vtiger_quotes.*,vtiger_potential.potentialname,vtiger_contactdetails.lastname from vtiger_quotes inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_quotes.quoteid left outer join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_quotes.contactid left outer join vtiger_potential on vtiger_potential.potentialid=vtiger_quotes.potentialid left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_quotegrouprelation on vtiger_quotes.quoteid=vtiger_quotegrouprelation.quoteid left join vtiger_groups on vtiger_groups.groupname=vtiger_quotegrouprelation.groupname where vtiger_crmentity.deleted=0 and vtiger_contactdetails.contactid=".$id;
- $log->debug("Exiting get_quotes method ...");
- return GetRelatedList('Contacts','Quotes',$focus,$query,$button,$returnset);
- }
- /**
- * Function to get Contact related SalesOrder
- * @param integer $id - contactid
- * returns related SalesOrder record in array format
- */
- function get_salesorder($id)
- {
- global $log, $singlepane_view;
- $log->debug("Entering get_salesorder(".$id.") method ...");
- require_once('modules/SalesOrder/SalesOrder.php');
- global $app_strings;
- $focus = new SalesOrder();
- $button = '';
-
- if(isPermitted("SalesOrder",1,"") == 'yes')
- {
-
- $button .= '<input title="'.$app_strings['LBL_NEW_SORDER_BUTTON_TITLE'].'" accessyKey="O" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'SalesOrder\';this.form.return_module.value=\'Contacts\';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_SORDER_BUTTON'].'"> ';
- }
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
-
- $query = "select vtiger_users.user_name,vtiger_crmentity.*, vtiger_salesorder.*, vtiger_quotes.subject as quotename, vtiger_account.accountname, vtiger_contactdetails.lastname from vtiger_salesorder inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_salesorder.salesorderid left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left outer join vtiger_quotes on vtiger_quotes.quoteid=vtiger_salesorder.quoteid left outer join vtiger_account on vtiger_account.accountid=vtiger_salesorder.accountid left outer join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_salesorder.contactid left join vtiger_sogrouprelation on vtiger_salesorder.salesorderid=vtiger_sogrouprelation.salesorderid left join vtiger_groups on vtiger_groups.groupname=vtiger_sogrouprelation.groupname where vtiger_crmentity.deleted=0 and vtiger_salesorder.contactid = ".$id;
- $log->debug("Exiting get_salesorder method ...");
- return GetRelatedList('Contacts','SalesOrder',$focus,$query,$button,$returnset);
- }
- /**
- * Function to get Contact related Products
- * @param integer $id - contactid
- * returns related Products record in array format
- */
- function get_products($id)
- {
- global $log, $singlepane_view;
- $log->debug("Entering get_products(".$id.") method ...");
- global $app_strings;
- require_once('modules/Products/Products.php');
- $focus = new Products();
- $button = '';
-
- if(isPermitted("Products",1,"") == 'yes')
- {
-
- $button .= '<input title="'.$app_strings['LBL_NEW_PRODUCT'].'" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Products\';this.form.return_module.value=\'Contacts\';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_PRODUCT'].'"> ';
- }
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
-
- $query = 'select vtiger_products.productid, vtiger_products.productname, vtiger_products.productcode, vtiger_products.commissionrate, vtiger_products.qty_per_unit, vtiger_products.unit_price, vtiger_crmentity.crmid, vtiger_crmentity.smownerid,vtiger_contactdetails.lastname from vtiger_products inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_products.productid left outer join vtiger_contactdetails on vtiger_contactdetails.contactid = vtiger_products.contactid where vtiger_contactdetails.contactid = '.$id.' and vtiger_crmentity.deleted = 0';
- $log->debug("Exiting get_products method ...");
- return GetRelatedList('Contacts','Products',$focus,$query,$button,$returnset);
- }
-
- /**
- * Function to get Contact related PurchaseOrder
- * @param integer $id - contactid
- * returns related PurchaseOrder record in array format
- */
- function get_purchase_orders($id)
- {
- global $log, $singlepane_view;
- $log->debug("Entering get_purchase_orders(".$id.") method ...");
- global $app_strings;
- require_once('modules/PurchaseOrder/PurchaseOrder.php');
- $focus = new PurchaseOrder();
-
- $button = '';
-
- if(isPermitted("PurchaseOrder",1,"") == 'yes')
- {
-
- $button .= '<input title="'.$app_strings['LBL_PORDER_BUTTON_TITLE'].'" accessyKey="O" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'PurchaseOrder\';this.form.return_module.value=\'Contacts\';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$app_strings['LBL_PORDER_BUTTON'].'"> ';
- }
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
-
- $query = "select vtiger_users.user_name,vtiger_crmentity.*, vtiger_purchaseorder.*,vtiger_vendor.vendorname,vtiger_contactdetails.lastname from vtiger_purchaseorder inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_purchaseorder.purchaseorderid left outer join vtiger_vendor on vtiger_purchaseorder.vendorid=vtiger_vendor.vendorid left outer join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_purchaseorder.contactid left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_pogrouprelation on vtiger_purchaseorder.purchaseorderid=vtiger_pogrouprelation.purchaseorderid left join vtiger_groups on vtiger_groups.groupname=vtiger_pogrouprelation.groupname where vtiger_crmentity.deleted=0 and vtiger_purchaseorder.contactid=".$id;
- $log->debug("Exiting get_purchase_orders method ...");
- return GetRelatedList('Contacts','PurchaseOrder',$focus,$query,$button,$returnset);
- }
-
- /** Returns a list of the associated emails
- * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
- * All Rights Reserved..
- * Contributor(s): ______________________________________..
- */
- function get_emails($id)
- {
- global $log, $singlepane_view;
- $log->debug("Entering get_emails(".$id.") method ...");
- global $mod_strings;
-
- $focus = new Emails();
-
- $button = '';
-
- if(isPermitted("Emails",1,"") == 'yes')
- {
- $button .= '<input title="New Email" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Emails\';this.form.email_directing_module.value=\'contacts\';this.form.record.value='.$id.';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$mod_strings['LBL_NEW_EMAIL'].'">';
- }
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
-
- $log->info("Email Related List for Contact Displayed");
-
- $query = "select vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.activitytype, vtiger_users.user_name, vtiger_crmentity.modifiedtime, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_activity.date_start from vtiger_activity, vtiger_seactivityrel, vtiger_contactdetails, vtiger_users, vtiger_crmentity left join vtiger_activitygrouprelation on vtiger_activitygrouprelation.activityid=vtiger_crmentity.crmid left join vtiger_groups on vtiger_groups.groupname=vtiger_activitygrouprelation.groupname where vtiger_seactivityrel.activityid = vtiger_activity.activityid and vtiger_contactdetails.contactid = vtiger_seactivityrel.crmid and vtiger_users.id=vtiger_crmentity.smownerid and vtiger_crmentity.crmid = vtiger_activity.activityid and vtiger_contactdetails.contactid = ".$id." and vtiger_activity.activitytype='Emails' and vtiger_crmentity.deleted = 0";
- $log->debug("Exiting get_emails method ...");
- return GetRelatedList('Contacts','Emails',$focus,$query,$button,$returnset);
- }
-
- /** Returns a list of the associated Campaigns
- * @param $id -- campaign id :: Type Integer
- * @returns list of campaigns in array format
- */
-
- function get_campaigns($id)
- {
- global $log, $singlepane_view;
- $log->debug("Entering get_campaigns(".$id.") method ...");
- global $mod_strings;
-
- $focus = new Campaigns();
- if($singlepane_view == 'true')
- $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
- else
- $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
- $button = '';
-
- $log->info("Campaign Related List for Contact Displayed");
- $query = "SELECT vtiger_users.user_name, vtiger_campaign.campaignid, vtiger_campaign.campaignname, vtiger_campaign.campaigntype, vtiger_campaign.campaignstatus, vtiger_campaign.expectedrevenue, vtiger_campaign.closingdate, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime from vtiger_campaign inner join vtiger_campaigncontrel on vtiger_campaigncontrel.campaignid=vtiger_campaign.campaignid inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_campaign.campaignid left join vtiger_campaigngrouprelation on vtiger_campaign.campaignid=vtiger_campaigngrouprelation.campaignid left join vtiger_groups on vtiger_groups.groupname=vtiger_campaigngrouprelation.groupname left join vtiger_users on vtiger_users.id = vtiger_crmentity.smownerid where vtiger_campaigncontrel.contactid=".$id." and vtiger_crmentity.deleted=0";
-
- $log->debug("Exiting get_campaigns method ...");
- return GetRelatedList('Contacts','Campaigns',$focus,$query,$button,$returnset);
-
- }
- /** Function to export the contact records in CSV Format
- * @param reference variable - order by is passed when the query is executed
- * @param reference variable - where condition is passed when the query is executed
- * Returns Export Contacts Query.
- */
- function create_export_query(&$order_by, &$where)
- {
- global $log;
- global $current_user;
- $log->debug("Entering create_export_query(".$order_by.",".$where.") method ...");
-
- include("include/utils/ExportUtils.php");
-
- //To get the Permitted fields query and the permitted fields list
- $sql = getPermittedFieldsQuery("Contacts", "detail_view");
- $fields_list = getFieldsListFromQuery($sql);
-
- $query = "SELECT $fields_list, vtiger_contactgrouprelation.groupname as 'Assigned To Group'
- FROM vtiger_contactdetails
- inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid
- LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id and vtiger_users.status='Active'
- LEFT JOIN vtiger_account on vtiger_contactdetails.accountid=vtiger_account.accountid
- left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid
- left join vtiger_contactsubdetails on vtiger_contactsubdetails.contactsubscriptionid=vtiger_contactdetails.contactid
- left join vtiger_contactscf on vtiger_contactscf.contactid=vtiger_contactdetails.contactid
- left join vtiger_customerdetails on vtiger_customerdetails.customerid=vtiger_contactdetails.contactid
- LEFT JOIN vtiger_contactgrouprelation
- ON vtiger_contactscf.contactid = vtiger_contactgrouprelation.contactid
- LEFT JOIN vtiger_groups
- ON vtiger_groups.groupname = vtiger_contactgrouprelation.groupname
- LEFT JOIN vtiger_contactdetails vtiger_contactdetails2
- ON vtiger_contactdetails2.contactid = vtiger_contactdetails.reportsto
- where vtiger_crmentity.deleted=0";
- //vtiger_contactdetails2 is added to get the Reports To of Contact
-
- require('user_privileges/user_privileges_'.$current_user->id.'.php');
- require('user_privileges/sharing_privileges_'.$current_user->id.'.php');
- //we should add security check when the user has Private Access
- if($is_admin==false && $profileGlobalPermission[1] == 1 && $profileGlobalPermission[2] == 1 && $defaultOrgSharingPermission[4] == 3)
- {
- //Added security check to get the permitted records only
- $query = $query." ".getListViewSecurityParameter("Contacts");
- }
-
- $log->info("Export Query Constructed Successfully");
- $log->debug("Exiting create_export_query method ...");
- return $query;
- }
-
-
-/** Function to get the Columnnames of the Contacts
-* Used By vtigerCRM Word Plugin
-* Returns the Merge Fields for Word Plugin
-*/
-function getColumnNames()
-{
- global $log, $current_user;
- $log->debug("Entering getColumnNames() method ...");
- require('user_privileges/user_privileges_'.$current_user->id.'.php');
- if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0)
- {
- $sql1 = "select fieldlabel from vtiger_field where tabid=4 and block <> 75";
- }else
- {
- $profileList = getCurrentUserProfileList();
- $sql1 = "select 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=4 and vtiger_field.block <> 6 and vtiger_field.block <> 75 and vtiger_field.displaytype in (1,2,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_profile2field.profileid in ".$profileList;
- }
- $result = $this->db->query($sql1);
- $numRows = $this->db->num_rows($result);
- for($i=0; $i < $numRows;$i++)
- {
- $custom_fields[$i] = $this->db->query_result($result,$i,"fieldlabel");
- $custom_fields[$i] = ereg_replace(" ","",$custom_fields[$i]);
- $custom_fields[$i] = strtoupper($custom_fields[$i]);
- }
- $mergeflds = $custom_fields;
- $log->debug("Exiting getColumnNames method ...");
- return $mergeflds;
-}
-//End
-/** Function to get the Contacts assigned to a user with a valid email address.
-* @param varchar $username - User Name
-* @param varchar $emailaddress - Email Addr for each contact.
-* Used By vtigerCRM Outlook Plugin
-* Returns the Query
-*/
-function get_searchbyemailid($username,$emailaddress)
-{
- global $log;
- global $current_user;
- require_once("modules/Users/Users.php");
- $seed_user=new Users();
- $user_id=$seed_user->retrieve_user_id($username);
- $current_user=$seed_user;
- $current_user->retrieve_entity_info($user_id, 'Users');
- require('user_privileges/user_privileges_'.$current_user->id.'.php');
- require('user_privileges/sharing_privileges_'.$current_user->id.'.php');
- $log->debug("Entering get_searchbyemailid(".$username.",".$emailaddress.") method ...");
- $query = "select vtiger_contactdetails.lastname,vtiger_contactdetails.firstname,
- vtiger_contactdetails.contactid, vtiger_contactdetails.salutation,
- vtiger_contactdetails.email,vtiger_contactdetails.title,
- vtiger_contactdetails.mobile,vtiger_account.accountname,
- vtiger_account.accountid as accountid from vtiger_contactdetails
- inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid
- inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid
- left join vtiger_account on vtiger_account.accountid=vtiger_contactdetails.accountid
- left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid
- LEFT JOIN vtiger_contactgrouprelation ON vtiger_contactdetails.contactid = vtiger_contactgrouprelation.contactid
- LEFT JOIN vtiger_groups ON vtiger_groups.groupname = vtiger_contactgrouprelation.groupname
- where vtiger_crmentity.deleted=0 and vtiger_contactdetails.email like '%".$emailaddress."%'";
- $tab_id = getTabid("Contacts");
- if($is_admin==false && $profileGlobalPermission[1] == 1 && $profileGlobalPermission[2] == 1 && $defaultOrgSharingPermission[$tab_id] == 3)
- {
- $sec_parameter=getListViewSecurityParameter("Contacts");
- $query .= $sec_parameter;
-
- }
- $log->debug("Exiting get_searchbyemailid method ...");
- return $this->plugin_process_list_query($query);
-}
-
-/** Function to get the Contacts associated with the particular User Name.
-* @param varchar $user_name - User Name
-* Returns query
-*/
-
-function get_contactsforol($user_name)
-{
- global $log,$adb;
- global $current_user;
- require_once("modules/Users/Users.php");
- $seed_user=new Users();
- $user_id=$seed_user->retrieve_user_id($user_name);
- $current_user=$seed_user;
- $current_user->retrieve_entity_info($user_id, 'Users');
- require('user_privileges/user_privileges_'.$current_user->id.'.php');
- require('user_privileges/sharing_privileges_'.$current_user->id.'.php');
-
- if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0)
- {
- $sql1 = "select tablename,columnname from vtiger_field where tabid=4 and block <> 75 and block <> 6 and vtiger_field.block <> 5";
- }else
- {
- $profileList = getCurrentUserProfileList();
- $sql1 = "select tablename,columnname 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=4 and vtiger_field.block <> 75 and vtiger_field.block <> 6 and vtiger_field.block <> 5 and vtiger_field.displaytype in (1,2,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_profile2field.profileid in ".$profileList;
- }
- $result1 = $adb->query($sql1);
- for($i=0;$i < $adb->num_rows($result1);$i++)
- {
- $permitted_lists[] = $adb->query_result($result1,$i,'tablename');
- $permitted_lists[] = $adb->query_result($result1,$i,'columnname');
- if($adb->query_result($result1,$i,'columnname') == "accountid")
- {
- $permitted_lists[] = 'vtiger_account';
- $permitted_lists[] = 'accountname';
- }
- }
- $permitted_lists = array_chunk($permitted_lists,2);
- $column_table_lists = array();
- for($i=0;$i < count($permitted_lists);$i++)
- {
- $column_table_lists[] = implode(".",$permitted_lists[$i]);
- }
-
- $log->debug("Entering get_contactsforol(".$user_name.") method ...");
- $query = "select vtiger_contactdetails.contactid as id, ".implode(',',$column_table_lists)." from vtiger_contactdetails
- inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid
- inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid
- left join vtiger_account on vtiger_account.accountid=vtiger_contactdetails.accountid
- left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid
- left join vtiger_contactsubdetails on vtiger_contactsubdetails.contactsubscriptionid = vtiger_contactdetails.contactid
- LEFT JOIN vtiger_contactgrouprelation ON vtiger_contactdetails.contactid = vtiger_contactgrouprelation.contactid
- LEFT JOIN vtiger_groups ON vtiger_groups.groupname = vtiger_contactgrouprelation.groupname
- where vtiger_crmentity.deleted=0 and vtiger_users.user_name='".$user_name."'";
- $log->debug("Exiting get_contactsforol method ...");
- return $query;
-}
-
-
- /** Function to handle module specific operations when saving a entity
- */
- function save_module($module)
- {
- $this->insertIntoAttachment($this->id,$module);
- }
-
- /**
- * This function is used to add the vtiger_attachments. This will call the function uploadAndSaveFile which will upload the attachment into the server and save that attachment information in the database.
- * @param int $id - entity id to which the vtiger_files to be uploaded
- * @param string $module - the current module name
- */
- function insertIntoAttachment($id,$module)
- {
- global $log, $adb;
- $log->debug("Entering into insertIntoAttachment($id,$module) method.");
-
- $file_saved = false;
-
- //This is to added to store the existing attachment id of the contact where we should delete this when we give new image
- $old_attachmentid = $adb->query_result($adb->query("select * from vtiger_seattachmentsrel where crmid=$id"),0,'attachmentsid');
-
- foreach($_FILES as $fileindex => $files)
- {
- if($files['name'] != '' && $files['size'] > 0)
- {
- $file_saved = $this->uploadAndSaveFile($id,$module,$files);
- }
- }
-
- //This is to handle the delete image for contacts
- if($module == 'Contacts' && $file_saved)
- {
- $del_res1 = $adb->query("delete from vtiger_attachments where attachmentsid=$old_attachmentid");
- $del_res2 = $adb->query("delete from vtiger_seattachmentsrel where attachmentsid=$old_attachmentid");
- }
-
- $log->debug("Exiting from insertIntoAttachment($id,$module) method.");
- }
-
-
-//End
-
-}
-
-?>
+<?php
+/*********************************************************************************
+ * The contents of this file are subject to the SugarCRM Public License Version 1.1.2
+ * ("License"); You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
+ * the specific language governing rights and limitations under the License.
+ * The Original Code is: SugarCRM Open Source
+ * The Initial Developer of the Original Code is SugarCRM, Inc.
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
+ * All Rights Reserved.
+ * Contributor(s): ______________________________________.
+ ********************************************************************************/
+/*********************************************************************************
+ * $Header: /advent/projects/wesat/vtiger_crm/sugarcrm/modules/Contacts/Contacts.php,v 1.70 2005/04/27 11:21:49 rank Exp $
+ * Description: TODO: To be written.
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
+ * All Rights Reserved.
+ * Contributor(s): ______________________________________..
+ ********************************************************************************/
+include_once('config.php');
+require_once('include/logging.php');
+require_once('include/database/PearDatabase.php');
+require_once('data/SugarBean.php');
+require_once('data/CRMEntity.php');
+require_once('include/utils/utils.php');
+require_once('modules/Potentials/Potentials.php');
+require_once('modules/Calendar/Activity.php');
+require_once('modules/Campaigns/Campaigns.php');
+require_once('modules/Notes/Notes.php');
+require_once('modules/Emails/Emails.php');
+require_once('modules/HelpDesk/HelpDesk.php');
+require_once('user_privileges/default_module_view.php');
+
+
+// Contact is used to store customer information.
+class Contacts extends CRMEntity {
+ var $log;
+ var $db;
+
+ var $table_name = "contactdetails";
+ var $tab_name = Array('vtiger_crmentity','vtiger_contactdetails','vtiger_contactaddress','vtiger_contactsubdetails','vtiger_contactscf','vtiger_customerdetails','vtiger_attachments');
+ var $tab_name_index = Array('vtiger_crmentity'=>'crmid','vtiger_contactdetails'=>'contactid','vtiger_contactaddress'=>'contactaddressid','vtiger_contactsubdetails'=>'contactsubscriptionid','vtiger_contactscf'=>'contactid','vtiger_customerdetails'=>'customerid','vtiger_attachments'=>'attachmentsid');
+
+
+
+ var $column_fields = Array();
+
+ var $sortby_fields = Array('lastname','firstname','title','email','phone','smownerid','accountid');
+
+ var $list_link_field= 'lastname';
+
+ // This is the list of vtiger_fields that are in the lists.
+ var $list_fields = Array(
+ 'Last Name' => Array('contactdetails'=>'lastname'),
+ 'First Name' => Array('contactdetails'=>'firstname'),
+ 'Title' => Array('contactdetails'=>'title'),
+ 'Account Name' => Array('account'=>'accountname'),
+ 'Email' => Array('contactdetails'=>'email'),
+ 'Phone' => Array('contactdetails'=>'phone'),
+ 'Assigned To' => Array('crmentity'=>'smownerid')
+ );
+
+ var $range_fields = Array(
+ 'first_name',
+ 'last_name',
+ 'primary_address_city',
+ 'account_name',
+ 'account_id',
+ 'id',
+ 'email1',
+ 'salutation',
+ 'title',
+ 'phone_mobile',
+ 'reports_to_name',
+ 'primary_address_street',
+ 'primary_address_city',
+ 'primary_address_state',
+ 'primary_address_postalcode',
+ 'primary_address_country',
+ 'alt_address_city',
+ 'alt_address_street',
+ 'alt_address_city',
+ 'alt_address_state',
+ 'alt_address_postalcode',
+ 'alt_address_country',
+ 'office_phone',
+ 'home_phone',
+ 'other_phone',
+ 'fax',
+ 'department',
+ 'birthdate',
+ 'assistant_name',
+ 'assistant_phone');
+
+
+ var $list_fields_name = Array(
+ 'Last Name' => 'lastname',
+ 'First Name' => 'firstname',
+ 'Title' => 'title',
+ 'Account Name' => 'accountid',
+ 'Email' => 'email',
+ 'Phone' => 'phone',
+ 'Assigned To' => 'assigned_user_id'
+ );
+
+ var $search_fields = Array(
+ 'Name' => Array('contactdetails'=>'lastname'),
+ 'Title' => Array('contactdetails'=>'title')
+ );
+
+ var $search_fields_name = Array(
+ 'Name' => 'lastname',
+ 'Title' => 'title'
+ );
+
+ // This is the list of vtiger_fields that are required
+ var $required_fields = array("lastname"=>1);
+
+ //Added these variables which are used as default order by and sortorder in ListView
+ var $default_order_by = 'lastname';
+ var $default_sort_order = 'ASC';
+
+ var $groupTable = Array('vtiger_contactgrouprelation','contactid');
+
+ function Contacts() {
+ $this->log = LoggerManager::getLogger('contact');
+ $this->db = new PearDatabase();
+ $this->column_fields = getColumnFields('Contacts');
+ }
+
+ // Mike Crowe Mod --------------------------------------------------------Default ordering for us
+ /**
+ * Function to get sort order
+ * return string $sorder - sortorder string either 'ASC' or 'DESC'
+ */
+ function getSortOrder()
+ {
+ global $log;
+ $log->debug("Entering getSortOrder() method ...");
+ if(isset($_REQUEST['sorder']))
+ $sorder = $_REQUEST['sorder'];
+ else
+ $sorder = (($_SESSION['CONTACTS_SORT_ORDER'] != '')?($_SESSION['CONTACTS_SORT_ORDER']):($this->default_sort_order));
+ $log->debug("Exiting getSortOrder method ...");
+ return $sorder;
+ }
+ /**
+ * Function to get order by
+ * return string $order_by - fieldname(eg: 'Contactname')
+ */
+ function getOrderBy()
+ {
+ global $log;
+ $log->debug("Entering getOrderBy() method ...");
+ if (isset($_REQUEST['order_by']))
+ $order_by = $_REQUEST['order_by'];
+ else
+ $order_by = (($_SESSION['CONTACTS_ORDER_BY'] != '')?($_SESSION['CONTACTS_ORDER_BY']):($this->default_order_by));
+ $log->debug("Exiting getOrderBy method ...");
+ return $order_by;
+ }
+ // Mike Crowe Mod --------------------------------------------------------
+ /** Function to get the number of Contacts assigned to a particular User.
+ * @param varchar $user name - Assigned to User
+ * Returns the count of contacts assigned to user.
+ */
+ function getCount($user_name)
+ {
+ global $log;
+ $log->debug("Entering getCount(".$user_name.") method ...");
+ $query = "select count(*) from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid where user_name='" .$user_name ."' and vtiger_crmentity.deleted=0";
+
+ $result = $this->db->query($query,true,"Error retrieving contacts count");
+ $rows_found = $this->db->getRowCount($result);
+ $row = $this->db->fetchByAssoc($result, 0);
+
+
+ $log->debug("Exiting getCount method ...");
+ return $row["count(*)"];
+ }
+ /** Function to get the Contact Details assigned to a given User ID which has a valid Email Address.
+ * @param varchar $user_name - User Name (eg. Admin)
+ * @param varchar $email_address - Email Addr of each contact record.
+ * Returns the query.
+ */
+ function get_contacts1($user_name,$email_address)
+ {
+ global $log;
+ $log->debug("Entering get_contacts1(".$user_name.",".$email_address.") method ...");
+ $query = "select vtiger_users.user_name, vtiger_contactdetails.lastname last_name,vtiger_contactdetails.firstname first_name,vtiger_contactdetails.contactid as id, vtiger_contactdetails.salutation as salutation, vtiger_contactdetails.email as email1,vtiger_contactdetails.title as title,vtiger_contactdetails.mobile as phone_mobile,vtiger_account.accountname as account_name,vtiger_account.accountid as account_id from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_account on vtiger_account.accountid=vtiger_contactdetails.accountid left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid left join vtiger_contactgrouprelation on vtiger_contactdetails.contactid=vtiger_contactgrouprelation.contactid where user_name='" .$user_name ."' and vtiger_crmentity.deleted=0 and vtiger_contactdetails.email like '%" .$email_address ."%' limit 50";
+
+ $log->debug("Exiting get_contacts1 method ...");
+ return $this->process_list_query1($query);
+ }
+ /** Function to get the Contact Details assigned to a particular User based on the starting count and the number of subsequent records.
+ * @param varchar $user_name - Assigned User
+ * @param integer $from_index - Initial record number to be displayed
+ * @param integer $offset - Count of the subsequent records to be displayed.
+ * Returns Query.
+ */
+ function get_contacts($user_name,$from_index,$offset)
+ {
+ global $log;
+ $log->debug("Entering get_contacts(".$user_name.",".$from_index.",".$offset.") method ...");
+ $query = "select vtiger_users.user_name,vtiger_groups.groupname,vtiger_contactdetails.department department, vtiger_contactdetails.phone office_phone, vtiger_contactdetails.fax fax, vtiger_contactsubdetails.assistant assistant_name, vtiger_contactsubdetails.otherphone other_phone, vtiger_contactsubdetails.homephone home_phone,vtiger_contactsubdetails.birthday birthdate, vtiger_contactdetails.lastname last_name,vtiger_contactdetails.firstname first_name,vtiger_contactdetails.contactid as id, vtiger_contactdetails.salutation as salutation, vtiger_contactdetails.email as email1,vtiger_contactdetails.title as title,vtiger_contactdetails.mobile as phone_mobile,vtiger_account.accountname as account_name,vtiger_account.accountid as account_id, vtiger_contactaddress.mailingcity as primary_address_city,vtiger_contactaddress.mailingstreet as primary_address_street, vtiger_contactaddress.mailingcountry as primary_address_country,vtiger_contactaddress.mailingstate as primary_address_state, vtiger_contactaddress.mailingzip as primary_address_postalcode, vtiger_contactaddress.othercity as alt_address_city,vtiger_contactaddress.otherstreet as alt_address_street, vtiger_contactaddress.othercountry as alt_address_country,vtiger_contactaddress.otherstate as alt_address_state, vtiger_contactaddress.otherzip as alt_address_postalcode from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_account on vtiger_account.accountid=vtiger_contactdetails.accountid left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid left join vtiger_contactsubdetails on vtiger_contactsubdetails.contactsubscriptionid = vtiger_contactdetails.contactid left join vtiger_contactgrouprelation on vtiger_contactdetails.contactid=vtiger_contactgrouprelation.contactid left join vtiger_groups on vtiger_groups.groupname=vtiger_contactgrouprelation.groupname left join vtiger_users on vtiger_crmentity.smownerid=vtiger_users.id where user_name='" .$user_name ."' and vtiger_crmentity.deleted=0 limit " .$from_index ."," .$offset;
+
+ $log->debug("Exiting get_contacts method ...");
+ return $this->process_list_query1($query);
+ }
+
+
+ /** Function to process list query for a given query
+ * @param $query
+ * Returns the results of query in array format
+ */
+ function process_list_query1($query)
+ {
+ global $log;
+ $log->debug("Entering process_list_query1(".$query.") method ...");
+
+ $result =& $this->db->query($query,true,"Error retrieving $this->object_name list: ");
+ $list = Array();
+ $rows_found = $this->db->getRowCount($result);
+ if($rows_found != 0)
+ {
+ $contact = Array();
+ for($index = 0 , $row = $this->db->fetchByAssoc($result, $index); $row && $index <$rows_found;$index++, $row = $this->db->fetchByAssoc($result, $index))
+
+ {
+ foreach($this->range_fields as $columnName)
+ {
+ if (isset($row[$columnName])) {
+
+ $contact[$columnName] = $row[$columnName];
+ }
+ else
+ {
+ $contact[$columnName] = "";
+ }
+ }
+// TODO OPTIMIZE THE QUERY ACCOUNT NAME AND ID are set separetly for every vtiger_contactdetails and hence
+// vtiger_account query goes for ecery single vtiger_account row
+
+ $list[] = $contact;
+ }
+ }
+
+ $response = Array();
+ $response['list'] = $list;
+ $response['row_count'] = $rows_found;
+ $response['next_offset'] = $next_offset;
+ $response['previous_offset'] = $previous_offset;
+
+
+ $log->debug("Exiting process_list_query1 method ...");
+ return $response;
+ }
+
+
+ /** Function to process list query for Plugin with Security Parameters for a given query
+ * @param $query
+ * Returns the results of query in array format
+ */
+ function plugin_process_list_query($query)
+ {
+ global $log,$adb,$current_user;
+ $log->debug("Entering process_list_query1(".$query.") method ...");
+ $permitted_field_lists = Array();
+ require('user_privileges/user_privileges_'.$current_user->id.'.php');
+ if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0)
+ {
+ $sql1 = "select columnname from vtiger_field where tabid=4 and block <> 75";
+ }else
+ {
+ $profileList = getCurrentUserProfileList();
+ $sql1 = "select columnname 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=4 and vtiger_field.block <> 6 and vtiger_field.block <> 75 and vtiger_field.displaytype in (1,2,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_profile2field.profileid in ".$profileList;
+ }
+ $result1 = $this->db->query($sql1);
+ for($i=0;$i < $adb->num_rows($result1);$i++)
+ {
+ $permitted_field_lists[] = $adb->query_result($result1,$i,'columnname');
+ }
+
+ $result =& $this->db->query($query,true,"Error retrieving $this->object_name list: ");
+ $list = Array();
+ $rows_found = $this->db->getRowCount($result);
+ if($rows_found != 0)
+ {
+ for($index = 0 , $row = $this->db->fetchByAssoc($result, $index); $row && $index <$rows_found;$index++, $row = $this->db->fetchByAssoc($result, $index))
+ {
+ $contact = Array();
+ foreach($permitted_field_lists as $columnName)
+ {
+ if ($columnName == "lastname" || $columnName == "firstname" || $columnName == "email")
+ {
+ $contact[$columnName] = $row[$columnName];
+ }
+ else
+ {
+ $contact[$columnName] = "";
+ }
+ }
+ if(in_array("accountid",$permitted_field_lists))
+ {
+ $contact[accountname] = $row[accountname];
+ $contact[account_id] = $row[accountid];
+ }
+ $contact[contactid] = $row[contactid];
+ $list[] = $contact;
+ }
+ }
+
+ $response = Array();
+ $response['list'] = $list;
+ $response['row_count'] = $rows_found;
+ $response['next_offset'] = $next_offset;
+ $response['previous_offset'] = $previous_offset;
+ $log->debug("Exiting process_list_query1 method ...");
+ return $response;
+ }
+
+
+ /** Returns a list of the associated opportunities
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
+ * All Rights Reserved..
+ * Contributor(s): ______________________________________..
+ */
+ function get_opportunities($id)
+ {
+ global $log, $singlepane_view;
+ $log->debug("Entering get_opportunities(".$id.") method ...");
+ global $mod_strings;
+
+ $focus = new Potentials();
+ $button = '';
+
+ if(isPermitted("Potentials",1,"") == 'yes')
+ {
+
+ $button .= '<input title="New Potential" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Potentials\'" type="submit" name="button" value="'.$mod_strings['LBL_NEW_POTENTIAL'].'"> ';
+ }
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+
+ $log->info("Potential Related List for Contact Displayed");
+
+ // First, get the list of IDs.
+ $query = 'select vtiger_users.user_name,vtiger_groups.groupname,vtiger_contactdetails.accountid, vtiger_contactdetails.contactid , vtiger_potential.potentialid, vtiger_potential.potentialname, vtiger_potential.potentialtype, vtiger_potential.sales_stage, vtiger_potential.amount, vtiger_potential.closingdate, vtiger_crmentity.crmid, vtiger_crmentity.smownerid from vtiger_contactdetails inner join vtiger_potential on vtiger_contactdetails.accountid = vtiger_potential.accountid inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_potential.potentialid left join vtiger_potentialgrouprelation on vtiger_potential.potentialid=vtiger_potentialgrouprelation.potentialid left join vtiger_groups on vtiger_groups.groupname=vtiger_potentialgrouprelation.groupname left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid where vtiger_contactdetails.contactid = '.$id.' and vtiger_crmentity.deleted=0';
+ if($this->column_fields['account_id'] != 0)
+ $log->debug("Exiting get_opportunities method ...");
+ return GetRelatedList('Contacts','Potentials',$focus,$query,$button,$returnset);
+ }
+
+
+ /** Returns a list of the associated tasks
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
+ * All Rights Reserved..
+ * Contributor(s): ______________________________________..
+ */
+ function get_activities($id)
+ {
+ global $log, $singlepane_view;
+ $log->debug("Entering get_activities(".$id.") method ...");
+ global $mod_strings;
+
+ $focus = new Activity();
+
+ $button = '';
+
+ if(isPermitted("Calendar",1,"") == 'yes')
+ {
+ $button .= '<input title="New Task" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.return_action.value=\'DetailView\';this.form.module.value=\'Calendar\';this.form.activity_mode.value=\'Task\';this.form.return_module.value=\'Contacts\'" type="submit" name="button" value="'.$mod_strings['LBL_NEW_TASK'].'"> ';
+ $button .= '<input title="New Event" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.return_action.value=\'DetailView\';this.form.module.value=\'Calendar\';this.form.return_module.value=\'Contacts\';this.form.activity_mode.value=\'Events\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_EVENT'].'"> ';
+ }
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+
+ $log->info("Activity Related List for Contact Displayed");
+
+ $query = "SELECT vtiger_users.user_name,vtiger_contactdetails.lastname, vtiger_contactdetails.firstname, vtiger_activity.activityid , vtiger_activity.subject, vtiger_activity.activitytype, vtiger_activity.date_start, vtiger_activity.due_date, vtiger_cntactivityrel.contactid, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime, vtiger_recurringevents.recurringtype from vtiger_contactdetails inner join vtiger_cntactivityrel on vtiger_cntactivityrel.contactid = vtiger_contactdetails.contactid inner join vtiger_activity on vtiger_cntactivityrel.activityid=vtiger_activity.activityid inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_cntactivityrel.activityid left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left outer join vtiger_recurringevents on vtiger_recurringevents.activityid=vtiger_activity.activityid left join vtiger_activitygrouprelation on vtiger_activitygrouprelation.activityid=vtiger_crmentity.crmid left join vtiger_groups on vtiger_groups.groupname=vtiger_activitygrouprelation.groupname where vtiger_contactdetails.contactid=".$id." and vtiger_crmentity.deleted = 0 and (vtiger_activity.activitytype = 'Meeting' or vtiger_activity.activitytype='Call' or vtiger_activity.activitytype='Task') AND ( vtiger_activity.status is NULL OR vtiger_activity.status != 'Completed' ) and ( vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus != 'Held') "; //recurring type is added in Query -Jaguar
+ $log->debug("Exiting get_activities method ...");
+ return GetRelatedList('Contacts','Calendar',$focus,$query,$button,$returnset);
+
+ }
+ /**
+ * Function to get Contact related Task & Event which have activity type Held, Completed or Deferred.
+ * @param integer $id - contactid
+ * returns related Task or Event record in array format
+ */
+ function get_history($id)
+ {
+ global $log;
+ $log->debug("Entering get_history(".$id.") method ...");
+ $query = "SELECT vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.status, vtiger_activity.eventstatus,
+ vtiger_activity.activitytype, vtiger_contactdetails.contactid, vtiger_contactdetails.firstname,
+ vtiger_contactdetails.lastname, vtiger_crmentity.modifiedtime,
+ vtiger_crmentity.createdtime, vtiger_crmentity.description, vtiger_users.user_name
+ from vtiger_activity
+ inner join vtiger_cntactivityrel on vtiger_cntactivityrel.activityid= vtiger_activity.activityid
+ inner join vtiger_contactdetails on vtiger_contactdetails.contactid= vtiger_cntactivityrel.contactid
+ inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_activity.activityid
+ left join vtiger_seactivityrel on vtiger_seactivityrel.activityid=vtiger_activity.activityid
+ left join vtiger_activitygrouprelation on vtiger_activitygrouprelation.activityid=vtiger_activity.activityid
+ left join vtiger_groups on vtiger_groups.groupname=vtiger_activitygrouprelation.groupname
+ inner join vtiger_users on vtiger_crmentity.smcreatorid= vtiger_users.id
+ where (vtiger_activity.activitytype = 'Meeting' or vtiger_activity.activitytype='Call' or vtiger_activity.activitytype='Task')
+ and (vtiger_activity.status = 'Completed' or vtiger_activity.status = 'Deferred' or (vtiger_activity.eventstatus = 'Held' and vtiger_activity.eventstatus != ''))
+ and vtiger_cntactivityrel.contactid=".$id;
+ //Don't add order by, because, for security, one more condition will be added with this query in include/RelatedListView.php
+ $log->debug("Entering get_history method ...");
+ return getHistory('Contacts',$query,$id);
+ }
+ /**
+ * Function to get Contact related Tickets.
+ * @param integer $id - contactid
+ * returns related Ticket records in array format
+ */
+ function get_tickets($id)
+ {
+ global $log, $singlepane_view;
+ global $app_strings;
+ $log->debug("Entering get_tickets(".$id.") method ...");
+ $focus = new HelpDesk();
+
+ $button = '<td valign="bottom" align="right"><input title="New Ticket" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'HelpDesk\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_TICKET'].'"> </td>';
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+
+ $query = "select vtiger_users.user_name,vtiger_crmentity.crmid, vtiger_troubletickets.title, vtiger_contactdetails.contactid, vtiger_troubletickets.parent_id, vtiger_contactdetails.firstname, vtiger_contactdetails.lastname, vtiger_troubletickets.status, vtiger_troubletickets.priority, vtiger_crmentity.smownerid from vtiger_troubletickets inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_troubletickets.ticketid left join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_troubletickets.parent_id left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_ticketgrouprelation on vtiger_troubletickets.ticketid=vtiger_ticketgrouprelation.ticketid left join vtiger_groups on vtiger_groups.groupname=vtiger_ticketgrouprelation.groupname where vtiger_crmentity.deleted=0 and vtiger_contactdetails.contactid=".$id;
+ $log->info("Ticket Related List for Contact Displayed");
+ $log->debug("Exiting get_tickets method ...");
+ return GetRelatedList('Contacts','HelpDesk',$focus,$query,$button,$returnset);
+ }
+ /**
+ * Function to get Contact related Attachments
+ * @param integer $id - contactid
+ * returns related Attachment record in array format
+ */
+ function get_attachments($id)
+ {
+ global $log;
+ $log->debug("Entering get_attachments(".$id.") method ...");
+ $query = "select vtiger_notes.title,'Notes ' AS ActivityType,
+ vtiger_notes.filename, vtiger_attachments.type AS FileType,crm2.modifiedtime AS lastmodified,
+ vtiger_seattachmentsrel.attachmentsid AS attachmentsid, vtiger_notes.notesid AS crmid,
+ crm2.createdtime, vtiger_notes.notecontent AS description, vtiger_users.user_name
+ from vtiger_notes
+ inner join vtiger_crmentity on vtiger_crmentity.crmid= vtiger_notes.contact_id
+ inner join vtiger_crmentity crm2 on crm2.crmid=vtiger_notes.notesid and crm2.deleted=0
+ left join vtiger_seattachmentsrel on vtiger_seattachmentsrel.crmid =vtiger_notes.notesid
+ left join vtiger_attachments on vtiger_seattachmentsrel.attachmentsid = vtiger_attachments.attachmentsid
+ inner join vtiger_users on crm2.smcreatorid= vtiger_users.id
+ where vtiger_crmentity.crmid=".$id;
+ $query .= " union all ";
+ $query .= "select vtiger_attachments.description AS title,'Attachments' AS ActivityType,
+ vtiger_attachments.name AS filename, vtiger_attachments.type AS FileType,crm2.modifiedtime AS lastmodified,
+ vtiger_attachments.attachmentsid AS attachmentsid, vtiger_seattachmentsrel.attachmentsid AS crmid,
+ crm2.createdtime, vtiger_attachments.description, vtiger_users.user_name
+ from vtiger_attachments
+ inner join vtiger_seattachmentsrel on vtiger_seattachmentsrel.attachmentsid= vtiger_attachments.attachmentsid
+ inner join vtiger_crmentity on vtiger_crmentity.crmid= vtiger_seattachmentsrel.crmid
+ inner join vtiger_crmentity crm2 on crm2.crmid=vtiger_attachments.attachmentsid
+ inner join vtiger_users on crm2.smcreatorid= vtiger_users.id
+ where vtiger_crmentity.crmid=".$id."
+ order by createdtime desc";
+ $log->info("Notes&Attachmenmts for Contact Displayed");
+ $log->debug("Exiting get_attachments method ...");
+ return getAttachmentsAndNotes('Contacts',$query,$id);
+ }
+ /**
+ * Function to get Contact related Quotes
+ * @param integer $id - contactid
+ * returns related Quotes record in array format
+ */
+ function get_quotes($id)
+ {
+ global $log, $singlepane_view;
+ $log->debug("Entering get_quotes(".$id.") method ...");
+ global $app_strings;
+ require_once('modules/Quotes/Quotes.php');
+ $focus = new Quotes();
+
+ $button = '';
+ if(isPermitted("Quotes",1,"") == 'yes')
+ {
+ $button .= '<input title="'.$app_strings['LBL_NEW_QUOTE_BUTTON_TITLE'].'" accessyKey="'.$app_strings['LBL_NEW_QUOTE_BUTTON_KEY'].'" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Quotes\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_QUOTE_BUTTON'].'"> </td>';
+ }
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+ $query = "select vtiger_users.user_name,vtiger_crmentity.*, vtiger_quotes.*,vtiger_potential.potentialname,vtiger_contactdetails.lastname from vtiger_quotes inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_quotes.quoteid left outer join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_quotes.contactid left outer join vtiger_potential on vtiger_potential.potentialid=vtiger_quotes.potentialid left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_quotegrouprelation on vtiger_quotes.quoteid=vtiger_quotegrouprelation.quoteid left join vtiger_groups on vtiger_groups.groupname=vtiger_quotegrouprelation.groupname where vtiger_crmentity.deleted=0 and vtiger_contactdetails.contactid=".$id;
+ $log->debug("Exiting get_quotes method ...");
+ return GetRelatedList('Contacts','Quotes',$focus,$query,$button,$returnset);
+ }
+ /**
+ * Function to get Contact related SalesOrder
+ * @param integer $id - contactid
+ * returns related SalesOrder record in array format
+ */
+ function get_salesorder($id)
+ {
+ global $log, $singlepane_view;
+ $log->debug("Entering get_salesorder(".$id.") method ...");
+ require_once('modules/SalesOrder/SalesOrder.php');
+ global $app_strings;
+ $focus = new SalesOrder();
+ $button = '';
+
+ if(isPermitted("SalesOrder",1,"") == 'yes')
+ {
+
+ $button .= '<input title="'.$app_strings['LBL_NEW_SORDER_BUTTON_TITLE'].'" accessyKey="O" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'SalesOrder\';this.form.return_module.value=\'Contacts\';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_SORDER_BUTTON'].'"> ';
+ }
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+
+ $query = "select vtiger_users.user_name,vtiger_crmentity.*, vtiger_salesorder.*, vtiger_quotes.subject as quotename, vtiger_account.accountname, vtiger_contactdetails.lastname from vtiger_salesorder inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_salesorder.salesorderid left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left outer join vtiger_quotes on vtiger_quotes.quoteid=vtiger_salesorder.quoteid left outer join vtiger_account on vtiger_account.accountid=vtiger_salesorder.accountid left outer join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_salesorder.contactid left join vtiger_sogrouprelation on vtiger_salesorder.salesorderid=vtiger_sogrouprelation.salesorderid left join vtiger_groups on vtiger_groups.groupname=vtiger_sogrouprelation.groupname where vtiger_crmentity.deleted=0 and vtiger_salesorder.contactid = ".$id;
+ $log->debug("Exiting get_salesorder method ...");
+ return GetRelatedList('Contacts','SalesOrder',$focus,$query,$button,$returnset);
+ }
+ /**
+ * Function to get Contact related Products
+ * @param integer $id - contactid
+ * returns related Products record in array format
+ */
+ function get_products($id)
+ {
+ global $log, $singlepane_view;
+ $log->debug("Entering get_products(".$id.") method ...");
+ global $app_strings;
+ require_once('modules/Products/Products.php');
+ $focus = new Products();
+ $button = '';
+
+ if(isPermitted("Products",1,"") == 'yes')
+ {
+
+ $button .= '<input title="'.$app_strings['LBL_NEW_PRODUCT'].'" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Products\';this.form.return_module.value=\'Contacts\';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$app_strings['LBL_NEW_PRODUCT'].'"> ';
+ }
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+
+ $query = 'select vtiger_products.productid, vtiger_products.productname, vtiger_products.productcode, vtiger_products.commissionrate, vtiger_products.qty_per_unit, vtiger_products.unit_price, vtiger_crmentity.crmid, vtiger_crmentity.smownerid,vtiger_contactdetails.lastname from vtiger_products inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_products.productid left outer join vtiger_contactdetails on vtiger_contactdetails.contactid = vtiger_products.contactid where vtiger_contactdetails.contactid = '.$id.' and vtiger_crmentity.deleted = 0';
+ $log->debug("Exiting get_products method ...");
+ return GetRelatedList('Contacts','Products',$focus,$query,$button,$returnset);
+ }
+
+ /**
+ * Function to get Contact related PurchaseOrder
+ * @param integer $id - contactid
+ * returns related PurchaseOrder record in array format
+ */
+ function get_purchase_orders($id)
+ {
+ global $log, $singlepane_view;
+ $log->debug("Entering get_purchase_orders(".$id.") method ...");
+ global $app_strings;
+ require_once('modules/PurchaseOrder/PurchaseOrder.php');
+ $focus = new PurchaseOrder();
+
+ $button = '';
+
+ if(isPermitted("PurchaseOrder",1,"") == 'yes')
+ {
+
+ $button .= '<input title="'.$app_strings['LBL_PORDER_BUTTON_TITLE'].'" accessyKey="O" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'PurchaseOrder\';this.form.return_module.value=\'Contacts\';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$app_strings['LBL_PORDER_BUTTON'].'"> ';
+ }
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+
+ $query = "select vtiger_users.user_name,vtiger_crmentity.*, vtiger_purchaseorder.*,vtiger_vendor.vendorname,vtiger_contactdetails.lastname from vtiger_purchaseorder inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_purchaseorder.purchaseorderid left outer join vtiger_vendor on vtiger_purchaseorder.vendorid=vtiger_vendor.vendorid left outer join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_purchaseorder.contactid left join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid left join vtiger_pogrouprelation on vtiger_purchaseorder.purchaseorderid=vtiger_pogrouprelation.purchaseorderid left join vtiger_groups on vtiger_groups.groupname=vtiger_pogrouprelation.groupname where vtiger_crmentity.deleted=0 and vtiger_purchaseorder.contactid=".$id;
+ $log->debug("Exiting get_purchase_orders method ...");
+ return GetRelatedList('Contacts','PurchaseOrder',$focus,$query,$button,$returnset);
+ }
+
+ /** Returns a list of the associated emails
+ * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc..
+ * All Rights Reserved..
+ * Contributor(s): ______________________________________..
+ */
+ function get_emails($id)
+ {
+ global $log, $singlepane_view;
+ $log->debug("Entering get_emails(".$id.") method ...");
+ global $mod_strings;
+
+ $focus = new Emails();
+
+ $button = '';
+
+ if(isPermitted("Emails",1,"") == 'yes')
+ {
+ $button .= '<input title="New Email" accessyKey="F" class="button" onclick="this.form.action.value=\'EditView\';this.form.module.value=\'Emails\';this.form.email_directing_module.value=\'contacts\';this.form.record.value='.$id.';this.form.return_action.value=\'DetailView\'" type="submit" name="button" value="'.$mod_strings['LBL_NEW_EMAIL'].'">';
+ }
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+
+ $log->info("Email Related List for Contact Displayed");
+
+ $query = "select vtiger_activity.activityid, vtiger_activity.subject, vtiger_activity.activitytype, vtiger_users.user_name, vtiger_crmentity.modifiedtime, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_activity.date_start from vtiger_activity, vtiger_seactivityrel, vtiger_contactdetails, vtiger_users, vtiger_crmentity left join vtiger_activitygrouprelation on vtiger_activitygrouprelation.activityid=vtiger_crmentity.crmid left join vtiger_groups on vtiger_groups.groupname=vtiger_activitygrouprelation.groupname where vtiger_seactivityrel.activityid = vtiger_activity.activityid and vtiger_contactdetails.contactid = vtiger_seactivityrel.crmid and vtiger_users.id=vtiger_crmentity.smownerid and vtiger_crmentity.crmid = vtiger_activity.activityid and vtiger_contactdetails.contactid = ".$id." and vtiger_activity.activitytype='Emails' and vtiger_crmentity.deleted = 0";
+ $log->debug("Exiting get_emails method ...");
+ return GetRelatedList('Contacts','Emails',$focus,$query,$button,$returnset);
+ }
+
+ /** Returns a list of the associated Campaigns
+ * @param $id -- campaign id :: Type Integer
+ * @returns list of campaigns in array format
+ */
+
+ function get_campaigns($id)
+ {
+ global $log, $singlepane_view;
+ $log->debug("Entering get_campaigns(".$id.") method ...");
+ global $mod_strings;
+
+ $focus = new Campaigns();
+ if($singlepane_view == 'true')
+ $returnset = '&return_module=Contacts&return_action=DetailView&return_id='.$id;
+ else
+ $returnset = '&return_module=Contacts&return_action=CallRelatedList&return_id='.$id;
+ $button = '';
+
+ $log->info("Campaign Related List for Contact Displayed");
+ $query = "SELECT vtiger_users.user_name, vtiger_campaign.campaignid, vtiger_campaign.campaignname, vtiger_campaign.campaigntype, vtiger_campaign.campaignstatus, vtiger_campaign.expectedrevenue, vtiger_campaign.closingdate, vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.modifiedtime from vtiger_campaign inner join vtiger_campaigncontrel on vtiger_campaigncontrel.campaignid=vtiger_campaign.campaignid inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_campaign.campaignid left join vtiger_campaigngrouprelation on vtiger_campaign.campaignid=vtiger_campaigngrouprelation.campaignid left join vtiger_groups on vtiger_groups.groupname=vtiger_campaigngrouprelation.groupname left join vtiger_users on vtiger_users.id = vtiger_crmentity.smownerid where vtiger_campaigncontrel.contactid=".$id." and vtiger_crmentity.deleted=0";
+
+ $log->debug("Exiting get_campaigns method ...");
+ return GetRelatedList('Contacts','Campaigns',$focus,$query,$button,$returnset);
+
+ }
+ /** Function to export the contact records in CSV Format
+ * @param reference variable - order by is passed when the query is executed
+ * @param reference variable - where condition is passed when the query is executed
+ * Returns Export Contacts Query.
+ */
+ function create_export_query(&$order_by, &$where)
+ {
+ global $log;
+ global $current_user;
+ $log->debug("Entering create_export_query(".$order_by.",".$where.") method ...");
+
+ include("include/utils/ExportUtils.php");
+
+ //To get the Permitted fields query and the permitted fields list
+ $sql = getPermittedFieldsQuery("Contacts", "detail_view");
+ $fields_list = getFieldsListFromQuery($sql);
+
+ $query = "SELECT $fields_list, vtiger_contactgrouprelation.groupname as 'Assigned To Group'
+ FROM vtiger_contactdetails
+ inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid
+ LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id and vtiger_users.status='Active'
+ LEFT JOIN vtiger_account on vtiger_contactdetails.accountid=vtiger_account.accountid
+ left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid
+ left join vtiger_contactsubdetails on vtiger_contactsubdetails.contactsubscriptionid=vtiger_contactdetails.contactid
+ left join vtiger_contactscf on vtiger_contactscf.contactid=vtiger_contactdetails.contactid
+ left join vtiger_customerdetails on vtiger_customerdetails.customerid=vtiger_contactdetails.contactid
+ LEFT JOIN vtiger_contactgrouprelation
+ ON vtiger_contactscf.contactid = vtiger_contactgrouprelation.contactid
+ LEFT JOIN vtiger_groups
+ ON vtiger_groups.groupname = vtiger_contactgrouprelation.groupname
+ LEFT JOIN vtiger_contactdetails vtiger_contactdetails2
+ ON vtiger_contactdetails2.contactid = vtiger_contactdetails.reportsto
+ where vtiger_crmentity.deleted=0";
+ //vtiger_contactdetails2 is added to get the Reports To of Contact
+
+ require('user_privileges/user_privileges_'.$current_user->id.'.php');
+ require('user_privileges/sharing_privileges_'.$current_user->id.'.php');
+ //we should add security check when the user has Private Access
+ if($is_admin==false && $profileGlobalPermission[1] == 1 && $profileGlobalPermission[2] == 1 && $defaultOrgSharingPermission[4] == 3)
+ {
+ //Added security check to get the permitted records only
+ $query = $query." ".getListViewSecurityParameter("Contacts");
+ }
+
+ $log->info("Export Query Constructed Successfully");
+ $log->debug("Exiting create_export_query method ...");
+ return $query;
+ }
+
+
+/** Function to get the Columnnames of the Contacts
+* Used By vtigerCRM Word Plugin
+* Returns the Merge Fields for Word Plugin
+*/
+function getColumnNames()
+{
+ global $log, $current_user;
+ $log->debug("Entering getColumnNames() method ...");
+ require('user_privileges/user_privileges_'.$current_user->id.'.php');
+ if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0)
+ {
+ $sql1 = "select fieldlabel from vtiger_field where tabid=4 and block <> 75";
+ }else
+ {
+ $profileList = getCurrentUserProfileList();
+ $sql1 = "select 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=4 and vtiger_field.block <> 6 and vtiger_field.block <> 75 and vtiger_field.displaytype in (1,2,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_profile2field.profileid in ".$profileList;
+ }
+ $result = $this->db->query($sql1);
+ $numRows = $this->db->num_rows($result);
+ for($i=0; $i < $numRows;$i++)
+ {
+ $custom_fields[$i] = $this->db->query_result($result,$i,"fieldlabel");
+ $custom_fields[$i] = ereg_replace(" ","",$custom_fields[$i]);
+ $custom_fields[$i] = strtoupper($custom_fields[$i]);
+ }
+ $mergeflds = $custom_fields;
+ $log->debug("Exiting getColumnNames method ...");
+ return $mergeflds;
+}
+//End
+/** Function to get the Contacts assigned to a user with a valid email address.
+* @param varchar $username - User Name
+* @param varchar $emailaddress - Email Addr for each contact.
+* Used By vtigerCRM Outlook Plugin
+* Returns the Query
+*/
+function get_searchbyemailid($username,$emailaddress)
+{
+ global $log;
+ global $current_user;
+ require_once("modules/Users/Users.php");
+ $seed_user=new Users();
+ $user_id=$seed_user->retrieve_user_id($username);
+ $current_user=$seed_user;
+ $current_user->retrieve_entity_info($user_id, 'Users');
+ require('user_privileges/user_privileges_'.$current_user->id.'.php');
+ require('user_privileges/sharing_privileges_'.$current_user->id.'.php');
+ $log->debug("Entering get_searchbyemailid(".$username.",".$emailaddress.") method ...");
+ $query = "select vtiger_contactdetails.lastname,vtiger_contactdetails.firstname,
+ vtiger_contactdetails.contactid, vtiger_contactdetails.salutation,
+ vtiger_contactdetails.email,vtiger_contactdetails.title,
+ vtiger_contactdetails.mobile,vtiger_account.accountname,
+ vtiger_account.accountid as accountid from vtiger_contactdetails
+ inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid
+ inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid
+ left join vtiger_account on vtiger_account.accountid=vtiger_contactdetails.accountid
+ left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid
+ LEFT JOIN vtiger_contactgrouprelation ON vtiger_contactdetails.contactid = vtiger_contactgrouprelation.contactid
+ LEFT JOIN vtiger_groups ON vtiger_groups.groupname = vtiger_contactgrouprelation.groupname
+ where vtiger_crmentity.deleted=0 and vtiger_contactdetails.email like '%".$emailaddress."%'";
+ $tab_id = getTabid("Contacts");
+ if($is_admin==false && $profileGlobalPermission[1] == 1 && $profileGlobalPermission[2] == 1 && $defaultOrgSharingPermission[$tab_id] == 3)
+ {
+ $sec_parameter=getListViewSecurityParameter("Contacts");
+ $query .= $sec_parameter;
+
+ }
+ $log->debug("Exiting get_searchbyemailid method ...");
+ return $this->plugin_process_list_query($query);
+}
+
+/** Function to get the Contacts associated with the particular User Name.
+* @param varchar $user_name - User Name
+* Returns query
+*/
+
+function get_contactsforol($user_name)
+{
+ global $log,$adb;
+ global $current_user;
+ require_once("modules/Users/Users.php");
+ $seed_user=new Users();
+ $user_id=$seed_user->retrieve_user_id($user_name);
+ $current_user=$seed_user;
+ $current_user->retrieve_entity_info($user_id, 'Users');
+ require('user_privileges/user_privileges_'.$current_user->id.'.php');
+ require('user_privileges/sharing_privileges_'.$current_user->id.'.php');
+
+ if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0)
+ {
+ $sql1 = "select tablename,columnname from vtiger_field where tabid=4 and block <> 75 and block <> 6 and vtiger_field.block <> 5";
+ }else
+ {
+ $profileList = getCurrentUserProfileList();
+ $sql1 = "select tablename,columnname 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=4 and vtiger_field.block <> 75 and vtiger_field.block <> 6 and vtiger_field.block <> 5 and vtiger_field.displaytype in (1,2,4) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_profile2field.profileid in ".$profileList;
+ }
+ $result1 = $adb->query($sql1);
+ for($i=0;$i < $adb->num_rows($result1);$i++)
+ {
+ $permitted_lists[] = $adb->query_result($result1,$i,'tablename');
+ $permitted_lists[] = $adb->query_result($result1,$i,'columnname');
+ if($adb->query_result($result1,$i,'columnname') == "accountid")
+ {
+ $permitted_lists[] = 'vtiger_account';
+ $permitted_lists[] = 'accountname';
+ }
+ }
+ $permitted_lists = array_chunk($permitted_lists,2);
+ $column_table_lists = array();
+ for($i=0;$i < count($permitted_lists);$i++)
+ {
+ $column_table_lists[] = implode(".",$permitted_lists[$i]);
+ }
+
+ $log->debug("Entering get_contactsforol(".$user_name.") method ...");
+ $query = "select vtiger_contactdetails.contactid as id, ".implode(',',$column_table_lists)." from vtiger_contactdetails
+ inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid
+ inner join vtiger_users on vtiger_users.id=vtiger_crmentity.smownerid
+ left join vtiger_account on vtiger_account.accountid=vtiger_contactdetails.accountid
+ left join vtiger_contactaddress on vtiger_contactaddress.contactaddressid=vtiger_contactdetails.contactid
+ left join vtiger_contactsubdetails on vtiger_contactsubdetails.contactsubscriptionid = vtiger_contactdetails.contactid
+ LEFT JOIN vtiger_contactgrouprelation ON vtiger_contactdetails.contactid = vtiger_contactgrouprelation.contactid
+ LEFT JOIN vtiger_groups ON vtiger_groups.groupname = vtiger_contactgrouprelation.groupname
+ where vtiger_crmentity.deleted=0 and vtiger_users.user_name='".$user_name."'";
+ $log->debug("Exiting get_contactsforol method ...");
+ return $query;
+}
+
+
+ /** Function to handle module specific operations when saving a entity
+ */
+ function save_module($module)
+ {
+ $this->insertIntoAttachment($this->id,$module);
+ }
+
+ /**
+ * This function is used to add the vtiger_attachments. This will call the function uploadAndSaveFile which will upload the attachment into the server and save that attachment information in the database.
+ * @param int $id - entity id to which the vtiger_files to be uploaded
+ * @param string $module - the current module name
+ */
+ function insertIntoAttachment($id,$module)
+ {
+ global $log, $adb;
+ $log->debug("Entering into insertIntoAttachment($id,$module) method.");
+
+ $file_saved = false;
+
+ //This is to added to store the existing attachment id of the contact where we should delete this when we give new image
+ $old_attachmentid = $adb->query_result($adb->query("select * from vtiger_seattachmentsrel where crmid=$id"),0,'attachmentsid');
+
+ foreach($_FILES as $fileindex => $files)
+ {
+ if($files['name'] != '' && $files['size'] > 0)
+ {
+ $file_saved = $this->uploadAndSaveFile($id,$module,$files);
+ }
+ }
+
+ //This is to handle the delete image for contacts
+ if($module == 'Contacts' && $file_saved)
+ {
+ $del_res1 = $adb->query("delete from vtiger_attachments where attachmentsid=$old_attachmentid");
+ $del_res2 = $adb->query("delete from vtiger_seattachmentsrel where attachmentsid=$old_attachmentid");
+ }
+
+ $log->debug("Exiting from insertIntoAttachment($id,$module) method.");
+ }
+
+
+//End
+
+}
+
+?>
More information about the vtigercrm-commits
mailing list