summaryrefslogtreecommitdiff
path: root/includes/CategoryPage.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/CategoryPage.php')
-rw-r--r--includes/CategoryPage.php82
1 files changed, 42 insertions, 40 deletions
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',