summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzach <zach@controlyourself.ca>2008-08-26 18:56:15 -0400
committerzach <zach@controlyourself.ca>2008-08-26 18:56:15 -0400
commit661202be3e28eeffeacb8cbfbec88a7352bcce55 (patch)
tree88bacf6d83c54b81b0c4b4989fa3b974f3a91bf5
parenta90b556e214aca4023898a811a86e1a6864f68a9 (diff)
Twitter-integration - Twitter settings tab now saves Twitter credentials
darcs-hash:20080826225615-462f3-8d881eda7be43623e10b83e8d1e157f4096734cd.gz
-rw-r--r--actions/twittersettings.php48
-rw-r--r--classes/Foreign_user.php25
2 files changed, 70 insertions, 3 deletions
diff --git a/actions/twittersettings.php b/actions/twittersettings.php
index 95649f706..1389666f9 100644
--- a/actions/twittersettings.php
+++ b/actions/twittersettings.php
@@ -67,17 +67,59 @@ class TwittersettingsAction extends SettingsAction {
return;
}
+ // Verify this is a real Twitter user.
if (!$this->verify_credentials($twitter_username, $twitter_password)) {
$this->show_form(_('Could not verify your Twitter credentials!'));
return;
}
-
+ // Now that we have a valid Twitter user, we have to make another api call to
+ // find its Twitter ID.
+ $twitter_id = $this->get_twitter_id($twitter_username);
+
+ if (!$twitter_id) {
+ $this->show_form(sprintf(_('Unable to retrieve account information for "%s" from Twitter.'), $twitter_username));
+ return;
+ }
+
$user = common_current_user();
-
+
+ $fuser = Foreign_user::save(
+ array(
+ 'id' => $twitter_id,
+ 'service' => '0', // Twitter
+ 'uri' => "http://www.twitter.com/$twitter_username",
+ 'nickname' => $twitter_username,
+ 'user_id' => $user->id,
+ 'credentials' => $twitter_password
+ ));
+
+ if (!$fuser) {
+ $this->show_form(_('Unable to save your Twitter credentials!'));
+ }
+
$this->show_form(_('Twitter settings saved.'), true);
+ }
+
+ function get_twitter_id($twitter_username) {
+
+ $uri = "http://twitter.com/users/show/$twitter_username.json";
+
+ common_debug("uri; $uri");
+
+ $data = $this->get_twitter_data($uri);
+
+ if (!$data) {
+ return NULL;
+ }
+ $user = json_decode($data);
+ if (!$user) {
+ return NULL;
+ }
+
+ return $user->id;
}
function verify_credentials($user, $password) {
@@ -103,7 +145,7 @@ class TwittersettingsAction extends SettingsAction {
}
// PHP's cURL the best thing to use here? -- Zach
- function get_twitter_data($uri, $user, $password) {
+ function get_twitter_data($uri, $user=NULL, $password=NULL) {
$options = array(
CURLOPT_USERPWD => "$user:$password",
CURLOPT_RETURNTRANSFER => true,
diff --git a/classes/Foreign_user.php b/classes/Foreign_user.php
index d19370aa0..25a6ac979 100644
--- a/classes/Foreign_user.php
+++ b/classes/Foreign_user.php
@@ -22,4 +22,29 @@ class Foreign_user extends DB_DataObject
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
+
+ static function save($fields) {
+
+ extract($fields);
+
+ $fuser = new Foreign_user();
+
+ $fuser->id = $id;
+ $fuser->service = $service;
+ $fuser->uri = $uri;
+ $fuser->nickname = $nickname;
+ $fuser->user_id = $user_id;
+ $fuser->credentials = $credentials;
+ $fuser->created = common_sql_now();
+
+ $result = $fuser->insert();
+
+ if (!$result) {
+ common_log_db_error($fuser, 'INSERT', __FILE__);
+ return FALSE;
+ }
+
+ return $fuser;
+ }
+
}