Changeset 138

Show
Ignore:
Timestamp:
12/25/07 16:17:35 (5 years ago)
Author:
d0nut
Message:

released version 0.0.6 of trackback util - receiving trackbacks works!

Location:
trackback
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • trackback/de.xml

    r34 r138  
    1818                <item name="wbb.thread.post.trackback.excerpt"><![CDATA[Ausschnitt]]></item> 
    1919                <item name="wbb.thread.post.trackback.url"><![CDATA[URL]]></item> 
     20                <item name="wbb.thread.post.trackback.active"><![CDATA[Track- und Pingbacks sind fÃŒr diesen Beitrag aktiviert.]]></item> 
    2021        </category> 
    2122         
  • trackback/en.xml

    r34 r138  
    1818                <item name="wbb.thread.post.trackback.excerpt"><![CDATA[Excerpt]]></item> 
    1919                <item name="wbb.thread.post.trackback.url"><![CDATA[URL]]></item> 
     20                <item name="wbb.thread.post.trackback.active"><![CDATA[You can add track- und pingbacks to this posting.]]></item> 
    2021        </category> 
    2122         
  • trackback/files/lib/system/event/listener/ThreadAddFormTrackbackListener.class.php

    r136 r138  
    8888                } 
    8989                 
    90                 // send trackbacks 
    91                 $this->sendTrackbackData($postID); 
    92  
    9390                // UPDATE 
    9491                $sql = "UPDATE          wbb".WBB_N."_post 
     
    9794 
    9895                WBBCore::getDB()->sendQuery($sql); 
     96                 
     97                // send trackbacks 
     98                if($this->hasTrackback) { 
     99                        $this->sendTrackbackData($postID); 
     100                } 
    99101        } 
    100102         
  • trackback/files/lib/system/event/listener/ThreadPageTrackbackListener.class.php

    r136 r138  
    4242                         
    4343                        // assign trackback data 
    44                         WBBCore::getTPL()->assign( 
    45                                 'postTrackbacks',  
    46                                 $postTrackbacks 
    47                         ); 
     44                        WBBCore::getTPL()->assign(array( 
     45                                'postTrackbacks'=>$postTrackbacks, 
     46                                'hasTrackbacks'=>array_flip(array_map(create_function('$a', 'return $a->getID();'), $check)) 
     47                        )); 
    4848                         
    4949                        // append head data for rdf information 
  • trackback/files/lib/util/TrackbackUtil.class.php

    r137 r138  
    5454         */ 
    5555        public static function getRDF($postPermalink, $postID, $postTopic, $postPreview, $postUsername, $postTime) { 
     56                $postPermalink = html_entity_decode($postPermalink); 
    5657                $page_url = FileUtil::addTrailingSlash(PAGE_URL); 
    5758                return '<link rel="pingback" href="'.$page_url.'index.php?action=Pingback" /> 
     
    6364        rdf:about="'.$postPermalink.'" 
    6465        dc:identifier="'.$postPermalink.'" 
    65         trackback:ping="index.php?action=Trackback&amp;postID='.$postID.'" 
     66        trackback:ping="index.php?action=Trackback&postID='.$postID.'" 
    6667        dc:title="'.$postTopic.'" 
    6768        dc:subject="TrackBack" 
     
    177178        protected static function discover_pingback_uri($url, &$contents) { 
    178179                $pingbacks = array(); // return var 
    179  
     180                 
    180181                $byte_count = 0; 
     182                $contents = ''; 
    181183                $headers = ''; 
    182184                $pingback_str_dquote = 'rel="pingback"'; 
     
    185187                $pingback_href_original_pos = 27; 
    186188 
    187                 // parse url 
    188                 $parse = parse_url($url); 
    189                 $host =  (isset($parse['host'])) ? $parse['host'] : null; 
    190                 $path  = (isset($parse['path'])) ? $parse['path'] : '/'; 
    191                 $path .= (isset($parse['query'])) ? "?".$parse['query'] : ''; 
    192                 $port  = (isset($parse['port'])) ? $parse['port'] : 80; 
     189                extract(parse_url($url), EXTR_SKIP); 
     190 
     191                if ( !isset($host) ) // Not an URL. This should never happen. 
     192                return false; 
     193 
     194                $path  = ( !isset($path) ) ? '/'          : $path; 
     195                $path .= ( isset($query) ) ? '?' . $query : ''; 
     196                $port  = ( isset($port)  ) ? $port        : 80; 
    193197 
    194198                // Try to connect to the server at $host 
     
    198202 
    199203                // Send the GET request 
    200                 $request = "GET {$path} HTTP/1.1\r\nHost: $host\r\nUser-Agent: {self::agent} \r\n\r\n"; 
     204                $request = "GET $path HTTP/1.1\r\nHost: $host\r\nUser-Agent: ".self::$agent." \r\n\r\n"; 
     205                // ob_end_flush(); 
    201206                fputs($fp, $request); 
    202207 
     
    204209                while ( !feof($fp) ) { 
    205210                        $line = fgets($fp, 512); 
    206                         if(trim($line) == '') //empty line = headers complete 
     211                        if ( trim($line) == '' ) 
    207212                                break; 
    208  
    209213                        $headers .= trim($line)."\n"; 
    210214                        $x_pingback_header_offset = strpos(strtolower($headers), $x_pingback_str); 
    211  
    212                         if($x_pingback_header_offset) { 
     215                        if ( $x_pingback_header_offset ) { 
    213216                                // We got it! 
    214217                                preg_match('#x-pingback: (.+)#is', $headers, $matches); 
    215218                                $pingbacks[] = trim($matches[1]); 
     219                                return $pingbacks; 
    216220                        } 
    217  
    218                         if(strpos(strtolower($headers), 'content-type: ')) { 
     221                        if ( strpos(strtolower($headers), 'content-type: ') ) { 
    219222                                preg_match('#content-type: (.+)#is', $headers, $matches); 
    220223                                $content_type = trim($matches[1]); 
     
    230233                        $pingback_link_offset_dquote = strpos($contents, $pingback_str_dquote); 
    231234                        $pingback_link_offset_squote = strpos($contents, $pingback_str_squote); 
    232                         if($pingback_link_offset_dquote || $pingback_link_offset_squote) { 
    233                                 $quote = ($pingback_link_offset_dquote) ? '"' : '\''; 
    234                                 $pingback_link_offset = ($quote=='"') ? $pingback_link_offset_dquote : $pingback_link_offset_squote; 
    235                                 $pingback_href_pos = @strpos($contents, 'href=', $pingback_link_offset); 
    236                                 $pingback_href_start = $pingback_href_pos+6; 
    237                                 $pingback_href_end = @strpos($contents, $quote, $pingback_href_start); 
    238                                 $pingback_server_url_len = $pingback_href_end - $pingback_href_start; 
    239                                 $pingback_server_url = substr($contents, $pingback_href_start, $pingback_server_url_len); 
    240                                 // We may find rel="pingback" but an incomplete pingback URL 
    241                                 if ( $pingback_server_url_len > 0 ) { 
    242                                         // We got it! 
    243                                         $pingbacks[] = $pingback_server_url; 
    244                                 } 
     235                        if ( $pingback_link_offset_dquote || $pingback_link_offset_squote ) { 
     236                        $quote = ($pingback_link_offset_dquote) ? '"' : '\''; 
     237                        $pingback_link_offset = ($quote=='"') ? $pingback_link_offset_dquote : $pingback_link_offset_squote; 
     238                        $pingback_href_pos = @strpos($contents, 'href=', $pingback_link_offset); 
     239                        $pingback_href_start = $pingback_href_pos+6; 
     240                        $pingback_href_end = @strpos($contents, $quote, $pingback_href_start); 
     241                        $pingback_server_url_len = $pingback_href_end - $pingback_href_start; 
     242                        $pingback_server_url = substr($contents, $pingback_href_start, $pingback_server_url_len); 
     243                        // We may find rel="pingback" but an incomplete pingback URL 
     244                        if ( $pingback_server_url_len > 0 ) // We got it! 
     245                                $pingbacks[] = $pingback_server_url; 
     246                                break; 
    245247                        } 
    246248                        $byte_count += strlen($line); 
    247                         if ( $byte_count > self::$timeout_bytes ) { 
     249                        if ( $byte_count > $timeout_bytes ) { 
    248250                                // It's no use going further, there probably isn't any pingback 
    249251                                // server to find in this file. (Prevents loading large files.) 
     
    298300                $client = new IXR_Client($pingbackurl); 
    299301                $client->timeout = 3; 
    300                 $client->useragent = self::agent; 
     302                $client->useragent = self::$agent; 
    301303 
    302304                // when set to true, this outputs debug messages by itself 
     
    305307                // Already registered 
    306308                if ($client->query('pingback.ping', $url, $alienurl) || (isset($client->error->code) && 48 == $client->error->code)) { 
    307                         add_ping($post_ID, $pagelinkedto); 
     309                        add_ping($post_ID, $alienurl); 
    308310                } 
    309311        } 
     
    357359                        );"; 
    358360 
    359                 WBBCore::getDB()->sendQuery($sql); 
     361                @WBBCore::getDB()->sendQuery($sql); 
    360362        } 
    361363}  
  • trackback/package.xml

    r136 r138  
    66                <packagedescription>Allows sending and receiving from track- and pingbacks.</packagedescription> 
    77                <packagedescription languagecode="de">Das Plugin erlaubt das Senden und Empfangen von Track- und Pingbacks.</packagedescription> 
    8                 <version>0.0.5</version> 
     8                <version>0.0.6</version> 
    99                <date>DATE</date> 
    1010                <plugin>com.woltlab.wbb</plugin> 
  • trackback/templates/postTrackback.tpl

    r136 r138  
    11{assign var="trackbackPostID" value=$post->getID()} 
     2{if $hasTrackbacks[$trackbackPostID]|isset} 
     3        {lang}wbb.thread.post.trackback.active{/lang} 
     4{/if} 
    25{if $postTrackbacks[$trackbackPostID]|isset} 
    36        <div class="trackbacks">