Beispiel #1
0
/**
 * Serves pages for twitter.
 *
 * @param array $page
 * @return bool
 */
function twitter_api_pagehandler($page)
{
    if (!isset($page[0])) {
        return false;
    }
    switch ($page[0]) {
        case 'authorize':
            twitter_api_authorize();
            break;
        case 'revoke':
            twitter_api_revoke();
            break;
        case 'forward':
            twitter_api_forward();
            break;
        case 'login':
            twitter_api_login();
            break;
        case 'interstitial':
            elgg_gatekeeper();
            // only let twitter users do this.
            $guid = elgg_get_logged_in_user_guid();
            $twitter_name = elgg_get_plugin_user_setting('twitter_name', $guid, 'twitter_api');
            if (!$twitter_name) {
                register_error(elgg_echo('twitter_api:invalid_page'));
                forward();
            }
            echo elgg_view_resource('twitter_api/interstitial');
            break;
        default:
            return false;
    }
    return true;
}
Beispiel #2
0
/**
 * Profile page handler
 *
 * @param array $page Array of URL segments passed by the page handling mechanism
 * @return bool
 */
function profile_page_handler($page)
{
    if (isset($page[0])) {
        $username = $page[0];
        $user = get_user_by_username($username);
        elgg_set_page_owner_guid($user->guid);
    } elseif (elgg_is_logged_in()) {
        forward(elgg_get_logged_in_user_entity()->getURL());
    }
    // short circuit if invalid or banned username
    if (!$user || $user->isBanned() && !elgg_is_admin_logged_in()) {
        register_error(elgg_echo('profile:notfound'));
        forward();
    }
    $action = NULL;
    if (isset($page[1])) {
        $action = $page[1];
    }
    if ($action == 'edit') {
        // use the core profile edit page
        echo elgg_view_resource('profile/edit');
        return true;
    }
    echo elgg_view_resource('profile/view', ['username' => $page[0]]);
    return true;
}
Beispiel #3
0
/**
 * Messageboard dispatcher for flat message board.
 * Profile (and eventually group) widgets handle their own.
 *
 * URLs take the form of
 *  User's messageboard:               messageboard/owner/<username>
 *  Y's history of posts on X's board: messageboard/owner/<X>/history/<Y>
 *  New post:                          messageboard/add/<guid> (container: user or group)
 *  Group messageboard:                messageboard/group/<guid>/all (not implemented)
 *
 * @param array $page Array of page elements
 * @return bool
 */
function messageboard_page_handler($page)
{
    $vars = [];
    switch ($page[0]) {
        case 'owner':
            //@todo if they have the widget disabled, don't allow this.
            $owner_name = elgg_extract(1, $page);
            $owner = get_user_by_username($owner_name);
            $vars['page_owner_guid'] = $owner->guid;
            $history = elgg_extract(2, $page);
            $username = elgg_extract(3, $page);
            if ($history && $username) {
                $vars['history_username'] = $username;
            }
            echo elgg_view_resource('messageboard/owner', $vars);
            break;
        case 'group':
            elgg_group_gatekeeper();
            $owner_guid = elgg_extract(1, $page);
            $vars['page_owner_guid'] = $owner_guid;
            echo elgg_view_resource('messageboard/owner', $vars);
            break;
        default:
            return false;
    }
    return true;
}
Beispiel #4
0
/**
 * Route page requests
 *
 * @param array $page Array of url parameters
 * @return bool
 */
function notifications_page_handler($page)
{
    elgg_gatekeeper();
    $current_user = elgg_get_logged_in_user_entity();
    // default to personal notifications
    if (!isset($page[0])) {
        $page[0] = 'personal';
    }
    if (!isset($page[1])) {
        forward("notifications/{$page[0]}/{$current_user->username}");
    }
    set_input('username', $page[1]);
    // note: $user passed in
    switch ($page[0]) {
        case 'group':
            echo elgg_view_resource('notifications/groups');
            break;
        case 'personal':
            echo elgg_view_resource('notifications/index');
            break;
        default:
            return false;
    }
    return true;
}
Beispiel #5
0
/**
 * Messageboard dispatcher for flat message board.
 * Profile (and eventually group) widgets handle their own.
 *
 * URLs take the form of
 *  User's messageboard:               messageboard/owner/<username>
 *  Y's history of posts on X's board: messageboard/owner/<X>/history/<Y>
 *  New post:                          messageboard/add/<guid> (container: user or group)
 *  Group messageboard:                messageboard/group/<guid>/all (not implemented)
 *
 * @param array $page Array of page elements
 * @return bool
 */
function messageboard_page_handler($page)
{
    switch ($page[0]) {
        case 'owner':
            //@todo if they have the widget disabled, don't allow this.
            $owner_name = elgg_extract(1, $page);
            $owner = get_user_by_username($owner_name);
            set_input('page_owner_guid', $owner->guid);
            $history = elgg_extract(2, $page);
            $username = elgg_extract(3, $page);
            if ($history && $username) {
                set_input('history_username', $username);
            }
            echo elgg_view_resource('messageboard/owner');
            break;
        case 'add':
            $container_guid = elgg_extract(1, $page);
            set_input('container_guid', $container_guid);
            echo elgg_view_resource('messageboard/add');
            break;
        case 'group':
            elgg_group_gatekeeper();
            $owner_guid = elgg_extract(1, $page);
            set_input('page_owner_guid', $owner_guid);
            echo elgg_view_resource('messageboard/owner');
            break;
        default:
            return false;
    }
    return true;
}
/**
 * User settings page handler
 *
 * @param array $segments URL segments
 * @return bool
 */
function user_settings_page_handler($segments)
{
    elgg_gatekeeper();
    $page = array_shift($segments);
    $username = array_shift($segments);
    if (!$page) {
        $page = 'user';
    }
    if (!$username) {
        $user = elgg_get_logged_in_user_entity();
    } else {
        $user = get_user_by_username($username);
    }
    if (!$user) {
        forward('', '404');
    }
    if (!$user->canEdit()) {
        forward('', '403');
    }
    elgg_set_page_owner_guid($user->guid);
    $resource = elgg_view_resource("settings/{$page}", array('username' => $user->username, 'entity' => $user, 'segments' => $segments));
    if ($resource) {
        echo $resource;
        return true;
    }
    return false;
}
Beispiel #7
0
 /**
  * Listen to the blog page handler, to takeover some pages
  *
  * @param string $hook         'route'
  * @param string $type         'blog'
  * @param array  $return_value the current page_handler params
  * @param null   $params       null
  *
  * @return void|false
  */
 public static function blog($hook, $type, $return_value, $params)
 {
     $page = elgg_extract('segments', $return_value);
     if (empty($page)) {
         return;
     }
     $include_file = false;
     $resouce_loaded = false;
     $pages_path = elgg_get_plugins_path() . 'blog_tools/pages/';
     switch ($page[0]) {
         case 'read':
             // Elgg 1.7 compatibility
         // Elgg 1.7 compatibility
         case 'view':
             set_input('guid', $page[1]);
             // to be used in the blog_tools/full/related view
             break;
         case 'featured':
             $resouce_loaded = true;
             echo elgg_view_resource('blog_tools/blog/featured');
             break;
     }
     if (!empty($resouce_loaded)) {
         return false;
     } elseif (!empty($include_file)) {
         include $include_file;
         return false;
     }
 }
Beispiel #8
0
 /**
  * Handle /file_tools URLs
  *
  * @param array $page URL segments
  *
  * @return bool
  */
 public static function fileTools($page)
 {
     switch (elgg_extract(0, $page)) {
         case 'list':
             elgg_ajax_gatekeeper();
             $params = [];
             elgg_set_page_owner_guid(elgg_extract(1, $page));
             $folder_guid = get_input('folder_guid', false);
             if ($folder_guid !== false) {
                 $params['folder_guid'] = (int) $folder_guid;
                 $params['draw_page'] = false;
             }
             if (isset($page[2])) {
                 $params['folder_guid'] = (int) $page[2];
             }
             echo elgg_view_resource('file_tools/file/list', $params);
             return true;
             break;
         case 'folder':
             switch (elgg_extract(1, $page)) {
                 case 'new':
                     elgg_set_page_owner_guid(elgg_extract(2, $page));
                     echo elgg_view_resource('file_tools/folder/new');
                     return true;
                     break;
                 case 'edit':
                     $params = ['folder_guid' => (int) elgg_extract(2, $page)];
                     echo elgg_view_resource('file_tools/folder/edit', $params);
                     return true;
                     break;
             }
             break;
     }
     return false;
 }
/**
 * Route editor pages
 * 
 * @param string $hook   "route"
 * @param string $type   "notifications"
 * @param array  $return Segments and identifier
 * @param array  $params Hook params
 * @return array|false
 */
function notifications_editor_router($hook, $type, $return, $params)
{
    $identifier = elgg_extract('identifier', $return);
    $segments = elgg_extract('segments', $return);
    if ($identifier == 'notifications' && $segments[0] == 'editor') {
        echo elgg_view_resource('notifications/editor', $return);
        return false;
    }
}
Beispiel #10
0
/**
 * SEO page handler
 * /seo/edit
 * 
 * @param array $segments URL segments
 * @return bool
 */
function seo_page_handler($segments)
{
    $page = array_shift($segments);
    switch ($page) {
        case 'edit':
            echo elgg_view_resource('seo/edit');
            return true;
    }
    return false;
}
Beispiel #11
0
function page_handler(array $segments, $base)
{
    switch ($segments[0]) {
        case 'hello':
            echo elgg_view_resource('react/hello');
            return true;
        default:
            return false;
    }
}
Beispiel #12
0
/**
 * Inits the plugin
 *
 * @return void
 */
function target_blank_init()
{
    elgg_require_js('target_blank/target_blank');
    // this cached view uses PHP to provide settings from database to javascript
    elgg_register_simplecache_view('js/target_blank/settings.js');
    elgg_register_action('target_blank/settings/save', dirname(__FILE__) . '/actions/settings/save.php', 'admin');
    elgg_register_page_handler('target_blank', function () {
        echo elgg_view_resource('target_blank/test');
    });
}
Beispiel #13
0
/**
 * Entity tools page handler
 *
 * @param array $page url parts
 *
 * @return true|void
 */
function entity_tools_page_handler($page)
{
    $supported = array_keys(entity_tools_get_supported_entity_types());
    $subtype = elgg_extract(2, $page, $supported[0]);
    switch ($page[0]) {
        case 'owner':
        case 'group':
            echo elgg_view_resource('entity_tools/list', ['subtype' => $subtype]);
            return true;
    }
}
Beispiel #14
0
/**
 * Reported content page handler
 *
 * Serves the add report page
 *
 * @param array $page Array of page routing elements
 * @return bool
 */
function reportedcontent_page_handler($page)
{
    // only logged in users can report things
    elgg_gatekeeper();
    if (elgg_extract(0, $page) === 'add' && elgg_is_xhr()) {
        echo elgg_view_resource('reportedcontent/add_form');
        return true;
    }
    echo elgg_view_resource('reportedcontent/add');
    return true;
}
Beispiel #15
0
/**
 * Page handler for search
 *
 * @param array $page Page elements from core page handler
 * @return bool
 */
function search_page_handler($page)
{
    // if there is no q set, we're being called from a legacy installation
    // it expects a search by tags.
    // actually it doesn't, but maybe it should.
    // maintain backward compatibility
    if (!get_input('q', get_input('tag', NULL))) {
        set_input('q', $page[0]);
        //set_input('search_type', 'tags');
    }
    echo elgg_view_resource('search/index');
    return true;
}
Beispiel #16
0
/**
 * Feedback page handler
 * /feedback/all
 * /feedback/submit
 *
 * @param array $segments URL segments
 * @return bool
 */
function feedback_page_handler($segments)
{
    $page = array_shift($segments);
    switch ($page) {
        case 'all':
            echo elgg_view_resource('feedback/all');
            return true;
        case 'submit':
            echo elgg_view_resource('feedback/submit');
            return true;
    }
    return false;
}
/**
 * Entity media page handler
 *
 * @param array  $segments   URL segments
 * @param string $identifier Page identifier
 * @return bool
 */
function elgg_media_page_handler($segments, $identifier)
{
    $guid = array_shift($segments);
    $section = array_shift($segments);
    switch ($section) {
        case 'edit':
        case 'upload':
        case 'crop':
            $type = array_shift($segments) ?: 'icon';
            echo elgg_view_resource('media/edit', ['entity' => get_entity($guid), 'type' => $type]);
            break;
    }
    return false;
}
 /**
  * Handle /friend_request pages
  *
  * @param array $page the url segments
  *
  * @return bool
  */
 public static function friendRequest($page)
 {
     if (isset($page[0])) {
         $username = $page[0];
     } else {
         $user = elgg_get_logged_in_user_entity();
         $username = $user->username;
     }
     if (!$username) {
         return false;
     }
     echo elgg_view_resource('friend_request', array('username' => $username));
     return true;
 }
Beispiel #19
0
/**
 * Page handler
 *
 * /site_notifications/view/<username>
 *
 * @param array $segments URL segments
 * @return boolean
 */
function site_notifications_page_handler($segments)
{
    elgg_gatekeeper();
    if (!isset($segments[1])) {
        $segments[1] = elgg_get_logged_in_user_entity()->username;
    }
    $user = get_user_by_username($segments[1]);
    if (!$user) {
        return false;
    }
    elgg_set_page_owner_guid($user->guid);
    echo elgg_view_resource('site_notifications/view');
    return true;
}
Beispiel #20
0
/**
 *
 */
function h5p_page_handler($page)
{
    switch ($page[0]) {
        case 'add':
            echo elgg_view_resource('h5p/save', array('guid' => $page[1], 'action' => $page[0]));
            break;
        case 'view':
            echo elgg_view_resource('h5p/view', array('guid' => $page[1]));
            break;
        default:
            echo elgg_view_resource('h5p/all');
            break;
    }
}
Beispiel #21
0
 /**
  * Handle all /answers URLs
  *
  * @param array $page URL segments
  *
  * @return bool
  */
 public static function answers($page)
 {
     elgg_push_breadcrumb(elgg_echo('questions'), 'questions/all');
     $params = [];
     switch (elgg_extract(0, $page)) {
         case 'edit':
             $params['guid'] = (int) elgg_extract(1, $page);
             echo elgg_view_resource('answers/edit', $params);
             break;
         default:
             forward('questions/all');
             return false;
     }
     return true;
 }
/**
 * Serves registration URLs as created by the registration_randomizer_login_menu() callback
 *
 * /register/:ts/:token Where :token is the token and :ts is the current timestamp.
 *
 * @param array $page
 */
function registration_randomizer_page_handler($page)
{
    // tarpit if the wrong token + ts combo
    $ts = elgg_extract(0, $page);
    $token = elgg_extract(1, $page);
    if (!registration_randomizer_is_valid_token($token, $ts)) {
        registration_randomizer_log("Invalid token for registration page");
        forward('/', 404);
    } else {
        echo elgg_view_resource('account/register');
        return true;
    }
    registration_randomizer_log("No token for registration page");
    forward('/', 404);
}
Beispiel #23
0
 /**
  * Extends thewire pagehandler with some extra pages
  *
  * @param string $hook_name   'route'
  * @param string $entity_type 'thewire'
  * @param bool   $return      the default return value
  * @param array  $params      supplied params
  *
  * @return bool
  */
 public static function thewire($hook_name, $entity_type, $return, $params)
 {
     $page = elgg_extract('segments', $return);
     if (!isset($page[0])) {
         $page = ['all'];
     }
     switch ($page[0]) {
         case 'all':
         case 'owner':
             set_input('limit', get_input('limit', elgg_get_config('default_limit')));
             return;
         case 'group':
             if (!empty($page[1])) {
                 set_input('group_guid', $page[1]);
                 // @todo is this still needed or replace with page_owner in page
                 if (!empty($page[2])) {
                     set_input('wire_username', $page[2]);
                     // @todo is this still needed?
                 }
                 echo elgg_view_resource('thewire/group');
                 return false;
             }
         case 'tag':
         case 'search':
             if (isset($page[1])) {
                 if ($page[0] == 'tag') {
                     set_input('query', '#' . $page[1]);
                 } else {
                     set_input('query', $page[1]);
                 }
             }
             echo elgg_view_resource('thewire/search');
             return false;
         case 'autocomplete':
             echo elgg_view_resource('thewire/autocomplete');
             return false;
         case 'thread':
             elgg_push_context('thewire_thread');
         case 'reply':
             if (!empty($page[1])) {
                 $entity = get_entity($page[1]);
                 if (!empty($entity) && elgg_instanceof($entity->getContainerEntity(), 'group')) {
                     elgg_set_page_owner_guid($entity->getContainerGUID());
                 }
             }
             break;
     }
 }
Beispiel #24
0
/**
 * Handles the ckeditor pages
 *
 * @param array $page requested page
 *
 * @return boolean
 */
function ckeditor_extended_page_handler($page)
{
    switch ($page[0]) {
        case 'upload':
            echo elgg_view_resource('ckeditor_extended/upload', ['CKEditorFuncNum' => get_input('CKEditorFuncNum')]);
            return true;
        case 'browse':
            echo elgg_view_resource('ckeditor_extended/browse', ['CKEditorFuncNum' => get_input('CKEditorFuncNum')]);
            return true;
        case 'download':
            set_input('user_guid', $page[1]);
            set_input('file_name', $page[2]);
            include dirname(__FILE__) . '/pages/download.php';
            return true;
    }
}
Beispiel #25
0
/**
 * Page handler for generic comments manipulation.
 *
 * @param array $segments
 * @return bool
 * @access private
 */
function _elgg_comments_page_handler($segments)
{
    $page = elgg_extract(0, $segments);
    switch ($page) {
        case 'edit':
            echo elgg_view_resource('comments/edit', ['guid' => elgg_extract(1, $segments)]);
            return true;
            break;
        case 'view':
            _elgg_comment_redirect(elgg_extract(1, $segments), elgg_extract(2, $segments));
            break;
        default:
            return false;
            break;
    }
}
Beispiel #26
0
 /**
  * Handles scraper pages
  *
  * @param array $segments URL segments
  * @return bool
  */
 public static function serveScraperPages($segments)
 {
     $url = get_input('url');
     if (!elgg_is_logged_in()) {
         $m = get_input('m');
         if (!$m || !elgg_build_hmac($url)->matchesToken($m)) {
             return false;
         }
     }
     $viewtype = array_shift($segments);
     if (!$viewtype || !elgg_is_registered_viewtype($viewtype)) {
         $viewtype = 'default';
     }
     elgg_set_viewtype($viewtype);
     echo elgg_view_resource('scraper/card', ['href' => $url, 'iframe' => get_input('iframe', false)]);
     return true;
 }
Beispiel #27
0
function celebrations_page_handler($page)
{
    if (!isset($page[0])) {
        return false;
    }
    $resource_vars = array();
    switch ($page[0]) {
        case "celebrations":
            $resource_vars['month'] = elgg_extract(1, $page, date("n"));
            $resource_vars['filterid'] = elgg_extract(2, $page, 0);
            echo elgg_view_resource('celebrations/celebrations', $resource_vars);
            break;
        default:
            return false;
    }
    return true;
}
Beispiel #28
0
/**
 * Page handler for activity
 *
 * @param array $segments URL segments
 * @return \Elgg\Http\ResponseBuilder
 * @access private
 */
function elgg_activity_page_handler($segments)
{
    elgg_set_page_owner_guid(elgg_get_logged_in_user_guid());
    // make a URL segment available in page handler script
    $page_type = elgg_extract(0, $segments, 'all');
    $page_type = preg_replace('[\\W]', '', $page_type);
    if ($page_type == 'owner') {
        elgg_gatekeeper();
        $page_username = elgg_extract(1, $segments, '');
        if ($page_username == elgg_get_logged_in_user_entity()->username) {
            $page_type = 'mine';
        } else {
            $vars['subject_username'] = $page_username;
        }
    }
    $vars['page_type'] = $page_type;
    return elgg_ok_response(elgg_view_resource("river", $vars));
}
Beispiel #29
0
/**
 * Messages page handler
 *
 * @param array $page Array of URL components for routing
 * @return bool
 */
function messages_page_handler($page)
{
    $current_user = elgg_get_logged_in_user_entity();
    if (!$current_user) {
        register_error(elgg_echo('noaccess'));
        elgg_get_session()->set('last_forward_from', current_page_url());
        forward('');
    }
    elgg_load_library('elgg:messages');
    elgg_push_breadcrumb(elgg_echo('messages'), 'messages/inbox/' . $current_user->username);
    if (!isset($page[0])) {
        $page[0] = 'inbox';
    }
    // Support the old inbox url /messages/<username>, but only if it matches the logged in user.
    // Otherwise having a username like "read" on the system could confuse this function.
    if ($current_user->username === $page[0]) {
        $page[1] = $page[0];
        $page[0] = 'inbox';
    }
    if (!isset($page[1])) {
        $page[1] = $current_user->username;
    }
    switch ($page[0]) {
        case 'inbox':
            set_input('username', $page[1]);
            echo elgg_view_resource('messages/inbox');
            break;
        case 'sent':
            set_input('username', $page[1]);
            echo elgg_view_resource('messages/sent');
            break;
        case 'read':
            set_input('guid', $page[1]);
            echo elgg_view_resource('messages/read');
            break;
        case 'compose':
        case 'add':
            echo elgg_view_resource('messages/send');
            break;
        default:
            return false;
    }
    return true;
}
Beispiel #30
0
 /**
  * Handle /wizard_step
  *
  * @param array $page url elements
  *
  * @return bool
  */
 public static function wizardStep($page)
 {
     $resource_loaded = false;
     switch ($page[0]) {
         case 'add':
             if (!empty($page[1]) && is_numeric($page[1])) {
                 echo elgg_view_resource('wizard_step/add', ['container_guid' => $page[1]]);
                 $resource_loaded = true;
             }
             break;
         case 'edit':
             if (!empty($page[1]) && is_numeric($page[1])) {
                 echo elgg_view_resource('wizard_step/edit', ['guid' => $page[1]]);
                 $resource_loaded = true;
             }
             break;
     }
     return $resource_loaded;
 }