Тема: Удаление файлов аватаров без юзеров на PUNBB.
В папочке "/img/avatars " форума на движке PUNBB есть очень много аватаров.
Некоторые аватары без юзеров в базе, а значит не используются и лишние.
Удаляем такие.
<?php // ДЛЯ АНГЛ ФОРУМА!
echo "<br>подкл к БД...";
// ЕСЛИ НЕТ НИКОВ
$file_ini = file("boris.ini");
$host="localhost";
$user=trim($file_ini[0]);
$pwd=trim($file_ini[1]);
$database_name=trim($file_ini[2]);
$db=mysql_connect($host,$user,$pwd);
echo "<br> {$database_name} - {$user} - {$pwd} <br>";
mysql_select_db($database_name,$db);
mysql_query("SET character_set_client='utf8'");
mysql_query("SET character_set_connection='cp1251'");
mysql_query("SET character_set_results='cp1251'");
echo "читаем имена файлов аватаров";
$dir = '../img/avatars';
$files1 = scandir($dir);
chdir ($dir);
echo " <br> " . getcwd() . " <br> ";
foreach($files1 as $filename) {
if ($filename != '.' && $filename != '..') {
// по имени файла аватара ищем в базе ник, если ника нет - то стереть ненужный аватар.
$myfile = substr($filename,0,strlen($filename)-4); ; //имя файла аватара без расширения (цифры)
//echo " $myfile - $filename";
$query = mysql_query("select * from users WHERE id = '$myfile' ") or die("Invalid query" . mysql_error()); // ищем ник в БД по имени файла аватара
while ($row = mysql_fetch_assoc($query)) {
$nik = $row['username']; // логин
$num_posts = $row['num_posts']; // кол-во постов
echo $myfile . "//" . $nik . "* постов: ". $num_posts ;
if (empty ($nik)) { // если с учетом кол-ва постов, то (($num_posts == "5") or empty ($nik))
echo " УДАЛЯЕМ " . $filename ;
unlink ($filename);
print_r(error_get_last());
}
echo " <br> ";
}
}
}
mysql_close($db);
echo "<br>закрыли БД";
?>
Есть еще проблема - у некоторых ников (юзеров) по два соответсвующих файла аватаров, но с разными расширениями.
Как понять - какой аватар у ника?
Вот соответствие с таблицы users поля avatar:
define('FORUM_AVATAR_NONE', 0);
define('FORUM_AVATAR_GIF', 1);
define('FORUM_AVATAR_JPG', 2);
define('FORUM_AVATAR_PNG', 3);