Exemplo n.º 1
0
 /**
  * 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;
 }