diff options
Diffstat (limited to 'mod/landing/start.php')
-rw-r--r-- | mod/landing/start.php | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/mod/landing/start.php b/mod/landing/start.php new file mode 100644 index 000000000..05ccac9fb --- /dev/null +++ b/mod/landing/start.php @@ -0,0 +1,78 @@ +<?php +/** + * Landing Page Plugin for Elgg 1.8 + * + * @author: hellekin <hellekin@lorea.org> + * @copyright: 2012 Lorea Faeries <federation@lorea.org> + * @license: GNU Affero General Public License version 3 or later + * @package: ElggLanding + */ + +elgg_register_event_handler('init', 'system', 'landing_init'); + +function landing_init() { + // Register Tests + elgg_register_plugin_hook_handler('unit_test', 'system', 'landing_test'); + + // Register CSS + elgg_extend_view('css', 'landing/css'); + + // Register Login Event Handler + elgg_register_event_handler('login', 'user', 'landing_login_handler'); + +} + +/** + * Test the plugin + */ +function landing_test($hook, $type, $value, $params) { + $value[] = 'landing/test/landing_test.php'; + return $value; +} + +/** + * Redirect user to chosen landing page upon login + */ +function landing_login_handler($event, $type, $user) { + global $forward_url; + + if (empty($forward_url)) { + $forward_url = landing_page_url(); + } + + return NULL; +} + +function landing_page_url() { + + $user = elgg_get_logged_in_user_entity(); + if (!($user instanceof ElggUser)) { + return ''; + } + + $mode = get_plugin_usersetting('landing_mode', $user->guid, 'landing'); + + switch($mode) { + case 'profile': + if (elgg_is_active_plugin('profile')) { + $forward_url = "/profile/{$user->username}"; + } else { + $forward_url = "/view/{$user->guid}"; + } + break; + case 'custom': + $forward_url = get_plugin_usersetting('landing_url', $user->guid, 'landing'); + break; + case 'dashboard': + if (elgg_is_active_plugin('dashboard')) { + $forward_url = '/dashboard'; + break; + } + case 'default': + default: + $forward_url = ''; + break; + } + + return $forward_url; +} |