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
00036
00037 $dataObjectTombstoneDao->deleteByDataObjectId($publicationFormat->getId());
00038
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();
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()) {
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
00114
00120 function _getPublishedMonographFactoryByPressId($pressId) {
00121 $publishedMonographDao =& DAORegistry::getDAO('PublishedMonographDAO');
00122 return $publishedMonographDao->getByPressId($pressId);
00123 }
00124 }
00125
00126 ?>