diff options
Diffstat (limited to 'mod/twitterservice/twitterservice_lib.php')
| -rw-r--r-- | mod/twitterservice/twitterservice_lib.php | 267 |
1 files changed, 0 insertions, 267 deletions
diff --git a/mod/twitterservice/twitterservice_lib.php b/mod/twitterservice/twitterservice_lib.php deleted file mode 100644 index b302dcf43..000000000 --- a/mod/twitterservice/twitterservice_lib.php +++ /dev/null @@ -1,267 +0,0 @@ -<?php -/** - * Common library of functions used by Twitter Services. - * - * @package TwitterService - * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 - * @copyright Curverider Ltd 2008-2010 - */ - -/** - * Tests if the system admin has enabled Sign-On-With-Twitter - * - * @param void - * @return bool - */ -function twitterservice_allow_sign_on_with_twitter() { - if (!$consumer_key = elgg_get_plugin_setting('consumer_key', 'twitterservice')) { - return FALSE; - } - - if (!$consumer_secret = elgg_get_plugin_setting('consumer_secret', 'twitterservice')) { - return FALSE; - } - - return elgg_get_plugin_setting('sign_on', 'twitterservice') == 'yes'; -} - -function twitterservice_forward() { - - // sanity check - if (!twitterservice_allow_sign_on_with_twitter()) { - forward(); - } - - $callback = elgg_normalize_url("pg/twitterservice/login"); - $request_link = twitterservice_get_authorize_url($callback); - - forward($request_link); -} - -function twitterservice_login() { - - // sanity check - if (!twitterservice_allow_sign_on_with_twitter()) { - forward(); - } - - $token = twitterservice_get_access_token(get_input('oauth_verifier')); - if (!isset($token['oauth_token']) or !isset($token['oauth_token_secret'])) { - register_error(elgg_echo('twitterservice:login:error')); - forward(); - } - - // attempt to find user - $values = array( - 'plugin:settings:twitterservice:access_key' => $token['oauth_token'], - 'plugin:settings:twitterservice:access_secret' => $token['oauth_token_secret'], - ); - - if (!$users = get_entities_from_private_setting_multi($values, 'user', '', 0, '', 0)) { - // need Twitter account credentials - $consumer_key = elgg_get_plugin_setting('consumer_key', 'twitterservice'); - $consumer_secret = elgg_get_plugin_setting('consumer_secret', 'twitterservice'); - $api = new TwitterOAuth($consumer_key, $consumer_secret, $token['oauth_token'], $token['oauth_token_secret']); - $twitter = $api->get('account/verify_credentials'); - - // backward compatibility for stalled-development Twitter Login plugin - $user = FALSE; - if ($twitter_user = get_user_by_username($token['screen_name'])) { - if (($screen_name = $twitter_user->twitter_screen_name) && ($screen_name == $token['screen_name'])) { - // convert existing account - $user = $twitter_user; - $forward = ''; - } - } - - // create new user - if (!$user) { - // check new registration allowed - if (!elgg_get_config('allow_registration')) { - register_error(elgg_echo('registerdisabled')); - forward(); - } - - // trigger a hook for plugin authors to intercept - if (!trigger_plugin_hook('new_twitter_user', 'twitter_service', array('account' => $twitter), TRUE)) { - // halt execution - register_error(elgg_echo('twitterservice:login:error')); - forward(); - } - - // Elgg-ify Twitter credentials - $username = "{$twitter->screen_name}_twitter"; - $display_name = $twitter->name; - $password = generate_random_cleartext_password(); - - // @hack Temporary, junk email account to allow user creation - $email = "$username@elgg.com"; - - try { - // create new account - if (!$user_id = register_user($username, $password, $display_name, $email)) { - register_error(elgg_echo('registerbad')); - forward(); - } - } catch (RegistrationException $r) { - register_error($r->getMessage()); - forward(); - } - - $user = new ElggUser($user_id); - - // @hack Remove temporary email and forward to user settings page - // @todo Consider using a view to force valid email - $site_name = elgg_get_site_entity()->name; - system_message(elgg_echo('twitterservice:login:email', array($site_name))); - $user->email = ''; - $user->save(); - - $forward = "pg/settings/user/{$user->username}"; - } - - // set twitter services tokens - elgg_set_plugin_user_setting('twitter_name', $token['screen_name'], $user->guid); - elgg_set_plugin_user_setting('access_key', $token['oauth_token'], $user->guid); - elgg_set_plugin_user_setting('access_secret', $token['oauth_token_secret'], $user->guid); - - // pull in Twitter icon - twitterservice_update_user_avatar($user, $twitter->profile_image_url); - - // login new user - if (login($user)) { - system_message(elgg_echo('twitterservice:login:success')); - } else { - system_message(elgg_echo('twitterservice:login:error')); - } - - forward($forward); - } elseif (count($users) == 1) { - if (login($users[0])) { - system_message(elgg_echo('twitterservice:login:success')); - } else { - system_message(elgg_echo('twitterservice:login:error')); - } - - forward(); - } - - // register login error - register_error(elgg_echo('twitterservice:login:error')); - forward(); -} - -function twitterservice_update_user_avatar($user, $file_location) { - $sizes = array( - 'topbar' => array(16, 16, TRUE), - 'tiny' => array(25, 25, TRUE), - 'small' => array(40, 40, TRUE), - 'medium' => array(100, 100, TRUE), - 'large' => array(200, 200, FALSE), - 'master' => array(550, 550, FALSE), - ); - - $filehandler = new ElggFile(); - $filehandler->owner_guid = $user->getGUID(); - foreach ($sizes as $size => $dimensions) { - $image = get_resized_image_from_existing_file( - $file_location, - $dimensions[0], - $dimensions[1], - $dimensions[2] - ); - - $filehandler->setFilename("profile/$user->username$size.jpg"); - $filehandler->open('write'); - $filehandler->write($image); - $filehandler->close(); - } - - return TRUE; -} - -/** - * User-initiated Twitter authorization - * - * Callback action from Twitter registration. Registers a single Elgg user with - * the authorization tokens. Will revoke access from previous users when a - * conflict exists. - * - * Depends upon {@link twitterservice_get_authorize_url} being called previously - * to establish session request tokens. - */ -function twitterservice_authorize() { - $token = twitterservice_get_access_token(); - if (!isset($token['oauth_token']) || !isset($token['oauth_token_secret'])) { - register_error(elgg_echo('twitterservice:authorize:error')); - forward('pg/settings/plugins'); - } - - // only one user per tokens - $values = array( - 'plugin:settings:twitterservice:access_key' => $token['oauth_token'], - 'plugin:settings:twitterservice:access_secret' => $token['oauth_token_secret'], - ); - - if ($users = get_entities_from_private_setting_multi($values, 'user', '', 0, '', 0)) { - foreach ($users as $user) { - // revoke access - clear_plugin_usersetting('twitter_name', $user->getGUID()); - clear_plugin_usersetting('access_key', $user->getGUID()); - clear_plugin_usersetting('access_secret', $user->getGUID()); - } - } - - // register user's access tokens - elgg_set_plugin_user_setting('twitter_name', $token['screen_name']); - elgg_set_plugin_user_setting('access_key', $token['oauth_token']); - elgg_set_plugin_user_setting('access_secret', $token['oauth_token_secret']); - - system_message(elgg_echo('twitterservice:authorize:success')); - forward('pg/settings/plugins'); -} - -function twitterservice_revoke() { - // unregister user's access tokens - clear_plugin_usersetting('twitter_name'); - clear_plugin_usersetting('access_key'); - clear_plugin_usersetting('access_secret'); - - system_message(elgg_echo('twitterservice:revoke:success')); - forward('pg/settings/plugins'); -} - -function twitterservice_get_authorize_url($callback=NULL) { - global $SESSION; - - $consumer_key = elgg_get_plugin_setting('consumer_key', 'twitterservice'); - $consumer_secret = elgg_get_plugin_setting('consumer_secret', 'twitterservice'); - - // request tokens from Twitter - $twitter = new TwitterOAuth($consumer_key, $consumer_secret); - $token = $twitter->getRequestToken($callback); - - // save token in session for use after authorization - $SESSION['twitterservice'] = array( - 'oauth_token' => $token['oauth_token'], - 'oauth_token_secret' => $token['oauth_token_secret'], - ); - - return $twitter->getAuthorizeURL($token['oauth_token']); -} - -function twitterservice_get_access_token($oauth_verifier=FALSE) { - global $SESSION; - - $consumer_key = elgg_get_plugin_setting('consumer_key', 'twitterservice'); - $consumer_secret = elgg_get_plugin_setting('consumer_secret', 'twitterservice'); - - // retrieve stored tokens - $oauth_token = $SESSION['twitterservice']['oauth_token']; - $oauth_token_secret = $SESSION['twitterservice']['oauth_token_secret']; - $SESSION->offsetUnset('twitterservice'); - - // fetch an access token - $api = new TwitterOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret); - return $api->getAccessToken($oauth_verifier); -} |
