Revert r35848 per Brion's WONTFIX of bug 14536: "This would just mean that there...
[lhc/web/wiklou.git] / includes / Categoryfinder.php
index b1e48df..d28f2ee 100644 (file)
@@ -1,28 +1,27 @@
 <?php
-/*
-The "Categoryfinder" class takes a list of articles, creates an internal representation of all their parent
-categories (as well as parents of parents etc.). From this representation, it determines which of these articles
-are in one or all of a given subset of categories.
-
-Example use :
-
-       # Determines wether the article with the page_id 12345 is in both
-       # "Category 1" and "Category 2" or their subcategories, respectively
-       
-       $cf = new Categoryfinder ;
-       $cf->seed (
-               array ( 12345 ) ,
-               array ( "Category 1","Category 2" ) ,
-               "AND"
-       ) ;
-       $a = $cf->run() ;
-       print implode ( "," , $a ) ;
-
-*/
-
-
-if( !defined( 'MEDIAWIKI' ) ) die( -1 );
 
+/**
+ * The "Categoryfinder" class takes a list of articles, creates an internal
+ * representation of all their parent categories (as well as parents of
+ * parents etc.). From this representation, it determines which of these
+ * articles are in one or all of a given subset of categories.
+ *
+ * Example use :
+ * <code>
+ *     # Determines whether the article with the page_id 12345 is in both
+ *     # "Category 1" and "Category 2" or their subcategories, respectively
+ *
+ *     $cf = new Categoryfinder ;
+ *     $cf->seed (
+ *             array ( 12345 ) ,
+ *             array ( "Category 1","Category 2" ) ,
+ *             "AND"
+ *     ) ;
+ *     $a = $cf->run() ;
+ *     print implode ( "," , $a ) ;
+ * </code>
+ *
+ */
 class Categoryfinder {
 
        var $articles = array () ; # The original article IDs passed to the seed function
@@ -36,14 +35,16 @@ class Categoryfinder {
 
        /**
         * Constructor (currently empty).
-       */
-       function Categoryfinder () {
+        */
+       function __construct() {
        }
 
        /**
         * Initializes the instance. Do this prior to calling run().
-        @param $article_ids Array of article IDs
-       */
+        * @param $article_ids Array of article IDs
+        * @param $categories FIXME
+        * @param $mode String: FIXME, default 'AND'.
+        */
        function seed ( $article_ids , $categories , $mode = "AND" ) {
                $this->articles = $article_ids ;
                $this->next = $article_ids ;
@@ -61,10 +62,10 @@ class Categoryfinder {
        /**
         * Iterates through the parent tree starting with the seed values,
         * then checks the articles if they match the conditions
-        @return array of page_ids (those given to seed() that match the conditions)
-       */
+        @return array of page_ids (those given to seed() that match the conditions)
+        */
        function run () {
-               $this->dbr =& wfGetDB( DB_SLAVE );
+               $this->dbr = wfGetDB( DB_SLAVE );
                while ( count ( $this->next ) > 0 ) {
                        $this->scan_next_layer () ;
                }
@@ -83,20 +84,20 @@ class Categoryfinder {
 
        /**
         * This functions recurses through the parent representation, trying to match the conditions
-        @param $id The article/category to check
-        @param $conds The array of categories to match
-        @return bool Does this match the conditions?
-       */
+        @param $id The article/category to check
+        @param $conds The array of categories to match
+        @return bool Does this match the conditions?
+        */
        function check ( $id , &$conds ) {
                # Shortcut (runtime paranoia): No contitions=all matched
                if ( count ( $conds ) == 0 ) return true ;
-               
+
                if ( !isset ( $this->parents[$id] ) ) return false ;
 
                # iterate through the parents
                foreach ( $this->parents[$id] AS $p ) {
                        $pname = $p->cl_to ;
-                       
+
                        # Is this a condition?
                        if ( isset ( $conds[$pname] ) ) {
                                # This key is in the category list!
@@ -113,7 +114,7 @@ class Categoryfinder {
                                        }
                                }
                        }
-                       
+
                        # Not done yet, try sub-parents
                        if ( !isset ( $this->name2id[$pname] ) ) {
                                # No sub-parent
@@ -130,10 +131,10 @@ class Categoryfinder {
 
        /**
         * Scans a "parent layer" of the articles/categories in $this->next
-       */
+        */
        function scan_next_layer () {
                $fname = "Categoryfinder::scan_next_layer" ;
-       
+
                # Find all parents of the article currently in $this->next
                $layer = array () ;
                $res = $this->dbr->select(
@@ -161,7 +162,7 @@ class Categoryfinder {
                $this->dbr->freeResult( $res ) ;
 
                $this->next = array() ;
-               
+
                # Find the IDs of all category pages in $layer, if they exist
                if ( count ( $layer ) > 0 ) {
                        $res = $this->dbr->select(
@@ -187,5 +188,3 @@ class Categoryfinder {
        }
 
 } # END OF CLASS "Categoryfinder"
-
-?>
\ No newline at end of file