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 
26 function elgg_set_http_header(string $header, bool $replace = true): void {
27  if (!preg_match('~^HTTP/\\d\\.\\d~', $header)) {
28  list($name, $value) = explode(':', $header, 2);
29  _elgg_services()->responseFactory->setHeader($name, trim($value), $replace);
30  }
31 }
32 
43 function elgg_register_success_message(string|array $options): void {
44  if (!is_array($options)) {
45  $options = ['message' => $options];
46  }
47 
48  $options['type'] = 'success';
49  _elgg_services()->system_messages->addMessage($options);
50 }
51 
62 function elgg_register_error_message(string|array $options): void {
63  if (!is_array($options)) {
64  $options = ['message' => $options];
65  }
66 
67  $options['type'] = 'error';
68  _elgg_services()->system_messages->addMessage($options);
69 }
70 
84 function elgg_log($message, $level = \Psr\Log\LogLevel::NOTICE): void {
85  _elgg_services()->logger->log($level, $message);
86 }
87 
97 function elgg_deprecated_notice(string $msg, string $dep_version): void {
98  _elgg_services()->logger->warning("Deprecated in {$dep_version}: {$msg}");
99 }
100 
113 function elgg_http_build_url(array $parts, bool $html_encode = true): string {
114  return _elgg_services()->urls->buildUrl($parts, $html_encode);
115 }
116 
134 function elgg_add_action_tokens_to_url(string $url, bool $html_encode = false): string {
135  return _elgg_services()->urls->addActionTokensToUrl($url, $html_encode);
136 }
137 
149 function elgg_http_remove_url_query_element(string $url, string $element): string {
150  return _elgg_services()->urls->addQueryElementsToUrl($url, [$element => null]);
151 }
152 
163 function elgg_http_add_url_query_elements(string $url, array $elements): string {
164  return _elgg_services()->urls->addQueryElementsToUrl($url, $elements);
165 }
166 
181 function elgg_http_url_is_identical(string $url1, string $url2, array $ignore_params = ['offset', 'limit']): bool {
182  return _elgg_services()->urls->isUrlIdentical($url1, $url2, $ignore_params);
183 }
184 
196 function elgg_http_get_signed_url(string $url, ?string $expires = null): string {
197  return _elgg_services()->urlSigner->sign($url, $expires);
198 }
199 
206 function elgg_http_validate_signed_url(string $url): bool {
207  return _elgg_services()->urlSigner->isValid($url);
208 }
209 
217 function elgg_get_http_client(array $options = []): \Elgg\Http\Client {
218  return new \Elgg\Http\Client($options);
219 }
220 
236 function elgg_extract($key, $array, $default = null, bool $strict = true) {
237  if (!is_array($array) && !$array instanceof ArrayAccess) {
238  return $default;
239  }
240 
241  if ($strict) {
242  return $array[$key] ?? $default;
243  }
244 
245  return (isset($array[$key]) && !empty($array[$key])) ? $array[$key] : $default;
246 }
247 
259 function elgg_extract_class(array $array, array|string $existing = [], string $extract_key = 'class'): array {
260  $existing = empty($existing) ? [] : (array) $existing;
261 
262  $merge = (array) elgg_extract($extract_key, $array, []);
263 
264  array_splice($existing, count($existing), 0, $merge);
265 
266  return array_values(array_filter(array_unique($existing)));
267 }
268 
286 function elgg_call(int $flags, Closure $closure) {
287  return _elgg_services()->invoker->call($flags, $closure);
288 }
289 
301 function elgg_get_ini_setting_in_bytes(string $setting): int {
302  // retrieve INI setting
303  $val = ini_get($setting);
304 
305  // convert INI setting when shorthand notation is used
306  $last = strtolower($val[strlen($val) - 1]);
307  if (in_array($last, ['g', 'm', 'k'])) {
308  $val = substr($val, 0, -1);
309  }
310 
311  $val = (int) $val;
312  switch ($last) {
313  case 'g':
314  $val *= 1024;
315  // fallthrough intentional
316  case 'm':
317  $val *= 1024;
318  // fallthrough intentional
319  case 'k':
320  $val *= 1024;
321  }
322 
323  // return byte value
324  return $val;
325 }
326 
333 function _elgg_services(): \Elgg\Di\InternalContainer {
334  // This yields a more shallow stack depth in recursive APIs like views. This aids in debugging and
335  // reduces false positives in xdebug's infinite recursion protection.
336  return \Elgg\Application::$_instance->internal_services;
337 }
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:181
elgg_get_http_client(array $options=[])
Returns a Guzzle HTTP client.
Definition: elgglib.php:217
elgg_deprecated_notice(string $msg, string $dep_version)
Log a notice about deprecated use of a function, view, etc.
Definition: elgglib.php:97
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:113
elgg_http_remove_url_query_element(string $url, string $element)
Removes an element from a URL's query string.
Definition: elgglib.php:149
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:259
elgg_add_action_tokens_to_url(string $url, bool $html_encode=false)
Adds action tokens to URL.
Definition: elgglib.php:134
elgg_set_http_header(string $header, bool $replace=true)
Set a response HTTP header.
Definition: elgglib.php:26
elgg_log($message, $level=\Psr\Log\LogLevel::NOTICE)
Log a message.
Definition: elgglib.php:84
_elgg_services()
Get the global service provider.
Definition: elgglib.php:333
elgg_http_add_url_query_elements(string $url, array $elements)
Sets elements in a URL's query string.
Definition: elgglib.php:163
elgg_register_success_message(string|array $options)
Registers a success system message.
Definition: elgglib.php:43
elgg_http_validate_signed_url(string $url)
Validates if the HMAC signature of the URL is valid.
Definition: elgglib.php:206
elgg_http_get_signed_url(string $url, ?string $expires=null)
Signs provided URL with a SHA256 HMAC key.
Definition: elgglib.php:196
elgg_register_error_message(string|array $options)
Registers a error system message.
Definition: elgglib.php:62
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:286
elgg_get_ini_setting_in_bytes(string $setting)
Returns a PHP INI setting in bytes.
Definition: elgglib.php:301
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:236
$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