本文整理汇总了PHP中Opus_Document::getCollection方法的典型用法代码示例。如果您正苦于以下问题:PHP Opus_Document::getCollection方法的具体用法?PHP Opus_Document::getCollection怎么用?PHP Opus_Document::getCollection使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Opus_Document
的用法示例。
在下文中一共展示了Opus_Document::getCollection方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testGetRecordOaiDcDoc10SubjectDdcAndDate
/**
* Regression test for OPUSVIER-2380 and OPUSVIER-2378
*/
public function testGetRecordOaiDcDoc10SubjectDdcAndDate()
{
$doc = new Opus_Document(10);
$ddcs = array();
foreach ($doc->getCollection() as $c) {
if ($c->getRoleName() == 'ddc') {
$ddcs[] = $c->getNumber();
}
}
$this->assertContains("004", $ddcs, "testdata changed");
$this->dispatch('/oai?verb=GetRecord&metadataPrefix=oai_dc&identifier=oai::10');
$this->assertResponseCode(200);
$response = $this->getResponse();
$badStrings = array("Exception", "Error", "Stacktrace", "badVerb");
$this->checkForCustomBadStringsInHtml($response->getBody(), $badStrings);
$xpath = $this->prepareXpathFromResultString($response->getBody());
// Regression test for OPUSVIER-2380 (show <dc:subject>ddc:)
$elements = $xpath->query('//oai_dc:dc/dc:subject[text()="ddc:004"]');
$this->assertEquals(1, $elements->length, "Unexpected count for ddc:004");
// Regression test for OPUSVIER-2378 (show <dc:date>)
$elements = $xpath->query('//oai_dc:dc/dc:date');
$this->assertEquals(1, $elements->length, "Unexpected count for dc:date");
// Regression test for OPUSVIER-2378 (show <dc:date>2003)
$elements = $xpath->query('//oai_dc:dc/dc:date[text()="2003"]');
$this->assertEquals(1, $elements->length, "Unexpected count for dc:date");
}
示例2: 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();
//.........这里部分代码省略.........
示例3: testPublistActionDisplaysUrlencodedFiles
/**
* Regression Test for OPUSVIER-2998 and OPUSVIER-2999
*/
public function testPublistActionDisplaysUrlencodedFiles()
{
Zend_Registry::get('Zend_Config')->merge(new Zend_Config(array('plugins' => array('export' => array('publist' => array('file' => array('allow' => array('mimetype' => array('application/xhtml+xml' => 'HTML')))))))));
// explicitly re-initialize mime type config to apply changes in Zend_Config
// This is necessary due to static variable in Export_Model_PublicationList
// which is not reset between tests.
$config = Zend_Registry::get('Zend_Config');
$this->assertTrue(isset($config->plugins->export->publist->file->allow->mimetype), 'Failed setting configuration option');
$this->assertEquals(array('application/xhtml+xml' => 'HTML'), $config->plugins->export->publist->file->allow->mimetype->toArray(), 'Failed setting configuration option');
$doc = new Opus_Document(92);
$file = $doc->getFile(1);
$this->assertTrue($file instanceof Opus_File, 'Test setup has changed.');
$this->assertEquals('datei mit unüblichem Namen.xhtml', $file->getPathName(), 'Test setup has changed.');
$collection = $doc->getCollection(0);
$this->assertEquals('coll_visible', $collection->getNumber(), 'Test setup has changed');
$this->assertEquals(1, $collection->getVisible(), 'Test setup has changed');
$this->dispatch('/export/index/publist/role/publists/number/coll_visible');
$this->assertResponseCode(200, $this->getResponse()->getBody());
$response = $this->getResponse();
$this->assertContains(urlencode('datei mit unüblichem Namen.xhtml'), $response->getBody());
}