本文整理汇总了PHP中Opus_Document::addSeries方法的典型用法代码示例。如果您正苦于以下问题:PHP Opus_Document::addSeries方法的具体用法?PHP Opus_Document::addSeries怎么用?PHP Opus_Document::addSeries使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Opus_Document
的用法示例。
在下文中一共展示了Opus_Document::addSeries方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: migrateDocuments
/**
* Im Rahmen der Zuweisung von Dokumenten, die Collections der Collection Role
* series zugeordnet sind, müssen verschiedene Konflikte behandelt werden.
*
* Im Folgenden werden nur Dokumente betrachtet, die mindestens einer Collection
* der Collection Role series (kurz: series-Collection) zugeordnet sind.
*
* Fall 1 (Dokumente ohne IdentifierSerial):
* Da die Bandnummer einer Schriftenreihe Opus_Series obligatorisch ist, können
* Dokumente ohne IdentifierSerial nicht migriert werden. Sie verbleiben
* unangetastet. Die Zuweisung(en) zu series-Collection(s) wird (werden) nicht
* verändert.
*
* Fall 2 (Dokumente mit mehr als einem IdentifierSerial):
* Da ein Dokument pro Schriftenreihe nur eine Bandnummer besitzen kann, können
* Dokumente mit mehr als einem Wert für das Feld IdentifierSerial nicht
* migriert werden. Sie verbleiben unangetastet. Die Zuweisung(en) zu
* series-Collection(s) wird (werden) nicht verändert.
*
* Fall 3 (Dokumente mit einem IdentifierSerial):
* Da in einer Schriftenreihe nicht zwei Dokumente mit der gleichen Bandnummer
* existieren können, muss beim Zuweisen von Dokumenten darauf geachtet werden,
* dass eine Bandnummer nicht mehrfach vergeben wird.
* Wird versucht ein Dokument zu einer Schriftenreihe mit einer bereits
* in Benutzung befindlichen Bandnummer zuzuweisen, so wird die Zuweisung
* nicht durchgeführt. Die Zuweisung des Dokuments zur series-Collection wird
* in diesem Fall unverändert beibehalten.
*
* Im Falle der erfolgreichen Zuweisung des Dokuments zu einer Schriftenreihe
* wird die Verknüpfung mit der korrespondierenden series-Collection
* entfernt. Außerdem wird das Feld IdentifierSerial entfernt.
*
*
* @return array an array that contains both the number of conflicts found and
* the number of documents that were successfully migrated
*/
private function migrateDocuments()
{
$numOfConflicts = 0;
$numOfDocsMigrated = 0;
$finder = new Opus_DocumentFinder();
$finder->setCollectionRoleId($this->seriesRole->getId());
$serialIdsInUse = array();
foreach ($finder->ids() as $docId) {
$doc = new Opus_Document($docId);
$serialIds = $doc->getIdentifierSerial();
$numOfSerialIds = count($serialIds);
if ($numOfSerialIds == 0) {
$this->logger->warn("doc #{$docId} : does not have a field IdentifierSerial -- leave it untouched");
$numOfConflicts++;
continue;
}
if ($numOfSerialIds > 1) {
$this->logger->warn("doc #{$docId} : has {$numOfSerialIds} values for field IdentifierSerial -- leave it untouched");
$numOfConflicts++;
continue;
}
$serialId = $serialIds[0]->getValue();
$remainingCollections = array();
foreach ($doc->getCollection() as $collection) {
// only consider collection in collection role series
if ($collection->getRoleId() != $this->seriesRole->getId()) {
array_push($remainingCollections, $collection);
} else {
$collectionId = $collection->getId();
if (!$collection->isRoot()) {
// check for conflict
if (array_key_exists($collectionId, $serialIdsInUse) && in_array($serialId, $serialIdsInUse[$collectionId])) {
// conflict was found: serialId for series $collectionId already in use
$this->logger->warn("doc #{$docId} : could not assign to series #{$collectionId}: value {$serialId} already in use");
$this->logger->warn("doc #{$docId} : leave assignment to collection #{$collectionId} untouched");
array_push($remainingCollections, $collection);
$numOfConflicts++;
} else {
// no conflict
$series = new Opus_Series($collectionId);
$doc->addSeries($series)->setNumber($serialId);
$doc->setIdentifierSerial(array());
// mark usage of serialId for collection $collectionId
if (array_key_exists($collectionId, $serialIdsInUse)) {
array_push($serialIdsInUse[$collectionId], $serialId);
} else {
$serialIdsInUse[$collectionId] = array($serialId);
}
$this->logger->info("doc #{$docId} : assign document to series #{$collectionId} with value {$serialId}");
$this->logger->info("doc #{$docId} : removed assignment from collection #{$collectionId}");
$this->logger->info("doc #{$docId} : removed field IdentifierSerial with value " . $serialId);
$numOfDocsMigrated++;
}
} else {
// series root collection assignment will not be migrated
$this->logger->warn("doc #{$docId} : is assigned to root collection #{$collectionId} of collection role series: leave assignment untouched");
array_push($remainingCollections, $collection);
$numOfConflicts++;
}
}
}
$doc->setCollection($remainingCollections);
$doc->unregisterPlugin('Opus_Document_Plugin_Index');
$doc->store();
//.........这里部分代码省略.........
示例2: testIndexActionBibtexSeriesInvisible
public function testIndexActionBibtexSeriesInvisible()
{
$this->setDocumentType('preprint');
$s = new Opus_Series(3);
$doc = new Opus_Document($this->documentId);
$doc->addSeries($s)->setNumber('SeriesNumber');
$doc->store();
$this->dispatch('/citationExport/index/index/output/bibtex/docId/' . $this->documentId);
$this->assertResponseCode(200);
$response = $this->getResponse();
$this->assertNotContains('series = {' . $s->getTitle() . '},', $response->getBody());
$this->assertNotContains('number = {SeriesNumber},', $response->getBody());
}
示例3: foreach
echo "sorting documents in series #" . $series->getId() . " numerically\n";
if (!asort($seriesNumbers, SORT_NUMERIC)) {
echo "Error while sorting docs -- skip series #" . $series->getId() . "\n";
break;
}
} else {
echo "sorting documents in series #" . $series->getId() . " lexicographically\n";
if (!asort($seriesNumbers, SORT_STRING)) {
echo "Error while sorting docs -- skip series #" . $series->getId() . "\n";
break;
}
}
$seriesCounter = 0;
foreach ($seriesNumbers as $docId => $seriesNumber) {
$doc = new Opus_Document($docId);
$allSeries = $doc->getSeries();
$doc->setSeries(array());
$doc->store();
foreach ($allSeries as $docSeries) {
$seriesInstance = $docSeries->getModel();
if ($seriesInstance->getId() === $series->getId()) {
echo "reassign doc_sort_order for doc #" . $doc->getId() . " (series number: " . $docSeries->getNumber() . ") -- old / new doc_sort_order: " . $docSeries->getDocSortOrder() . " / " . $seriesCounter . "\n";
$doc->addSeries($seriesInstance)->setNumber($docSeries->getNumber())->setDocSortOrder($seriesCounter++);
} else {
$doc->addSeries($seriesInstance)->setNumber($docSeries->getNumber())->setDocSortOrder($docSeries->getDocSortOrder());
}
}
$doc->store();
}
}
exit;
示例4: handleSeries
/**
*
* @param DOMNode $node
* @param Opus_Document $doc
*/
private function handleSeries($node, $doc)
{
foreach ($node->childNodes as $childNode) {
if ($childNode instanceof DOMElement) {
$seriesId = trim($childNode->getAttribute('id'));
// check if document set with given id exists
try {
$s = new Opus_Series($seriesId);
$link = $doc->addSeries($s);
$link->setNumber(trim($childNode->getAttribute('number')));
} catch (Opus_Model_NotFoundException $e) {
throw new Exception('series id ' . $seriesId . ' does not exist: ' . $e->getMessage());
}
}
}
}