/** * Create a user based on LinkedIn information * * @param string $token LinkedIn access token * * @return bool|ElggUser */ function socialink_linkedin_create_user($token) { if (empty($token) || !is_array($token)) { return false; } $keys = socialink_linkedin_available(); if (empty($keys)) { return false; } $keys["oauth_token"] = $token["oauth_token"]; $keys["oauth_secret"] = $token["oauth_token_secret"]; $api = socialink_linkedin_get_api_object($keys); if (empty($api)) { return false; } try { // get user data $response = $api->profile("~:(first-name,last-name,email-address)"); } catch (Exception $e) { } $api_result = socialink_linkedin_verify_response($response); if (empty($api_result)) { return false; } $api_result = json_decode($api_result); // build user information $name = $api_result->firstName . " " . $api_result->lastName; $email = $api_result->emailAddress; $pwd = generate_random_cleartext_password(); $username = socialink_create_username_from_email($email); // check email address if (get_user_by_email($email)) { register_error(elgg_echo("socialink:networks:create_user:error:email")); return false; } try { // register user $user_guid = register_user($username, $pwd, $name, $email); if (empty($user_guid)) { return false; } // show hidden entities $access = access_get_show_hidden_status(); access_show_hidden_entities(true); $user = get_user($user_guid); if (empty($user)) { access_show_hidden_entities($access); return false; } // save user tokens elgg_set_plugin_user_setting("linkedin_oauth_token", $token["oauth_token"], $user_guid, "socialink"); elgg_set_plugin_user_setting("linkedin_oauth_secret", $token["oauth_token_secret"], $user_guid, "socialink"); // no need for uservalidationbyemail elgg_unregister_plugin_hook_handler("register", "user", "uservalidationbyemail_disable_new_user"); // sync user data socialink_linkedin_sync_profile_metadata($user->getGUID()); // trigger hook for registration $params = array("user" => $user, "password" => $pwd, "friend_guid" => 0, "invitecode" => ""); if (elgg_trigger_plugin_hook("register", "user", $params, true) !== false) { // return the user access_show_hidden_entities($access); return $user; } // restore hidden entities access_show_hidden_entities($access); } catch (Exception $e) { } return false; }
/** * Create a user based on Wordpress information * * @param string $token Wordpress access token * * @return bool|ElggUser */ function socialink_wordpress_create_user($token) { $result = false; if (!empty($token) && is_array($token)) { if ($userdata = socialink_wordpress_get_user_data_from_token($token)) { $email = $userdata->email; if (!get_user_by_email($email) && is_email_address($email)) { $username = $userdata->username; $displayname = $userdata->displayname; // show hidden entities $access = access_get_show_hidden_status(); access_show_hidden_entities(true); // check if the WordPress username is available on Elgg if (get_user_by_username($username)) { // make a new username based on the email address $username = socialink_create_username_from_email($email); } $pwd = generate_random_cleartext_password(); try { if ($user_guid = register_user($username, $pwd, $displayname, $email)) { if ($user = get_user($user_guid)) { // save user tokens elgg_set_plugin_user_setting("wordpress_userid", $userdata->ID, $user_guid, "socialink"); elgg_set_plugin_user_setting("wordpress_oauth_token", $token["oauth_token"], $user_guid, "socialink"); elgg_set_plugin_user_setting("wordpress_oauth_secret", $token["oauth_token_secret"], $user_guid, "socialink"); // trigger hook for registration $params = array("user" => $user, "password" => $pwd, "friend_guid" => 0, "invitecode" => ""); if (elgg_trigger_plugin_hook("register", "user", $params, true) !== false) { // return the user $result = $user; } } } } catch (Exception $e) { //echo $e->getMessage(); } // restore hidden entities access_show_hidden_entities($access); } else { register_error(elgg_echo("socialink:networks:create_user:error:email")); } } } return $result; }
/** * Create a user based on Facebook information * * @param string $token Facebook access token * * @return bool|ElggUser */ function socialink_facebook_create_user($token) { if (empty($token)) { return false; } if (!socialink_facebook_available()) { return false; } $session = new Facebook\FacebookSession($token); if (empty($session)) { return false; } $request = new FaceBook\FacebookRequest($session, "GET", "/me"); // set correct proxy settings (if needed) $curl_http_client = socialink_facebook_get_curl_http_client(); $request->setHttpClientHandler($curl_http_client); try { $api_result = $request->execute()->getGraphObject(Facebook\GraphUser::className()); } catch (Exception $e) { } if (empty($api_result)) { return false; } // get user information $name = $api_result->getName(); $email = $api_result->getEmail(); if (get_user_by_email($email)) { register_error(elgg_echo("socialink:networks:create_user:error:email")); return false; } $pwd = generate_random_cleartext_password(); $username = socialink_create_username_from_email($email); try { $user_guid = register_user($username, $pwd, $name, $email); if (empty($user_guid)) { return false; } // show hidden entities $access = access_get_show_hidden_status(); access_show_hidden_entities(true); $user = get_user($user_guid); if (empty($user)) { access_show_hidden_entities($access); return false; } // register user's access tokens elgg_set_plugin_user_setting("facebook_access_token", $token, $user_guid, "socialink"); elgg_set_plugin_user_setting("facebook_user_id", $api_result->getId(), $user_guid, "socialink"); // no need for uservalidationbyemail elgg_unregister_plugin_hook_handler("register", "user", "uservalidationbyemail_disable_new_user"); // sync user data socialink_facebook_sync_profile_metadata($user->getGUID()); // trigger hook for registration $params = array("user" => $user, "password" => $pwd, "friend_guid" => 0, "invitecode" => ""); if (elgg_trigger_plugin_hook("register", "user", $params, true) !== false) { access_show_hidden_entities($access); // return the user return $user; } // restore hidden entities access_show_hidden_entities($access); } catch (Exception $e) { } return false; }
/** * Create a user based on Twitter information * * @param string $token Twitter access token * @param string $email the users email address * * @return bool|ElggUser */ function socialink_twitter_create_user($token, $email) { $result = false; if (!empty($token) && is_array($token) && !empty($email)) { if (!get_user_by_email($email) && is_email_address($email)) { $keys = socialink_twitter_available(); $keys["oauth_token"] = $token["oauth_token"]; $keys["oauth_secret"] = $token["oauth_token_secret"]; if ($api = socialink_twitter_get_api_object($keys)) { try { $url = "users/show"; $params = array("screen_name" => $token["screen_name"]); $api_result = $api->get($url, $params); } catch (Exception $e) { } if (!empty($api_result)) { $name = $api_result->name; $pwd = generate_random_cleartext_password(); $username = socialink_create_username_from_email($email); try { // register user if ($user_guid = register_user($username, $pwd, $name, $email)) { // show hidden entities $access = access_get_show_hidden_status(); access_show_hidden_entities(TRUE); if ($user = get_user($user_guid)) { // save user tokens elgg_set_plugin_user_setting('twitter_user_id', $token['user_id'], $user_guid, "socialink"); elgg_set_plugin_user_setting('twitter_screen_name', $token['screen_name'], $user_guid, "socialink"); elgg_set_plugin_user_setting('twitter_oauth_token', $token['oauth_token'], $user_guid, "socialink"); elgg_set_plugin_user_setting('twitter_oauth_secret', $token['oauth_token_secret'], $user_guid, "socialink"); // sync user data socialink_twitter_sync_profile_metadata($user->getGUID()); // trigger hook for registration $params = array("user" => $user, "password" => $pwd, "friend_guid" => 0, "invitecode" => ""); if (elgg_trigger_plugin_hook("register", "user", $params, true) !== false) { // return the user $result = $user; } } // restore hidden entities access_show_hidden_entities($access); } } catch (Exception $e) { } } } } else { register_error(elgg_echo("socialink:networks:create_user:error:email")); } } return $result; }