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

Reply via email to