https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112500
Revision: 112500
Author: jeroendedauw
Date: 2012-02-27 18:53:01 +0000 (Mon, 27 Feb 2012)
Log Message:
-----------
fixed issue with enbrollment status
Modified Paths:
--------------
trunk/extensions/EducationProgram/api/ApiRefreshEducation.php
trunk/extensions/EducationProgram/includes/EPCourses.php
trunk/extensions/EducationProgram/includes/EPOAPager.php
trunk/extensions/EducationProgram/includes/EPOrgs.php
trunk/extensions/EducationProgram/includes/EPRoleObject.php
trunk/extensions/EducationProgram/includes/EPStudent.php
trunk/extensions/EducationProgram/includes/EPStudentPager.php
trunk/extensions/EducationProgram/includes/EPStudents.php
trunk/extensions/EducationProgram/specials/SpecialEnroll.php
Modified: trunk/extensions/EducationProgram/api/ApiRefreshEducation.php
===================================================================
--- trunk/extensions/EducationProgram/api/ApiRefreshEducation.php
2012-02-27 18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/api/ApiRefreshEducation.php
2012-02-27 18:53:01 UTC (rev 112500)
@@ -24,6 +24,7 @@
protected static $typeMap = array(
'org' => 'EPOrsg',
'course' => 'EPCourses',
+ 'student' => 'EPStudents',
);
public function execute() {
Modified: trunk/extensions/EducationProgram/includes/EPCourses.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPCourses.php 2012-02-27
18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/includes/EPCourses.php 2012-02-27
18:53:01 UTC (rev 112500)
@@ -147,4 +147,32 @@
return EP_NS_COURSE;
}
+ /**
+ * Get the conditions that will select courses with the provided state.
+ *
+ * @since 0.1
+ *
+ * @param string $state
+ */
+ public static function getStatusConds( $state ) {
+ $now = wfGetDB( DB_SLAVE )->addQuotes( wfTimestampNow() );
+
+ $conditions = array();
+
+ switch ( $state ) {
+ case 'current':
+ $conditions[] = 'end >= ' . $now;
+ $conditions[] = 'start <= ' . $now;
+ break;
+ case 'passed':
+ $conditions[] = 'end < ' . $now;
+ break;
+ case 'planned':
+ $conditions[] = 'start > ' . $now;
+ break;
+ }
+
+ return $conditions;
+ }
+
}
Modified: trunk/extensions/EducationProgram/includes/EPOAPager.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPOAPager.php 2012-02-27
18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/includes/EPOAPager.php 2012-02-27
18:53:01 UTC (rev 112500)
@@ -114,7 +114,7 @@
function( EPCourse $course ) {
return $course->getLink();
},
- $oa->getCoursesWithState( 'current',
'name' )
+ $oa->getCourses( 'name',
EPCourses::getStatusConds( 'current' ) )
) );
break;
}
Modified: trunk/extensions/EducationProgram/includes/EPOrgs.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPOrgs.php 2012-02-27
18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/includes/EPOrgs.php 2012-02-27
18:53:01 UTC (rev 112500)
@@ -104,7 +104,6 @@
);
}
-
/**
* Returns a list of orgs in an array that can be fed to select inputs.
*
Modified: trunk/extensions/EducationProgram/includes/EPRoleObject.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPRoleObject.php 2012-02-27
18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/includes/EPRoleObject.php 2012-02-27
18:53:01 UTC (rev 112500)
@@ -200,37 +200,6 @@
}
/**
- * Get the courses with a certain state.
- * States can be 'current', 'passed' and 'planned'
- *
- * @since 0.1
- *
- * @param string $state
- * @param array|null $fields
- * @param array $conditions
- *
- * @return array of EPCourse
- */
- public function getCoursesWithState( $state, $fields = null, array
$conditions = array() ) {
- $now = wfGetDB( DB_SLAVE )->addQuotes( wfTimestampNow() );
-
- switch ( $state ) {
- case 'passed':
- $conditions[] = 'end < ' . $now;
- break;
- case 'planned':
- $conditions[] = 'start > ' . $now;
- break;
- case 'current':
- $conditions[] = 'end >= ' . $now;
- $conditions[] = 'start <= ' . $now;
- break;
- }
-
- return $this->getCourses( $fields, $conditions );
- }
-
- /**
* Returns if the student has any course matching the provided
conditions.
*
* @since 0.1
@@ -240,6 +209,7 @@
* @return boolean
*/
public function hasCourse( array $conditions = array() ) {
+ // TODO: make more efficient
return count( $this->getCourses( 'id', $conditions ) ) > 0;
}
Modified: trunk/extensions/EducationProgram/includes/EPStudent.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPStudent.php 2012-02-27
18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/includes/EPStudent.php 2012-02-27
18:53:01 UTC (rev 112500)
@@ -46,5 +46,30 @@
public function getRoleName() {
return 'student';
}
+
+ /**
+ * (non-PHPdoc)
+ * @see DBDataObject::loadSummaryFields()
+ */
+ public function loadSummaryFields( $summaryFields = null ) {
+ if ( is_null( $summaryFields ) ) {
+ $summaryFields = array( 'last_active', 'active_enroll'
);
+ }
+ else {
+ $summaryFields = (array)$summaryFields;
+ }
+ $fields = array();
+
+ if ( in_array( 'active_enroll', $summaryFields ) ) {
+ $fields['active_enroll'] = $this->hasCourse(
EPCourses::getStatusConds( 'current' ) );
+ }
+
+ if ( in_array( 'last_active', $summaryFields ) ) {
+ // TODO
+ }
+
+ $this->setFields( $fields );
+ }
+
}
Modified: trunk/extensions/EducationProgram/includes/EPStudentPager.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPStudentPager.php
2012-02-27 18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/includes/EPStudentPager.php
2012-02-27 18:53:01 UTC (rev 112500)
@@ -85,7 +85,7 @@
function( EPCourse $course ) {
return $course->getLink();
},
-
$this->currentObject->getCoursesWithState( 'current', 'name' )
+ $this->currentObject->getCourses(
'name', EPCourses::getStatusConds( 'current' ) )
) );
break;
}
Modified: trunk/extensions/EducationProgram/includes/EPStudents.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPStudents.php 2012-02-27
18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/includes/EPStudents.php 2012-02-27
18:53:01 UTC (rev 112500)
@@ -60,5 +60,18 @@
'active_enroll' => 'bool',
);
}
-
+
+ /**
+ * (non-PHPdoc)
+ * @see DBTable::getSummaryFields()
+ * @since 0.1
+ * @return array
+ */
+ public function getSummaryFields() {
+ return array(
+ 'last_active',
+ 'active_enroll',
+ );
+ }
+
}
Modified: trunk/extensions/EducationProgram/specials/SpecialEnroll.php
===================================================================
--- trunk/extensions/EducationProgram/specials/SpecialEnroll.php
2012-02-27 18:18:44 UTC (rev 112499)
+++ trunk/extensions/EducationProgram/specials/SpecialEnroll.php
2012-02-27 18:53:01 UTC (rev 112500)
@@ -231,7 +231,7 @@
$hadStudent = $student->hasIdField();
$fields = array(
- 'active_enroll' => 1
+ 'active_enroll' => true
);
if ( !$hadStudent ) {
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs