Ejemplo n.º 1
0
/**
 * 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;
}
Ejemplo n.º 2
0
/**
 * 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;
}
Ejemplo n.º 3
0
/**
 * 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;
}
Ejemplo n.º 4
0
/**
 * 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;
}