[RC] Last edited admins and moderators control

Здесь авторы могут постить бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!

[RC] Last edited admins and moderators control

Сообщение Xpert 23.10.2004 15:05

Мод предназначен для контроля за коррекцией сообщений администраторами и модераторами форума - теперь отредактированное ими сообщение будет содержать информацию о нике последнего редактора, времени последнего редактирования, а также общем количестве редактирований.

Запрос на разработку: AEC

Код: Выделить всё
[sql]
ALTER TABLE `phpbb_posts` ADD `post_editor` MEDIUMINT( 8 ) NOT NULL ;
UPDATE `phpbb_posts` SET `post_editor` = `poster_id` WHERE 1 ;

[open]
includes/functions_post.php

[find]
$edited_sql = ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : "";

[replace with]
$edited_sql = ( ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) || ($mode == 'editpost' && !$post_data['poster_post']) ) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1, post_editor = $userdata['user_id'] " : "";

[find]
$sql = ($mode != "editpost") ? "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ($topic_id, $forum_id, " . $userdata['user_id'] . ", '$post_username', $current_time, '$user_ip', $bbcode_on, $html_on, $smilies_on, $attach_sig)" : "UPDATE " . POSTS_TABLE . " SET post_username = '$post_username', enable_bbcode = $bbcode_on, enable_html = $html_on, enable_smilies = $smilies_on, enable_sig = $attach_sig" . $edited_sql . " WHERE post_id = $post_id";

[in-line find]
poster_ip,

[inline after add]
post_editor,

[in-line find]
'$user_ip',

[inline after add]
" . $userdata['user_id'] . ",

[open]
viewtopic.php

[find]
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid
   FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt

[in-line find]
u.user_id,

[inline after add]
u2.username AS p_editor,

[in-line find]
POSTS_TEXT_TABLE . " pt

[inline after add]
, " . USERS_TABLE . " u2

[find]
AND u.user_id = p.poster_id

[after add]
AND u2.user_id = p.post_editor

[find]
$l_edited_by = '<br /><br />' . sprintf($l_edit_time_total, $poster, create_date($board_config['default_dateformat'], $postrow[$i]['post_edit_time'], $board_config['board_timezone']), $postrow[$i]['post_edit_count']);

[in-line find]
$poster

[in-line replace]
$postrow[$i]['p_editor']

[eom]


За оформление прошу простить, будет доработано по возможности.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5716
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru


Сообщение Meithar 23.10.2004 15:56

[replace with]
$edited_sql = ( ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) || ($mode == 'editpost' && !$post_data['poster_post']) ) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1, post_editor = $userdata['user_id'] " : "";

Уверен?

Я бы это проще сделал. :)
Meithar
phpBB 1.4.4
 
Сообщения: 88
Зарегистрирован: 14.07.2004 18:11

Сообщение Xpert 23.10.2004 16:40

Meithar
Предлагай, более выгодного пути я в данном случае не увидел.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5716
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение Meithar 24.10.2004 3:20

Ага. Я сделал, но нормально оформлю уже завтра.
Meithar
phpBB 1.4.4
 
Сообщения: 88
Зарегистрирован: 14.07.2004 18:11

Сообщение Meithar 24.10.2004 14:02

Оформил в формате EasyMOD, тестировал на версии 2.0.10.

Код: Выделить всё
##############################################################
## MOD Title: Show edited by Admin
## MOD Author: Meithar < N/A > (N/A) N/A
## MOD Description: Always show "edited by ..." regardless of who edited post
## MOD Version: 0.0.1
##
## Installation Level: Easy
## Installation Time: 1 Minutes
## Files To Edit: functions_post.php, posting.php, viewtopic.php
## Included Files: (n/a)
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes:
##
## ALTER TABLE `phpbb_posts` ADD `edited_by_username` VARCHAR( 25 ) NOT NULL ;
## если поле пустое, то это означает, что последний раз пост редактировался автором,
## если непустое, то оно содержит 'username' последнего редактора (админа или модератора)
##
## Мод писался для phpBB версии 2.0.10
##
##############################################################
## MOD History:
##
##   2004-10-24 - Version 0.0.1
##      - first version
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#
#-----[ SQL ]------------------------------------------
#
ALTER TABLE `phpbb_posts` ADD `edited_by_username` VARCHAR( 25 ) NOT NULL ;

#
#-----[ OPEN ]------------------------------------------
#
includes/functions_post.php

#
#-----[ FIND ]------------------------------------------
#
   $edited_sql = ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : "";

#
#-----[ REPLACE WITH ]------------------------------------------
#
   $edited_sql = ($mode == 'editpost') ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : "";

   // если юзер редактирует свой пост и запись о другом юзере в 'edited_by_username' отсутствует
   if (($userdata['user_id'] == $post_data['poster_id']) && ($post_data['edited_by_username'] == ''))
   {
      $edited_sql .= '';
   }
   // если юзер редактирует свой пост и есть запись о другом юзере
   else if (($userdata['user_id'] == $post_data['poster_id']) && ($post_data['edited_by_username'] != ''))
   {
      $edited_sql .= ", edited_by_username = '' ";
   }
   // если пост редактирует админ или модератор и есть запись о другом юзере
   else if ($userdata['username'] != $post_data['edited_by_username'])
   {
      $edited_sql .= ", edited_by_username = '" . $userdata['username'] . "' ";
   }

#
#-----[ OPEN ]------------------------------------------
#
posting.php

#
#-----[ FIND ]------------------------------------------
#
      $sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . "

#
#-----[ IN-LINE FIND ]------------------------------------------
#
, p.poster_id

#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, p.edited_by_username

#
#-----[ FIND ]------------------------------------------
#
      $post_data['poster_id'] = $post_info['poster_id'];

#
#-----[ AFTER, ADD ]------------------------------------------
#
      $post_data['edited_by_username'] = $post_info['edited_by_username'];

#
#-----[ OPEN ]------------------------------------------
#
viewtopic.php

#
#-----[ FIND ]------------------------------------------
#
      $l_edited_by = '<br /><br />' . sprintf($l_edit_time_total, $poster, create_date($board_config['default_dateformat'], $postrow[$i]['post_edit_time'], $board_config['board_timezone']), $postrow[$i]['post_edit_count']);

#
#-----[ REPLACE WITH ]------------------------------------------
#
      $edited_by = ($postrow[$i]['edited_by_username'] == '') ? '<b>' . $poster . '</b>' : '<b>' . $postrow[$i]['edited_by_username'] . '</b>';
      $l_edited_by = '<br /><br />' . sprintf($l_edit_time_total, $edited_by, create_date($board_config['default_dateformat'], $postrow[$i]['post_edit_time'], $board_config['board_timezone']), $postrow[$i]['post_edit_count']);

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Последний раз редактировалось Meithar 27.12.2004 19:34, всего редактировалось 3 раз(а).
Meithar
phpBB 1.4.4
 
Сообщения: 88
Зарегистрирован: 14.07.2004 18:11

Сообщение Xpert 24.10.2004 15:45

Meithar
Думаю, нам стоит объединить усилия - твой подход лучше, но в нем все же имеются некоторые шероховатости. Что скажешь?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5716
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение Meithar 24.10.2004 16:36

Конечно объединяй. :)

"шероховатости" - что именно?
Meithar
phpBB 1.4.4
 
Сообщения: 88
Зарегистрирован: 14.07.2004 18:11

Сообщение Xpert 24.10.2004 16:53

Meithar
Весь код, которым ты формируешь $edited_sql может при определенных условиях дать некорректные результаты.
Например:
Код: Выделить всё
  // если юзер редактирует свой пост и запись о другом юзере в 'edited_by_username' отсутствует
   if (($userdata['user_id'] == $post_data['poster_id']) && ($post_data['edited_by_username'] == ''))
   {
      $edited_sql .= '';
   }

В таком случае, даже если пользователь редактирует свой пост, который не является последним в теме, сообщения мы не увидим. А надо бы.

Да и потом, а зачем так мучаться? Имхо, можно проще :)
В общем, к вечеру думаю выложить. Как назовем общий мод?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5716
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение Meithar 24.10.2004 17:11

В таком случае, даже если пользователь редактирует свой пост, который не является последним в теме, сообщения мы не увидим. А надо бы.

Проверял? ;)

Как назовем общий мод?

Ээээ.... Всё равно. :) Давай лучше сначала с кодом закончим.

Имхо, можно проще

Сделай. По-моему, проще уже не получится.
Meithar
phpBB 1.4.4
 
Сообщения: 88
Зарегистрирован: 14.07.2004 18:11

Сообщение Xpert 24.10.2004 17:19

Meithar
Эээ... проверю :) Я так, чисто логически.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5716
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение Meithar 24.10.2004 17:26

Я так, чисто логически.

Чисто логически тоже работает. :) Там за вывод этой инфы 'post_edit_count' отвечает. Если он > 0, то сразу появляется "edited by ...".
Meithar
phpBB 1.4.4
 
Сообщения: 88
Зарегистрирован: 14.07.2004 18:11

Сообщение AEC 25.10.2004 0:22

ребят, так вы это, ну, закончили с кодом-то? можно ставить или обождать ещё маленько?
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

Сообщение Xpert 25.10.2004 7:16

AEC
Еще немного обожди, ок?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5716
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение AEC 25.10.2004 11:25

Xpert, без вопросов. только вы не забудьте в колокол ударить по окончании процесса :D
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

Сообщение AEC 26.10.2004 20:43

Xpert, ещё ждать или решили закинуть это дело?
Улыбка - понятие растяжимое.
AEC
phpBB 2.0.5
 
Сообщения: 227
Зарегистрирован: 13.07.2004 15:48
Откуда: Ukraine, Kiev

След.

Вернуться в Бета-версии модов для phpBB 2.0.x

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0