Ho un modulo (backend) in cui posso gestire delle parti dell’applicazione; Il problema sta qui: devo eliminare dei record e una cartella con delle immagini al loro interno…e singolarmente dal backend è tutto ok, ora tramite cronjob dovrei eliminare tutte le cartelle e i files,ed i dati del database…che hanno data odierna
La Parte del controller nel backend
private function recursiveRemove($dir) {
$structure = glob(rtrim($dir, "/").'/*');
if (is_array($structure)) {
foreach($structure as $file) {
if (is_dir($file)) recursiveRemove($file);
elseif (is_file($file)) unlink($file);
}
}
rmdir($dir);
}
public function actionDelete($id)
{
$model=$this->loadModel($id);
//elimino cartella e file
$this->recursiveRemove(Yii::getPathOfAlias('webroot').'/images'.'/'.$model->nomecartella);
$img_add = new GalleryImages();
if ($img_add->gallery_id = $model->id) {
//elimino le immagini figlie
$img_add->deleteAllByAttributes(array(),'`gallery_id` = :delete',array(
':delete'=>$model->id,));
//elimino offerta
$this->loadModel($id)->delete();
ora dovrei fare ciò anche tramite cronjob. nel command:
public function run($args)
{
// seleziono i record con la dataOdierna
$offerte = Offerte::model()->findAllByAttributes(array('data_fin'=>date('Y-m-d')));
foreach ($offerte as $del_offerte) {
//elimino cartella e file
$this->recursiveRemove(Yii::getPathOfAlias('webroot').'/images'.'/'.$del_offerte->nomecartella);
}
//Elimino i record dal database
Offerte::model()->deleteAllByAttributes(array(
'data_fin'=>date('Y-m-d'),
));
}
Cosi facendo il cron mi elimina solo i record del database;è come se non mi riconoscesse la funzione per eliminare la cartella e i files…che è la stessa che ho nel controller della parte backend…ed eliminado uno ad uno funge!,
quindi la soluzione migliore è creare il componente?(ancora non ci ho provato a farne uno ), vorrei capire come agire per fare le cose “pulite”…se magari il problema si ripresentasse in futuro…saprei come “agire”