Extension:My blog/SpecialPageSubBlogs.php

From MediaWiki.org

Jump to: navigation, search

The script is part of the My blog extension, go to My blog for full details on how to install this extension.

  • Resolved Issue: Listed blog entries by title. It is now when the page was last touched.
<?php
$wgExtensionFunctions[] = "loadSpecialListSubBlogs";
require_once("includes/SpecialPage.php");
 
class SpecialListSubBlogs extends SpecialPage {
 
  function SpecialListSubBlogs() {
    SpecialPage::SpecialPage('ListSubBlogs', '', false);
    $this->includable(true);
  }
 
  function execute( $parent = null ) {
    global $wgRequest, $wgOut, $wgUser;
    $wgOut->setArticleRelated( false );
    $fname = 'listsubpages';
 
 
    // Handle Errors
    $target = $this->including() ? $wgRequest->getVal( 'title' ) :
      (isset( $parent ) ? $parent : $wgRequest->getVal( 'target' ));
 
    if (is_null($target)) {
      $wgOut->errorpage( 'notargettitle', 'notargettext' );
      return;
    }
 
    $target = Title::newFromURL( $target );
    if( !$target ) {
      $wgOut->errorpage( 'notargettitle', 'notargettext' );
      return;
    }
 
    $skin = $wgUser->getSkin();
    if (!$this->including()) {
      // Start Page
      $wgOut->setPagetitle( $target->getPrefixedText() );
 
      $wgOut->addHTML('< ' . $skin->makeKnownLinkObj($target, '', '' ) . "<br />\n");
    }
 
    // Do query
    list($limit, $offset) = $wgRequest->getLimitOffset();
 
    $dbr =& wfGetDB( DB_READ );
 
    $result = $dbr->select( 'page' ,
                            array( 'page_namespace', 'page_title' ),
                            array(  'page_namespace' => $target->getNamespace(),
                                    "page_title LIKE " . $dbr->addQuotes($target->getDbKey() . '/%') ),
                            $fname,
                            array( 'ORDER BY'=>'page_touched DESC','LIMIT' => "$offset,$limit" ) );
 
    // Output results
    $wgOut->addWikiText('= ' . $target->getDbKey() . '\'s Blog =');
 
    if ( 0 == $dbr->numRows( $result ) ) {
      $d = date( 'Y F d H:i:s T' );
      if ($wgUser->getName() == $target->getDbKey()) {
        $wgOut->addWikiText('[[User:' . $wgUser->getName() . '/BlogEntry: ' . $d . ' | Add New Blog Entry]]');
      }
      $wgOut->addWikiText("Currently No Blog Entries.");
      return;
    }
 
    $prevnext = wfViewPrevNext( $offset, $limit, $specialTitle,
                                'target=' . urlencode( $target->getPrefixedDbKey() ),
                                ( $dbr->numRows( $res ) <= $limit ) );
    $wgOut->addHTML( $prevnext );
 
    $rows = array();
 
    $d = date( 'Y F d H:i:s T' );
    if ($wgUser->getName() == $target->getDbKey()) {
      $wgOut->addWikiText('[[User:' . $wgUser->getName() . '/BlogEntry: ' . $d . ' | Add New Blog Entry]]');
    }
 
 
    while ($row = $dbr->fetchObject($result)) {
      if (ereg("BlogEntry",$row->page_title)) {
        $wgOut->addHTML('<table width=100% border=1 cellpadding=5 cellspacing=0 ><tr><td>');
        $link = Title::makeTitle( $row->page_namespace, $row->page_title);
 
        list($user1,$date1) = explode("/BlogEntry:_",$row->page_title,2);
        $date1 = preg_replace('/_/', ' ', $date1);
        $wgOut->addHTML("<table width=100%><tr><td align=left><font size=4><a href=\"/wiki/index.php/User:". $row->page_title ."\">$date1</a></font><br>Posted By: <a href=\"/wiki/index.php/User:$user1\">$user1</a></td><td valign=top align=right><a href=\"/wiki/index.php/User_talk:". $row->page_title ."\">Discussion</a><br><a href=\"/wiki/index.php/Special:ListSubBlogs/User:$user1\">$user1's Blog</a><td></tr></table>");
 
        $tempvalue = "{{:User:" . $row->page_title . "}}";
        $wgOut->addWikiText($tempvalue);
        $wgOut->addHTML("<table width=100%><tr><td align=right>Blog Entry: ".$skin->makeKnownLinkObj($link)."</td></tr></table>");
 
        $wgOut->addHTML('</td></tr></table><p>');
 
 
      }
    }
 
    $dbr->freeResult($result);
 
    $wgOut->addHTML($prevnext);
  }
}
 
 
function loadSpecialListSubBlogs()
{
  SpecialPage::addPage(new SpecialListSubBlogs);
}
 
?>

- Smcnaught - I am also available on irc.chekmate.org #MediaWiki

Personal tools