示例#1
0
/**
 * Dispatches event calendar pages.
 *
 * URLs take the form of
 *  Site event calendar:			event_calendar/list/<start_date>/<display_mode>/<filter_context>/<region>
 *  Single event:       			event_calendar/view/<event_guid>/<title>
 *  New event:        				event_calendar/add
 *  Edit event:       				event_calendar/edit/<event_guid>
 *  Group event calendar:  			event_calendar/group/<group_guid>/<start_date>/<display_mode>/<filter_context>/<region>
 *  Add group event:   				event_calendar/add/<group_guid>
 *  Review requests:				event_calendar/review_requests/<event_guid>
 *  Display event subscribers:		event_calendar/display_users/<event_guid>
 *  Events for a user's calendar:	event_calendar/owner/<username>/<start_date>/<display_mode>/<filter_context>/<region>
 *
 * Title is ignored
 *
 * @param array $page
 * @return NULL
 */
function event_calendar_page_handler($page)
{
    elgg_load_library('elgg:event_calendar');
    $page_type = $page[0];
    switch ($page_type) {
        case 'list':
            if (isset($page[1])) {
                $start_date = $page[1];
                if (isset($page[2])) {
                    $display_mode = $page[2];
                    if (isset($page[3])) {
                        $filter_mode = $page[3];
                        if (isset($page[4])) {
                            $region = $page[4];
                        } else {
                            $region = '';
                        }
                    } else {
                        $filter_mode = '';
                    }
                } else {
                    $display_mode = '';
                }
            } else {
                $start_date = 0;
            }
            echo event_calendar_get_page_content_list($page_type, 0, $start_date, $display_mode, $filter_mode, $region);
            break;
        case 'view':
            echo event_calendar_get_page_content_view($page[1]);
            break;
        case 'view_light_box':
            echo event_calendar_get_page_content_view($page[1], TRUE);
            break;
        case 'display_users':
            echo event_calendar_get_page_content_display_users($page[1]);
            break;
        case 'manage_users':
            echo event_calendar_get_page_content_manage_users($page[1]);
            break;
        case 'schedule':
        case 'add':
            if (isset($page[1])) {
                group_gatekeeper();
                $group_guid = $page[1];
            } else {
                gatekeeper();
                $group_guid = 0;
            }
            echo event_calendar_get_page_content_edit($page_type, $group_guid, $page[2]);
            break;
        case 'edit':
            gatekeeper();
            echo event_calendar_get_page_content_edit($page_type, $page[1]);
            break;
        case 'group':
            group_gatekeeper();
            if (isset($page[1])) {
                $group_guid = $page[1];
                if (isset($page[2])) {
                    $start_date = $page[2];
                    if (isset($page[3])) {
                        $display_mode = $page[3];
                        if (isset($page[4])) {
                            $filter_mode = $page[4];
                            if (isset($page[5])) {
                                $region = $page[5];
                            } else {
                                $region = '';
                            }
                        } else {
                            $filter_mode = '';
                        }
                    } else {
                        $display_mode = '';
                    }
                } else {
                    $start_date = '';
                }
            } else {
                $group_guid = 0;
            }
            echo event_calendar_get_page_content_list($page_type, $group_guid, $start_date, $display_mode, $filter_mode, $region);
            break;
        case 'owner':
            if (isset($page[1])) {
                $username = $page[1];
                $user = get_user_by_username($username);
                $user_guid = $user->guid;
                if (isset($page[2])) {
                    $start_date = $page[2];
                    if (isset($page[3])) {
                        $display_mode = $page[3];
                        if (isset($page[4])) {
                            $filter_mode = $page[4];
                            if (isset($page[5])) {
                                $region = $page[5];
                            } else {
                                $region = '';
                            }
                        } else {
                            $filter_mode = '';
                        }
                    } else {
                        $display_mode = '';
                    }
                } else {
                    $start_date = '';
                }
            } else {
                $group_guid = 0;
            }
            echo event_calendar_get_page_content_list($page_type, $user_guid, $start_date, $display_mode, $filter_mode, $region);
            break;
        case 'review_requests':
            gatekeeper();
            echo event_calendar_get_page_content_review_requests($page[1]);
            break;
        case 'get_fullcalendar_events':
            echo event_calendar_get_page_content_fullcalendar_events($page[1], $page[2], $page[3], $page[4]);
            break;
        default:
            return FALSE;
    }
    return TRUE;
}
示例#2
0
/**
 * Dispatches event calendar pages.
 *
 * URLs take the form of
 *  Site event calendar:			event_calendar/list/<start_date>/<display_mode>/<filter_context>/<region>
 *  Single event:       			event_calendar/view/<event_guid>/<title>
 *  New event:        				event_calendar/add
 *  Edit event:       				event_calendar/edit/<event_guid>
 *  Group event calendar:  			event_calendar/group/<group_guid>/<start_date>/<display_mode>/<filter_context>/<region>
 *  Add group event:   				event_calendar/add/<group_guid>
 *  Review requests:				event_calendar/review_requests/<event_guid>
 *  Display event subscribers:		event_calendar/display_users/<event_guid>
 *  Events for a user's calendar:	event_calendar/owner/<username>/<start_date>/<display_mode>/<filter_context>/<region>
 *
 * Title is ignored
 *
 * @param array $page
 * @return null
 */
function event_calendar_page_handler($page)
{
    if (elgg_get_plugin_setting('ical_import_export', 'event_calendar') == "yes") {
        set_input('ical_calendar_title_menu', true);
    }
    elgg_load_library('elgg:event_calendar');
    $page_type = $page[0];
    switch ($page_type) {
        case 'list':
            if (isset($page[1])) {
                $start_date = $page[1];
                set_input('ical_date', $page[1]);
                if (isset($page[2])) {
                    $display_mode = $page[2];
                    set_input('ical_interval', $page[2]);
                    if (isset($page[3])) {
                        $filter_mode = $page[3];
                        switch ($page[3]) {
                            case 'mine':
                                set_input('ical_calendar_filter', 'mine');
                                break;
                            case 'friends':
                                set_input('ical_calendar_filter', 'friends');
                                break;
                            default:
                                set_input('ical_calendar_filter', 'all');
                                break;
                        }
                        if (isset($page[4])) {
                            $region = $page[4];
                            set_input('ical_region', $page[4]);
                        } else {
                            $region = '';
                            set_input('ical_region', '');
                        }
                    } else {
                        $filter_mode = '';
                        set_input('ical_calendar_filter', 'all');
                    }
                } else {
                    $display_mode = '';
                    set_input('ical_interval', '');
                }
            } else {
                $start_date = 0;
                set_input('ical_date', 0);
            }
            echo event_calendar_get_page_content_list($page_type, 0, $start_date, $display_mode, $filter_mode, $region);
            break;
        case 'view':
            echo event_calendar_get_page_content_view($page[1]);
            break;
        case 'display_users':
            echo event_calendar_get_page_content_display_users($page[1]);
            break;
        case 'manage_users':
            echo event_calendar_get_page_content_manage_users($page[1]);
            break;
        case 'schedule':
        case 'add':
            if (isset($page[1])) {
                group_gatekeeper();
                $group_guid = $page[1];
            } else {
                gatekeeper();
                $group_guid = 0;
            }
            echo event_calendar_get_page_content_edit($page_type, $group_guid, $page[2]);
            break;
        case 'edit':
            gatekeeper();
            echo event_calendar_get_page_content_edit($page_type, $page[1]);
            break;
        case 'group':
            group_gatekeeper();
            if (isset($page[1])) {
                $group_guid = $page[1];
                set_input('ical_group_guid', $page[1]);
                if (isset($page[2])) {
                    $start_date = $page[2];
                    set_input('ical_date', $page[2]);
                    if (isset($page[3])) {
                        $display_mode = $page[3];
                        set_input('ical_interval', $page[3]);
                        if (isset($page[4])) {
                            $filter_mode = $page[4];
                            switch ($page[4]) {
                                case 'mine':
                                    set_input('ical_calendar_filter', 'mine');
                                    break;
                                case 'friends':
                                    set_input('ical_calendar_filter', 'friends');
                                    break;
                                default:
                                    set_input('ical_calendar_filter', 'all');
                                    break;
                            }
                            if (isset($page[5])) {
                                $region = $page[5];
                                set_input('ical_region', $page[5]);
                            } else {
                                $region = '';
                                set_input('ical_region', '');
                            }
                        } else {
                            $filter_mode = '';
                            set_input('ical_calendar_filter', 'all');
                        }
                    } else {
                        $display_mode = '';
                        set_input('ical_interval', '');
                    }
                } else {
                    $start_date = '';
                    set_input('ical_date', 0);
                }
            } else {
                $group_guid = 0;
                set_input('ical_group_guid', 0);
            }
            echo event_calendar_get_page_content_list($page_type, $group_guid, $start_date, $display_mode, $filter_mode, $region);
            break;
        case 'owner':
            if (isset($page[1])) {
                $username = $page[1];
                $user = get_user_by_username($username);
                $user_guid = $user->guid;
                if (isset($page[2])) {
                    $start_date = $page[2];
                    if (isset($page[3])) {
                        $display_mode = $page[3];
                        if (isset($page[4])) {
                            $filter_mode = $page[4];
                            if (isset($page[5])) {
                                $region = $page[5];
                            } else {
                                $region = '';
                            }
                        } else {
                            $filter_mode = '';
                        }
                    } else {
                        $display_mode = '';
                    }
                } else {
                    $start_date = '';
                }
            } else {
                $group_guid = 0;
            }
            echo event_calendar_get_page_content_list($page_type, $user_guid, $start_date, $display_mode, $filter_mode, $region);
            break;
        case 'review_requests':
            gatekeeper();
            echo event_calendar_get_page_content_review_requests($page[1]);
            break;
        case 'get_fullcalendar_events':
            echo event_calendar_get_page_content_fullcalendar_events($page[1], $page[2], $page[3], $page[4], $page[5]);
            break;
        case 'ical':
            $resource_vars['action_type'] = $page[1];
            echo elgg_view_resource('event_calendar/export', $resource_vars);
            break;
        default:
            return false;
    }
    return true;
}