+18.11
Рейтинг
50.70
Сила

1099511627776

Спасибо, но это получеться отдельный модуль. А я говорю о штатной функциональности движка.
Всетаки мое мнение что такая функциональность должна быть штатно в движке
Вот как она выглядит в очень МИНИМАЛЬНОМ виде(Патч для текущей версии ЛС):


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-го параметра — не экономично.
Вот как-то так
Ну так как никого не интересует?
Тогда другой вопрос. Кого нибуть интересует такая функциональность ШТАТНО встроенная у ЛС