本文整理汇总了PHP中PersistableFilter类的典型用法代码示例。如果您正苦于以下问题:PHP PersistableFilter类的具体用法?PHP PersistableFilter怎么用?PHP PersistableFilter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PersistableFilter类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testNlm30CitationSchemaCitationAdapter
/**
* @covers Nlm30CitationSchemaCitationAdapter
*/
public function testNlm30CitationSchemaCitationAdapter()
{
// Test constructor.
$adapter = new Nlm30CitationSchemaCitationAdapter(PersistableFilter::tempGroup('metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)', 'class::lib.pkp.classes.citation.Citation'));
self::assertEquals(ASSOC_TYPE_CITATION, $adapter->getAssocType());
self::assertType('Nlm30CitationSchema', $adapter->getMetadataSchema());
self::assertEquals('Citation', $adapter->getDataObjectClass());
// Instantiate a test description.
$authorDescription = new MetadataDescription('lib.pkp.plugins.metadata.nlm30.schema.Nlm30NameSchema', ASSOC_TYPE_AUTHOR);
$authorDescription->addStatement('surname', $surname = 'some surname');
$citationDescription = new MetadataDescription('lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema', ASSOC_TYPE_CITATION);
$citationDescription->addStatement('article-title', $articleTitle = 'article title');
$citationDescription->addStatement('person-group[@person-group-type="author"]', $authorDescription);
// Instantiate test citation.
$citation = new Citation();
// Test metadata injection.
$resultCitation =& $adapter->injectMetadataIntoDataObject($citationDescription, $citation);
$expectedResult = array('rawCitation' => '', 'nlm30:person-group[@person-group-type="author"]' => array(array('surname' => 'some surname')), 'nlm30:article-title' => array('en_US' => 'article title'));
self::assertEquals($expectedResult, $resultCitation->getAllData());
// Instantiate and inject a second test description.
$authorDescription = new MetadataDescription('lib.pkp.plugins.metadata.nlm30.schema.Nlm30NameSchema', ASSOC_TYPE_AUTHOR);
$authorDescription->addStatement('surname', $anotherSurname = 'another surname');
$secondDescription = new MetadataDescription('lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema', ASSOC_TYPE_CITATION);
$secondDescription->addStatement('person-group[@person-group-type="author"]', $authorDescription);
$secondDescription->addStatement('source', $source = 'some source');
$resultCitation =& $adapter->injectMetadataIntoDataObject($secondDescription, $citation);
$expectedResult = array('rawCitation' => '', 'nlm30:person-group[@person-group-type="author"]' => array(array('surname' => 'another surname')), 'nlm30:article-title' => array('en_US' => 'article title'), 'nlm30:source' => array('en_US' => 'some source'));
self::assertEquals($expectedResult, $resultCitation->getAllData());
// Test meta-data extraction.
$adapter = new Nlm30CitationSchemaCitationAdapter(PersistableFilter::tempGroup('class::lib.pkp.classes.citation.Citation', 'metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)'));
$extractedDescription =& $adapter->extractMetadataFromDataObject($resultCitation);
$secondDescription->addStatement('article-title', $articleTitle = 'article title');
self::assertEquals($secondDescription, $extractedDescription);
}
示例2: testExecute
/**
* @covers PKPSubmissionNlm30XmlFilter
*/
public function testExecute()
{
// Instantiate test meta-data for a citation.
import('lib.pkp.classes.metadata.MetadataDescription');
$nameSchemaName = 'lib.pkp.plugins.metadata.nlm30.schema.Nlm30NameSchema';
$nameDescription = new MetadataDescription($nameSchemaName, ASSOC_TYPE_AUTHOR);
$nameDescription->addStatement('given-names', $value = 'Peter');
$nameDescription->addStatement('given-names', $value = 'B');
$nameDescription->addStatement('surname', $value = 'Bork');
$nameDescription->addStatement('prefix', $value = 'Mr.');
$citationSchemaName = 'lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema';
$citationDescription = new MetadataDescription($citationSchemaName, ASSOC_TYPE_CITATION);
$citationDescription->addStatement('person-group[@person-group-type="author"]', $nameDescription);
$citationDescription->addStatement('article-title', $value = 'PHPUnit in a nutshell', 'en_US');
$citationDescription->addStatement('date', $value = '2009-08-17');
$citationDescription->addStatement('size', $value = 320);
$citationDescription->addStatement('uri', $value = 'http://phpunit.org/nutshell');
$citationDescription->addStatement('[@publication-type]', $value = 'book');
$citation =& $this->getCitation($citationDescription);
// Persist a few copies of the citation for testing.
$citationDao =& $this->getCitationDao();
for ($seq = 1; $seq <= 10; $seq++) {
$citation->setSeq($seq);
$citation->setCitationState(CITATION_APPROVED);
$citationId = $citationDao->insertObject($citation);
self::assertTrue(is_numeric($citationId));
self::assertTrue($citationId > 0);
}
// Execute the filter and check the outcome.
$mockSubmission =& $this->getTestSubmission();
// FIXME: Add NLM 3.0 tag set schema validation as soon as we implement the full tag set, see #5648.
$filter = new PKPSubmissionNlm30XmlFilter(PersistableFilter::tempGroup('class::lib.pkp.classes.submission.Submission', 'xml::*'));
$nlm30Xml = $filter->execute($mockSubmission);
self::assertXmlStringEqualsXmlFile('./lib/pkp/tests/plugins/metadata/nlm30/filter/sample-nlm30-citation.xml', $nlm30Xml);
}
示例3: testMods34SchemaSubmissionAdapter
/**
* @covers Mods34SchemaSubmissionAdapter
*/
public function testMods34SchemaSubmissionAdapter()
{
// Test constructor.
$adapter = new Mods34SchemaSubmissionAdapter(PersistableFilter::tempGroup('metadata::plugins.metadata.mods34.schema.Mods34Schema(CITATION)', 'class::lib.pkp.classes.submission.Submission'));
self::assertEquals(ASSOC_TYPE_CITATION, $adapter->getAssocType());
self::assertType('Mods34Schema', $adapter->getMetadataSchema());
self::assertEquals('Submission', $adapter->getDataObjectClass());
// Instantiate a test description.
$submissionDescription =& $this->getMods34Description();
// Instantiate test submission.
$submission = new Submission();
$submission->setTitle('previous submission title', 'en_US');
$submission->setAbstract('previous abstract', 'en_US');
// Remove the abstract to test whether the injection into existing data works.
// (The abstract should not be deleted.)
$submissionDescription->removeStatement('abstract');
// Test metadata injection (no replace).
$resultSubmission =& $adapter->injectMetadataIntoDataObject($submissionDescription, $submission, 'lib.pkp.tests.plugins.metadata.mods34.filter.Author');
$expectedResult = array('cleanTitle' => array('en_US' => 'new submission title', 'de_DE' => 'neuer Titel'), 'title' => array('en_US' => 'new submission title', 'de_DE' => 'neuer Titel'), 'abstract' => array('en_US' => 'previous abstract'), 'sponsor' => array('en_US' => 'Some Sponsor'), 'dateSubmitted' => '2010-07-07', 'language' => 'en', 'pages' => 215, 'coverageGeo' => array('en_US' => 'some geography'), 'mods34:titleInfo/nonSort' => array('en_US' => 'the', 'de_DE' => 'ein'), 'mods34:titleInfo/subTitle' => array('en_US' => 'subtitle', 'de_DE' => 'Subtitel'), 'mods34:titleInfo/partNumber' => array('en_US' => 'part I', 'de_DE' => 'Teil I'), 'mods34:titleInfo/partName' => array('en_US' => 'introduction', 'de_DE' => 'Einführung'), 'mods34:note' => array('en_US' => array('0' => 'some note', '1' => 'another note'), 'de_DE' => array('0' => 'übersetzte Anmerkung')), 'mods34:subject/temporal[@encoding="w3cdtf" @point="start"]' => '1950', 'mods34:subject/temporal[@encoding="w3cdtf" @point="end"]' => '1954');
self::assertEquals($expectedResult, $resultSubmission->getAllData());
// Test meta-data extraction.
$adapter = new Mods34SchemaSubmissionAdapter(PersistableFilter::tempGroup('class::lib.pkp.classes.submission.Submission', 'metadata::plugins.metadata.mods34.schema.Mods34Schema(CITATION)'));
$extractedDescription =& $adapter->extractMetadataFromDataObject($submission);
$submissionDescription->removeStatement('recordInfo/recordCreationDate[@encoding="w3cdtf"]');
self::assertTrue($submissionDescription->addStatement('recordInfo/recordCreationDate[@encoding="w3cdtf"]', date('Y-m-d')));
self::assertTrue($submissionDescription->addStatement('abstract', $abstract = 'previous abstract'));
$missingMappings = array('genre[@authority="marcgt"]', 'originInfo/place/placeTerm[@type="text"]', 'originInfo/place/placeTerm[@type="code" @authority="iso3166"]', 'originInfo/publisher', 'originInfo/dateIssued[@keyDate="yes" @encoding="w3cdtf"]', 'originInfo/edition', 'physicalDescription/form[@authority="marcform"]', 'physicalDescription/internetMediaType', 'identifier[@type="isbn"]', 'identifier[@type="doi"]', 'identifier[@type="uri"]', 'location/url[@usage="primary display"]', 'recordInfo/recordIdentifier[@source="pkp"]', 'subject/topic');
foreach ($missingMappings as $missingMapping) {
$submissionDescription->removeStatement($missingMapping);
}
self::assertEquals($submissionDescription, $extractedDescription);
}
示例4: getCitationOutputFilterInstance
/**
* Retrieve the citation output filter that will be
* used to transform citations.
* @return TemplateBasedFilter
*/
function getCitationOutputFilterInstance()
{
$citationOutputFilterName = $this->getData('citationOutputFilterName');
assert(!is_null($citationOutputFilterName));
list($inputTypeDescription, $outputTypeDescription) = $this->getCitationOutputFilterTypeDescriptions();
$filterGroup = PersistableFilter::tempGroup($inputTypeDescription, $outputTypeDescription);
return instantiate($citationOutputFilterName, 'TemplateBasedFilter', null, null, $filterGroup);
}
示例5: testExecuteWithSearch
/**
* Test Pubmed lookup without PmID
* @covers PubmedNlm30CitationSchemaFilter
*/
public function testExecuteWithSearch()
{
// Build the test citations array
$citationFilterTests = array(array('testInput' => array('person-group[@person-group-type="author"]' => array(array('given-names' => array('Scott', 'D'), 'surname' => 'Halpern'), array('given-names' => array('Peter', 'A'), 'surname' => 'Ubel'), array('given-names' => array('Arthur', 'L'), 'surname' => 'Caplan')), 'article-title' => 'Solid-organ transplantation in HIV-infected patients.', 'source' => 'N Engl J Med', 'volume' => '347', 'issue' => '4'), 'testOutput' => $this->getTestOutput()), array('testInput' => array('person-group[@person-group-type="author"]' => array(array('given-names' => array('Scott', 'D'), 'surname' => 'Halpern'), array('given-names' => array('Peter', 'A'), 'surname' => 'Ubel'), array('given-names' => array('Arthur', 'L'), 'surname' => 'Caplan'))), 'testOutput' => $this->getTestOutput()));
// Execute the test
$filter = new PubmedNlm30CitationSchemaFilter(PersistableFilter::tempGroup('metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)', 'metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)'));
$this->assertNlm30CitationSchemaFilter($citationFilterTests, $filter);
}
示例6: MetadataDescriptionDummyAdapter
/**
* Constructor
*
* @param $metadataDescription MetadataDescription
*/
function MetadataDescriptionDummyAdapter(&$metadataDescription, $mode = null)
{
$this->setDisplayName('Inject/Extract Metadata into/from a MetadataDescription');
// Configure the adapter
$inputType = $outputType = 'metadata::' . $metadataDescription->getMetadataSchemaName() . '(*)';
parent::MetadataDataObjectAdapter(PersistableFilter::tempGroup($inputType, $outputType), $mode);
$this->_assocType = $metadataDescription->getAssocType();
}
示例7: testExecuteWithOpenurl10Search
/**
* Test CrossRef lookup without DOI
* @covers CrossrefNlm30CitationSchemaFilter
*/
public function testExecuteWithOpenurl10Search()
{
// Build the test citations array
$citationFilterTests = array(array('testInput' => array('person-group[@person-group-type="author"]' => array(array('given-names' => array('Hao'), 'surname' => 'Chen')), 'source' => 'BMC Bioinformatics', 'issue' => '1', 'volume' => '5', 'fpage' => 147, '[@publication-type]' => 'journal'), 'testOutput' => array('source' => 'BMC Bioinformatics', 'issue' => '1', 'volume' => '5', 'date' => '2004', 'fpage' => 147, 'uri' => 'http://www.biomedcentral.com/1471-2105/5/147', 'issn[@pub-type="ppub"]' => '14712105', 'person-group[@person-group-type="author"]' => array(array('given-names' => array('Hao'), 'surname' => 'Chen'), array('given-names' => array('Burt', 'M'), 'surname' => 'Sharp')), 'pub-id[@pub-id-type="doi"]' => '10.1186/1471-2105-5-147', '[@publication-type]' => 'journal')));
// Execute the test
$filter = new CrossrefNlm30CitationSchemaFilter(PersistableFilter::tempGroup('metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)', 'metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)'));
$filter->setEmail(self::ACCESS_EMAIL);
$this->assertNlm30CitationSchemaFilter($citationFilterTests, $filter);
}
示例8: testAllCitationsWithThisParser
/**
* @covers ParaciteRawCitationNlm30CitationSchemaFilter
*/
public function testAllCitationsWithThisParser()
{
foreach (ParaciteRawCitationNlm30CitationSchemaFilter::getSupportedCitationModules() as $citationModule) {
$filter = new ParaciteRawCitationNlm30CitationSchemaFilter(PersistableFilter::tempGroup('primitive::string', 'metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)'));
$filter->setData('citationModule', $citationModule);
parent::_testAllCitationsWithThisParser($filter);
unset($filter);
}
}
开发者ID:PublishingWithoutWalls,项目名称:pkp-lib,代码行数:12,代码来源:ParaciteRawCitationNlm30CitationSchemaFilterTest.php
示例9: toXml
/**
* @copydoc OAIMetadataFormat::toXML
*/
function toXml(&$record, $format = null)
{
$publicationFormat =& $record->getData('publicationFormat');
$description = $publicationFormat->extractMetadata(new Xmdp22Schema());
$xmlFilter = new Xmdp22DescriptionXmlFilter(PersistableFilter::tempGroup('metadata::plugins.metadata.xmdp22.schema.Xmdp22Schema(*)', 'xml::schema(plugins/metadata/xmdp22/filter/xmdp22.xsd)'));
//FIXME: Hack to remove the duplicate XML document declarations
$response = substr($xmlFilter->process($description), 39);
return $response;
}
示例10: testMods34DescriptionXmlFilter
/**
* @covers Mods34DescriptionXmlFilter
*/
public function testMods34DescriptionXmlFilter()
{
// Get the test description.
$submissionDescription = $this->getMods34Description();
// Instantiate filter.
$filter = new Mods34DescriptionXmlFilter(PersistableFilter::tempGroup('metadata::plugins.metadata.mods34.schema.Mods34Schema(*)', 'xml::schema(lib/pkp/plugins/metadata/mods34/filter/mods34.xsd)'));
// Transform MODS description to XML.
$output = $filter->execute($submissionDescription);
self::assertXmlStringEqualsXmlFile('./lib/pkp/tests/plugins/metadata/mods34/filter/test.xml', $output);
}
示例11: testExecute
/**
* @covers IsbndbIsbnNlm30CitationSchemaFilter
* @covers IsbndbNlm30CitationSchemaFilter
*/
public function testExecute()
{
// Test data
$isbnLookupTest = array('testInput' => '9780820452425', 'testOutput' => array('source' => array('en_US' => 'After literacy: essays'), 'date' => '2001', 'person-group[@person-group-type="author"]' => array(0 => array('given-names' => array('John'), 'surname' => 'Willinsky')), 'publisher-loc' => 'New York', 'publisher-name' => 'P. Lang', 'isbn' => '9780820452425', '[@publication-type]' => 'book'));
// Build the test array
$citationFilterTests = array($isbnLookupTest);
// Test the filter
$filter = new IsbndbIsbnNlm30CitationSchemaFilter(PersistableFilter::tempGroup('primitive::string', 'metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)'));
$filter->setData('apiKey', self::ISBNDB_TEST_APIKEY);
$this->assertNlm30CitationSchemaFilter($citationFilterTests, $filter);
}
示例12: XSLTransformationFilter
/**
* Constructor
*
* @param $filterGroup FilterGroup
* @param $displayName string
*
* NB: The input side of the transformation must always
* be an XML format. See the XMLTypeDescription class for
* more details how to enable XML validation.
*/
function XSLTransformationFilter(&$filterGroup, $displayName = 'XSL Transformation')
{
// Check that we only get xml input, the output type is arbitrary.
if (!substr($filterGroup->getInputType(), 0, 5) == 'xml::') {
fatalError('XSL filters need XML as input.');
}
// Instantiate the settings of this filter
import('lib.pkp.classes.filter.FilterSetting');
$this->addSetting(new FilterSetting('xsl', null, null));
$this->addSetting(new FilterSetting('xslType', null, null));
$this->addSetting(new FilterSetting('resultType', null, null, FORM_VALIDATOR_OPTIONAL_VALUE));
$this->setDisplayName($displayName);
parent::PersistableFilter($filterGroup);
}
示例13: testExecute
/**
* @covers IsbndbNlm30CitationSchemaIsbnFilter
* @covers IsbndbNlm30CitationSchemaFilter
*/
public function testExecute()
{
// Test data
$isbnSearchTest = array('testInput' => array('person-group[@person-group-type="author"]' => array(0 => array('given-names' => array('John'), 'surname' => 'Willinsky')), 'source' => array('en_US' => 'After literacy')), 'testOutput' => '9780820452425');
// Build the test array
$citationFilterTests = array($isbnSearchTest);
// Test the filter
$filter = new IsbndbNlm30CitationSchemaIsbnFilter(PersistableFilter::tempGroup('metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)', 'primitive::string'));
$apiKey = $this->_getIsbndbApiKey();
if (!$apiKey) {
$this->markTestSkipped('ISBNDB API key not available.');
}
$filter->setData('apiKey', $apiKey);
$this->assertNlm30CitationSchemaFilter($citationFilterTests, $filter);
}
示例14: testExecuteWithDoi
/**
* Test CrossRef lookup with DOI
* @covers WorldcatNlm30CitationSchemaFilter
*/
public function testExecuteWithDoi()
{
// Test book lookup
$testWithApiKey = array('testInput' => array('person-group[@person-group-type="author"]' => array(array('given-names' => array('Paula'), 'surname' => 'Fernandes Lopes')), 'source' => 'A ética platônica: modelo de ética da boa vida'), 'testOutput' => array('person-group[@person-group-type="author"]' => array(array('given-names' => array('Paula', 'Fernandes'), 'surname' => 'Lopes')), 'source' => 'A ética platônica : modelo de ética da boa vida', 'isbn' => '851503154X', 'publisher-loc' => 'São Paulo', 'publisher-name' => 'Ed. Loyola', 'date' => '2005'));
// Build the test citations array
$citationFilterTests = array($testWithApiKey);
// Execute the tests with API key
$filter = new WorldcatNlm30CitationSchemaFilter(PersistableFilter::tempGroup('metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)', 'metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)'));
$filter->setData('apiKey', self::WORLDCAT_TEST_APIKEY);
$this->assertNlm30CitationSchemaFilter($citationFilterTests, $filter);
// Try again without API key
$testWithoutApiKey = array('testInput' => array('person-group[@person-group-type="author"]' => array(array('given-names' => array('Paula'), 'surname' => 'Fernandes Lopes')), 'source' => 'A ética platônica: modelo de ética da boa vida'), 'testOutput' => array('person-group[@person-group-type="author"]' => array(array('given-names' => array('Paula', 'Fernandes'), 'surname' => 'Lopes')), 'source' => 'A ética platônica : modelo de ética da boa vida', 'isbn' => '9788515031542', 'date' => '2005', 'publisher-name' => 'Ed. Loyola', 'publisher-loc' => 'São Paulo'));
$citationFilterTests = array($testWithoutApiKey);
$filter = new WorldcatNlm30CitationSchemaFilter(PersistableFilter::tempGroup('metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)', 'metadata::lib.pkp.plugins.metadata.nlm30.schema.Nlm30CitationSchema(CITATION)'));
$this->assertNlm30CitationSchemaFilter($citationFilterTests, $filter);
}
示例15: MetadataDataObjectAdapter
/**
* Constructor
* @param $filterGroup FilterGroup
*/
function MetadataDataObjectAdapter($filterGroup, $mode = null)
{
// Initialize the adapter.
parent::PersistableFilter($filterGroup);
// Extract information from the input/output types.
// Find out whether this filter is injecting or
// extracting meta-data.
$metadataTypeDescription = null;
/* @var $metadataTypeDescription MetadataTypeDescription */
$dataObjectTypeDescription = null;
/* @var $dataObjectTypeDescription ClassTypeDescription */
$inputType =& $this->getInputType();
$outputType =& $this->getOutputType();
if (is_null($mode)) {
if (is_a($inputType, 'MetadataTypeDescription')) {
$mode = METADATA_DOA_INJECTION_MODE;
} else {
$mode = METADATA_DOA_EXTRACTION_MODE;
}
}
$this->_mode = $mode;
if ($mode == METADATA_DOA_INJECTION_MODE) {
// We are in meta-data injection mode (or both input and output are meta-data descriptions).
$metadataTypeDescription =& $inputType;
/* @var $metadataTypeDescription MetadataTypeDescription */
assert(is_a($outputType, 'ClassTypeDescription'));
$dataObjectTypeDescription =& $outputType;
/* @var $dataObjectTypeDescription ClassTypeDescription */
} else {
// We are in meta-data extraction mode.
assert(is_a($outputType, 'MetadataTypeDescription'));
$metadataTypeDescription =& $outputType;
assert(is_a($inputType, 'ClassTypeDescription'));
$dataObjectTypeDescription =& $inputType;
}
// Extract information from the input/output types.
$this->_metadataSchemaName = $metadataTypeDescription->getMetadataSchemaClass();
$this->_assocType = $metadataTypeDescription->getAssocType();
$this->_dataObjectName = $dataObjectTypeDescription->getTypeName();
// Set the display name.
if ($mode == METADATA_DOA_INJECTION_MODE) {
$this->setDisplayName('Inject metadata into a(n) ' . $this->getDataObjectClass());
} else {
$this->setDisplayName('Extract metadata from a(n) ' . $this->getDataObjectClass());
}
}