Cheers
Jeremy
in CGblog I do it like this
Code: Select all
{if $entry->summary}{eval var=$entry->summary assign='Tsum'}{/if}
{assign var=Tsum value=$Tsum|strip_tags:false|truncate:134:"":true}
{twitterMe Tsum=$Tsum}
class twitter{
var $username='*********';
var $password='*********';
var $ipLockDown='xxx.xxx.xxx.xxx';
Code: Select all
global $gCms;
$Tsum = $params['Tsum'];
$urlBASE = "http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
if (!empty($_SERVER["QUERY_STRING"]))
$urlBASE .= "?".$_SERVER['QUERY_STRING'];
if (isset($gCms->config['assume_mod_rewrite']) && ($gCms->config['assume_mod_rewrite']==true)) {
$urls = str_replace("index.php?page=", "", $urlBASE);
$urls = str_replace("index.php", "", $urls);
}else{
$urls = $urlBASE;
}
function get_tiny_url($url){
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,'http://tinyurl.com/api-create.php?url='.$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
class twitter{
var $username='*********';
var $password='*********';
var $ipLockDown='xxx.xxx.xxx.xxx';
var $user_agent='';
///////////////
//
// I don't know if these headers have become standards yet
// but I would suggest using them.
// more discussion here.
// http://tinyurl.com/3xtx66
//
///////////////
var $headers=array('X-Twitter-Client: ',
'X-Twitter-Client-Version: ',
'X-Twitter-Client-URL: ');
var $responseInfo=array();
function twitter(){}
/////////////////////////////////////////
//
// Twitter API calls
//
// $this->update($status)
// $this->publicTimeline($sinceid=false)
// $this->friendsTimeline($id=false,$since=false)
// $this->userTimeline($id=false,$count=20,$since=false)
// $this->showStatus($id)
// $this->friends($id=false)
// $this->followers()
// $this->featured()
// $this->showUser($id)
// $this->directMessages($since=false)
// $this->sendDirectMessage($user,$text)
//
// If SimpleXMLElement exists the results will be returned as a SimpleXMLElement
// otherwise the raw XML will be returned for a successful request. If the request
// fails a FALSE will be returned.
//
//
/////////////////////////////////////////
// Updates the authenticating user's status.
// Requires the status parameter specified below.
//
// status. (string) Required. The text of your status update. Must not be
// more than 160 characters and should not be
// more than 140 characters to ensure optimal display.
//
function update($status){
$request = 'http://twitter.com/statuses/update.xml';
$postargs = 'status='.urlencode($status);
return $this->process($request,$postargs);
}
// Returns the 20 most recent statuses from non-protected users who have
// set a custom user icon. Does not require authentication.
//
// sinceid. (int) Optional. Returns only public statuses with an ID greater
// than (that is, more recent than) the specified ID.
//
function publicTimeline($sinceid=false){
$qs='';
if($sinceid!==false)
$qs='?since_id='.intval($sinceid);
$request = 'http://twitter.com/statuses/public_timeline.xml'.$qs;
return $this->process($request);
}
// Returns the 20 most recent statuses posted in the last 24 hours from the
// authenticating user and that user's friends. It's also possible to request
// another user's friends_timeline via the id parameter below.
//
// id. (string OR int) Optional. Specifies the ID or screen name of the user for whom
// to return the friends_timeline. (set to false if you
// want to use authenticated user).
// since. (HTTP-formatted date) Optional. Narrows the returned results to just those
// statuses created after the specified date.
//
function friendsTimeline($id=false,$since=false){
$qs='';
if($since!==false)
$qs='?since='.urlencode($since);
if($id===false)
$request = 'http://twitter.com/statuses/friends_timeline.xml'.$qs;
else
$request = 'http://twitter.com/statuses/friends_timeline/'.urlencode($id).'.xml'.$qs;
return $this->process($request);
}
// Returns the 20 most recent statuses posted in the last 24 hours from the
// authenticating user. It's also possible to request another user's timeline
// via the id parameter below.
//
// id. (string OR int) Optional. Specifies the ID or screen name of the user for whom
// to return the user_timeline.
// count. (int) Optional. Specifies the number of statuses to retrieve. May not be
// greater than 20 for performance purposes.
// since. (HTTP-formatted date) Optional. Narrows the returned results to just those
// statuses created after the specified date.
//
function userTimeline($id=false,$count=20,$since=false){
$qs='?count='.intval($count);
if($since!==false)
$qs .= '&since='.urlencode($since);
if($id===false)
$request = 'http://twitter.com/statuses/user_timeline.xml'.$qs;
else
$request = 'http://twitter.com/statuses/user_timeline/'.urlencode($id).'.xml'.$qs;
return $this->process($request);
}
// Returns a single status, specified by the id parameter below. The status's author
// will be returned inline.
//
// id. (int) Required. Returns status of the specified ID.
//
function showStatus($id){
$request = 'http://twitter.com/statuses/show/'.intval($id).'.xml';
return $this->process($request);
}
// Returns the authenticating user's friends, each with current status inline. It's
// also possible to request another user's friends list via the id parameter below.
//
// id. (string OR int) Optional. The ID or screen name of the user for whom to request
// a list of friends.
//
function friends($id=false){
if($id===false)
$request = 'http://twitter.com/statuses/friends.xml';
else
$request = 'http://twitter.com/statuses/friends/'.urlencode($id).'.xml';
return $this->process($request);
}
// Returns the authenticating user's followers, each with current status inline.
//
function followers(){
$request = 'http://twitter.com/statuses/followers.xml';
return $this->process($request);
}
// Returns a list of the users currently featured on the site with their current statuses inline.
function featured(){
$request = 'http://twitter.com/statuses/featured.xml';
return $this->process($request);
}
// Returns extended information of a given user, specified by ID or screen name as per the required
// id parameter below. This information includes design settings, so third party developers can theme
// their widgets according to a given user's preferences.
//
// id. (string OR int) Required. The ID or screen name of a user.
//
function showUser($id){
$request = 'http://twitter.com/users/show/'.urlencode($id).'.xml';
return $this->process($request);
}
// Returns a list of the direct messages sent to the authenticating user.
//
// since. (HTTP-formatted date) Optional. Narrows the resulting list of direct messages to just those
// sent after the specified date.
//
function directMessages($since=false){
$qs='';
if($since!==false)
$qs='?since='.urlencode($since);
$request = 'http://twitter.com/direct_messages.xml'.$qs;
return $this->process($request);
}
// Sends a new direct message to the specified user from the authenticating user. Requires both the user
// and text parameters below.
//
// user. (string OR int) Required. The ID or screen name of the recipient user.
// text. (string) Required. The text of your direct message. Be sure to URL encode as necessary, and keep
// it under 140 characters.
//
function sendDirectMessage($user,$text){
$request = 'http://twitter.com/direct_messages/new.xml';
$postargs = 'user='.urlencode($user).'&text='.urlencode($text);
return $this->process($request,$postargs);
}
// internal function where all the juicy curl fun takes place
// this should not be called by anything external unless you are
// doing something else completely then knock youself out.
function process($url,$postargs=false){
$ch = curl_init($url);
if($postargs !== false){
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postargs);
}
if($this->username !== false && $this->password !== false)
curl_setopt($ch, CURLOPT_USERPWD, $this->username.':'.$this->password);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
$response = curl_exec($ch);
$this->responseInfo=curl_getinfo($ch);
curl_close($ch);
if(intval($this->responseInfo['http_code'])==200){
if(class_exists('SimpleXMLElement')){
$xml = new SimpleXMLElement($response);
return $xml;
}else{
return $response;
}
}else{
return false;
}
}
}
if(isset($_POST['twitter_msg'])){
$twitter_message=$_POST['twitter_msg'];
if(strlen($twitter_message)<1){
$error=1;
} else {
if(($_SERVER['REMOTE_ADDR']==$ipLockDown)){
$t= new twitter();
$t->username =$username;
$t->password =$password ;
$res = $t->update($twitter_message);
if($res===false){
echo "ERROR<hr/>";
echo "<pre>";
print_r($t->responseInfo);
echo "</pre>";
}else{
echo "SUCCESS<hr/>Status Posted";
}
}
}
}
if(isset($_POST['twitter_msg']) && !isset($error)){
echo '<div class="msg">'.$twitter_status.'</div>';
$filename='uploads/log/twitterLog.txt';
if(file_exists($filename)){
}else{
mkdir("uploads/log/");
$ourFileName = $filename;
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fclose($ourFileHandle);
}
$datetime=strtotime("now");
$stringData="When: ".$datetime." by: ".$_SERVER['REMOTE_ADDR']." | ".$_POST['twitter_msg']."\n";
$fh = fopen($filename, 'a') or die("can't open file");
fwrite($fh, $stringData);
fclose($fh);
echo 'Wrote log';
} else if(isset($error)){
echo '<div class="msg">Error: please insert a message!</div>';
}
$new_url = get_tiny_url($urls);
echo $new_url.'<br/>';
echo'<p><strong>What are you doing?</strong></p>
<form action="'.$urls.'" method="post">
<input name="twitter_msg" type="text" id="twitter_msg" size="40" maxlength="160" value="'.$Tsum.' '.$new_url.'"/>
<input type="submit" name="button" id="button" value="post" />
</form>';