(bug 29475) Remove "trackback" feature entirely from core. This has been disabled...
authorChad Horohoe <demon@users.mediawiki.org>
Wed, 23 Nov 2011 17:14:03 +0000 (17:14 +0000)
committerChad Horohoe <demon@users.mediawiki.org>
Wed, 23 Nov 2011 17:14:03 +0000 (17:14 +0000)
If someone really really wants this, they can write an extension.

Language files need rebuilding, but I took care of En and messages.inc.

30 files changed:
RELEASE-NOTES-1.19
includes/Article.php
includes/AutoLoader.php
includes/DefaultSettings.php
includes/FakeTitle.php
includes/OutputPage.php
includes/SkinLegacy.php
includes/SkinTemplate.php
includes/Title.php
includes/User.php
includes/WikiPage.php
includes/actions/DeletetrackbackAction.php [deleted file]
includes/installer/MysqlUpdater.php
includes/installer/PostgresUpdater.php
languages/messages/MessagesEn.php
maintenance/archives/patch-trackbacks.sql [deleted file]
maintenance/fuzz-tester.php
maintenance/ibm_db2/foreignkeys.sql
maintenance/ibm_db2/tables.sql
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/mssql/tables.sql
maintenance/oracle/archives/patch_fk_rename_deferred.sql
maintenance/oracle/tables.sql
maintenance/postgres/mediawiki_mysql2postgres.pl
maintenance/postgres/tables.sql
maintenance/sqlite/archives/initial-indexes.sql
maintenance/tables.sql
trackback.php [deleted file]
trackback.php5 [deleted file]

index ed1df56..ad2d529 100644 (file)
@@ -156,6 +156,7 @@ production.
 * (bug 29747) eAccelerator shared memory caching has been removed since it is
   now disabled by default and is buggy. APC, XCache and WinCache are not affected.
 * Installer now refuses to install if php was not compiled with Ctype support.
+* (bug 29475) Remove "trackback" feature entirely from core
 
 === API changes in 1.19 ===
 * (bug 19838) siprop=interwikimap can now use the interwiki cache.
index 92e6f06..bb3ac37 100644 (file)
@@ -857,7 +857,7 @@ class Article extends Page {
         * Show the footer section of an ordinary page view
         */
        public function showViewFooter() {
-               global $wgOut, $wgUseTrackbacks;
+               global $wgOut;
 
                # check if we're displaying a [[User talk:x.x.x.x]] anonymous talk page
                if ( $this->getTitle()->getNamespace() == NS_USER_TALK && IP::isValid( $this->getTitle()->getText() ) ) {
@@ -868,11 +868,6 @@ class Article extends Page {
                # chance to mark this new article as patrolled.
                $this->showPatrolFooter();
 
-               # Trackbacks
-               if ( $wgUseTrackbacks ) {
-                       $this->addTrackbacks();
-               }
-
                wfRunHooks( 'ArticleViewFooter', array( $this ) );
 
        }
@@ -1220,46 +1215,6 @@ class Article extends Page {
                        '<span class="redirectText">' . $link . '</span></div>';
        }
 
-       /**
-        * Builds trackback links for article display if $wgUseTrackbacks is set to true
-        */
-       public function addTrackbacks() {
-               global $wgOut;
-
-               $dbr = wfGetDB( DB_SLAVE );
-               $tbs = $dbr->select( 'trackbacks',
-                       array( 'tb_id', 'tb_title', 'tb_url', 'tb_ex', 'tb_name' ),
-                       array( 'tb_page' => $this->mPage->getID() )
-               );
-
-               if ( !$dbr->numRows( $tbs ) ) {
-                       return;
-               }
-
-               $wgOut->preventClickjacking();
-
-               $tbtext = "";
-               foreach ( $tbs as $o ) {
-                       $rmvtxt = "";
-
-                       if ( $this->getContext()->getUser()->isAllowed( 'trackback' ) ) {
-                               $delurl = $this->getTitle()->getFullURL( "action=deletetrackback&tbid=" .
-                                       $o->tb_id . "&token=" . urlencode( $this->getContext()->getUser()->getEditToken() ) );
-                               $rmvtxt = wfMsg( 'trackbackremove', htmlspecialchars( $delurl ) );
-                       }
-
-                       $tbtext .= "\n";
-                       $tbtext .= wfMsgNoTrans( strlen( $o->tb_ex ) ? 'trackbackexcerpt' : 'trackback',
-                                       $o->tb_title,
-                                       $o->tb_url,
-                                       $o->tb_ex,
-                                       $o->tb_name,
-                                       $rmvtxt );
-               }
-
-               $wgOut->wrapWikiMsg( "<div id='mw_trackbacks'>\n$1\n</div>\n", array( 'trackbackbox', $tbtext ) );
-       }
-
        /**
         * Handle action=render
         */
@@ -1656,14 +1611,6 @@ class Article extends Page {
                }
        }
 
-       /**
-        * Removes trackback record for current article from trackbacks table
-        * @deprecated since 1.18
-        */
-       public function deletetrackback() {
-               return Action::factory( 'deletetrackback', $this )->show();
-       }
-
        /**
         * Info about this page
         * @deprecated since 1.19
index 8d2ec0e..307326a 100644 (file)
@@ -255,7 +255,6 @@ $wgAutoloadLocalClasses = array(
 
        # includes/actions
        'CreditsAction' => 'includes/actions/CreditsAction.php',
-       'DeletetrackbackAction' => 'includes/actions/DeletetrackbackAction.php',
        'HistoryAction' => 'includes/actions/HistoryAction.php',
        'HistoryPage' => 'includes/actions/HistoryAction.php',
        'HistoryPager' => 'includes/actions/HistoryAction.php',
index fd14eb4..7ff3ce3 100644 (file)
@@ -3472,7 +3472,6 @@ $wgGroupPermissions['sysop']['movefile']         = true;
 $wgGroupPermissions['sysop']['unblockself']      = true;
 $wgGroupPermissions['sysop']['suppressredirect'] = true;
 #$wgGroupPermissions['sysop']['mergehistory']     = true;
-#$wgGroupPermissions['sysop']['trackback']        = true;
 
 // Permission to change users' group assignments
 $wgGroupPermissions['bureaucrat']['userrights']  = true;
@@ -4124,14 +4123,6 @@ $wgAggregateStatsID = false;
  */
 $wgDisableCounters = false;
 
-/**
- * Support blog-style "trackbacks" for articles.  See
- * http://www.sixapart.com/pronet/docs/trackback_spec for details.
- *
- * If enabling this, you also need to grant the 'trackback' right to a group
- */
-$wgUseTrackbacks = false;
-
 /**
  * Parser test suite files to be run by parserTests.php when no specific
  * filename is passed to it.
@@ -5250,7 +5241,6 @@ $wgMaxRedirectLinksRetrieved = 500;
  */
 $wgActions = array(
        'credits' => true,
-       'deletetrackback' => true,
        'history' => true,
        'info' => true,
        'markpatrolled' => true,
index 88ee808..448820d 100644 (file)
@@ -112,8 +112,6 @@ class FakeTitle extends Title {
        function touchLinks() { $this->error(); }
        function getTouched( $db = null ) { $this->error(); }
        function getNotificationTimestamp( $user = null ) { $this->error(); }
-       function trackbackURL() { $this->error(); }
-       function trackbackRDF() { $this->error(); }
        function getNamespaceKey( $prepend = 'nstab-' ) { $this->error(); }
        function isSpecialPage() { $this->error(); }
        function isSpecial( $name ) { $this->error(); }
index 9d5c5a1..6b464ea 100644 (file)
@@ -2327,7 +2327,7 @@ $templates
         * @return String: The doctype, opening <html>, and head element.
         */
        public function headElement( Skin $sk, $includeStyle = true ) {
-               global $wgContLang, $wgUseTrackbacks;
+               global $wgContLang;
                $userdir = $this->getLanguage()->getDir();
                $sitedir = $wgContLang->getDir();
 
@@ -2356,10 +2356,6 @@ $templates
                        $this->getHeadItems()
                ) );
 
-               if ( $wgUseTrackbacks && $this->isArticleRelated() ) {
-                       $ret .= $this->getTitle()->trackbackRDF();
-               }
-
                $closeHead = Html::closeElement( 'head' );
                if ( $closeHead ) {
                        $ret .= "$closeHead\n";
index 855098e..5d1f4bd 100644 (file)
@@ -284,7 +284,7 @@ class LegacyTemplate extends BaseTemplate {
        }
 
        function bottomLinks() {
-               global $wgOut, $wgUser, $wgUseTrackbacks;
+               global $wgOut, $wgUser;
                $sep = wfMsgExt( 'pipe-separator', 'escapenoentities' ) . "\n";
 
                $s = '';
@@ -300,10 +300,6 @@ class LegacyTemplate extends BaseTemplate {
                        $element[] = $this->whatLinksHere();
                        $element[] = $this->watchPageLinksLink();
 
-                       if ( $wgUseTrackbacks ) {
-                               $element[] = $this->trackbackLink();
-                       }
-
                        $title = $this->getSkin()->getTitle();
 
                        if (
@@ -709,11 +705,6 @@ class LegacyTemplate extends BaseTemplate {
                }
        }
 
-       function trackbackLink() {
-               return '<a href="' . $this->getSkin()->getTitle()->trackbackURL() . '">'
-                       . wfMsg( 'trackbacklink' ) . '</a>';
-       }
-
        function talkLink() {
                $title = $this->getSkin()->getTitle();
                if ( NS_SPECIAL == $title->getNamespace() ) {
index 2ab01bc..03292c2 100644 (file)
@@ -139,7 +139,7 @@ class SkinTemplate extends Skin {
                global $wgDisableCounters, $wgSitename, $wgLogo, $wgHideInterlanguageLinks;
                global $wgMaxCredits, $wgShowCreditsIfMax;
                global $wgPageShowWatchingUsers;
-               global $wgUseTrackbacks, $wgUseSiteJs, $wgDebugComments;
+               global $wgUseSiteJs, $wgDebugComments;
                global $wgArticlePath, $wgScriptPath, $wgServer;
 
                wfProfileIn( __METHOD__ );
@@ -215,13 +215,6 @@ class SkinTemplate extends Skin {
                        $tpl->set( 'html5version', $wgHtml5Version );
                        $tpl->set( 'headlinks', $out->getHeadLinks() );
                        $tpl->set( 'csslinks', $out->buildCssLinks() );
-
-                       if( $wgUseTrackbacks && $out->isArticleRelated() ) {
-                               $tpl->set( 'trackbackhtml', $out->getTitle()->trackbackRDF() );
-                       } else {
-                               $tpl->set( 'trackbackhtml', null );
-                       }
-
                        $tpl->set( 'pageclass', $this->getPageClasses( $this->getTitle() ) );
                        $tpl->set( 'skinnameclass', ( 'skin-' . Sanitizer::escapeClass( $this->getSkinName() ) ) );
                }
@@ -1120,7 +1113,6 @@ class SkinTemplate extends Skin {
         * @private
         */
        protected function buildNavUrls() {
-               global $wgUseTrackbacks;
                global $wgUploadNavigationUrl;
 
                wfProfileIn( __METHOD__ );
@@ -1143,7 +1135,6 @@ class SkinTemplate extends Skin {
                $nav_urls['permalink'] = false;
                $nav_urls['whatlinkshere'] = false;
                $nav_urls['recentchangeslinked'] = false;
-               $nav_urls['trackbacklink'] = false;
                $nav_urls['contributions'] = false;
                $nav_urls['log'] = false;
                $nav_urls['blockip'] = false;
@@ -1183,11 +1174,6 @@ class SkinTemplate extends Skin {
                                        'href' => SpecialPage::getTitleFor( 'Recentchangeslinked', $this->thispage )->getLocalUrl()
                                );
                        }
-                       if ( $wgUseTrackbacks ) {
-                               $nav_urls['trackbacklink'] = array(
-                                       'href' => $out->getTitle()->trackbackURL()
-                               );
-                       }
                }
 
                $user = $this->getRelevantUser();
@@ -1420,10 +1406,6 @@ abstract class BaseTemplate extends QuickTemplate {
                        $toolbox['recentchangeslinked']['msg'] = 'recentchangeslinked-toolbox';
                        $toolbox['recentchangeslinked']['id'] = 't-recentchangeslinked';
                }
-               if ( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) {
-                       $toolbox['trackbacklink'] = $this->data['nav_urls']['trackbacklink'];
-                       $toolbox['trackbacklink']['id'] = 't-trackbacklink';
-               }
                if ( isset( $this->data['feeds'] ) && $this->data['feeds'] ) {
                        $toolbox['feeds']['id'] = 'feedlinks';
                        $toolbox['feeds']['links'] = array();
index 4c2ccda..d1d1e78 100644 (file)
@@ -3434,10 +3434,7 @@ class Title {
                        $dbw->delete( 'page', array( 'page_id' => $newid ), __METHOD__ );
                        if ( !$dbw->cascadingDeletes() ) {
                                $dbw->delete( 'revision', array( 'rev_page' => $newid ), __METHOD__ );
-                               global $wgUseTrackbacks;
-                               if ( $wgUseTrackbacks ) {
-                                       $dbw->delete( 'trackbacks', array( 'tb_page' => $newid ), __METHOD__ );
-                               }
+
                                $dbw->delete( 'pagelinks', array( 'pl_from' => $newid ), __METHOD__ );
                                $dbw->delete( 'imagelinks', array( 'il_from' => $newid ), __METHOD__ );
                                $dbw->delete( 'categorylinks', array( 'cl_from' => $newid ), __METHOD__ );
@@ -4146,46 +4143,6 @@ class Title {
                return $this->mNotificationTimestamp[$uid];
        }
 
-       /**
-        * Get the trackback URL for this page
-        *
-        * @return String Trackback URL
-        */
-       public function trackbackURL() {
-               global $wgScriptPath, $wgServer, $wgScriptExtension;
-
-               return "$wgServer$wgScriptPath/trackback$wgScriptExtension?article="
-                       . htmlspecialchars( urlencode( $this->getPrefixedDBkey() ) );
-       }
-
-       /**
-        * Get the trackback RDF for this page
-        *
-        * @return String Trackback RDF
-        */
-       public function trackbackRDF() {
-               $url = htmlspecialchars( $this->getFullURL() );
-               $title = htmlspecialchars( $this->getText() );
-               $tburl = $this->trackbackURL();
-
-               // Autodiscovery RDF is placed in comments so HTML validator
-               // won't barf. This is a rather icky workaround, but seems
-               // frequently used by this kind of RDF thingy.
-               //
-               // Spec: http://www.sixapart.com/pronet/docs/trackback_spec
-               return "<!--
-<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"
-                xmlns:dc=\"http://purl.org/dc/elements/1.1/\"
-                xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\">
-<rdf:Description
-   rdf:about=\"$url\"
-   dc:identifier=\"$url\"
-   dc:title=\"$title\"
-   trackback:ping=\"$tburl\" />
-</rdf:RDF>
--->";
-       }
-
        /**
         * Generate strings used for xml 'id' names in monobook tabs
         *
index 0546424..f3a0c56 100644 (file)
@@ -148,7 +148,6 @@ class User {
                'suppressionlog',
                'suppressredirect',
                'suppressrevision',
-               'trackback',
                'unblockself',
                'undelete',
                'unwatchedpages',
index 8bfc4e1..599cca4 100644 (file)
@@ -1651,7 +1651,7 @@ class WikiPage extends Page {
        public function doDeleteArticle(
                $reason, $suppress = false, $id = 0, $commit = true, &$error = '', User $user = null
        ) {
-               global $wgUseTrackbacks, $wgUser;
+               global $wgUser;
                $user = is_null( $user ) ? $wgUser : $user;
 
                wfDebug( __METHOD__ . "\n" );
@@ -1744,10 +1744,6 @@ class WikiPage extends Page {
                if ( !$dbw->cascadingDeletes() ) {
                        $dbw->delete( 'revision', array( 'rev_page' => $id ), __METHOD__ );
 
-                       if ( $wgUseTrackbacks ) {
-                               $dbw->delete( 'trackbacks', array( 'tb_page' => $id ), __METHOD__ );
-                       }
-
                        # Delete outgoing links
                        $dbw->delete( 'pagelinks', array( 'pl_from' => $id ), __METHOD__ );
                        $dbw->delete( 'imagelinks', array( 'il_from' => $id ), __METHOD__ );
diff --git a/includes/actions/DeletetrackbackAction.php b/includes/actions/DeletetrackbackAction.php
deleted file mode 100644 (file)
index 0efebdf..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
- * Delete a trackback on a page
- *
- * Copyright Â© 2011 Alexandre Emsenhuber
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * @file
- * @ingroup Actions
- */
-
-class DeletetrackbackAction extends FormlessAction {
-
-       public function getName() {
-               return 'deletetrackback';
-       }
-
-       public function getRestriction() {
-               return 'delete';
-       }
-
-       protected function getDescription() {
-               return '';
-       }
-
-       protected function checkCanExecute( User $user ) {
-               if ( !$user->matchEditToken( $this->getRequest()->getVal( 'token' ) ) ) {
-                       throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
-               }
-
-               return parent::checkCanExecute( $user );
-       }
-
-       public function onView() {
-               $db = wfGetDB( DB_MASTER );
-               $db->delete( 'trackbacks', array( 'tb_id' => $this->getRequest()->getInt( 'tbid' ) ) );
-
-               $this->getOutput()->addWikiMsg( 'trackbackdeleteok' );
-               $this->getTitle()->invalidateCache();
-       }
-}
index 707c3d0..38605c0 100644 (file)
@@ -66,7 +66,6 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'addTable', 'user_newtalk',                      'patch-usernewtalk2.sql' ),
                        array( 'addTable', 'transcache',                        'patch-transcache.sql' ),
                        array( 'addField', 'interwiki',     'iw_trans',         'patch-interwiki-trans.sql' ),
-                       array( 'addTable', 'trackbacks',                        'patch-trackbacks.sql' ),
 
                        // 1.6
                        array( 'doWatchlistNull' ),
index 48fc150..f8f02dd 100644 (file)
@@ -216,7 +216,6 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'changeFkeyDeferrable', 'revision',         'rev_page',        'page (page_id) ON DELETE CASCADE' ),
                        array( 'changeFkeyDeferrable', 'revision',         'rev_user',        'mwuser(user_id) ON DELETE RESTRICT' ),
                        array( 'changeFkeyDeferrable', 'templatelinks',    'tl_from',         'page(page_id) ON DELETE CASCADE' ),
-                       array( 'changeFkeyDeferrable', 'trackbacks',       'tb_page',         'page(page_id) ON DELETE CASCADE' ),
                        array( 'changeFkeyDeferrable', 'user_groups',      'ug_user',         'mwuser(user_id) ON DELETE CASCADE' ),
                        array( 'changeFkeyDeferrable', 'user_newtalk',     'user_id',         'mwuser(user_id) ON DELETE CASCADE' ),
                        array( 'changeFkeyDeferrable', 'user_properties',  'up_user',         'mwuser(user_id) ON DELETE CASCADE' ),
index d4bd333..527e33b 100644 (file)
@@ -1975,7 +1975,6 @@ Your e-mail address is not revealed when other users contact you.',
 'right-autopatrol'            => "Have one's own edits automatically marked as patrolled",
 'right-patrolmarks'           => 'View recent changes patrol marks',
 'right-unwatchedpages'        => 'View a list of unwatched pages',
-'right-trackback'             => 'Submit a trackback',
 'right-mergehistory'          => 'Merge the history of pages',
 'right-userrights'            => 'Edit all user rights',
 'right-userrights-interwiki'  => 'Edit user rights of users on other wikis',
@@ -2022,7 +2021,6 @@ Your e-mail address is not revealed when other users contact you.',
 'action-patrol'               => "mark others' edit as patrolled",
 'action-autopatrol'           => 'have your edit marked as patrolled',
 'action-unwatchedpages'       => 'view the list of unwatched pages',
-'action-trackback'            => 'submit a trackback',
 'action-mergehistory'         => 'merge the history of this page',
 'action-userrights'           => 'edit all user rights',
 'action-userrights-interwiki' => 'edit user rights of users on other wikis',
@@ -4273,15 +4271,6 @@ This confirmation code will expire at $4.',
 'scarytranscludefailed'   => '[Template fetch failed for $1]',
 'scarytranscludetoolong'  => '[URL is too long]',
 
-# Trackbacks
-'trackbackbox'      => 'Trackbacks for this page:<br />
-$1',
-'trackback'         => '; $4 $5: [$2 $1]', # only translate this message to other languages if you have to change it
-'trackbackexcerpt'  => '; $4 $5: [$2 $1]: <nowiki>$3</nowiki>', # only translate this message to other languages if you have to change it
-'trackbackremove'   => '([$1 Delete])',
-'trackbacklink'     => 'Trackback',
-'trackbackdeleteok' => 'The trackback was successfully deleted.',
-
 # Delete conflict
 'deletedwhileediting'      => "'''Warning''': This page was deleted after you started editing!",
 'confirmrecreate'          => "User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
diff --git a/maintenance/archives/patch-trackbacks.sql b/maintenance/archives/patch-trackbacks.sql
deleted file mode 100644 (file)
index e3a47aa..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-CREATE TABLE /*$wgDBprefix*/trackbacks (
-       tb_id           INTEGER AUTO_INCREMENT PRIMARY KEY,
-       tb_page         INTEGER REFERENCES page(page_id) ON DELETE CASCADE,
-       tb_title        VARCHAR(255) NOT NULL,
-       tb_url          BLOB NOT NULL,
-       tb_ex           TEXT,
-       tb_name         VARCHAR(255),
-
-       INDEX (tb_page)
-);
index 3df3aa4..d87d628 100644 (file)
@@ -108,7 +108,6 @@ Wiki configuration for testing:
   $wgGroupPermissions['*']['reupload-shared'] = true;
   $wgGroupPermissions['*']['rollback']        = true;
   $wgGroupPermissions['*']['siteadmin']       = true;
-  $wgGroupPermissions['*']['trackback']       = true;
   $wgGroupPermissions['*']['unwatchedpages']  = true;
   $wgGroupPermissions['*']['upload']          = true;
   $wgGroupPermissions['*']['userrights']      = true;
@@ -121,7 +120,6 @@ Wiki configuration for testing:
   error_reporting (E_ALL);    // At a later date could be increased to E_ALL | E_STRICT
   $wgBlockOpenProxies = true; // Some block pages require this to be true in order to test.
   $wgEnableUploads = true;    // enable uploads.
-  //$wgUseTrackbacks = true;  // enable trackbacks; However this breaks the viewPageTest, so currently disabled.
   $wgDBerrorLog = "/root/mediawiki-db-error-log.txt";  // log DB errors, replace with suitable path.
   $wgShowSQLErrors = true;    // Show SQL errors (instead of saying the query was hidden).
   $wgShowExceptionDetails = true;  // want backtraces.
@@ -1819,32 +1817,6 @@ class thumbTest extends pageTest {
        }
 }
 
-
-/**
- ** a test for trackback.php
- */
-class trackbackTest extends pageTest {
-       function __construct() {
-               $this->pagePath = "trackback.php";
-
-               $this->params = array (
-                               "url"       => wikiFuzz::makeFuzz( 2 ),
-                               "blog_name" => wikiFuzz::chooseInput( array( "80", wikiFuzz::randnum( 6000, -200 ), wikiFuzz::makeFuzz( 2 ) ) ),
-                               "article"   => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "title"     => wikiFuzz::chooseInput( array( "Main Page", wikiFuzz::makeFuzz( 2 ) ) ),
-                               "excerpt"   => wikiFuzz::makeFuzz( 2 ),
-                               );
-
-               // sometimes we don't want to specify certain parameters.
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["title"] );
-               if ( wikiFuzz::randnum( 3 ) == 0 ) unset( $this->params["excerpt"] );
-
-               // page does not produce HTML.
-               $this->tidyValidate = false;
-       }
-}
-
-
 /**
  ** a test for profileinfo.php
  */
@@ -2188,7 +2160,7 @@ class GeSHi_Test extends pageTest {
 /**
  ** selects a page test to run.
  * @param $count
- * @return \api|\confirmEmail|\contributionsTest|\editPageTest|\imagelistTest|\imagepageTest|\ipblocklistTest|\listusersTest|\mimeSearchTest|\newImagesTest|\pageDeletion|\pageHistoryTest|\pageProtectionForm|\prefixindexTest|\profileInfo|\recentchangesTest|\redirectTest|\searchTest|\specialAllmessagesTest|\specialAllpagesTest|\specialBlockip|\specialBlockmeTest|\specialBooksourcesTest|\specialCategoryTree|\specialChemicalsourcesTest|\specialCitePageTest|\specialExportTest|\specialFilepathPageTest|\specialImportPageTest|\specialLinksearch|\specialLockdbPageTest|\specialLogTest|\specialMovePage|\specialNewpagesPageTest|\specialRenameuserPageTest|\specialRevisionDeletePageTest|\specialUndeletePageTest|\specialUnlockdbPageTest|\specialUserrights|\successfulUserLoginTest|\thumbTest|\trackbackTest|\userLoginTest|\viewPageTest|\watchlistTest
+ * @return \api|\confirmEmail|\contributionsTest|\editPageTest|\imagelistTest|\imagepageTest|\ipblocklistTest|\listusersTest|\mimeSearchTest|\newImagesTest|\pageDeletion|\pageHistoryTest|\pageProtectionForm|\prefixindexTest|\profileInfo|\recentchangesTest|\redirectTest|\searchTest|\specialAllmessagesTest|\specialAllpagesTest|\specialBlockip|\specialBlockmeTest|\specialBooksourcesTest|\specialCategoryTree|\specialChemicalsourcesTest|\specialCitePageTest|\specialExportTest|\specialFilepathPageTest|\specialImportPageTest|\specialLinksearch|\specialLockdbPageTest|\specialLogTest|\specialMovePage|\specialNewpagesPageTest|\specialRenameuserPageTest|\specialRevisionDeletePageTest|\specialUndeletePageTest|\specialUnlockdbPageTest|\specialUserrights|\successfulUserLoginTest|\thumbTest|\userLoginTest|\viewPageTest|\watchlistTest
  */
 function selectPageTest( $count ) {
 
@@ -2237,7 +2209,6 @@ function selectPageTest( $count ) {
                case 33: return new specialRevisionDeletePageTest();
                case 34: return new specialImportPageTest();
                case 35: return new thumbTest();
-               case 36: return new trackbackTest();
                case 37: return new profileInfo();
                case 38: return new specialCitePageTest();
                case 39: return new specialFilepathPageTest();
index 81a88eb..4f1450d 100644 (file)
@@ -93,11 +93,6 @@ ALTER TABLE oldimage ADD CONSTRAINT OLDIMAGE_NAME_FK FOREIGN KEY (oi_name) REFER
 ALTER TABLE watchlist ADD CONSTRAINT WATCHLIST_USER_FK FOREIGN KEY (wl_user) REFERENCES user(user_id) ON DELETE CASCADE
 ;
 
--- good
--- already in MySQL schema
-ALTER TABLE trackbacks ADD CONSTRAINT TRACKBACKS_PAGE_FK FOREIGN KEY (tb_page) REFERENCES page(page_id) ON DELETE CASCADE
-;
-
 -- cannot contain null values
 -- ALTER TABLE protected_titles ADD CONSTRAINT PROTECTED_TITLES_USER_FK FOREIGN KEY (pt_user) REFERENCES user(user_id) ON DELETE SET NULL
 --;
index 261a3a2..cd00bfe 100644 (file)
@@ -523,22 +523,6 @@ CREATE INDEX log_user_type_time ON logging (log_user, log_type, log_timestamp);
 CREATE INDEX log_page_id_time ON logging (log_page,log_timestamp);
 
 
-
-CREATE TABLE trackbacks (
-  tb_id     INTEGER  NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
-  --PRIMARY KEY DEFAULT nextval('trackbacks_tb_id_seq'),
-  -- foreign key also in MySQL
-  tb_page   INTEGER,
-  -- REFERENCES page(page_id) ON DELETE CASCADE,
-  tb_title  VARCHAR(255)     NOT NULL,
-  tb_url    CLOB(64K) INLINE LENGTH 4096            NOT NULL,
-  tb_ex     CLOB(64K) INLINE LENGTH 4096,
-  tb_name   VARCHAR(255)
-);
-CREATE INDEX trackback_page ON trackbacks (tb_page);
-
-
-
 CREATE TABLE job (
   job_id         BIGINT   NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
   --PRIMARY KEY DEFAULT nextval('job_job_id_seq'),
index 946ae7d..09b9471 100644 (file)
@@ -393,8 +393,6 @@ $wgOptionalMessages = array(
        'diff-with-additional',
        'pagetitle-view-mainpage',
        'backlinksubtitle',
-       'trackback',
-       'trackbackexcerpt',
        'prefs-registration-date-time',
        'prefs-memberingroups-type',
        'shared-repo-name-wikimediacommons',
index c58ebb3..156c123 100644 (file)
@@ -1140,7 +1140,6 @@ $wgMessageStructure = array(
                'right-autopatrol',
                'right-patrolmarks',
                'right-unwatchedpages',
-               'right-trackback',
                'right-mergehistory',
                'right-userrights',
                'right-userrights-interwiki',
@@ -1187,7 +1186,6 @@ $wgMessageStructure = array(
                'action-patrol',
                'action-autopatrol',
                'action-unwatchedpages',
-               'action-trackback',
                'action-mergehistory',
                'action-userrights',
                'action-userrights-interwiki',
@@ -3180,14 +3178,6 @@ $wgMessageStructure = array(
                'scarytranscludefailed',
                'scarytranscludetoolong',
        ),
-       'trackbacks' => array(
-               'trackbackbox',
-               'trackback',
-               'trackbackexcerpt',
-               'trackbackremove',
-               'trackbacklink',
-               'trackbackdeleteok',
-       ),
        'deleteconflict' => array(
                'deletedwhileediting',
                'confirmrecreate',
@@ -3706,7 +3696,6 @@ Variants for Chinese language",
        'all'                   => "'all' in various places, this might be different for inflected languages",
        'confirmemail'          => 'E-mail address confirmation',
        'scarytransclusion'     => 'Scary transclusion',
-       'trackbacks'            => 'Trackbacks',
        'deleteconflict'        => 'Delete conflict',
        'unit-pixel'            => '',
        'purge'                 => 'action=purge',
index dca64f1..8c4d500 100644 (file)
@@ -642,16 +642,6 @@ CREATE UNIQUE INDEX /*$wgDBprefix*/ls_field_val ON /*$wgDBprefix*/log_search (ls
 CREATE INDEX /*$wgDBprefix*/ls_log_id ON /*$wgDBprefix*/log_search (ls_log_id);
 
 
-CREATE TABLE /*$wgDBprefix*/trackbacks (
-   tb_id    INT  PRIMARY KEY,
-   tb_page  INT REFERENCES /*$wgDBprefix*/page(page_id) ON DELETE CASCADE,
-   tb_title NVARCHAR(255)  NOT NULL,
-   tb_url   NVARCHAR(255)  NOT NULL,
-   tb_ex    NVARCHAR(MAX),
-   tb_name  NVARCHAR(255),
-);
-CREATE INDEX /*$wgDBprefix*/trackbacks_page ON /*$wgDBprefix*/trackbacks(tb_page);
-
 -- Jobs performed by parallel apache threads or a command-line daemon
 CREATE TABLE /*$wgDBprefix*/job (
    job_id INT NOT NULL  PRIMARY KEY,
index ce5be9a..ca9c997 100644 (file)
@@ -35,7 +35,6 @@ ALTER TABLE &mw_prefix.recentchanges ADD CONSTRAINT &mw_prefix.recentchanges_fk1
 ALTER TABLE &mw_prefix.recentchanges ADD CONSTRAINT &mw_prefix.recentchanges_fk2 FOREIGN KEY (rc_cur_id) REFERENCES &mw_prefix.page(page_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
 ALTER TABLE &mw_prefix.watchlist ADD CONSTRAINT &mw_prefix.watchlist_fk1 FOREIGN KEY (wl_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 ALTER TABLE &mw_prefix.logging ADD CONSTRAINT &mw_prefix.logging_fk1 FOREIGN KEY (log_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
-ALTER TABLE &mw_prefix.trackbacks ADD CONSTRAINT &mw_prefix.trackbacks_fk1 FOREIGN KEY (tb_page) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 ALTER TABLE &mw_prefix.redirect ADD CONSTRAINT &mw_prefix.redirect_fk1 FOREIGN KEY (rd_from) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 ALTER TABLE &mw_prefix.page_restrictions ADD CONSTRAINT &mw_prefix.page_restrictions_fk1 FOREIGN KEY (pr_page) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 
index caa6128..6274582 100644 (file)
@@ -511,18 +511,6 @@ CREATE TABLE &mw_prefix.log_search (
 ALTER TABLE &mw_prefix.log_search ADD CONSTRAINT log_search_pk PRIMARY KEY (ls_field,ls_value,ls_log_id);
 CREATE INDEX &mw_prefix.log_search_i01 ON &mw_prefix.log_search (ls_log_id);
 
-CREATE SEQUENCE trackbacks_tb_id_seq;
-CREATE TABLE &mw_prefix.trackbacks (
-  tb_id     NUMBER   NOT NULL,
-  tb_page   NUMBER,
-  tb_title  VARCHAR2(255)     NOT NULL,
-  tb_url    VARCHAR2(255)     NOT NULL,
-  tb_ex     CLOB,
-  tb_name   VARCHAR2(255)
-);
-ALTER TABLE &mw_prefix.trackbacks ADD CONSTRAINT &mw_prefix.trackbacks_pk PRIMARY KEY (tb_id);
-ALTER TABLE &mw_prefix.trackbacks ADD CONSTRAINT &mw_prefix.trackbacks_fk1 FOREIGN KEY (tb_page) REFERENCES &mw_prefix.page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
-CREATE INDEX &mw_prefix.trackbacks_i01 ON &mw_prefix.trackbacks (tb_page);
 
 CREATE SEQUENCE job_job_id_seq;
 CREATE TABLE &mw_prefix.job (
index 9133477..8f170ab 100644 (file)
@@ -417,7 +417,6 @@ SELECT setval('page_restrictions_pr_id_seq', 1+coalesce(max(pr_id)  ,0),false) F
 SELECT setval('recentchanges_rc_id_seq',     1+coalesce(max(rc_id)  ,0),false) FROM recentchanges;
 SELECT setval('revision_rev_id_seq',         1+coalesce(max(rev_id) ,0),false) FROM revision;
 SELECT setval('text_old_id_seq',       1+coalesce(max(old_id) ,0),false) FROM pagecontent;
-SELECT setval('trackbacks_tb_id_seq',  1+coalesce(max(tb_id)  ,0),false) FROM trackbacks;
 SELECT setval('user_user_id_seq',      1+coalesce(max(user_id),0),false) FROM mwuser;
 };
 
@@ -437,7 +436,6 @@ profiling
 objectcache
 
 ## Which tables to ignore depending on the version
-VERSION 1.5: trackback
 VERSION 1.6: externallinks job templatelinks transcache
 VERSION 1.7: filearchive langlinks querycache_info
 VERSION 1.9: querycachetwo page_restrictions redirect
index 0d7e961..d86e184 100644 (file)
@@ -16,7 +16,6 @@ DROP SEQUENCE IF EXISTS page_restrictions_id_seq CASCADE;
 DROP SEQUENCE IF EXISTS ipblocks_ipb_id_seq CASCADE;
 DROP SEQUENCE IF EXISTS recentchanges_rc_id_seq CASCADE;
 DROP SEQUENCE IF EXISTS logging_log_id_seq CASCADE;
-DROP SEQUENCE IF EXISTS trackbacks_tb_id_seq CASCADE;
 DROP SEQUENCE IF EXISTS job_job_id_seq CASCADE;
 DROP SEQUENCE IF EXISTS category_cat_id_seq CASCADE;
 DROP FUNCTION IF EXISTS page_deleted() CASCADE;
@@ -512,17 +511,6 @@ CREATE TABLE log_search (
 );
 CREATE INDEX ls_log_id ON log_search (ls_log_id);
 
-CREATE SEQUENCE trackbacks_tb_id_seq;
-CREATE TABLE trackbacks (
-  tb_id     INTEGER  NOT NULL  PRIMARY KEY DEFAULT nextval('trackbacks_tb_id_seq'),
-  tb_page   INTEGER            REFERENCES page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
-  tb_title  TEXT     NOT NULL,
-  tb_url    TEXT     NOT NULL,
-  tb_ex     TEXT,
-  tb_name   TEXT
-);
-CREATE INDEX trackback_page ON trackbacks (tb_page);
-
 
 CREATE SEQUENCE job_job_id_seq;
 CREATE TABLE job (
index c40df11..73b008c 100644 (file)
@@ -406,7 +406,6 @@ CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp);
 CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp);
 CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp);
 CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
-CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page);
 CREATE INDEX /*i*/job_cmd_namespace_title ON /*_*/job (job_cmd, job_namespace, job_title);
 CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from);
 CREATE INDEX /*i*/qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value);
index b3c5c80..a4e107a 100644 (file)
@@ -1247,17 +1247,6 @@ CREATE UNIQUE INDEX /*i*/ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_l
 CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id);
 
 
-CREATE TABLE /*_*/trackbacks (
-  tb_id int PRIMARY KEY AUTO_INCREMENT,
-  tb_page int REFERENCES /*_*/page(page_id) ON DELETE CASCADE,
-  tb_title varchar(255) NOT NULL,
-  tb_url blob NOT NULL,
-  tb_ex text,
-  tb_name varchar(255)
-) /*$wgDBTableOptions*/;
-CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page);
-
-
 -- Jobs performed by parallel apache threads or a command-line daemon
 CREATE TABLE /*_*/job (
   job_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
diff --git a/trackback.php b/trackback.php
deleted file mode 100644 (file)
index 1f88af7..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/**
- * Provide functions to handle article trackbacks.
- * @file
- * @ingroup SpecialPage
- */
-
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       require ( 'phase3/includes/WebStart.php' );
-} else {
-       require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
-}
-
-class TrackBack {
-
-       private $r, $url, $title = null;
-
-       private function XMLsuccess() {
-               header( "Content-Type: application/xml; charset=utf-8" );
-               echo <<<XML
-<?xml version="1.0" encoding="utf-8"?>
-<response>
-       <error>0</error>
-</response>
-XML;
-               exit;
-       }
-
-       /**
-        * @param $err string
-        */
-       private function XMLerror( $err = "Invalid request." ) {
-               header( "HTTP/1.0 400 Bad Request" );
-               header( "Content-Type: application/xml; charset=utf-8" );
-               echo <<<XML
-<?xml version="1.0" encoding="utf-8"?>
-<response>
-       <error>1</error>
-       <message>Invalid request: $err</message>
-</response>
-XML;
-                       exit;
-       }
-
-       public function __construct() {
-               global $wgUseTrackbacks, $wgRequest;
-
-               if( !$wgUseTrackbacks )
-                       $this->XMLerror( "Trackbacks are disabled" );
-
-               $this->r = $wgRequest;
-
-               if( !$this->r->wasPosted() ) {
-                       $this->XMLerror( "Must be posted" );
-               }
-
-               $this->url = $wgRequest->getText( 'url' );
-               $article = $wgRequest->getText( 'article' );
-
-               if( !$this->url || !$article ) {
-                       $this->XMLerror( "Required field not specified" );
-               }
-
-               $this->title = Title::newFromText( $article );
-               if( !$this->title || !$this->title->exists() ) {
-                       $this->XMLerror( "Specified article does not exist." );
-               }
-       }
-
-       public function write() {
-               $dbw = wfGetDB( DB_MASTER );
-
-               $tbtitle = $this->r->getText( 'title' );
-               $tbex = $this->r->getText( 'excerpt' );
-               $tbname = $this->r->getText( 'blog_name' );
-
-               $dbw->insert('trackbacks', array(
-                       'tb_page'       => $this->title->getArticleID(),
-                       'tb_title'      => $tbtitle,
-                       'tb_url'        => $this->url,
-                       'tb_ex'         => $tbex,
-                       'tb_name'       => $tbname
-               ));
-
-               $dbw->commit();
-
-               $this->XMLsuccess();
-       }
-}
-
-$tb = new TrackBack();
-$tb->write();
diff --git a/trackback.php5 b/trackback.php5
deleted file mode 100644 (file)
index fe81176..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?php require './trackback.php';
\ No newline at end of file