https://www.mediawiki.org/wiki/Special:Code/MediaWiki/111976
Revision: 111976
Author: jeroendedauw
Date: 2012-02-20 22:53:32 +0000 (Mon, 20 Feb 2012)
Log Message:
-----------
fixed fail in import script and cleaned up some code
Modified Paths:
--------------
trunk/extensions/EducationProgram/includes/EPCourse.php
trunk/extensions/EducationProgram/maintenance/importWEPData.php
Modified: trunk/extensions/EducationProgram/includes/EPCourse.php
===================================================================
--- trunk/extensions/EducationProgram/includes/EPCourse.php 2012-02-20
22:48:43 UTC (rev 111975)
+++ trunk/extensions/EducationProgram/includes/EPCourse.php 2012-02-20
22:53:32 UTC (rev 111976)
@@ -532,12 +532,23 @@
* @see DBDataObject::setField()
*/
public function setField( $name, $value ) {
- if ( $name === 'instructors' ) {
- $this->instructors = false;
+ switch ( $name ) {
+ case 'mc':
+ $value = str_replace( '_', ' ', $value );
+ break;
+ case 'instructors':
+ $this->instructors = false;
+ break;
+ case 'students':
+ $this->students = false;
+ break;
+ case 'oas':
+ $this->oas = false;
+ break;
+ case 'cas':
+ $this->cas = false;
+ break;
}
- elseif ( $name === 'mc' ) {
- $value = str_replace( '_', ' ', $value );
- }
parent::setField( $name, $value );
}
@@ -566,21 +577,10 @@
$field = $roleMap[$role];
$users = $this->getField( $field );
- $addedUsers = array();
+ $addedUsers = array_diff( (array)$newUsers, $users );
- foreach ( (array)$newUsers as $userId ) {
- if ( !is_integer( $userId ) ) {
- throw new MWException( 'Provided user id is not
an integer' );
- }
-
- if ( !in_array( $userId, $users ) ) {
- $users[] = $userId;
- $addedUsers[] = $userId;
- }
- }
-
if ( count( $addedUsers ) > 0 ) {
- $this->setField( $field, $users );
+ $this->setField( $field, array_merge( $users,
$addedUsers ) );
$success = true;
Modified: trunk/extensions/EducationProgram/maintenance/importWEPData.php
===================================================================
--- trunk/extensions/EducationProgram/maintenance/importWEPData.php
2012-02-20 22:48:43 UTC (rev 111975)
+++ trunk/extensions/EducationProgram/maintenance/importWEPData.php
2012-02-20 22:53:32 UTC (rev 111976)
@@ -154,9 +154,8 @@
* @param array $courseIds Maps course names to ids
*/
protected function insertStudents( array $students, array $courseIds ) {
- foreach ( $students as $student => $courseNames ) {
- $name = $student;
- $user = User::newFromName( $student );
+ foreach ( $students as $name => $courseNames ) {
+ $user = User::newFromName( $name );
if ( $user === false ) {
echo "Failed to insert student '$name'.
(invalid user name)\n";
@@ -184,16 +183,18 @@
foreach ( $courseNames as $courseName )
{
if ( array_key_exists(
$courseName, $courseIds ) ) {
- $courses[] =
EPCourses::singleton()->newFromArray( array(
- 'id' =>
$courseIds[$courseName],
- 'students' =>
array(),
- ) );
+ $revAction = new
EPRevisionAction();
+ $revAction->setUser(
$user );
+ $revAction->setComment(
'Import' );
+
+ $course =
EPCourses::singleton()->selectRow( null, array( 'id' => $courseIds[$courseName]
) );
+ $course->enlistUsers(
array( $user->getId() ), 'student', true, $revAction );
}
else {
echo "Failed to
associate student '$name' with course '$courseName'.\n";
}
}
-
+
if ( $student->associateWithCourses(
$courses ) ) {
echo "Inserted student
'$name'\t\t and associated with courses: " . str_replace( '_', ' ', implode( ',
', $courseNames ) ) . "\n";
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs