Спасибо, но это получеться отдельный модуль. А я говорю о штатной функциональности движка.
Всетаки мое мнение что такая функциональность должна быть штатно в движке
Вот как она выглядит в очень МИНИМАЛЬНОМ виде(Патч для текущей версии ЛС):
diff --git a/config/config.php b/config/config.php
index 0d7c5b1..9ab2c0c 100644
--- a/config/config.php
+++ b/config/config.php
@@ -280,6 +280,8 @@ $config['db']['params']['dbname'] = 'social';
$config['db']['table']['prefix'] = 'prefix_';
$config['db']['table']['user'] = '___db.table.prefix___user';
+$config['db']['table']['moduleparams'] = '___db.table.prefix___moduleparams';
+
$config['db']['table']['blog'] = '___db.table.prefix___blog';
$config['db']['table']['topic'] = '___db.table.prefix___topic';
$config['db']['table']['topic_tag'] = '___db.table.prefix___topic_tag';
diff --git a/engine/classes/Engine.class.php b/engine/classes/Engine.class.php
index 790f51f..7b04b1e 100644
--- a/engine/classes/Engine.class.php
+++ b/engine/classes/Engine.class.php
@@ -950,6 +950,19 @@ class Engine extends Object {
//throw new Exception("(autoload '$sClassName') Can not load CLASS-file");
}
}
+
+ public static function setParam($obj,$parname,$parvalue) {
+ $oConnect = Engine::getInstance()->Database_GetConnect();
+ $sql = "INSERT INTO ".Config::Get('db.table.moduleparams')." (modulename,paramname,paramvalue) values (?,?,?)";
+ $oConnect->query($sql,get_class($obj),$parname,$parvalue);
+ }
+
+ public static function getParam($obj,$parname) {
+ $oConnect = Engine::getInstance()->Database_GetConnect();
+ $sql = "SELECT paramvalue FROM ".Config::Get('db.table.moduleparams')." WHERE modulename=? AND paramname=?";
+ $aRow=$oConnect->selectRow($sql,get_class($obj),$parname);
+ return $aRow['paramvalue'];
+ }
}
diff --git a/install/sql.sql b/install/sql.sql
index 6f08620..a961497 100644
--- a/install/sql.sql
+++ b/install/sql.sql
@@ -145,6 +145,7 @@ CREATE TABLE IF NOT EXISTS `prefix_country` (
KEY `country_name` (`country_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
-- --------------------------------------------------------
--
@@ -789,3 +790,9 @@ ALTER TABLE `prefix_user_field_value`
--
ALTER TABLE `prefix_vote`
ADD CONSTRAINT `prefix_topic_vote_fk1` FOREIGN KEY (`user_voter_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
+
+CREATE TABLE IF NOT EXISTS `prefix_moduleparams` (
+ `modulename` varchar(60) NOT NULL,
+ `paramname` varchar(60) NOT NULL,
+ `paramvalue` varchar(60) NOT NULL,
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ну к примеру поля таблицы могут выглядеть так:
modulename varchar(),
paramname varchar(),
paramval varchar()
Циферки можна потом расставить
в Engine внедрить методы:
GetParam, SetParam, EnumParam
Которые и будуть выбирать соответствующие параметры из БД автоматически подставляя в поле modulename — название модуля из которого вызываются.
Как то так
Приведу пример: Есть плагин «Гороскопы» у него есть возможность выбирать из 7 разных типов гороскопов. Причем выбирать через админку (т.е. не правкой конфигов). Теперь я хочу чтобы этот ВЫБОР был сохранен. Соответственно либо в конфиге (неудобный способ) или в общей таблице ПАРАМЕТРОВ модуля (удобный способ).
В данный момент это делается через создание собственной таблицы с параметрами. но согласитесь создавать целую таблицу ради к примеру 1-го параметра — не экономично.
Вот как-то так
Всетаки мое мнение что такая функциональность должна быть штатно в движке
Вот как она выглядит в очень МИНИМАЛЬНОМ виде(Патч для текущей версии ЛС):
modulename varchar(),
paramname varchar(),
paramval varchar()
Циферки можна потом расставить
в Engine внедрить методы:
GetParam, SetParam, EnumParam
Которые и будуть выбирать соответствующие параметры из БД автоматически подставляя в поле modulename — название модуля из которого вызываются.
Как то так
В данный момент это делается через создание собственной таблицы с параметрами. но согласитесь создавать целую таблицу ради к примеру 1-го параметра — не экономично.
Вот как-то так