http://www.mediawiki.org/wiki/Special:Code/MediaWiki/97968

Revision: 97968
Author:   catrope
Date:     2011-09-23 22:44:29 +0000 (Fri, 23 Sep 2011)
Log Message:
-----------
MoodBar: Implement filtering in Special:MoodBarFeedback. Doesn't preserve form 
values yet, will add that

Modified Paths:
--------------
    trunk/extensions/MoodBar/SpecialMoodBarFeedback.php

Modified: trunk/extensions/MoodBar/SpecialMoodBarFeedback.php
===================================================================
--- trunk/extensions/MoodBar/SpecialMoodBarFeedback.php 2011-09-23 22:27:50 UTC 
(rev 97967)
+++ trunk/extensions/MoodBar/SpecialMoodBarFeedback.php 2011-09-23 22:44:29 UTC 
(rev 97968)
@@ -10,11 +10,27 @@
        }
 
        public function execute( $par ) {
-               global $wgOut;
+               global $wgOut, $wgRequest;
+               
+               // Determine filters from the query string
+               $filters = array();
+               $type = $wgRequest->getArray( 'type' );
+               if ( $type ) {
+                       $filters['type'] = $type;
+               }
+               $username = strval( $wgRequest->getVal( 'username' ) );
+               if ( $username !== '' ) {
+                       $user = User::newFromName( $username );
+                       if ( $user ) {
+                               $filters['user'] = $user;
+                       }
+               }
+               // Do the query
+               $res = $this->doQuery( $filters );
 
+               // Output HTML
                $wgOut->setPageTitle( wfMsg( 'moodbar-feedback-title' ) );
                $wgOut->addHTML( $this->buildForm() );
-               $res = $this->doQuery();
                $wgOut->addHTML( $this->buildList( $res ) );
                $wgOut->addModuleStyles( 'ext.moodBar.dashboard.styles' );
        }
@@ -37,21 +53,21 @@
                                        <legend 
class="fbd-filters-label">$typeMsg</legend>
                                        <ul>
                                                <li>
-                                                       <input type="checkbox" 
id="fbd-filters-type-praise">
+                                                       <input type="checkbox" 
id="fbd-filters-type-praise" name="type[]" value="happy">
                                                        <label 
for="fbd-filters-type-praise" 
id="fbd-filters-type-praise-label">$praiseMsg</label>
                                                </li>
                                                <li>
-                                                       <input type="checkbox" 
id="fbd-filters-type-confusion">
+                                                       <input type="checkbox" 
id="fbd-filters-type-confusion" name="type[]" value="confused">
                                                        <label 
for="fbd-filters-type-confusion" 
id="fbd-filters-type-confusion-label">$confusionMsg</label>
                                                </li>
                                                <li>
-                                                       <input type="checkbox" 
id="fbd-filters-type-issues">
+                                                       <input type="checkbox" 
id="fbd-filters-type-issues" name="type[]" value="sad">
                                                        <label 
for="fbd-filters-type-issues" 
id="fbd-filters-type-issues-label">$issuesMsg</label>
                                                </li>
                                        </ul>
                                </fieldset>
                                <label for="fbd-filters-username" 
class="fbd-filters-label">$usernameMsg</label>
-                               <input type="text" id="fbd-filters-username" 
class="fbd-filters-input" />
+                               <input type="text" id="fbd-filters-username" 
class="fbd-filters-input" name="username" />
                                <button type="submit" 
id="fbd-filters-set">$setFiltersMsg</button>
                        </form>
                        <a href="#" id="fbd-about">$whatIsMsg</a>
@@ -101,14 +117,28 @@
                return $html;
        }
        
-       public function doQuery() {
+       public function doQuery( $filters ) {
+               $conds = array();
+               if ( isset( $filters['type'] ) ) {
+                       $conds['mbf_type'] = $filters['type'];
+               }
+               if ( isset( $filters['user'] ) ) {
+                       if ( $filters['user']->isAnon() ) {
+                               $conds['mbf_user_id'] = 0;
+                               $conds['mbf_user_ip'] = 
$filters['user']->getName();
+                       } else {
+                               $conds['mbf_user_id'] = 
$filters['user']->getID();
+                               $conds[] = 'mbf_user_ip IS NULL';
+                       }
+               }
+               
                $dbr = wfGetDB( DB_SLAVE );
                return $dbr->select( array( 'moodbar_feedback', 'user' ), array(
                                'user_name', 'mbf_id', 'mbf_type',
                                'mbf_timestamp', 'mbf_user_id', 'mbf_user_ip', 
'mbf_comment'
-                       ), array(
-                               '1=1', //TODO
-                       ), __METHOD__,
+                       ),
+                       $conds,
+                       __METHOD__,
                        array( 'LIMIT' => 20 /*TODO*/, 'ORDER BY' => 
'mbf_timestamp DESC' ),
                        array( 'user' => array( 'LEFT JOIN', 
'user_id=mbf_user_id' ) )
                );


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to