Если вы в недавнее время устанавливали модификацию eXTended Reputation System и у вас некоторые пользователи стали попадать на премодерацию беспричинно, то эта тема для вас.
т.е. поле mod_posts становится алиасом поля rep_notify.
При этом поле rep_notify для форума будет наывазаться mod_posts, но вот содержаться в нём будет отнюдь не mod_posts, а rep_notify!
А т.к. при включенной опции rep_notify в профиле юзера там содержится "1", то в коде форума срабатывает:
Цитата (Post.php)
[color=green]/*-------------------------------------------------------------------------*/[/color] [color=green]// Check for member post queue[/color] [color=green]/*-------------------------------------------------------------------------*/[/color] [b]function[/b] _check_post_mod() { [color=green]//-----------------------------------------[/color] [color=green]// Does this member have mod_posts enabled?[/color] [color=green]//-----------------------------------------[/color] [b]if[/b] ( [color=#048284]$this[/color]->ipsclass->member['mod_posts'] ) { [b]if[/b] ( [color=#048284]$this[/color]->ipsclass->member['mod_posts'] == [color=navy]1[/color] ) { [color=#048284]$this[/color]->han_post->obj['moderate'] = [color=navy]1[/color]; } [b]else[/b] {
Таким образом каждое сообщение юзера вашего форума, который поставил себе в профиле опцию rep_notify ("Уведомлять об изменениях в репутации") будет попадать на премодерацию автоматически.
Song:
Версия форума 2.1.x
Если вы в недавнее время устанавливали модификацию eXTended Reputation System и у вас некоторые пользователи стали попадать на премодерацию беспричинно, то эта тема для вас.
В инструкции есть фрагмент:
// sources/classes/class_session.php
//----------------------------------
==============================================================
НАХОДИМ (load_member):
--------------------------------------------------------------
id, name, mgroup, member_login_key, email, restrict_post, view_sigs, view_avs, view_pop, view_img, auto_track
----------------
ДОБАВЛЯЕМ ПОСЛЕ:
----------------
, rep_allow, rep_notify
=======================
Именно после такого безобидного изменения вы будете иметь такой досадный глюк с премодерацией.
Исправление:
После rep_notify вам нужно поставить запятую. Т.е. исправленный фрагмент инструкции дожен выглядеть так:
// sources/classes/class_session.php
//----------------------------------
==============================================================
НАХОДИМ (load_member):
--------------------------------------------------------------
id, name, mgroup, member_login_key, email, restrict_post, view_sigs, view_avs, view_pop, view_img, auto_track
----------------
ДОБАВЛЯЕМ ПОСЛЕ:
----------------
, rep_allow, rep_notify,
=======================
Далее объясняется причина столь досадного недоразумения для тех кому интересно.
Причина:
Глюк получился действительно интересный и возник случайно.
Возник он от того, что следующим полем после поля auto_track (после которого предлагается поставить отрывок мода) является поле mod_posts.
Если вы не ставите запятую, то запрос после установки мода выглядит вот так:
SELEСT [color=magenta].[/color][color=magenta].[/color][color=magenta].[/color] id, name, mgroup, member_login_key, email, restrict_post, view_sigs, view_avs, view_pop, view_img, auto_track, rep_allow, rep_notify mod_posts,Это равносильно синтаксису в MySQL:
т.е. поле mod_posts становится алиасом поля rep_notify.
При этом поле rep_notify для форума будет наывазаться mod_posts, но вот содержаться в нём будет отнюдь не mod_posts, а rep_notify!
А т.к. при включенной опции rep_notify в профиле юзера там содержится "1", то в коде форума срабатывает:
[color=green]/*-------------------------------------------------------------------------*/[/color] [color=green]// Check for member post queue[/color] [color=green]/*-------------------------------------------------------------------------*/[/color] [b]function[/b] _check_post_mod() { [color=green]//-----------------------------------------[/color] [color=green]// Does this member have mod_posts enabled?[/color] [color=green]//-----------------------------------------[/color] [b]if[/b] ( [color=#048284]$this[/color]->ipsclass->member['mod_posts'] ) { [b]if[/b] ( [color=#048284]$this[/color]->ipsclass->member['mod_posts'] == [color=navy]1[/color] ) { [color=#048284]$this[/color]->han_post->obj['moderate'] = [color=navy]1[/color]; } [b]else[/b] {Таким образом каждое сообщение юзера вашего форума, который поставил себе в профиле опцию rep_notify ("Уведомлять об изменениях в репутации") будет попадать на премодерацию автоматически.