guid == elgg_get_logged_in_user_guid()) { $credentials = array( 'username' => $user->username, 'password' => $current_password ); if (!pam_auth_userpass($credentials)) { register_error(elgg_echo('user:password:fail:incorrect_current_password')); return false; } } if (strlen($password) >= 4) { if ($password == $password2) { $user->salt = generate_random_cleartext_password(); // Reset the salt $user->password = generate_user_password($user, $password); if ($user->save()) { system_message(elgg_echo('user:password:success')); return true; } else { register_error(elgg_echo('user:password:fail')); } } else { register_error(elgg_echo('user:password:fail:notsame')); } } else { register_error(elgg_echo('user:password:fail:tooshort')); } } else { // no change return null; } return false; } /** * Set a user's display name * * @return bool * @since 1.8.0 */ function elgg_set_user_name() { $name = strip_tags(get_input('name')); $user_id = get_input('guid'); if (!$user_id) { $user = elgg_get_logged_in_user_entity(); } else { $user = get_entity($user_id); } if (elgg_strlen($name) > 50) { register_error(elgg_echo('user:name:fail')); return false; } if (($user) && ($user->canEdit()) && ($name)) { if ($name != $user->name) { $user->name = $name; if ($user->save()) { system_message(elgg_echo('user:name:success')); return true; } else { register_error(elgg_echo('user:name:fail')); } } else { // no change return null; } } else { register_error(elgg_echo('user:name:fail')); } return false; } /** * Set a user's language * * @return bool * @since 1.8.0 */ function elgg_set_user_language() { $language = get_input('language'); $user_id = get_input('guid'); if (!$user_id) { $user = elgg_get_logged_in_user_entity(); } else { $user = get_entity($user_id); } if (($user) && ($language)) { if (strcmp($language, $user->language) != 0) { $user->language = $language; if ($user->save()) { system_message(elgg_echo('user:language:success')); return true; } else { register_error(elgg_echo('user:language:fail')); } } else { // no change return null; } } else { register_error(elgg_echo('user:language:fail')); } return false; } /** * Set a user's email address * * @return bool * @since 1.8.0 */ function elgg_set_user_email() { $email = get_input('email'); $user_id = get_input('guid'); if (!$user_id) { $user = elgg_get_logged_in_user_entity(); } else { $user = get_entity($user_id); } if (!is_email_address($email)) { register_error(elgg_echo('email:save:fail')); return false; } if ($user) { if (strcmp($email, $user->email) != 0) { if (!get_user_by_email($email)) { if ($user->email != $email) { $user->email = $email; if ($user->save()) { system_message(elgg_echo('email:save:success')); return true; } else { register_error(elgg_echo('email:save:fail')); } } } else { register_error(elgg_echo('registration:dupeemail')); } } else { // no change return null; } } else { register_error(elgg_echo('email:save:fail')); } return false; } /** * Set a user's default access level * * @return bool * @since 1.8.0 */ function elgg_set_user_default_access() { if (!elgg_get_config('allow_user_default_access')) { return false; } $default_access = get_input('default_access'); $user_id = get_input('guid'); if (!$user_id) { $user = elgg_get_logged_in_user_entity(); } else { $user = get_entity($user_id); } if ($user) { $current_default_access = $user->getPrivateSetting('elgg_default_access'); if ($default_access !== $current_default_access) { if ($user->setPrivateSetting('elgg_default_access', $default_access)) { system_message(elgg_echo('user:default_access:success')); return true; } else { register_error(elgg_echo('user:default_access:fail')); } } else { // no change return null; } } else { register_error(elgg_echo('user:default_access:fail')); } return false; } /** * Set up the menu for user settings * * @return void */ function usersettings_pagesetup() { if (elgg_get_context() == "settings" && elgg_get_logged_in_user_guid()) { $user = elgg_get_logged_in_user_entity(); $params = array( 'name' => '1_account', 'title' => elgg_echo('usersettings:user:opt:linktext'), 'url' => "pg/settings/user/{$user->username}", ); elgg_register_menu_item('page', $params); $params = array( 'name' => '1_plugins', 'title' => elgg_echo('usersettings:plugins:opt:linktext'), 'url' => "pg/settings/plugins/{$user->username}", ); elgg_register_menu_item('page', $params); $params = array( 'name' => '1_statistics', 'title' => elgg_echo('usersettings:statistics:opt:linktext'), 'url' => "pg/settings/statistics/{$user->username}", ); elgg_register_menu_item('page', $params); } } /** * Page handler for user settings * * @param array $page Pages array * * @return void */ function usersettings_page_handler($page) { global $CONFIG; if (!isset($page[0])) { $page[0] = 'user'; } switch ($page[0]) { case 'statistics': $path = $CONFIG->path . "pages/settings/statistics.php"; break; case 'plugins': $path = $CONFIG->path . "pages/settings/tools.php"; break; case 'user': default: $path = $CONFIG->path . "pages/settings/account.php"; break; } if ($page[1]) { $user = get_user_by_username($page[1]); elgg_set_page_owner_guid($user->guid); } else { elgg_set_page_owner_guid(elgg_get_logged_in_user_guid()); } require($path); } /** * Initialize the user settings library * * @return void */ function usersettings_init() { register_page_handler('settings', 'usersettings_page_handler'); elgg_register_plugin_hook_handler('usersettings:save', 'user', 'users_settings_save'); elgg_register_action("usersettings/save"); } /// Register init function elgg_register_event_handler('init', 'system', 'usersettings_init'); elgg_register_event_handler('pagesetup', 'system', 'usersettings_pagesetup');