Allora non ti rimane che controllare tu tutte le immagini, oppure creare uno script in php che cancelli i file, in base ad una lista creata da te, ma qui le cose si fanno più complicate. Al massimo ti posso dare una dritta.
Fai una query con LIKE, nella tabella dei post, dove metti l'indirizzo della cartella dove si caricano le immagini, prendi tutti i link e crei un array con tutti i link, dopo di che crei un ciclo (in questo ti serve la funzione while() in php) aprendo la directory. Se il file è nell'array, quindi nella lista (funzione in_array() in php) lo lascia, altrimenti lo cancella (funzione unlink() in php).
Devi creare quindi due condizione in terne al ciclo usando if e else.
Esempio banale dello script:
<?php
define('IN_ICYPHOENIX', true);
if (!defined('IP_ROOT_PATH')) define('IP_ROOT_PATH', './');
include(IP_ROOT_PATH . 'cms/common.' . PHP_EXT);
// Start session management
$userdata = session_pagestart($user_ip);
init_userprefs($userdata);
// End session management
if (($userdata['user_level'] == ADMIN) && ($userdata['session_logged_in']))
{
$dir = IP_ROOT_PATH . POSTED_IMAGES_PATH;
$sql = "SELECT post_text FROM " . POSTS_TABLE . " LIKE '%" . POSTED_IMAGES_PATH . "%'";
if (!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not read posts info.', '', __LINE__, __FILE__, $sql);
}
print 'File da cancellare (Lista Post DB):<br /><ul>';
while($row = $db->sql_fetchrow($result))
{
print '<li>' . $row['post_text'] . '</li>';
}
print '</ul>';
$dir_handle = (opendir($dir)) ? opendir($dir) : die('Impossibile aprire ' . $dir);
$file_not_delete = array(
'.',
'..',
'file.gif',
'file.jpg',
'file.png',
);
print 'File da cancellare:<br /><ul>';
while ($file = readdir($dir_handle))
{
if(!in_array($file, $file_not_delete))
{
print '<li>' . $file . '</li>';
#unlink($file); /* NON COMMENTARE QUESTA LINEA FINCHE' NON SEI SICURO CHE FUNZIONI BENE */
}
}
print '</ul>';
closedir($dir_handle);
}
else
{
message_die(GENERAL_MESSAGE, $lang['Not_Auth_View']);
}
?>
Questo script dovrebbe listarti tutti i file che sono presenti nella directory
/files/posted_images/ e che non sono presenti nell'arry, quindi che
SONO PRESENTI ED UTILIZZATE NEI THREAD.
Questa linea:
#unlink($file); /* NON COMMENTARE QUESTA LINEA FINCHE' NON SEI SICURO CHE FUNZIONI BENE */
Non cancellare l'asterisco finchè non sei sicuro che mostri tutti i file non presenti nei thread, perchè li cancella
DEFINITIVAMENTE SENZA CHIEDERE IL PERMESSO.
Per aggiungere un file alla lista dei file
da non cancellare, fai così:
$file_not_delete = array(
'.',
'..',
'file.gif',
'file.jpg',
'file.png',
);
A così:
$file_not_delete = array(
'.',
'..',
'file.gif',
'file.jpg',
'file.png',
'file2.gif',
'file3.jpg',
'file4.png',
'', /* AGGIUNGI QUI I NOMI DEI FILE DA NON CANCELLARE, PER OGNI NOME FAI COME TI HO FATTO IO */
);
Naturalmente dovrai metterci i nomi dei file che sono presenti nel DB, che dovresti poter vedere nel contenuto estratto dal DB.
Dovrai armarti di santa pazienza e prendere a mano tutti i link, altrimenti chiedere di migliorarti lo script che estrae dal testo del post (
$row['post_text'] ) solo il link che contiene /files/posted_images/
Versione di IP: 1.3.15 (αlphα)
Server: Linux
____________
Per favore inserisci nel tuo
Profilo la versione di Icy Phoenix e il Server utilizzato.