Mysql
 sql >> Database >  >> RDS >> Mysql

eliminare il file caricato da un array di id quando vengono eliminati in joomla?

Hai alcuni problemi nel tuo codice:

  1. $uploadedfile non viene mai dichiarato ma viene utilizzato per trovare il percorso del file. Presumo che sia lo stesso di $getdeleted .
  2. Hai un ciclo foreach attorno agli elementi nel tuo array che raccoglierà ogni elemento a turno. Comunque modelli la funzione deleteGreetings prende l'intero array. Dovresti rimuovere questa chiamata di funzione dal tuo ciclo, altrimenti verrà chiamata ciascuno per ogni elemento nell'array. Vuoi chiamarlo solo una volta.
  3. Solo alla fine del tuo controller controlli se il tuo parametro cid è nullo ... qual è il punto? Dovresti verificarlo prima di provare a eseguire qualsiasi altro codice.

Farei qualcosa del genere:

$arrayIDs = JRequest::getVar ( 'cid', null, 'default', 'array' );
if ($arrayIDs === null) { //Make sure the cid parameter was in the request
  JError::raiseError ( 500, 'cid parameter missing from the request' );
}
$model = & $this->getModel ( 'greetings' );
jimport ( 'joomla.filesystem.file' );
if (is_array ( $arrayIDs ) && count ( $arrayIDs ) > 0) {
  $del = $model->deleteGreetings ( $arrayIDs );
  // check this outside the loop, if it is inside you are checking it for 
  // each element in the array. Here we check once and then go forward.
  if ($del) {
    foreach ( $arrayIDs as $k => $id ) {
      $uploadedfile = $model->getUploadpic ( $id );
      $deletefile = JPATH_COMPONENT . DS . "uploads" . DS . $uploadedfile;
      JFile::delete($deletefile);
      //unlink ( $deletefile );
    }
  }
}