99 lines
2.7 KiB
PHP
99 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace BRSystems\Core\Library\cModSettings;
|
|
|
|
use BRSystems\Core\App\pubDocuments\inc\pubDocumentsModule;
|
|
use BRSystems\Core\Library\cDb\cDb;
|
|
use BRSystems\Core\Library\cJSON\cJSON;
|
|
|
|
/**
|
|
* cModSettings settings access class
|
|
*
|
|
* @category LIB MODULE SETTINGS / cModSettings
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @since Version 1.1
|
|
*/
|
|
class cModSettings
|
|
{
|
|
private $oDb;
|
|
private $sName;
|
|
|
|
const MOD_SETTINGS_PARTNER = 1425;
|
|
const MOD_SETTINGS_DOCUMENTS = 1428;
|
|
|
|
/**
|
|
* Class constructor
|
|
*/
|
|
public function __construct() {
|
|
|
|
$this->sName = get_class();
|
|
$this->oDb = cDb::getInstance();
|
|
|
|
}
|
|
|
|
/**
|
|
* Function to get module settings by types
|
|
*
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @category cModSettings
|
|
* @param int|array $iKeys - keys to select
|
|
* @param bool $bReturnRaw - return RAW format JSON data
|
|
* @param bool $bDevDb - use dev db
|
|
* @return array - settings or array of settings if multiple requested
|
|
*/
|
|
public function getModuleSettingsByKey($iKeys, bool $bReturnRaw = false, bool $bDevDb = false): array
|
|
{
|
|
if (!!$iKeys) {
|
|
|
|
$this->oDb->_querySelect(($bDevDb ? pubDocumentsModule::BILL_CP_DB . "." : "") . 'mod_settings', 'i_text', array('i_type' => (is_array($iKeys) ? $iKeys : array($iKeys))), false, false, false);
|
|
$vData = $this->oDb->getFieldBasedArrayFieldsAdv('i_type', 'i_text');
|
|
|
|
if ($bReturnRaw) {
|
|
return $vData;
|
|
}
|
|
if (!!$vData) {
|
|
foreach ($vData as &$v) {
|
|
$v = cJSON::decode($v, true);
|
|
}
|
|
unset($v);
|
|
|
|
if (is_array($iKeys)) {
|
|
return $vData;
|
|
} elseif (isset($vData[$iKeys])) {
|
|
return $vData[$iKeys];
|
|
}
|
|
}
|
|
}
|
|
|
|
return [];
|
|
}
|
|
|
|
/**
|
|
* Function to save module settings
|
|
*
|
|
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
|
|
* @category cModSettings
|
|
* @param mixed $vCFGData - raw data to convert to JSON & save in settings table
|
|
* @param int $iKey - keys to save
|
|
* @return bool - status
|
|
*/
|
|
public function saveModuleSettingsByKey($vCFGData, int $iKey): bool
|
|
{
|
|
if (!!$iKey && !!$vCFGData) {
|
|
|
|
$vInsert = [
|
|
'i_type' => $iKey,
|
|
'i_text' => cJSON::encode($vCFGData)
|
|
];
|
|
|
|
// Delete & insert data
|
|
$this->oDb->_queryDelete('mod_settings', ['i_type' => $iKey]);
|
|
$this->oDb->_queryInsert('mod_settings', $vInsert, false, true);
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|