ElixirVault/www/system-brs-core/sys/sysUsers/inc/sysUsersCfg.php

432 lines
13 KiB
PHP

<?php
namespace BRSystems\Core\Sys\sysUsers\inc;
/**
* sysUsersCfg Controller
*
* @category sysUsersCfg Controller
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @since Version 2.0
*/
class sysUsersCfg
{
private $boolCFG = array();
private $tableCFG = array();
private $pluginCFG = array();
private $valueCFG = array();
private $baseBoolCFG = array(
'leftmenu' => 1,
'fullTable' => 0,
//'bShowBtnLabels' => 1,
);
private $baseTableCFG = array(
/* SYSTEM SITE MODULES */
'sysSiteModules'=> array(),
'sysSiteMapPUB' => array(),
'sysSiteMapCMS' => array(),
/* CMS TABLE CFG */
'cmsClassificators'=> array(),
'cmsMessages' => array(),
'cmsSubscriptions' => array(),
'cmsTextManager' => array(),
'cmsMailsConstructor' => array(),
'cmsSvnProjectManager' => array(),
/* Association */
'cmsApartmentsMetersMeasurements' => array(),
'cmsAssociationEmails' => array(),
'cmsApartmentsMeters' => array(),
'cmsApartments' => array(),
/* PUB - for companies and pub users */
'cmsAccountActivation' => array(),
'cmsAccountManager' => array(),
'cmsAccountsToBill' => array(),
'cmsPubUsers' => array(),
'cmsPermissions' => array(),
'cmsPermissionGroups' => array(),
//'cmsCompanies' => array(),
'cmsReportsDefiner' => array(),
/* CMS - mail modules */
'cmsMailEngineSent' => array(),
'cmsMailEngine' => array(),
/* CMS USERS */
//'sysUsers' => array(),
'sysUsersManager' => array(),
'sysPermissionGroups' => array(),
'sysPermissions'=> array(),
'sysIpFilter' => array(),
/* SITE BASE */
'sysApcOverview' => array(),
'sysLanguages' => array(),
'sysMenus' => array(),
'sysTranslations' => array(),
'sysTranslationsPub'=> array(),
'sysActionLog' => array(),
);
public $tablesToControllers = array(
// Dummy module Actual module Function to call
//'pubClassificatorsTypes' => array('m' => 'pubClassificators', 'f' => 'tableFieldsForTypes'),
'sysSiteMapPUB' => array('m' => 'sysSiteMap', 'f' => 'getTableFieldsPub'),
'sysSiteMapCMS' => array('m' => 'sysSiteMap', 'f' => 'getTableFields'),
);
// m - minimize, e - enabled, c - column
private $basePluginCFG = array(
/*'cmsPubUsers' => array('c' => 1, 'e' => true, 'm' => false),
'cmsSuggestions' => array('c' => 3, 'e' => true, 'm' => false),
'cmsSuggestionsComments' => array('c' => 3, 'e' => true, 'm' => false),
'cmsMailEngine' => array('c' => 3, 'e' => false, 'm' => false),*/
);
public $baseValuesCFG = array(
'iRecordsPerPage' => 20,
'sThemetitle' => '',
);
static $baseValuesCFG_hidden = array(
'sThemetitle',
);
public $siteMapId = array(
'cmsMailEngine' => 259,
);
private $userId;
public $oModule;
const bools = 'bools';
const tables = 'tables';
const plugins = 'plugins';
const values = 'values';
/**
* Class constructor
*
* @param int|bool $userId - user id to init
*/
public function __construct($userId = false) {
$this->oModule = new sysUsersModule();
$this->initUserCfg($userId);
}
/**
* Function to initialize config class
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param bool $userId - init class for specific user
* @return array of data
*/
private function initUserCfg($userId = false){
if($userId){
$this->userId = $userId;
if($cfg = $this->oModule->getUserCfg($this->userId)){
$cfg = unserialize($cfg);
}
if(isset($cfg[self::bools]) && is_array($cfg[self::bools])){
$ucfg = array_intersect_key($cfg[self::bools], $this->baseBoolCFG);
$this->boolCFG = array_merge($this->baseBoolCFG, $ucfg);
}else{
$this->boolCFG = $this->baseBoolCFG;
}
if(isset($cfg[self::tables]) && is_array($cfg[self::tables])){
$ucfg = array_intersect_key($cfg[self::tables], $this->baseTableCFG);
$this->tableCFG = array_merge($this->baseTableCFG, $ucfg);
}else{
$this->tableCFG = $this->baseTableCFG;
}
if(isset($cfg[self::plugins]) && is_array($cfg[self::plugins])){
$ucfg = array_intersect_key($cfg[self::plugins], $this->basePluginCFG);
$this->pluginCFG = array_merge($this->basePluginCFG, $ucfg);
}else{
$this->pluginCFG = $this->basePluginCFG;
}
if(isset($cfg[self::values]) && is_array($cfg[self::values])){
$ucfg = array_intersect_key($cfg[self::values], $this->baseValuesCFG);
$this->valueCFG = array_merge($this->baseValuesCFG, $ucfg);
}else{
$this->valueCFG = $this->baseValuesCFG;
}
return true;
}
return false;
}
/**
* Function to save user config
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @return bool true / false
*/
public function saveUserCFG(){
if($this->userId){
$data = $this->getUserCFG();
return $this->oModule->saveUserCFG($this->userId, array('user_cfg' => serialize($data)));
}
return false;
}
/**
* Function to get whole user config
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param mixed $type - direct type access
* @return bool true / false
*/
public function getUserCFG($type = false){
$cfg = array(
self::bools => $this->boolCFG,
self::tables => $this->tableCFG,
self::plugins => $this->pluginCFG,
self::values => $this->valueCFG,
);
if($type && isset($cfg[$type])){
return $cfg[$type];
}else{
return $cfg;
}
}
/**
* Function to get whole base config
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param mixed $type - direct type access
* @return bool true / false
*/
public function getBaseCFG($type = false){
$cfg = array(
self::bools => $this->baseBoolCFG,
self::tables => $this->baseTableCFG,
self::plugins => $this->basePluginCFG,
self::values => $this->baseValuesCFG,
);
if($type && isset($cfg[$type])){
return $cfg[$type];
}else{
return $cfg;
}
}
/**
* Function to get bools user cfg value
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param bool $name - property name
* @return bool true / false
*/
public function getProperty($name = false){
if($name && isset($this->boolCFG[$name])){
return $this->boolCFG[$name];
}
return false;
}
/**
* Function to set bools user cfg value
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param string $name - property name
* @param mixed $value - property value
* @return bool true / false
*/
private function setProperty($name, $value){
if($name && isset($this->baseBoolCFG[$name])){
$this->boolCFG[$name] = $value;
return true;
}
return false;
}
/**
* Function to get tables user cfg value
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param bool $name - property name
* @return bool true / false
*/
public function getTableProperty($name = false){
if($name && isset($this->tableCFG[$name])){
return $this->tableCFG[$name];
}
return false;
}
/**
* Function to set tables user cfg value
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param string $name - property name
* @param mixed $value - property value
* @return bool true / false
*/
private function setTableProperty($name, $value){
if($name && isset($this->baseTableCFG[$name])){
$this->tableCFG[$name] = $value;
return true;
}
return false;
}
/**
* Function to get value user cfg value
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param bool $name - property name
* @return bool true / false
*/
public function getValueProperty($name = false){
if($name && isset($this->valueCFG[$name])){
return $this->valueCFG[$name];
}
return false;
}
/**
* Function to set value user cfg value
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param string $name - property name
* @param mixed $value - property value
* @return bool true / false
*/
private function setValueProperty($name, $value){
if($name && isset($this->baseValuesCFG[$name])){
$this->valueCFG[$name] = $value;
return true;
}
return false;
}
/**
* Function to set user property
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param mixed $prop - property name / array of properties
* @param bool $value - property value
* @return bool true / false
*/
public function addProperties($prop, $value = false){
$bTable = getP("table");
// Handle array save
if(is_array($prop)){
if(count($prop)){
foreach($prop as $k=>$v){
if($bTable){
$this->setTableProperty($k, $v);
}else{
$this->setProperty($k, $v);
}
}
$this->saveUserCFG();
}
return true;
// Handle individual prop value
}elseif($prop && $value){
if($bTable){
$this->setTableProperty($prop, $value);
}else{
$this->setProperty($prop, $value);
}
$this->saveUserCFG();
return true;
}
return false;
}
/**
* Function to set user property advanced
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param array $prop - properties name / array of properties
* @param mixed $type - properties type
* @return bool true / false
*/
public function addPropertiesAdvanced($prop, $type = false){
if($type && $prop && count($prop)){
switch($type){
case self::plugins:
foreach($prop as $k=>$v){
if($k && isset($this->basePluginCFG[$k])){
unset($this->pluginCFG[$k]);
$this->pluginCFG[$k] = $v;
}
}
break;
case self::values:
foreach($prop as $k=>$v){
if($k && isset($this->baseValuesCFG[$k])){
//unset($this->valueCFG[$k]);
$this->valueCFG[$k] = $v;
}
}
break;
}
// Save user config
$this->saveUserCFG();
}
return false;
}
/**
* Function to set properties to core class object
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysUsersCfg Controller
* @param object $coreObj - core module object
* @return bool true
*/
public function setupPropertiesToCore(&$coreObj){
if(!!$coreObj){
if(!empty($this->valueCFG['iRecordsPerPage']))
$coreObj->cmsTableRecordsPerPage = $this->valueCFG['iRecordsPerPage'];
/*if(isset($this->boolCFG['bShowBtnLabels']))
$coreObj->oView->SHOW_BTN_LABELS = $this->boolCFG['bShowBtnLabels'];*/
}
return true;
}
}