}
function addTrackbacks() {
- global $wgOut;
+ global $wgOut, $wgUser;
$dbr = wfGetDB(DB_SLAVE);
$tbs = $dbr->select(
/* FROM */ 'trackbacks',
- /* SELECT */ array('tb_title', 'tb_url', 'tb_ex', 'tb_name'),
- /* WHERE */ array('tb_id' => $this->getID())
+ /* SELECT */ array('tb_id', 'tb_title', 'tb_url', 'tb_ex', 'tb_name'),
+ /* WHERE */ array('tb_page' => $this->getID())
);
if (!$dbr->numrows($tbs))
$tbtext = "";
while ($o = $dbr->fetchObject($tbs)) {
+ $rmvtext = "";
+ if ($wgUser->isSysop()) {
+ $delurl = $this->mTitle->getFullURL("action=deletetrackback&tbid="
+ . $o->tb_id . "&token=" . $wgUser->editToken());
+ $rmvtxt = wfMsg('trackbackremove', $delurl);
+ }
$tbtext .= wfMsg(strlen($o->tb_ex) ? 'trackbackexcerpt' : 'trackback',
$o->tb_title,
$o->tb_url,
$o->tb_ex,
- $o->tb_name);
+ $o->tb_name,
+ $rmvtxt);
}
$wgOut->addWikitext(wfMsg('trackbackbox', $tbtext));
}
+ function deletetrackback() {
+ global $wgUser, $wgRequest, $wgOut, $wgTitle;
+
+ if (!$wgUser->matchEditToken($wgRequest->getVal('token'))) {
+ $wgOut->addWikitext(wfMsg('sessionfailure'));
+ return;
+ }
+
+ if ((!$wgUser->isAllowed('delete'))) {
+ $wgOut->sysopRequired();
+ return;
+ }
+
+ if (wfReadOnly()) {
+ $wgOut->readOnlyPage();
+ return;
+ }
+
+ $db = wfGetDB(DB_MASTER);
+ $db->delete('trackbacks', array('tb_id' => $wgRequest->getInt('tbid')));
+ $wgTitle->invalidateCache();
+ $wgOut->addWikiText(wfMsg('trackbackdeleteok'));
+ }
+
function render() {
global $wgOut;
$dbw->delete( 'page', array( 'page_id' => $id ), $fname);
if ($wgUseTrackbacks)
- $dbw->delete( 'trackbacks', array( 'tb_id' => $id ), $fname );
+ $dbw->delete( 'trackbacks', array( 'tb_page' => $id ), $fname );
# Clean up recentchanges entries...
$dbw->delete( 'recentchanges', array( 'rc_namespace' => $ns, 'rc_title' => $t ), $fname );
$1
</div>
",
-'trackback' => "; $4 : [$2 $1]</li>\n",
-'trackbackexcerpt' => "; $4 : [$2 $1]: <nowiki>$3</nowiki></li>\n",
+'trackback' => "; $4$5 : [$2 $1]\n",
+'trackbackexcerpt' => "; $4$5 : [$2 $1]: <nowiki>$3</nowiki>\n",
+'trackbackremove' => ' ([$1 Delete])',
'trackbacklink' => 'Trackback',
+'trackbackdeleteok' => 'The trackback was successfully deleted.',
);
/* a fake language converter */
--) TYPE=InnoDB;
CREATE TABLE /*$wgDBprefix*/trackbacks (
- tb_id INTEGER REFERENCES page(page_id) ON DELETE CASCADE,
- tb_title VARCHAR(255) NOT NULL,
- tb_url VARCHAR(255) NOT NULL,
- tb_ex TEXT,
- tb_name VARCHAR(255),
-
- INDEX (tb_id)
+ 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 VARCHAR(255) NOT NULL,
+ tb_ex TEXT,
+ tb_name VARCHAR(255),
+
+ INDEX (tb_page)
);
-
XMLerror("Specified article does not exist.");
$dbw->insert('trackbacks', array(
- 'tb_id' => $title->getArticleID(),
- 'tb_title' => $tbtitle,
- 'tb_url' => $tburl,
- 'tb_ex' => $tbex,
- 'tb_name' => $tbname
+ 'tb_page' => $title->getArticleID(),
+ 'tb_title' => $tbtitle,
+ 'tb_url' => $tburl,
+ 'tb_ex' => $tbex,
+ 'tb_name' => $tbname
));
XMLsuccess();