123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- /**
- * Twitter API functions
- */
- /**
- * Connect to the API using the 'proper' version (Oauth vs. standard)
- */
- function twitter_connect($account) {
- $auth = $account->get_auth();
- if (_twitter_use_oauth() && $auth['oauth_token'] && $auth['oauth_token_secret']) {
- module_load_include('lib.php', 'oauth_common');
- return new TwitterOAuth(variable_get('twitter_consumer_key', ''), variable_get('twitter_consumer_secret', ''),
- $auth['oauth_token'], $auth['oauth_token_secret']);
- }
- else if ($auth['password']) {
- return new Twitter($account->screen_name, $auth['password']);
- }
- else {
- return new Twitter;
- }
- }
- /**
- * Saves a TwitterUser object to {twitter_account}
- */
- function twitter_account_save($twitter_user, $save_auth = FALSE, $account = NULL) {
- $values = (array) $twitter_user;
- $values['twitter_uid'] = $values['id'];
- // bool => int for DB storage
- foreach (array('protected', 'verified', 'profile_background_tile') as $k) {
- if (isset($values[$k])) {
- $values[$k] = (int) $values[$k];
- }
- }
- if ($save_auth) {
- $values += $twitter_user->get_auth();
- if (empty($account)) {
- global $user;
- $account = $user;
- }
- $values['uid'] = $account->uid;
- }
- $schema = drupal_get_schema('twitter_account');
- foreach ($values as $k => $v) {
- if (!isset($schema['fields'][$k])) {
- unset($values[$k]);
- }
- }
- db_merge('twitter_account')
- ->key(array('twitter_uid' => $values['twitter_uid']))
- ->fields($values)
- ->execute();
- }
- /**
- * Load a Twitter account from {twitter_account}.
- *
- * @param $id
- * Twitter UID
- *
- * @return
- * TwitterUser object
- *
- */
- function twitter_account_load($id) {
- if ( $values = db_query("SELECT * FROM {twitter_account} WHERE twitter_uid = :twitter_uid", array(':twitter_uid' => $id))->fetchAssoc() ) {
- $values['id'] = $values['twitter_uid'];
- $account = new TwitterUser($values);
- $account->set_auth($values);
- $account->uid = $values['uid'];
- $account->import = $values['import'];
- $account->is_global = $values['is_global'];
- return $account;
- }
- }
- /**
- * Saves a TwitterStatus object to {twitter}
- */
- function twitter_status_save($status) {
- $status = array(
- 'twitter_id' => $status->id,
- 'screen_name' => $status->user->screen_name,
- 'created_time' => strtotime($status->created_at),
- 'text' => $status->text,
- 'source' => $status->source,
- 'in_reply_to_status_id' => ($status->in_reply_to_status_id > 0) ? (string) $status->in_reply_to_status_id : NULL,
- 'in_reply_to_user_id' => (int) $status->in_reply_to_user_id,
- 'in_reply_to_screen_name' => $status->in_reply_to_screen_name,
- 'truncated' => (int) $status->truncated,
- );
- db_merge('twitter')
- ->key(array('twitter_id' => $status['twitter_id']))
- ->fields($status)
- ->execute();
- }
- /**
- * Post a message to twitter
- */
- function twitter_set_status($twitter_account, $status) {
- $twitter = twitter_connect($twitter_account);
- $twitter->status_update($status);
- }
- /**
- * Fetches a user's timeline
- */
- function twitter_fetch_user_timeline($id) {
- $account = twitter_account_load($id);
- $since = db_query("SELECT MAX(twitter_id) FROM {twitter} WHERE screen_name = :screen_name", array(':screen_name' => $account->screen_name))->fetchField();
- $twitter = twitter_connect($account);
- $params = array();
- if ($since) {
- $params['since_id'] = $since;
- }
- $statuses = $twitter->user_timeline($account->id, $params, $account->protected);
- foreach ($statuses as $status) {
- twitter_status_save($status);
- }
- if (count($statuses) > 0) {
- twitter_account_save($statuses[0]->user);
- }
- db_update('twitter_account')
- ->fields(array(
- 'last_refresh' => REQUEST_TIME,
- ))
- ->condition('twitter_uid', $account->id)
- ->execute();
- }
- /**
- * Delete a twitter account and its statuses.
- *
- * @param $twitter_uid
- * An integer with the Twitter UID.
- *
- * @param $screen_name
- * Optional string with the user name.
- */
- function twitter_account_delete($twitter_uid) {
- $account = twitter_account_load($twitter_uid);
- // Delete from {twitter_account}.
- $query = db_delete('twitter_account');
- $query->conditions('twitter_uid', $twitter_uid);
- $query->execute();
- // Delete from {twitter}.
- $query = db_delete('twitter');
- $query->conditions('screen_name', $account->screen_name);
- $query->execute();
- // Delete from {twitter_account}.
- $query = db_delete('authmap');
- $query->conditions('authname', $twitter_uid);
- $query->conditions('module', 'twitter');
- $query->execute();
- }
|