V kódu máte několik problémů:
$uploadedfile
není nikdy deklarován, ale používá se k nalezení cesty k souboru. Předpokládám, že je to stejné jako$getdeleted
.- Okolem prvků v poli máte smyčku foreach, která postupně zachytí každý prvek. Vy však modelujete funkci
deleteGreetings
zabere celé pole. Toto volání funkce byste měli z vaší smyčky odstranit, jinak bude voláno každé pro každý prvek v poli. Toto chcete volat pouze jednou. - Pouze na konci ovladače zkontrolujete, zda je parametr cid null ... jaký to má smysl? Toto byste měli nejprve zkontrolovat, než se pokusíte spustit jakýkoli jiný kód.
Udělal bych něco takového:
$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 );
}
}
}