function publication_login_check($event, $object_type, $object) { $user = get_loggedin_user(); if ($user->firstpublication && $user->exauthor_name) { $exauthor_name = $user->exauthor_name; $pub = get_entity($user->firstpublication); add_entity_relationship($user->firstpublication, 'author', $user->guid); remove_metadata($user->guid, 'firstpublication'); remove_metadata($user->guid, 'exauthor_name'); $authors = $pub->authors; $authors = explode(',', $authors); foreach ($authors as $key => $value) { if ($value == $exauthor_name) { $authors[$key] = $user->guid; } } $authors = implode(',', $authors); $pub->authors = $authors; } }
$blog->description = $body; // Now let's add tags. We can pass an array directly to the object property! Easy. if (is_array($tagarray)) { $blog->tags = $tagarray; } //whether the user wants to allow comments or not on the blog post $blog->comments_on = $comments_on; // Now save the object if (!$blog->save()) { register_error(elgg_echo("blog:error")); forward($_SERVER['HTTP_REFERER']); } // Success message system_message(elgg_echo("blog:posted")); // add to river add_to_river('river/object/blog/create', 'create', get_loggedin_userid(), $blog->guid); // Remove the blog post cache //unset($_SESSION['blogtitle']); unset($_SESSION['blogbody']); unset($_SESSION['blogtags']); remove_metadata($_SESSION['user']->guid, 'blogtitle'); remove_metadata($_SESSION['user']->guid, 'blogbody'); remove_metadata($_SESSION['user']->guid, 'blogtags'); // Forward to the main blog page $page_owner = get_entity($blog->container_guid); if ($page_owner instanceof ElggUser) { $username = $page_owner->username; } else { if ($page_owner instanceof ElggGroup) { $username = "******" . $page_owner->guid; } } forward("pg/blog/{$username}");
function subsite_manager_set_missing_subsite_profile_fields($user_guid = 0) { $result = false; $accesslevel = get_input('accesslevel'); elgg_make_sticky_form("subsite_missing_profile_fields"); if (empty($user_guid)) { $user_guid = elgg_get_logged_in_user_guid(); } if (!empty($user_guid) && ($user = get_user($user_guid))) { $form_vars = elgg_get_sticky_values("subsite_missing_profile_fields"); $profile_fields = array(); // filter the input foreach ($form_vars as $key => $value) { if (strpos($key, "custom_profile_fields_") === 0) { $key = substr($key, 22); $profile_fields[$key] = $value; } } if (!empty($profile_fields)) { foreach ($profile_fields as $key => $value) { remove_metadata($user->getGUID(), $key); if (!empty($value)) { if ($accesslevel && array_key_exists($key, $accesslevel)) { $access_id = $accesslevel[$key]; } else { $access_id = get_default_access($user); } if (is_array($value)) { foreach ($value as $index => $v) { $multiple = false; if ($index > 0) { $multiple = true; } create_metadata($user->getGUID(), $key, $v, "text", $user->getGUID(), $access_id, $multiple); } } else { create_metadata($user->getGUID(), $key, $value, "text", $user->getGUID(), $access_id); } } } // in javascript we trust ;) $result = true; } else { $result = true; } } return $result; }
if (elgg_strlen($name) > 50) { register_error(elgg_echo('user:name:fail')); } else { $profile_owner->name = $name; // @todo this is weird...giving two notifications? if ($profile_owner->save()) { system_message(elgg_echo('user:name:success')); } else { register_error(elgg_echo('user:name:fail')); } } } // go through custom fields if (sizeof($input) > 0) { foreach ($input as $shortname => $value) { remove_metadata($profile_owner->guid, $shortname); if (isset($accesslevel[$shortname])) { $access_id = (int) $accesslevel[$shortname]; } else { // this should never be executed since the access level should always be set $access_id = ACCESS_DEFAULT; } if (is_array($value)) { $i = 0; foreach ($value as $interval) { $i++; $multiple = $i > 1 ? TRUE : FALSE; create_metadata($profile_owner->guid, $shortname, $interval, 'text', $profile_owner->guid, $access_id, $multiple); } } else { create_metadata($profile_owner->getGUID(), $shortname, $value, 'text', $profile_owner->getGUID(), $access_id);
/** * Used to create user with facebook data * * @access public * @param array $fbData facebook data of user * @return void */ function facebook_connect_create_update_user($fbData) { elgg_load_library('facebook'); // need facebook account credentials // backward compatibility for stalled-development FBConnect plugin $user = FALSE; $facebook_users = elgg_get_entities_from_metadata(array('type' => 'user', 'metadata_name_value_pairs' => array('name' => 'facebook_uid', 'value' => $fbData['user_profile']['id']))); if (is_array($facebook_users) && count($facebook_users) == 1) { // convert existing account $user = $facebook_users[0]; // remove unused metadata remove_metadata($user->getGUID(), 'facebook_uid'); remove_metadata($user->getGUID(), 'facebook_controlled_profile'); } // create new user if (!$user) { // check new registration allowed if (!facebook_connect_allow_new_users_with_facebook()) { register_error(elgg_echo('registerdisabled')); forward(); } $email = $fbData['user_profile']['email']; $users = get_user_by_email($email); if (!$users) { // Elgg-ify facebook credentials if (!empty($fbData['user_profile']['username'])) { $username = $fbData['user_profile']['username']; } else { $username = str_replace(' ', '', strtolower($fbData['user_profile']['name'])); } $usernameTmp = $username; while (get_user_by_username($username)) { $username = $usernameTmp . '_' . rand(1000, 9999); } $password = generate_random_cleartext_password(); $name = $fbData['user_profile']['name']; $user = new ElggUser(); $user->username = $username; $user->name = $name; $user->email = $email; $user->access_id = ACCESS_PUBLIC; $user->salt = generate_random_cleartext_password(); $user->password = generate_user_password($user, $password); $user->owner_guid = 0; $user->container_guid = 0; $user->last_action = date("Y-m-d"); $user->last_login = date("Y-m-d"); $user->validated = 1; $user->validated_method = 'facebook'; $user->language = 'en'; if (!$user->save()) { register_error(elgg_echo('registerbad')); forward(); } else { // send mail to user send_user_password_mail($email, $name, $username, $password); // post status on facebook if (facebook_connect_allow_post_on_facebook()) { facebook_connect_post_status($fbData); } // pull in facebook icon $url = 'https://graph.facebook.com/' . $fbData['user_profile']['id'] . '/picture?type=large'; facebook_connect_update_user_avatar($user, $url); } } else { $user = $users[0]; } } // set facebook services tokens elgg_set_plugin_user_setting('uid', $fbData['user_profile']['id'], $user->guid); elgg_set_plugin_user_setting('access_token', $fbData['user_profile']['accessToken'], $user->guid); return $user; }
$enabled_plugin_options["guids"] = array($subsite->getGUID()); $old_enabled_plugins = elgg_get_metadata($enabled_plugin_options); if (!empty($old_enabled_plugins)) { $old_enabled_plugins = metadata_array_to_values($old_enabled_plugins); $old_enabled_plugins = array_unique($old_enabled_plugins); foreach ($old_enabled_plugins as $plugin_id) { if ($plugin = elgg_get_plugin_from_id($plugin_id)) { if (!check_entity_relationship($plugin->getGUID(), 'active_plugin', $subsite->getGUID())) { add_entity_relationship($plugin->getGUID(), 'active_plugin', $subsite->getGUID()); } } } } // remove old metadata remove_metadata($subsite->getGUID(), 'pluginorder'); remove_metadata($subsite->getGUID(), 'enabled_plugins'); elgg_set_config("site", $site); elgg_set_config("site_guid", $old_site_guid); datalist_set("plugins_done_" . $subsite->getGUID(), true); if ($subsites_done == 10) { forward("upgrade.php"); } $subsites_done++; } } // cleanup datalist $query = "DELETE FROM " . elgg_get_config("dbprefix") . "datalists"; $query .= " WHERE name LIKE 'plugins_done_%'"; delete_data($query); access_show_hidden_entities($hidden); }
$input[$shortname] = string_to_tag_array($input[$shortname]); } } // Save stuff if we can, and forward to the user's profile if ($user = page_owner()) { $user = page_owner_entity(); } else { $user = $_SESSION['user']; set_page_owner($user->getGUID()); } if ($user->canEdit()) { // Save stuff if (sizeof($input) > 0) { foreach ($input as $shortname => $value) { //$user->$shortname = $value; remove_metadata($user->guid, $shortname); if (isset($accesslevel[$shortname])) { $access_id = (int) $accesslevel[$shortname]; } else { // this should never be executed since the access level should always be set $access_id = ACCESS_PRIVATE; } if (is_array($value)) { $i = 0; foreach ($value as $interval) { $i++; if ($i == 1) { $multiple = false; } else { $multiple = true; }
function form_set_data($entity, $data) { global $CONFIG; $entity_guid = $entity->getGUID(); foreach ($data as $name => $item) { // look for magic names first remove_metadata($entity_guid, $name); $value = $item->value; if (is_array($value)) { // currently tags and checkbox groups are the only field types returning multiple values $i = 0; foreach ($value as $interval) { $i++; if ($i == 1) { $multiple = false; } else { $multiple = true; } create_metadata($entity_guid, $name, $interval, 'text', $entity_guid, $item->access_id, $multiple); } } else { create_metadata($entity_guid, $name, $value, '', $entity_guid, $item->access_id); } } }
$publication->clearRelationships(); if (is_array($pauthors) && sizeof($pauthors) > 0) { foreach ($pauthors as $author) { if (is_int($author)) { add_entity_relationship($publication->getGUID(), 'author', $author); } } } $pauthors = implode(',', $pauthors); $publication->authors = $pauthors; $publication->attachment = $attachment; system_message(elgg_echo("publication:posted")); add_to_river('river/object/publication/create', 'create', $_SESSION['user']->guid, $publication->guid); remove_metadata($_SESSION['user']->guid, 'publicationtitle'); remove_metadata($_SESSION['user']->guid, 'publicationabstract'); remove_metadata($_SESSION['user']->guid, 'publicationkeywords'); remove_metadata($_SESSION['user']->guid, 'publicationauthors'); remove_metadata($_SESSION['user']->guid, 'publicationexauthors'); remove_metadata($_SESSION['user']->guid, 'publicationuri'); remove_metadata($_SESSION['user']->guid, 'publicationsource'); remove_metadata($_SESSION['user']->guid, 'publicationyear'); $page_owner = get_entity($publication->container_guid); if ($page_owner instanceof ElggUser) { $username = $page_owner->username; } else { if ($page_owner instanceof ElggGroup) { $username = "******" . $page_owner->guid; } } forward("pg/publications/{$username}"); }
foreach ($plugins as $plugin) { $priority = elgg_namespace_plugin_private_setting('internal', 'priority'); set_private_setting($plugin->guid, $priority, 0); } // force regenerating plugin entities elgg_generate_plugin_entities(); // set the priorities for all plugins // this function rewrites it to a normal index so use the current one. elgg_set_plugin_priorities($old_plugin_order); // add relationships for enabled plugins if ($old_enabled_plugins) { // they might only have one plugin enabled. if (!is_array($old_enabled_plugins)) { $old_enabled_plugins = array($old_enabled_plugins); } // sometimes there were problems and you'd get 1000s of enabled plugins. $old_enabled_plugins = array_unique($old_enabled_plugins); foreach ($old_enabled_plugins as $plugin_id) { $plugin = elgg_get_plugin_from_id($plugin_id); if ($plugin) { $plugin->activate(); } } } // invalidate caches elgg_invalidate_simplecache(); elgg_filepath_cache_reset(); // clean up. remove_metadata($site->guid, 'pluginorder'); remove_metadata($site->guid, 'enabled_plugins'); elgg_set_ignore_access($old_id);
/** * Clear metadata. */ public function clearMetaData($name = "") { if (empty($name)) { return clear_metadata($this->getGUID()); } else { return remove_metadata($this->getGUID(), $name); } }
$admin = $admin[0]; } if (!$CONFIG->disable_registration) { // For now, just try and register the user try { if (trim($password) != "" && strcmp($password, $password2) == 0 && ($guid = register_user($username, $password, $name, $email, false, $friend_guid, $invitecode))) { $new_user = get_entity($guid); // if (($guid) && ($admin)) // { // admin_gatekeeper(); // Only admins can make someone an admin $new_user->issimpleuser = "******"; $new_user->admin = 'yes'; // } //added by Giacomo Fazio: delete when the Elgg database is not used for users anymore////// //it saves the new user as "user" remove_metadata($guid, "custom_profile_type"); create_metadata($guid, "custom_profile_type", 355, 'text', $guid, ACCESS_PUBLIC); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Send user validation request on register only global $registering_admin; if (!$registering_admin) { request_user_validation($guid); } //if (!$new_user->admin) //$new_user->disable('new_user', false); // Now disable if not an admin // Don't do a recursive disable. Any entities owned by the user at this point // are products of plugins that system_message(sprintf(elgg_echo("registerok") . ".Please log in.", $CONFIG->sitename)); forward(); // Forward on success, assume everything else is an error... } else {
/** * Log in a user with facebook. */ function facebook_connect_login() { global $CONFIG; elgg_load_library('facebook'); // sanity check if (!facebook_connect_allow_sign_on_with_facebook()) { forward(); } $facebook = facebookservice_api(); $access_token = $facebook->getAccessToken(); // Get User ID $userID = $facebook->getUser(); if ($userID) { try { // Proceed knowing you have a logged in user who's authenticated. $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $userID = null; register_error(elgg_echo('facebook_connect:login:error')); forward(); } } else { system_message(elgg_echo('loginerror')); forward(); } // attempt to find user and log them in. // else, create a new user. $options = array('type' => 'user', 'plugin_user_setting_name_value_pairs' => array('uid' => $userID, 'access_token' => $access_token), 'plugin_user_setting_name_value_pairs_operator' => 'OR', 'limit' => 0); $users = elgg_get_entities_from_plugin_user_settings($options); if (!empty($users)) { if (count($users) == 1 && login($users[0])) { system_message(elgg_echo('facebook_connect:login:success')); elgg_set_plugin_user_setting('access_token', $access_token, $users[0]->guid); if (empty($users[0]->email)) { $data = $facebook->api('/me'); $email = $data['email']; $user = get_entity($users[0]->guid); $user->email = $email; $user->save(); } } else { system_message(elgg_echo('facebook_connect:login:error')); } forward(); } else { // need facebook account credentials $data = $facebook->api('/me'); // backward compatibility for stalled-development FBConnect plugin $user = FALSE; $facebook_users = elgg_get_entities_from_metadata(array('type' => 'user', 'metadata_name_value_pairs' => array('name' => 'facebook_uid', 'value' => $userID))); if (is_array($facebook_users) && count($facebook_users) == 1) { // convert existing account $user = $facebook_users[0]; login($user); // remove unused metadata remove_metadata($user->getGUID(), 'facebook_uid'); remove_metadata($user->getGUID(), 'facebook_controlled_profile'); } // create new user if (!$user) { // check new registration allowed if (!facebook_connect_allow_new_users_with_facebook()) { register_error(elgg_echo('registerdisabled')); forward(); } $userSave = 0; $email = $data['email']; $users = get_user_by_email($email); if (!$users) { // Elgg-ify facebook credentials $username = str_replace(' ', '', strtolower($data['name'])); while (get_user_by_username($username)) { $username = str_replace(' ', '', strtolower($data['name'])) . '_' . rand(1000, 9999); } $permissions = $facebook->api("/me/permissions"); if (array_key_exists('publish_stream', $permissions['data'][0])) { $postWall = true; } else { $postWall = false; } $password = generate_random_cleartext_password(); $name = $data['name']; $user = new ElggUser(); $user->username = $username; $user->name = $name; $user->email = $email; $user->location = $data['locate']; $user->website = $data['link']; $user->access_id = ACCESS_PUBLIC; $user->salt = generate_random_cleartext_password(); $user->password = generate_user_password($user, $password); $user->owner_guid = 0; $user->container_guid = 0; if ($postWall) { $user->post_wall = true; } $userSave = 1; } else { $user = $users[0]; } $site = elgg_get_site_entity(); if ($postWall) { $message = $user->name . ' just synchronized Facebook account with ' . $site->name; $params = array('link' => elgg_get_site_url(), 'message' => $message, 'picture' => elgg_get_site_url() . '_graphics/elgg_logo.png', 'description' => $site->name . ' is the social network for connecting people.'); $status = $facebook->api('/me/feed', 'POST', $params); } if ($userSave) { $userGuid = $user->save(); if (!$userGuid) { register_error(elgg_echo('registerbad')); forward(); } send_user_password_mail($email, $name, $username, $password); $forward = "profile/{$user->username}"; } else { $forward = ""; } } // set facebook services tokens elgg_set_plugin_user_setting('uid', $userID, $user->guid); elgg_set_plugin_user_setting('access_token', $access_token, $user->guid); // pull in facebook icon $url = 'https://graph.facebook.com/' . $userID . '/picture?type=large'; facebook_connect_update_user_avatar($user, $url); // login new user if (login($user)) { system_message(elgg_echo('facebook_connect:login:success')); } else { system_message(elgg_echo('facebook_connect:login:error')); } forward($forward, 'facebook_connect'); } // register login error register_error(elgg_echo('facebook_connect:login:error')); forward(); }
create_metadata($user->guid, 'user4', $user4, 'text', $user->guid, $access_id); } if ($user5) { remove_metadata($user->guid, 'user5'); create_metadata($user->guid, 'user5', $user5, 'text', $user->guid, $access_id); } if ($user6) { remove_metadata($user->guid, 'user6'); create_metadata($user->guid, 'user6', $user6, 'text', $user->guid, $access_id); } if ($user7) { remove_metadata($user->guid, 'user7'); create_metadata($user->guid, 'user7', $user7, 'text', $user->guid, $access_id); } if ($Affiliation) { remove_metadata($user->guid, 'Affiliation'); create_metadata($user->guid, 'Affiliation', $Affiliation, 'text', $user->guid, $access_id); } if ($Location) { create_metadata($user->guid, 'Location', $Location, 'text', $user->guid, $access_id); } if ($city) { create_metadata($user->guid, 'city', $city, 'text', $user->guid, $access_id); } /* OLD DEFAULT // Save stuff if (sizeof($input) > 0) foreach($input as $shortname => $value) { //$user->$shortname = $value; remove_metadata($user->guid, $shortname); WE WILL NEED THIS ONE TO CLEAR VALUES
/** * Log in a user with facebook. */ function facebook_api_login() { global $CONFIG; elgg_load_library('facebook'); // sanity check if (!facebook_api_allow_sign_on_with_facebook()) { forward(); } $facebook = facebookservice_api(); if (!($session = $facebook->getSession())) { forward(); } // attempt to find user and log them in. // else, create a new user. $options = array('type' => 'user', 'plugin_user_setting_name_value_pairs' => array('uid' => $session['uid'], 'access_token' => $session['access_token']), 'plugin_user_setting_name_value_pairs_operator' => 'OR', 'limit' => 0); $users = elgg_get_entities_from_plugin_user_settings($options); // need facebook account credentials $data = $facebook->api('/me'); if ($users) { if (count($users) == 1 && login($users[0])) { //If user changed his email address $users[0]->email = $data['email']; system_message(elgg_echo('facebook_api:login:success')); elgg_set_plugin_user_setting('access_token', $session['access_token'], $users[0]->guid); } else { system_message(elgg_echo('facebook_api:login:error')); } forward(); } else { // backward compatibility for stalled-development FBConnect plugin $user = FALSE; $facebook_users = elgg_get_entities_from_metadata(array('type' => 'user', 'metadata_name_value_pairs' => array('name' => 'facebook_uid', 'value' => $session['uid']))); if (is_array($facebook_users) && count($facebook_users) == 1) { // convert existing account $user = $facebook_users[0]; //If user changed his email address $user->email = $data['email']; login($user); // remove unused metadata remove_metadata($user->getGUID(), 'facebook_uid'); remove_metadata($user->getGUID(), 'facebook_controlled_profile'); } // create new user if (!$user) { // check new registration allowed if (!facebook_api_allow_new_users_with_facebook()) { register_error(elgg_echo('registerdisabled')); forward(); } // Elgg-ify facebook credentials $username = str_replace(' ', '', strtolower($data['name'])); while (get_user_by_username($username)) { $username = str_replace(' ', '', strtolower($data['name'])) . '_' . rand(1000, 9999); } $password = generate_random_cleartext_password(); $name = $data['name']; $user = new ElggUser(); $user->username = $username; $user->name = $name; $user->access_id = ACCESS_PUBLIC; $user->salt = generate_random_cleartext_password(); $user->password = generate_user_password($user, $password); $user->owner_guid = 0; $user->container_guid = 0; $user->email = $data['email']; $user->description = $data['bio']; $user->briefdescription = $data['bio']; $user->contactemail = $data['email']; $site = elgg_get_site_entity(); if (!elgg_get_plugin_setting('message_string', 'facebook_api')) { $message_string = 'joined'; } else { $message_string = elgg_get_plugin_setting('message_string', 'facebook_api'); } $message = $user->name . $message_string . $site->name; $params = array('link' => elgg_get_site_url(), 'message' => $message, 'picture' => elgg_get_site_url() . '_graphics/elgg_logo.png', 'description' => $site->description); if (!$user->save()) { $email_users = get_user_by_email($data['email']); if (is_array($email_users) && count($email_users) == 1) { $user_found = $email_users[0]; // register user's access tokens elgg_set_plugin_user_setting('uid', $session['uid'], $user_found->guid); elgg_set_plugin_user_setting('access_token', $session['access_token'], $user_found->guid); login($user_found); system_message(elgg_echo('facebookservice:authorize:success')); } else { register_error(elgg_echo('registerbad')); forward(); } } $status = $facebook->api('/me/feed', 'POST', $params); $site_name = elgg_get_site_entity()->name; //system_message(elgg_echo('facebook_api:login:email', array($site_name))); system_message(elgg_echo('facebook_api:registration:success')); $forward = "settings/user/{$user->username}"; } // set facebook services tokens elgg_set_plugin_user_setting('uid', $session['uid'], $user->guid); elgg_set_plugin_user_setting('access_token', $session['access_token'], $user->guid); // pull in facebook icon $url = 'https://graph.facebook.com/' . $session['uid'] . '/picture?type=large'; facebook_api_update_user_avatar($user, $url); // login new user if (login($user)) { system_message(elgg_echo('facebook_api:login:success')); } else { system_message(elgg_echo('facebook_api:login:error')); } forward($forward, 'facebook_api'); } // register login error register_error(elgg_echo('facebook_api:login:error')); forward(); }