xntx
хнотик-багоискатель | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Shershen можно... тебе срочно? я на днях сделаю... но это для ламеров ведь только будет... gregor хм, вот я тебе написал хак... если где че не понятно, спрашивай. добавляет возможность модераторам делять замечания юзерам за конкретный пост. только вот модер сам должен подписываться, ок?
Хак: Замечания к постам
MySQL Делаем на MySQL: Код: ALTER TABLE phpbb_posts_text ADD pt.post_mod_msg text null default null; |
posting.php Ищем: Код: case 'quote': case 'editpost': case 'delete': case 'poll_delete': if ( empty($post_id) ) { message_die(GENERAL_MESSAGE, $lang['No_post_id']); } $select_sql = ( !$submit ) ? ", t.topic_title, p.enable_bbcode, p.enable_html, p.enable_smilies, p.enable_sig, p.post_username, pt.post_subject, pt.post_text, pt.bbcode_uid, u.username, u.user_id, u.user_sig" : ''; | В последней строке, после: Код: Добавляем: Код: Ищем: Код: switch ( $mode ) { case 'editpost': case 'newtopic': case 'reply': $username = ( !empty($_POST['username']) ) ? $_POST['username'] : ''; $subject = ( !empty($_POST['subject']) ) ? trim($_POST['subject']) : ''; $message = ( !empty($_POST['message']) ) ? $_POST['message'] : ''; $poll_title = ( isset($_POST['poll_title']) && $is_auth['auth_pollcreate'] ) ? $_POST['poll_title'] : ''; $poll_options = ( isset($_POST['poll_option_text']) && $is_auth['auth_pollcreate'] ) ? $_POST['poll_option_text'] : ''; $poll_length = ( isset($_POST['poll_length']) && $is_auth['auth_pollcreate'] ) ? $_POST['poll_length'] : ''; | После этого добавляем: Код: $mod_msg = ( $is_auth['auth_mod']) ? $_POST['mod_msg'] : ''; | Чуть ниже, в: Код: чуть ниже, в: prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length); | Перед закрытием скобки добавляем: Код: Еще чуть ниже, есть чтото типа: Код: submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length); | Тоже, перед закрытием скобки: Код: Ищем: Код: else if ( $mode == 'quote' || $mode == 'editpost' ) { $subject = ( $post_data['first_post'] ) ? $post_info['topic_title'] : $post_info['post_subject']; $message = $post_info['post_text']; if ( $mode == 'editpost' ) { | и после этого добавляем: Код: if ($is_auth['auth_mod'] && $post_info['poster_id'] != $userdata['user_id']) { $mod_msg = $post_info['post_mod_msg']; if ( $post_info['bbcode_uid'] != '' ) { $mod_msg = preg_replace('/\:(([a-z0-9]:)?)' . $post_info['bbcode_uid'] . '/s', '', $mod_msg); } $mod_msg = str_replace('<', '<', $mod_msg); $mod_msg = str_replace('>', '>', $mod_msg); $mod_msg = str_replace('<br />', "\n", $mod_msg); $template->assign_block_vars('moderator_message', array()); } else { $mod_msg = ''; } | Ищем: Код: // // Output the data to the template // $template->assign_vars(array( 'USERNAME' => $username, 'SUBJECT' => $subject, 'MESSAGE' => $message, | И после этого добавляем: Код: Тут-же видим: Код: 'L_SUBJECT' => $lang['Subject'], 'L_MESSAGE_BODY' => $lang['Message_body'], | После чего вставляем: Код: 'L_MOD_MSG' => $lang['Moderator_message'], |
includes/functions_post.php Ищем: Код: function prepare_post(&$mode, &$post_data, &$bbcode_on, &$html_on, &$smilies_on, &$error_msg, &$username, &$bbcode_uid, &$subject, &$message, &$poll_title, &$poll_options, &$poll_length) | Перед закрытием скобки добавляем: Код: Ищем: Код: // Check message if (!empty($message)) { $bbcode_uid = ($bbcode_on) ? make_bbcode_uid() : ''; $message = prepare_message(trim($message), $html_on, $bbcode_on, $smilies_on, $bbcode_uid); } else if ($mode != 'delete' && $mode != 'poll_delete') { $error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_message'] : $lang['Empty_message']; } | После чего добавляем: Код: // Check moderator's message if (!empty($mod_msg)) { $mod_msg = prepare_message(trim($mod_msg), $html_on, $bbcode_on, $smilies_on, $bbcode_uid); } else { $mod_msg = ''; } | Теперь ищем: Код: function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, &$post_username, &$post_subject, &$post_message, &$poll_title, &$poll_options, &$poll_length) | И перед закрытием скобки добавляем: Код: Далее после: Код: if ($mode != 'editpost') { $post_id = $db->sql_nextid(); } | Добавляем: Код: else { $mod_msg_sql = (!empty($mod_msg)) ? ", post_mod_msg = $mod_msg" : ''; } | Смотрим на ближайшую $sql, выглядит она примерно так: Код: $sql = ($mode != 'editpost') ? "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text) VALUES $post_id, '$post_subject', '$bbcode_uid', '$post_message')" : "UPDATE " . POSTS_TEXT_TABLE . " SET post_text = '$post_message', bbcode_uid = '$bbcode_uid', post_subject = '$post_subject' WHERE post_id = $post_id"; | Перед WHERE post_id... добавляем Код: Тоесть получится примерно так: Код: ..., post_subject = '$post_subject' $mod_msg_sql WHERE post_id =... |
viewtopic.php Ищем: Код: // // Go ahead and pull all data for this topic // $sql = "SELECT u2.username as editer_username, 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, u.user_personalstatus, u.user_has_blog, p.*, pt.post_text, pt.post_subject, pt.bbcode_uid | И после pt.bbcode_uid добавляем: Код: Ищем это: Код: $message = $postrow[$i]['post_text']; | После чего добавляем: Код: $mod_msg = $postrow[$i]['post_mod_msg']; | Там где: Код: if ( $bbcode_uid != '' ) { $message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message); } | Ниже добавляем: Код: if ( $bbcode_uid != '' && $mod_msg != '' ) { $mod_msg = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($mod_msg, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $mod_msg); } | После: Код: $message = make_clickable($message); | Добавляем: Код: $mod_msg = (!empty($mod_msg)) ? make_clickable($mod_msg) : ''; | Если хотим смайлы в замечаниях, после: Код: if ( $postrow[$i]['enable_smilies'] ) { $message = smilies_pass($message); } | Добавляем: Код: if ( $postrow[$i]['enable_smilies'] && !empty($mod_msg)) { $mod_msg = smilies_pass($mod_msg); } | Теперь ищем: Код: $message = str_replace("\n", "\n<br />\n", $message); | И после этого добавляем: Код: $mod_msg = str_replace("\n", "\n<br />\n", $mod_msg); | Ну и темплейт, после такой фигни: Код: $template->assign_block_vars('postrow', array( ... ... ... ... ... ); | Добавляем: Код: if (!empty($mod_msg)) { $template->assign_block_vars('postrow.moderator_message', array( 'MOD_MSG' => $mod_msg) ); } |
language/lang_yourlang/lang_main.php Ну как всегда, гденить в конце файла (но перед ?>) добавляем: Код: $lang['Moderator_message'] = 'Замечание'; |
templates/yourfavoritetemplate/posting_body.tpl Ну тут уже у каждого свое... у меня темплейт то FIPlain... я после: Код: <tr> <td width="22%" align="right" class="row1"><span class="explaintitle">{L_SUBJECT}:</span></td> <td class="row2" width="78%"><input type="text" name="subject" size="45" maxlength="60" style="width:450px" tabindex="2" class="post" value="{SUBJECT}" /> </td> </tr> | Добавил: Код: <!-- BEGIN moderator_message --> <tr> <td width="22%" align="right" class="row1" valign="top"><span class="explaintitle">{L_MOD_MSG}:</span></td> <td class="row2" width="78%"> <textarea name="mod_msg" rows="4" cols="35" style="width:450px" class="post">{MOD_MSG}</textarea> </td> </tr> <!-- END moderator_message --> | (Суть понятна)
templates/yourfavoritetemplate/viewtopic_body.tpl Аналогично, я после подписи добавил: Код: <!-- BEGIN moderator_message --> <br /> <table width="95%" cellspacing="1" cellpadding="3" border="0" align="center"> <tr> <td class="quote">{postrow.moderator_message.MOD_MSG}</td> </tr> </table> <br /> <!-- END moderator_message --> |
Конец хака
| Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 05:06 05-09-2004 | Исправлено: xntx, 05:07 05-09-2004 |
|