[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Medienpool abgleichen?
Seite 1 von 1

Medienpool abgleichen?

Verfasst: 22. Nov 2016, 11:57
von dpf_dd
Hallo Community,

gibt es ein Skript oder Addon (Redaxo 4.6), um nicht benutzte Medien aus dem Medienpool zu entfernen?
Da herrscht mittlerweile eine Unordnung aber die meisten Bilder benutze ich gar nicht mehr...

Ich will die da möglichst schnell und einfach rausgelöscht haben... Any ideas anyone? :)

Grüße,
dpf

Re: Medienpool abgleichen?

Verfasst: 22. Nov 2016, 12:48
von Ingo
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']);
        }
    }

}

Re: Medienpool abgleichen?

Verfasst: 22. Nov 2016, 14:48
von dpf_dd
Danke Ingo. Das funktioniert :)

Und wiedereinmal hast du mir schnell und kompetent helfen können. Nicht zum ersten Mal... Allerherzlichsten Dank für deine Anteilnahme an meinen Problemen :D