/** * Setup event title menu * * @param string $hook "profile_buttons" * @param string $type "object:event" * @param ElggMenuItem[] $return Menu * @param array $params Hook params * @return ElggMenuItem[] */ function events_rsvp_prepare_profile_buttons($hook, $type, $return, $params) { $event = elgg_extract('event', $params); $user = elgg_extract('user', $params, elgg_get_logged_in_user_entity()); // foreach ($return as $key => $item) { // if ($item instanceof ElggMenuItem && $item->getName() == 'add_to_calendar') { // unset($return[$key]); // } // } if (events_rsvp_can_rsvp($event, $user)) { $rsvp_options_values = array('' => elgg_echo('events:rsvp')); $rsvp_options = events_rsvp_options($event); foreach ($rsvp_options as $option) { $rsvp_options_values[$option] = elgg_echo("events:rsvp:{$option}"); } $select = elgg_view('input/select', array('class' => 'events-rsvp-select', 'data-endpoint' => elgg_http_add_url_query_elements(elgg_normalize_url('action/events/rsvp'), array('event_guid' => $event->guid, 'user_guid' => $user->guid)), 'value' => events_rsvp_user_status($event, $user), 'options_values' => $rsvp_options_values)); $select .= elgg_format_element('script', [], "require(['events/rsvp']);"); $return[] = ElggMenuItem::factory(array('name' => 'rsvp', 'text' => $select, 'href' => false, 'priority' => 50)); } if (events_rsvp_can_invite($event, $user)) { $return[] = ElggMenuItem::factory(array('name' => 'invite', 'text' => elgg_echo('events:rsvp:invite'), 'href' => "/calendar/events/invite/{$event->guid}", 'link_class' => 'elgg-button elgg-button-action')); } return $return; }
<?php $entity = elgg_extract('entity', $vars); if (!$entity instanceof \Events\API\Event) { return; } $filter_context = elgg_extract('filter_context', $vars, 'attending'); $rsvp_options = events_rsvp_options($entity); $rsvp_options[] = 'invited'; $tabs = array(); foreach ($rsvp_options as $option) { $tabs[] = array('name' => $option, 'text' => elgg_echo("events:rsvp:list:{$option}"), 'href' => "/calendar/events/rsvps/{$entity->guid}/{$option}", 'selected' => $option == $filter_context); } foreach ($tabs as $tab) { elgg_register_menu_item('filter', $tab); } echo elgg_view_menu('filter', array('entity' => $entity, 'sort_by' => 'priority'));
<?php $event_guid = get_input('event_guid'); $user_guid = get_input('user_guid'); $event = get_entity($event_guid); $user = get_entity($user_guid); if (!$user || !$event instanceof \Events\API\Event) { register_error(elgg_echo('events:rsvp:not_found')); forward(REFERRER, '404'); } if (!$event->canEdit()) { register_error(elgg_echo('events:rsvp:permission_denied')); forward(REFERRER, '403'); } $options = events_rsvp_options(); foreach ($options as $option) { remove_entity_relationship($user->guid, $option, $event->guid); } remove_entity_relationship($event->guid, 'access_grant', $user->guid); $calendar = \Events\API\Calendar::getPublicCalendar($user); $calendar->removeEvent($event); system_message(elgg_echo('events:rsvp:remove:success'));