Myengine

Удаление комментариев в новости

5 месяцев назад Surfyk

Столкнулся с одной проблемой или багом в новостной ленте. Существует новость и к ней есть ряд комментариев, примерно так

Скрин - https://3s-cms.ru/files/f1.jpg

Если удалять ненужные комментарии прямо на странице, то удаляется нормально. Если удалять в админке по очереди начиная с последнего, то удаляется нормально. А вот, если удалять выборочно, то начинаются проблемы. Например, если в админке удалить коммент с сообщением 3, то на странице получается вот так

Скрин - https://3s-cms.ru/files/f2.jpg

В админке нужный комментарий удаляется, на странице удаляется самый верхний, а вместо удаленного появляется строка - 49 лет назад и ссылка Ответить. Причем, если продолжить удалять комменты из середины или конца списка, все повторяется.

Вот как-то так. По моему, про такой баг никто еще не писал.

И еще. При удалении комментов на странице они не удаляются в админке, это как-то не логично.

Вернуться назад к другим темам

Ответы пользователей

Чтобы оставлять сообщения необходимо авторизоваться
Surfyk 4 месяца назад

Ivan, я имел ввиду при удалении самой новости, хотя я думаю это не принципиально, файл с самими комментами удаляется и это главное, остаются только в списке последних комментариев, но при большом количестве комментов в этом списке не заметно будет, что комментарии не удалились.

Ivan 4 месяца назад

Surfyk, да комментарии из списка последних комментариев, при удалении со страницы , не удаляются. Да не правильно, но так сделать были причины.

Surfyk 4 месяца назад

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

Ivan 5 месяцев назад

Surfyk, спасибо и тебя с праздником Великой Победы!

Surfyk 5 месяцев назад

Ivan, с Праздником Великой Победы!

Я уже понял, что это просто решить нельзя, иначе вопрос не задавал :)

Ivan 5 месяцев назад

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

Denis, ок

Denis 5 месяцев назад

echo'<div class="msg">Удаление успешно завершенА</div>';

Surfyk 5 месяцев назад

А удаление комментов в админке при удалении на самой странице будет в обновлении?

Ivan 5 месяцев назад

после праздников выпущу обновление

Ivan 5 месяцев назад

Нашел в чем была проблема. В файле modules/news/admin.php в сегменте dellcoment (775 строка) должно быть так.

if($act=='dellcoment'){

if(($lastComments = json_decode($newsStorage->get('lastComments'), true)) == false){

echo'<div class="msg">Ошибка. Нет ни одного сообщения.</div>';

}else{

$dellComment = array();

foreach($lastComments as $key => $value){

if(in_array($value['idComment'], $_POST['comment'])){

$dellComment[$value['idNews']][] = $value['idComment'];

unset($lastComments[$key]);

}

}

// Переиндексировали числовые индексы

$lastComments = array_values($lastComments);

$newsStorage->set('lastComments', json_encode($lastComments));

unset($lastComments);

foreach($dellComment as $key => $value){

$arrayComments = json_decode($newsStorage->get('comments_'.$key), true);

foreach($arrayComments as $i => $row){

if (in_array($row['id'], $value)){

unset($arrayComments[$i]);

}

}

// Переиндексировали числовые индексы

$arrayComments = array_values($arrayComments);

$newsStorage->set('comments_'.$key, json_encode($arrayComments));

}

echo'<div class="msg">Удаление успешно завершена</div>';

}

?>

<script type="text/javascript">

setTimeout('window.location.href = \'module.php?module=<?php echo $MODULE;?>&act=comment\';', 3000);

</script>

<?php

}

Ivan 5 месяцев назад

После праздников буду разбираться. Спасибо.