Elgg  Version master
InternalContainer.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Di;
4 
5 use Elgg\Config;
9 use Psr\Container\ContainerInterface;
10 
129 
139  public function initConfig(Config $config): Config {
140  $this->timer->begin([]);
141 
142  if (!$config->dataroot && !$config->installer_running) {
143  throw new ConfigurationException('Config value "dataroot" is required.');
144  }
145 
146  if (!$config->cacheroot) {
147  $config->cacheroot = $config->dataroot . 'caches';
148  }
149 
150  if (!$config->assetroot) {
151  $config->assetroot = $config->cacheroot . 'views_simplecache';
152  }
153 
154  if (!$config->wwwroot) {
155  $config->wwwroot = $this->request->sniffElggUrl();
156  }
157 
158  if (!$config->plugins_path) {
159  $config->plugins_path = Paths::project() . 'mod';
160  }
161 
162  // move sensitive credentials into isolated services
163  $this->set('dbConfig', DbConfig::fromElggConfig($config));
164 
165  // get this stuff out of config!
166  foreach ($config::SENSITIVE_PROPERTIES as $name) {
167  unset($config->{$name});
168  }
169 
170  return $config;
171  }
172 
176  public static function factory(array $options = []) {
177  $container = parent::factory();
178 
179  if (isset($options['config'])) {
180  $config = $options['config'];
181  $container->set('config', function(ContainerInterface $c) use ($config) {
182  return $c->initConfig($config);
183  });
184  }
185 
186  return $container;
187  }
188 
192  public static function getDefinitionSources(): array {
193  return [\Elgg\Project\Paths::elgg() . 'engine/internal_services.php'];
194  }
195 }
if(! $user||! $user->canDelete()) $name
Definition: delete.php:22
$container
Definition: delete.php:23
return[ 'admin/delete_admin_notices'=>['access'=> 'admin'], 'admin/menu/save'=>['access'=> 'admin'], 'admin/plugins/activate'=>['access'=> 'admin'], 'admin/plugins/activate_all'=>['access'=> 'admin'], 'admin/plugins/deactivate'=>['access'=> 'admin'], 'admin/plugins/deactivate_all'=>['access'=> 'admin'], 'admin/plugins/set_priority'=>['access'=> 'admin'], 'admin/security/security_txt'=>['access'=> 'admin'], 'admin/security/settings'=>['access'=> 'admin'], 'admin/security/regenerate_site_secret'=>['access'=> 'admin'], 'admin/site/cache/invalidate'=>['access'=> 'admin'], 'admin/site/flush_cache'=>['access'=> 'admin'], 'admin/site/icons'=>['access'=> 'admin'], 'admin/site/set_maintenance_mode'=>['access'=> 'admin'], 'admin/site/set_robots'=>['access'=> 'admin'], 'admin/site/theme'=>['access'=> 'admin'], 'admin/site/unlock_upgrade'=>['access'=> 'admin'], 'admin/site/settings'=>['access'=> 'admin'], 'admin/upgrade'=>['access'=> 'admin'], 'admin/upgrade/reset'=>['access'=> 'admin'], 'admin/user/ban'=>['access'=> 'admin'], 'admin/user/bulk/ban'=>['access'=> 'admin'], 'admin/user/bulk/delete'=>['access'=> 'admin'], 'admin/user/bulk/unban'=>['access'=> 'admin'], 'admin/user/bulk/validate'=>['access'=> 'admin'], 'admin/user/change_email'=>['access'=> 'admin'], 'admin/user/delete'=>['access'=> 'admin'], 'admin/user/login_as'=>['access'=> 'admin'], 'admin/user/logout_as'=>[], 'admin/user/makeadmin'=>['access'=> 'admin'], 'admin/user/resetpassword'=>['access'=> 'admin'], 'admin/user/removeadmin'=>['access'=> 'admin'], 'admin/user/unban'=>['access'=> 'admin'], 'admin/user/validate'=>['access'=> 'admin'], 'annotation/delete'=>[], 'avatar/upload'=>[], 'comment/save'=>[], 'diagnostics/download'=>['access'=> 'admin', 'controller'=> \Elgg\Diagnostics\DownloadController::class,], 'entity/chooserestoredestination'=>[], 'entity/delete'=>[], 'entity/mute'=>[], 'entity/restore'=>[], 'entity/subscribe'=>[], 'entity/trash'=>[], 'entity/unmute'=>[], 'entity/unsubscribe'=>[], 'login'=>['access'=> 'logged_out'], 'logout'=>[], 'notifications/mute'=>['access'=> 'public'], 'plugins/settings/remove'=>['access'=> 'admin'], 'plugins/settings/save'=>['access'=> 'admin'], 'plugins/usersettings/save'=>[], 'register'=>['access'=> 'logged_out', 'middleware'=>[\Elgg\Router\Middleware\RegistrationAllowedGatekeeper::class,],], 'river/delete'=>[], 'settings/notifications'=>[], 'settings/notifications/subscriptions'=>[], 'user/changepassword'=>['access'=> 'public'], 'user/requestnewpassword'=>['access'=> 'public'], 'useradd'=>['access'=> 'admin'], 'usersettings/save'=>[], 'widgets/add'=>[], 'widgets/delete'=>[], 'widgets/move'=>[], 'widgets/save'=>[],]
Definition: actions.php:76
Database configuration service.
Definition: DbConfig.php:13
static fromElggConfig(Config $config)
Construct from an Elgg Config.
Definition: DbConfig.php:85
Base DI Container class.
Definition: DiContainer.php:13
static getDefinitionSources()
Returns an array of file locations.string[]
static factory(array $options=[])
initConfig(Config $config)
Validate, normalize, fill in missing values, and lock some.
A generic parent class for Configuration exceptions.
Find Elgg and project paths.
Definition: Paths.php:8
static project()
Get the project root (where composer is installed) path with "/".
Definition: Paths.php:25
if($who_can_change_language==='nobody') elseif($who_can_change_language==='admin_only' &&!elgg_is_admin_logged_in()) $options
Definition: language.php:20
$config
Advanced site settings, debugging section.
Definition: debugging.php:6
elgg()
Bootstrapping and helper procedural code available for use in Elgg core and plugins.
Definition: elgglib.php:12