1. Легких путей мы не ищем :)
2. Всетаки экономия на поле integer по сравнению допустим с Varchar(20) — 80% (4 байта vs 20 байт) а при условии что кодировка utf-8 еще больше (если я правильно помню определение размера символов в типе varchar mysql то varchar(20)-utf8 занимаєт 40 байт)
даже если не так то всеравно 80%
Здесь есть патч к текущей ревизии.
Очень НЕ РЕКЕМЕНДУЮ ставить на боевой сайт
Ошибки есессно будут прошу писать сюда.
П.С. файл upd.sql должон преобразовать БД к новому виду не затрагивая старый формат
Index: classes/modules/topic/mapper/Topic.mapper.class.php
===================================================================
--- classes/modules/topic/mapper/Topic.mapper.class.php (revision 1053)
+++ classes/modules/topic/mapper/Topic.mapper.class.php (working copy)
@@ -17,6 +17,22 @@
class ModuleTopic_MapperTopic extends Mapper {
+ public function TopicTypeName2Id($oTopicName) {
+ $result = 0;
+ $sql = "SELECT topic_type_id FROM ".Config::Get('db.table.topic_type')." WHERE topic_type_name=?" ;
+ if($aRows = $this->oDb->select($sql,$oTopicName)) {
+ $result = $aRows[0]['topic_type_id'];
+ }
+ return $result;
+ }
+ public function TopicTypeId2Name($oTopicId) {
+ $result = "topic";
+ $sql = "SELECT topic_type_name FROM ".Config::Get('db.table.topic_type')." WHERE topic_type_id=?d" ;
+ if($aRows = $this->oDb->select($sql,$oTopicId)) {
+ $result = $aRows[0]['topic_type_name'];
+ }
+ return $result;
+ }
public function AddTopic(ModuleTopic_EntityTopic $oTopic) {
$sql = "INSERT INTO ".Config::Get('db.table.topic')."
(blog_id,
@@ -33,9 +49,9 @@
topic_forbid_comment,
topic_text_hash
)
- VALUES(?d, ?d, ?, ?, ?, ?, ?, ?d, ?d, ?d, ?, ?, ?)
+ VALUES(?d, ?d, ?d, ?, ?, ?, ?, ?d, ?d, ?d, ?, ?, ?)
";
- if ($iId=$this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getUserId(),$oTopic->getType(),$oTopic->getTitle(),
+ if ($iId=$this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getUserId(),$this->TopicTypeName2Id($oTopic->getType()),$oTopic->getTitle(),
$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash()))
{
$oTopic->setId($iId);
Index: config/config.php
===================================================================
--- config/config.php (revision 1053)
+++ config/config.php (working copy)
@@ -235,6 +235,7 @@
$config['db']['table']['user'] = '___db.table.prefix___user';
$config['db']['table']['blog'] = '___db.table.prefix___blog';
$config['db']['table']['topic'] = '___db.table.prefix___topic';
+$config['db']['table']['topic_type'] = '___db.table.prefix___topic_type';
$config['db']['table']['topic_tag'] = '___db.table.prefix___topic_tag';
$config['db']['table']['comment'] = '___db.table.prefix___comment';
$config['db']['table']['vote'] = '___db.table.prefix___vote';
Index: install/upd.sql
===================================================================
--- install/upd.sql (revision 0)
+++ install/upd.sql (revision 0)
@@ -0,0 +1,12 @@
+create table if not exists `prefix_topic_type` (
+ `topic_type_id` INTEGER not null auto_increment,
+ `topic_type_name` varchar(32),
+ PRIMARY KEY (`topic_type_id`)
+) engine=innoDB default charset=utf8 auto_increment=1;
+insert into `prefix_topic_type` (`topic_type_id`,`topic_type_name`) values(0,'topic');
+insert into `prefix_topic_type` (`topic_type_id`,`topic_type_name`) values(0,'link');
+insert into `prefix_topic_type` (`topic_type_id`,`topic_type_name`) values(0,'question');
+insert into prefix_topic_type(`topic_type_name`)
+select topic_type from prefix_topic where topic_type not in ('topic','link','question') group by topic_type
+alter table prefix_topic add column `topic_type_id` integer not null default 0 after `topic_type`
+update prefix_topic set topic_type_id=(select topic_type_id from snn_topic_type where topic_type_name = topic_type)
Извиняйте что поднимаю тему про topic_type.
Но не будет ли проще для разработчиков исзменить немного таблицу prefix_topic, так. чтоб можно было определять ЛЮБОЙ юзерский тип топика.
Для этого потребуется в худшем случае — еще одна таблица + немного доработать модуль топиков. Это намного бы облегчило жизнь и девелопера плагинов и подальшей поддержке CMS-а
Скачал вчера вашу тему c livestreetcms.com/addons/view/47/
Есть несколько опечаток связанных с переименованием в связи с чем не отображаются иконки контактов. твитера и др.
Надо подправить файл topic.tpl (строчки 68,69,70,71
2. Всетаки экономия на поле integer по сравнению допустим с Varchar(20) — 80% (4 байта vs 20 байт) а при условии что кодировка utf-8 еще больше (если я правильно помню определение размера символов в типе varchar mysql то varchar(20)-utf8 занимаєт 40 байт)
даже если не так то всеравно 80%
Очень НЕ РЕКЕМЕНДУЮ ставить на боевой сайт
Ошибки есессно будут прошу писать сюда.
П.С. файл upd.sql должон преобразовать БД к новому виду не затрагивая старый формат
Но не будет ли проще для разработчиков исзменить немного таблицу prefix_topic, так. чтоб можно было определять ЛЮБОЙ юзерский тип топика.
Для этого потребуется в худшем случае — еще одна таблица + немного доработать модуль топиков. Это намного бы облегчило жизнь и девелопера плагинов и подальшей поддержке CMS-а
Есть несколько опечаток связанных с переименованием в связи с чем не отображаются иконки контактов. твитера и др.
Надо подправить файл topic.tpl (строчки 68,69,70,71