From 4766f36a4d74924f21ff329c4318ce4e069ffa04 Mon Sep 17 00:00:00 2001 From: brettp Date: Wed, 3 Mar 2010 17:53:05 +0000 Subject: Pulled in the interface changes. git-svn-id: http://code.elgg.org/elgg/trunk@5257 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/twitterservice/languages/en.php | 10 ++ mod/twitterservice/manifest.xml | 11 ++ mod/twitterservice/start.php | 54 ++++++++ mod/twitterservice/vendors/twitter/license.txt | 27 ++++ mod/twitterservice/vendors/twitter/load.php | 20 +++ mod/twitterservice/vendors/twitter/readme.txt | 55 ++++++++ mod/twitterservice/vendors/twitter/send.php | 9 ++ .../vendors/twitter/twitter.class.php | 142 +++++++++++++++++++++ .../default/usersettings/twitterservice/edit.php | 17 +++ 9 files changed, 345 insertions(+) create mode 100644 mod/twitterservice/languages/en.php create mode 100644 mod/twitterservice/manifest.xml create mode 100644 mod/twitterservice/start.php create mode 100644 mod/twitterservice/vendors/twitter/license.txt create mode 100644 mod/twitterservice/vendors/twitter/load.php create mode 100644 mod/twitterservice/vendors/twitter/readme.txt create mode 100644 mod/twitterservice/vendors/twitter/send.php create mode 100644 mod/twitterservice/vendors/twitter/twitter.class.php create mode 100644 mod/twitterservice/views/default/usersettings/twitterservice/edit.php (limited to 'mod/twitterservice') diff --git a/mod/twitterservice/languages/en.php b/mod/twitterservice/languages/en.php new file mode 100644 index 000000000..60ddb99b6 --- /dev/null +++ b/mod/twitterservice/languages/en.php @@ -0,0 +1,10 @@ + 'Twitter Service', + 'twitterservice:postwire' => 'By setting the following option all messages you post to The Wire will be sent to your twitter account. Do you want to post your messages from The Wire to Twitter?', + 'twitterservice:twittername' => 'Twitter username', + 'twitterservice:twitterpass' => 'Twitter password', + ); + + add_translation("en",$english); +?> \ No newline at end of file diff --git a/mod/twitterservice/manifest.xml b/mod/twitterservice/manifest.xml new file mode 100644 index 000000000..5aaeb79cd --- /dev/null +++ b/mod/twitterservice/manifest.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/mod/twitterservice/start.php b/mod/twitterservice/start.php new file mode 100644 index 000000000..b387379f2 --- /dev/null +++ b/mod/twitterservice/start.php @@ -0,0 +1,54 @@ +pluginspath . "twitterservice/vendors/twitter/twitter.class.php"); + + function twitterservice_init() + { + // Listen for wire create event + register_elgg_event_handler('create','object','twitterservice_wire_listener'); + + } + + /** + * Post a message to a twitter feed. + * + */ + function twitterservice_send($twittername, $twitterpass, $twittermessage) + { + $twitter = new Twitter($twittername, $twitterpass); + + return $twitter->send($twittermessage); + } + + /** + * Listen for thewire and push messages accordingly. + */ + function twitterservice_wire_listener($event, $object_type, $object) + { + + if (($object) && ($object->subtype == get_subtype_id('object', 'thewire')) ) + { + if (get_plugin_usersetting('sendtowire', $object->owner_guid, 'twitterservice')=='yes') + { + $twittername = get_plugin_usersetting('twittername', $object->owner_guid, 'twitterservice'); + $twitterpass = get_plugin_usersetting('twitterpass', $object->owner_guid, 'twitterservice'); + + if (($twittername) && ($twitterpass)) + twitterservice_send($twittername, $twitterpass, $object->description); + } + } + } + + register_elgg_event_handler('init','system','twitterservice_init'); +?> \ No newline at end of file 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 @@ +load($withFriends); + +?> + + 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 @@ +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 @@ +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, '') !== 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; + } + +} diff --git a/mod/twitterservice/views/default/usersettings/twitterservice/edit.php b/mod/twitterservice/views/default/usersettings/twitterservice/edit.php new file mode 100644 index 000000000..eb4896756 --- /dev/null +++ b/mod/twitterservice/views/default/usersettings/twitterservice/edit.php @@ -0,0 +1,17 @@ +

+ 'params[twittername]', 'value' => $vars['entity']->twittername)); ?> +

+

+ 'params[twitterpass]', 'value' => $vars['entity']->twitterpass)); ?> +

+ +

+ + + + +

+ \ No newline at end of file -- cgit v1.2.3