/** * Delete an item. * * @param ItemDao $itemdao * @throws Zend_Exception */ public function delete($itemdao) { if (!$itemdao instanceof ItemDao) { throw new Zend_Exception('Error in parameter itemdao when deleting an Item.'); } $deleteType = array(MIDAS_FEED_CREATE_ITEM, MIDAS_FEED_CREATE_LINK_ITEM); // explicitly typecast the itemId to a string, for postgres $sql = $this->database->select()->setIntegrityCheck(false)->from(array('p' => 'feed'))->where('resource = ?', (string) $itemdao->getKey()); $rowset = $this->database->fetchAll($sql); /** @var FeedModel $feed_model */ $feed_model = MidasLoader::loadModel('Feed'); /** @var ItemRevisionModel $revision_model */ $revision_model = MidasLoader::loadModel('ItemRevision'); foreach ($rowset as $row) { $feed = $this->initDao('Feed', $row); if (in_array($feed->getType(), $deleteType)) { $feed_model->delete($feed); } } $folders = $itemdao->getFolders(); foreach ($folders as $folder) { $this->database->removeLink('folders', $itemdao, $folder); } $revisions = $itemdao->getRevisions(); foreach ($revisions as $revision) { $revision_model->delete($revision); } /** @var ItempolicygroupModel $policy_group_model */ $policy_group_model = MidasLoader::loadModel('Itempolicygroup'); $policiesGroup = $itemdao->getItempolicygroup(); foreach ($policiesGroup as $policy) { $policy_group_model->delete($policy); } /** @var ItempolicyuserModel $policy_user_model */ $policy_user_model = MidasLoader::loadModel('Itempolicyuser'); $policiesUser = $itemdao->getItempolicyuser(); foreach ($policiesUser as $policy) { $policy_user_model->delete($policy); } $thumbnailId = $itemdao->getThumbnailId(); if ($thumbnailId !== null) { /** @var BitstreamModel $bitstreamModel */ $bitstreamModel = MidasLoader::loadModel('Bitstream'); $thumbnail = $bitstreamModel->load($thumbnailId); $bitstreamModel->delete($thumbnail); } parent::delete($itemdao); unset($itemdao->item_id); $itemdao->saved = false; }