Changeset 1338

Show
Ignore:
Timestamp:
03/25/11 22:12:13 (2 years ago)
Author:
Torben Brodt
Message:

retweet update

Files:
1 removed
2 modified

Legend:

Unmodified
Added
Removed
  • twitter.retweet/files/lib/system/event/listener/TwitterRetweetListener.class.php

    r1337 r1338  
    33 
    44/** 
    5  *  
    6  *  
     5 * link retweet to trackback 
     6 * 
    77 * @author      Torben Brodt 
    88 * @url         http://trac.easy-coding.de/trac/wcf/wiki/twitter 
     
    1515         */ 
    1616        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        } 
    1727         
    18                 //TODO: display retweets 
    19          
     28        /** 
     29         * @param       TwitterMessageEditor    $eventObj 
     30         */ 
     31        protected function messageEditor($eventObj) { 
    2032                foreach($eventObj->links as $link) { 
    21                  
    22          
    2333                        $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; 
    3038                        } 
     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); 
    3156                } 
    3257        } 
    3358 
    3459        /** 
    35          * 
     60         * @return boolean 
    3661         */ 
    3762        protected function isHomeLink($link) { 
     
    4065                } 
    4166 
    42                 // TODO: does this link point to PAGE_URL ? 
    43  
    44                 return true; 
     67                return preg_match('/^'.preg_quote(PAGE_URL, '/').'/', $link); 
    4568        } 
    4669 
    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; 
    4991        } 
    50          
     92 
    5193        /** 
    5294         * @return string 
     
    5698                $pageContent = @file_get_contents($trackbackURL); 
    5799                $didDiscover = false; 
    58                  
     100 
    59101                if ($pageContent !== false) { 
    60102                        // search for RDF instructions 
     
    64106                                                // get pingback URL 
    65107                                                if (preg_match('/trackback\:ping\=\"([^"]+)\"/isU', $rdfInstructions, $pingbackURL)) { 
    66                                                          
    67108                                                        return $pingbackURL[1]; 
    68109                                                } 
  • twitter.retweet/install.sql

    r1337 r1338  
    55        adapterID INT(10) unsigned NOT NULL, 
    66        objectID INT(10) unsigned NOT NULL, 
     7        time INT(10) NOT NULL DEFAULT 0, 
    78        PRIMARY KEY (messageID), 
    89        INDEX (adapterID, objectID)