Таня, Танечка, Вы моя спасительница
Я даже на днях Юре в личку написала, что готова оплатить этот мод, бо эта фраза просто достала, а тут оказывается делов-то пора мне начать изучать php
16. Nikela - 9 марта 2011 — 23:38 - перейти к сообщению
17. yura3d - 10 марта 2011 — 00:37 - перейти к сообщению
Таня пишет:
В примере из текущего времени отнимается $post_id, которая равна времени публикации сообщения и если разница меньше заданной то параметр edited ( и соответственно надпись "Отредактировано автором..." ) к сообщению не добавляется.
Вариант с использованием переменной $post_id не очень хорош тем, что в ней хранится дата публикации сообщения без учёта того, что сообщение может быть дополнено автором впоследствии (опция склеивания сообщений, которая как раз включена на форуме Nikela, интервал склеивания равен 5-ти минутам). В результате, если после дополнения своего сообщения пользователь захочет его отредактировать, вновь получим пресловутое "Отредактировано автором...", поскольку сравнение происходит по времени публикации самой первой части сообщения
Правильным будет в файле postings.php первоначальные строки:
CODE:
} elseif ($fm->_Moderator === FALSE) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
}
$topic[$post_id]['edited'] = $fm->_Nowtime;
}
заменить строками:
CODE:
} elseif ($fm->_Moderator === FALSE && $fm->_Nowtime - $list[$topic_id]['postdate'] > 180) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
}
$topic[$post_id]['edited'] = $fm->_Nowtime;
}
Здесь по сути меняется только 1-ая строка, полностью фрагмент приведён только чтобы было понятно, где её искать. Здесь мы извлекаем время публикации последней части сообщения из списка тем - $list[$topic_id]['postdate']. В результате после дополнения своего сообщения пользователь получит новые 3 минуты его редактирование без указания информации о редактировании
18. Таня - 12 марта 2011 — 01:25 - перейти к сообщению
5 минут... мало очень, планирую 2 часа сделать, оно же ни на что не влияет.
У меня другая строка, вместо
Видимо потому, что делала исправления по этим отметкам (там кажется админская правка не стиралась никак), выложенные тут на форуме, потому решение пришлось делать универсальным, чтобы работало как с исправлением, так без него.
Второй вариант с дополнительными 3 минутами после склейки тоже красиво, хотя дополнение (склейка) по сути тоже есть редакция.
(Добавление)
Сейчас проверила - да, у меня сделано исправление и что интересно модераторы/администраторы могут редактировать свои сообщения без отметки о редакции.
Сочла это несправедливостью и в postings.php перед строкой
добавила строчку
У меня другая строка, вместо
CODE:
} elseif ($fm->_Moderator === FALSE) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
}
$topic[$post_id]['edited'] = $fm->_Nowtime;
}
CODE:
}else{
$topic[$post_id]['edited']=$fm->_Nowtime;
}
$topic[$post_id]['edited']=$fm->_Nowtime;
}
Видимо потому, что делала исправления по этим отметкам (там кажется админская правка не стиралась никак), выложенные тут на форуме, потому решение пришлось делать универсальным, чтобы работало как с исправлением, так без него.
Второй вариант с дополнительными 3 минутами после склейки тоже красиво, хотя дополнение (склейка) по сути тоже есть редакция.
(Добавление)
Сейчас проверила - да, у меня сделано исправление и что интересно модераторы/администраторы могут редактировать свои сообщения без отметки о редакции.
Сочла это несправедливостью и в postings.php перед строкой
CODE:
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));
добавила строчку
CODE:
if($fm->_Moderator===TRUE&&$topic[$post_id]['p_id']==$fm->user['id']&&$fm->_Nowtime-$post_id>180)$topic[$post_id]['edited']=$fm->_Nowtime; //редакция своих постов модераторами
19. Nikela - 12 марта 2011 — 06:07 - перейти к сообщению
У меня вопрос, хотела установить вот этот мод - http://exbb.info/community/topic...88238#1245588238, чтобы удалять надпись о моем редактировании, но возникла сложность с последним изменением в файле postings.php, т.к. сейчас этот кусок кода (из-за описанных выше правок) выглядит у меня так:
Не хотелось бы напортачить, заранее спасибо.
CODE:
$fm->_Boolean($fm->input,'modertext');
if ($fm->_Moderator === TRUE && $topic[$post_id]['p_id'] !== $fm->user['id'] && $fm->input['modertext'] === TRUE) {
if ($fm->input['mo_text'] !== '') {
$topic[$post_id]['mo_text'] = $fm->input['mo_text'];
}
$topic[$post_id]['lockedit'] = ($fm->_Boolean($fm->input,'lockedit') === TRUE) ? TRUE:FALSE;
if ($topic[$post_id]['lockedit'] === FALSE) {
unset($topic[$post_id]['lockedit']);
}
if (defined('IS_ADMIN')) {
$topic[$post_id]['ad_editor'] = $fm->user['name'];
$topic[$post_id]['ad_edited'] = $fm->_Nowtime;
if (isset($topic[$post_id]['mo_editor'])) {
unset($topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}
} else {
$topic[$post_id]['mo_editor'] = $fm->user['name'];
$topic[$post_id]['mo_edited'] = $fm->_Nowtime;
}
} elseif ($fm->_Moderator === FALSE && $fm->_Nowtime - $list[$topic_id]['postdate'] > 300) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
$fm->_Boolean($fm->input,'modertext');
if ($fm->_Moderator === TRUE && $topic[$post_id]['p_id'] !== $fm->user['id'] && $fm->input['modertext'] === TRUE) {
if ($fm->input['mo_text'] !== '') {
$topic[$post_id]['mo_text'] = $fm->input['mo_text'];
}
$topic[$post_id]['lockedit'] = ($fm->_Boolean($fm->input,'lockedit') === TRUE) ? TRUE:FALSE;
if ($topic[$post_id]['lockedit'] === FALSE) {
unset($topic[$post_id]['lockedit']);
}
if (defined('IS_ADMIN')) {
$topic[$post_id]['ad_editor'] = $fm->user['name'];
$topic[$post_id]['ad_edited'] = $fm->_Nowtime;
if (isset($topic[$post_id]['mo_editor'])) {
unset($topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}
} else {
$topic[$post_id]['mo_editor'] = $fm->user['name'];
$topic[$post_id]['mo_edited'] = $fm->_Nowtime;
}
} elseif ($fm->_Moderator === FALSE && $fm->_Nowtime - $list[$topic_id]['postdate'] > 300) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
Не хотелось бы напортачить, заранее спасибо.
20. Таня - 12 марта 2011 — 15:24 - перейти к сообщению
Nikela, это до применения исправления для удаления отметки о редактировании администратором, на которое у Вас ссылка в сообщении.
Скоро на меня Юра наверное обидится , но я нашла там еще один неприятный момент - надпись о правке показывается раньше подписи пользователя, что совсем плохо смотрится.
Ввела в topic.php еще одну переменную, чтобы это исправить, но сейчас не об этом.
Вот мой отрезок кода из postings.php, если применять, то обязательно после исправления (ссылка выше) и естественно сделав резервную копию файла postings.php.
Вариант с отметкой о редактировании своих постов, если автор Администратор/Модератор:
Вариант с закомментированной строкой, тут Администраторы могут править свои сообщения без отметок:
Возможно, строка для правки своих сообщений Администраторами/Модераторами не идеальна, но думаю это нужно/можно опционально вынести в админку. Если такая возможность не требуется закомментированную строку можно совсем удалить.
Последняя строчка в примерах
не изменяется, я её привела для определения места окончания отрезка кода.
Юра наверное еще подправит, уже под вариант с исправлением, в моем варианте 300 секунд (подставила как у Nikela, чтобы меньше возиться) дается на правку без отметки о редактировании с момента публикации сообщения.
Скоро на меня Юра наверное обидится , но я нашла там еще один неприятный момент - надпись о правке показывается раньше подписи пользователя, что совсем плохо смотрится.
Ввела в topic.php еще одну переменную, чтобы это исправить, но сейчас не об этом.
Вот мой отрезок кода из postings.php, если применять, то обязательно после исправления (ссылка выше) и естественно сделав резервную копию файла postings.php.
Вариант с отметкой о редактировании своих постов, если автор Администратор/Модератор:
CODE:
$fm->_Boolean($fm->input,'modertext');
if($fm->_Moderator===TRUE){
$topic[$post_id]['lockedit']=($fm->_Boolean($fm->input,'lockedit')===TRUE)?TRUE:FALSE;
if($topic[$post_id]['lockedit']===FALSE){
unset($topic[$post_id]['lockedit']);
}
if($topic[$post_id]['p_id']!==$fm->user['id']&&$fm->input['modertext']===TRUE){
if($fm->input['mo_text']!==''){
$topic[$post_id]['mo_text']=$fm->input['mo_text'];
}
if(defined('IS_ADMIN')){
$topic[$post_id]['ad_editor']=$fm->user['name'];
$topic[$post_id]['ad_edited']=$fm->_Nowtime;
unset($topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}else{
$topic[$post_id]['mo_editor']=$fm->user['name'];
$topic[$post_id]['mo_edited']=$fm->_Nowtime;
unset($topic[$post_id]['ad_editor'],$topic[$post_id]['ad_edited']);
}
}else{
unset($topic[$post_id]['mo_text'],$topic[$post_id]['ad_editor'],$topic[$post_id]['ad_edited'],
$topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}
}else{
if($fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //время редактирования без отметки о редактировании автором
}
if($fm->_Moderator===TRUE&&$topic[$post_id]['p_id']==$fm->user['id']&&$fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //редакция своих постов модераторами
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));
if($fm->_Moderator===TRUE){
$topic[$post_id]['lockedit']=($fm->_Boolean($fm->input,'lockedit')===TRUE)?TRUE:FALSE;
if($topic[$post_id]['lockedit']===FALSE){
unset($topic[$post_id]['lockedit']);
}
if($topic[$post_id]['p_id']!==$fm->user['id']&&$fm->input['modertext']===TRUE){
if($fm->input['mo_text']!==''){
$topic[$post_id]['mo_text']=$fm->input['mo_text'];
}
if(defined('IS_ADMIN')){
$topic[$post_id]['ad_editor']=$fm->user['name'];
$topic[$post_id]['ad_edited']=$fm->_Nowtime;
unset($topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}else{
$topic[$post_id]['mo_editor']=$fm->user['name'];
$topic[$post_id]['mo_edited']=$fm->_Nowtime;
unset($topic[$post_id]['ad_editor'],$topic[$post_id]['ad_edited']);
}
}else{
unset($topic[$post_id]['mo_text'],$topic[$post_id]['ad_editor'],$topic[$post_id]['ad_edited'],
$topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}
}else{
if($fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //время редактирования без отметки о редактировании автором
}
if($fm->_Moderator===TRUE&&$topic[$post_id]['p_id']==$fm->user['id']&&$fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //редакция своих постов модераторами
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));
Вариант с закомментированной строкой, тут Администраторы могут править свои сообщения без отметок:
CODE:
$fm->_Boolean($fm->input,'modertext');
if($fm->_Moderator===TRUE){
$topic[$post_id]['lockedit']=($fm->_Boolean($fm->input,'lockedit')===TRUE)?TRUE:FALSE;
if($topic[$post_id]['lockedit']===FALSE){
unset($topic[$post_id]['lockedit']);
}
if($topic[$post_id]['p_id']!==$fm->user['id']&&$fm->input['modertext']===TRUE){
if($fm->input['mo_text']!==''){
$topic[$post_id]['mo_text']=$fm->input['mo_text'];
}
if(defined('IS_ADMIN')){
$topic[$post_id]['ad_editor']=$fm->user['name'];
$topic[$post_id]['ad_edited']=$fm->_Nowtime;
unset($topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}else{
$topic[$post_id]['mo_editor']=$fm->user['name'];
$topic[$post_id]['mo_edited']=$fm->_Nowtime;
unset($topic[$post_id]['ad_editor'],$topic[$post_id]['ad_edited']);
}
}else{
unset($topic[$post_id]['mo_text'],$topic[$post_id]['ad_editor'],$topic[$post_id]['ad_edited'],
$topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}
}else{
if($fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //время редактирования без отметки о редактировании автором
}
//if($fm->_Moderator===TRUE&&$topic[$post_id]['p_id']==$fm->user['id']&&$fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //редакция своих постов модераторами
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));
if($fm->_Moderator===TRUE){
$topic[$post_id]['lockedit']=($fm->_Boolean($fm->input,'lockedit')===TRUE)?TRUE:FALSE;
if($topic[$post_id]['lockedit']===FALSE){
unset($topic[$post_id]['lockedit']);
}
if($topic[$post_id]['p_id']!==$fm->user['id']&&$fm->input['modertext']===TRUE){
if($fm->input['mo_text']!==''){
$topic[$post_id]['mo_text']=$fm->input['mo_text'];
}
if(defined('IS_ADMIN')){
$topic[$post_id]['ad_editor']=$fm->user['name'];
$topic[$post_id]['ad_edited']=$fm->_Nowtime;
unset($topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}else{
$topic[$post_id]['mo_editor']=$fm->user['name'];
$topic[$post_id]['mo_edited']=$fm->_Nowtime;
unset($topic[$post_id]['ad_editor'],$topic[$post_id]['ad_edited']);
}
}else{
unset($topic[$post_id]['mo_text'],$topic[$post_id]['ad_editor'],$topic[$post_id]['ad_edited'],
$topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}
}else{
if($fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //время редактирования без отметки о редактировании автором
}
//if($fm->_Moderator===TRUE&&$topic[$post_id]['p_id']==$fm->user['id']&&$fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //редакция своих постов модераторами
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));
Возможно, строка для правки своих сообщений Администраторами/Модераторами не идеальна, но думаю это нужно/можно опционально вынести в админку. Если такая возможность не требуется закомментированную строку можно совсем удалить.
Последняя строчка в примерах
CODE:
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));
не изменяется, я её привела для определения места окончания отрезка кода.
Юра наверное еще подправит, уже под вариант с исправлением, в моем варианте 300 секунд (подставила как у Nikela, чтобы меньше возиться) дается на правку без отметки о редактировании с момента публикации сообщения.
21. Nikela - 12 марта 2011 — 20:29 - перейти к сообщению
Что-то у меня не получается
Может я вообще не правильно поняла для чего тот мод по ссылке...
Попробую описать свою проблему. Имеем пост - http://www.shopzona.info/forum/t...64151#1299264151 (простите, но я привожу ссылку на пост, а открывается целая страница, моя проблема в 6 посте сверху)
Хочу: удалить пометку о моем редактировании.
Сделала правки согласно инструкции + при последнем редактировании postings.php взяла фрагмент Тани. Залила на хост.
Захожу в редактирование поста и вижу:
Ни одно из выполненных мной действий не удаляет пометки о моем редактировании.
Прикладываю свой файл postings.php.
Работает все нормально, ошибки не выпадают.
Может я вообще не правильно поняла для чего тот мод по ссылке...
Попробую описать свою проблему. Имеем пост - http://www.shopzona.info/forum/t...64151#1299264151 (простите, но я привожу ссылку на пост, а открывается целая страница, моя проблема в 6 посте сверху)
Хочу: удалить пометку о моем редактировании.
Сделала правки согласно инструкции + при последнем редактировании postings.php взяла фрагмент Тани. Залила на хост.
Захожу в редактирование поста и вижу:
Ни одно из выполненных мной действий не удаляет пометки о моем редактировании.
Прикладываю свой файл postings.php.
Работает все нормально, ошибки не выпадают.
22. yura3d - 12 марта 2011 — 21:50 - перейти к сообщению
Nikela пишет:
Ни одно из выполненных мной действий не удаляет пометки о моем редактировании.
Хм, странно. Закачал Ваш файл на тестовый форум в локалке - все пометки о редактировании удаляются, достаточно только напротив пункта Добавить подпись редактора? выбрать нет. Также проверил правки в этом файле, связанные с данным исправлением, никаких ошибок не обнаружил
23. Nikela - 12 марта 2011 — 23:15 - перейти к сообщению
yura3d, мои извинения, я перезалила по новой файл и все заработало!!!