diff options
Diffstat (limited to 'mod/event_calendar/actions')
15 files changed, 335 insertions, 0 deletions
diff --git a/mod/event_calendar/actions/event_calendar/add_personal.php b/mod/event_calendar/actions/event_calendar/add_personal.php new file mode 100644 index 000000000..ed4eb3092 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/add_personal.php @@ -0,0 +1,17 @@ +<?php +elgg_load_library('elgg:event_calendar'); + +$event_guid = get_input('guid',0); +$event = get_entity($event_guid); +if (elgg_instanceof($event,'object','event_calendar')) { + $user_guid = elgg_get_logged_in_user_guid(); + if (!event_calendar_has_personal_event($event_guid,$user_guid)) { + if (event_calendar_add_personal_event($event_guid,$user_guid)) { + system_message(elgg_echo('event_calendar:add_to_my_calendar_response')); + } else { + register_error(elgg_echo('event_calendar:add_to_my_calendar_error')); + } + } +} + +forward(REFERER); diff --git a/mod/event_calendar/actions/event_calendar/add_to_group.php b/mod/event_calendar/actions/event_calendar/add_to_group.php new file mode 100644 index 000000000..b5eae4693 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/add_to_group.php @@ -0,0 +1,10 @@ +<?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()); diff --git a/mod/event_calendar/actions/event_calendar/add_to_group_members.php b/mod/event_calendar/actions/event_calendar/add_to_group_members.php new file mode 100644 index 000000000..d0d555b12 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/add_to_group_members.php @@ -0,0 +1,15 @@ +<?php +elgg_load_library('elgg:event_calendar'); +$event_guid = get_input("event_guid",0); +$event = get_entity($event_guid); +$group = get_entity($event->container_guid); +if (elgg_instanceof($group,'group') && elgg_instanceof($event,'object','event_calendar') && $group->canEdit()) { + $members = $group->getMembers(0,0); + foreach($members as $member) { + event_calendar_add_personal_event($event->guid,$member->guid); + } + system_message(elgg_echo('event_calendar:add_to_group_members:success')); +} else { + register_error(elgg_echo('event_calendar:add_to_group_members:error')); +} +forward("event_calendar/manage_users/$event_guid"); diff --git a/mod/event_calendar/actions/event_calendar/addtocalendar.php b/mod/event_calendar/actions/event_calendar/addtocalendar.php new file mode 100644 index 000000000..0144dfba1 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/addtocalendar.php @@ -0,0 +1,33 @@ +<?php +// this action allows an admin or event owner to approve a calendar request + +elgg_load_library('elgg:event_calendar'); + +$user_guid = get_input('user_guid', elgg_get_logged_in_user_guid()); +$event_guid = get_input('event_guid'); + +$user = get_entity($user_guid); +$event = get_entity($event_guid); + +if (elgg_instanceof($event, 'object', 'event_calendar') + && elgg_instanceof($user, 'user') + && $event->canEdit() + && check_entity_relationship($user_guid, 'event_calendar_request', $event_guid)) { + + if (event_calendar_add_personal_event($event_guid,$user_guid)) { + remove_entity_relationship($user_guid, 'event_calendar_request', $event_guid); + 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:approve')); +} + +forward(REFERER); diff --git a/mod/event_calendar/actions/event_calendar/delete.php b/mod/event_calendar/actions/event_calendar/delete.php new file mode 100644 index 000000000..dd8a7ef22 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/delete.php @@ -0,0 +1,21 @@ +<?php +$event_guid = get_input('guid',0); +$event = get_entity($event_guid); +if (elgg_instanceof($event,'object','event_calendar') && $event->canEdit()) { + if (get_input('cancel','')) { + system_message(elgg_echo('event_calendar:delete_cancel_response')); + } else { + $container = get_entity($event->container_guid); + $event->delete(); + system_message(elgg_echo('event_calendar:delete_response')); + if (elgg_instanceof($container,'group')) { + forward('event_calendar/group/'.$container->guid); + } else { + forward('event_calendar/list'); + } + } +} else { + register_error(elgg_echo('event_calendar:error_delete')); +} + +forward(REFERER);
\ No newline at end of file diff --git a/mod/event_calendar/actions/event_calendar/edit.php b/mod/event_calendar/actions/event_calendar/edit.php new file mode 100644 index 000000000..aef1a59cc --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/edit.php @@ -0,0 +1,55 @@ +<?php + +/** + * Edit action + * + * @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/ + * + */ + +elgg_load_library('elgg:event_calendar'); + +// start a new sticky form session in case of failure +elgg_make_sticky_form('event_calendar'); + +$event_guid = get_input('event_guid',0); +$group_guid = get_input('group_guid',0); +$event = event_calendar_set_event_from_form($event_guid,$group_guid); +if ($event) { + // remove sticky form entries + elgg_clear_sticky_form('event_calendar'); + $user_guid = elgg_get_logged_in_user_guid(); + if ($event_guid) { + add_to_river('river/object/event_calendar/update','update',$user_guid,$event_guid); + system_message(elgg_echo('event_calendar:manage_event_response')); + } else { + $event_calendar_autopersonal = elgg_get_plugin_setting('autopersonal', 'event_calendar'); + if (!$event_calendar_autopersonal || ($event_calendar_autopersonal == 'yes')) { + event_calendar_add_personal_event($event->guid,$user_guid); + } + add_to_river('river/object/event_calendar/create','create',$user_guid,$event->guid); + system_message(elgg_echo('event_calendar:add_event_response')); + } + + if ($event->schedule_type == 'poll') { + forward('event_poll/add/'.$event->guid); + } + + forward($event->getURL()); +} else { + // redisplay form with error message + register_error(elgg_echo('event_calendar:manage_event_error')); + if ($event_guid) { + forward('event_calendar/edit/'.$event_guid); + } else { + if ($group_guid) { + forward('event_calendar/add/'.$group_guid); + } else { + forward('event_calendar/add/'); + } + } +} diff --git a/mod/event_calendar/actions/event_calendar/join_conference.php b/mod/event_calendar/actions/event_calendar/join_conference.php new file mode 100644 index 000000000..9eb8f0da9 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/join_conference.php @@ -0,0 +1,20 @@ +<?php +// extended logic for BBB +elgg_load_library('elgg:event_calendar'); + +$event_guid = get_input('event_guid'); +$event = get_entity($event_guid); +if (elgg_instanceof($event,'object','event_calendar')) { + // make sure that the conference still exists, and if not, try recreating it + if (event_calendar_conference_exists($event)) { + event_calendar_join_conference($event); + } else if (event_calendar_create_bbb_conf($event)) { + event_calendar_join_conference($event); + } else { + register_error(elgg_echo('event_calendar:couldnotjoin')); + forward($event->getURL()); + } +} else { + register_error(elgg_echo('event_calendar:error_nosuchevent')); + forward('event_calendar/list'); +} diff --git a/mod/event_calendar/actions/event_calendar/killrequest.php b/mod/event_calendar/actions/event_calendar/killrequest.php new file mode 100644 index 000000000..f4f3c3135 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/killrequest.php @@ -0,0 +1,23 @@ +<?php +// this action allows an admin or event owner to reject a calendar request + +elgg_load_library('elgg:event_calendar'); + +$user_guid = get_input('user_guid', elgg_get_logged_in_user_guid()); +$event_guid = get_input('event_guid'); + +$user = get_entity($user_guid); +$event = get_entity($event_guid); + +if (elgg_instanceof($event, 'object', 'event_calendar') + && elgg_instanceof($user, 'user') + && $event->canEdit() + && 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')); +} else { + register_error(elgg_echo('event_calendar:review_requests:error:reject')); +} + +forward(REFERER); diff --git a/mod/event_calendar/actions/event_calendar/manage_subscribers.php b/mod/event_calendar/actions/event_calendar/manage_subscribers.php new file mode 100644 index 000000000..079c3628f --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/manage_subscribers.php @@ -0,0 +1,26 @@ +<?php +$event_guid = get_input('event_guid'); +$event = get_entity($event_guid); +$event_calendar_add_users = elgg_get_plugin_setting('add_users', 'event_calendar'); +if (($event_calendar_add_users == 'yes') && elgg_instanceof($event,'object','event_calendar') && $event->canEdit()) { + $members = get_input('members'); + // clear the event from all personal calendars + remove_entity_relationships($event_guid, 'personal_event', TRUE); + // add event to personal calendars + $event_calendar_add_users_notify = elgg_get_plugin_setting('add_users_notify', 'event_calendar'); + $site_guid = elgg_get_site_entity()->guid; + foreach ($members as $user_guid) { + add_entity_relationship($user_guid,'personal_event',$event_guid); + if ($event_calendar_add_users_notify == 'yes') { + $subject = elgg_echo('event_calendar:add_users_notify:subject'); + $user = get_user($user_guid); + $message = elgg_echo('event_calendar:add_users_notify:body',array($user->name,$event->title,$event->getURL())); + notify_user($user_guid, $site_guid, $subject, $message, NULL, 'email'); + } + } + system_message(elgg_echo('event_calendar:manage_subscribers:success')); + forward($event->getURL()); +} else { + register_error(elgg_echo('event_calendar:manage_subscribers:error')); + forward(); +} diff --git a/mod/event_calendar/actions/event_calendar/modify_full_calendar.php b/mod/event_calendar/actions/event_calendar/modify_full_calendar.php new file mode 100644 index 000000000..1e0bd3a01 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/modify_full_calendar.php @@ -0,0 +1,24 @@ +<?php +elgg_load_library('elgg:event_calendar'); +$event_guid = get_input('event_guid',0); +$day_delta = get_input('dayDelta'); +$minute_delta = get_input('minuteDelta',''); +$start_time = get_input('startTime',''); +$resend = get_input('resend',''); +$minutes = get_input('minutes'); +$iso_date = get_input('iso_date'); +$result = event_calendar_modify_full_calendar($event_guid,$day_delta,$minute_delta,$start_time,$resend,$minutes,$iso_date); +if ($result) { + $response = array('success'=>TRUE); + // special handling for event polls + if (is_array($result)) { + $response['minutes'] = $result['minutes']; + $response['iso_date'] = $result['iso_date']; + } +} else { + $response = array('success'=>FALSE, 'message' =>elgg_echo('event_calendar:modify_full_calendar:error')); +} + +echo json_encode($response); + +exit; diff --git a/mod/event_calendar/actions/event_calendar/remove_from_group.php b/mod/event_calendar/actions/event_calendar/remove_from_group.php new file mode 100644 index 000000000..4a7185245 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/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/mod/event_calendar/actions/event_calendar/remove_from_group_members.php b/mod/event_calendar/actions/event_calendar/remove_from_group_members.php new file mode 100644 index 000000000..a15b66c97 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/remove_from_group_members.php @@ -0,0 +1,15 @@ +<?php +elgg_load_library('elgg:event_calendar'); +$event_guid = get_input("event_guid",0); +$event = get_entity($event_guid); +$group = get_entity($event->container_guid); +if (elgg_instanceof($group,'group') && elgg_instanceof($event,'object','event_calendar') && $group->canEdit()) { + $members = $group->getMembers(0,0); + foreach($members as $member) { + event_calendar_remove_personal_event($event->guid,$member->guid); + } + system_message(elgg_echo('event_calendar:remove_from_group_members:success')); +} else { + register_error(elgg_echo('event_calendar:remove_from_group_members:error')); +} +forward("event_calendar/manage_users/$event_guid"); diff --git a/mod/event_calendar/actions/event_calendar/remove_personal.php b/mod/event_calendar/actions/event_calendar/remove_personal.php new file mode 100644 index 000000000..1308b17e9 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/remove_personal.php @@ -0,0 +1,12 @@ +<?php +elgg_load_library('elgg:event_calendar'); + +$event_guid = get_input('guid',0); +$event = get_entity($event_guid); +if (elgg_instanceof($event,'object','event_calendar')) { + $user_guid = elgg_get_logged_in_user_guid(); + event_calendar_remove_personal_event($event_guid,$user_guid); + system_message(elgg_echo('event_calendar:remove_from_my_calendar_response')); +} + +forward(REFERER); diff --git a/mod/event_calendar/actions/event_calendar/request_personal_calendar.php b/mod/event_calendar/actions/event_calendar/request_personal_calendar.php new file mode 100644 index 000000000..68c96e364 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/request_personal_calendar.php @@ -0,0 +1,16 @@ +<?php +// asks the event owner to add you to the event +elgg_load_library('elgg:event_calendar'); + +$event_guid = get_input('guid',0); +$user_guid = elgg_get_logged_in_user_guid(); +$event = get_entity($event_guid); +if (elgg_instanceof($event,'object','event_calendar')) { + if (event_calendar_send_event_request($event,$user_guid)) { + system_message(elgg_echo('event_calendar:request_event_response')); + } else { + register_error(elgg_echo('event_calendar:request_event_error')); + } +} + +forward(REFERER); diff --git a/mod/event_calendar/actions/event_calendar/toggle_personal_calendar.php b/mod/event_calendar/actions/event_calendar/toggle_personal_calendar.php new file mode 100644 index 000000000..8eb20e6b9 --- /dev/null +++ b/mod/event_calendar/actions/event_calendar/toggle_personal_calendar.php @@ -0,0 +1,40 @@ +<?php +elgg_load_library('elgg:event_calendar'); +$event_guid = get_input('event_guid',0); +$user_guid = get_input('user_guid',elgg_get_logged_in_user_guid()); +$other = get_input('other',''); +if ($other) { + $remove_response = elgg_echo('event_calendar:added_to_the_calendar'); + $add_response = elgg_echo('event_calendar:removed_from_the_calendar'); + $add_error = elgg_echo('event_calendar:add_to_the_calendar_error'); +} else { + $remove_response = elgg_echo('event_calendar:remove_from_my_calendar_response'); + $add_response = elgg_echo('event_calendar:add_to_my_calendar_response'); + $add_error = elgg_echo('event_calendar:add_to_my_calendar_error'); +} + +if (event_calendar_has_personal_event($event_guid,$user_guid)) { + $button_text = elgg_echo('event_calendar:add_to_the_calendar'); + event_calendar_remove_personal_event($event_guid,$user_guid); + $response = array('success'=>TRUE, 'message' => $remove_response, 'button_text'=>$button_text); +} else { + if (event_calendar_add_personal_event($event_guid,$user_guid)) { + $event_calendar_add_users_notify = elgg_get_plugin_setting('add_users_notify', 'event_calendar'); + if ($event_calendar_add_users_notify == 'yes') { + $subject = elgg_echo('event_calendar:add_users_notify:subject'); + $user = get_user($user_guid); + $event = get_entity($event_guid); + $site_guid = elgg_get_site_entity()->guid; + $message = elgg_echo('event_calendar:add_users_notify:body',array($user->name,$event->title,$event->getURL())); + notify_user($user_guid, $site_guid, $subject, $message, NULL, 'email'); + } + $button_text = elgg_echo('event_calendar:remove_from_the_calendar_button'); + $response = array('success'=>TRUE, 'message' => $add_response, 'button_text'=>$button_text); + } else { + $response = array('success'=>FALSE, 'message' =>$add_error); + } +} + +echo json_encode($response); + +exit; |