29 public static function get($moduleId, $name, $default =
"", $siteId =
false)
36 if (!isset(self::$options[$moduleId]))
38 static::load($moduleId);
41 if ($siteId ===
false)
43 $siteId = static::getDefaultSite();
46 $siteKey = ($siteId ==
""?
"-" : $siteId);
48 if (isset(self::$options[$moduleId][$siteKey][$name]))
50 return self::$options[$moduleId][$siteKey][$name];
53 if (isset(self::$options[$moduleId][
"-"][$name]))
55 return self::$options[$moduleId][
"-"][$name];
60 $moduleDefaults = static::getDefaults($moduleId);
61 if (isset($moduleDefaults[$name]))
63 return $moduleDefaults[$name];
79 public static function getRealValue($moduleId, $name, $siteId =
false)
86 if (!isset(self::$options[$moduleId]))
88 static::load($moduleId);
91 if ($siteId ===
false)
93 $siteId = static::getDefaultSite();
96 $siteKey = ($siteId ==
""?
"-" : $siteId);
98 if (isset(self::$options[$moduleId][$siteKey][$name]))
100 return self::$options[$moduleId][$siteKey][$name];
115 static $defaultsCache = array();
116 if (isset($defaultsCache[$moduleId]))
117 return $defaultsCache[$moduleId];
119 if (preg_match(
"#[^a-zA-Z0-9._]#", $moduleId))
124 return $defaultsCache[$moduleId] = array();
128 $varName = str_replace(
".",
"_", $moduleId).
"_default_option";
129 if (isset(${$varName}) && is_array(${$varName}))
130 return $defaultsCache[$moduleId] = ${$varName};
132 return $defaultsCache[$moduleId] = array();
147 if (!isset(self::$options[$moduleId]))
149 static::load($moduleId);
152 if ($siteId ===
false)
154 $siteId = static::getDefaultSite();
157 $result = self::$options[$moduleId][
"-"];
159 if($siteId <>
"" && !empty(self::$options[$moduleId][$siteId]))
162 $result = array_replace($result, self::$options[$moduleId][$siteId]);
168 protected static function load($moduleId)
171 $cacheTtl = static::getCacheTtl();
174 if ($cacheTtl !==
false)
176 if($cache->read($cacheTtl,
"b_option:{$moduleId}", self::CACHE_DIR))
178 self::$options[$moduleId] = $cache->get(
"b_option:{$moduleId}");
186 $sqlHelper = $con->getSqlHelper();
188 self::$options[$moduleId] = [
"-" => []];
193 WHERE MODULE_ID = '{$sqlHelper->forSql($moduleId)}'
196 $res = $con->query($query);
197 while ($ar = $res->fetch())
199 self::$options[$moduleId][
"-"][$ar[
"NAME"]] = $ar[
"VALUE"];
207 SELECT SITE_ID, NAME, VALUE
209 WHERE MODULE_ID = '{$sqlHelper->forSql($moduleId)}'
212 $res = $con->query($query);
213 while ($ar = $res->fetch())
215 self::$options[$moduleId][$ar[
"SITE_ID"]][$ar[
"NAME"]] = $ar[
"VALUE"];
218 catch(Main\DB\SqlQueryException $e){}
220 if($cacheTtl !==
false)
222 $cache->set(
"b_option:{$moduleId}", self::$options[$moduleId]);
238 public static function set($moduleId, $name, $value =
"", $siteId =
"")
245 if ($siteId ===
false)
247 $siteId = static::getDefaultSite();
251 $sqlHelper = $con->getSqlHelper();
260 "MODULE_ID" => $moduleId,
265 $keyFields = [
"MODULE_ID",
"NAME"];
267 $sql = $sqlHelper->prepareMerge(
"b_option", $keyFields, $insertFields, $updateFields);
272 "MODULE_ID" => $moduleId,
274 "SITE_ID" => $siteId,
278 $keyFields = [
"MODULE_ID",
"NAME",
"SITE_ID"];
280 $sql = $sqlHelper->prepareMerge(
"b_option_site", $keyFields, $insertFields, $updateFields);
283 $con->queryExecute(current($sql));
285 static::clearCache($moduleId);
287 static::loadTriggers($moduleId);
291 "OnAfterSetOption_".$name,
292 array(
"value" => $value)
300 "moduleId" => $moduleId,
311 static $triggersCache = array();
312 if (isset($triggersCache[$moduleId]))
315 if (preg_match(
"#[^a-zA-Z0-9._]#", $moduleId))
318 $triggersCache[$moduleId] =
true;
329 static $cacheTtl =
null;
331 if($cacheTtl ===
null)
333 $cacheFlags = Configuration::getValue(
"cache_flags");
334 if (isset($cacheFlags[
"config_options"]))
336 $cacheTtl = $cacheFlags[
"config_options"];
355 public static function delete($moduleId, array $filter = array())
361 $sqlHelper = $con->getSqlHelper();
363 $deleteForSites =
true;
364 $sqlWhere = $sqlWhereSite =
"";
366 if (isset($filter[
"name"]))
368 if ($filter[
"name"] ==
'')
372 $sqlWhere .=
" AND NAME = '{$sqlHelper->forSql($filter["name
"])}'";
374 if (isset($filter[
"site_id"]))
376 if($filter[
"site_id"] <>
"")
378 $sqlWhereSite =
" AND SITE_ID = '{$sqlHelper->forSql($filter["site_id
"], 2)}'";
382 $deleteForSites =
false;
385 if($moduleId ==
'main')
388 AND NAME NOT LIKE '~%'
389 AND NAME NOT IN ('crc_code', 'admin_passwordh', 'server_uniq_id','PARAM_MAX_SITES', 'PARAM_MAX_USERS')
394 $sqlWhere .=
" AND NAME <> '~bsm_stop_date'";
397 if($sqlWhereSite ==
'')
401 WHERE MODULE_ID = '{$sqlHelper->forSql($moduleId)}'
409 DELETE FROM b_option_site
410 WHERE MODULE_ID = '{$sqlHelper->forSql($moduleId)}'
416 static::clearCache($moduleId);
421 unset(self::$options[$moduleId]);
423 if (static::getCacheTtl() !==
false)
426 $cache->clean(
"b_option:{$moduleId}", self::CACHE_DIR);
434 if ($defaultSite ===
null)
437 if ($context !=
null)
439 $defaultSite = $context->getSite();