parent
dfb1ba063c
commit
e8ca90ee5d
@ -0,0 +1,318 @@ |
||||
<?php |
||||
|
||||
if (PHP_SAPI!='cli') { |
||||
die('Run this script through the command line or comment this line in the code'); |
||||
} |
||||
|
||||
require_once '../inc/global.inc.php'; |
||||
require_once api_get_path(LIBRARY_PATH).'log.class.php'; |
||||
|
||||
$path = api_get_path(SYS_CODE_PATH).'cron/incoming/'; |
||||
$files = scandir($path); |
||||
if (!empty($files)) { |
||||
foreach ($files as $file) { |
||||
$fileInfo = pathinfo($file); |
||||
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[0]); |
||||
if (function_exists($method)) { |
||||
$method($path.$fileInfo['basename']); |
||||
} else { |
||||
echo "Error - This file can't be processed."; |
||||
exit; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* @param $file |
||||
*/ |
||||
function moveFile($file) |
||||
{ |
||||
$moved = str_replace('incoming', 'treated', $file); |
||||
// $result = rename($file, $moved); |
||||
$result = 1; |
||||
if ($result) { |
||||
Log::info("Moving file to the treated folder: $file"); |
||||
} else { |
||||
Log::error("Error - Cant move file to the treated folder: $file"); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* File to import |
||||
* @param string $file |
||||
*/ |
||||
function importTeachers($file) |
||||
{ |
||||
$data = Import::csv_to_array($file); |
||||
Log::info("-- Import Teachers --"); |
||||
Log::info("Reading file: $file"); |
||||
|
||||
/* Unique identifier: official-code username. |
||||
Email address and password should never get updated. *ok |
||||
The only fields that I can think of that should update if the data changes in the csv file are FirstName and LastName. *ok |
||||
A slight edit of these fields should be taken into account. ??? |
||||
Adding teachers is no problem, but deleting them shouldn’t be automated, but we should get a log of “to delete teachers”. |
||||
We’ll handle that manually if applicable. |
||||
No delete! |
||||
*/ |
||||
|
||||
if (!empty($data)) { |
||||
foreach ($data as $row) { |
||||
$userInfo = api_get_user_info_from_username($row['username']); |
||||
$userInfoByOfficialCode = api_get_user_info_from_official_code($row['official_code']); |
||||
|
||||
if (empty($userInfo) && empty($userInfoByOfficialCode)) { |
||||
// Create user |
||||
$result = UserManager::create_user( |
||||
$row['firstname'], |
||||
$row['lastname'], |
||||
COURSEMANAGER, |
||||
$row['email'], |
||||
$row['username'], |
||||
$row['password'], |
||||
$row['official_code'], |
||||
$row['language'], |
||||
$row['phone'], |
||||
$row['picture'], //picture |
||||
PLATFORM_AUTH_SOURCE, // ? |
||||
$row['expiration_date'], //$expiration_date = '0000-00-00 00:00:00', |
||||
1, //active |
||||
0, |
||||
null, // extra |
||||
null, //$encrypt_method = '', |
||||
false //$send_mail = false |
||||
); |
||||
|
||||
if ($result) { |
||||
Log::info("Info - Teachers - User created: ".$row['username']); |
||||
} else { |
||||
Log::error("Error - Teachers - User NOT created: ".$row['username']." ".$row['firstname']." ".$row['lastname']); |
||||
} |
||||
} else { |
||||
if (empty($userInfo)) { |
||||
Log::error("Error - Teachers - Can't update user :".$row['username']); |
||||
continue; |
||||
} |
||||
|
||||
// Update user |
||||
$result = UserManager::update_user( |
||||
$userInfo['user_id'], |
||||
$row['firstname'], // <<-- changed |
||||
$row['lastname'], // <<-- changed |
||||
$userInfo['username'], |
||||
null, //$password = null, |
||||
$auth_source = null, |
||||
$userInfo['email'], |
||||
COURSEMANAGER, |
||||
$userInfo['official_code'], |
||||
$userInfo['phone'], |
||||
$userInfo['picture_uri'], |
||||
$userInfo['expiration_date'], |
||||
$userInfo['active'], |
||||
null, //$creator_id = null, |
||||
0, //$hr_dept_id = 0, |
||||
null, // $extra = null, |
||||
null, //$language = 'english', |
||||
null, //$encrypt_method = '', |
||||
false, //$send_email = false, |
||||
0 //$reset_password = 0 |
||||
); |
||||
|
||||
if ($result) { |
||||
Log::info("Teachers - User updated: ".$row['username']); |
||||
} else { |
||||
Log::error("Teachers - User not updated: ".$row['username']); |
||||
} |
||||
} |
||||
|
||||
// UserManager::delete_user(); |
||||
moveFile($file); |
||||
} |
||||
} |
||||
} |
||||
|
||||
function importStudents($file) |
||||
{ |
||||
$data = Import::csv_to_array($file); |
||||
Log::info("-- Import Students --"); |
||||
Log::info("Reading file: $file"); |
||||
|
||||
/* |
||||
* Another users import. |
||||
Unique identifier: official code and username . ok |
||||
Username and password should never get updated. ok |
||||
If an update should need to occur (because it changed in the .csv), we’ll want that logged. We will handle this manually in that case. |
||||
All other fields should be updateable, though passwords should of course not get updated. ok |
||||
If a user gets deleted (not there anymore), |
||||
He should be set inactive one year after the current date. So I presume you’ll just update the expiration date. We want to grant access to courses up to a year after deletion. |
||||
*/ |
||||
|
||||
|
||||
if (!empty($data)) { |
||||
foreach ($data as $row) { |
||||
$userInfo = api_get_user_info_from_username($row['username']); |
||||
$userInfoByOfficialCode = api_get_user_info_from_official_code($row['official_code']); |
||||
|
||||
if (empty($userInfo) && empty($userInfoByOfficialCode)) { |
||||
// Create user |
||||
$result = UserManager::create_user( |
||||
$row['firstname'], |
||||
$row['lastname'], |
||||
STUDENT, |
||||
$row['email'], |
||||
$row['username'], |
||||
$row['password'], |
||||
$row['official_code'], |
||||
$row['language'], |
||||
$row['phone'], |
||||
$row['picture'], //picture |
||||
PLATFORM_AUTH_SOURCE, // ? |
||||
$row['expiration_date'], //$expiration_date = '0000-00-00 00:00:00', |
||||
1, //active |
||||
0, |
||||
null, // extra |
||||
null, //$encrypt_method = '', |
||||
false //$send_mail = false |
||||
); |
||||
|
||||
if ($result) { |
||||
Log::info("Students - User created: ".$row['username']); |
||||
} else { |
||||
Log::error("Students - User NOT created: ".$row['username']." ".$row['firstname']." ".$row['lastname']); |
||||
} |
||||
} else { |
||||
if (empty($userInfo)) { |
||||
Log::error("Students - Can't update user :".$row['username']); |
||||
continue; |
||||
} |
||||
|
||||
if ($row['action'] == 'delete') { |
||||
// INactive one year later |
||||
$userInfo['expiration_date'] = api_get_utc_datetime(api_strtotime(time() + 365*24*60*60)); |
||||
} |
||||
|
||||
// Update user |
||||
$result = UserManager::update_user( |
||||
$userInfo['user_id'], |
||||
$row['firstname'], // <<-- changed |
||||
$row['lastname'], // <<-- changed |
||||
$userInfo['username'], |
||||
null, //$password = null, |
||||
$auth_source = null, |
||||
$userInfo['email'], |
||||
STUDENT, |
||||
$userInfo['official_code'], |
||||
$userInfo['phone'], |
||||
$userInfo['picture_uri'], |
||||
$userInfo['expiration_date'], |
||||
$userInfo['active'], |
||||
null, //$creator_id = null, |
||||
0, //$hr_dept_id = 0, |
||||
null, // $extra = null, |
||||
null, //$language = 'english', |
||||
null, //$encrypt_method = '', |
||||
false, //$send_email = false, |
||||
0 //$reset_password = 0 |
||||
); |
||||
|
||||
if ($result) { |
||||
Log::info("Students - User updated: ".$row['username']); |
||||
} else { |
||||
Log::error("Students - User NOT updated: ".$row['username']." ".$row['firstname']." ".$row['lastname']); |
||||
} |
||||
} |
||||
|
||||
// UserManager::delete_user(); |
||||
moveFile($file); |
||||
} |
||||
} |
||||
|
||||
moveFile($file); |
||||
} |
||||
|
||||
function importCourses($file) |
||||
{ |
||||
$data = Import::csv_to_array($file); |
||||
Log::info("Reading file: $file"); |
||||
|
||||
if (!empty($data)) { |
||||
foreach ($data as $row) { |
||||
$courseInfo = api_get_course_info($row['course_code']); |
||||
if (empty($courseInfo)) { |
||||
// Create |
||||
$params = array(); |
||||
$params['title'] = $row['title']; |
||||
$params['exemplary_content'] = false; |
||||
$params['wanted_code'] = $row['course_code']; |
||||
$params['category_code'] = $row['category_code']; |
||||
$params['course_language'] = $row['language']; |
||||
//$params['gradebook_model_id'] = isset($course_values['gradebook_model_id']) ? $course_values['gradebook_model_id'] : null; |
||||
$courseInfo = CourseManager::create_course($params); |
||||
|
||||
if (!empty($courseInfo)) { |
||||
Log::info("Courses - Course created ".$courseInfo['code']); |
||||
} else { |
||||
Log::error("Courses - Can't create course:".$row['title']); |
||||
} |
||||
|
||||
} else { |
||||
// Update |
||||
$params = array( |
||||
'title' => $row['title'], |
||||
); |
||||
|
||||
$result = CourseManager::update_attributes($courseInfo['id'], $params); |
||||
|
||||
if ($result) { |
||||
Log::info("Courses - Course updated ".$courseInfo['code']); |
||||
} else { |
||||
Log::error("Courses - Course NOT updated ".$courseInfo['code']); |
||||
} |
||||
|
||||
/*course_language='".Database::escape_string($course_language)."', |
||||
title='".Database::escape_string($title)."', |
||||
category_code='".Database::escape_string($category_code)."', |
||||
tutor_name='".Database::escape_string($tutor_name)."', |
||||
visual_code='".Database::escape_string($visual_code)."', |
||||
department_name='".Database::escape_string($department_name)."', |
||||
department_url='".Database::escape_string($department_url)."', |
||||
disk_quota='".Database::escape_string($disk_quota)."', |
||||
visibility = '".Database::escape_string($visibility)."', |
||||
subscribe = '".Database::escape_string($subscribe)."', |
||||
unsubscribe='*/ |
||||
} |
||||
} |
||||
} |
||||
moveFile($file); |
||||
} |
||||
|
||||
function importSessions($file) |
||||
{ |
||||
$result = SessionManager::importCSV($file, true, 1, true); |
||||
|
||||
if (!empty($result['error_message'])) { |
||||
Log::error($result['error_message']); |
||||
} |
||||
|
||||
Log::info("Sessions - Sessions parsed: ".$result['session_counter']); |
||||
|
||||
moveFile($file); |
||||
|
||||
/*$data = Import::csv_to_array($file); |
||||
Log::info("Reading file: $file"); |
||||
if (!empty($data)) { |
||||
foreach ($data as $row) { |
||||
|
||||
if (empty($courseInfo)) { |
||||
|
||||
} |
||||
} |
||||
} |
||||
moveFile($file);*/ |
||||
} |
||||
|
||||
|
Loading…
Reference in new issue