/** * Configure inversion of control/dependency injection container. * * @param \Slim\Helper\Set $container IOC container */ protected function configureIoc(\Slim\Helper\Set $container) { $container->singleton('i18nCache', function ($c) { return new JsonCache($c->settings['i18n.path'], $c->log); }); $container->singleton('i18nContext', function ($c) { return new I18nContext($c->i18nCache, $c->settings['i18n.default'], $c->log); }); $container->singleton('mailer', function ($c) { return new Mailer(array('Host' => $c->settings['smtp.host']), $c->log); }); $container->singleton('parsoid', function ($c) { return new ParsoidClient($c->settings['parsoid.url'], $c->settings['parsoid.cache'], $c->log); }); $container->singleton('quips', function ($c) { $settings = array('url' => $c->settings['es.url'], 'log' => true); if ($c->settings['es.user'] !== '') { $creds = base64_encode($c->settings['es.user'] . ':' . $c->settings['es.password']); $settings['headers'] = array('Authorization' => "Basic {$creds}"); } $client = new \Elastica\Client($settings); $client->setLogger($c->log); return new Quips($client, $c->log); }); $container->singleton('oauthConfig', function ($c) { $conf = new \MediaWiki\OAuthClient\ClientConfig($c->settings['oauth.endpoint']); $conf->setRedirURL($c->settings['oauth.redir']); $conf->setConsumer(new \MediaWiki\OAuthClient\Consumer($c->settings['oauth.consumer_token'], $c->settings['oauth.secret_token'])); return $conf; }); $container->singleton('oauthClient', function ($c) { $client = new \MediaWiki\OAuthClient\Client($c->oauthConfig, $c->log); $client->setCallback($c->settings['oauth.callback']); return $client; }); $container->singleton('userManager', function ($c) { return new OAuthUserManager($c->oauthClient, $c->log); }); $container->singleton('authManager', function ($c) { return new AuthManager($c->userManager); }); // TODO: figure out where to send logs }