All pastes #632428 Raw Edit

Something

public php v1 · immutable
#632428 ·published 2007-07-24 21:01 UTC
rendered paste body
<?php// $Id: twitter.module,v 1.1 2007/01/23 17:05:50 walkah Exp $/** * Twitter data is stored (internal to this module, at least) as structured arrays * in the following formats: * * $twitter_status = array( *   'twitter_id'   => $unique_id_from_twitter, *   'twitter_uid'  => $unique_user_id_from_twitter, *   'twitter_user' => $optional_sub_array *   'created_at'   => $time_of_post_in_UTC, *   'created_time' => $unix_timestamp_of_post, *   'text'         => $text_of_tweet, *   'source'       => $source_application, * ); * * $twitter_account = array( *   'twitter_uid'       => $unique_user_id_from_twitter, *   'name'              => $twitter_login_email, *   'screen_name'       => $twitter_screen_name, *   'description'       => $user_description, *   'profile_image_url' => $image_url, *   'url'               => $user_home_page, *   'protected'         => $boolean, *   'status'            => $optional_sub_array * ); */function twitter_fetch_user_timeline($screen_name, $filter_since = FALSE, $cache = TRUE) {  if ($filter_since) {    $sql  = "SELECT t.created_at FROM {twitter} t LEFT JOIN {twitter_account} ta ON ";    $sql .= "t.twitter_uid = ta.twitter_uid WHERE ta.screen_name = '%s'";    $sql .= "ORDER BY t.created_at DESC";    $since = db_result(db_query($sql, $screen_name));  }  $url = "http://twitter.com/statuses/user_timeline/$screen_name.xml";  if (!empty($since)) {    $url .= '?since='. urlencode($since);  }  $results = drupal_http_request($url, array(), 'GET');  $results = _twitter_convert_xml_to_array($results->data);    if ($cache) {    foreach($results as $status) {      twitter_cache_status($status);    }  }  return $results;}function twitter_fetch_user_friends($screen_name, $cache = TRUE) {  $url = "http://twitter.com/statuses/friends/$screen_name.xml";  $results = drupal_http_request($url, array(), 'GET');  return _twitter_convert_xml_to_array($results->data);}function twitter_fetch_user_followers($screen_name, $password, $cache = TRUE) {  $url = "http://twitter.com/statuses/followers/$screen_name.xml";  $headers = array('Authorization' => 'Basic '. base64_encode($screen_name .':'. $password),                   'Content-type' => 'application/x-www-form-urlencoded');  $results = drupal_http_request($url, $headers, 'GET');  $results = _twitter_convert_xml_to_array($results->data);    if ($cache) {    foreach($results as $status) {      twitter_cache_status($status);    }  }  return $results;}function twitter_fetch_status($screen_name, $cache = TRUE) {  $url = "http://twitter.com/statuses/$screen_name.xml";  $results = drupal_http_request($url, array(), 'GET');  $results = _twitter_convert_xml_to_array($results->data);    if ($cache && !empty($results)) {    foreach($results as $status) {      twitter_cache_status($status);      return $status;    }  }}function twitter_authenticate($screen_name, $password) {  $url = "http://twitter.com/account/verify_credentials.xml";  $headers = array('Authorization' => 'Basic '. base64_encode($screen_name .':'. $password),                   'Content-type' => 'application/x-www-form-urlencoded');  $results = drupal_http_request($url, $headers, 'GET');  drupal_http_request('http://twitter.com/account/end_session', $headers, $get);  return ($results->code == '200');}function twitter_fetch_user_details($screen_name, $password, $cache = TRUE) {  $url = "http://twitter.com/users/show/$screen_name.xml";  $headers = array('Authorization' => 'Basic '. base64_encode($screen_name .':'. $password),                   'Content-type' => 'application/x-www-form-urlencoded');  $results = drupal_http_request($url, $headers, 'GET');  $results = _twitter_convert_xml_to_array($results->data);    if ($cache) {    foreach($results as $user) {      twitter_cache_user($status);    }  }  return $results;}function twitter_cache_status($status = array(), $silent = FALSE) {  db_query("DELETE FROM {twitter} t WHERE t.twitter_id = %d", $status['twitter_id']);  $sql  = "INSERT INTO {twitter} t (twitter_id, screen_name, created_at, created_time, `text`, source) ";  $sql .= "VALUES (%d, %d, '%s', %d, '%s', '%s')";  db_query($sql, $status['twitter_id'], $status['screen_name'], $status['created_at'], $status['created_time'], $status['text'], $status['source']);  if (!$silent) {    module_invoke_all('twitter_status_update', $status);  }}function twitter_cache_user($twitter_user = array()) {  db_query("DELETE FROM {twitter_account} ta WHERE ta.twitter_uid = %d", $twitter_user['twitter_uid']);  $sql  = "INSERT INTO {twitter_account} ta (twitter_uid, name, screen_name, description, profile_image_url, url, protected) ";  $sql .= "VALUES (%d, '%s', '%s', '%s', '%s', '%s', %d)";}function twitter_set_status($screen_name, $password, $text = '', $source = NULL) {  $url = "http://twitter.com/statuses/update.xml";  $headers = array('Authorization' => 'Basic '. base64_encode($screen_name .':'. $password),                   'Content-type' => 'application/x-www-form-urlencoded');  $data = 'status='. urlencode($text);  if (!empty($source)) {    $data .= 'source='. urlencode($source);  }  return drupal_http_request($url, $headers, 'POST', $data);}/** * Internal XML munging code */function _twitter_convert_xml_to_array($data) {  $results = array();  $xml =  new SimpleXMLElement($data);  if (!empty($xml->user)) {    foreach($xml->user as $user) {      $results[] = _twitter_convert_user($user);    }  }  elseif (!empty($xml->status)) {    foreach($xml->status as $status) {      $results[] = _twitter_convert_status($status);    }  }  return $results;}function _twitter_convert_status($status) {  $result = (array)$status;  $result['twitter_id'] = $result['id'];  if (!empty($result['user']) && is_object($result['user'])) {    $result['account'] = _twitter_convert_user($result['user']);    $result['screen_name'] = $result['user']['screen_name'];  }  else {    $result['screen_name'] = NULL;  }  $result['created_time'] = strtotime($result['created_at']);  return $result;}function _twitter_convert_user($user) {  $result = (array)$user;  $result['twitter_uid'] = $result['id'];  if (!empty($result['status']) && is_object($result['status'])) {    $result['status'] = _twitter_convert_status($result['status']);  }  else {    $result['twitter_uid'] = NULL;  }  return $result;}