aboutsummaryrefslogtreecommitdiff
path: root/mod/twitterservice/vendors/twitter
diff options
context:
space:
mode:
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2010-03-03 17:53:05 +0000
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2010-03-03 17:53:05 +0000
commit4766f36a4d74924f21ff329c4318ce4e069ffa04 (patch)
tree969b84632f2a8b0db79788a8a6db8e41d63e5cb4 /mod/twitterservice/vendors/twitter
parent57a217fd6b708844407486046a1faa23b46cac08 (diff)
downloadelgg-4766f36a4d74924f21ff329c4318ce4e069ffa04.tar.gz
elgg-4766f36a4d74924f21ff329c4318ce4e069ffa04.tar.bz2
Pulled in the interface changes.
git-svn-id: http://code.elgg.org/elgg/trunk@5257 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'mod/twitterservice/vendors/twitter')
-rw-r--r--mod/twitterservice/vendors/twitter/license.txt27
-rw-r--r--mod/twitterservice/vendors/twitter/load.php20
-rw-r--r--mod/twitterservice/vendors/twitter/readme.txt55
-rw-r--r--mod/twitterservice/vendors/twitter/send.php9
-rw-r--r--mod/twitterservice/vendors/twitter/twitter.class.php142
5 files changed, 253 insertions, 0 deletions
diff --git a/mod/twitterservice/vendors/twitter/license.txt b/mod/twitterservice/vendors/twitter/license.txt
new file mode 100644
index 000000000..a8d57203e
--- /dev/null
+++ b/mod/twitterservice/vendors/twitter/license.txt
@@ -0,0 +1,27 @@
+Copyright (c) 2008, Copyright (c) 2008 David Grudl
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of David Grudl nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/mod/twitterservice/vendors/twitter/load.php b/mod/twitterservice/vendors/twitter/load.php
new file mode 100644
index 000000000..388b4e358
--- /dev/null
+++ b/mod/twitterservice/vendors/twitter/load.php
@@ -0,0 +1,20 @@
+<?php
+
+require_once 'twitter.class.php';
+
+
+$twitter = new Twitter('pokusnyucet2', '123456');
+
+$withFriends = FALSE;
+$channel = $twitter->load($withFriends);
+
+?>
+
+<ul>
+<?foreach ($channel->status as $status): ?>
+ <li><a href="http://twitter.com/<?=$status->user->screen_name?>"><?=$status->user->name?></a>:
+ <?=$status->text?>
+ <small>at <?=date("j.n.Y H:m", strtotime($status->created_at))?></small>
+ </li>
+<?endforeach?>
+</ul>
diff --git a/mod/twitterservice/vendors/twitter/readme.txt b/mod/twitterservice/vendors/twitter/readme.txt
new file mode 100644
index 000000000..a01b768af
--- /dev/null
+++ b/mod/twitterservice/vendors/twitter/readme.txt
@@ -0,0 +1,55 @@
+Twitter for PHP (c) David Grudl, 2008 (http://davidgrudl.com)
+
+
+Introduction
+------------
+
+Twitter for PHP is a very small and easy-to-use library for sending
+messages to Twitter and receiving status updates.
+
+
+Project at GoogleCode: http://twitter-php.googlecode.com
+Twitter's API documentation: http://groups.google.com/group/twitter-development-talk/web/api-documentation
+My PHP blog: http://phpfashion.com
+
+
+Requirements
+------------
+- PHP (version 5 or better)
+- cURL extension
+
+
+Usage
+-----
+
+Create object using your credentials (user name and password)
+
+ $twitter = new Twitter($userName, $password);
+
+The send() method updates your status. The message must be encoded in UTF-8:
+
+ $twitter->send('I am fine today.');
+
+The load() method returns the 20 most recent status updates
+posted in the last 24 hours by you and optionally by your friends:
+
+ $withFriends = FALSE;
+ $channel = $twitter->load($withFriends);
+
+The returned channel is a SimpleXMLElement object. Extracting
+the information from the channel is easy:
+
+ foreach ($channel->status as $status) {
+ echo "message: ", $status->text;
+ echo "posted at " , $status->created_at;
+ echo "posted by " , $status->user->name;
+ }
+
+
+Files
+-----
+readme.txt - This file.
+license.txt - The license for this software (New BSD License).
+twitter.class.php - The core Twitter class source.
+send.php - Example sending message to Twitter.
+load.php - Example loading statuses from Twitter.
diff --git a/mod/twitterservice/vendors/twitter/send.php b/mod/twitterservice/vendors/twitter/send.php
new file mode 100644
index 000000000..f8bea6f6e
--- /dev/null
+++ b/mod/twitterservice/vendors/twitter/send.php
@@ -0,0 +1,9 @@
+<?php
+
+require_once 'twitter.class.php';
+
+
+$twitter = new Twitter('pokusnyucet2', '123456');
+$status = $twitter->send('Mám se fajn II');
+
+echo $status ? 'OK' : 'ERROR';
diff --git a/mod/twitterservice/vendors/twitter/twitter.class.php b/mod/twitterservice/vendors/twitter/twitter.class.php
new file mode 100644
index 000000000..457bede4c
--- /dev/null
+++ b/mod/twitterservice/vendors/twitter/twitter.class.php
@@ -0,0 +1,142 @@
+<?php
+
+/**
+ * Twitter for PHP - library for sending messages to Twitter and receiving status updates.
+ *
+ * @author David Grudl (+ Bugfix by Curverider)
+ * @copyright Copyright (c) 2008 David Grudl
+ * @license New BSD License
+ * @link http://phpfashion.com/
+ * @version 1.0_MP
+ */
+class Twitter
+{
+ /** @var int */
+ public static $cacheExpire = 1800; // 30 min
+
+ /** @var string */
+ public static $cacheDir;
+
+ /** @var user name */
+ private $user;
+
+ /** @var password */
+ private $pass;
+
+
+
+ /**
+ * Creates object using your credentials.
+ * @param string user name
+ * @param string password
+ * @throws Exception
+ */
+ public function __construct($user, $pass)
+ {
+ if (!extension_loaded('curl')) {
+ throw new Exception('PHP extension CURL is not loaded.');
+ }
+
+ $this->user = $user;
+ $this->pass = $pass;
+ }
+
+
+
+ /**
+ * Sends message to the Twitter.
+ * @param string message encoded in UTF-8
+ * @return boolean TRUE on success or FALSE on failure
+ */
+ public function send($message)
+ {
+ $result = $this->httpRequest(
+ 'https://twitter.com/statuses/update.xml',
+ array('status' => $message)
+ );
+ return strpos($result, '<created_at>') !== FALSE;
+ }
+
+
+
+ /**
+ * Returns the 20 most recent statuses posted from you and your friends (optionally).
+ * @param bool with friends?
+ * @return SimpleXMLElement
+ * @throws Exception
+ */
+ public function load($withFriends, $since = '')
+ {
+ $line = $withFriends ? 'friends_timeline' : 'user_timeline';
+ $url = "http://twitter.com/statuses/$line/$this->user.xml";
+ //if (!empty($since))
+ // $url .= "?since=" . urlencode($since);
+ $feed = $this->httpRequest($url);
+ if ($feed === FALSE) {
+ throw new Exception('Cannot load channel.');
+ }
+
+ $xml = new SimpleXMLElement($feed);
+ if (!$xml || !$xml->status) {
+ throw new Exception('Invalid channel.');
+ }
+
+ return $xml;
+ }
+
+
+
+ /**
+ * Process HTTP request.
+ * @param string URL
+ * @param array post data
+ * @return string|FALSE
+ */
+ private function httpRequest($url, $post = NULL)
+ {
+ /*
+ if (!$post && self::$cacheDir) {
+ $cacheFile = self::$cacheDir . '/twitter.' . md5($url) . '.xml';
+ if (@filemtime($cacheFile) + self::$cacheExpire > time()) {
+ return file_get_contents($cacheFile);
+ }
+ }
+ */
+
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, $url);
+ // curl_setopt($curl, CURLOPT_USERPWD, "$this->user:$this->pass");
+ curl_setopt($curl, CURLOPT_HEADER, FALSE);
+ curl_setopt($curl, CURLOPT_TIMEOUT, 20);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
+ curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
+ curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
+ if ($post) {
+ curl_setopt($curl, CURLOPT_USERPWD, "$this->user:$this->pass");
+ curl_setopt($curl, CURLOPT_POST, TRUE);
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
+ }
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); // no echo, just return result
+ $result = curl_exec($curl);
+ $ok = curl_errno($curl) === 0 && curl_getinfo($curl, CURLINFO_HTTP_CODE) === 200;
+
+ if (!$ok) {
+ if (isset($cacheFile)) {
+ $result = @file_get_contents($cacheFile);
+ if (is_string($result)) {
+ return $result;
+ }
+ }
+ return FALSE;
+ }
+
+ /*
+ if (isset($cacheFile)) {
+ file_put_contents($cacheFile, $result);
+ }
+ */
+
+ return $result;
+ }
+
+}