Changeset 1338
- Timestamp:
- 03/25/11 22:12:13 (2 years ago)
- Files:
-
- 1 removed
- 2 modified
-
twitter.retweet/files/lib/system/event/listener/TwitterRetweetListener.class.php (modified) (5 diffs)
-
twitter.retweet/install.sql (modified) (1 diff)
-
wavethread (deleted)
Legend:
- Unmodified
- Added
- Removed
-
twitter.retweet/files/lib/system/event/listener/TwitterRetweetListener.class.php
r1337 r1338 3 3 4 4 /** 5 * 6 * 5 * link retweet to trackback 6 * 7 7 * @author Torben Brodt 8 8 * @url http://trac.easy-coding.de/trac/wcf/wiki/twitter … … 15 15 */ 16 16 public function execute($eventObj, $className, $eventName) { 17 18 switch($className) { 19 case 'TwitterMessageEditor': 20 $this->messageEditor($eventObj); 21 break; 22 case 'AbstractPage': 23 //TODO: display retweets 24 break; 25 } 26 } 17 27 18 //TODO: display retweets 19 28 /** 29 * @param TwitterMessageEditor $eventObj 30 */ 31 protected function messageEditor($eventObj) { 20 32 foreach($eventObj->links as $link) { 21 22 23 33 $link = $this->rdfAutoDiscover($link); 24 25 if($this->isHomeLink($link)) { 26 $query = parse_url($link, PHP_URL_QUERY); 27 parse_str($query, $output); 28 29 $this->link($eventObj, $output['action'], $output['objectID'], $output['objectType'], $output['packageID']); 34 35 // skip foreign links 36 if(!$this->isHomeLink($link)) { 37 continue; 30 38 } 39 $query = parse_url($link, PHP_URL_QUERY); 40 parse_str($query, $output); 41 42 // skip strange links 43 if(!isset($output['objectType'], $output['packageID'], $output['objectID'])) { 44 continue; 45 } 46 47 $adapterID = $this->getAdapterID($output['objectType'], intval($output['packageID'])); 48 49 $sql = 'INSERT IGNORE INTO 50 wcf'.WCF_N.'_twitter_message_retweet 51 (messageID, adapterID, objectID, time) 52 VALUES ('.intval($eventObj->messageID).', '.intval($adapterID).', 53 '.intval($output['objectID']).', '.TIME_NOW.')'; 54 55 WCF::getDB()->sendQuery($sql); 31 56 } 32 57 } 33 58 34 59 /** 35 * 60 * @return boolean 36 61 */ 37 62 protected function isHomeLink($link) { … … 40 65 } 41 66 42 // TODO: does this link point to PAGE_URL ? 43 44 return true; 67 return preg_match('/^'.preg_quote(PAGE_URL, '/').'/', $link); 45 68 } 46 69 47 protected function link() { 48 // TODO: insert wcf1_twitter_message_retweet 70 /** 71 * @return integer 72 */ 73 protected function getAdapterID() { 74 // get cache 75 WCF::getCache()->addResource( 76 'trackback-adapter', 77 WCF_DIR.'cache/cache.trackback-adapter.php', 78 WCF_DIR.'lib/system/cache/CacheBuilderTrackbackAdapter.class.php' 79 ); 80 $cache = WCF::getCache()->get('trackback-adapter'); 81 82 // try to find a matching trackback adapter 83 if (isset($cache[$objectType])) { 84 foreach ($cache[$objectType] as $adapter) { 85 if ($adapter['packageID'] == $packageID) { 86 return $adapter['adapterID']; 87 } 88 } 89 } 90 return 0; 49 91 } 50 92 51 93 /** 52 94 * @return string … … 56 98 $pageContent = @file_get_contents($trackbackURL); 57 99 $didDiscover = false; 58 100 59 101 if ($pageContent !== false) { 60 102 // search for RDF instructions … … 64 106 // get pingback URL 65 107 if (preg_match('/trackback\:ping\=\"([^"]+)\"/isU', $rdfInstructions, $pingbackURL)) { 66 67 108 return $pingbackURL[1]; 68 109 } -
twitter.retweet/install.sql
r1337 r1338 5 5 adapterID INT(10) unsigned NOT NULL, 6 6 objectID INT(10) unsigned NOT NULL, 7 time INT(10) NOT NULL DEFAULT 0, 7 8 PRIMARY KEY (messageID), 8 9 INDEX (adapterID, objectID)
