it-swarm-es.com

eliminar comentarios en masa

¿Cómo puedo eliminar todos los comentarios a la vez? He visto cómo hacerlo con nodos y módulo de eliminación masiva, ¿Cómo eliminar todos los nodos de un tipo de contenido dado? pero estoy buscando una solución similar para comentarios.

Estoy buscando una solución que no deje ningún artefacto en la base de datos. ¿Views Bulk Operations es la mejor solución?

11
brian_d

AFAIK, VBO debería poder hacer el trabajo, pero no lo he intentado yo mismo para eliminar comentarios.

Otra forma es ejecutar algún código (en un módulo o en el bloque 'Ejecutar php' del módulo Devel) que obtiene una lista de todas las consultas de la base de datos, crea una matriz de ID de comentarios y pasa esa matriz al comment_delete_multiple función. Tenga en cuenta que esto puede tardar un tiempo en completarse (según el rendimiento del servidor y la cantidad de comentarios), por lo que puede solucionarlo, por ejemplo, utilizando set_time_limit (http://php.net/manual/en/function .set-time-limit.php) o la API por lotes de Drupal.

[actualización: vea la respuesta de Chris Cohen para un código de ejemplo basado en este enfoque.]

7
marcvangend

Esta no es una respuesta alternativa, más una elaboración de marcvangend's, pero no pude comentar su respuesta y dejar un código de ejemplo. Entonces, el enfoque manual, usando el bloque de código de ejecución de devel, se vería un poco como:


$cids = db_select('comment', 'c')
  ->fields('c', array('cid'))
  ->execute()
  ->fetchCol();

comment_delete_multiple($cids);

Como señala marcvangend, esto se limitará al tiempo de ejecución en su servidor, por lo que deberá aumentarlo temporalmente si tiene muchos comentarios. Gracias a manarth e instanceofjamie por la ayuda de dbtng.

7
Chris Cohen

Personalmente, iría por el módulo Views Bulk Operations .

Este módulo aumenta las vistas al permitir que se ejecuten operaciones masivas en las filas mostradas. Para ello, muestra una casilla de verificación delante de cada nodo y agrega un cuadro de selección que contiene las operaciones que se pueden aplicar. Drupal Se pueden usar acciones básicas o de reglas.

2
Karl Jóhann

Esta respuesta es similar a una respuesta ya mencionada, pero la modifiqué para evitar un "error de falta de memoria" para unos 27,000 comentarios. Esto tardará un tiempo en ejecutarse dependiendo de la cantidad de comentarios. Simplemente truncar la tabla de comentarios puede no ser una buena idea; es mejor dejar que Drupal maneje la eliminación de contenido.

Creé un script PHP script:

$cids = db_select('comment', 'c')
  ->fields('c', array('cid'))
  ->execute()
  ->fetchCol();

foreach($cids as $cid)
{
  comment_delete($cid);
}

... luego ejecutó el script con Drush

drush @my_alias php-script my_script.php
0
Parag

Honestamente, cuando necesitaba hacer esto, lo hice en la base de datos. Eliminas los comentarios, corriges las estadísticas de comentarios y poof, todos los comentarios se han ido. Evitaría hacer esto si tienes módulos que interactúan con los comentarios de alguna manera extraña, de lo contrario es lo que sugeriría.

TABLA TRUNCADA comentarios

ACTUALIZAR node_comment_statistics SET comment_count = 0

0
G.Martin

Se logró eliminar aproximadamente 45,000 comentarios mediante el uso del módulo Copia de seguridad y migración. En la configuración avanzada en 'Excluir los datos de las siguientes tablas' - primero presione la tecla Ctrl y luego seleccione el comentario en la lista - (tenga cuidado porque aquí las tablas de caché innecesarias ya están seleccionadas) - copia de seguridad - restaurar desde este archivo respaldado. ¡Hurra!

0
VivMajor

Algunas herramientas de IU Puede instalar los módulos a continuación

Vistas - drupal.org/project/views

Cada Drupal sitio necesita, creo ... Genera SQL en el backend y muestra resultados con configuraciones configurables, filtros, clasificación, paginación ... etc.

VBO - http://drupal.org/project/views_bulk_operations Para permitir operaciones masivas (es decir, eliminar comentarios para este hilo)

Vistas de administración - http://drupal.org/project/admin_views Aproveche las ventajas de Vistas y VBO, reemplace el contenido original, comentarios, páginas de administración de usuarios por menu_alter ...

  1. Después de habilitar los módulos anteriores, regrese a la página de administración de comentarios
  2. Marque seleccionar todo ( tenga cuidado , asegúrese de que desea eliminar todos los comentarios ...)
  3. Seleccione "Eliminar" y "Enviar" ( tenga cuidado , no más botón de confirmación más tarde ...)
0
Ck Poon

Por lo general, recomendaría usar VBO para eliminar comentarios o nodos en masa, pero si se encuentra en una situación en la que tiene cientos de miles de comentarios y no tiene demasiado tiempo, aquí hay una consulta SQL que eliminará todos los comentarios no aprobados junto con todas las revisiones y datos relacionados con esos comentarios que en mi caso ocupaban 1.2Gb de espacio en DB

DELETE c, rcb, dcb
FROM
    comment AS c
JOIN field_revision_comment_body AS rcb ON (c.cid = rcb.entity_id)
JOIN field_data_comment_body AS dcb ON (rcb.entity_id = dcb.entity_id)
WHERE
    c. STATUS = 0
0
Octan