Egy 'pic' tartalomtípusban képeket tárolok (egy node-hoz egy kép csatolható).
Szeretném programból törölni az összes 'pic' tartalomtípusba tartozó node-ot törölni és a hozzá tartozó csatolt fájlokat is.
function delete_pic_nodes() { $sql = 'SELECT nid FROM {node} n WHERE n.type = :type'; $result = db_query($sql, array(':type' => 'pic')); $nids = array(); foreach ($result as $row) { $nids[] = $row->nid; } node_delete_multiple($nids); // TO DO - Delete files as well, but how? }
A fenti kód törli a node-okat de nem törli a hozzájuk csatolt fájlokat.
Már googliztam egy fél órát, de még nem találom. Hogy érdemes törölni a node-okkal együtt a fájlokat is kódból?
Drupal verzió:
Fórum:
drush?
így?
-
clear: both;
Belenéztem a devel
module kódjába, ők (is) így oldják meg a 'Kill content' funkciót.
devel_generate.inc:
drush genc 0 0 --kill --types
Ez ^^^ nem segített.
Ez a kézi takarítás így ok drupal 7 esetében?
- Kitörlöm a node-okat kódból (ez megy).
- A file_managed táblában mindent törlök, amit admin user-el hoztam létre az utolsó pl. fél órában (az import ideje alatt).
- A fájlrendszeren pedig törlöm a képeket (ebben a tartalomtípusban nincs korábbi, megőrizendő tartalom):
./files/styles/large/public/pic-image/*.jpg
./files/styles/thumbnail/public/pic-image/*.jpg
./files/pic-image/*.jpg
Nem véletlenül nem megy az a
Nem véletlenül nem megy az a fálj törlés. Nézz szét a file_usage táblában is, sztem más nodehoz kapcsolódóan is van a kérdéses fáljhoz bejegyzés hozzá bejegyzés.
Ha így sem megy, akkor a booba féle quickdebug eredményét mutasd meg: Localhoston drush sql-dump > dump1 - felveszel egy új nodeot egy új fáljlal, drush sql-dump > dump2 majd diff dump1 dump2.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.