X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fzendframework%2Fzend-feed%2Fsrc%2FWriter%2FWriter.php;fp=vendor%2Fzendframework%2Fzend-feed%2Fsrc%2FWriter%2FWriter.php;h=dc80d10b48dd265c3a7e5417d343e54d8af16928;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hp=b7ba794c5526d99b4232a9cca3c6a599b404f131;hpb=74df008bdbb3a11eeea356744f39b802369bda3c;p=yaffs-website diff --git a/vendor/zendframework/zend-feed/src/Writer/Writer.php b/vendor/zendframework/zend-feed/src/Writer/Writer.php index b7ba794c5..dc80d10b4 100644 --- a/vendor/zendframework/zend-feed/src/Writer/Writer.php +++ b/vendor/zendframework/zend-feed/src/Writer/Writer.php @@ -91,40 +91,36 @@ class Writer */ public static function registerExtension($name) { - $feedName = $name . '\Feed'; - $entryName = $name . '\Entry'; - $feedRendererName = $name . '\Renderer\Feed'; - $entryRendererName = $name . '\Renderer\Entry'; - $manager = static::getExtensionManager(); - if (static::isRegistered($name)) { - if ($manager->has($feedName) - || $manager->has($entryName) - || $manager->has($feedRendererName) - || $manager->has($entryRendererName) - ) { - return; - } - } - if (! $manager->has($feedName) - && ! $manager->has($entryName) - && ! $manager->has($feedRendererName) - && ! $manager->has($entryRendererName) - ) { + if (! static::hasExtension($name)) { throw new Exception\RuntimeException(sprintf( - 'Could not load extension "%s" using Plugin Loader. ' - . 'Check prefix paths are configured and extension exists.', + 'Could not load extension "%s" using Plugin Loader.' + . ' Check prefix paths are configured and extension exists.', $name )); } + + if (static::isRegistered($name)) { + return; + } + + $manager = static::getExtensionManager(); + + $feedName = $name . '\Feed'; if ($manager->has($feedName)) { static::$extensions['feed'][] = $feedName; } + + $entryName = $name . '\Entry'; if ($manager->has($entryName)) { static::$extensions['entry'][] = $entryName; } + + $feedRendererName = $name . '\Renderer\Feed'; if ($manager->has($feedRendererName)) { static::$extensions['feedRenderer'][] = $feedRendererName; } + + $entryRendererName = $name . '\Renderer\Entry'; if ($manager->has($entryRendererName)) { static::$extensions['entryRenderer'][] = $entryRendererName; } @@ -192,6 +188,21 @@ class Writer static::registerExtension('WellFormedWeb'); static::registerExtension('Threading'); static::registerExtension('ITunes'); + + // Added in 2.10.0; check for it conditionally + static::hasExtension('GooglePlayPodcast') + ? static::registerExtension('GooglePlayPodcast') + : trigger_error( + sprintf( + 'Please update your %1$s\ExtensionManagerInterface implementation to add entries for' + . ' %1$s\Extension\GooglePlayPodcast\Entry,' + . ' %1$s\Extension\GooglePlayPodcast\Feed,' + . ' %1$s\Extension\GooglePlayPodcast\Renderer\Entry,' + . ' and %1$s\Extension\GooglePlayPodcast\Renderer\Feed.', + __NAMESPACE__ + ), + \E_USER_NOTICE + ); } public static function lcfirst($str) @@ -199,4 +210,34 @@ class Writer $str[0] = strtolower($str[0]); return $str; } + + /** + * Does the extension manager have the named extension? + * + * This method exists to allow us to test if an extension is present in the + * extension manager. It may be used by registerExtension() to determine if + * the extension has items present in the manager, or by + * registerCoreExtension() to determine if the core extension has entries + * in the extension manager. In the latter case, this can be useful when + * adding new extensions in a minor release, as custom extension manager + * implementations may not yet have an entry for the extension, which would + * then otherwise cause registerExtension() to fail. + * + * @param string $name + * @return bool + */ + protected static function hasExtension($name) + { + $manager = static::getExtensionManager(); + + $feedName = $name . '\Feed'; + $entryName = $name . '\Entry'; + $feedRendererName = $name . '\Renderer\Feed'; + $entryRendererName = $name . '\Renderer\Entry'; + + return $manager->has($feedName) + || $manager->has($entryName) + || $manager->has($feedRendererName) + || $manager->has($entryRendererName); + } }