269 lines
9.1 KiB
PHP
269 lines
9.1 KiB
PHP
<?php
|
|
/*+********************************************************************************
|
|
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
|
* ("License"); You may not use this file except in compliance with the License
|
|
* The Original Code is: vtiger CRM Open Source
|
|
* The Initial Developer of the Original Code is vtiger.
|
|
* Portions created by vtiger are Copyright (C) vtiger.
|
|
* All Rights Reserved.
|
|
********************************************************************************/
|
|
|
|
require_once 'include/Webservices/DescribeObject.php';
|
|
require_once 'include/Webservices/Utils.php';
|
|
require_once 'include/Webservices/Query.php';
|
|
require_once 'include/utils/CommonUtils.php';
|
|
require_once 'include/Webservices/ModuleTypes.php';
|
|
|
|
/**
|
|
* this function returns the fields for a given module
|
|
*/
|
|
function getFieldList($module_name, $field_name = "") {
|
|
global $adb;
|
|
$tabid = getTabid($module_name);
|
|
|
|
$query = "select * from vtiger_field where tabid = ?";
|
|
$params = array($tabid);
|
|
if (!empty ($field_name)) {
|
|
$query .= " and fieldname not like ?";
|
|
$params = array($tabid,$field_name);
|
|
}
|
|
$query.= " and columnname not like 'imagename' and uitype not in (61, 122) and vtiger_field.presence in (0,2)";
|
|
$result = $adb->pquery($query, $params);
|
|
while ($fieldinfo = $adb->fetch_array($result)) {
|
|
$fields[] = array (
|
|
"fieldlabel" => getTranslatedString($fieldinfo['fieldlabel'], $module_name),
|
|
"fieldname" => $fieldinfo['fieldname'],
|
|
"fieldid" => $fieldinfo['fieldid']
|
|
);
|
|
}
|
|
return $fields;
|
|
}
|
|
|
|
/**
|
|
* this function returns the fields related to a field
|
|
* @param array $result -- mysql query result that contains the field information
|
|
* @param array $lang_strings -- language strings array
|
|
*/
|
|
function getRelatedFieldsList($fieldid, $related_fields) {
|
|
global $adb;
|
|
$relatedFieldsArray = array();
|
|
foreach ($related_fields as $related_field) {
|
|
$temp_relatedfield = array();
|
|
$related_fieldid = $related_field['fieldid'];
|
|
$related_fieldname = $related_field['fieldname'];
|
|
$related_fieldlabel = $related_field['fieldlabel'];
|
|
|
|
if (tooltip_exists($fieldid, $related_fieldid)) {
|
|
$visible = "checked";
|
|
} else {
|
|
$visible = "";
|
|
}
|
|
$temp_relatedfield['fieldlabel'] = $related_fieldlabel;
|
|
$temp_relatedfield['input'] = "<input type='checkbox' value='$related_fieldid' name='$related_fieldid' $visible>";
|
|
$temp_relatedfield['fieldid'] = $related_fieldid;
|
|
$temp_relatedfield['fieldname'] = $related_fieldname;
|
|
$relatedFieldsArray[] = $temp_relatedfield;
|
|
}
|
|
|
|
$relatedFieldsArray = array_chunk($relatedFieldsArray, 4);
|
|
return $relatedFieldsArray;
|
|
}
|
|
|
|
/**
|
|
* function to get the module names
|
|
* @return - all module names other than Calendar and Events
|
|
*/
|
|
function moduleList() {
|
|
global $adb;
|
|
$sql = "select distinct vtiger_field.tabid,name from vtiger_field inner join vtiger_tab on vtiger_field.tabid=vtiger_tab.tabid where name not in ('Calendar','Events','Users')";
|
|
$result = $adb->pquery($sql, array ());
|
|
while ($moduleinfo = $adb->fetch_array($result)) {
|
|
$modulelist[$moduleinfo['name']] = getTranslatedString($moduleinfo['name']);
|
|
}
|
|
return $modulelist;
|
|
}
|
|
|
|
/**
|
|
* this function determines if a given field has the related field already present in the tooltip
|
|
*/
|
|
function tooltip_exists($fieldid, $related_fieldid) {
|
|
global $adb;
|
|
$query = "select * from vtiger_quickview where fieldid=? and related_fieldid=?";
|
|
$result = $adb->pquery($query, array ($fieldid,$related_fieldid));
|
|
|
|
if ($adb->num_rows($result) > 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* function to return the tooltip information
|
|
* @param int $view - there can be multiple tooltips for a single module; this variable decides which is for which field
|
|
* @param int $tabid - tabid of the field for which the tooltip has to be fetched
|
|
* @param int $id - this is the crmid of the record
|
|
* returns the tooltip string
|
|
*/
|
|
function getToolTipText($view,$fieldname,$module,$value){
|
|
global $adb,$app_strings;
|
|
$keys = array_keys($value[0]);
|
|
//getting the quickview list here
|
|
$fieldlabel = Array();
|
|
$fieldid = getFieldid(getTabid($module), $fieldname);
|
|
$quickview = 'select fieldname,fieldlabel from vtiger_quickview inner join vtiger_field on vtiger_quickview.related_fieldid=vtiger_field.fieldid where vtiger_quickview.fieldid = ? and currentview= ? and vtiger_field.presence in (0,2) order by vtiger_quickview.sequence';
|
|
$result = $adb->pquery($quickview,array($fieldid,$view));
|
|
$count = $adb->num_rows($result);
|
|
|
|
$text=array();
|
|
$fieldname = Array();
|
|
for($i=0;$i<$count;$i++){
|
|
$fieldname = $adb->query_result($result,$i,"fieldname");
|
|
|
|
if(in_array($fieldname, $keys)){
|
|
$fieldlabel = $adb->query_result($result,$i,"fieldlabel");
|
|
$label = getTranslatedString($fieldlabel,$module);
|
|
$fieldvalue = $value[0][$fieldname];
|
|
if(empty($fieldvalue)) {
|
|
$fieldvalue = ' ';
|
|
}
|
|
if(strlen($fieldvalue)>35){
|
|
$fieldvalue = substr($fieldvalue,0,35).'...';
|
|
}
|
|
$text[$label] = $fieldvalue;
|
|
}
|
|
}
|
|
return $text;
|
|
}
|
|
|
|
/**
|
|
* this function accepts the tooltip text and returns it after formatting
|
|
* @param $text - the tooltip text which is to be formatted
|
|
* @param $format - the format in which tooltip has to be formatted; default value will be each entry in single line
|
|
*/
|
|
function getToolTip($text,$format = "default"){
|
|
require_once('Smarty_setup.php');
|
|
$smarty = new vtigerCRM_Smarty;
|
|
$tip = "";
|
|
if(trim(implode('', $text)) == ''){
|
|
return $tip;
|
|
}
|
|
|
|
$smarty->assign("TEXT",$text);
|
|
$tip = $smarty->fetch("modules/Tooltip/$format.tpl");
|
|
return $tip;
|
|
}
|
|
|
|
/**
|
|
* this function checks if tooltip exists for a given field or not
|
|
*/
|
|
function ToolTipExists($fieldname,$tabid){
|
|
if(empty($fieldname) || empty($tabid)){
|
|
return false;
|
|
}else{
|
|
global $adb;
|
|
$sql = "select fieldid from vtiger_field where tabid = ? and fieldname = ? and vtiger_field.presence in (0,2)";
|
|
$result = $adb->pquery($sql,array($tabid,$fieldname));
|
|
$count = $adb->num_rows($result);
|
|
if($count > 0){
|
|
$fieldid = $adb->query_result($result,0,'fieldid');
|
|
|
|
$sql = "select * from vtiger_quickview where fieldid = ?";
|
|
$result = $adb->pquery($sql, array($fieldid));
|
|
|
|
if($adb->num_rows($result) > 0){
|
|
return $fieldid;
|
|
}else{
|
|
return false;
|
|
}
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* this function processes the given result and returns the value :: for now we are getting the values for the
|
|
* reference, owner fields, booleans and currency fields; other processing might be added later if required
|
|
* @param array $result - the webservices result object
|
|
* @param array $descObj - the webservices describe object
|
|
* @return array $result - the processes webservices result object
|
|
*/
|
|
function vttooltip_processResult($result, $descObj){
|
|
global $current_user;
|
|
foreach($descObj['fields'] as $field){
|
|
$name = $field['name'];
|
|
$value = $result[0][$name];
|
|
if($field['type']['name'] == 'reference'){
|
|
$name = $field['name'];
|
|
|
|
if(!empty($value)){
|
|
$result[0][$name] = vtws_getName($value,$current_user);
|
|
}else{
|
|
$result[0][$name] = '';
|
|
}
|
|
}elseif($field['type']['name'] == 'owner'){
|
|
list($info, $id) = explode("x",$value);
|
|
$result[0][$name] = getOwnerName($id);
|
|
}elseif($field['type']['name'] == 'boolean'){
|
|
if($result[0][$name] == 1){
|
|
$result[0][$name] = "on";
|
|
}else{
|
|
$result[0][$name] = "off";
|
|
}
|
|
}elseif($field['type']['name'] == 'picklist'){
|
|
$temp = '';
|
|
foreach($field['type']['picklistValues'] as $value){
|
|
if(strcmp($value['value'],$result[0][$name])== 0){
|
|
$temp = $value['value'];
|
|
}
|
|
}
|
|
$result[0][$name] = $temp;
|
|
} elseif($field['type']['name'] == 'date') {
|
|
$result[0][$name] = DateTimeField::convertToUserFormat($value);
|
|
} elseif($field['type']['name'] == 'datetime') {
|
|
$date = new DateTimeField($value);
|
|
$result[0][$name] = $date->getDisplayDateTimeValue();
|
|
} elseif($field['type']['name'] == 'time') {
|
|
$date = new DateTimeField($value);
|
|
$result[0][$name] = $date->getDisplayTime();
|
|
} elseif($field['type']['name'] == 'currency') {
|
|
$currencyField = new CurrencyField($value);
|
|
$result[0][$name] = $currencyField->getDisplayValueWithSymbol();
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* this function returns the fields for a given module in a select dropdown format
|
|
* @param string $module - the module name
|
|
* @return the fields in a select dropdown if fields exist else a blank value
|
|
*/
|
|
function QuickViewFieldList($module){
|
|
global $adb, $app_strings,$mod_strings;
|
|
|
|
$tabid = getTabid($module);
|
|
|
|
$query = "select * from vtiger_field where tabid = ? and columnname not like 'imagename' and uitype not in (61, 122) and vtiger_field.presence in (0,2)";
|
|
$result = $adb->pquery($query,array($tabid));
|
|
if($adb->num_rows($result)>0){
|
|
$fieldlist = '<select onchange="getRelatedFieldInfo(this)" class="importBox" id="pick_field" name="pick_field">';
|
|
$fieldlist.= '<option value="" disabled="true" selected>'
|
|
.$app_strings['LBL_SELECT'].' '. $mod_strings['LBL_FIELD'].'
|
|
</option>';
|
|
while($fieldsinfo=$adb->fetch_array($result)){
|
|
$fieldlabel = $fieldsinfo['fieldlabel'];
|
|
$fieldname = $fieldsinfo['fieldname'];
|
|
$fieldlist.= "<option value='$fieldname'>".getTranslatedString($fieldlabel, $module)."</option>";
|
|
}
|
|
$fieldlist.= '</select>';
|
|
return $fieldlist;
|
|
}else{
|
|
return '';
|
|
}
|
|
}
|
|
|
|
?>
|