Browse Source

Adding unsubscribe user to session/course option see BT#6845 + Fixing course id in query.

Julio Montoya 11 years ago
parent
commit
9985547a2d
2 changed files with 51 additions and 3 deletions
  1. 50 2
      main/cron/import_csv.php
  2. 1 1
      main/inc/lib/course.lib.php

+ 50 - 2
main/cron/import_csv.php

@@ -95,7 +95,9 @@ class ImportCsv
                 if ($fileInfo['extension'] == 'csv') {
                     // teachers_yyyymmdd.csv, courses_yyyymmdd.csv, students_yyyymmdd.csv and sessions_yyyymmdd.csv
                     $parts = explode('_', $fileInfo['filename']);
-                    $method = 'import'.ucwords($parts[1]);
+                    $preMethod = ucwords($parts[1]);
+                    $preMethod = str_replace('-static', 'Static', $preMethod);
+                    $method = 'import'.$preMethod;
 
                     if (method_exists($this, $method)) {
                          $fileToProcess[$parts[1]][] = array(
@@ -105,6 +107,8 @@ class ImportCsv
                         //$this->$method($path.$fileInfo['basename']);
                     } else {
                         echo "Error - This file '$file' can't be processed.".PHP_EOL;
+                        echo "Trying to call $method".PHP_EOL;
+
                         echo "The file have to has this format:".PHP_EOL;
                         echo "prefix_students_ddmmyyyy.csv, prefix_teachers_ddmmyyyy.csv, prefix_courses_ddmmyyyy.csv, prefix_sessions_ddmmyyyy.csv ".PHP_EOL;
                         exit;
@@ -117,7 +121,7 @@ class ImportCsv
                 exit;
             }
 
-            $sections = array('students', 'teachers', 'courses', 'sessions');
+            $sections = array('students', 'teachers', 'courses', 'sessions', 'unsubscribe-static');
 
             $this->prepareImport();
 
@@ -138,6 +142,8 @@ class ImportCsv
 
                 }
             }
+
+
         }
     }
 
@@ -602,6 +608,48 @@ class ImportCsv
         $this->moveFile($file);
     }
 
+    /**
+     * @param string $file
+     */
+    private function importUnsubscribeStatic($file)
+    {
+        $data = Import::csv_to_array($file);
+
+        //$language = $this->defaultLanguage;
+
+        if (!empty($data)) {
+            $this->logger->addInfo(count($data)." records found.");
+            foreach ($data as $row) {
+                $chamiloUsername = $row['UserName'];
+                $chamiloCourseCode = $row['CourseCode'];
+                $systemSessionId= $row['SessionID'];
+
+                $sessionId = SessionManager::get_session_id_from_original_id($systemSessionId, $this->extraFieldIdNameList['session']);
+
+                if (empty($sessionId)) {
+                    $this->logger->addError('Session does not exists: '.$systemSessionId);
+                    continue;
+                }
+
+                $courseInfo = api_get_course_info($chamiloCourseCode);
+                if (empty($courseInfo)) {
+                    $this->logger->addError('Course does not exists: '.$courseInfo);
+                    continue;
+                }
+
+                $userId = Usermanager::get_user_id_from_username($chamiloUsername);
+
+                if (empty($userId)) {
+                    $this->logger->addError('User does not exists: '.$chamiloUsername);
+                    continue;
+                }
+
+                CourseManager::unsubscribe_user($userId, $courseInfo['code'], $sessionId);
+                $this->logger->addError("User '$chamiloUsername' was removed from session: #$sessionId, Course: ".$courseInfo['code']);
+            }
+        }
+    }
+
     private function dumpDatabaseTables()
     {
         echo 'Dumping tables'.PHP_EOL;

+ 1 - 1
main/inc/lib/course.lib.php

@@ -301,7 +301,7 @@ class CourseManager {
         if (!empty($session_id)) {
             // Delete in table session_rel_course_rel_user
             $sql = "DELETE FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
-                    WHERE id_session ='".$session_id."' AND course_code = '".Database::escape_string($_SESSION['_course']['id'])."' AND id_user IN ($user_ids)";
+                    WHERE id_session ='".$session_id."' AND course_code = '".Database::escape_string($course_info['code'])."' AND id_user IN ($user_ids)";
             Database::query($sql);
 
             foreach ($user_id as $uid) {