Удаление комментария пользователем - решено

Добрый день.

Помогите такую задачу решить для релиза 0.5 — надо дать возможность пользователям удалять свои комментарии из топиков.

В файле comments.tpl сделал такую конструкцию:

{if !$oComment->getDelete() and $oUserCurrent and ($oUserCurrent->isAdministrator() OR $oUserCurrent->getUserID() == $oComment->getUserID())}
<li><a href="#" class="delete" onclick="ls.comments.toggle(this,{$oComment->getId()}); return false;">{$aLang.comment_delete}</a></li>
{/if}

Т.е. в добавил OR $oUserCurrent->getUserID() == $oComment->getUserID() там, где идет проверка на админа.
Но при нажатии «удалить» — ошибка «нет доступа».

Решение под cut'ом

UPD: методом проб и ошибок и благодаря советам netlanc удалось найти вот такое решение: в /classes/actions/ActionAjax.class.php нужно исправить следующий блок
protected function EventCommentDelete() {
	
		$idComment=getRequest('idComment',null,'post');
		$oComment=$this->Comment_GetCommentById($idComment);
		
		if (!$this->oUserCurrent and (!$this->oUserCurrent->isAdministrator() or $this->oUserCurrent->getId()!=$oComment->getUserId())) {
			$this->Message_AddErrorSingle($this->Lang_Get('not_access'), $this->Lang_Get('error'));
			return;
		}
		
		if !($oComment=$this->Comment_GetCommentById($idComment))) {...

4 комментария

avatar
кроме шаблона нужно еще в экшене условие добавить
avatar
Спасибо, работает!

А как бы так сделать, чтоб автор топика мог удалять комментарии к нему?
  • Lego
  • 0
avatar
Предполагаю, нужно получить идентификатор топика, к которому написан этот комментарий, затем проверить «авторство» топика с текущим пользователем, не подскажите как это можно сделать?)
avatar
Не работает((
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.