public function get_items($request)
{
$args = array('exclude' => $request['exclude'], 'in' => $request['include'], 'page' => $request['page'], 'per_page' => $request['per_page'], 'primary_id' => $request['primary_id'], 'search_terms' => $request['search'], 'secondary_id' => $request['secondary_id'], 'sort' => $request['order'], 'spam' => $request['status'] === 'spam' ? 'spam_only' : 'ham_only', 'user_id' => $request['author'], 'count_total' => true, 'fields' => 'all', 'show_hidden' => false, 'update_meta_cache' => true);
if (isset($request['after'])) {
$args['since'] = $request['after'];
}
if (isset($request['component'])) {
if (!isset($args['filter'])) {
$args['filter'] = array('object' => $request['component']);
} else {
$args['filter']['object'] = $request['component'];
}
}
if (isset($request['type'])) {
if (!isset($args['filter'])) {
$args['filter'] = array('action' => $request['type']);
} else {
$args['filter']['action'] = $request['type'];
}
}
if ($args['in']) {
$args['count_total'] = false;
}
// Override certain options for security.
// @TODO: Verify and confirm this show_hidden logic, and check core for other edge cases.
if ($request['component'] === 'groups' && (groups_is_user_member(get_current_user_id(), $request['primary_id']) || bp_current_user_can('bp_moderate'))) {
$args['show_hidden'] = true;
}
$retval = array();
$activities = bp_activity_get($args);
foreach ($activities['activities'] as $activity) {
$retval[] = $this->prepare_response_for_collection($this->prepare_item_for_response($activity, $request));
}
return rest_ensure_response($retval);
}