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