* @git GetBible * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace TrueChristianChurch\Joomla\GetBible\Service; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use TrueChristianChurch\Joomla\GetBible\Config; use TrueChristianChurch\Joomla\GetBible\Table; use TrueChristianChurch\Joomla\GetBible\DailyScripture; use TrueChristianChurch\Joomla\GetBible\Search; use TrueChristianChurch\Joomla\GetBible\Loader; use TrueChristianChurch\Joomla\GetBible\Linker; use TrueChristianChurch\Joomla\GetBible\Note; use TrueChristianChurch\Joomla\GetBible\Tag; use TrueChristianChurch\Joomla\GetBible\Tagged; use TrueChristianChurch\Joomla\GetBible\Tagged\Paragraphs; /** * The GetBible App Service * * @since 2.0.1 */ class App implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * @since 2.0.1 */ public function register(Container $container) { $container->alias(Config::class, 'GetBible.Config') ->share('GetBible.Config', [$this, 'getConfig'], true); $container->alias(Table::class, 'GetBible.Table') ->share('GetBible.Table', [$this, 'getTable'], true); $container->alias(DailyScripture::class, 'DailyScripture') ->share('DailyScripture', [$this, 'getDailyScripture'], true); $container->alias(Search::class, 'GetBible.Search') ->share('GetBible.Search', [$this, 'getSearch'], true); $container->alias(Loader::class, 'GetBible.Loader') ->share('GetBible.Loader', [$this, 'getLoader'], true); $container->alias(Linker::class, 'GetBible.Linker') ->share('GetBible.Linker', [$this, 'getLinker'], true); $container->alias(Note::class, 'GetBible.Note') ->share('GetBible.Note', [$this, 'getNote'], true); $container->alias(Tag::class, 'GetBible.Tag') ->share('GetBible.Tag', [$this, 'getTag'], true); $container->alias(Tagged::class, 'GetBible.Tagged') ->share('GetBible.Tagged', [$this, 'getTagged'], true); $container->alias(Paragraphs::class, 'GetBible.Tagged.Paragraphs') ->share('GetBible.Tagged.Paragraphs', [$this, 'getTaggedParagraphs'], true); } /** * Get the Config class * * @param Container $container The DI container. * * @return Config * @since 2.0.1 */ public function getConfig(Container $container): Config { return new Config(); } /** * Get the Table class * * @param Container $container The DI container. * * @return Table * @since 2.0.1 */ public function getTable(Container $container): Table { return new Table(); } /** * Get the Daily Scripture class * * @param Container $container The DI container. * * @return DailyScripture * @since 2.0.1 */ public function getDailyScripture(Container $container): DailyScripture { return new DailyScripture( $container->get('GetBible.Config'), $container->get('GetBible.Utilities.Http'), $container->get('GetBible.Load') ); } /** * Get the Search class * * @param Container $container The DI container. * * @return Search * @since 2.0.1 */ public function getSearch(Container $container): Search { return new Search(); } /** * Get the Loader class * * @param Container $container The DI container. * * @return Loader * @since 2.0.1 */ public function getLoader(Container $container): Loader { return new Loader( $container->get('GetBible.Load'), $container->get('GetBible.Watcher') ); } /** * Get the Linker class * * @param Container $container The DI container. * * @return Linker * @since 2.0.1 */ public function getLinker(Container $container): Linker { return new Linker( $container->get('GetBible.Load'), $container->get('GetBible.Insert'), $container->get('GetBible.Update'), $container->get('GetBible.Utilities.Session') ); } /** * Get the Note class * * @param Container $container The DI container. * * @return Note * @since 2.0.1 */ public function getNote(Container $container): Note { return new Note( $container->get('GetBible.Load'), $container->get('GetBible.Insert'), $container->get('GetBible.Update'), $container->get('GetBible.Linker') ); } /** * Get the Tag class * * @param Container $container The DI container. * * @return Tag * @since 2.0.1 */ public function getTag(Container $container): Tag { return new Tag( $container->get('GetBible.Load'), $container->get('GetBible.Insert'), $container->get('GetBible.Update'), $container->get('GetBible.Linker') ); } /** * Get the Tagged class * * @param Container $container The DI container. * * @return Tagged * @since 2.0.1 */ public function getTagged(Container $container): Tagged { return new Tagged( $container->get('GetBible.Load'), $container->get('GetBible.Insert'), $container->get('GetBible.Update'), $container->get('GetBible.Linker') ); } /** * Get the Paragraphs class * * @param Container $container The DI container. * * @return Paragraphs * @since 2.0.1 */ public function getTaggedParagraphs(Container $container): Paragraphs { return new Paragraphs(); } }