Если вы являетесь вебмастером администрирующим форум Bullet Energy эта информация будет для вас очень полезна:)
Всем привет, сегодня с выходом версии 1.3 я хочу обрадовать вас нужными фичами
Первый хак простой и очень нужный: авто-закрепление первого поста форума на верху как шапка
Открываем файл находим: newtopic.php
parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_topic (id,id_parent,title,reply_count,view_count,autor_id,autor,post_date,last_reply_date,last_reply_info,rating,topic_fixed,topic_type,topic_private_user,topic_descr_site,topic_approve,topic_meta,vote_id) VALUES (NULL," . parent::$globalParam['id'] . ",'{$option['topicName']}',0,0," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "'," . parent::$timeParameters['time'] . "," . parent::$timeParameters['time'] . ",0,0,0,{$option['topicType']},'{$option['topicIsPrivateUser']}','{$option['topicDescription']}',{$option['aprove']},'{$option['meta']}', {$option['poll']})") ;
Заменяем на:
//
// first post auto pinned hack by RDN TEAM
// parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_topic (id,id_parent,title,reply_count,view_count,autor_id,autor,post_date,last_reply_date,last_reply_info,rating,topic_fixed,topic_type,topic_private_user,topic_descr_site,topic_approve,topic_meta,vote_id) VALUES (NULL," . parent::$globalParam['id'] . ",'{$option['topicName']}',0,0," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "'," . parent::$timeParameters['time'] . "," . parent::$timeParameters['time'] . ",0,0,0,{$option['topicType']},'{$option['topicIsPrivateUser']}','{$option['topicDescription']}',{$option['aprove']},'{$option['meta']}', {$option['poll']})") ;
parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_topic (id,id_parent,title,reply_count,view_count,autor_id,autor,post_date,last_reply_date,last_reply_info,rating,topic_fixed,topic_type,topic_private_user,topic_descr_site,topic_approve,topic_meta,vote_id,is_fixed_count) VALUES (NULL," . parent::$globalParam['id'] . ",'{$option['topicName']}',0,0," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "'," . parent::$timeParameters['time'] . "," . parent::$timeParameters['time'] . ",0,0,0,{$option['topicType']},'{$option['topicIsPrivateUser']}','{$option['topicDescription']}',{$option['aprove']},'{$option['meta']}', {$option['poll']}, '1')") ;
//
Находим:
parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_message (id,id_topic,autors_id,message_autor,message_autor_ip,message_date,message_text,
message_approve,tree_id,attachment,user_thanks) VALUES (NULL,{$option['topicInsertId']}," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "',{$option['ipUser']}," . parent::$timeParameters['time'] . ",'{$option['topicOneMessage']}',{$option['a
prove']}," . parent::$globalParam['id'] . ",0,'')") ;
Заменяем на:
// parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_message (id,id_topic,autors_id,message_autor,message_autor_ip,message_date,message_text,
message_approve,tree_id,attachment,user_thanks) VALUES (NULL,{$option['topicInsertId']}," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "',{$option['ipUser']}," . parent::$timeParameters['time'] . ",'{$option['topicOneMessage']}',{$option['a
prove']}," . parent::$globalParam['id'] . ",0,'')") ;
parent::$db->query("INSERT INTO " . DBNAME . "." . PREFIX . "_be_message (id,id_topic,autors_id,message_autor,message_autor_ip,message_date,message_text,
message_approve,tree_id,attachment,user_thanks,fixap_msg) VALUES (NULL,{$option['topicInsertId']}," . parent::$member_id['user_id'] . ",'" . parent::$member_id['name'] . "',{$option['ipUser']}," . parent::$timeParameters['time'] . ",'{$option['topicOneMessage']}',{$option['a
prove']}," . parent::$globalParam['id'] . ",0,'',1)") ;
Второй хак не менее нужный, подойдет для форумов, решает проблему не красивых спидбаров:
Суть его работы в убирании дублирующего заголовка открытого топика
Было:
Стало:
Откройте файл: primary.php
Найдите:
$speedbar .= $this->getPosotionUserTree($data['idTree'], false) . '<li class="last"><a class="no_linck">' . $data['titlAction'] . '</a><span class="arrow"><span></span></span></li>' ;
Замените на:
// hack hack small speedbar by RDN TEAM!
//$speedbar .= $this->getPosotionUserTree($data['idTree'], false) . '<li class="last"><a class="no_linck">' . $data['titlAction'] . '</a><span class="arrow"><span></span></span></li>' ;
$speedbar .= $this->getPosotionUserTree($data['idTree'], false) ;
//
Третий хак обрежет большие заголовки длинных топиков, но не бойтесь, смысл заголовка не будет утерян потому что при наведении на заголовок мышкой мы получим его полную длинну.
Наша цель: файл categories.php
Найти:
parent::$tpl->set('{title}', $data['title']) ;
Заменить на:
// hack topics text-limit by RDN TEAM
if( strlen($data['title']) > 40 ) {
parent::$tpl->set('{title}', "<span title=\"".$data['title']."\">".substr( $data['title'], 0, 40 ). " ...</span>");
} else {
parent::$tpl->set('{title}', $data['title']) ;
}
//
// parent::$tpl->set('{title}', $data['title']) ;
//
В дополние к этому хаку могу предложить так-же обрезание заголовков топиков при выводе топиков в блоке на сайте "Последние новости на форуме"
Файл: bullet_api.class.php
Найти:
$this->tpl->set('{title}', $row['title'] );
Заменить на:
// hack text limit by RDN TEAM
if( strlen($row['title']) > 55 ) {
$this->tpl->set('{title}', substr( $row['title'], 0,55 ). " ...");
} else {
$this->tpl->set('{title}', stripslashes($row['title']) );
}
//
В завершении исправим досадную ошибку с точкой рядом с аватарой при предпросмотре вашего поста:
Откроем: preview_topic_new.tpl
Найдем:
<li class="msg">
Заменим на:
<li class="msg" style="list-style-type: none;">
UPD:
Фиксы для функции обсудить на форуме:
1) Убирает автосмену регистра первого символа.
2) Убирает пробел перед темой если префикс в шаблоне "обсуждение" пустой.
Файл: /engine/bullet_energy/action/site/discussion.php
$option = array( ... );
Заменить на:
// hack disabled prefix by RDN TEAM
if ( parent::$cache['template']['discussion']['prefix'] == "" ) parent::$cache['template']['discussion']['prefix'] = null;
else parent::$cache['template']['discussion']['prefix'] = parent::$cache['template']['discussion']['prefix'] . " ";
// hack disabled prefix by RDN TEAM
$option = array(
'foto' => parent::$member_id['foto'] ? parent::$member_id['foto'] : '',
'ipUser' => ip2long($_SERVER['REMOTE_ADDR']),
'meta' => parent::$db->safesql(serialize(array(
parent::$cache['template']['discussion']['prefix'] . $row['post']['title'],
'',
''))),
// hack hack no first symbol change register by RDN TEAM
// 'title' => parent::$helper->ucfirs(parent::$helper->dle_substr(parent::$cache['template']['discussion']['prefix'] . ' ' . $row['post']['title'], 0, 250, parent::$config['DLE']['charset']), parent::$config['DLE']['charset'])) ;
'title' => parent::$helper->dle_substr(parent::$cache['template']['discussion']['prefix'] . $row['post']['title'], 0, 250, parent::$config['DLE']['charset']), parent::$config['DLE']['charset']);
//
ADD: Сделаем наш форум более полным, теперь "статистика форума" выводиться и в топиках тоже!
Файл: /engine/bullet_energy/action/site/showtopic.php
Найти:
'titlTree' => parent::$cache['tree'][$row['id_parent']]['tree_title']), 'widget' => $option['widget'])) ;
Заменить на:
// hack: show statistics in topic page by RDN TEAM
// 'titlTree' => parent::$cache['tree'][$row['id_parent']]['tree_title']), 'widget' => $option['widget'])) ;
'titlTree' => parent::$cache['tree'][$row['id_parent']]['tree_title']),
'widget' => $option['widget'] = parent::$helper->getSidebar() )) ;
//
ADD: Решено полностью выпилить систему автосмены регистра у топиков, ибо эта шляпа не работает или работает, но делает любой регистр => маленьким. Выпиливал самым простым способом, обнулением функции (я ленивый).
Файл: /engine/bullet_energy/helper/
Находим:
public function ucfirs($value = '', $charset = '') {
...
}
Заменяем на:
// RDN TEAM
public function ucfirs($value = '', $charset = '')
{
return $value;
// fuck this holy shit!
/*
$value = $this->element_strtolower($value) ;
if($this->element_strtolower($charset) == "utf-8") {
$value = mb_ereg_replace("^[\ ]+", "", $value) ;
return mb_strtoupper(mb_substr($value, 0, 1, "UTF-8"), "UTF-8") . mb_substr($value, 1, mb_strlen($value), "UTF-8") ;
} else
return ucfirst($value) ;
*/
// fuck this holy shit!
}
// RDN TEAM
UPD: Добавлен лимит текста в блоке "последние сообщения" при просмотре форумов. Стандартно окончание темы просто скрывается средствами css.
До:
После:
Фыксить будем файл: /engine/bullet_energy/action/site/category.php
Найти:
parent::$tpl->set('{lastTopicName}', $last[2]) ;
Заменим на:
// hack last topics text-limit in forums by RDN TEAM
if( strlen(htmlspecialchars($last[2])) > 20 ) {
parent::$tpl->set('{lastTopicName}', "<span title=\"".htmlspecialchars($last[2])."\">".substr( htmlspecialchars($last[2]), 0, 20 ). " ...</span>");
} else {
parent::$tpl->set('{lastTopicName}', htmlspecialchars($last[2])) ;
}
//
// parent::$tpl->set('{lastTopicName}', $last[2]) ;
Продолжение фикса:
файл: /engine/bullet_energy/action/site/index.php
Найти:
parent::$tpl->set('{lastTopicName}', stripslashes($element['tree_last_info'][2])) ;
Заменить на:
// hack last topics text-limit in forums by RDN TEAM
if( strlen(stripslashes($element['tree_last_info'][2])) > 20 ) {
parent::$tpl->set('{lastTopicName}', "<span title=\"".stripslashes($element['tree_last_info'][2])."\">".substr( stripslashes($element['tree_last_info'][2]), 0, 20 ). " ...</span>");
} else {
parent::$tpl->set('{lastTopicName}', stripslashes($element['tree_last_info'][2])) ;
}
//
// parent::$tpl->set('{lastTopicName}', stripslashes($element['tree_last_info'][2])) ;
//
Опытным методом было выяснено оптимальное значение в 20 символов, в предыдущем посте тоже исправьте в двух местах его.
Видел на оффициальном форуме многие жаждут модуль репутации на форуме, вот реализовал :)
Интеграция модуля репутация + количество благодарностей за новости на сайте:
+ Стандартные иконки плюс\минус у репутации имеют пути: {THEME}/images/repa_up.gif и {THEME}/images/repa_dn.gif (в инструкции ниже, я юзаю стандартные иконки DLE)
+ Репутация обновляется при изменении (AJAX FIXED)
+ Нулевая нагрузка, никаких посторонних запросов.
+ Поддержка стилей вывода: расскоментируйте нужный вам визуальный тип репутации (0|0) (0|0|0) (0)
Приступим к модифицированию: Файл: /engine/bullet_energy/action/site/showtopic.php
Найдём строку:
parent::$tpl->set('{messageAutorIp}', parent::$helper->ckeckModulesConfig('be_moder_ip_view') ? long2ip($row['message_autor_ip']) : '') ;
После неё добавим:
// repa&thanx hack by RDN TEAM
if($row['repa_off'] == 0) {
$option['repa'] = explode('|',$row['repa_mod']);
// тип репутации (0|0) раскоментируйте по необходимости
//$option['view'] = "<span id=\"repa-{$row['autors_id']}-".$row['id']."\"><a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/\"><strong>(<font color=green>".$option['repa'][0]."</font>|<font color=red>".$option['repa'][1]."</font>)</strong></a></span>";
// тип репутации (0|0|0) используется по умолчанию
$option['view'] = "<span id=\"repa-{$row['autors_id']}-".$row['id']."\"><a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/\"><strong>(<font color=green>".$option['repa'][0]."</font>|".$row['repa']."|<font color=red>".$option['repa'][1]."</font>)</strong></a></span>";
// тип репутации (0) раскоментируйте по необходимости
//$option['view'] = "<span id=\"repa-{$row['autors_id']}-".$row['id']."\"><a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/\"><strong>(<".$row['repa'].")</strong></a></span>";
parent::$tpl->set('{repa}', "<a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/plus/\" onclick=\"repa_global('form', '1', '{$row['autors_id']}', '".$row['id']."'); return false;\" >
<img title=\"Повысить репутацию\" src=\"{THEME}/dleimages/up.gif\" border=\"0\" /></a>".$option['view']."
<a href=\"/user/reputation/" . urlencode($row['message_autor']) . "/minus/\" onclick=\"repa_global('form', '0', '{$row['autors_id']}', '".$row['id']."'); return false;\" >
<img title=\"Понизить репутацию\" src=\"{THEME}/dleimages/down.gif\" border=\"0\" /></a>") ;
} else {
parent::$tpl->set('{repa}','Репутация отключена');
}
if(!$row['thx_num']) parent::$tpl->set('{thxnum}', '0');
else parent::$tpl->set('{thxnum}', $row['thx_num']);
// repa&thanx hack by RDN TEAM
Для вывода репутации на форуме добавьте в файл шаблона: short_message.tpl
в нужное вам место:
{repa}
Для вывода благодарностей за статьи на форуме добавьте в файл шаблона: short_message.tpl
в нужное вам место:
{thxnum}
UPD: Ещё исправление по репутации, пути к файлам изображений указывайте статичные, с именем темы и тд.. + теже самые изменения необходимо применить к файлу: /engine/bullet_energy/action/site/newpost.php
UPD: Сделал фикс позволяющий оформлять первый пост темы как шапку своим дизайном:
UPD2: Внесены существенные исправления!
Открыть файл: /engine/bullet_energy/action/site/showtopic.php
Найти:
if(parent::$cache['title'][$row['forum_inseption']['title']]['title']) {
Выше вставить:
// First have custom style? Hack by RDN TEAM v.1.1 / fix by white-master
if($this->_param['countPost'] == 0) { // $row['fixap_msg']
parent::$tpl->set_block("'\\[firstpost\\](.*?)\\[/firstpost\\]'si", "\\1") ;
} else {
parent::$tpl->set_block("'\\[firstpost\\](.*?)\\[/firstpost\\]'si", "") ;
}
// First have custom style? Hack by RDN TEAM v.1.1 / fix by white-master
Открыть файл: /engine/bullet_energy/action/site/newpost.php
Найти:
if(parent::$cache['title'][$row['forum_inseption']['title']]['title']) {
Выше вставить:
// First have custom style? Hack by RDN TEAM v.1.1 / fix by white-master
parent::$tpl->set_block("'\\[firstpost\\](.*?)\\[/firstpost\\]'si", "") ;
// First have custom style? Hack by RDN TEAM v.1.1 / fix by white-master
Теперь если вы хотите оформить первый пост особенным стилем добавьте в файле шаблона short_message.tpl в нужное место:
[firstpost]ваш стиль который применится только к первому посту.[/firstpost]
ADDED: Хак "TopicStarter", позволяет выводить нужный вам текст(изображение) в каждом сообщении от автора темы.
Открыть файл: /engine/bullet_energy/action/site/showtopic.php
Найти:
$row = parent::$db->super_query("SELECT topic . * {$option['SQL']['readColum']}{$option['SQL']['columFeed']} FROM " . DBNAME . "." . PREFIX . "_be_topic AS topic {$option['SQL']['readJoin']} {$option['SQL']['feed']} WHERE topic.id = " . parent::$globalParam['id'] . " LIMIT 1") ;
Добавить ниже:
// TopicStarter hack by RDN TEAM / thanx 2 white_master ;D
$this->_param['topic_autor'] = $row['autor_id'] ;
// TopicStarter hack by RDN TEAM
Найти:
if(parent::$cache['title'][$row['forum_inseption']['title']]['title']) {
Добавить выше:
// TopicStarter hack by RDN TEAM / thanx 2 white_master ;D
if($this->_param['topic_autor'] == $row['autors_id']) {
parent::$tpl->set_block("'\\[topicstarter\\](.*?)\\[/topicstarter\\]'si", "\\1") ;
} else {
parent::$tpl->set_block("'\\[topicstarter\\](.*?)\\[/topicstarter\\]'si", "") ;
}
// TopicStarter hack by RDN TEAM
Открыть файл: /engine/bullet_energy/action/site/newpost.php
Найти:
$row['topic']['title'] = stripcslashes($row['topic']['title']) ;
Выше вставить:
// TopicStarter hack by RDN TEAM / thanx 2 white_master ;D
$this->_param['topic_autor'] = $row['topic']['autor_id'] ;
// TopicStarter hack by RDN TEAM
Найти:
if(parent::$cache['title'][$row['forum_inseption']['title']]['title']) {
Добавить выше:
// TopicStarter hack by RDN TEAM / thanx 2 white_master ;D
if($this->_param['topic_autor'] == $row['autors_id']) {
parent::$tpl->set_block("'\\[topicstarter\\](.*?)\\[/topicstarter\\]'si", "\\1") ;
} else {
parent::$tpl->set_block("'\\[topicstarter\\](.*?)\\[/topicstarter\\]'si", "") ;
}
// TopicStarter hack by RDN TEAM
Добавить в нужном месте в шаблоне: short_message.tpl
[topicstarter]<p style="color:red"><strong>Автор темы</strong></p>[/topicstarter]
Хак который позволяет добавить свой стиль оформления для постов администратора, модератора:
На примере этого скриншота хак используется для придания группе пользователей с id = 1 стиль текста красного цвета.
Модифицировать будем файл: /engine/bullet_energy/action/site/showtopic.php и /engine/bullet_energy/action/site/newpost.php
Найдем:
parent::$tpl->set('{group-icon}', parent::$user_group[$row['user_group']]['icon']) ;
Добавим ниже:
// custom usergroup style by RDN-TEAM
parent::$tpl->set('{group-id}', parent::$user_group[$row['user_group']]['id']) ;
// custom usergroup style by RDN-TEAM
Теперь используя {group-id} в файле шаблона short_message.tpl вы будете получать id группы автора сообщения.
Подключается вот так:
<div class="group-{group-id}">...</div>
В css соответственно:
.group-1 a {color:red !important;}
.group-2 a {color:blue !important;}
.group-3 a {color:green !important;}
Хак подключение стандартных полей из профиля DLE: icq, land, fullname, дата последнего посещения.
Редактируем файлы: /engine/bullet_energy/action/site/showtopic.php и /engine/bullet_energy/action/site/newpost.php
Найти:
parent::$tpl->set('{icq}', $row['icq']) ;
Заменить на:
//parent::$tpl->set('{icq}', $row['icq']) ;
// extended user info by RDN TEAM
if( $row['icq'] ) {
parent::$tpl->set( '[icq]', "" );
parent::$tpl->set( '[/icq]', "" );
parent::$tpl->set( '{icq}', stripslashes( $row['icq'] ) );
parent::$tpl->set_block( "'\\[not-icq\\](.*?)\\[/not-icq\\]'si", "" );
} else {
parent::$tpl->set_block( "'\\[icq\\](.*?)\\[/icq\\]'si", "" );
parent::$tpl->set( '{icq}', "" );
parent::$tpl->set( '[not-icq]', "" );
parent::$tpl->set( '[/not-icq]', "" );
}
if( $row['land'] ) {
parent::$tpl->set( '[land]', "" );
parent::$tpl->set( '[/land]', "" );
parent::$tpl->set( '{land}', stripslashes( $row['land'] ) );
parent::$tpl->set_block( "'\\[not-land\\](.*?)\\[/not-land\\]'si", "" );
} else {
parent::$tpl->set_block( "'\\[land\\](.*?)\\[/land\\]'si", "" );
parent::$tpl->set( '{land}', "" );
parent::$tpl->set( '[not-land]', "" );
parent::$tpl->set( '[/not-land]', "" );
}
if( $row['fullname'] ) {
parent::$tpl->set( '[fullname]', "" );
parent::$tpl->set( '[/fullname]', "" );
parent::$tpl->set( '{fullname}', stripslashes( $row['fullname'] ) );
parent::$tpl->set_block( "'\\[not-fullname\\](.*?)\\[/not-fullname\\]'si", "" );
} else {
parent::$tpl->set_block( "'\\[fullname\\](.*?)\\[/fullname\\]'si", "" );
parent::$tpl->set( '{fullname}', "" );
parent::$tpl->set( '[not-fullname]', "" );
parent::$tpl->set( '[/not-fullname]', "" );
}
parent::$tpl->set( '{lastdate}', langdate( "j F Y, H:i", $row['lastdate'] ) );
// extended user info by RDN TEAM
Изменения провести в обоих файлах. Далее в файле шаблона short_message.tpl нам станут доступны теги:
<p>[icq]Аська: {icq}[/icq][not-icq]Аська: не указана![/not-icq]</p>
<p>[land]Город: {land}[/land][not-land]Город: не указан![/not-land]</p>
<p>[fullname]Имя: {fullname}[/fullname][not-fullname]Имя: не указано![/not-fullname]</p>
<p>Последнее посещение: {lastdate}</p>
При использовании оффициального хака "Кнопка обсудить на форуме в новостях" была найдена проблема:
- Не работает "версия статьи для печати"
в файле /engine/modules/show.full.php
найти:
$tpl->set('{forumDiscus}', $apiBullet->setLinckDiscus(array(
'idPost' => $row['id'],
'id' => $row['topic_id'],
'tree' => $category_id))) ;
заменить на:
// discuss at forum hack fix! RDN-TEAM
if ( $view_template != "print") {
$tpl->set('{forumDiscus}', $apiBullet->setLinckDiscus(array(
'idPost' => $row['id'],
'id' => $row['topic_id'],
'tree' => $category_id))) ; }
// discuss at forum hack fix! RDN-TEAM
Исправление маленьких багов плюс расширение для системы работы с жалобами.
FIX: Исправленна проблема длинного текста жалобы, теперь окно всегда статичное, присутствует скроллбар.
FIX: Исправлена проблема отображения ника отправителя жалобы (там был включен url encoding)
Подробное описание проблемы:
http://white-master.ru/forum/showtopic-156...3/findpost-7836
ADD: При написании жалобы автоматически отправляется уведомление в ЛС администратору сайта. (или модератору, необходимо лишь изменить user_id в файле actions/site/complaint.php )
Загрузка:
https://dl.dropbox.com/u/48649503/action.rar
NEW: Хак позволяющий определённым образом оформить ссылки на новые сообщения форума в блоке "последние сообщения с форума. По умолчанию отображает ваш блок если последний ответ в теме или дата создания поста сегодня\вчера. Для особо активных форумов можно оставить отображение метки только за "сегодня"
Наша цель: /engine/bullet_energy/api/bullet_api.class.php
Найти:
$this->tpl->set('{lastAutorName}', $row['last_reply_info'][0]) ;
Вставить выше:
// custom style or label for new posts by RDN-TEAM
if(date('Ymd', $row['last_reply_info'][1]) == date('Ymd', time()) OR date('Ymd', $row['last_reply_info'][1]) == date('Ymd', (time() - 86400))) {
// uncomment and delete previous string for active forum posting
// if(date('Ymd', $row['last_reply_info'][1]) == date('Ymd', time())) {
$this->tpl->set( '[new-post]', "" );
$this->tpl->set( '[/new-post]', "" );
} else {
$this->tpl->set_block( "'\\[new-post\\](.*?)\\[/new-post\\]'si"
, "" );
}
// custom style or label for new posts by RDN-TEAM
Изменения в шаблоне: last_topic_content.tpl
Добавьте в нужное место:
[new-post][НОВОЕ] [/new-post]
или
[new-post]ваш стиль оформления[/new-post]
Небольшой бонус: Оказывается целсофт не реализовал проверку редактирования новостей по времени. (для комментариев такая штука есть). Суть хака: У группы у которой включен лимит времени, в течение которого разрешено удалять или редактировать комментарии работает так-же лимит на редактирование своих новостей, но только если они не старше трёх дней. (по умолчанию)
Изменения производим в двух файлах:
сначала: /engine/ajax/editnews.php
Найти
if( ($member_id['user_group'] == 1) ) {
$have_perm = 1;
}
Добавить после:
// time to edit himself news by RDN-TEAM
if ( $user_group[$member_id['user_group']]['edit_limi
t'] AND ((strtotime($row['date']) + (86400 * 3)) < $_TIME) ) {
die( "<strong>Вы не можете редактировать этот материал.</strong><br/>С момента публикации статьи прошло уже более 3х дней!" );
}
//
Теперь добавим хак в админ-панель: /engine/inc/editnews.php
найти:
if( ($member_id['user_group'] == 1) ) {
$have_perm = 1;
}
Ниже добавить:
// time to edit himself news by RDN-TEAM
if ( $user_group[$member_id['user_group']]['edit_limi
t'] AND ((strtotime($row['date']) + (86400 * 3)) < $_TIME) ) {
msg( "error", $lang['addnews_denied'], "<strong>Вы не можете редактировать этот материал.</strong><br/>С момента публикации статьи прошло уже более 3х дней!","javascript:window.close();");
}
//
Для администраторов и модераторов предполагается ставить лимит редактирования комментариев 0, тогда лимита редактирования новостей так-же не будет.
Обнаружил ошибку в DLE при изменении email в профиле на тот, который уже есть в системе мускул вываливается с ошибкой о дубликации (ошибка 1062 в profile.php). Не понимаю почему разрабы не добавили простую проверку этой ситуации, ну да ладно, исправим это сами:
Фикс основан на уже пофиксенном от другой проблемы решении от MSW:
Файл: /engine/modules/profile.php
Найти:
if ( !$send_mail_log AND $email != $row['email']) $mailchange = " email='{$email}',";
else $mailchange = "";
Заменить на:
#****** FIX Subscribe Change EMail *** by MSW + RDN TEAM ******#
if ( !$send_mail_log AND $email != $row['email']) {
$checkdoblemail = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users where email='{$email}'" );
if ($checkdoblemail['count']) {
msgbox( $lang['all_err_1'], "Этот email уже используется другим участником!" );
} else {
$db->query("UPDATE ". PREFIX ."_subscribe SET email='{$email}' WHERE user_id='{$id}'");
$mailchange = " email='{$email}',";
}
} else $mailchange = "";
#****** FIX Subscribe Change EMail *** by MSW + RDN TEAM ******#
Более подробно о фиксе который применил MSW
http://0-web.ru/dle/hack-dle/261-fix-subsc...ange-email.html
Вот пожалуй и все дорогие комрады, ещё раз скажем спасибо автору за, то что сделал нам вкуснятину!$db-
Внимание! Данная статья была написана более полугода назад, актуальность материала и состояние жизни ссылок не гарантируется! Воспользуйтесь дополнительными параметрами для поиска необходимого вам контента! Приносим свои извинения...