diff options
Diffstat (limited to 'actions')
-rw-r--r-- | actions/add_to_group.php | 11 | ||||
-rw-r--r-- | actions/addtocalendar.php | 36 | ||||
-rw-r--r-- | actions/killrequest.php | 23 | ||||
-rw-r--r-- | actions/manage.php | 105 | ||||
-rw-r--r-- | actions/remove_from_group.php | 8 | ||||
-rw-r--r-- | actions/request_personal_calendar.php | 18 | ||||
-rw-r--r-- | actions/toggle_personal_calendar.php | 30 |
7 files changed, 231 insertions, 0 deletions
diff --git a/actions/add_to_group.php b/actions/add_to_group.php new file mode 100644 index 000000000..b8c18ebb0 --- /dev/null +++ b/actions/add_to_group.php @@ -0,0 +1,11 @@ +<?php +$event_id = get_input("event_id",0); +$group_id = get_input("group_id",0); +$event = get_entity($event_id); +$group = get_entity($group_id); +if ($group && $group->canEdit()) { + add_entity_relationship($event_id, "display_on_group", $group_id ); + system_message(elgg_echo('event_calendar:add_to_group:success')); +} +forward($event->getUrl()); +?>
\ No newline at end of file diff --git a/actions/addtocalendar.php b/actions/addtocalendar.php new file mode 100644 index 000000000..cb83aab88 --- /dev/null +++ b/actions/addtocalendar.php @@ -0,0 +1,36 @@ +<?php + +// this action allows an admin or event owner to approve a calendar request + +// Load configuration +global $CONFIG; + +gatekeeper(); + +$user_guid = get_input('user_guid', get_loggedin_userid()); +$event_id = get_input('event_id'); + +$user = get_entity($user_guid); +$event = get_entity($event_id); + +// If join request made +if (event_calendar_personal_can_manage($event,$user_guid) + && check_entity_relationship($user_guid, 'event_calendar_request', $event_id)) { + if (event_calendar_add_personal_event($event_id,$user_guid)) { + remove_entity_relationship($user_guid, 'event_calendar_request', $event_id); + notify_user($user_guid, $CONFIG->site->guid, elgg_echo('event_calendar:add_users_notify:subject'), + sprintf( + elgg_echo('event_calendar:add_users_notify:body'), + $user->name, + $event->title, + $event->getURL() + ) + ); + system_message(elgg_echo('event_calendar:request_approved')); + + } +} else { + register_error(elgg_echo('event_calendar:review_requests_error')); +} + +forward($_SERVER['HTTP_REFERER']); diff --git a/actions/killrequest.php b/actions/killrequest.php new file mode 100644 index 000000000..66257230c --- /dev/null +++ b/actions/killrequest.php @@ -0,0 +1,23 @@ +<?php + + // Load configuration + global $CONFIG; + + gatekeeper(); + + $user_guid = get_input('user_guid', get_loggedin_userid()); + $event_id = get_input('event_id'); + + $user = get_entity($user_guid); + $event = get_entity($event_id); + + // If join request made + if (event_calendar_personal_can_manage($event,$user_guid) && check_entity_relationship($user->guid, 'event_calendar_request', $event->guid)) + { + remove_entity_relationship($user->guid, 'event_calendar_request', $event->guid); + system_message(elgg_echo('event_calendar:requestkilled')); + } + + forward($_SERVER['HTTP_REFERER']); + +?>
\ No newline at end of file diff --git a/actions/manage.php b/actions/manage.php new file mode 100644 index 000000000..5acf5c279 --- /dev/null +++ b/actions/manage.php @@ -0,0 +1,105 @@ +<?php + +/** + * Manage actions + * + * @package event_calendar + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Kevin Jardine <kevin@radagast.biz> + * @copyright Radagast Solutions 2008 + * @link http://radagast.biz/ + * + */ + +// Load RIBA event model +require_once(dirname(dirname(__FILE__)) . "/models/model.php"); + +gatekeeper(); + +$event_action = get_input('event_action',''); +if ($event_action == 'add_event' || $event_action == 'manage_event') { + $result = event_calendar_set_event_from_form(); + if ($result->success) { + if ($event_action == 'manage_event') { + add_to_river('river/object/event_calendar/update','update',$_SESSION['user']->guid,$result->event->guid); + system_message(elgg_echo('event_calendar:manage_event_response')); + } else { + $event_calendar_autopersonal = get_plugin_setting('autopersonal', 'event_calendar'); + if (!$event_calendar_autopersonal || ($event_calendar_autopersonal == 'yes')) { + event_calendar_add_personal_event($result->event->guid,$_SESSION['user']->guid); + } + add_to_river('river/object/event_calendar/create','create',$_SESSION['user']->guid,$result->event->guid); + system_message(elgg_echo('event_calendar:add_event_response')); + } + + forward($result->event->getURL()); + } else { + // redisplay form with error message + register_error(elgg_echo('event_calendar:manage_event_error')); + $group_guid = (int) get_input('group_guid',0); + + if ($result->form_data->event_id) { + $event = get_entity($result->form_data->event_id); + if (!$event) { + register_error(elgg_echo('event_calendar:no_such_event_edit_error')); + forward(); + } else { + set_page_owner($event->container_guid); + if (page_owner_entity() instanceof ElggGroup) { + set_context('groups'); + } + } + + $title = elgg_echo('event_calendar:manage_event_title'); + } else { + $title = elgg_echo('event_calendar:add_event_title'); + if ($group_guid && $group = get_entity($group_guid)) { + // redefine context + set_context('groups'); + set_page_owner($group_guid); + } + } + $body = elgg_view('event_calendar/forms/manage_event', array('event'=>$result->form_data,'event_id'=>$result->form_data->event_id,'group_guid'=>$group_guid)); + + page_draw($title,elgg_view_layout("two_column_left_sidebar", '', elgg_view_title($title) . $body)); + } +} else if ($event_action == 'delete_event') { + $event_id = get_input('event_id',0); + if (($event_id = get_input('event_id',0)) && ($event = get_entity($event_id)) && $event->canEdit()) { + if (get_input('cancel','')) { + system_message(elgg_echo('event_calendar:delete_cancel_response')); + forward($event->getUrl()); + } else { + $container = get_entity($event->container_guid); + $event->delete(); + system_message(elgg_echo('event_calendar:delete_response')); + forward($container->getUrl()); + } + } else { + register_error(elgg_echo('event_calendar:error_delete')); + } +} else if ($event_action == 'add_personal') { + $event_id = get_input('event_id',0); + if (($event_id = get_input('event_id',0)) && ($event = get_entity($event_id))) { + $user_id = $_SESSION['user']->getGUID(); + if (!event_calendar_has_personal_event($event_id,$user_id)) { + if (event_calendar_add_personal_event($event_id,$user_id)) { + system_message(elgg_echo('event_calendar:add_to_my_calendar_response')); + } else { + register_error(elgg_echo('event_calendar:add_to_my_calendar_error')); + } + forward($event->getUrl()); + } + } +} else if ($event_action == 'remove_personal') { + $event_id = get_input('event_id',0); + if (($event_id = get_input('event_id',0)) && ($event = get_entity($event_id))) { + event_calendar_remove_personal_event($event_id,$_SESSION['user']->getGUID()); + system_message(elgg_echo('event_calendar:remove_from_my_calendar_response')); + forward($event->getUrl()); + } +} + +forward(); + +?>
\ No newline at end of file diff --git a/actions/remove_from_group.php b/actions/remove_from_group.php new file mode 100644 index 000000000..4a7185245 --- /dev/null +++ b/actions/remove_from_group.php @@ -0,0 +1,8 @@ +<?php +$event_id = get_input("event_id",0); +$group_id = get_input("group_id",0); +$event = get_entity($event_id); +remove_entity_relationship($event_id, "display_on_group", $group_id ); +system_message(elgg_echo('event_calendar:remove_from_group:success')); +forward($event->getUrl()); +?>
\ No newline at end of file diff --git a/actions/request_personal_calendar.php b/actions/request_personal_calendar.php new file mode 100644 index 000000000..4160326a6 --- /dev/null +++ b/actions/request_personal_calendar.php @@ -0,0 +1,18 @@ +<?php +// asks the event owner to add you to the event +$event_id = get_input('event_id',0); +$user_id = get_loggedin_userid(); +$event = get_entity($event_id); +if ($event && ($event->getSubtype() == 'event_calendar')) { + if (event_calendar_send_event_request($event,$user_id)) { + system_message(elgg_echo('event_calendar:request_event_response')); + } else { + register_error(elgg_echo('event_calendar:request_event_error')); + } + + forward($event->getUrl()); + + exit; +} + +forward(); diff --git a/actions/toggle_personal_calendar.php b/actions/toggle_personal_calendar.php new file mode 100644 index 000000000..f36b5836f --- /dev/null +++ b/actions/toggle_personal_calendar.php @@ -0,0 +1,30 @@ +<?php +$event_id = get_input('event_id',0); +$user_id = get_input('user_id',get_loggedin_userid()); +$other = get_input('other',''); +$success = '@s@'; +$failure = '@f@'; +if ($other) { + $remove_response = elgg_echo('event_calendar:add_to_the_calendar'); + $add_response = elgg_echo('event_calendar:remove_from_the_calendar'); + $add_error = elgg_echo('event_calendar:add_to_the_calendar_error'); +} else { + $remove_response = $success.elgg_echo('event_calendar:remove_from_my_calendar_response'); + $add_response = $success.elgg_echo('event_calendar:add_to_my_calendar_response'); + $add_error = $failure.elgg_echo('event_calendar:add_to_my_calendar_error'); +} +// three character prefix to indicate success or failure + +if (event_calendar_has_personal_event($event_id,$user_id)) { + event_calendar_remove_personal_event($event_id,$user_id); + echo $remove_response; +} else { + if (event_calendar_add_personal_event($event_id,$user_id)) { + echo $success.$add_response; + } else { + echo $failure.$add_error; + } +} + +exit; +?>
\ No newline at end of file |