Apache Zeta Components Manual :: File Source for dublincore_module.php
Source for file dublincore_module.php
Documentation is available at dublincore_module.php
* File containing the ezcFeedDublinCoreModule class.
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* @version //autogentag//
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* Support for the DublinCore module: data container, generator, parser.
* Specifications: {@link http://dublincore.org/documents/dces/}.
* Each DublinCore property can appear multiple times both on the feed-level
* Each DublinCore property can have the language attribute, which appears in
* the generated XML file as a 'xml:lang' attribute.
* // $feed is an ezcFeed object
* $item = $feed->add( 'item' );
* $module = $item->addModule( 'DublinCore' );
* $creator = $module->add( 'creator' );
* $creator->name = 'Creator name';
* $creator->language = 'en'; // optional
* // more elements of the same type can be added
* // $item is an ezcFeedEntryElement object
* foreach ( $item->DublinCore->creator as $creator )
* echo $creator->language;
* @property array(ezcFeedPersonElement) $contributor
* An entity responsible for making contributions to
* Usually the name of a person, organization or service.
* @property array(ezcFeedTextElement) $coverage
* The spatial or temporal topic of the resource, the
* spatial applicability of the resource, or the
* jurisdiction under which the resource is relevant.
* A recommended practice is to use a controlled
* {@link http://www.getty.edu/research/tools/vocabulary/tgn/index.html TGN}.
* @property array(ezcFeedPersonElement) $creator
* An entity responsible for making the resource.
* Usually the name of a person or organization.
* @property array(ezcFeedDateElement) $date
* A point or period of time associated with an event
* in the lifecycle of the resource. It is a Unix
* timestamp, which will be converted to an
* {@link http://www.w3.org/TR/NOTE-datetime ISO 8601}
* date when generating the feed.
* @property array(ezcFeedTextElement) $description
* A description of the resource.
* @property array(ezcFeedTextElement) $format
* The file format, physical medium, or dimensions of
* Recommended best practices is to use a controlled
* vocabulary such as the list of
* {@link http://www.iana.org/assignments/media-types/ Internet Media Types}
* @property array(ezcFeedIdElement) $identifier
* An unambiguous reference to the resource within a
* @property array(ezcFeedTextElement) $language
* A language of the resource.
* Recommended best practice is to use a controlled
* {@link http://www.faqs.org/rfcs/rfc4646.html RFC 4646}.
* @property array(ezcFeedPersonElement) $publisher
* An entity responsible for making the resource available.
* Usually the name of a person, organization or service.
* @property array(ezcFeedTextElement) $relation
* @property array(ezcFeedTextElement) $rights
* Information about rights held in and over the resource.
* @property array(ezcFeedSourceElement) $source
* A related resource from which the described resource
* @property array(ezcFeedTextElement) $subject
* The topic of the resource.
* @property array(ezcFeedTextElement) $title
* The name given to the resource.
* @property array(ezcFeedTextElement) $type
* The nature or genre of the resource.
* Recommended best practice is to use a controlled
* {@link http://dublincore.org/documents/dcmi-type-vocabulary/ DCMI Type Vocabulary}
* @version //autogentag//
* Constructs a new ezcFeedDublinCoreModule object.
* @param string $level The level of the data container ('feed' or 'item')
* Sets the property $name to $value.
* @throws ezcBasePropertyNotFoundException
* if the property $name is not defined
* @param string $name The property name
* @param mixed $value The property value
public function __set( $name, $value )
$node =
$this->add( $name );
$node =
$this->add( $name );
$node =
$this->add( $name );
$node =
$this->add( $name );
parent::__set( $name, $value );
* Returns the value of property $name.
* @throws ezcBasePropertyNotFoundException
* if the property $name is not defined
* @param string $name The property name
public function __get( $name )
return parent::__get( $name );
* Returns if the property $name is set.
* @param string $name The property name
public function __isset( $name )
return parent::__isset( $name );
* Returns true if the element $name is allowed in the current module at the
* current level (feed or item), and false otherwise.
* @param string $name The element name to check if allowed in the current module and level (feed or item)
if ( in_array( $name, array( 'contributor', 'coverage', 'creator',
'date', 'description', 'format',
'identifier', 'language', 'publisher',
'relation', 'rights', 'source',
'subject', 'title', 'type' ) ) )
if ( in_array( $name, array( 'contributor', 'coverage', 'creator',
'date', 'description', 'format',
'identifier', 'language', 'publisher',
'relation', 'rights', 'source',
'subject', 'title', 'type' ) ) )
* Adds a new ezcFeedElement element with name $name to this module and
* @throws ezcFeedUnsupportedElementException
* if trying to add an element which is not supported.
* @param string $name The element name
public function add( $name )
* Adds the module elements to the $xml XML document, in the container $root.
* @param DOMDocument $xml The XML document in which to add the module elements
* @param DOMNode $root The parent node which will contain the module elements
public function generate( DOMDocument $xml, DOMNode $root )
$elements =
array( 'contributor', 'coverage', 'creator',
'date', 'description', 'format',
'identifier', 'language', 'publisher',
'relation', 'rights', 'source',
'subject', 'title', 'type');
foreach ( $elements as $element )
if ( isset
( $this->$element ) )
foreach ( $this->$element as $values )
$root->appendChild( $elementTag );
$elementTag->nodeValue =
$values->date->format( 'c' );
$elementTag->nodeValue =
$values->__toString();
if ( isset
( $values->language ) )
$this->addAttribute( $xml, $elementTag, 'xml:lang', $values->language );
* Parses the XML element $node and creates a feed element in the current
* module with name $name.
* @param string $name The name of the element belonging to the module
* @param DOMElement $node The XML child from which to take the values for $name
public function parse( $name, DOMElement $node )
$element =
$this->add( $name );
$value =
$node->textContent;
$element->source =
$value;
if ( $node->hasAttributes() )
foreach ( $node->attributes as $attribute )
switch ( $attribute->name )
$element->language =
$attribute->value;
* Returns the module name ('DublinCore').
* Returns the namespace for this module ('http://purl.org/dc/elements/1.1/').
return 'http://purl.org/dc/elements/1.1/';
* Returns the namespace prefix for this module ('dc').