diff --git a/main/cron/import_csv.php b/main/cron/import_csv.php index 57fb6dc3fb..86b799ae07 100644 --- a/main/cron/import_csv.php +++ b/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; diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index be8e44db47..8c05d63173 100644 --- a/main/inc/lib/course.lib.php +++ b/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) {