晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/include/utils/ |
Upload File : |
<?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: /cvsroot/vtigercrm/vtiger_crm/include/utils/ListViewUtils.php,v 1.32 2006/02/03 06:53:08 mangai Exp $
* Description: Includes generic helper functions used throughout the application.
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
* All Rights Reserved.
* Contributor(s): ______________________________________..
********************************************************************************/
require_once('include/database/PearDatabase.php');
require_once('include/ComboUtil.php'); //new
require_once('include/utils/CommonUtils.php'); //new
require_once('include/utils/UserInfoUtil.php');
require_once('include/Zend/Json.php');
/** Function to get the list query for a module
* @param $module -- module name:: Type string
* @param $where -- where:: Type string
* @returns $query -- query:: Type query
*/
function getListQuery($module, $where = '') {
global $log;
$log->debug("Entering getListQuery(" . $module . "," . $where . ") method ...");
global $current_user;
require('user_privileges/user_privileges_' . $current_user->id . '.php');
require('user_privileges/sharing_privileges_' . $current_user->id . '.php');
$tab_id = getTabid($module);
$userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' =>
'vtiger_users.last_name'), 'Users');
switch ($module) {
Case "HelpDesk":
$query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid,
vtiger_troubletickets.title, vtiger_troubletickets.status,
vtiger_troubletickets.priority, vtiger_troubletickets.parent_id,
vtiger_contactdetails.contactid, vtiger_contactdetails.firstname,
vtiger_contactdetails.lastname, vtiger_account.accountid,
vtiger_account.accountname, vtiger_ticketcf.*, vtiger_troubletickets.ticket_no
FROM vtiger_troubletickets
INNER JOIN vtiger_ticketcf
ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_contactdetails
ON vtiger_troubletickets.parent_id = vtiger_contactdetails.contactid
LEFT JOIN vtiger_account
ON vtiger_account.accountid = vtiger_troubletickets.parent_id
LEFT JOIN vtiger_users
ON vtiger_crmentity.smownerid = vtiger_users.id
LEFT JOIN vtiger_products
ON vtiger_products.productid = vtiger_troubletickets.product_id";
$query .= ' ' . getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Accounts":
//Query modified to sort by assigned to
$query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid,
vtiger_account.accountname, vtiger_account.email1,
vtiger_account.email2, vtiger_account.website, vtiger_account.phone,
vtiger_accountbillads.bill_city,
vtiger_accountscf.*
FROM vtiger_account
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_account.accountid
INNER JOIN vtiger_accountbillads
ON vtiger_account.accountid = vtiger_accountbillads.accountaddressid
INNER JOIN vtiger_accountshipads
ON vtiger_account.accountid = vtiger_accountshipads.accountaddressid
INNER JOIN vtiger_accountscf
ON vtiger_account.accountid = vtiger_accountscf.accountid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid
LEFT JOIN vtiger_account vtiger_account2
ON vtiger_account.parentid = vtiger_account2.accountid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Potentials":
//Query modified to sort by assigned to
$query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid,
vtiger_account.accountname,
vtiger_potential.related_to, vtiger_potential.potentialname,
vtiger_potential.sales_stage, vtiger_potential.amount,
vtiger_potential.currency, vtiger_potential.closingdate,
vtiger_potential.typeofrevenue, vtiger_potential.contact_id,
vtiger_potentialscf.*
FROM vtiger_potential
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_potential.potentialid
INNER JOIN vtiger_potentialscf
ON vtiger_potentialscf.potentialid = vtiger_potential.potentialid
LEFT JOIN vtiger_account
ON vtiger_potential.related_to = vtiger_account.accountid
LEFT JOIN vtiger_contactdetails
ON vtiger_potential.contact_id = vtiger_contactdetails.contactid
LEFT JOIN vtiger_campaign
ON vtiger_campaign.campaignid = vtiger_potential.campaignid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Leads":
$query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid,
vtiger_leaddetails.firstname, vtiger_leaddetails.lastname,
vtiger_leaddetails.company, vtiger_leadaddress.phone,
vtiger_leadsubdetails.website, vtiger_leaddetails.email,
vtiger_leadscf.*
FROM vtiger_leaddetails
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_leaddetails.leadid
INNER JOIN vtiger_leadsubdetails
ON vtiger_leadsubdetails.leadsubscriptionid = vtiger_leaddetails.leadid
INNER JOIN vtiger_leadaddress
ON vtiger_leadaddress.leadaddressid = vtiger_leadsubdetails.leadsubscriptionid
INNER JOIN vtiger_leadscf
ON vtiger_leaddetails.leadid = vtiger_leadscf.leadid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 AND vtiger_leaddetails.converted = 0 " . $where;
break;
Case "Products":
$query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.description, vtiger_products.*, vtiger_productcf.*
FROM vtiger_products
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_products.productid
INNER JOIN vtiger_productcf
ON vtiger_products.productid = vtiger_productcf.productid
LEFT JOIN vtiger_vendor
ON vtiger_vendor.vendorid = vtiger_products.vendor_id
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid";
if ((isset($_REQUEST["from_dashboard"]) && $_REQUEST["from_dashboard"] == true) && (isset($_REQUEST["type"]) && $_REQUEST["type"] == "dbrd"))
$query .= " INNER JOIN vtiger_inventoryproductrel on vtiger_inventoryproductrel.productid = vtiger_products.productid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= " WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Documents":
$query = "SELECT case when (vtiger_users.user_name not like '') then $userNameSql else vtiger_groups.groupname end as user_name,vtiger_crmentity.crmid, vtiger_crmentity.modifiedtime,
vtiger_crmentity.smownerid,vtiger_attachmentsfolder.*,vtiger_notes.*
FROM vtiger_notes
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_notes.notesid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid
LEFT JOIN vtiger_attachmentsfolder
ON vtiger_notes.folderid = vtiger_attachmentsfolder.folderid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Contacts":
//Query modified to sort by assigned to
$query = "SELECT vtiger_contactdetails.firstname, vtiger_contactdetails.lastname,
vtiger_contactdetails.title, vtiger_contactdetails.accountid,
vtiger_contactdetails.email, vtiger_contactdetails.phone,
vtiger_crmentity.smownerid, vtiger_crmentity.crmid
FROM vtiger_contactdetails
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_contactdetails.contactid
INNER JOIN vtiger_contactaddress
ON vtiger_contactaddress.contactaddressid = vtiger_contactdetails.contactid
INNER JOIN vtiger_contactsubdetails
ON vtiger_contactsubdetails.contactsubscriptionid = vtiger_contactdetails.contactid
INNER JOIN vtiger_contactscf
ON vtiger_contactscf.contactid = vtiger_contactdetails.contactid
LEFT JOIN vtiger_account
ON vtiger_account.accountid = vtiger_contactdetails.accountid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid
LEFT JOIN vtiger_contactdetails vtiger_contactdetails2
ON vtiger_contactdetails.reportsto = vtiger_contactdetails2.contactid
LEFT JOIN vtiger_customerdetails
ON vtiger_customerdetails.customerid = vtiger_contactdetails.contactid";
if ((isset($_REQUEST["from_dashboard"]) && $_REQUEST["from_dashboard"] == true) &&
(isset($_REQUEST["type"]) && $_REQUEST["type"] == "dbrd")) {
$query .= " INNER JOIN vtiger_campaigncontrel on vtiger_campaigncontrel.contactid = " .
"vtiger_contactdetails.contactid";
}
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Calendar":
$query = "SELECT vtiger_activity.activityid as act_id,vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.setype,
vtiger_activity.*,
vtiger_contactdetails.lastname, vtiger_contactdetails.firstname,
vtiger_contactdetails.contactid,
vtiger_account.accountid, vtiger_account.accountname
FROM vtiger_activity
LEFT JOIN vtiger_activitycf
ON vtiger_activitycf.activityid = vtiger_activity.activityid
LEFT JOIN vtiger_cntactivityrel
ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid
LEFT JOIN vtiger_contactdetails
ON vtiger_contactdetails.contactid = vtiger_cntactivityrel.contactid
LEFT JOIN vtiger_seactivityrel
ON vtiger_seactivityrel.activityid = vtiger_activity.activityid
LEFT OUTER JOIN vtiger_activity_reminder
ON vtiger_activity_reminder.activity_id = vtiger_activity.activityid
LEFT JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_activity.activityid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users vtiger_users2
ON vtiger_crmentity.modifiedby = vtiger_users2.id
LEFT JOIN vtiger_groups vtiger_groups2
ON vtiger_crmentity.modifiedby = vtiger_groups2.groupid
LEFT OUTER JOIN vtiger_account
ON vtiger_account.accountid = vtiger_contactdetails.accountid
LEFT OUTER JOIN vtiger_leaddetails
ON vtiger_leaddetails.leadid = vtiger_seactivityrel.crmid
LEFT OUTER JOIN vtiger_account vtiger_account2
ON vtiger_account2.accountid = vtiger_seactivityrel.crmid
LEFT OUTER JOIN vtiger_potential
ON vtiger_potential.potentialid = vtiger_seactivityrel.crmid
LEFT OUTER JOIN vtiger_troubletickets
ON vtiger_troubletickets.ticketid = vtiger_seactivityrel.crmid
LEFT OUTER JOIN vtiger_salesorder
ON vtiger_salesorder.salesorderid = vtiger_seactivityrel.crmid
LEFT OUTER JOIN vtiger_purchaseorder
ON vtiger_purchaseorder.purchaseorderid = vtiger_seactivityrel.crmid
LEFT OUTER JOIN vtiger_quotes
ON vtiger_quotes.quoteid = vtiger_seactivityrel.crmid
LEFT OUTER JOIN vtiger_invoice
ON vtiger_invoice.invoiceid = vtiger_seactivityrel.crmid
LEFT OUTER JOIN vtiger_campaign
ON vtiger_campaign.campaignid = vtiger_seactivityrel.crmid";
//added to fix #5135
if (isset($_REQUEST['from_homepage']) && ($_REQUEST['from_homepage'] ==
"upcoming_activities" || $_REQUEST['from_homepage'] == "pending_activities")) {
$query.=" LEFT OUTER JOIN vtiger_recurringevents
ON vtiger_recurringevents.activityid=vtiger_activity.activityid";
}
//end
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query.=" WHERE vtiger_crmentity.deleted = 0 AND activitytype != 'Emails' " . $where;
break;
Case "Emails":
$query = "SELECT DISTINCT vtiger_crmentity.crmid, vtiger_crmentity.smownerid,
vtiger_activity.activityid, vtiger_activity.subject,
vtiger_activity.date_start,
vtiger_contactdetails.lastname, vtiger_contactdetails.firstname,
vtiger_contactdetails.contactid
FROM vtiger_activity
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_activity.activityid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid
LEFT JOIN vtiger_seactivityrel
ON vtiger_seactivityrel.activityid = vtiger_activity.activityid
LEFT JOIN vtiger_contactdetails
ON vtiger_contactdetails.contactid = vtiger_seactivityrel.crmid
LEFT JOIN vtiger_cntactivityrel
ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid
AND vtiger_cntactivityrel.contactid = vtiger_cntactivityrel.contactid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_salesmanactivityrel
ON vtiger_salesmanactivityrel.activityid = vtiger_activity.activityid
LEFT JOIN vtiger_emaildetails
ON vtiger_emaildetails.emailid = vtiger_activity.activityid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_activity.activitytype = 'Emails'";
$query .= "AND vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Faq":
$query = "SELECT vtiger_crmentity.crmid, vtiger_crmentity.createdtime, vtiger_crmentity.modifiedtime,
vtiger_faq.*
FROM vtiger_faq
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_faq.id
LEFT JOIN vtiger_products
ON vtiger_faq.product_id = vtiger_products.productid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Vendors":
$query = "SELECT vtiger_crmentity.crmid, vtiger_vendor.*
FROM vtiger_vendor
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_vendor.vendorid
INNER JOIN vtiger_vendorcf
ON vtiger_vendor.vendorid = vtiger_vendorcf.vendorid
WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "PriceBooks":
$query = "SELECT vtiger_crmentity.crmid, vtiger_pricebook.*, vtiger_currency_info.currency_name
FROM vtiger_pricebook
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_pricebook.pricebookid
INNER JOIN vtiger_pricebookcf
ON vtiger_pricebook.pricebookid = vtiger_pricebookcf.pricebookid
LEFT JOIN vtiger_currency_info
ON vtiger_pricebook.currency_id = vtiger_currency_info.id
WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Quotes":
//Query modified to sort by assigned to
$query = "SELECT vtiger_crmentity.*,
vtiger_quotes.*,
vtiger_quotesbillads.*,
vtiger_quotesshipads.*,
vtiger_potential.potentialname,
vtiger_account.accountname,
vtiger_currency_info.currency_name
FROM vtiger_quotes
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_quotes.quoteid
INNER JOIN vtiger_quotesbillads
ON vtiger_quotes.quoteid = vtiger_quotesbillads.quotebilladdressid
INNER JOIN vtiger_quotesshipads
ON vtiger_quotes.quoteid = vtiger_quotesshipads.quoteshipaddressid
LEFT JOIN vtiger_quotescf
ON vtiger_quotes.quoteid = vtiger_quotescf.quoteid
LEFT JOIN vtiger_currency_info
ON vtiger_quotes.currency_id = vtiger_currency_info.id
LEFT OUTER JOIN vtiger_account
ON vtiger_account.accountid = vtiger_quotes.accountid
LEFT OUTER JOIN vtiger_potential
ON vtiger_potential.potentialid = vtiger_quotes.potentialid
LEFT JOIN vtiger_contactdetails
ON vtiger_contactdetails.contactid = vtiger_quotes.contactid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users as vtiger_usersQuotes
ON vtiger_usersQuotes.id = vtiger_quotes.inventorymanager";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "PurchaseOrder":
//Query modified to sort by assigned to
$query = "SELECT vtiger_crmentity.*,
vtiger_purchaseorder.*,
vtiger_pobillads.*,
vtiger_poshipads.*,
vtiger_vendor.vendorname,
vtiger_currency_info.currency_name
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 JOIN vtiger_contactdetails
ON vtiger_purchaseorder.contactid = vtiger_contactdetails.contactid
INNER JOIN vtiger_pobillads
ON vtiger_purchaseorder.purchaseorderid = vtiger_pobillads.pobilladdressid
INNER JOIN vtiger_poshipads
ON vtiger_purchaseorder.purchaseorderid = vtiger_poshipads.poshipaddressid
LEFT JOIN vtiger_purchaseordercf
ON vtiger_purchaseordercf.purchaseorderid = vtiger_purchaseorder.purchaseorderid
LEFT JOIN vtiger_currency_info
ON vtiger_purchaseorder.currency_id = vtiger_currency_info.id
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "SalesOrder":
//Query modified to sort by assigned to
$query = "SELECT vtiger_crmentity.*,
vtiger_salesorder.*,
vtiger_sobillads.*,
vtiger_soshipads.*,
vtiger_quotes.subject AS quotename,
vtiger_account.accountname,
vtiger_currency_info.currency_name
FROM vtiger_salesorder
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_salesorder.salesorderid
INNER JOIN vtiger_sobillads
ON vtiger_salesorder.salesorderid = vtiger_sobillads.sobilladdressid
INNER JOIN vtiger_soshipads
ON vtiger_salesorder.salesorderid = vtiger_soshipads.soshipaddressid
LEFT JOIN vtiger_salesordercf
ON vtiger_salesordercf.salesorderid = vtiger_salesorder.salesorderid
LEFT JOIN vtiger_currency_info
ON vtiger_salesorder.currency_id = vtiger_currency_info.id
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 JOIN vtiger_contactdetails
ON vtiger_salesorder.contactid = vtiger_contactdetails.contactid
LEFT JOIN vtiger_potential
ON vtiger_potential.potentialid = vtiger_salesorder.potentialid
LEFT JOIN vtiger_invoice_recurring_info
ON vtiger_invoice_recurring_info.salesorderid = vtiger_salesorder.salesorderid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Invoice":
//Query modified to sort by assigned to
//query modified -Code contribute by Geoff(http://forums.vtiger.com/viewtopic.php?t=3376)
$query = "SELECT vtiger_crmentity.*,
vtiger_invoice.*,
vtiger_invoicebillads.*,
vtiger_invoiceshipads.*,
vtiger_salesorder.subject AS salessubject,
vtiger_account.accountname,
vtiger_currency_info.currency_name
FROM vtiger_invoice
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_invoice.invoiceid
INNER JOIN vtiger_invoicebillads
ON vtiger_invoice.invoiceid = vtiger_invoicebillads.invoicebilladdressid
INNER JOIN vtiger_invoiceshipads
ON vtiger_invoice.invoiceid = vtiger_invoiceshipads.invoiceshipaddressid
LEFT JOIN vtiger_currency_info
ON vtiger_invoice.currency_id = vtiger_currency_info.id
LEFT OUTER JOIN vtiger_salesorder
ON vtiger_salesorder.salesorderid = vtiger_invoice.salesorderid
LEFT OUTER JOIN vtiger_account
ON vtiger_account.accountid = vtiger_invoice.accountid
LEFT JOIN vtiger_contactdetails
ON vtiger_contactdetails.contactid = vtiger_invoice.contactid
INNER JOIN vtiger_invoicecf
ON vtiger_invoice.invoiceid = vtiger_invoicecf.invoiceid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Campaigns":
//Query modified to sort by assigned to
//query modified -Code contribute by Geoff(http://forums.vtiger.com/viewtopic.php?t=3376)
$query = "SELECT vtiger_crmentity.*,
vtiger_campaign.*
FROM vtiger_campaign
INNER JOIN vtiger_crmentity
ON vtiger_crmentity.crmid = vtiger_campaign.campaignid
INNER JOIN vtiger_campaignscf
ON vtiger_campaign.campaignid = vtiger_campaignscf.campaignid
LEFT JOIN vtiger_groups
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
LEFT JOIN vtiger_users
ON vtiger_users.id = vtiger_crmentity.smownerid
LEFT JOIN vtiger_products
ON vtiger_products.productid = vtiger_campaign.product_id";
$query .= getNonAdminAccessControlQuery($module, $current_user);
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Users":
$query = "SELECT id,user_name,first_name,last_name,email1,phone_mobile,phone_work,is_admin,status,email2,
vtiger_user2role.roleid as roleid,vtiger_role.depth as depth
FROM vtiger_users
INNER JOIN vtiger_user2role ON vtiger_users.id = vtiger_user2role.userid
INNER JOIN vtiger_role ON vtiger_user2role.roleid = vtiger_role.roleid
WHERE deleted=0 AND status <> 'Inactive'" . $where;
break;
default:
// vtlib customization: Include the module file
$focus = CRMEntity::getInstance($module);
$query = $focus->getListQuery($module, $where);
// END
}
if ($module != 'Users') {
$query = listQueryNonAdminChange($query, $module);
}
$log->debug("Exiting getListQuery method ...");
return $query;
}
/* * This function stores the variables in session sent in list view url string.
* Param $lv_array - list view session array
* Param $noofrows - no of rows
* Param $max_ent - maximum entires
* Param $module - module name
* Param $related - related module
* Return type void.
*/
function setSessionVar($lv_array, $noofrows, $max_ent, $module = '', $related = '') {
$start = '';
if ($noofrows >= 1) {
$lv_array['start'] = 1;
$start = 1;
} elseif ($related != '' && $noofrows == 0) {
$lv_array['start'] = 1;
$start = 1;
} else {
$lv_array['start'] = 0;
$start = 0;
}
if (isset($_REQUEST['start']) && $_REQUEST['start'] != '') {
$lv_array['start'] = ListViewSession::getRequestStartPage();
$start = ListViewSession::getRequestStartPage();
} elseif ($_SESSION['rlvs'][$module][$related]['start'] != '') {
if ($related != '') {
$lv_array['start'] = $_SESSION['rlvs'][$module][$related]['start'];
$start = $_SESSION['rlvs'][$module][$related]['start'];
}
}
if (isset($_REQUEST['viewname']) && $_REQUEST['viewname'] != '')
$lv_array['viewname'] = vtlib_purify($_REQUEST['viewname']);
if ($related == '')
$_SESSION['lvs'][$_REQUEST['module']] = $lv_array;
else
$_SESSION['rlvs'][$module][$related] = $lv_array;
if ($start < ceil($noofrows / $max_ent) && $start != '') {
$start = ceil($noofrows / $max_ent);
if ($related == '')
$_SESSION['lvs'][$currentModule]['start'] = $start;
}
}
/* * Function to get the table headers for related listview
* Param $navigation_arrray - navigation values in array
* Param $url_qry - url string
* Param $module - module name
* Param $action- action file name
* Param $viewid - view id
* Returns an string value
*/
function getRelatedTableHeaderNavigation($navigation_array, $url_qry, $module, $related_module, $recordid) {
global $log, $app_strings, $adb;
$log->debug("Entering getTableHeaderNavigation(" . $navigation_array . "," . $url_qry . "," . $module . "," . $action_val . "," . $viewid . ") method ...");
global $theme;
$relatedTabId = getTabid($related_module);
$tabid = getTabid($module);
$relatedListResult = $adb->pquery('SELECT * FROM vtiger_relatedlists WHERE tabid=? AND
related_tabid=?', array($tabid, $relatedTabId));
if (empty($relatedListResult))
return;
$relatedListRow = $adb->fetch_row($relatedListResult);
$header = $relatedListRow['label'];
$actions = $relatedListRow['actions'];
$functionName = $relatedListRow['name'];
$urldata = "module=$module&action={$module}Ajax&file=DetailViewAjax&record={$recordid}&" .
"ajxaction=LOADRELATEDLIST&header={$header}&relation_id={$relatedListRow['relation_id']}" .
"&actions={$actions}&{$url_qry}";
$formattedHeader = str_replace(' ', '', $header);
$target = 'tbl_' . $module . '_' . $formattedHeader;
$imagesuffix = $module . '_' . $formattedHeader;
$output = '<td align="right" style="padding="5px;">';
if (($navigation_array['prev']) != 0) {
$output .= '<a href="javascript:;" onClick="loadRelatedListBlock(\'' . $urldata . '&start=1\',\'' . $target . '\',\'' . $imagesuffix . '\');" alt="' . $app_strings['LBL_FIRST'] . '" title="' . $app_strings['LBL_FIRST'] . '"><img src="' . vtiger_imageurl('start.gif', $theme) . '" border="0" align="absmiddle"></a> ';
$output .= '<a href="javascript:;" onClick="loadRelatedListBlock(\'' . $urldata . '&start=' . $navigation_array['prev'] . '\',\'' . $target . '\',\'' . $imagesuffix . '\');" alt="' . $app_strings['LNK_LIST_PREVIOUS'] . '"title="' . $app_strings['LNK_LIST_PREVIOUS'] . '"><img src="' . vtiger_imageurl('previous.gif', $theme) . '" border="0" align="absmiddle"></a> ';
} else {
$output .= '<img src="' . vtiger_imageurl('start_disabled.gif', $theme) . '" border="0" align="absmiddle"> ';
$output .= '<img src="' . vtiger_imageurl('previous_disabled.gif', $theme) . '" border="0" align="absmiddle"> ';
}
$jsHandler = "return VT_disableFormSubmit(event);";
$output .= "<input class='small' name='pagenum' type='text' value='{$navigation_array['current']}'
style='width: 3em;margin-right: 0.7em;' onchange=\"loadRelatedListBlock('{$urldata}&start='+this.value+'','{$target}','{$imagesuffix}');\"
onkeypress=\"$jsHandler\">";
$output .= "<span name='listViewCountContainerName' class='small' style='white-space: nowrap;'>";
$computeCount = $_REQUEST['withCount'];
if (PerformancePrefs::getBoolean('LISTVIEW_COMPUTE_PAGE_COUNT', false) === true
|| ((boolean) $computeCount) == true) {
$output .= $app_strings['LBL_LIST_OF'] . ' ' . $navigation_array['verylast'];
} else {
$output .= "<img src='" . vtiger_imageurl('windowRefresh.gif', $theme) . "' alt='" . $app_strings['LBL_HOME_COUNT'] . "'
onclick=\"loadRelatedListBlock('{$urldata}&withCount=true&start={$navigation_array['current']}','{$target}','{$imagesuffix}');\"
align='absmiddle' name='" . $module . "_listViewCountRefreshIcon'/>
<img name='" . $module . "_listViewCountContainerBusy' src='" . vtiger_imageurl('vtbusy.gif', $theme) . "' style='display: none;'
align='absmiddle' alt='" . $app_strings['LBL_LOADING'] . "'>";
}
$output .= '</span>';
if (($navigation_array['next']) != 0) {
$output .= '<a href="javascript:;" onClick="loadRelatedListBlock(\'' . $urldata . '&start=' . $navigation_array['next'] . '\',\'' . $target . '\',\'' . $imagesuffix . '\');"><img src="' . vtiger_imageurl('next.gif', $theme) . '" border="0" align="absmiddle"></a> ';
$output .= '<a href="javascript:;" onClick="loadRelatedListBlock(\'' . $urldata . '&start=' . $navigation_array['verylast'] . '\',\'' . $target . '\',\'' . $imagesuffix . '\');"><img src="' . vtiger_imageurl('end.gif', $theme) . '" border="0" align="absmiddle"></a> ';
} else {
$output .= '<img src="' . vtiger_imageurl('next_disabled.gif', $theme) . '" border="0" align="absmiddle"> ';
$output .= '<img src="' . vtiger_imageurl('end_disabled.gif', $theme) . '" border="0" align="absmiddle"> ';
}
$output .= '</td>';
$log->debug("Exiting getTableHeaderNavigation method ...");
if ($navigation_array['first'] == '')
return;
else
return $output;
}
/* Function to get the Entity Id of a given Entity Name */
function getEntityId($module, $entityName) {
global $log, $adb;
$log->info("in getEntityId " . $entityName);
$query = "select fieldname,tablename,entityidfield from vtiger_entityname where modulename = ?";
$result = $adb->pquery($query, array($module));
$fieldsname = $adb->query_result($result, 0, 'fieldname');
$tablename = $adb->query_result($result, 0, 'tablename');
$entityidfield = $adb->query_result($result, 0, 'entityidfield');
if (!(strpos($fieldsname, ',') === false)) {
$fieldlists = explode(',', $fieldsname);
$fieldsname = "trim(concat(";
$fieldsname = $fieldsname . implode(",' ',", $fieldlists);
$fieldsname = $fieldsname . "))";
$entityName = trim($entityName);
}
if ($entityName != '') {
$sql = "select $entityidfield from $tablename INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = $tablename.$entityidfield " .
" WHERE vtiger_crmentity.deleted = 0 and $fieldsname=?";
$result = $adb->pquery($sql, array($entityName));
if ($adb->num_rows($result) > 0) {
$entityId = $adb->query_result($result, 0, $entityidfield);
}
}
if (!empty($entityId))
return $entityId;
else
return 0;
}
function decode_emptyspace_html($str){
$str = str_replace(" ", "*#chr*#",$str); // (*#chr*#) used as jargan to replace it back with
$str = str_replace("\xc2", "*#chr*#",$str); // Ã (for special chrtr)
$str = decode_html($str);
return str_replace("*#chr*#", " ", $str);
}
function decode_html($str) {
global $default_charset;
// Direct Popup action or Ajax Popup action should be treated the same.
if ((isset($_REQUEST['action']) && $_REQUEST['action'] == 'Popup') || (isset($_REQUEST['file']) && $_REQUEST['file'] == 'Popup'))
return html_entity_decode($str);
else
return html_entity_decode($str, ENT_QUOTES, $default_charset);
}
function popup_decode_html($str) {
global $default_charset;
$slashes_str = popup_from_html($str);
$slashes_str = htmlspecialchars($slashes_str, ENT_QUOTES, $default_charset);
return decode_html(br2nl($slashes_str));
}
//function added to check the text length in the listview.
function textlength_check($field_val) {
global $listview_max_textlength, $default_charset;
if ($listview_max_textlength && $listview_max_textlength > 0) {
$temp_val = preg_replace("/(<\/?)(\w+)([^>]*>)/i", "", $field_val);
if (function_exists('mb_strlen')) {
if (mb_strlen(decode_html($temp_val)) > $listview_max_textlength) {
$temp_val = mb_substr(preg_replace("/(<\/?)(\w+)([^>]*>)/i", "", decode_html($field_val)), 0, $listview_max_textlength, $default_charset) . '...';
}
} elseif (strlen(html_entity_decode($field_val)) > $listview_max_textlength) {
$temp_val = substr(preg_replace("/(<\/?)(\w+)([^>]*>)/i", "", $field_val), 0, $listview_max_textlength) . '...';
}
} else {
$temp_val = $field_val;
}
return $temp_val;
}
/**
* this function accepts a modulename and a fieldname and returns the first related module for it
* it expects the uitype of the field to be 10
* @param string $module - the modulename
* @param string $fieldname - the field name
* @return string $data - the first related module
*/
function getFirstModule($module, $fieldname) {
global $adb;
$sql = "select fieldid, uitype from vtiger_field where tabid=? and fieldname=?";
$result = $adb->pquery($sql, array(getTabid($module), $fieldname));
if ($adb->num_rows($result) > 0) {
$uitype = $adb->query_result($result, 0, "uitype");
if ($uitype == 10) {
$fieldid = $adb->query_result($result, 0, "fieldid");
$sql = "select * from vtiger_fieldmodulerel where fieldid=?";
$result = $adb->pquery($sql, array($fieldid));
$count = $adb->num_rows($result);
if ($count > 0) {
$data = $adb->query_result($result, 0, "relmodule");
}
}
}
return $data;
}
function VT_getSimpleNavigationValues($start, $size, $total) {
$prev = $start - 1;
if ($prev < 0) {
$prev = 0;
}
if ($total === null) {
return array('start' => $start, 'first' => $start, 'current' => $start, 'end' => $start, 'end_val' => $size, 'allflag' => 'All',
'prev' => $prev, 'next' => $start + 1, 'verylast' => 'last');
}
if (empty($total)) {
$lastPage = 1;
} else {
$lastPage = ceil($total / $size);
}
$next = $start + 1;
if ($next > $lastPage) {
$next = 0;
}
return array('start' => $start, 'first' => $start, 'current' => $start, 'end' => $start, 'end_val' => $size, 'allflag' => 'All',
'prev' => $prev, 'next' => $next, 'verylast' => $lastPage);
}
function getRecordRangeMessage($listResult, $limitStartRecord, $totalRows = '') {
global $adb, $app_strings;
$numRows = $adb->num_rows($listResult);
$recordListRangeMsg = '';
if ($numRows > 0) {
$recordListRangeMsg = $app_strings['LBL_SHOWING'] . ' ' . $app_strings['LBL_RECORDS'] .
' ' . ($limitStartRecord + 1) . ' - ' . ($limitStartRecord + $numRows);
if (PerformancePrefs::getBoolean('LISTVIEW_COMPUTE_PAGE_COUNT', false) === true) {
$recordListRangeMsg .= ' ' . $app_strings['LBL_LIST_OF'] . " $totalRows";
}
}
return $recordListRangeMsg;
}
function listQueryNonAdminChange($query, $module, $scope = '') {
$instance = CRMEntity::getInstance($module);
return $instance->listQueryNonAdminChange($query, $scope);
}
function html_strlen($str) {
$chars = preg_split('/(&[^;\s]+;)|/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
return count($chars);
}
function html_substr($str, $start, $length = NULL) {
if ($length === 0)
return "";
//check if we can simply use the built-in functions
if (strpos($str, '&') === false) { //No entities. Use built-in functions
if ($length === NULL)
return substr($str, $start);
else
return substr($str, $start, $length);
}
// create our array of characters and html entities
$chars = preg_split('/(&[^;\s]+;)|/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE);
$html_length = count($chars);
// check if we can predict the return value and save some processing time
if (($html_length === 0) or ($start >= $html_length) or (isset($length) and ($length <= -$html_length)))
return "";
//calculate start position
if ($start >= 0) {
$real_start = $chars[$start][1];
} else { //start'th character from the end of string
$start = max($start, -$html_length);
$real_start = $chars[$html_length + $start][1];
}
if (!isset($length)) // no $length argument passed, return all remaining characters
return substr($str, $real_start);
else if ($length > 0) { // copy $length chars
if ($start + $length >= $html_length) { // return all remaining characters
return substr($str, $real_start);
} else { //return $length characters
return substr($str, $real_start, $chars[max($start, 0) + $length][1] - $real_start);
}
} else { //negative $length. Omit $length characters from end
return substr($str, $real_start, $chars[$html_length + $length][1] - $real_start);
}
}
function counterValue() {
static $counter = 0;
$counter = $counter + 1;
return $counter;
}
?>