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