Changeset 1305
- Timestamp:
- 02/21/11 20:23:52 (2 years ago)
- Location:
- Files:
-
- 6 modified
-
de.xml (modified) (1 diff)
-
eventlistener.xml (modified) (1 diff)
-
files/lib/system/cronjob/TwitterUpdateJob.class.php (modified) (1 diff)
-
files/lib/system/event/listener/UserLoginTwitterListener.class.php (modified) (3 diffs)
-
install.sql (modified) (1 diff)
-
package.xml (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
twitter/de.xml
r1299 r1305 10 10 <item name="wcf.acp.option.twitter_user.description"><![CDATA[Geben Sie hier den Namen ihres Twitter Accounts ein.]]></item> 11 11 <item name="wcf.acp.option.twitter_consumer_key"><![CDATA[Consumer Key]]></item> 12 <item name="wcf.acp.option.twitter_consumer_key.description"><![CDATA[Geben Sie hier den Consumer Key ein, d ieSie auf <a href="http://dev.twitter.com/apps">Twitter</a> erhalten haben.]]></item>12 <item name="wcf.acp.option.twitter_consumer_key.description"><![CDATA[Geben Sie hier den Consumer Key ein, den Sie auf <a href="http://dev.twitter.com/apps">Twitter</a> erhalten haben.]]></item> 13 13 <item name="wcf.acp.option.twitter_consumer_secret"><![CDATA[Consumer Secret]]></item> 14 14 <item name="wcf.acp.option.twitter_consumer_secret.description"><![CDATA[Geben Sie hier das Consumer Secret ein, das Sie auf <a href="http://dev.twitter.com/apps">Twitter</a> erhalten haben.]]></item> -
twitter/eventlistener.xml
r1290 r1305 3 3 <data> 4 4 <import> 5 <eventlistener> 6 <eventclassname>SessionFactory</eventclassname> 7 <eventname>didInit</eventname> 8 <listenerclassfile>lib/system/event/listener/UserLoginTwitterListener.class.php</listenerclassfile> 9 </eventlistener> 5 10 <eventlistener> 6 11 <eventclassname>UserLoginForm</eventclassname> -
twitter/files/lib/system/cronjob/TwitterUpdateJob.class.php
r1303 r1305 11 11 */ 12 12 class TwitterUpdateJob implements Cronjob { 13 13 14 14 /** 15 15 * @see Cronjob::execute() 16 16 */ 17 17 public function execute($data) { 18 $system_user = $this->getSystemUser(); 19 20 // no system user yet? 21 if(!$system_user) { 22 return; 23 } 18 $action = 'user_timeline'; 24 19 25 $twitter = Twitter::getInstance(); 26 27 /* 28 http://api.twitter.com/version/statuses/user_timeline.format 29 * since_id 30 * count 31 * trim_user 32 33 http://api.twitter.com/version/statuses/mentions.format 34 * since_id 35 * count 36 * trim_user 37 38 @return 39 * text 40 * id 41 */ 42 } 43 44 protected function getSystemUser() { 45 $sql = "SELECT utt.* 20 $sql = "SELECT *, 21 ta.screen_name = '".escapeString(TWITTER_USER)."' AS doSave 46 22 FROM wcf".WCF_N."_twitter_account ta 47 23 INNER JOIN wcf".WCF_N."_user_to_twitter utt ON utt.accountID = ta.accountID 48 WHERE ta.screen_name = '".escapeString(TWITTER_USER)."'"; 49 return WCF::getDB()->getFirstRow($sql); 24 LEFT JOIN wcf".WCF_N."_twitter_import ti ON ti.accountID = ta.accountID 25 WHERE (ISNULL(ti.action) OR (ti.action = '".escapeString($action)."'))"; 26 27 $result = WCF::getDB()->sendQuery($sql); 28 while ($row = WCF::getDB()->fetchArray($result)) { 29 $this->load($row, $action); 30 } 31 } 32 33 /** 34 * 35 */ 36 public function load($me, $action) { 37 $twitterObj = Twitter::getInstance(); 38 $twitterObj->setToken($me['userToken'], $me['userSecret']); 39 40 $opts = array( 41 'since_id' => $me['since_id'], 42 'trim_user' => 1, 43 ); 44 45 $list = $twitterObj->get('/statuses/'.$action.'.json', $opts); 46 47 foreach($list as $message) { 48 if($me['doSave']) { 49 // TODO: check column documentation 50 $sql = 'INSERT IGNORE INTO twitter_message 51 (messageID, accountID, username, message, time) 52 VALUES ('.intval($message->id).', '.intval($me['accountID']).', 53 "'.escapeString($me['screen_name']).'", "'.escapeString($message->text).'", 54 '.intval($message->time).')'; 55 WCF::getDB()->sendQuery($sql); 56 } 57 58 // TODO: check wether the list is sorted ascending or descending 59 // TODO: update useroption with current status 60 } 50 61 } 51 62 } -
twitter/files/lib/system/event/listener/UserLoginTwitterListener.class.php
r1298 r1305 10 10 */ 11 11 class UserLoginTwitterListener implements EventListener { 12 protected static $ignoreForms = array( 13 'rulesagree', 14 'userprofileedit', 15 'accountmanagement', 16 ); 17 protected static $ignorePages = array( 18 'legalnotice' 19 ); 12 20 13 21 /** … … 20 28 21 29 switch($className) { 30 31 // did agree with rules? 32 case 'SessionFactory': 33 // didInit 34 $this->validateRuleAgree($eventObj->session); 35 break; 36 22 37 // login or register with twitter 23 38 case 'UserLoginForm': … … 69 84 } 70 85 } 86 87 /** 88 * 89 */ 90 protected function validateRuleAgree($session) { 91 92 // if the modul deactivated, or the user must no agree the rules, we can leave the event. 93 // if we log out or on the rulesagree page, we also leave the event. 94 if (MODULE_RULE == 0 || $session->getUser()->getPermission('admin.general.canIgnoreRules')) return; 95 if ((isset($_REQUEST['action']) && strtolower($_REQUEST['action']) == 'userlogout') || (isset($_REQUEST['form']) && in_array(strtolower($_REQUEST['form']), self::$ignoreForms)) || (isset($_REQUEST['page']) && in_array(strtolower($_REQUEST['page']), self::$ignorePages))) return; 96 97 // if the modul activate and the user is twitter user he must agree the rules after a change, and the user is not a guest. 98 if ($session->getUser()->userID && TwitterUtil::hasTwitterUser($session->getUser()->userID)) { 99 // select all packageids of the packages where the user is agree with the rules. 100 $packageIDs = $session->getVar('package_agrees'); 101 102 // if the packageid array null or the current package is not in the id, must check the agreement. 103 if (is_null($packageIDs) || !in_array(PACKAGE_ID, $packageIDs)) { 104 // we check the agreement, is the user agree with the rules, we put the package id in to the array and leave the event. 105 if (Ruleset::isUserAgree($session->getUser()->userID, PACKAGE_ID)) { 106 if (is_null($packageIDs) || !is_array($packageIDs)) 107 $packageIDs = array(PACKAGE_ID); 108 else $packageIDs[] = PACKAGE_ID; 109 $session->register('package_agrees', $packageIDs); 110 return; 111 } 112 HeaderUtil::redirect('index.php?form=RulesAgree'.SID_ARG_2ND_NOT_ENCODED, false); 113 exit; 114 } 115 } 116 } 71 117 } 72 118 ?> -
twitter/install.sql
r1298 r1305 25 25 KEY (accountID) 26 26 ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 27 28 DROP TABLE IF EXISTS wcf1_twitter_import; 29 CREATE TABLE wcf1_twitter_import ( 30 accountID BIGINT unsigned NOT NULL, 31 action VARCHAR(255) NULL, 32 since_id BIGINT unsigned NOT NULL, 33 UNIQUE KEY (accountID, action) 34 ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -
twitter/package.xml
r1303 r1305 4 4 <packagename><![CDATA[Twitter (WCF)]]></packagename> 5 5 <packagedescription><![CDATA[Twitter is a service for friends, family, and co–workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?]]></packagedescription> 6 <version>2. 0.0</version>6 <version>2.1.0</version> 7 7 <date>DATE</date> 8 8 <isunique>1</isunique> … … 36 36 <!-- languages --> 37 37 <languages languagecode="de">de.xml</languages> 38 <languages languagecode="de-informal">de.xml</languages> 38 39 <languages languagecode="en">en.xml</languages> 40 </instructions> 41 <instructions type="update" fromversion="2.0.0"> 42 <files>files.tar</files> 43 <eventlistener>eventlistener.xml</eventlistener> 44 <languages languagecode="de">de.xml</languages> 45 <languages languagecode="de-informal">de.xml</languages> 39 46 </instructions> 40 47 <instructions type="update" fromversion="1.1.2"> … … 55 62 <!-- languages --> 56 63 <languages languagecode="de">de.xml</languages> 64 <languages languagecode="de-informal">de.xml</languages> 57 65 <languages languagecode="en">en.xml</languages> 58 66 </instructions>
