sql >> Base de Datos >  >> RDS >> Mysql

¿Eliminar el archivo cargado de una matriz de identificación cuando se eliminan en joomla?

Tiene algunos problemas en su código:

  1. $uploadedfile nunca se declara, pero se usa para encontrar la ruta del archivo. Supongo que esto es lo mismo que $getdeleted .
  2. Tiene un bucle foreach alrededor de los elementos de su matriz que recogerá cada elemento a su vez. Sin embargo, modela la función deleteGreetings toma toda la matriz. Debe eliminar esta llamada de función de su ciclo; de lo contrario, se llamará a cada uno de los elementos de la matriz. Solo quieres llamar esto una vez.
  3. Solo al final de su controlador verifica si su parámetro cid es nulo ... ¿cuál es el punto? Debe verificar esto primero antes de intentar ejecutar cualquier otro código.

Yo haría algo como esto:

$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 );
    }
  }
}