Changeset 32

Show
Ignore:
Timestamp:
09/30/07 00:15:36 (6 years ago)
Author:
d0nut
Message:

updated trackback to 0.3.
new trackbacks are sent correctly, old trackbacks are not repeated.

Location:
trackback
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • trackback/de.xml

    r29 r32  
    1717        <category name="wbb.threadAdd"> 
    1818                <item name="wbb.threadAdd.settings.hasTrackback"><![CDATA[Trackback aktivieren]]></item> 
    19                 <item name="wbb.threadAdd.settings.hasTrackback.description"><![CDATA[]]></item> 
     19                <item name="wbb.threadAdd.settings.hasTrackback.description"><![CDATA[Trackbacks erlauben ihnen automatisch Nachrichten und Backlinks auszutauschen. Optional können Sie Trackbacks direkt versenden.]]></item> 
    2020                <item name="wbb.threadAdd.settings.trackbackUrls"><![CDATA[Trackbacks senden an]]></item> 
    2121                <item name="wbb.threadAdd.settings.trackbackUrls.description"><![CDATA[Mehrere URLs trennen Sie bitte mit einem Zeilenumbruch.]]></item> 
  • trackback/en.xml

    r29 r32  
    1717        <category name="wbb.threadAdd"> 
    1818                <item name="wbb.threadAdd.settings.hasTrackback"><![CDATA[activete trackbacks]]></item> 
    19                 <item name="wbb.threadAdd.settings.hasTrackback.description"><![CDATA[]]></item> 
     19                <item name="wbb.threadAdd.settings.hasTrackback.description"><![CDATA[Trackbacks allow you to automatically receive messages and backlinks. Optionally you can send trackbacks directly.]]></item> 
    2020                <item name="wbb.threadAdd.settings.trackbackUrls"><![CDATA[send trackbacks to]]></item> 
    2121                <item name="wbb.threadAdd.settings.trackbackUrls.description"><![CDATA[Please divide multiple urls with a linebreak.]]></item> 
  • trackback/eventlistener.xml

    r1 r32  
    2323                        <eventclassname>ThreadAddForm</eventclassname> 
    2424                        <inherit>1</inherit> 
    25                         <eventname>saved</eventname> 
     25                        <eventname>readData</eventname> 
    2626                        <listenerclassfile>lib/system/event/listener/ThreadAddFormTrackbackListener.class.php</listenerclassfile> 
    2727                </eventlistener> 
    2828                <eventlistener> 
    29                         <eventclassname>PostEditForm</eventclassname> 
    30                         <eventname>readData</eventname> 
     29                        <eventclassname>ThreadAddForm</eventclassname> 
     30                        <inherit>1</inherit> 
     31                        <eventname>saved</eventname> 
    3132                        <listenerclassfile>lib/system/event/listener/ThreadAddFormTrackbackListener.class.php</listenerclassfile> 
    3233                </eventlistener> 
  • trackback/files/lib/system/event/listener/ThreadAddFormTrackbackListener.class.php

    r29 r32  
    2020        protected $trackbackUrls = ""; 
    2121        protected $trackbackUrlsOld = ""; 
    22         protected $trackbackData = ""; 
     22 
    2323        protected $url, $title, $excerpt, $author; 
    2424 
     
    5050         */ 
    5151        protected function readData () { 
    52                 if (!count($_POST)) { 
    53                         $this->hasTrackback = $this->eventObj->post->hasTrackback; 
    54                         $this->trackbackUrls = $this->eventObj->post->trackbackUrls; 
    55                          
    56                         // remember old trackback urls 
    57                         $this->trackbackUrlsOld = $this->eventObj->post->trackbackUrls 
    58                 } 
     52                $this->hasTrackback = $this->eventObj->post->hasTrackback; 
     53                $this->trackbackUrls = $this->eventObj->post->trackbackUrls; 
     54                $this->trackbackUrlsOld = $this->eventObj->post->trackbackUrls; 
    5955        } 
    6056 
     
    6561                if (isset($_REQUEST['hasTrackback'])) $this->hasTrackback = intval($_REQUEST['hasTrackback']); 
    6662                if (isset($_REQUEST['trackbackUrls'])) $this->trackbackUrls = $_REQUEST['trackbackUrls']; 
     63                if (isset($_REQUEST['trackbackUrlsOld'])) $this->trackbackUrlsOld = $_REQUEST['trackbackUrlsOld']; 
    6764        } 
    6865         
     
    7370                WBBCore::getTPL()->assign(array( 
    7471                                'hasTrackback' => $this->hasTrackback, 
    75                                 'trackbackUrls', $this->trackbackUrls 
     72                                'trackbackUrls'=> $this->trackbackUrls 
    7673                        )); 
    7774                WBBCore::getTPL()->append('additionalSettings', WBBCore::getTPL()->fetch('postTrackbackSetting')); 
     
    9996                // send new trackbacks to given urls 
    10097                $this->discoverNewTrackbacks(); 
    101                  
    102                 // prepare given urls for database usage 
    103                 $urls = addslashes($this->trackbackUrls); 
    10498 
    10599                // UPDATE 
    106100                $sql = "UPDATE          wbb".WBB_N."_post 
    107101                        SET             hasTrackback    = {$this->hasTrackback}, 
    108                                         trackbackUrls   = '{$urls}' 
     102                                        trackbackUrls   = '".escapeString($this->trackbackUrls)."' 
    109103                        WHERE           postID          = {$postID};"; 
    110104 
     
    131125         */ 
    132126        private function discoverNewTrackbacks() { 
     127                $newlist = explode(' ', $this->trackbackUrls); 
    133128                $oldlist = explode(' ', $this->trackbackUrlsOld); 
    134129                 
    135130                // Trackback 
    136131                $trackback = new TrackbackUtil(PAGE_TITLE, $this->author, CHARSET); 
    137                 $tb_array = $trackback->auto_discovery($this->trackbackUrls); 
     132                //$tb_array = $trackback->auto_discovery($this->eventObj->post->message); 
    138133                 
    139134                // Found trackbacks in TEXT. Looping... 
    140                 foreach($tb_array as $tb_key => $tb_url) { 
    141  
    142                         // skip existing trackbacks 
    143                         if(in_array($tb_url, $oldlist)) { 
    144                                 continue; 
    145                         } 
    146                          
     135                foreach(array_diff($newlist, $oldlist) as $tb_url) { 
    147136                        // Attempt to ping each new one... 
    148137                        $trackback->ping($tb_url, $this->url, $this->title, $this->excerpt); 
  • trackback/files/lib/system/event/listener/ThreadPageTrackbackListener.class.php

    r29 r32  
    3939                $excerpt = StringUtil::substring($row['firstPostPreview'],0,255); 
    4040                $author = $row['username']; 
    41                 $date = date("r", $row['time']); 
     41                $date = date("r", intval($row['time'])); 
    4242                $trackbackUrl = sprintf('index.php?action=Trackback&threadID=%d', $row['threadID']); 
    4343                $url = $row['url']; 
    4444 
    4545                // Trackback 
    46                 $trackback = new TrackbackUtil(PAGE_TITLE, $this->author, CHARSET); 
     46                $trackback = new TrackbackUtil(PAGE_TITLE, WCF::getUser()->username, CHARSET); 
    4747                $rdf = $trackback->rdf_autodiscover($date, $title, $excerpt, $url, $trackbackUrl, $author); 
    4848 
  • trackback/files/lib/util/TrackbackUtil.class.php

    r29 r32  
    2424         
    2525        /** 
     26         * Sends a trackback ping to a specified trackback URL. 
     27         * allowing clients to auto-discover the TrackBack Ping URL.  
     28         *  
     29         * @param string $tb  
     30         * @param string $url  
     31         * @param string $title  
     32         * @param string $excerpt  
     33         * @return boolean  
     34         */ 
     35        public function ping($tb, $url, $title = "", $excerpt = "") { 
     36                $target = parse_url($tb); 
     37                if(!array_key_exists('path', $target)) { 
     38                        $tb .= '/'; 
     39                } 
     40                 
     41                @parent::ping($tb, $url, $title, $excerpt); 
     42        } 
     43         
     44        /** 
    2645         * @param postIDs 
    27          * @return u 
     46         * @return array 
    2847         */ 
    29         public getPost($postIDs) { 
     48        public function getPost($postIDs) { 
    3049                if(!is_array($postIDs)) 
    3150                        $postIDs = array($postIDs); 
     
    3655                        LEFT JOIN       wbb".WBB_N."_thread thread 
    3756                        ON              (thread.threadID=post.threadID) 
    38                         WHERE           postID IN (".$postIDs."); "; 
     57                        WHERE           postID IN (".implode(',', $postIDs)."); "; 
    3958 
    4059                $row = WCF::getDB()->getFirstRow($sql); 
    4160                                 
    4261                // build thread url 
    43                 if($row && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD && file_exists(WCF_DIR.'lib/page/PublicSEORewriter.class.php')) { 
     62                if($row && defined('SEO_ENABLED') && SEO_ENABLED && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD && file_exists(WCF_DIR.'lib/page/PublicSEORewriter.class.php')) { 
    4463                        require_once(WCF_DIR.'lib/page/PublicSEORewriter.class.php'); 
    4564                        $rewriter = new PublicSEORewriter(); 
     
    4968                         
    5069                        // public seo rewriter use 
    51                         return $rewriter->publicParseThreadURLs($row['threadID'], ''); 
     70                        $row['url'] = $rewriter->publicParseThreadURLs($row['threadID'], ''); 
    5271                } 
    5372                else if($row) { 
    54                         return sprintf('index.php?page=Thread&threadID=%d', $row['threadID']); 
     73                        $row['url'] = sprintf('index.php?page=Thread&threadID=%d', $row['threadID']); 
    5574                } 
    5675                 
  • trackback/install.sql

    r29 r32  
    1212  errorCount tinyint(1) unsigned NOT NULL, 
    1313  isSpam  tinyint(1) unsigned NOT NULL, 
    14   PRIMARY KEY (threadID, url) 
     14  PRIMARY KEY (postID, url) 
    1515) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
    1616 
  • trackback/package.xml

    r29 r32  
    55                <packagename>Trackback</packagename> 
    66                <packagedescription>Allow trackback for posts</packagedescription> 
    7                 <version>0.0.2</version> 
     7                <version>0.0.3</version> 
    88                <date>DATE</date> 
    99                <plugin>com.woltlab.wbb</plugin> 
     
    2121         
    2222        <optionalpackages> 
    23                 <optionalpackage file="optionals/de.easy-coding.wcf.data.page.publicseorewriter.tar.gz">de.easy-coding.wcf.data.page.publicseorewriter</optionalpackage> 
     23                <optionalpackage file="optionals/de.easy-coding.wcf.data.page.publicseorewriter.tar.gz" minversion="1.0.1">de.easy-coding.wcf.data.page.publicseorewriter</optionalpackage> 
    2424        </optionalpackages> 
    2525         
  • trackback/templates/postTrackbackSetting.tpl

    r29 r32  
    11{if $this->user->getPermission('user.board.canTrackback')} 
    2         <div class="formCheckBox"> 
    32                <div class="formField"> 
    4                         <label><input type="checkbox" name="hasTrackback" value="1" {if $hasTrackback == 1}checked="checked" {/if}/> {lang}wbb.threadAdd.settings.hasTrackback{/lang}</label> 
     3                        <label><input type="checkbox" onchange="document.getElementById('trackbackSetting').style.display = (this.checked?'block':'none');" name="hasTrackback" value="1" {if $hasTrackback}checked="checked" {/if}/> {lang}wbb.threadAdd.settings.hasTrackback{/lang}</label> 
     4                         
    55                </div> 
    66                <div class="formFieldDesc"> 
    77                        {lang}wbb.threadAdd.settings.hasTrackback.description{/lang} 
    88                </div> 
    9         </div> 
    109 
    11         <div class="formElement"> 
    12                 <div class="formFieldLabel"> 
    13                         <label for="trackbackUrls">{lang}wbb.threadAdd.settings.trackbackUrls{/lang}</label> 
     10                <div id="trackbackSetting" {if !$hasTrackback}style="display:none"{/if}> 
     11                        <div class="formField"> 
     12                                &nbsp; 
     13                        </div> 
     14                        <div class="formFieldDesc"> 
     15                                <input type="hidden" name="trackbackUrls" value="{$trackbackUrls}" /> 
     16                                <textarea name="trackbackUrls" id="trackbackUrls" rows="3" cols="20">{$trackbackUrls}</textarea><br /> 
     17                                <p>{lang}wbb.threadAdd.settings.trackbackUrls{/lang} - {lang}wbb.threadAdd.settings.trackbackUrls.description{/lang}</p> 
     18                        </div> 
    1419                </div> 
    15  
    16                 <div class="formField"> 
    17                         <textarea name="trackbackUrls" id="trackbackUrls" rows="3" cols="20">{@$trackbackUrls}</textarea> 
    18                 </div> 
    19                 <div class="formFieldDesc"> 
    20                         <p>{lang}wbb.threadAdd.settings.trackbackUrls.description{/lang}</p> 
    21                 </div> 
    22         </div> 
    2320{/if}