diff options
Diffstat (limited to 'trackback.php')
-rw-r--r-- | trackback.php | 102 |
1 files changed, 63 insertions, 39 deletions
diff --git a/trackback.php b/trackback.php index 398cc794..f673c508 100644 --- a/trackback.php +++ b/trackback.php @@ -7,55 +7,79 @@ require_once( './includes/WebStart.php' ); -function XMLsuccess() { - header( "Content-Type: application/xml; charset=utf-8" ); - echo "<?xml version=\"1.0\" encoding=\"utf-8\"?> +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> + <error>0</error> </response> - "; - exit; -} +XML; + exit; + } -function XMLerror( $err = "Invalid request." ) { - header( "HTTP/1.0 400 Bad Request" ); - header( "Content-Type: application/xml; charset=utf-8" ); - echo "<?xml version=\"1.0\" encoding=\"utf-8\"?> + 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> + <error>1</error> + <message>Invalid request: $err</message> </response> -"; - exit; -} +XML; + exit; + } -if( !$wgUseTrackbacks ) - XMLerror("Trackbacks are disabled."); + public function __construct() { + global $wgUseTrackbacks, $wgRequest; -if( !isset( $_POST['url'] ) - || !isset( $_REQUEST['article'] ) ) - XMLerror("Required field not specified"); + if( !$wgUseTrackbacks ) + $this->XMLerror( "Trackbacks are disabled" ); -$dbw = wfGetDB( DB_MASTER ); + $this->r = $wgRequest; -$tbtitle = strval( @$_POST['title'] ); -$tbex = strval( @$_POST['excerpt'] ); -$tburl = strval( $_POST['url'] ); -$tbname = strval( @$_POST['blog_name'] ); -$tbarticle = strval( $_REQUEST['article'] ); + if( !$this->r->wasPosted() ) { + $this->XMLerror( "Must be posted" ); + } -$title = Title::newFromText($tbarticle); -if( !$title || !$title->exists() ) - XMLerror( "Specified article does not exist." ); + $this->url = $wgRequest->getText( 'url' ); + $article = $wgRequest->getText( 'article' ); -$dbw->insert('trackbacks', array( - 'tb_page' => $title->getArticleID(), - 'tb_title' => $tbtitle, - 'tb_url' => $tburl, - 'tb_ex' => $tbex, - 'tb_name' => $tbname -)); + if( !$this->url || !$article ) { + $this->XMLerror( "Required field not specified" ); + } -$dbw->commit(); + $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(); + } +} -XMLsuccess(); +$tb = new TrackBack(); +$tb->write(); |