vtenext/include/utils/SettingsUtils.php
2021-04-28 20:10:26 +02:00

121 lines
3.4 KiB
PHP

<?php
/*************************************
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
* SPDX-License-Identifier: AGPL-3.0-only
************************************/
// crmv@140887
require_once('include/BaseClasses.php');
class SettingsUtils extends SDKExtendableUniqueClass {
/**
* This function returns the blocks for the settings page
* @return array of setting blocks
*/
public static function getBlocks() {
global $adb, $table_prefix;
$blocksQ = "SELECT * FROM {$table_prefix}_settings_blocks ORDER BY sequence";
$blocksR = $adb->query($blocksQ);
$blocks = array();
if ($blocksR && $adb->num_rows($blocksR)) {
while ($row = $adb->fetchByAssoc($blocksR, -1, false)) {
$blockid = $row['blockid'];
$image = explode('.', $row['image']);
$row['image_type'] = $image[1] ? 'image' : 'icon';
$blocks[$blockid] = $row;
}
}
return $blocks;
}
/**
* This function returns the fields for the settings page
* @return array of setting fields
*/
public static function getFields() {
global $adb, $table_prefix;
$fieldsQ = "SELECT * FROM {$table_prefix}_settings_field WHERE blockid <> ? AND active = 0 ORDER BY blockid, sequence";
$fieldsR = $adb->pquery($fieldsQ, array(self::getBlockId('LBL_MODULE_MANAGER')));
$fields = array();
if ($fieldsR && $adb->num_rows($fieldsR)) {
while ($row = $adb->fetchByAssoc($fieldsR, -1, false)) {
$blockid = $row['blockid'];
$iconpath = $row['iconpath'];
$description = $row['description'];
$linkto = $row['linkto'];
$action = getPropertiesFromURL($linkto, 'action');
$module = getPropertiesFromURL($linkto, 'module');
$name = $row['name'];
$formodule = getPropertiesFromURL($linkto, 'formodule');
$fields[$blockid][] = array('icon' => $iconpath, 'description' => $description, 'link' => $linkto, 'name' => $name, 'action' => $action, 'module' => $module, 'formodule' => $formodule);
}
}
// add blanks for 4-column layout
foreach ($fields as $blockid => &$field) {
if (count($field) > 0 && count($field) < 4) {
for ($i = count($field); $i < 4; $i++) {
$field[$i] = array();
}
}
}
return $fields;
}
/**
* This function is used to get the blockid of the settings block for a given label.
* @param $label - settings label
* @return string type value
*/
public static function getBlockId($label) {
global $adb, $table_prefix;
$blockid = 0;
$blockQ = "SELECT blockid FROM {$table_prefix}_settings_blocks WHERE label = ?";
$blockR = $adb->pquery($blockQ, array($label));
if ($blockR && $adb->num_rows($blockR)) {
$blockid = intval($adb->query_result($blockR, 0, 'blockid'));
}
return $blockid;
}
/**
* This function is used to check if the logged in user is admin and if the module
* is an entity module and the module has a Settings.php file within it
* @param $module - settings module
* @return string yes or no
*/
public static function isModulePermitted($module) {
if (file_exists("modules/$module/Settings.php") && isPermitted('Settings', 'index', '') == 'yes') {
return 'yes';
}
return 'no';
}
// crmv@181170
public static function resetMenuState() {
if ($_REQUEST['reset_session_menu']) {
VteSession::remove('settings_last_menu');
}
if ($_REQUEST['reset_session_menu_tab']) {
VteSession::remove('settings_last_menu');
VteSession::set('settings_last_menu', 'LBL_USERS');
}
}
// crmv@181170e
}