it-swarm-eu.dev

Jak odstranit 1600 uživatelů a 2500 příspěvků?

Před pár lety jsem nakonfiguroval web s Drupal 6,9, a pak jsem na to zapomněl.) Mám 160 stránek uživatelů, kteří jsou všichni spammery, a musím odstranit všechny kromě 3. Dělám to jeden stránka je současně bolestně pomalá díky MySQL hovorům (myslím). Také mám asi 2500 fórů k odstranění.

Trochu se bojím vymazat záznamy z databáze přímo.

Viděl jsem modul s názvem „hromadné mazání“, ale je určen pro Drupal verze 5 a není k dispozici pro verzi 6).

10
John R

Můžete použít Views Bulk Operations , modul, který umožňuje provádět hromadné operace na uzlech, uživatelích, komentářích; umožňuje také použít vybranou operaci na všechny uzly, uživatele nebo komentáře pomocí Batch API . Dávkové API umožňuje, aby se zpracování formulářů rozložilo na několik požadavků na stránku, čímž se zajistí, že zpracování nebude přerušeno z důvodu časového limitu PHP) a zároveň umožní uživateli získat zpětnou vazbu o průběhu probíhající operace.

17
kiamlaluno

Tento způsob zabíjení uzlů je velmi pomalý, ale nejbezpečnější

function MYMODULE_menu(){
  $items['admin/mymodule/killnodes/%'] = array(
      'title' => 'Kill nodes',
      'page callback' => 'kill_nodes',
      'page arguments' => array(3),
      'type' => MENU_CALLBACK,
      'access arguments' => array('administer site configuration'),
  );
  return $items;
}

function kill_nodes($type){
  $query = "SELECT node.nid AS nid FROM {node} node WHERE node.type IN ('%s')";
  $result = db_query($query, $type);
  $count = 0;
  while($row = db_fetch_object($result)){
    node_delete($row->nid);
    $count++;
  }
  $message = t('!count nodes has been killed. Pif-Paf!', array('!count' => $count));
  drupal_set_message($message);
  return t("That's all folks");
}

Pro uživatele můžete programově určit uživatele, kterého chcete odstranit? Pokud je to možné, můžete použít předchozí funkci jako příklad k odstranění nežádoucích uživatelů.

3
dobeerman

Místo vytvoření vlastního modulu pro tuto úlohu můžete použít jednoduchý skript a spustit jej pomocí Drush . Protože potřebujete zpracovat mnoho uživatelů a uzlů, doporučuje se používat rozhraní Batch API (a může lze použít s Drush ).

3
Pierre Buyle

Pokud stejně jako já dáváte přednost přístupu Python (pravděpodobně zde vzácně, ale stále), jedná se o transparentní a efektivní způsob, jak tento problém vyřešit:

import os

# Build up a variable containing the usernames
# This list was built using drush sql-cli, then
# SELECT name FROM users 
#   where $your-where-condition 
#   order by uid asc 
#   INTO 
#     OUTFILE '/tmp/users.csv' 
#     FIELDS TERMINATED BY ',' 
#     ENCLOSED BY '"' 
#     lines terminated by ', ' ;
users = [result from SQL goes here]

for user in users:
    print("Deleting spam user: %s..." % user),
    os.system('drush --yes -r $your-path-to-drupal -l $your-site-url user-cancel --delete-content %s > /dev/null' % user) 
    print 'Done'

Kroky jsou v podstatě:

  1. Přihlaste se do své databáze pomocí drush sql-cli -r $your-path-to-drupal -l $your-site-url
  2. Spusťte výše uvedený SQL s vlastní podmínkou a vložte výsledky do uživatelské proměnné.
  3. Aktualizujte vaši drupal cestu a název webu do příkazu drush)
  4. Spusťte skript pomocí python delete-users.py

Určitě existuje lepší způsob, jak toho dosáhnout, ale toto je moje hackované řešení, které funguje dobře.

2
mlissner

Použijte modul pokročilý uživatel . Tento modul přidá na stránku správy uživatelů záložku „Advanced“. Na této kartě můžete uživatele filtrovat podle libovolného atributu (role, stavu atd.) A vybrat vše. Pokud vyberete způsob mazání uživatelů jako odstranění uživatele a odstranění veškerého obsahu, můžete také odstranit veškerý obsah, který vytvořili.

1
Sinan Erdem

Implementoval jsem vlastní modul pro mazání všech uživatelů indrupal 7. V oblasti admin/people existuje nový formulář pro dokončení této operace.

Příliš s drush.

Je projektem karantény. Thk.

Odkaz na projekt.

1
lgrtm

Vyzkoušejte tyto 2 moduly pro D6:

Uživatel Prune https://drupal.org/project/user_Prune a Smazání uživatele https://drupal.org/project/user_delete

User Prune umožňuje hromadné mazání neaktivních uživatelů na základě zadaných kritérií.

Odstranění uživatele umožňuje odstranit uživatele a odstranit veškerý odeslaný obsah včetně uzlů a komentářů

1
FreeScholar

Modul Smazat vše by se mohl hodit.

Po instalaci můžete udělat například:

drush delete-all articles

nebo

drush delete-all users

Verze Drupal 6 v dev, ale z poznámek:

Všechno by mělo fungovat kromě rychlého mazání.

0
Mauro Sardu