X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FPager.php;h=438a99ae8458a3bb5b0e84f6fa8ba19ecf01bc95;hb=d7f7a6234b36a3ab64df46ff46319f22d9f9ff1a;hp=41e950116db70bd3f10a3675972a9ef5eb82d3b8;hpb=54dd841a6f32ca1eb8f580294fb57b557d1db72d;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Pager.php b/includes/Pager.php index 41e950116d..438a99ae84 100644 --- a/includes/Pager.php +++ b/includes/Pager.php @@ -1,11 +1,30 @@ mIndexField ), $this->mExtraSortFields ); if ( $descending ) { - $options['ORDER BY'] = implode( ',', $sortColumns ); + $options['ORDER BY'] = $sortColumns; $operator = '>'; } else { $orderBy = array(); foreach ( $sortColumns as $col ) { $orderBy[] = $col . ' DESC'; } - $options['ORDER BY'] = implode( ',', $orderBy ); + $options['ORDER BY'] = $orderBy; $operator = '<'; } if ( $offset != '' ) { @@ -366,9 +385,10 @@ abstract class IndexPager extends ContextSource implements Pager { * @param $text String: text displayed on the link * @param $query Array: associative array of paramter to be in the query string * @param $type String: value of the "rel" attribute + * * @return String: HTML fragment */ - function makeLink($text, $query = null, $type=null) { + function makeLink( $text, array $query = null, $type = null ) { if ( $query === null ) { return $text; } @@ -382,6 +402,7 @@ abstract class IndexPager extends ContextSource implements Pager { if( $type ) { $attrs['class'] = "mw-{$type}link"; } + return Linker::linkKnown( $this->getTitle(), $text, @@ -433,7 +454,7 @@ abstract class IndexPager extends ContextSource implements Pager { * By default, all parameters passed in the URL are used, except for a * short blacklist. * - * @return Associative array + * @return array Associative array */ function getDefaultQuery() { if ( !isset( $this->mDefaultQuery ) ) { @@ -472,7 +493,7 @@ abstract class IndexPager extends ContextSource implements Pager { } # Don't announce the limit everywhere if it's the default - $urlLimit = $this->mLimit == $this->mDefaultLimit ? '' : $this->mLimit; + $urlLimit = $this->mLimit == $this->mDefaultLimit ? null : $this->mLimit; if ( $this->mIsFirst ) { $prev = false; @@ -526,6 +547,7 @@ abstract class IndexPager extends ContextSource implements Pager { function getPagingLinks( $linkTexts, $disabledTexts = array() ) { $queries = $this->getPagingQueries(); $links = array(); + foreach ( $queries as $type => $query ) { if ( $query !== false ) { $links[$type] = $this->makeLink( @@ -539,6 +561,7 @@ abstract class IndexPager extends ContextSource implements Pager { $links[$type] = $linkTexts[$type]; } } + return $links; } @@ -559,48 +582,6 @@ abstract class IndexPager extends ContextSource implements Pager { return $links; } - /** - * Assembles an HTMLForm for the Pager and returns the HTML - * - * @return string - */ - public function buildHTMLForm() { - if ( $this->getHTMLFormFields() === null ) { - throw new MWException( __METHOD__ . " was called without any form fields being defined" ); - } - - $form = new HTMLForm( $this->getHTMLFormFields(), $this->getContext() ); - $form->setMethod( 'get' ); - $form->setWrapperLegendMsg( $this->getHTMLFormLegend() ); - $form->setSubmitTextMsg( $this->getHTMLFormSubmit() ); - $this->addHiddenFields( $form ); - $this->modifyHTMLForm( $form ); - $form->prepareForm(); - - return $form->getHTML( '' ); - } - - /** - * Adds hidden elements to forms for things that are in the query string. - * This is so that parameters like offset stick through form submissions - * - * @param HTMLForm $form - */ - protected function addHiddenFields( HTMLForm $form ) { - $query = $this->getRequest()->getQueryValues(); - $fieldsBlacklist = array( 'title' ); - $fields = $form->getFlatFields(); - foreach ( $fields as $name => $field ) { - $fieldsBlacklist[] = $field->getName(); - } - foreach ( $query as $name => $value ) { - if ( in_array( $name, $fieldsBlacklist ) ) { - continue; - } - $form->addHiddenField( $name, $value ); - } - } - /** * Abstract formatting function. This should return an HTML string * representing the result row $row. Rows will be concatenated and @@ -677,43 +658,6 @@ abstract class IndexPager extends ContextSource implements Pager { * @return Boolean */ protected function getDefaultDirections() { return false; } - - /** - * Returns an array for HTMLForm fields for the pager - * - * Only used if the pager makes use of HTMLForms - * - * @return array|null - */ - protected function getHTMLFormFields() { return null; } - - /** - * Message name for the fieldset legend text - * - * Only used if the pager makes use of HTMLForms - * - * @return string - */ - protected function getHTMLFormLegend() { return ''; } - - /** - * Message name for the submit button text - * - * Only used if the pager makes use of HTMLForms - * - * @return string - */ - protected function getHTMLFormSubmit() { return ''; } - - /** - * If the pager needs to do any modifications to the Form, override this - * function. - * - * Only used if the pager makes use of HTMLForms - * - * @param HTMLForm $form - */ - protected function modifyHTMLForm( HTMLForm $form ) {} } @@ -730,7 +674,9 @@ abstract class AlphabeticPager extends IndexPager { * @return String HTML */ function getNavigationBar() { - if ( !$this->isNavigationBarShown() ) return ''; + if ( !$this->isNavigationBarShown() ) { + return ''; + } if( isset( $this->mNavigationBar ) ) { return $this->mNavigationBar; @@ -758,13 +704,13 @@ abstract class AlphabeticPager extends IndexPager { $limitLinks = $this->getLimitLinks(); $limits = $lang->pipeList( $limitLinks ); - $this->mNavigationBar = - "(" . $lang->pipeList( + $this->mNavigationBar = wfMessage( 'parentheses' )->rawParams( + $lang->pipeList( array( $pagingLinks['first'], - $pagingLinks['last'] ) - ) . ") " . + $pagingLinks['last'] ) + ) )->escaped() . " " . wfMsgHtml( 'viewprevnext', $pagingLinks['prev'], - $pagingLinks['next'], $limits ); + $pagingLinks['next'], $limits ); if( !is_array( $this->getIndexField() ) ) { # Early return to avoid undue nesting @@ -792,7 +738,8 @@ abstract class AlphabeticPager extends IndexPager { } if( $extra !== '' ) { - $this->mNavigationBar .= " ($extra)"; + $extra = ' ' . wfMessage( 'parentheses' )->rawParams( $extra )->escaped(); + $this->mNavigationBar .= $extra; } return $this->mNavigationBar; @@ -848,24 +795,28 @@ abstract class ReverseChronologicalPager extends IndexPager { $pagingLinks = $this->getPagingLinks( $linkTexts ); $limitLinks = $this->getLimitLinks(); $limits = $this->getLanguage()->pipeList( $limitLinks ); - - $this->mNavigationBar = "({$pagingLinks['first']}" . + $firstLastLinks = wfMessage( 'parentheses' )->rawParams( "{$pagingLinks['first']}" . wfMsgExt( 'pipe-separator' , 'escapenoentities' ) . - "{$pagingLinks['last']}) " . + "{$pagingLinks['last']}" )->escaped(); + + $this->mNavigationBar = $firstLastLinks . ' ' . wfMsgHTML( 'viewprevnext', $pagingLinks['prev'], $pagingLinks['next'], $limits ); + return $this->mNavigationBar; } function getDateCond( $year, $month ) { - $year = intval($year); - $month = intval($month); + $year = intval( $year ); + $month = intval( $month ); + // Basic validity checks $this->mYear = $year > 0 ? $year : false; - $this->mMonth = ($month > 0 && $month < 13) ? $month : false; + $this->mMonth = ( $month > 0 && $month < 13 ) ? $month : false; + // Given an optional year and month, we need to generate a timestamp // to use as "WHERE rev_timestamp <= result" // Examples: year = 2006 equals < 20070101 (+000000) @@ -874,6 +825,7 @@ abstract class ReverseChronologicalPager extends IndexPager { if ( !$this->mYear && !$this->mMonth ) { return; } + if ( $this->mYear ) { $year = $this->mYear; } else { @@ -884,6 +836,7 @@ abstract class ReverseChronologicalPager extends IndexPager { $year--; } } + if ( $this->mMonth ) { $month = $this->mMonth + 1; // For December, we want January 1 of the next year @@ -896,14 +849,18 @@ abstract class ReverseChronologicalPager extends IndexPager { $month = 1; $year++; } + // Y2K38 bug if ( $year > 2032 ) { $year = 2032; } + $ymd = (int)sprintf( "%04d%02d01", $year, $month ); + if ( $ymd > 20320101 ) { $ymd = 20320101; } + $this->mOffset = $this->mDb->timestamp( "${ymd}000000" ); } } @@ -916,7 +873,7 @@ abstract class TablePager extends IndexPager { var $mSort; var $mCurrentRow; - function __construct( IContextSource $context = null ) { + public function __construct( IContextSource $context = null ) { if ( $context ) { $this->setContext( $context ); } @@ -934,6 +891,10 @@ abstract class TablePager extends IndexPager { parent::__construct(); } + /** + * @protected + * @return string + */ function getStartBody() { global $wgStylePath; $tableClass = htmlspecialchars( $this->getTableClass() ); @@ -967,7 +928,7 @@ abstract class TablePager extends IndexPager { $image = htmlspecialchars( "$wgStylePath/common/images/$image" ); $link = $this->makeLink( "" . - htmlspecialchars( $name ), $query ); + htmlspecialchars( $name ), $query ); $s .= "