query_result_rowdata($result, $row_count);
$entity_field_info = getEntityFieldNames($module);
$fieldsName = $entity_field_info['fieldname'];
$name = '';
if ($rowdata != '' && count($rowdata) > 0) {
$name = self::getCurrentUserEntityFieldNameDisplay($module, $fieldsName, $rowdata );
}
$name = textlength_check($name);
return $name;
}
static function getFullNameFromArray($module, $fieldValues) {
$entityInfo = getEntityFieldNames($module);
$fieldsName = $entityInfo['fieldname'];
$displayName = self::getCurrentUserEntityFieldNameDisplay($module, $fieldsName, $fieldValues);
return $displayName;
}
static function getCurrentUserEntityFieldNameDisplay($module, $fieldsName, $fieldValues) {
global $current_user;
if(!is_array($fieldsName)) {
return $fieldValues[$fieldsName];
} else {
$accessibleFieldNames = array();
foreach($fieldsName as $field) {
if($module == 'Users' || getColumnVisibilityPermission($current_user->id, $field, $module) == '0') {
$accessibleFieldNames[] = $fieldValues[$field];
}
}
if(count($accessibleFieldNames) > 0) {
return implode(' ', $accessibleFieldNames);
}
}
return '';
}
static function getBlockId($tabid, $label) {
global $adb;
$query = "select blockid from vtiger_blocks where tabid=? and blocklabel = ?";
$result = $adb->pquery($query, array($tabid, $label));
$noofrows = $adb->num_rows($result);
$blockid = '';
if ($noofrows == 1) {
$blockid = $adb->query_result($result, 0, "blockid");
}
return $blockid;
}
static function getParentTab() {
return '';
/*global $log, $default_charset;
$log->debug("Entering getParentTab() method ...");
if (!empty($_REQUEST['parenttab'])) {
if (self::checkParentTabExists($_REQUEST['parenttab'])) {
return vtlib_purify($_REQUEST['parenttab']);
} else {
return self::getParentTabFromModule($_REQUEST['module']);
}
} else {
return self::getParentTabFromModule($_REQUEST['module']);
}*/
}
static function getParentTabFromModule($module) {
return '';
/*
global $adb;
if (file_exists('tabdata.php') && (filesize('tabdata.php') != 0) && file_exists('parent_tabdata.php') && (filesize('parent_tabdata.php') != 0)) {
include('tabdata.php');
include('parent_tabdata.php');
$tabid = $tab_info_array[$module];
foreach ($parent_child_tab_rel_array as $parid => $childArr) {
if (in_array($tabid, $childArr)) {
$parent_tabname = $parent_tab_info_array[$parid];
break;
}
}
return $parent_tabname;
} else {
$sql = "select vtiger_parenttab.* from vtiger_parenttab inner join vtiger_parenttabrel on vtiger_parenttabrel.parenttabid=vtiger_parenttab.parenttabid inner join vtiger_tab on vtiger_tab.tabid=vtiger_parenttabrel.tabid where vtiger_tab.name=?";
$result = $adb->pquery($sql, array($module));
$tab = $adb->query_result($result, 0, "parenttab_label");
return $tab;
}*/
}
/*static function checkParentTabExists($parenttab) {
global $adb;
if (file_exists('parent_tabdata.php') && (filesize('parent_tabdata.php') != 0)) {
include('parent_tabdata.php');
if (in_array($parenttab, $parent_tab_info_array))
return true;
else
return false;
} else {
$result = "select 1 from vtiger_parenttab where parenttab_label = ?";
$noofrows = $adb->num_rows($result);
if ($noofrows > 0)
return true;
else
return false;
}
}*/
static function copyValuesFromRequest($focus) {
if (isset($_REQUEST['record'])) {
$focus->id = $_REQUEST['record'];
}
if (isset($_REQUEST['mode'])) {
$focus->mode = $_REQUEST['mode'];
}
foreach ($focus->column_fields as $fieldname => $val) {
if (isset($_REQUEST[$fieldname])) {
if (is_array($_REQUEST[$fieldname]))
$value = $_REQUEST[$fieldname];
else
$value = trim($_REQUEST[$fieldname]);
$focus->column_fields[$fieldname] = $value;
}
}
}
static function createModuleMetaFile() {
global $adb;
$sql = "select * from vtiger_tab";
$result = $adb->pquery($sql, array());
$num_rows = $adb->num_rows($result);
$result_array = Array();
$seq_array = Array();
$ownedby_array = Array();
for ($i = 0; $i < $num_rows; $i++) {
$tabid = $adb->query_result($result, $i, 'tabid');
$tabname = $adb->query_result($result, $i, 'name');
$presence = $adb->query_result($result, $i, 'presence');
$ownedby = $adb->query_result($result, $i, 'ownedby');
$result_array[$tabname] = $tabid;
$seq_array[$tabid] = $presence;
$ownedby_array[$tabid] = $ownedby;
}
//Constructing the actionname=>actionid array
$actionid_array = Array();
$sql1 = "select * from vtiger_actionmapping";
$result1 = $adb->pquery($sql1, array());
$num_seq1 = $adb->num_rows($result1);
for ($i = 0; $i < $num_seq1; $i++) {
$actionname = $adb->query_result($result1, $i, 'actionname');
$actionid = $adb->query_result($result1, $i, 'actionid');
$actionid_array[$actionname] = $actionid;
}
//Constructing the actionid=>actionname array with securitycheck=0
$actionname_array = Array();
$sql2 = "select * from vtiger_actionmapping where securitycheck=0";
$result2 = $adb->pquery($sql2, array());
$num_seq2 = $adb->num_rows($result2);
for ($i = 0; $i < $num_seq2; $i++) {
$actionname = $adb->query_result($result2, $i, 'actionname');
$actionid = $adb->query_result($result2, $i, 'actionid');
$actionname_array[$actionid] = $actionname;
}
$filename = 'tabdata.php';
if (file_exists($filename)) {
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w+')) {
echo "Cannot open file ($filename)";
exit;
}
require_once('modules/Users/CreateUserPrivilegeFile.php');
$newbuf = '';
$newbuf .="";
fputs($handle, $newbuf);
fclose($handle);
} else {
echo "The file $filename is not writable";
}
} else {
echo "The file $filename does not exist";
}
}
static function createModuleGroupMetaFile() {
global $adb;
$sql = "select parenttabid,parenttab_label from vtiger_parenttab where visible=0 order by sequence";
$result = $adb->pquery($sql, array());
$num_rows = $adb->num_rows($result);
$result_array = Array();
for ($i = 0; $i < $num_rows; $i++) {
$parenttabid = $adb->query_result($result, $i, 'parenttabid');
$parenttab_label = $adb->query_result($result, $i, 'parenttab_label');
$result_array[$parenttabid] = $parenttab_label;
}
$filename = 'parent_tabdata.php';
if (file_exists($filename)) {
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w+')) {
echo "Cannot open file ($filename)";
exit;
}
require_once('modules/Users/CreateUserPrivilegeFile.php');
$newbuf = '';
$newbuf .=" $parvalue) {
$childArray = Array();
//$sql = "select * from vtiger_parenttabrel where parenttabid=? order by sequence";
// vtlib customization: Disabling the tab item based on presence
$sql = "select * from vtiger_parenttabrel where parenttabid=?
and tabid in (select tabid from vtiger_tab where presence in (0,2)) order by sequence";
// END
$result = $adb->pquery($sql, array($parid));
$num_rows = $adb->num_rows($result);
$result_array = Array();
for ($i = 0; $i < $num_rows; $i++) {
$tabid = $adb->query_result($result, $i, 'tabid');
$childArray[] = $tabid;
}
$parChildTabRelArray[$parid] = $childArray;
}
$newbuf .= "\n";
$newbuf .= "\$parent_child_tab_rel_array=" . constructTwoDimensionalValueArray($parChildTabRelArray) . ";\n";
$newbuf .="\n";
$newbuf .="\n";
$newbuf .="\n";
$newbuf .= "?>";
fputs($handle, $newbuf);
fclose($handle);
} else {
echo "The file $filename is not writable";
}
} else {
echo "The file $filename does not exist";
}
}
static function getTemplateDetails($templateid) {
global $adb;
$returndata = Array();
$result = $adb->pquery("select body, subject from vtiger_emailtemplates where templateid=?", array($templateid));
$returndata[] = $templateid;
$returndata[] = $adb->query_result($result, 0, 'body');
$returndata[] = $adb->query_result($result, 0, 'subject');
return $returndata;
}
static function getAnnouncements() {
global $adb;
$sql = " select * from vtiger_announcement inner join vtiger_users on vtiger_announcement.creatorid=vtiger_users.id";
$sql.=" AND vtiger_users.is_admin='on' AND vtiger_users.status='Active' AND vtiger_users.deleted = 0";
$result = $adb->pquery($sql, array());
for ($i = 0; $i < $adb->num_rows($result); $i++) {
$announce = getUserFullName($adb->query_result($result, $i, 'creatorid')) . ' : ' . $adb->query_result($result, $i, 'announcement') . ' ';
if ($adb->query_result($result, $i, 'announcement') != '')
$announcement.=$announce;
}
return $announcement;
}
static function getModuleTranslationStrings($language, $module) {
static $cachedModuleStrings = array();
if(!empty($cachedModuleStrings[$module])) {
return $cachedModuleStrings[$module];
}
$newStrings = Vtiger_Language_Handler::getModuleStringsFromFile($language, $module);
$cachedModuleStrings[$module] = $newStrings['languageStrings'];
return $cachedModuleStrings[$module];
}
static function getTranslatedCurrencyString($str) {
global $app_currency_strings;
if (isset($app_currency_strings) && isset($app_currency_strings[$str])) {
return $app_currency_strings[$str];
}
return $str;
}
static function getIdOfCustomViewByNameAll($module) {
global $adb;
static $cvidCache = array();
if (!isset($cvidCache[$module])) {
$qry_res = $adb->pquery("select cvid from vtiger_customview where viewname='All' and entitytype=?", array($module));
$cvid = $adb->query_result($qry_res, 0, "cvid");
$cvidCache[$module] = $cvid;
}
return isset($cvidCache[$module])? $cvidCache[$module] : '0';
}
static function SaveTagCloudView($id = "") {
global $adb;
$tag_cloud_status = $_REQUEST['tagcloudview'];
if ($tag_cloud_status == "true") {
$tag_cloud_view = 0;
} else {
$tag_cloud_view = 1;
}
if ($id == '') {
$tag_cloud_view = 1;
} else {
$query = "update vtiger_homestuff set visible = ? where userid=? and stufftype='Tag Cloud'";
$adb->pquery($query, array($tag_cloud_view, $id));
}
}
static function clearSmartyCompiledFiles($path = null) {
global $root_directory;
if ($path == null) {
$path = $root_directory . 'test/templates_c/';
}
if(file_exists($path) && is_dir($path)){
$mydir = @opendir($path);
while (false !== ($file = readdir($mydir))) {
if ($file != "." && $file != ".." && $file != ".svn") {
//chmod($path.$file, 0777);
if (is_dir($path . $file)) {
chdir('.');
clear_smarty_cache($path . $file . '/');
//rmdir($path.$file) or DIE("couldn't delete $path$file
"); // No need to delete the directories.
} else {
// Delete only files ending with .tpl.php
if (strripos($file, '.tpl.php') == (strlen($file) - strlen('.tpl.php'))) {
unlink($path . $file) or DIE("couldn't delete $path$file
");
}
}
}
}
@closedir($mydir);
}
}
static function getSmartyCompiledTemplateFile($template_file, $path = null) {
global $root_directory;
if ($path == null) {
$path = $root_directory . 'test/templates_c/';
}
$mydir = @opendir($path);
$compiled_file = null;
while (false !== ($file = readdir($mydir)) && $compiled_file == null) {
if ($file != "." && $file != ".." && $file != ".svn") {
//chmod($path.$file, 0777);
if (is_dir($path . $file)) {
chdir('.');
$compiled_file = get_smarty_compiled_file($template_file, $path . $file . '/');
//rmdir($path.$file) or DIE("couldn't delete $path$file
"); // No need to delete the directories.
} else {
// Check if the file name matches the required template fiel name
if (strripos($file, $template_file . '.php') == (strlen($file) - strlen($template_file . '.php'))) {
$compiled_file = $path . $file;
}
}
}
}
@closedir($mydir);
return $compiled_file;
}
static function postApplicationMigrationTasks() {
self::clearSmartyCompiledFiles();
self::createModuleMetaFile();
self::createModuleMetaFile();
}
static function checkFileAccessForInclusion($filepath) {
global $root_directory;
// Set the base directory to compare with
$use_root_directory = $root_directory;
if (empty($use_root_directory)) {
$use_root_directory = realpath(dirname(__FILE__) . '/../../.');
}
$unsafeDirectories = array('storage', 'cache', 'test');
$realfilepath = realpath($filepath);
/** Replace all \\ with \ first */
$realfilepath = str_replace('\\\\', '\\', $realfilepath);
$rootdirpath = str_replace('\\\\', '\\', $use_root_directory);
/** Replace all \ with / now */
$realfilepath = str_replace('\\', '/', $realfilepath);
$rootdirpath = str_replace('\\', '/', $rootdirpath);
$relativeFilePath = str_replace($rootdirpath, '', $realfilepath);
$filePathParts = explode('/', $relativeFilePath);
if (stripos($realfilepath, $rootdirpath) !== 0 || in_array($filePathParts[0], $unsafeDirectories)) {
die("Sorry! Attempt to access restricted file.");
}
}
/** Function to check the file deletion within the deletable (safe) directories*/
static function checkFileAccessForDeletion($filepath) {
global $root_directory;
// Set the base directory to compare with
$use_root_directory = $root_directory;
if (empty($use_root_directory)) {
$use_root_directory = realpath(dirname(__FILE__) . '/../../.');
}
$safeDirectories = array('storage', 'cache', 'test');
$realfilepath = realpath($filepath);
/** Replace all \\ with \ first */
$realfilepath = str_replace('\\\\', '\\', $realfilepath);
$rootdirpath = str_replace('\\\\', '\\', $use_root_directory);
/** Replace all \ with / now */
$realfilepath = str_replace('\\', '/', $realfilepath);
$rootdirpath = str_replace('\\', '/', $rootdirpath);
$relativeFilePath = str_replace($rootdirpath, '', $realfilepath);
$filePathParts = explode('/', $relativeFilePath);
if (stripos($realfilepath, $rootdirpath) !== 0 || !in_array($filePathParts[0], $safeDirectories)) {
die("Sorry! Attempt to access restricted file.");
}
}
/** Function to check the file access is made within web root directory. */
static function checkFileAccess($filepath) {
if (!self::isFileAccessible($filepath)) {
die("Sorry! Attempt to access restricted file.");
}
}
/**
* function to return whether the file access is made within vtiger root directory
* and it exists.
* @global String $root_directory vtiger root directory as given in config.inc.php file.
* @param String $filepath relative path to the file which need to be verified
* @return Boolean true if file is a valid file within vtiger root directory, false otherwise.
*/
static function isFileAccessible($filepath) {
global $root_directory;
// Set the base directory to compare with
$use_root_directory = $root_directory;
if (empty($use_root_directory)) {
$use_root_directory = realpath(dirname(__FILE__) . '/../../.');
}
$realfilepath = realpath($filepath);
/** Replace all \\ with \ first */
$realfilepath = str_replace('\\\\', '\\', $realfilepath);
$rootdirpath = str_replace('\\\\', '\\', $use_root_directory);
/** Replace all \ with / now */
$realfilepath = str_replace('\\', '/', $realfilepath);
$rootdirpath = str_replace('\\', '/', $rootdirpath);
if (stripos($realfilepath, $rootdirpath) !== 0) {
return false;
}
return true;
}
static function getSettingsBlockId($label) {
global $adb;
$blockid = '';
$query = "select blockid from vtiger_settings_blocks where label = ?";
$result = $adb->pquery($query, array($label));
$noofrows = $adb->num_rows($result);
if ($noofrows == 1) {
$blockid = $adb->query_result($result, 0, "blockid");
}
return $blockid;
}
static function getSqlForNameInDisplayFormat($input, $module, $glue = ' ') {
$entity_field_info = Vtiger_Functions::getEntityModuleInfoFieldsFormatted($module);
$fieldsName = $entity_field_info['fieldname'];
if(is_array($fieldsName)) {
foreach($fieldsName as $key => $value) {
$formattedNameList[] = $input[$value];
}
$formattedNameListString = implode(",'" . $glue . "',", $formattedNameList);
} else {
$formattedNameListString = $input[$fieldsName];
}
$sqlString = "CONCAT(" . $formattedNameListString . ")";
return $sqlString;
}
static function getModuleSequenceNumber($module, $recordId) {
global $adb;
switch ($module) {
case "Invoice":
$res = $adb->query("SELECT invoice_no FROM vtiger_invoice WHERE invoiceid = $recordId");
$moduleSeqNo = $adb->query_result($res, 0, 'invoice_no');
break;
case "PurchaseOrder":
$res = $adb->query("SELECT purchaseorder_no FROM vtiger_purchaseorder WHERE purchaseorderid = $recordId");
$moduleSeqNo = $adb->query_result($res, 0, 'purchaseorder_no');
break;
case "Quotes":
$res = $adb->query("SELECT quote_no FROM vtiger_quotes WHERE quoteid = $recordId");
$moduleSeqNo = $adb->query_result($res, 0, 'quote_no');
break;
case "SalesOrder":
$res = $adb->query("SELECT salesorder_no FROM vtiger_salesorder WHERE salesorderid = $recordId");
$moduleSeqNo = $adb->query_result($res, 0, 'salesorder_no');
break;
}
return $moduleSeqNo;
}
static function getModuleFieldTypeOfDataInfos($tables, $tabid='') {
$result = array();
if (!empty($tabid)) {
$module = Vtiger_Functions::getModuleName($tabid);
$fieldInfos = Vtiger_Functions::getModuleFieldInfos($tabid);
foreach ($fieldInfos as $name => $field) {
if (($field['displaytype'] == '1' || $field['displaytype'] == '3') &&
($field['presence'] == '0' || $field['presence'] == '2')) {
$label = Vtiger_Functions::getTranslatedString($field['fieldlabel'], $module);
$result[$name] = array($label => $field['typeofdata']);
}
}
} else {
throw new Exception('Field lookup by table no longer supported');
}
return $result;
}
static function return_app_list_strings_language($language, $module='Vtiger') {
$strings = Vtiger_Language_Handler::getModuleStringsFromFile($language, $module);
return $strings['languageStrings'];
}
}