Как программно удалить комментарии на форуме в drupal? - PullRequest
0 голосов
/ 01 августа 2011

На моем веб-сайте мне нужно предоставить пользователям возможность удалять свои комментарии на форуме.Я хочу удалить комментарии и обновить статистику узла комментариев.Есть ли функции Drupal для удаления комментариев?

Ответы [ 4 ]

1 голос
/ 04 июня 2013

В Drupal 7 есть comment_delete_multiple () , которая вызывает хуки, участвующие в удалении комментариев, и обновляет статистику узла с помощью _comment_update_node_statistics () . Требуется массив идентификаторов комментариев.

В Drupal 6 нет эквивалентной функции, но вы пишете эквивалент функции Drupal 7, учитывая, что:

  • Drupal 6 не имеет функций для обработки транзакций
  • В Drupal 6 имена хуков, вызываемых при удалении комментария, отличаются
  • Drupal 6 не имеет полей сущностей
  • Drupal 6 не имеет эквивалента для db_delete() или comment_load_multiple()
0 голосов
/ 02 августа 2011

Что-то вроде ...

<?php

// you'll need to include /modules/comment/comment.admin.inc
module_load_include('inc', 'comment', 'comment.admin');

// I'm assuming you have access to the cid, the unique
// identifier for comments stored in the {comments} table
$comment = _comment_load($cid);
_comment_delete_thread($comment);
_comment_update_node_statistics($comment->nid);

?>

Это решение для Drupal 6, но вы можете позаимствовать включаемые файлы из модуля комментариев и перехватить их функции в других версиях.

Я не уверен, что модули contrib, расширяющие базовую функциональность форума (например, Advanced Forum ), предоставляют опцию без написания пользовательского кода, но вы, возможно, захотите изучить ее.

0 голосов
/ 25 февраля 2013

Drupal 7 Используйте comment_delete ()

<?php

    //Delete single comment
    $cid = 3917; //cid from `comment` table
    comment_delete($cid);

    //Delete multiple comments
    $cids = array(137421,137426,137427,137428,137429,137430,137431,137434,137450,137472);
    foreach ($cids as $cid) {
       comment_delete($cid);    
    }
0 голосов
/ 02 августа 2011
...