aboutsummaryrefslogtreecommitdiff
path: root/mod/profile/start.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/profile/start.php')
-rw-r--r--mod/profile/start.php174
1 files changed, 32 insertions, 142 deletions
diff --git a/mod/profile/start.php b/mod/profile/start.php
index eb34bf748..bd5fb5fe3 100644
--- a/mod/profile/start.php
+++ b/mod/profile/start.php
@@ -5,6 +5,8 @@
* @package ElggProfile
*/
+elgg_register_event_handler('init', 'system', 'profile_init', 1);
+
/**
* Profile init function; sets up the profile functions
*
@@ -12,16 +14,10 @@
function profile_init() {
global $CONFIG;
- require_once 'profile_lib.php';
-
// Register a URL handler for users - this means that profile_url()
// will dictate the URL for all ElggUser objects
register_entity_url_handler('profile_url', 'user', 'all');
- //if (isloggedin()) {
- // add_menu(elgg_echo('profile:yours'), get_loggedin_user()->getURL() . '/extend');
- //}
-
// Metadata on users needs to be independent
register_metadata_as_independent('user');
@@ -42,69 +38,17 @@ function profile_init() {
elgg_extend_view('css/screen', 'profile/css');
elgg_extend_view('js/elgg', 'profile/javascript');
- // Now override icons
- elgg_register_plugin_hook_handler('entity:icon:url', 'user', 'profile_usericon_hook');
+ // Register actions
+ elgg_register_action("profile/addcomment", $CONFIG->pluginspath . "profile/actions/addcomment.php");
+ elgg_register_action("profile/deletecomment", $CONFIG->pluginspath . "profile/actions/deletecomment.php");
+ elgg_register_event_handler('profileupdate', 'all', 'object_notifications');
+
// allow ECML in parts of the profile
elgg_register_plugin_hook_handler('get_views', 'ecml', 'profile_ecml_views_hook');
}
/**
- * This function loads a set of default fields into the profile, then triggers a hook letting other plugins to edit
- * add and delete fields.
- *
- * Note: This is a secondary system:init call and is run at a super low priority to guarantee that it is called after all
- * other plugins have initialised.
- */
-function profile_fields_setup() {
- global $CONFIG;
-
- $profile_defaults = array (
- 'description' => 'longtext',
- 'briefdescription' => 'text',
- 'location' => 'tags',
- 'interests' => 'tags',
- 'skills' => 'tags',
- 'contactemail' => 'email',
- 'phone' => 'text',
- 'mobile' => 'text',
- 'website' => 'url',
- 'twitter' => 'text'
- );
-
- $loaded_default = array();
- if ($fieldlist = get_plugin_setting('user_defined_fields','profile')) {
- if (!empty($fieldlist)) {
- $fieldlistarray = explode(',',$fieldlist);
- $loaded_defaults = array();
- foreach($fieldlistarray as $listitem) {
- if ($translation = get_plugin_setting("admin_defined_profile_{$listitem}", 'profile')) {
- $type = get_plugin_setting("admin_defined_profile_type_{$listitem}", 'profile');
- $loaded_defaults["admin_defined_profile_{$listitem}"] = $type;
- add_translation(get_current_language(), array("profile:admin_defined_profile_{$listitem}" => $translation));
- }
- }
- }
- }
-
- if (count($loaded_defaults)) {
- $CONFIG->profile_using_custom = true;
- $profile_defaults = $loaded_defaults;
- }
-
- $CONFIG->profile = elgg_trigger_plugin_hook('profile:fields', 'profile', NULL, $profile_defaults);
-
- // register any tag metadata names
- foreach ($CONFIG->profile as $name => $type) {
- if ($type == 'tags') {
- elgg_register_tag_metadata_name($name);
- // register a tag name translation
- add_translation(get_current_language(), array("tag_names:$name" => elgg_echo("profile:$name")));
- }
- }
-}
-
-/**
* Profile page handler
*
* @param array $page Array of page elements, forwarded by the page handling mechanism
@@ -112,62 +56,69 @@ function profile_fields_setup() {
function profile_page_handler($page) {
global $CONFIG;
- $action = NULL;
-
- // short circuit if invalid or banned username
if (isset($page[0])) {
$username = $page[0];
$user = get_user_by_username($username);
- set_input('username', $page[0]);
+ elgg_set_page_owner_guid($user->guid);
}
+ // short circuit if invalid or banned username
if (!$user || ($user->isBanned() && !isadminloggedin())) {
register_error(elgg_echo('profile:notfound'));
forward();
}
+ $action = NULL;
if (isset($page[1])) {
$action = $page[1];
}
switch ($action) {
case 'edit':
+ // use for the core profile edit page
require $CONFIG->path . 'pages/profile/edit.php';
return;
break;
default:
- $layout = 'one_column';
if (isset($page[1])) {
$section = $page[1];
} else {
$section = 'activity';
}
$content = profile_get_user_profile_html($user, $section);
- $content = elgg_view_layout($layout, array('content' => $content));
+ $content = elgg_view_layout('one_column', array('content' => $content));
break;
}
echo elgg_view_page($title, $content);
- return;
}
/**
- * Pagesetup function
+ * Returns the html for a user profile.
+ *
+ * @param string $username The username of the profile to display
+ * @param string $section Which section is currently selected.
*
+ * @todo - This should really use a plugin hook to get the list of plugin tabs
+ *
+ * @return mixed FALSE or html for the profile.
*/
-function profile_pagesetup()
-{
- global $CONFIG;
+function profile_get_user_profile_html($user, $section = 'activity') {
+ $body = elgg_view('profile/profile_navigation', array('section' => $section, 'entity' => $user));
+ $view_options = array('entity' => $user);
- //add submenu options
- if (elgg_get_context() == "profile") {
- $page_owner = elgg_get_page_owner();
- if ($page_owner && $page_owner->canEdit()) {
- add_submenu_item(elgg_echo('profile:editdetails'), "pg/profile/{$page_owner->username}/edit/details");
- add_submenu_item(elgg_echo('profile:editicon'), "pg/profile/{$page_owner->username}/edit/icon");
- }
+ if ($section == 'commentwall') {
+ $comments = $user->getAnnotations('commentwall', 200, 0, 'desc');
+ $view_options['comments'] = $comments;
}
+
+ $content = elgg_view("profile/profile_contents/$section", $view_options);
+
+ $body .= elgg_view('profile/profile_content', array('content' => $content));
+
+ $body .= elgg_view('profile/sidebar', array('section' => $section));
+ return $body;
}
/**
@@ -209,46 +160,6 @@ function profile_url($user) {
}
/**
- * This hooks into the getIcon API and provides nice user icons for users where possible.
- *
- * @param unknown_type $hook
- * @param unknown_type $entity_type
- * @param unknown_type $returnvalue
- * @param unknown_type $params
- * @return unknown
- */
-function profile_usericon_hook($hook, $entity_type, $returnvalue, $params){
- global $CONFIG;
- if ((!$returnvalue) && ($hook == 'entity:icon:url') && ($params['entity'] instanceof ElggUser)){
- $entity = $params['entity'];
- $type = $entity->type;
- $subtype = get_subtype_from_id($entity->subtype);
- $viewtype = $params['viewtype'];
- $size = $params['size'];
- $username = $entity->username;
-
- if ($icontime = $entity->icontime) {
- $icontime = "{$icontime}";
- } else {
- $icontime = "default";
- }
-
- if ($entity->isBanned()) {
- return elgg_view('icon/user/default/'.$size);
- }
-
- $filehandler = new ElggFile();
- $filehandler->owner_guid = $entity->getGUID();
- $filehandler->setFilename("profile/" . $entity->guid . $size . ".jpg");
-
- if ($filehandler->exists()) {
- //$url = "pg/icon/$username/$size/$icontime.jpg";
- return 'mod/profile/icondirect.php?lastcache='.$icontime.'&joindate=' . $entity->time_created . '&guid=' . $entity->guid . '&size='.$size;
- }
- }
-}
-
-/**
* Parse ECML on parts of the profile
*
* @param unknown_type $hook
@@ -261,24 +172,3 @@ function profile_ecml_views_hook($hook, $entity_type, $return_value, $params) {
return $return_value;
}
-
-// Make sure the profile initialisation function is called on initialisation
-elgg_register_event_handler('init','system','profile_init',1);
-elgg_register_event_handler('init','system','profile_fields_setup', 10000); // Ensure this runs after other plugins
-
-elgg_register_event_handler('pagesetup','system','profile_pagesetup');
-elgg_register_event_handler('profileupdate','all','object_notifications');
-
-
-// Register actions
-global $CONFIG;
-elgg_register_action("profile/edit", $CONFIG->pluginspath . "profile/actions/edit.php");
-elgg_register_action("profile/iconupload", $CONFIG->pluginspath . "profile/actions/iconupload.php");
-elgg_register_action("profile/cropicon", $CONFIG->pluginspath . "profile/actions/cropicon.php");
-elgg_register_action("profile/editdefault", $CONFIG->pluginspath . "profile/actions/editdefault.php", 'admin');
-elgg_register_action("profile/editdefault/delete", $CONFIG->pluginspath . "profile/actions/deletedefaultprofileitem.php", 'admin');
-elgg_register_action("profile/editdefault/reset", $CONFIG->pluginspath . "profile/actions/resetdefaultprofile.php", 'admin');
-elgg_register_action("profile/editdefault/reorder", $CONFIG->pluginspath . "profile/actions/reorder.php", 'admin');
-elgg_register_action("profile/editdefault/editfield", $CONFIG->pluginspath . "profile/actions/editfield.php", 'admin');
-elgg_register_action("profile/addcomment", $CONFIG->pluginspath . "profile/actions/addcomment.php");
-elgg_register_action("profile/deletecomment", $CONFIG->pluginspath . "profile/actions/deletecomment.php");