Chris@0: [], Chris@0: 'feed' => [], Chris@0: 'entryRenderer' => [], Chris@0: 'feedRenderer' => [], Chris@0: ]; Chris@0: Chris@0: /** Chris@0: * Set plugin loader for use with Extensions Chris@0: * Chris@0: * @param ExtensionManagerInterface Chris@0: */ Chris@0: public static function setExtensionManager(ExtensionManagerInterface $extensionManager) Chris@0: { Chris@0: static::$extensionManager = $extensionManager; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get plugin manager for use with Extensions Chris@0: * Chris@0: * @return ExtensionManagerInterface Chris@0: */ Chris@0: public static function getExtensionManager() Chris@0: { Chris@0: if (!isset(static::$extensionManager)) { Chris@0: static::setExtensionManager(new ExtensionManager()); Chris@0: } Chris@0: return static::$extensionManager; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Register an Extension by name Chris@0: * Chris@0: * @param string $name Chris@0: * @return void Chris@0: * @throws Exception\RuntimeException if unable to resolve Extension class Chris@0: */ Chris@0: public static function registerExtension($name) Chris@0: { Chris@0: $feedName = $name . '\Feed'; Chris@0: $entryName = $name . '\Entry'; Chris@0: $feedRendererName = $name . '\Renderer\Feed'; Chris@0: $entryRendererName = $name . '\Renderer\Entry'; Chris@0: $manager = static::getExtensionManager(); Chris@0: if (static::isRegistered($name)) { Chris@0: if ($manager->has($feedName) Chris@0: || $manager->has($entryName) Chris@0: || $manager->has($feedRendererName) Chris@0: || $manager->has($entryRendererName) Chris@0: ) { Chris@0: return; Chris@0: } Chris@0: } Chris@0: if (! $manager->has($feedName) Chris@0: && ! $manager->has($entryName) Chris@0: && ! $manager->has($feedRendererName) Chris@0: && ! $manager->has($entryRendererName) Chris@0: ) { Chris@0: throw new Exception\RuntimeException(sprintf( Chris@0: 'Could not load extension "%s" using Plugin Loader. ' Chris@0: . 'Check prefix paths are configured and extension exists.', Chris@0: $name Chris@0: )); Chris@0: } Chris@0: if ($manager->has($feedName)) { Chris@0: static::$extensions['feed'][] = $feedName; Chris@0: } Chris@0: if ($manager->has($entryName)) { Chris@0: static::$extensions['entry'][] = $entryName; Chris@0: } Chris@0: if ($manager->has($feedRendererName)) { Chris@0: static::$extensions['feedRenderer'][] = $feedRendererName; Chris@0: } Chris@0: if ($manager->has($entryRendererName)) { Chris@0: static::$extensions['entryRenderer'][] = $entryRendererName; Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * Is a given named Extension registered? Chris@0: * Chris@0: * @param string $extensionName Chris@0: * @return bool Chris@0: */ Chris@0: public static function isRegistered($extensionName) Chris@0: { Chris@0: $feedName = $extensionName . '\Feed'; Chris@0: $entryName = $extensionName . '\Entry'; Chris@0: $feedRendererName = $extensionName . '\Renderer\Feed'; Chris@0: $entryRendererName = $extensionName . '\Renderer\Entry'; Chris@0: if (in_array($feedName, static::$extensions['feed']) Chris@0: || in_array($entryName, static::$extensions['entry']) Chris@0: || in_array($feedRendererName, static::$extensions['feedRenderer']) Chris@0: || in_array($entryRendererName, static::$extensions['entryRenderer']) Chris@0: ) { Chris@0: return true; Chris@0: } Chris@0: return false; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get a list of extensions Chris@0: * Chris@0: * @return array Chris@0: */ Chris@0: public static function getExtensions() Chris@0: { Chris@0: return static::$extensions; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Reset class state to defaults Chris@0: * Chris@0: * @return void Chris@0: */ Chris@0: public static function reset() Chris@0: { Chris@0: static::$extensionManager = null; Chris@0: static::$extensions = [ Chris@0: 'entry' => [], Chris@0: 'feed' => [], Chris@0: 'entryRenderer' => [], Chris@0: 'feedRenderer' => [], Chris@0: ]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Register core (default) extensions Chris@0: * Chris@0: * @return void Chris@0: */ Chris@0: public static function registerCoreExtensions() Chris@0: { Chris@0: static::registerExtension('DublinCore'); Chris@0: static::registerExtension('Content'); Chris@0: static::registerExtension('Atom'); Chris@0: static::registerExtension('Slash'); Chris@0: static::registerExtension('WellFormedWeb'); Chris@0: static::registerExtension('Threading'); Chris@0: static::registerExtension('ITunes'); Chris@0: } Chris@0: Chris@0: public static function lcfirst($str) Chris@0: { Chris@0: $str[0] = strtolower($str[0]); Chris@0: return $str; Chris@0: } Chris@0: }