4 use Psr\Container\ContainerInterface;
6 use Symfony\Component\Console\Output\OutputInterface;
9 'autoloadCache' => DI\autowire(\
Elgg\Cache\AutoloadCache::class),
10 'autoloadManager' => DI\autowire(\
Elgg\AutoloadManager::class),
11 'accessCache' => DI\autowire(\
Elgg\Cache\AccessCache::class),
12 'accessCollections' => DI\autowire(\
Elgg\
Database\AccessCollections::class),
13 'actions' => DI\autowire(\
Elgg\ActionsService::class),
14 'accounts' => DI\autowire(\
Elgg\Users\Accounts::class),
15 'adminNotices' => DI\autowire(\
Elgg\
Database\AdminNotices::class),
16 'ajax' => DI\autowire(\
Elgg\Ajax\Service::class),
17 'annotationsTable' => DI\autowire(\
Elgg\
Database\AnnotationsTable::class),
18 'apiUsersTable' => DI\autowire(\
Elgg\
Database\ApiUsersTable::class),
19 'authentication' => DI\autowire(\
Elgg\AuthenticationService::class),
20 'autoParagraph' => DI\autowire(\
Elgg\Views\AutoParagraph::class),
21 'boot' => DI\autowire(\
Elgg\BootService::class),
22 'bootCache' => DI\autowire(\
Elgg\Cache\BootCache::class),
24 'cssCompiler' => DI\autowire(\
Elgg\Assets\CssCompiler::class),
25 'csrf' => DI\autowire(\
Elgg\Security\Csrf::class),
26 'classLoader' => DI\autowire(\
Elgg\ClassLoader::class),
27 'cli' => DI\autowire(\
Elgg\Cli::class)->constructorParameter(
'input', DI\
get(
'cli_input'))->constructorParameter(
'output', DI\
get(
'cli_output')),
28 'cli_input' => DI\factory(
function (ContainerInterface $c) {
29 return \Elgg\Application::getStdIn();
31 'cli_output' => DI\factory(
function (ContainerInterface $c) {
32 return \Elgg\Application::getStdOut();
34 'cli_progress' => DI\autowire(\
Elgg\Cli\Progress::class)->constructorParameter(
'output', DI\
get(
'cli_output')),
36 'configTable' => DI\autowire(\
Elgg\
Database\ConfigTable::class),
37 'cron' => DI\autowire(\
Elgg\Cron::class),
38 'crypto' => DI\autowire(\
Elgg\Security\Crypto::class),
39 'db' => DI\autowire(\
Elgg\Database::class),
41 'delayedEmailQueueTable' => DI\autowire(\
Elgg\
Database\DelayedEmailQueueTable::class),
42 'delayedEmailService' => DI\autowire(\
Elgg\Email\DelayedEmailService::class),
43 'emails' => DI\autowire(\
Elgg\EmailService::class)->constructorParameter(
'mailer', DI\
get(
'mailer')),
44 'entityCache' => DI\autowire(\
Elgg\Cache\EntityCache::class),
45 'entity_capabilities' => DI\autowire(\
Elgg\EntityCapabilitiesService::class),
46 'entityPreloader' => DI\autowire(\
Elgg\EntityPreloader::class),
47 'entityTable' => DI\autowire(\
Elgg\
Database\EntityTable::class),
48 'esm' => DI\autowire(\
Elgg\Javascript\ESMService::class),
49 'events' => DI\autowire(\
Elgg\EventsService::class),
50 'externalFiles' => DI\autowire(\
Elgg\Assets\ExternalFiles::class),
51 'fields' => DI\autowire(\
Elgg\Forms\FieldsService::class),
52 'forms' => DI\autowire(\
Elgg\FormsService::class),
53 'filestore' => DI\factory(
function (ContainerInterface $c) {
54 return new \Elgg\Filesystem\Filestore\DiskFilestore($c->config->dataroot);
56 'gatekeeper' => DI\autowire(\
Elgg\Gatekeeper::class),
57 'group_tools' => DI\autowire(\
Elgg\Groups\Tools::class),
58 'handlers' => DI\autowire(\
Elgg\HandlersService::class),
59 'hmac' => DI\autowire(\
Elgg\Security\HmacFactory::class),
60 'hmacCacheTable' => DI\autowire(\
Elgg\
Database\HMACCacheTable::class),
61 'html_formatter' => DI\autowire(\
Elgg\Views\HtmlFormatter::class),
62 'iconService' => DI\autowire(\
Elgg\EntityIconService::class),
63 'imageFetcher' => DI\autowire(\
Elgg\Assets\ImageFetcherService::class),
64 'imageService' => DI\autowire(\
Elgg\ImageService::class),
65 'invoker' => DI\autowire(\
Elgg\Invoker::class)->constructorParameter(
'dic',
function() {
68 'locale' => DI\autowire(\
Elgg\I18n\LocaleService::class),
69 'logger' => DI\factory(
function (ContainerInterface $c) {
72 if (Application::isCli()) {
73 switch ($c->cli_output->getVerbosity()) {
74 case OutputInterface::VERBOSITY_VERBOSE:
75 $logger->setLevel(LogLevel::WARNING);
77 case OutputInterface::VERBOSITY_VERY_VERBOSE:
78 $logger->setLevel(LogLevel::NOTICE);
80 case OutputInterface::VERBOSITY_DEBUG:
81 $logger->setLevel(LogLevel::DEBUG);
83 case OutputInterface::VERBOSITY_QUIET:
84 case OutputInterface::VERBOSITY_NORMAL:
86 $logger->setLevel(LogLevel::ERROR);
90 $logger->setLevel($c->config->debug);
95 'mailer' => DI\factory(
function (ContainerInterface $c) {
96 switch ($c->config->emailer_transport) {
98 $transport = new \Laminas\Mail\Transport\Smtp();
99 $transportOptions = new \Laminas\Mail\Transport\SmtpOptions(
100 $c->config->emailer_smtp_settings
102 $transport->setOptions($transportOptions);
105 return new \Laminas\Mail\Transport\Sendmail($c->config->emailer_sendmail_settings);
108 'menus' => DI\autowire(\
Elgg\Menu\Service::class),
109 'metadataCache' => DI\autowire(\
Elgg\Cache\MetadataCache::class),
110 'metadataTable' => DI\autowire(\
Elgg\
Database\MetadataTable::class),
111 'mimetype' => DI\autowire(\
Elgg\Filesystem\MimeTypeService::class),
113 'notifications' => DI\autowire(\
Elgg\Notifications\NotificationsService::class)->constructorParameter(
'queue', DI\
get(
'notificationsQueue')),
114 'notificationsQueue' => DI\autowire(\
Elgg\Notifications\NotificationsQueue::class)->constructorParameter(
'name', \
Elgg\Notifications\NotificationsQueue::QUEUE_NAME),
115 'pageOwner' => DI\autowire(\
Elgg\Page\PageOwnerService::class),
116 'passwords' => DI\autowire(\
Elgg\PasswordService::class),
117 'passwordGenerator' => DI\autowire(\
Elgg\Security\PasswordGeneratorService::class),
118 'persistentLogin' => DI\autowire(\
Elgg\PersistentLoginService::class),
119 'plugins' => DI\autowire(\
Elgg\
Database\Plugins::class),
120 'pluginsCache' => DI\autowire(\
Elgg\Cache\PluginsCache::class),
122 'queryCache' => DI\autowire(\
Elgg\Cache\QueryCache::class),
123 'redirects' => DI\autowire(\
Elgg\RedirectService::class),
124 'relationshipsTable' => DI\autowire(\
Elgg\
Database\RelationshipsTable::class),
125 'request' => DI\factory(
function (ContainerInterface $c) {
127 $request = \Elgg\Http\Request::createFromGlobals();
138 'requestContext' => DI\factory(
function (ContainerInterface $c) {
139 $context = new \Elgg\Router\RequestContext();
140 return $context->fromRequest($c->request);
142 'responseFactory' => DI\autowire(\
Elgg\Http\ResponseFactory::class),
143 'riverTable' => DI\autowire(\
Elgg\
Database\RiverTable::class),
144 'routeCollection' => DI\autowire(\
Elgg\Router\RouteCollection::class),
145 'routes' => DI\autowire(\
Elgg\Router\RouteRegistrationService::class),
146 'router' => DI\autowire(\
Elgg\Router::class),
147 'search' => DI\autowire(\
Elgg\Search\SearchService::class),
149 'serveFileHandler' => DI\autowire(\
Elgg\
Application\ServeFileHandler::class),
150 'serverCache' => DI\autowire(\
Elgg\Cache\ServerCache::class),
151 'session' => DI\factory(
function (ContainerInterface $c) {
152 return \ElggSession::fromDatabase($c->config, $c->db);
154 'session_manager' => DI\autowire(\
Elgg\SessionManagerService::class),
155 'simpleCache' => DI\autowire(\
Elgg\Cache\SimpleCache::class),
156 'siteSecret' => DI\autowire(\
Elgg\Security\SiteSecret::class),
157 'stickyForms' => DI\autowire(\
Elgg\Forms\StickyForms::class),
158 'systemCache' => DI\autowire(\
Elgg\Cache\SystemCache::class),
159 'subscriptions' => DI\autowire(\
Elgg\Notifications\SubscriptionsService::class),
160 'system_messages' => DI\autowire(\
Elgg\SystemMessagesService::class),
161 'table_columns' => DI\autowire(\
Elgg\Views\TableColumn\ColumnFactory::class),
162 'temp_filestore' => DI\autowire(\
Elgg\Filesystem\Filestore\TempDiskFilestore::class),
163 'timer' => DI\autowire(\
Elgg\Timer::class),
164 'translator' => DI\autowire(\
Elgg\I18n\Translator::class),
165 'uploads' => DI\autowire(\
Elgg\UploadService::class),
166 'upgrades' => DI\autowire(\
Elgg\UpgradeService::class),
167 'urlGenerator' => DI\autowire(\
Elgg\Router\UrlGenerator::class),
168 'urlMatcher' => DI\autowire(\
Elgg\Router\UrlMatcher::class),
169 'urlSigner' => DI\autowire(\
Elgg\Security\UrlSigner::class),
170 'urls' => DI\autowire(\
Elgg\Http\Urls::class),
171 'userCapabilities' => DI\autowire(\
Elgg\UserCapabilities::class),
172 'usersApiSessionsTable' => DI\autowire(\
Elgg\
Database\UsersApiSessionsTable::class),
173 'users_remember_me_cookies_table' => DI\autowire(\
Elgg\
Database\UsersRememberMeCookiesTable::class),
174 'upgradeLocator' => DI\autowire(\
Elgg\Upgrade\Locator::class),
175 'views' => DI\autowire(\
Elgg\ViewsService::class),
176 'widgets' => DI\autowire(\
Elgg\WidgetsService::class),
179 \ElggSession::class => DI\get(
'session'),
180 \Elgg\ActionsService::class => DI\get(
'actions'),
181 \Elgg\Ajax\Service::class => DI\get(
'ajax'),
182 \Elgg\Application\CacheHandler::class => DI\get(
'cacheHandler'),
183 \Elgg\Application\Database::class => DI\get(
'publicDb'),
184 \Elgg\Application\ServeFileHandler::class => DI\get(
'serveFileHandler'),
185 \Elgg\Assets\CssCompiler::class => DI\get(
'cssCompiler'),
186 \Elgg\Assets\ExternalFiles::class => DI\get(
'externalFiles'),
187 \Elgg\Assets\ImageFetcherService::class => DI\get(
'imageFetcher'),
188 \Elgg\AuthenticationService::class => DI\get(
'authentication'),
189 \Elgg\AutoloadManager::class => DI\get(
'autoloadManager'),
190 \Elgg\BootService::class => DI\get(
'boot'),
191 \Elgg\Cache\AccessCache::class => DI\get(
'accessCache'),
192 \Elgg\Cache\AutoloadCache::class => DI\get(
'autoloadCache'),
193 \Elgg\Cache\BootCache::class => DI\get(
'bootCache'),
194 \Elgg\Cache\EntityCache::class => DI\get(
'entityCache'),
195 \Elgg\Cache\MetadataCache::class => DI\get(
'metadataCache'),
196 \Elgg\Cache\PluginsCache::class => DI\get(
'pluginsCache'),
197 \Elgg\Cache\QueryCache::class => DI\get(
'queryCache'),
198 \Elgg\Cache\ServerCache::class => DI\get(
'serverCache'),
199 \Elgg\Cache\SimpleCache::class => DI\get(
'simpleCache'),
200 \Elgg\Cache\SystemCache::class => DI\get(
'systemCache'),
201 \Elgg\ClassLoader::class => DI\get(
'classLoader'),
202 \Elgg\Cli::class => DI\get(
'cli'),
203 \Elgg\Cli\Progress::class => DI\get(
'cli_progress'),
204 \Elgg\Config::class => DI\get(
'config'),
205 \Elgg\Cron::class => DI\get(
'cron'),
206 \Elgg\Database::class => DI\get(
'db'),
207 \Elgg\Database\AccessCollections::class => DI\get(
'accessCollections'),
208 \Elgg\Database\AdminNotices::class => DI\get(
'adminNotices'),
209 \Elgg\Database\AnnotationsTable::class => DI\get(
'annotationsTable'),
210 \Elgg\Database\ApiUsersTable::class => DI\get(
'apiUsersTable'),
211 \Elgg\Database\ConfigTable::class => DI\get(
'configTable'),
212 \Elgg\Database\DbConfig::class => DI\get(
'dbConfig'),
213 \Elgg\Database\DelayedEmailQueueTable::class => DI\get(
'delayedEmailQueueTable'),
214 \Elgg\Database\EntityTable::class => DI\get(
'entityTable'),
215 \Elgg\Database\HMACCacheTable::class => DI\get(
'hmacCacheTable'),
216 \Elgg\Database\MetadataTable::class => DI\get(
'metadataTable'),
217 \Elgg\Database\Mutex::class => DI\get(
'mutex'),
218 \Elgg\Database\Plugins::class => DI\get(
'plugins'),
219 \Elgg\Database\RelationshipsTable::class => DI\get(
'relationshipsTable'),
220 \Elgg\Database\RiverTable::class => DI\get(
'riverTable'),
221 \Elgg\Database\Seeder::class => DI\get(
'seeder'),
222 \Elgg\Database\UsersApiSessionsTable::class => DI\get(
'usersApiSessionsTable'),
223 \Elgg\Database\UsersRememberMeCookiesTable::class => DI\get(
'users_remember_me_cookies_table'),
224 \Elgg\EntityPreloader::class => DI\get(
'entityPreloader'),
225 \Elgg\EmailService::class => DI\get(
'emails'),
226 \Elgg\Email\DelayedEmailService::class => DI\get(
'delayedEmailService'),
227 \Elgg\EntityIconService::class => DI\get(
'iconService'),
228 \Elgg\EventsService::class => DI\get(
'events'),
229 \Elgg\Filesystem\Filestore\DiskFilestore::class => DI\get(
'filestore'),
230 \Elgg\Filesystem\Filestore\TempDiskFilestore::class => DI\get(
'temp_filestore'),
231 \Elgg\Filesystem\MimeTypeService::class => DI\get(
'mimetype'),
232 \Elgg\FormsService::class => DI\get(
'forms'),
233 \Elgg\Forms\FieldsService::class => DI\get(
'fields'),
234 \Elgg\Forms\StickyForms::class => DI\get(
'stickyForms'),
235 \Elgg\Gatekeeper::class => DI\get(
'gatekeeper'),
236 \Elgg\Groups\Tools::class => DI\get(
'group_tools'),
237 \Elgg\HandlersService::class => DI\get(
'handlers'),
238 \Elgg\Http\Request::class => DI\get(
'request'),
239 \Elgg\Http\ResponseFactory::class => DI\get(
'responseFactory'),
240 \Elgg\Http\Urls::class => DI\get(
'urls'),
241 \Elgg\I18n\LocaleService::class => DI\get(
'locale'),
242 \Elgg\I18n\Translator::class => DI\get(
'translator'),
243 \Elgg\ImageService::class => DI\get(
'imageService'),
244 \Elgg\Javascript\ESMService::class => DI\get(
'esm'),
245 \Elgg\Invoker::class => DI\get(
'invoker'),
246 \Elgg\Logger::class => DI\get(
'logger'),
247 \Elgg\Menu\Service::class => DI\get(
'menus'),
248 \Elgg\Notifications\NotificationsService::class => DI\get(
'notifications'),
249 \Elgg\Notifications\NotificationsQueue::class => DI\get(
'notificationsQueue'),
250 \Elgg\Notifications\SubscriptionsService::class => DI\get(
'subscriptions'),
251 \Elgg\Page\PageOwnerService::class => DI\get(
'pageOwner'),
252 \Elgg\PasswordService::class => DI\get(
'passwords'),
253 \Elgg\PersistentLoginService::class => DI\get(
'persistentLogin'),
254 \Elgg\RedirectService::class => DI\get(
'redirects'),
255 \Elgg\Router::class => DI\get(
'router'),
256 \Elgg\Router\RequestContext::class => DI\get(
'requestContext'),
257 \Elgg\Router\RouteCollection::class => DI\get(
'routeCollection'),
258 \Elgg\Router\RouteRegistrationService::class => DI\get(
'routes'),
259 \Elgg\Router\UrlGenerator::class => DI\get(
'urlGenerator'),
260 \Elgg\Router\UrlMatcher::class => DI\get(
'urlMatcher'),
261 \Elgg\Search\SearchService::class => DI\get(
'search'),
262 \Elgg\Security\Crypto::class => DI\get(
'crypto'),
263 \Elgg\Security\Csrf::class => DI\get(
'csrf'),
264 \Elgg\Security\HmacFactory::class => DI\get(
'hmac'),
265 \Elgg\Security\PasswordGeneratorService::class => DI\get(
'passwordGenerator'),
266 \Elgg\Security\SiteSecret::class => DI\get(
'siteSecret'),
267 \Elgg\Security\UrlSigner::class => DI\get(
'urlSigner'),
268 \Elgg\SessionManagerService::class => DI\get(
'session_manager'),
269 \Elgg\SystemMessagesService::class => DI\get(
'system_messages'),
270 \Elgg\Timer::class => DI\get(
'timer'),
271 \Elgg\UpgradeService::class => DI\get(
'upgrades'),
272 \Elgg\Upgrade\Locator::class => DI\get(
'upgradeLocator'),
273 \Elgg\UploadService::class => DI\get(
'uploads'),
274 \Elgg\UserCapabilities::class => DI\get(
'userCapabilities'),
275 \Elgg\Users\Accounts::class => DI\get(
'accounts'),
276 \Elgg\ViewsService::class => DI\get(
'views'),
277 \Elgg\Views\AutoParagraph::class => DI\get(
'autoParagraph'),
278 \Elgg\Views\HtmlFormatter::class => DI\get(
'html_formatter'),
279 \Elgg\Views\TableColumn\ColumnFactory::class => DI\get(
'table_columns'),
280 \Elgg\WidgetsService::class => DI\get(
'widgets'),
Load, boot, and implement a front controller for an Elgg application.
static factory(?InputInterface $input=null, ?OutputInterface $output=null)
Build a new logger.
elgg()
Bootstrapping and helper procedural code available for use in Elgg core and plugins.