• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/publicationFormat/PublicationFormatTombstoneManager.inc.php

00001 <?php
00002 
00016 class PublicationFormatTombstoneManager {
00020    function PublicationFormatTombstoneManager() {
00021    }
00022 
00028    function insertTombstoneByPublicationFormat(&$publicationFormat, &$press) {
00029       $monographDao =& DAORegistry::getDAO('MonographDAO');
00030       $monograph =& $monographDao->getById($publicationFormat->getMonographId());
00031       $seriesDao =& DAORegistry::getDAO('SeriesDAO');
00032       $series =& $seriesDao->getById($monograph->getSeriesId());
00033 
00034       $dataObjectTombstoneDao =& DAORegistry::getDAO('DataObjectTombstoneDAO');
00035       // delete publication format tombstone to ensure that there aren't
00036       // more than one tombstone for this publication format
00037       $dataObjectTombstoneDao->deleteByDataObjectId($publicationFormat->getId());
00038       // insert publication format tombstone
00039       if (is_a($series, 'Series')) {
00040          $setSpec = urlencode($press->getPath()) . ':' . urlencode($series->getPath());
00041          $setName = $series->getLocalizedTitle();
00042       } else {
00043          $setSpec = urlencode($press->getPath());
00044          $setName = $press->getLocalizedName();
00045       }
00046       $oaiIdentifier = 'oai:' . Config::getVar('oai', 'repository_id') . ':' . 'publicationFormat/' . $publicationFormat->getId();
00047       $OAISetObjectsIds = array(
00048          ASSOC_TYPE_PRESS => $monograph->getPressId(),
00049          ASSOC_TYPE_SERIES => $monograph->getSeriesId()
00050       );
00051 
00052       $publicationFormatTombstone = $dataObjectTombstoneDao->newDataObject(); /* @var $publicationFormatTombstone DataObjectTombstone */
00053       $publicationFormatTombstone->setDataObjectId($publicationFormat->getId());
00054       $publicationFormatTombstone->stampDateDeleted();
00055       $publicationFormatTombstone->setSetSpec($setSpec);
00056       $publicationFormatTombstone->setSetName($setName);
00057       $publicationFormatTombstone->setOAIIdentifier($oaiIdentifier);
00058       $publicationFormatTombstone->setOAISetObjectsIds($OAISetObjectsIds);
00059       $tombstoneId = $dataObjectTombstoneDao->insertObject($publicationFormatTombstone);
00060 
00061       if (HookRegistry::call('PublicationFormatTombstoneManager::insertPublicationFormatTombstone', array(&$publicationFormatTombstone, &$publicationFormat, &$press))) return;
00062    }
00063 
00069    function insertTombstonesByPublicationFormats($publicationFormats, $press) {
00070       foreach($publicationFormats as $publicationFormat) {
00071          $this->insertTombstoneByPublicationFormat($publicationFormat, $press);
00072       }
00073    }
00074 
00080    function insertTombstonesByPress($press) {
00081       $publishedMonographFactory = $this->_getPublishedMonographFactoryByPressId($press->getId());
00082       while ($publishedMonograph = $publishedMonographFactory->next()) { /* @var $publishedMonograph PublishedMonograph */
00083          $publicationFormats = $publishedMonograph->getPublicationFormats();
00084          $this->insertTombstonesByPublicationFormats($publicationFormats, $press);
00085       }
00086    }
00087 
00092    function deleteTombstonesByPublicationFormats($publicationFormats) {
00093       foreach ($publicationFormats as $publicationFormat) {
00094          $tombstoneDao = DAORegistry::getDAO('DataObjectTombstoneDAO');
00095          $tombstoneDao->deleteByDataObjectId($publicationFormat->getId());
00096       }
00097    }
00098 
00103    function deleteTombstonesByPressId($pressId) {
00104       $publishedMonographFactory = $this->_getPublishedMonographFactoryByPressId($pressId);
00105       while ($publishedMonograph = $publishedMonographFactory->next()) {
00106          $publicationFormats = $publishedMonograph->getPublicationFormats();
00107          $this->deleteTombstonesByPublicationFormats($publicationFormats);
00108       }
00109    }
00110 
00111 
00112    //
00113    // Private helper methods.
00114    //
00120    function _getPublishedMonographFactoryByPressId($pressId) {
00121       $publishedMonographDao =& DAORegistry::getDAO('PublishedMonographDAO');
00122       return $publishedMonographDao->getByPressId($pressId);
00123    }
00124 }
00125 
00126 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1