Elgg  Version master
elgglib.php
Go to the documentation of this file.
1 <?php
12 function elgg(): \Elgg\Di\PublicContainer {
13  return \Elgg\Application::$_instance->public_services;
14 }
15 
22 function elgg_is_cli(): bool {
23  return \Elgg\Application::isCli();
24 }
25 
36 function elgg_set_http_header(string $header, bool $replace = true): void {
37  if (!preg_match('~^HTTP/\\d\\.\\d~', $header)) {
38  list($name, $value) = explode(':', $header, 2);
39  _elgg_services()->responseFactory->setHeader($name, trim($value), $replace);
40  }
41 }
42 
53 function elgg_register_success_message(string|array $options): void {
54  if (!is_array($options)) {
55  $options = ['message' => $options];
56  }
57 
58  $options['type'] = 'success';
59  _elgg_services()->system_messages->addMessage($options);
60 }
61 
72 function elgg_register_error_message(string|array $options): void {
73  if (!is_array($options)) {
74  $options = ['message' => $options];
75  }
76 
77  $options['type'] = 'error';
78  _elgg_services()->system_messages->addMessage($options);
79 }
80 
94 function elgg_log($message, $level = \Psr\Log\LogLevel::NOTICE): void {
95  _elgg_services()->logger->log($level, $message);
96 }
97 
107 function elgg_deprecated_notice(string $msg, string $dep_version): void {
108  _elgg_services()->logger->warning("Deprecated in {$dep_version}: {$msg}");
109 }
110 
123 function elgg_http_build_url(array $parts, bool $html_encode = true): string {
124  return _elgg_services()->urls->buildUrl($parts, $html_encode);
125 }
126 
144 function elgg_add_action_tokens_to_url(string $url, bool $html_encode = false): string {
145  return _elgg_services()->urls->addActionTokensToUrl($url, $html_encode);
146 }
147 
159 function elgg_http_remove_url_query_element(string $url, string $element): string {
160  return _elgg_services()->urls->addQueryElementsToUrl($url, [$element => null]);
161 }
162 
173 function elgg_http_add_url_query_elements(string $url, array $elements): string {
174  return _elgg_services()->urls->addQueryElementsToUrl($url, $elements);
175 }
176 
191 function elgg_http_url_is_identical(string $url1, string $url2, array $ignore_params = ['offset', 'limit']): bool {
192  return _elgg_services()->urls->isUrlIdentical($url1, $url2, $ignore_params);
193 }
194 
206 function elgg_http_get_signed_url(string $url, ?string $expires = null): string {
207  return _elgg_services()->urlSigner->sign($url, $expires);
208 }
209 
216 function elgg_http_validate_signed_url(string $url): bool {
217  return _elgg_services()->urlSigner->isValid($url);
218 }
219 
227 function elgg_get_http_client(array $options = []): \Elgg\Http\Client {
228  return new \Elgg\Http\Client($options);
229 }
230 
246 function elgg_extract($key, $array, $default = null, bool $strict = true) {
247  if (!is_array($array) && !$array instanceof ArrayAccess) {
248  return $default;
249  }
250 
251  if ($strict) {
252  return $array[$key] ?? $default;
253  }
254 
255  return (isset($array[$key]) && !empty($array[$key])) ? $array[$key] : $default;
256 }
257 
269 function elgg_extract_class(array $array, array|string $existing = [], string $extract_key = 'class'): array {
270  $existing = empty($existing) ? [] : (array) $existing;
271 
272  $merge = (array) elgg_extract($extract_key, $array, []);
273 
274  array_splice($existing, count($existing), 0, $merge);
275 
276  return array_values(array_filter(array_unique($existing)));
277 }
278 
296 function elgg_call(int $flags, Closure $closure) {
297  return _elgg_services()->invoker->call($flags, $closure);
298 }
299 
311 function elgg_get_ini_setting_in_bytes(string $setting): int {
312  // retrieve INI setting
313  $val = ini_get($setting);
314 
315  // convert INI setting when shorthand notation is used
316  $last = strtolower($val[strlen($val) - 1]);
317  if (in_array($last, ['g', 'm', 'k'])) {
318  $val = substr($val, 0, -1);
319  }
320 
321  $val = (int) $val;
322  switch ($last) {
323  case 'g':
324  $val *= 1024;
325  // fallthrough intentional
326  case 'm':
327  $val *= 1024;
328  // fallthrough intentional
329  case 'k':
330  $val *= 1024;
331  }
332 
333  // return byte value
334  return $val;
335 }
336 
343 function _elgg_services(): \Elgg\Di\InternalContainer {
344  // This yields a more shallow stack depth in recursive APIs like views. This aids in debugging and
345  // reduces false positives in xdebug's infinite recursion protection.
346  return \Elgg\Application::$_instance->internal_services;
347 }
if(! $user||! $user->canDelete()) $name
Definition: delete.php:22
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'], '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:73
if($who_can_change_language==='nobody') elseif($who_can_change_language==='admin_only' &&!elgg_is_admin_logged_in()) $options
Definition: language.php:20
foreach($periods as $period) $header
Definition: cron.php:81
foreach($plugin_guids as $guid) if(empty($deactivated_plugins)) $url
Definition: deactivate.php:39
elgg()
Bootstrapping and helper procedural code available for use in Elgg core and plugins.
Definition: elgglib.php:12
elgg_http_url_is_identical(string $url1, string $url2, array $ignore_params=['offset', 'limit'])
Test if two URLs are functionally identical.
Definition: elgglib.php:191
elgg_get_http_client(array $options=[])
Returns a Guzzle HTTP client.
Definition: elgglib.php:227
elgg_deprecated_notice(string $msg, string $dep_version)
Log a notice about deprecated use of a function, view, etc.
Definition: elgglib.php:107
elgg_http_build_url(array $parts, bool $html_encode=true)
Builds a URL from the a parts array like one returned by parse_url().
Definition: elgglib.php:123
elgg_http_remove_url_query_element(string $url, string $element)
Removes an element from a URL's query string.
Definition: elgglib.php:159
elgg_extract_class(array $array, array|string $existing=[], string $extract_key='class')
Extract class names from an array, optionally merging into a preexisting set.
Definition: elgglib.php:269
elgg_is_cli()
Checks if code is currently executed in a commandline.
Definition: elgglib.php:22
elgg_add_action_tokens_to_url(string $url, bool $html_encode=false)
Adds action tokens to URL.
Definition: elgglib.php:144
elgg_set_http_header(string $header, bool $replace=true)
Set a response HTTP header.
Definition: elgglib.php:36
elgg_log($message, $level=\Psr\Log\LogLevel::NOTICE)
Log a message.
Definition: elgglib.php:94
_elgg_services()
Get the global service provider.
Definition: elgglib.php:343
elgg_http_add_url_query_elements(string $url, array $elements)
Sets elements in a URL's query string.
Definition: elgglib.php:173
elgg_register_success_message(string|array $options)
Registers a success system message.
Definition: elgglib.php:53
elgg_http_validate_signed_url(string $url)
Validates if the HMAC signature of the URL is valid.
Definition: elgglib.php:216
elgg_http_get_signed_url(string $url, ?string $expires=null)
Signs provided URL with a SHA256 HMAC key.
Definition: elgglib.php:206
elgg_register_error_message(string|array $options)
Registers a error system message.
Definition: elgglib.php:72
elgg_call(int $flags, Closure $closure)
Calls a callable autowiring the arguments using public DI services and applying logic based on flags.
Definition: elgglib.php:296
elgg_get_ini_setting_in_bytes(string $setting)
Returns a PHP INI setting in bytes.
Definition: elgglib.php:311
elgg_extract($key, $array, $default=null, bool $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
Definition: elgglib.php:246
$value
Definition: generic.php:51
$default
Definition: checkbox.php:30
$element
Definition: section.php:29
if($container instanceof ElggGroup && $container->guid !=elgg_get_page_owner_guid()) $key
Definition: summary.php:44
if(parse_url(elgg_get_site_url(), PHP_URL_PATH) !=='/') if(file_exists(elgg_get_root_path() . 'robots.txt'))
Set robots.txt.
Definition: robots.php:10
$expires