diff --git a/includes/SpecialFilelist.php b/includes/SpecialFilelist.php
deleted file mode 100644
index 3483dbeb8aa..00000000000
--- a/includes/SpecialFilelist.php
+++ /dev/null
@@ -1,441 +0,0 @@
-
- * @copyright Copyright © 2006, Magnus Manske
- * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- */
-
-require_once( 'ImageGallery.php' );
-
-function wfSpecialFilelist ( $par, $specialPage , $force_gallery = true ) {
-
- class SpecialFilelist extends SpecialPage {
-
- var $dbr , $sk ;
-
- /**
- * Constructor
- */
- function SpecialFilelist() {
- SpecialPage::SpecialPage( 'Filelist' );
- $this->includable( false );
- }
-
- /**
- * Get the SQL to hide bot-users
- @param hide Hide the bots? (boolean)
- */
- function getHideBotSQL ( $hide ) {
- if ( !$hide ) {
- # Don't hide bots
- return "" ;
- }
-
- global $wgGroupPermissions ;
- $botconds=array();
- foreach ($wgGroupPermissions as $groupname=>$perms) {
- if(array_key_exists('bot',$perms) && $perms['bot']) {
- $botconds[]="ug_group='$groupname'";
- }
- }
- $isbotmember=$this->dbr->makeList($botconds, LIST_OR);
-
- /** This join, in conjunction with WHERE ug_group
- IS NULL, returns only those rows from IMAGE
- where the uploading user is not a member of
- a group which has the 'bot' permission set.
- */
- $ug = $this->dbr->tableName('user_groups');
- $joinsql=" LEFT OUTER JOIN $ug ON img_user=ug_user AND ("
- . $isbotmember.')';
- return $joinsql ;
- }
-
- /**
- * Returns the latest timestamp for an image in the image table
- @param params Parameters, not changed by this function (passed as refrence for speedup)
- */
- function getTimeStamp ( &$params ) {
- $sql="SELECT img_timestamp from " . $params['imagetable'];
- if($params['hidebots']) {
- $sql .= $params['botsql'].' WHERE ug_group IS NULL';
- }
- if ( isset ( $params['user'] ) ) {
- $sql .= " AND img_user='" . $params['user']->getID() . "'" ;
- }
- $sql .= ' ORDER BY img_timestamp' ;
- $sql .= ' DESC' ;
- $sql .= ' LIMIT 1';
- $res = $this->dbr->query($sql, 'SpecialFilelist::getTimeStamp');
- $row = $this->dbr->fetchRow($res);
- if($row!==false) {
- $ts=$row[0];
- } else {
- $ts=false;
- }
- $this->dbr->freeResult($res);
-
- /** If we were clever, we'd use this to cache. */
- $latestTimestamp = wfTimestamp( TS_MW, $ts);
- return $latestTimestamp ;
- }
-
- /**
- * Returns an array of images from the database
- @param params Parameters, not changed by this function (passed as refrence for speedup)
- */
- function getImages ( &$params ) {
- $where = array();
- $searchpar = '';
- if ( $params['match'] != '' ) {
- $nt = Title::newFromUrl( $params['match'] );
- if($nt ) {
- $m = $this->dbr->strencode( strtolower( $nt->getDBkey() ) );
- $m = str_replace( '%', "\\%", $m );
- $m = str_replace( '_', "\\_", $m );
- $where[] = "LCASE(img_name) LIKE '%{$m}%'";
- $searchpar = '&wpIlMatch=' . ( $params['match'] );
- }
- }
-
- if( $params['until'] != "" ) {
- $where[] = 'img_timestamp >= ' . $this->dbr->timestamp( $params['until'] );
- } else if ( $params['date'] != "" ) {
- $where[] = 'img_timestamp < ' . $this->dbr->timestamp( $params['date'] );
- }
-
- $sql = 'SELECT img_size, img_name, img_user, img_user_text,'.
- 'img_description,img_timestamp FROM ' . $params['imagetable'] ;
-
- # Hide the bots?
- if($params['hidebots']) {
- $sql .= $params['botsql'] ;
- $where[] = 'ug_group IS NULL' ;
- }
-
- # Single user?
- if ( isset ( $params['user'] ) ) {
- $where[] = "img_user='" . $params['user']->getID() . "'" ;
- }
-
- if(count($where)) {
- $sql.=' WHERE '.$this->dbr->makeList($where, LIST_AND);
- }
- $sql.=' ORDER BY img_timestamp '. ( $params['latestfirst'] ? '' : ' DESC' );
- $sql.=' LIMIT '.($params['limit']+1);
- $res = $this->dbr->query($sql, 'SpecialFilelist::getImages');
-
- /**
- * We have to flip things around to get the last N after a certain date
- */
- $images = array();
- while ( $s = $this->dbr->fetchObject( $res ) ) {
- if( $params['latestfirst'] ) {
- array_unshift( $images, $s );
- } else {
- array_push( $images, $s );
- }
- }
- $this->dbr->freeResult( $res );
- return $images ;
- }
-
- /**
- * Returns HTML for a gallery
- */
- function makeGallery ( &$images , &$params ) {
- global $wgLang ;
- $gallery = new ImageGallery();
- $firstTimestamp = null;
- $lastTimestamp = null;
- $shownImages = 0;
- $params['therearemore'] = false ;
- foreach( $images as $s ) {
- if( ++$shownImages > $params['limit'] ) {
- # One extra just to test for whether to show a page link;
- # don't actually show it, but remember there are more.
- $params['therearemore'] = true ;
- break;
- }
-
- $name = $s->img_name;
- $ut = $s->img_user_text;
-
- $nt = Title::newFromText( $name, NS_IMAGE );
- $img = Image::newFromTitle( $nt );
- $ul = $this->sk->makeLinkObj( Title::makeTitle( NS_USER, $ut ), $ut );
-
- $gallery->add( $img, "$ul
\n".$wgLang->timeanddate( $s->img_timestamp, true )."
\n" );
-
- $timestamp = wfTimestamp( TS_MW, $s->img_timestamp );
- if( empty( $firstTimestamp ) ) {
- $firstTimestamp = $timestamp;
- }
- $lastTimestamp = $timestamp;
- }
- $params['lasttimestamp'] = $lastTimestamp ;
- $params['firsttimestamp'] = $firstTimestamp ;
- return $gallery->toHTML() ;
- }
-
- /**
- * Returns a list of files
- */
- function makeList ( &$images , &$params ) {
- global $wgLang ;
- $firstTimestamp = null;
- $lastTimestamp = null;
- $shownImages = 0;
- $params['therearemore'] = false ;
- $out = "" ;
- foreach( $images as $s ) {
- if( ++$shownImages > $params['limit'] ) {
- # One extra just to test for whether to show a page link;
- # don't actually show it, but remember there are more.
- $params['therearemore'] = true ;
- break;
- }
-
- $name = $s->img_name;
- $ut = $s->img_user_text;
- if ( 0 == $s->img_user ) {
- $ul = $ut;
- } else {
- $ul = $this->sk->makeLinkObj( Title::makeTitle( NS_USER, $ut ), $ut );
- }
-
- $ilink = "" . strtr(htmlspecialchars( $name ), '_', ' ') . "";
-
- $nb = wfMsg( "nbytes", $wgLang->formatNum( $s->img_size ) );
- $l = "(" .
- $this->sk->makeKnownLinkObj( Title::makeTitle( NS_IMAGE, $name ),
- wfMsg( "imgdesc" ) ) .
- ") {$ilink} . . {$nb} . . {$ul} . . " .
- $wgLang->timeanddate( $s->img_timestamp, true );
-
- $l .= $this->sk->commentBlock( $s->img_description );
- $out .= $l . "
\n" ;
-
- $timestamp = wfTimestamp( TS_MW, $s->img_timestamp );
- if( empty( $firstTimestamp ) ) {
- $firstTimestamp = $timestamp;
- }
- $lastTimestamp = $timestamp;
- }
- $params['lasttimestamp'] = $lastTimestamp ;
- $params['firsttimestamp'] = $firstTimestamp ;
- return $out ;
- }
-
- /**
- * Preparing parameter for URL
- */
- function convertURLparams ( &$params ) {
- $p2 = array() ;
- if ( isset ( $p2['user'] ) ) {
- $p2['user'] = urlencode ( $p2['user']->getName() ) ;
- }
-
- if ( $params['gallery'] != true ) $p2['gallery'] = $params['gallery'] ? "1" : "0" ;
- if ( $params['hidebots'] != true ) $p2['hidebots'] = $params['hidebots'] ? "1" : "0" ;
- if ( $params['date'] != "" ) $p2['date'] = $params['date'] ;
- if ( $params['until'] != "" ) $p2['until'] = $params['until'] ;
- if ( $params['match'] != "" ) $p2['match'] = $params['match'] ;
- $p2['limit'] = $params['limit'] ;
-
- return $p2 ;
- }
-
- /**
- * Return URL parameters
- */
- function getURLparams ( &$params ) {
- $ret = "" ;
- foreach ( $params AS $k => $v ) {
- if ( $v == "" ) continue ;
- if ( $ret != "" ) {
- $ret .= "&" ;
- }
- $ret .= $k . "=" . urlencode ( $v ) ;
- }
- return $ret ;
- }
-
- /**
- * Returns the form for keyword matching
- */
- function matchform ( &$params ) {
- $titleObj = Title::makeTitle( NS_SPECIAL, 'Filelist' );
- $action = $titleObj->escapeLocalURL();
- $sub = wfMsg( 'ilsubmit' );
- $p2 = $this->convertURLparams ( $params ) ;
- unset ( $p2['match'] ) ;
- $action .= "?" . $this->getURLparams ( $p2 ) ;
- $ret = "
" . $ret . "
" ; - } - - /** - * Returns the limits links - */ - function limits ( &$params ) { - global $wgLang ; - $titleObj = Title::makeTitle( NS_SPECIAL, 'Filelist' ); - $ret = array () ; - - if ( $params['gallery'] ) { - $al = array ( 12 , 36 , 48 , 60 ) ; - } else { - $al = array ( 10 , 25 , 50 , 100 ) ; - } - - $p2 = $this->convertURLparams ( $params ) ; - - foreach ( $al AS $l ) { - $p2['limit'] = $l ; - $p = $this->getURLparams ( $p2 ) ; - - $ret[] = $this->sk->makeKnownLinkObj( $titleObj, $wgLang->formatNum( $l ), $p ) ; - } - - $text = wfMsg( "showlast", implode ( " | " , $ret ), wfMsg('bydate') ); - return $text ; - } - - /** - * Returns the option links - */ - function options ( &$params ) { - $titleObj = Title::makeTitle( NS_SPECIAL, 'Filelist' ); - $ret = array () ; - - $p2 = $this->convertURLparams ( $params ) ; - $p2['hidebots'] = $params['hidebots'] ? "0" : "1" ; - $bots = wfMsg( 'showhidebots', ($params['hidebots'] ? wfMsg('show') : wfMsg('hide'))) ; - $ret[] = $this->sk->makeKnownLinkObj( $titleObj, $bots, $this->getURLparams ( $p2 ) ); - - $p2 = $this->convertURLparams ( $params ) ; - $p2['gallery'] = $params['gallery'] ? "0" : "1" ; - $bots = $params['gallery'] ? wfMsg('filelist_show_list') : wfMsg('filelist_show_gallery') ; - $ret[] = $this->sk->makeKnownLinkObj( $titleObj, $bots, $this->getURLparams ( $p2 ) ); - - return "" . implode ( " | " , $ret ) . "
" ; - } - - /** - * Returns the previous/next links - */ - function prevnext ( &$params ) { - global $wgLang ; - $out = "" ; - $titleObj = Title::makeTitle( NS_SPECIAL, 'Filelist' ); - - $prevLink = wfMsg( 'prevn', $wgLang->formatNum( $params['limit'] ) ); - if( $params['therearebefore'] ) { - $p2 = $this->convertURLparams ( $params ) ; - $p2['until'] = $params['firsttimestamp'] ; - unset ( $p2['date'] ) ; - $prevLink = $this->sk->makeKnownLinkObj( $titleObj, $prevLink, $this->getURLparams ( $p2 ) ); - } - - $nextLink = wfMsg( 'nextn', $wgLang->formatNum( $params['limit'] ) ); - if( $params['therearemore'] ) { - $p2 = $this->convertURLparams ( $params ) ; - $p2['date'] = $params['lasttimestamp'] ; - unset ( $p2['until'] ) ; - $nextLink = $this->sk->makeKnownLinkObj( $titleObj, $nextLink, $this->getURLparams ( $p2 ) ); - } - - $out .= $prevLink . " | " . $nextLink ; - - return "" . $out . "
" ; - } - - /** - * main() - */ - function execute( $par = null , $specialPage , $force_gallery = true ) { - global $wgOut, $wgRequest, $wgUser; - $this->dbr =& wfGetDB( DB_SLAVE ); - $this->sk = $wgUser->getSkin(); - - # Setting a bunch of parameters to passed or default values; also some variables which makes them easier to pass to functions - $params['gallery'] = $wgRequest->getBool ( 'gallery' , $force_gallery ) ; - $params['hidebots'] = $wgRequest->getBool ( 'hidebots' , true ) ; - $params['date'] = $wgRequest->getVal ( 'date' , "" ) ; - $params['until'] = $wgRequest->getVal ( 'until' , "" ) ; - $params['match'] = $wgRequest->getVal ( 'match' , "" ) ; - $params['limit'] = $wgRequest->getInt ( 'limit' , ($params['gallery']?48:50) ) ; - $params['user'] = urldecode ( $wgRequest->getVal ( 'user' , ($par==NULL?"":$par) ) ) ; - $params['botsql'] = $this->getHideBotSQL ( $params['hidebots'] ) ; - $params['imagetable'] = $this->dbr->tableName('image'); - - # If "until" is set, "date" should be invalid; also, "latestfirst" should be true to force inverted - if ( $params['until'] != "" ) { - $params['date'] = "" ; - $params['latestfirst'] = true ; - } else { - $params['latestfirst'] = false ; - } - - # Preventing full DB scan for single user; remove this and the following line once the user field has an index - $params['user'] = "" ; - - # Set $user variable if there is a valid user requested - if ( $params['user'] != "" ) { - $user = User::newFromName ( $params['user'] ) ; - if ( 0 != $user->getID() ) { - $params['user'] = $user ; - } else { - unset ( $params['user'] ) ; - } - unset ( $user ) ; - } else { - unset ( $params['user'] ) ; - } - - # Ths following depends on the user above, so don't move it upwards! - $params['timestamp'] = $this->getTimeStamp ( $params ) ; - - $images = $this->getImages ( $params ) ; - - if ( $params['gallery'] ) { - $between = $this->makeGallery ( $images , $params ) ; - } else { - $between = $this->makeList ( $images , $params ) ; - } - - # This is strange - $params['therearebefore'] = ( $params['firsttimestamp'] != $params['timestamp'] ) ; - - $noi = count ( $images ) > $params['limit'] ? $params['limit'] : count ( $images ) ; - - $out = '' . wfMsgForContent ( "imagelisttext" , $noi , wfMsg('bydate') ) . '
' ; - $out .= $this->matchform ( $params ) ; - $out .= $this->options ( $params ) ; - $out .= $this->limits ( $params ) ; - $out .= $this->prevnext ( $params ) ; - $out .= $between ; - $out .= $this->prevnext ( $params ) ; - - - $this->setHeaders(); - $wgOut->addHtml( $out ); - } - } # End of class - - $sp = new SpecialFilelist ; - $sp->execute( $par , $specialPage , $force_gallery) ; - -} diff --git a/includes/SpecialImagelist.php b/includes/SpecialImagelist.php index 3bfa0f73a93..6438e9c7162 100644 --- a/includes/SpecialImagelist.php +++ b/includes/SpecialImagelist.php @@ -5,22 +5,10 @@ * @subpackage SpecialPage */ - -require_once ( "SpecialFilelist.php" ) ; - -function wfSpecialImagelist( $par, $specialPage ) { - wfSpecialFilelist ( $par , $specialPage , false ) ; -} - -# _____________________________________________ -# The rest of this file is obsolete -# _____________________________________________ - - /** * */ -function OLD_wfSpecialImagelist() { +function wfSpecialImagelist() { global $wgUser, $wgOut, $wgLang, $wgRequest, $wgMiserMode; $sort = $wgRequest->getVal( 'sort' ); diff --git a/includes/SpecialNewimages.php b/includes/SpecialNewimages.php index 83115f0a3b5..98c6c36059a 100644 --- a/includes/SpecialNewimages.php +++ b/includes/SpecialNewimages.php @@ -5,24 +5,13 @@ * @subpackage SpecialPage */ -require_once ( "SpecialFilelist.php" ) ; - -function wfSpecialNewimages( $par, $specialPage ) { - wfSpecialFilelist ( $par , $specialPage , true ) ; -} - -# _____________________________________________ -# The rest of this file is obsolete -# _____________________________________________ - - /** */ require_once( 'ImageGallery.php' ); /** * */ -function OLD_wfSpecialNewimages( $par, $specialPage ) { +function wfSpecialNewimages( $par, $specialPage ) { global $wgUser, $wgOut, $wgLang, $wgContLang, $wgRequest, $wgGroupPermissions; diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php index 5c5fa771df0..f9a5ed923e3 100644 --- a/includes/SpecialPage.php +++ b/includes/SpecialPage.php @@ -77,8 +77,7 @@ $wgSpecialPages = array( 'Userrights' => new SpecialPage( 'Userrights', 'userrights' ), 'MIMEsearch' => new SpecialPage( 'MIMEsearch' ), 'Unwatchedpages' => new SpecialPage( 'Unwatchedpages', 'unwatchedpages' ), - 'Listredirects' => new SpecialPage( 'Listredirects' ), - 'Filelist' => new SpecialPage( 'Filelist' ) + 'Listredirects' => new SpecialPage( 'Listredirects' ) ); if( !$wgDisableCounters ) {