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