From b9b85843572bf283f48285001e276ba7e61b63f6 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Sun, 22 Feb 2009 13:37:51 +0100 Subject: updated to MediaWiki 1.14.0 --- includes/CategoryPage.php | 82 ++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 40 deletions(-) (limited to 'includes/CategoryPage.php') diff --git a/includes/CategoryPage.php b/includes/CategoryPage.php index 92e4e279..4ac24b5f 100644 --- a/includes/CategoryPage.php +++ b/includes/CategoryPage.php @@ -36,18 +36,18 @@ class CategoryPage extends Article { $this->closeShowCategory(); } } - + /** - * This page should not be cached if 'from' or 'until' has been used - * @return bool + * Don't return a 404 for categories in use. */ - function isFileCacheable() { - global $wgRequest; - - return ( ! Article::isFileCacheable() - || $wgRequest->getVal( 'from' ) - || $wgRequest->getVal( 'until' ) - ) ? false : true; + function hasViewableContent() { + if( parent::hasViewableContent() ) { + return true; + } else { + $cat = Category::newFromTitle( $this->mTitle ); + return $cat->getId() != 0; + } + } function openShowCategory() { @@ -85,8 +85,6 @@ class CategoryViewer { /** * Format the category data list. * - * @param string $from -- return only sort keys from this item on - * @param string $until -- don't return keys after this point. * @return string HTML output * @private */ @@ -144,7 +142,7 @@ class CategoryViewer { /** * Add a subcategory to the internal lists, using a title object - * @deprectated kept for compatibility, please use addSubcategoryObject instead + * @deprecated kept for compatibility, please use addSubcategoryObject instead */ function addSubcategory( $title, $sortkey, $pageLength ) { global $wgContLang; @@ -225,14 +223,14 @@ class CategoryViewer { array( 'page', 'categorylinks', 'category' ), array( 'page_title', 'page_namespace', 'page_len', 'page_is_redirect', 'cl_sortkey', 'cat_id', 'cat_title', 'cat_subcats', 'cat_pages', 'cat_files' ), - array( $pageCondition, - 'cl_to' => $this->title->getDBkey() ), + array( $pageCondition, 'cl_to' => $this->title->getDBkey() ), __METHOD__, array( 'ORDER BY' => $this->flip ? 'cl_sortkey DESC' : 'cl_sortkey', - 'USE INDEX' => array( 'categorylinks' => 'cl_sortkey' ), - 'LIMIT' => $this->limit + 1 ), + 'USE INDEX' => array( 'categorylinks' => 'cl_sortkey' ), + 'LIMIT' => $this->limit + 1 ), array( 'categorylinks' => array( 'INNER JOIN', 'cl_from = page_id' ), - 'category' => array( 'LEFT JOIN', 'cat_title = page_title AND page_namespace = ' . NS_CATEGORY ) ) ); + 'category' => array( 'LEFT JOIN', 'cat_title = page_title AND page_namespace = ' . NS_CATEGORY ) ) + ); $count = 0; $this->nextPage = null; @@ -249,7 +247,7 @@ class CategoryViewer { if( $title->getNamespace() == NS_CATEGORY ) { $cat = Category::newFromRow( $x, $title ); $this->addSubcategoryObject( $cat, $x->cl_sortkey, $x->page_len ); - } elseif( $this->showGallery && $title->getNamespace() == NS_IMAGE ) { + } elseif( $this->showGallery && $title->getNamespace() == NS_FILE ) { $this->addImage( $title, $x->cl_sortkey, $x->page_len, $x->page_is_redirect ); } else { $this->addPage( $title, $x->cl_sortkey, $x->page_len, $x->page_is_redirect ); @@ -339,10 +337,10 @@ class CategoryViewer { * Format a list of articles chunked by letter, either as a * bullet list or a columnar format, depending on the length. * - * @param array $articles - * @param array $articles_start_char - * @param int $cutoff - * @return string + * @param $articles Array + * @param $articles_start_char Array + * @param $cutoff Int + * @return String * @private */ function formatList( $articles, $articles_start_char, $cutoff = 6 ) { @@ -359,9 +357,9 @@ class CategoryViewer { * Format a list of articles chunked by letter in a three-column * list, ordered vertically. * - * @param array $articles - * @param array $articles_start_char - * @return string + * @param $articles Array + * @param $articles_start_char Array + * @return String * @private */ function columnList( $articles, $articles_start_char ) { @@ -418,9 +416,9 @@ class CategoryViewer { /** * Format a list of articles chunked by letter in a bullet list. - * @param array $articles - * @param array $articles_start_char - * @return string + * @param $articles Array + * @param $articles_start_char Array + * @return String * @private */ function shortList( $articles, $articles_start_char ) { @@ -440,12 +438,12 @@ class CategoryViewer { } /** - * @param Title $title - * @param string $first - * @param string $last - * @param int $limit - * @param array $query - additional query options to pass - * @return string + * @param $title Title object + * @param $first String + * @param $last String + * @param $limit Int + * @param $query Array: additional query options to pass + * @return String * @private */ function pagingLinks( $title, $first, $last, $limit, $query = array() ) { @@ -477,10 +475,10 @@ class CategoryViewer { * category-subcat-count-limited, category-file-count, * category-file-count-limited. * - * @param int $rescnt The number of items returned by our database query. - * @param int $dbcnt The number of items according to the category table. - * @param string $type 'subcat', 'article', or 'file' - * @return string A message giving the number of items, to output to HTML. + * @param $rescnt Int: The number of items returned by our database query. + * @param $dbcnt Int: The number of items according to the category table. + * @param $type String: 'subcat', 'article', or 'file' + * @return String: A message giving the number of items, to output to HTML. */ private function getCountMessage( $rescnt, $dbcnt, $type ) { global $wgLang; @@ -500,8 +498,12 @@ class CategoryViewer { # Case 1: seems sane. $totalcnt = $dbcnt; } elseif($totalrescnt < $this->limit && !$this->from && !$this->until){ - # Case 2: not sane, but salvageable. + # Case 2: not sane, but salvageable. Use the number of results. + # Since there are fewer than 200, we can also take this opportunity + # to refresh the incorrect category table entry -- which should be + # quick due to the small number of entries. $totalcnt = $rescnt; + $this->cat->refreshCounts(); } else { # Case 3: hopeless. Don't give a total count at all. return wfMsgExt("category-$type-count-limited", 'parse', -- cgit v1.2.2