Masz kilka problemów w kodzie:
$uploadedfile
nigdy nie jest deklarowana, ale służy do znajdowania ścieżki do pliku. Zakładam, że to to samo co$getdeleted
.- Masz pętlę foreach wokół elementów w Twojej tablicy, która będzie pobierać każdy element po kolei. Jednak modelujesz funkcję
deleteGreetings
zajmuje całą tablicę. Powinieneś usunąć to wywołanie funkcji z pętli, w przeciwnym razie będzie ona wywoływana dla każdego elementu w tablicy. Chcesz zadzwonić tylko raz. - Dopiero na końcu kontrolera sprawdzasz, czy parametr cid param jest pusty… po co? Powinieneś to najpierw sprawdzić, zanim spróbujesz uruchomić jakikolwiek inny kod.
Zrobiłbym coś takiego:
$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 );
}
}
}