Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[RC] Last edited admins and moderators control

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

[RC] Last edited admins and moderators control

Сообщение Xpert »

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

Запрос на разработку: 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]
За оформление прошу простить, будет доработано по возможности.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Meithar
phpBB 1.4.3
Сообщения: 85
Стаж: 19 лет 9 месяцев

Сообщение Meithar »

[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'] " : "";
Уверен?

Я бы это проще сделал. :)
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Meithar
Предлагай, более выгодного пути я в данном случае не увидел.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Meithar
phpBB 1.4.3
Сообщения: 85
Стаж: 19 лет 9 месяцев

Сообщение Meithar »

Ага. Я сделал, но нормально оформлю уже завтра.
Meithar
phpBB 1.4.3
Сообщения: 85
Стаж: 19 лет 9 месяцев

Сообщение Meithar »

Оформил в формате 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 18:34, всего редактировалось 3 раза.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Meithar
Думаю, нам стоит объединить усилия - твой подход лучше, но в нем все же имеются некоторые шероховатости. Что скажешь?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Meithar
phpBB 1.4.3
Сообщения: 85
Стаж: 19 лет 9 месяцев

Сообщение Meithar »

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

"шероховатости" - что именно?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Meithar
Весь код, которым ты формируешь $edited_sql может при определенных условиях дать некорректные результаты.
Например:

Код: Выделить всё

  // если юзер редактирует свой пост и запись о другом юзере в 'edited_by_username' отсутствует 
   if (($userdata['user_id'] == $post_data['poster_id']) && ($post_data['edited_by_username'] == '')) 
   { 
      $edited_sql .= ''; 
   }
В таком случае, даже если пользователь редактирует свой пост, который не является последним в теме, сообщения мы не увидим. А надо бы.

Да и потом, а зачем так мучаться? Имхо, можно проще :)
В общем, к вечеру думаю выложить. Как назовем общий мод?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Meithar
phpBB 1.4.3
Сообщения: 85
Стаж: 19 лет 9 месяцев

Сообщение Meithar »

В таком случае, даже если пользователь редактирует свой пост, который не является последним в теме, сообщения мы не увидим. А надо бы.
Проверял? ;)
Как назовем общий мод?
Ээээ.... Всё равно. :) Давай лучше сначала с кодом закончим.
Имхо, можно проще
Сделай. По-моему, проще уже не получится.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Meithar
Эээ... проверю :) Я так, чисто логически.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Meithar
phpBB 1.4.3
Сообщения: 85
Стаж: 19 лет 9 месяцев

Сообщение Meithar »

Я так, чисто логически.
Чисто логически тоже работает. :) Там за вывод этой инфы 'post_edit_count' отвечает. Если он > 0, то сразу появляется "edited by ...".
AEC

Сообщение AEC »

ребят, так вы это, ну, закончили с кодом-то? можно ставить или обождать ещё маленько?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

AEC
Еще немного обожди, ок?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

Xpert, без вопросов. только вы не забудьте в колокол ударить по окончании процесса :D
AEC

Сообщение AEC »

Xpert, ещё ждать или решили закинуть это дело?

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