Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

excluir o arquivo carregado de uma matriz de id quando eles são excluídos no joomla?


Você tem alguns problemas no seu código:
  1. $uploadedfile nunca é declarado, mas é usado para encontrar o caminho do arquivo. Presumo que seja o mesmo que $getdeleted .
  2. Você tem um loop foreach em torno dos elementos em seu array que irá pegar cada elemento por sua vez. No entanto, você modela a função deleteGreetings leva toda a matriz. Você deve remover esta chamada de função do seu loop, caso contrário ela será chamada para cada elemento na matriz. Você só quer chamar isso uma vez.
  3. Somente no final do seu controller você verifica se o seu parâmetro cid é nulo... qual é o ponto? Você deve verificar isso antes de tentar executar qualquer outro código.

Eu faria algo assim:
$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 );
    }
  }
}