стоит Joomla 1.5.10 и AdsManager 2.1.9
Удаление, работает (неправильно!, если отмечено уведомлять по E-mail), рисунки тоже не хотел удалять!!!
Вся проблема была из-за ошибкок допущенных в функции
manage_expiration, код которой целиком я выложил ниже... кому надо прикрепляю файл
adsmanager.php.
- решена проблема с удалением картинок;
- во время удаляются сообщения при отмеченном уведомлении по E-mail
- как часики работает уведомление

Пару слов о том как работает удаление просроченных объявлений: текущая дата записывается в переменную
$last_cron_date (она хранится в фале cron.php),так сделано что функция
manage_expiration, которая отвечает за удаление просроченных объявлений будет запускаться только один раз в день при первом посищении сайта (грамотно!!!)
Для тех кто будет эксперементировать с работоспособностью функции, просто переводите дату на системных часах!!!if ($last_cron_date != date("Ymd"))
manage_expiration($option);
function manage_expiration($option){
global $database,$mosConfig_absolute_path;
// get configuration
$database->setQuery( "SELECT * FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
if ($conf->expiration == 1)
{
if ($conf->recall == 1)
{
$delta = $conf->ad_duration - 1 - $conf->recall_time;
$recall_time = date("Ymd",mktime()-($delta*24*3600));
$database->setQuery( "SELECT id,email,ad_headline FROM #__adsmanager_ads WHERE date_created < $recall_time AND recall_mail_sent = 0");
$ads = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
if(isset($ads))
{
foreach($ads as $ad)
{
sendEmail($ad,$conf,$option);
}
}
$database->setQuery( "UPDATE #__adsmanager_ads SET recall_mail_sent = 1,date_recall = CURDATE() WHERE date_created < $recall_time AND recall_mail_sent = 0");
$database->query();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$delta = $conf->recall_time - 1;
$expiration_date = date("Ymd",mktime()-($delta*24*3600));
//echo "DELETE FROM #__adsmanager_ads WHERE recall_mail_sent = 1 AND date_recall < $expiration_date";
$database->setQuery( "SELECT id FROM #__adsmanager_ads WHERE recall_mail_sent = 1 AND date_recall < $expiration_date");
$pic_id = $database->loadResultArray();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$database->setQuery( "DELETE FROM #__adsmanager_ads WHERE recall_mail_sent = 1 AND date_recall < $expiration_date");
$database->query();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
//
foreach($pic_id as $ad)
{
$nbImages = $conf->nb_images;
for($i = 1 ;$i < $nbImages + 1; $i++)
{
$ext_name = chr(ord('a')+$i-1);
$pict = $mosConfig_absolute_path."/images/com_adsmanager/ads/".$ad.$ext_name."_t.jpg";
if ( file_exists( $pict)) {
unlink( $pict);
}
$pic = $mosConfig_absolute_path."/images/com_adsmanager/ads/".$ad.$ext_name.".jpg";
if ( file_exists( $pic)) {
unlink( $pic);
}
}}
//
}
else
{
////
$delta = $conf->ad_duration - 1;
$expiration_date = date("Ymd",mktime()-($delta*24*3600));
$database->setQuery( "SELECT id FROM #__adsmanager_ads WHERE date_created < $expiration_date");
$pic_id = $database->loadResultArray();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
foreach($pic_id as $ad)
{
$nbImages = $conf->nb_images;
for($i = 1 ;$i < $nbImages + 1; $i++)
{
$ext_name = chr(ord('a')+$i-1);
$pict = $mosConfig_absolute_path."/images/com_adsmanager/ads/".$ad.$ext_name."_t.jpg";
if ( file_exists( $pict)) {
unlink( $pict);
}
$pic = $mosConfig_absolute_path."/images/com_adsmanager/ads/".$ad.$ext_name.".jpg";
if ( file_exists( $pic)) {
unlink( $pic);
}
}
}
/////
$database->setQuery( "DELETE FROM #__adsmanager_ads WHERE date_created < $expiration_date");
$database->query();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
}
}
$last_cron_date = date("Ymd");
$Fnm = $mosConfig_absolute_path .'/components/'.$option.'/cron.php';
$inF = fopen($Fnm,"w");
fwrite($inF,'<?php $last_cron_date='.$last_cron_date.';?>');
fclose($inF);
}
[вложение удалено Администратором]