https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113341

Revision: 113341
Author:   jeroendedauw
Date:     2012-03-08 01:14:44 +0000 (Thu, 08 Mar 2012)
Log Message:
-----------
properly implement hasCourse

Modified Paths:
--------------
    trunk/extensions/EducationProgram/includes/DBTable.php
    trunk/extensions/EducationProgram/includes/EPRoleObject.php

Modified: trunk/extensions/EducationProgram/includes/DBTable.php
===================================================================
--- trunk/extensions/EducationProgram/includes/DBTable.php      2012-03-08 
00:52:30 UTC (rev 113340)
+++ trunk/extensions/EducationProgram/includes/DBTable.php      2012-03-08 
01:14:44 UTC (rev 113341)
@@ -197,7 +197,7 @@
 
                $objects = $this->select( $fields, $conditions, $options );
 
-               return count( $objects ) > 0 ? $objects[0] : false;
+               return empty( $objects ) ? false : $objects[0];
        }
 
        /**
@@ -245,7 +245,7 @@
 
                $objects = $this->selectFields( $fields, $conditions, $options, 
$collapse );
 
-               return count( $objects ) > 0 ? $objects[0] : false;
+               return empty( $objects ) ? false : $objects[0];
        }
 
        /**

Modified: trunk/extensions/EducationProgram/includes/EPRoleObject.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPRoleObject.php 2012-03-08 
00:52:30 UTC (rev 113340)
+++ trunk/extensions/EducationProgram/includes/EPRoleObject.php 2012-03-08 
01:14:44 UTC (rev 113341)
@@ -209,8 +209,23 @@
         * @return boolean
         */
        public function hasCourse( array $conditions = array() ) {
-               // TODO: make more efficient
-               return count( $this->getCourses( 'id', $conditions ) ) > 0;
+               $courseTable = EPCourses::singleton();
+
+               return wfGetDB( DB_SLAVE )->select(
+                       array( 'ep_courses', 'ep_users_per_course' ),
+                       $courseTable->getPrefixedField( 'id' ),
+                       array_merge( array(
+                               'upc_role' => $this->getRoleId(),
+                               'upc_user_id' => $this->getField( 'user_id' ),
+                       ), $courseTable->getPrefixedValues( $conditions ) ),
+                       __METHOD__,
+                       array(
+                               'LIMIT' => 1
+                       ),
+                       array(
+                               'ep_users_per_course' => array( 'INNER JOIN', 
array( 'upc_course_id=course_id' ) ),
+                       )
+               )->numRows() > 0;
        }
        
        /**
@@ -232,7 +247,7 @@
                        array_merge( array(
                                'upc_role' => $this->getRoleId(),
                                'upc_user_id' => $this->getField( 'user_id' ),
-                       ), EPCourses::singleton()->getPrefixedValues( 
$conditions ) ),
+                       ), $courseTable->getPrefixedValues( $conditions ) ),
                        __METHOD__,
                        array(),
                        array(
@@ -243,7 +258,7 @@
                $courses = array();
                
                foreach ( $result as $course ) {
-                       $courses[] = EPCourses::singleton()->newFromDBResult( 
$course );
+                       $courses[] = $courseTable->newFromDBResult( $course );
                }
                
                return $courses;


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

Reply via email to