EDIT: Falls das irgendwer nochmal nutzen möchte - dieser Schnippsel prüft nur, ob eine Datei in der article_slice Tabelle drinsteht - sprich über ein Modul eingebunden ist. Dateien die zb über den Table Manager oder Metainfos eingebunden sind, werden ohne Rückfrage gelöscht. Also
nur benutzen, wenn Dateien nur über Module eingebunden sind.
Code: Alles auswählen
$sql = rex_sql::factory();
$all_files = $sql->getArray('SELECT filename FROM '.$REX['TABLE_PREFIX'].'file');
if (count($all_files))
{
foreach ($all_files as $key => $val)
{
$sql = rex_sql::factory();
$filename = $val['filename'];
$values = array();
for ($i = 1; $i < 21; $i++)
{
// check if valueX contains $filename,
// but take care that other files that end with $filename are not matched
// example: "abc.jpg" should not be matched for $filename="bc.jpg"
$values[] = 'value'.$i.' REGEXP "(^|[^[:alnum:]+_-])'. $filename .'"';
}
$files = array();
$filelists = array();
for ($i = 1; $i < 11; $i++)
{
$files[] = 'file'.$i.'="'.$filename.'"';
$filelists[] = 'FIND_IN_SET("'.$filename.'",filelist'.$i.')';
}
$where = '';
$where .= implode(' OR ', $files).' OR ';
$where .= implode(' OR ', $filelists) .' OR ';
$where .= implode(' OR ', $values);
$query = 'SELECT DISTINCT article_id, clang FROM '.$REX['TABLE_PREFIX'].'article_slice WHERE '. $where;
$file_used_in = $sql->getArray($query);
if (count($file_used_in))
{
unset($all_files[$key]);
}
}
if (count($all_files))
{
foreach ($all_files as $val)
{
OOMedia::delete($val['filename']);
}
}
}