Elgg  Version master
river.php
Go to the documentation of this file.
1 <?php
7 use Elgg\Exceptions\InvalidArgumentException as ElggInvalidArgumentException;
8 
29  $item = new \ElggRiverItem();
30  $item->action_type = elgg_extract('action_type', $options);
31  $item->view = elgg_extract('view', $options);
32  $item->subject_guid = elgg_extract('subject_guid', $options, elgg_get_logged_in_user_guid());
33  $item->object_guid = elgg_extract('object_guid', $options);
34  $item->target_guid = elgg_extract('target_guid', $options);
35  $item->annotation_id = elgg_extract('annotation_id', $options);
36  $item->posted = elgg_extract('posted', $options);
37 
38  return $item->save() ? $item : null;
39 }
40 
97 function elgg_get_river(array $options = []) {
98  if (!isset($options['type_subtype_pairs']) &&
99  !isset($options['type']) &&
100  !isset($options['subtype']) &&
101  !isset($options['id']) &&
102  !isset($options['object_guid'])) {
103  $type_subtype_pairs = [];
104  foreach (_elgg_services()->entityTable->getEntityClasses() as $type => $subtypes) {
105  $enabled_subtypes = [];
106  foreach (array_keys($subtypes) as $subtype) {
107  if (_elgg_services()->entity_capabilities->hasCapability($type, $subtype, 'river_emittable')) {
108  $enabled_subtypes[] = $subtype;
109  }
110  }
111 
112  if (!empty($enabled_subtypes)) {
113  $type_subtype_pairs[$type] = $enabled_subtypes;
114  }
115  }
116 
117  $options['type_subtype_pairs'] = $type_subtype_pairs;
118  }
119 
120  return \Elgg\Database\River::find($options);
121 }
122 
131  return _elgg_services()->riverTable->get($id);
132 }
133 
153 function elgg_delete_river(array $options = []): bool {
154 
155  $required = [
156  'id', 'ids',
157  'subject_guid', 'subject_guids',
158  'object_guid', 'object_guids',
159  'target_guid', 'target_guids',
160  'annotation_id', 'annotation_ids',
161  'view', 'views',
162  ];
163 
164  $found = false;
165  foreach ($required as $key) {
166  // check that it exists and is something.
167  if (isset($options[$key]) && !elgg_is_empty($options[$key])) {
168  $found = true;
169  break;
170  }
171  }
172 
173  if (!$found) {
174  // requirements not met
175  throw new ElggInvalidArgumentException(__METHOD__ . ' requires at least one of the following keys in $options: ' . implode(', ', $required));
176  }
177 
178  return elgg_call(ELGG_IGNORE_ACCESS, function() use ($options) {
179  $options['batch'] = true;
180  $options['batch_size'] = 25;
181  $options['batch_inc_offset'] = false;
182 
183  // fetch directly from table as we do not want a check on entity classes and capabilities
184  $river = \Elgg\Database\River::find($options);
185  $count = $river->count();
186 
187  if (!$count) {
188  return true;
189  }
190 
191  $success = 0;
192  foreach ($river as $river_item) {
193  if ($river_item->delete()) {
194  $success++;
195  }
196  }
197 
198  return $success === $count;
199  });
200 }
201 
213 function elgg_list_river(array $options = []): string {
214  $defaults = [
215  'offset' => (int) max(get_input('offset', 0), 0),
216  'limit' => (int) max(get_input('limit', max(20, _elgg_services()->config->default_limit)), 0),
217  'pagination' => true,
218  'list_class' => 'elgg-list-river',
219  ];
220 
221  $options = array_merge($defaults, $options);
222 
223  $options['register_rss_link'] = elgg_extract('register_rss_link', $options, elgg_extract('pagination', $options));
224  if ($options['register_rss_link']) {
226  }
227 
228  if (!$options['limit'] && !$options['offset']) {
229  // no need for pagination if listing is unlimited
230  $options['pagination'] = false;
231  }
232 
233  $options['count'] = false;
235  $options['count'] = is_array($items) ? count($items) : 0;
236 
237  if (!empty($items)) {
238  $count_needed = true;
239  if (!$options['pagination']) {
240  $count_needed = false;
241  } elseif (!$options['offset'] && !$options['limit']) {
242  $count_needed = false;
243  } elseif (($options['count'] < (int) $options['limit']) && !$options['offset']) {
244  $count_needed = false;
245  }
246 
247  if ($count_needed) {
248  $options['count'] = true;
249 
250  $options['count'] = (int) elgg_get_river($options);
251  }
252  }
253 
254  $options['items'] = $items;
255 
256  return elgg_view('page/components/list', $options);
257 }
$id
Generic annotation delete action.
Definition: delete.php:6
$subtype
Definition: delete.php:22
$type
Definition: delete.php:21
if(! $items) $item
Definition: delete.php:13
$items
Definition: delete.php:8
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
$count
Definition: ban.php:24
Exception thrown if an argument is not of the expected type.
$subtypes
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
if($item instanceof \ElggEntity) elseif($item instanceof \ElggRiverItem) elseif($item instanceof \ElggRelationship) elseif(is_callable([ $item, 'getType']))
Definition: item.php:48
_elgg_services()
Get the global service provider.
Definition: elgglib.php:343
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_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
get_input(string $variable, $default=null, bool $filter_result=true)
Parameter input functions.
Definition: input.php:20
elgg_is_empty($value)
Check if a value isn't empty, but allow 0 and '0'.
Definition: input.php:176
$defaults
Generic entity header upload helper.
Definition: header.php:6
$required
Definition: label.php:12
elgg_register_rss_link()
Include the RSS icon link and link element in the head.
Definition: views.php:1274
elgg_view(string $view, array $vars=[], string $viewtype='')
Return a parsed view.
Definition: views.php:156
if($container instanceof ElggGroup && $container->guid !=elgg_get_page_owner_guid()) $key
Definition: summary.php:44
elgg_list_river(array $options=[])
List river items.
Definition: river.php:213
elgg_create_river_item(array $options=[])
Elgg river.
Definition: river.php:28
elgg_get_river_item_from_id(int $id)
Get river item from its ID.
Definition: river.php:130
elgg_get_river(array $options=[])
Get river items (default only returns activity for installed type/subtypes and with a river_emittable...
Definition: river.php:97
elgg_delete_river(array $options=[])
Delete river items based on $options.
Definition: river.php:153
elgg_get_logged_in_user_guid()
Return the current logged in user by guid.
Definition: sessions.php:34