Elgg  Version master
AdminNotices.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Database;
4 
11 class AdminNotices {
12 
24  public function add(string $id, string $message): ?\ElggAdminNotice {
25  if (!$id || !$message) {
26  return null;
27  }
28 
30  return null;
31  }
32 
33  $admin_notice = new \ElggAdminNotice();
34  $admin_notice->admin_notice_id = $id;
35  $admin_notice->description = $message;
36 
37  $result = elgg_call(ELGG_IGNORE_ACCESS, function() use($admin_notice) {
38  // need to handle when no one is logged in
39  return $admin_notice->save();
40  });
41 
42  return $result ? $admin_notice : null;
43  }
44 
52  public function delete(string $id = ''): bool {
53  return elgg_call(ELGG_IGNORE_ACCESS, function() use ($id) {
54  $result = true;
55 
56  $notices = $this->find([
57  'metadata_name' => 'admin_notice_id',
58  'metadata_value' => $id,
59  'limit' => false,
60  'batch' => true,
61  'batch_inc_offset' => false,
62  ]);
63 
64  // in case a bad plugin adds many, let it remove them all at once.
65  foreach ($notices as $notice) {
66  $result = ($result && $notice->delete());
67  }
68 
69  return $result;
70  });
71  }
72 
80  public function find(array $options = []) {
81  $options = array_merge($options, [
82  'type' => 'object',
83  'subtype' => 'admin_notice',
84  ]);
85 
86  return Entities::find($options);
87  }
88 
97  public function exists(string $id): bool {
98  return elgg_call(ELGG_IGNORE_ACCESS, function() use ($id) {
99  return (bool) elgg_count_entities([
100  'type' => 'object',
101  'subtype' => 'admin_notice',
102  'metadata_name_value_pair' => ['name' => 'admin_notice_id', 'value' => $id],
103  ]);
104  });
105  }
106 }
$id
Generic annotation delete action.
Definition: delete.php:6
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($count > 5) $notices
Admin Notice.
Controls all admin notices in the system.
add(string $id, string $message)
Write a persistent message to the admin view.
find(array $options=[])
Get admin notices.
exists(string $id)
Check if an admin notice is currently active.
static find(array $options=[])
Build and execute a new query from an array of legacy options.
Definition: Repository.php:107
const ELGG_IGNORE_ACCESS
elgg_call() flags
Definition: constants.php:121
if($who_can_change_language==='nobody') elseif($who_can_change_language==='admin_only' &&!elgg_is_admin_logged_in()) $options
Definition: language.php:20
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:290
elgg_admin_notice_exists(string $id)
Check if an admin notice is currently active.
Definition: admin.php:87
elgg_count_entities(array $options=[])
Returns a count of entities.
Definition: entities.php:518
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