From: Brion Vibber Date: Mon, 9 Jan 2006 22:06:40 +0000 (+0000) Subject: Reverting SpecialImagelist and SpecialNewimages from odd half-state. X-Git-Tag: 1.6.0~652 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/membres/fiche.php?a=commitdiff_plain;h=a09742ecfefdca5605cf9599facef76efe146c5d;p=lhc%2Fweb%2Fwiklou.git Reverting SpecialImagelist and SpecialNewimages from odd half-state. If they're actually being replaced, they should be actually replaced, not left half-there and unused. New code not yet reviewed. --- diff --git a/includes/SpecialFilelist.php b/includes/SpecialFilelist.php deleted file mode 100644 index 3483dbeb8a..0000000000 --- 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 = "
" . - " " . - "
" ; - return "

" . $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 3bfa0f73a9..6438e9c716 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 83115f0a3b..98c6c36059 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 5c5fa771df..f9a5ed923e 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 ) {