Entry.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Feed_Reader
  17. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  18. * @license http://framework.zend.com/license/new-bsd New BSD License
  19. * @version $Id$
  20. */
  21. /**
  22. * @see Zend_Feed_Reader_Extension_EntryAbstract
  23. */
  24. require_once 'Zend/Feed/Reader/Extension/EntryAbstract.php';
  25. /**
  26. * @see Zend_Feed_Reader_Extension_CreativeCommons_Feed
  27. */
  28. require_once 'Zend/Feed/Reader/Extension/CreativeCommons/Feed.php';
  29. /**
  30. * @category Zend
  31. * @package Zend_Feed_Reader
  32. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  33. * @license http://framework.zend.com/license/new-bsd New BSD License
  34. */
  35. class Zend_Feed_Reader_Extension_CreativeCommons_Entry extends Zend_Feed_Reader_Extension_EntryAbstract
  36. {
  37. /**
  38. * Get the entry license
  39. *
  40. * @return string|null
  41. */
  42. public function getLicense($index = 0)
  43. {
  44. $licenses = $this->getLicenses();
  45. if (isset($licenses[$index])) {
  46. return $licenses[$index];
  47. }
  48. return null;
  49. }
  50. /**
  51. * Get the entry licenses
  52. *
  53. * @return array
  54. */
  55. public function getLicenses()
  56. {
  57. $name = 'licenses';
  58. if (array_key_exists($name, $this->_data)) {
  59. return $this->_data[$name];
  60. }
  61. $licenses = array();
  62. $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//cc:license');
  63. if ($list->length) {
  64. foreach ($list as $license) {
  65. $licenses[] = $license->nodeValue;
  66. }
  67. $licenses = array_unique($licenses);
  68. } else {
  69. $cc = new Zend_Feed_Reader_Extension_CreativeCommons_Feed(
  70. $this->_domDocument, $this->_data['type'], $this->_xpath
  71. );
  72. $licenses = $cc->getLicenses();
  73. }
  74. $this->_data[$name] = $licenses;
  75. return $this->_data[$name];
  76. }
  77. /**
  78. * Register Creative Commons namespaces
  79. *
  80. */
  81. protected function _registerNamespaces()
  82. {
  83. $this->_xpath->registerNamespace('cc', 'http://backend.userland.com/creativeCommonsRssModule');
  84. }
  85. }