/**
 * Saves imported data.
 */
function save_data($users_classes)
{
    global $purification_option_for_usernames;
    // Table definitions.
    $user_table = Database::get_main_table(TABLE_MAIN_USER);
    $class_user_table = Database::get_main_table(TABLE_MAIN_CLASS_USER);
    $class_table = Database::get_main_table(TABLE_MAIN_CLASS);
    // Data parsing: purification + conversion (UserName, ClassName) --> (user_is, class_id)
    $csv_data = array();
    foreach ($users_classes as $index => $user_class) {
        $sql1 = "SELECT user_id FROM {$user_table} WHERE username = '******'UserName'], $purification_option_for_usernames)) . "'";
        $res1 = Database::query($sql1);
        $obj1 = Database::fetch_object($res1);
        $sql2 = "SELECT id FROM {$class_table} WHERE name = '" . Database::escape_string(trim($user_class['ClassName'])) . "'";
        $res2 = Database::query($sql2);
        $obj2 = Database::fetch_object($res2);
        if ($obj1 && $obj2) {
            $csv_data[$obj1->user_id][$obj2->id] = 1;
        }
    }
    // Logic for processing the request (data + UI options).
    $db_subscriptions = array();
    foreach ($csv_data as $user_id => $csv_subscriptions) {
        $sql = "SELECT class_id FROM {$class_user_table} cu WHERE cu.user_id = {$user_id}";
        $res = Database::query($sql);
        while ($obj = Database::fetch_object($res)) {
            $db_subscriptions[$obj->class_id] = 1;
        }
        $to_subscribe = array_diff(array_keys($csv_subscriptions), array_keys($db_subscriptions));
        $to_unsubscribe = array_diff(array_keys($db_subscriptions), array_keys($csv_subscriptions));
        // Subscriptions for new classes.
        if ($_POST['subscribe']) {
            foreach ($to_subscribe as $class_id) {
                ClassManager::add_user($user_id, $class_id);
            }
        }
        // Unsubscription from previous classes.
        if ($_POST['unsubscribe']) {
            foreach ($to_unsubscribe as $class_id) {
                ClassManager::unsubscribe_user($user_id, $class_id);
            }
        }
    }
}
Beispiel #2
0
/**
 * Add missing user-information (which isn't required, like password, username etc).
 */
function complete_missing_data($user)
{
    global $purification_option_for_usernames;
    // 1. Create a username if necessary.
    if (UserManager::is_username_empty($user['UserName'])) {
        $user['UserName'] = UserManager::create_unique_username($user['FirstName'], $user['LastName']);
    } else {
        $user['UserName'] = UserManager::purify_username($user['UserName'], $purification_option_for_usernames);
    }
    // 2. Generate a password if necessary.
    if (empty($user['Password'])) {
        $user['Password'] = api_generate_password();
    }
    // 3. Set status if not allready set.
    if (empty($user['Status'])) {
        $user['Status'] = 'user';
    }
    // 4. Set authsource if not allready set.
    if (empty($user['AuthSource'])) {
        $user['AuthSource'] = PLATFORM_AUTH_SOURCE;
    }
    return $user;
}
/**
 * Saves imported data.
 */
function save_data($users_classes, $deleteUsersNotInList = false)
{
    global $purification_option_for_usernames;
    // Table definitions.
    $user_table = Database::get_main_table(TABLE_MAIN_USER);
    $usergroup = new UserGroup();
    // Data parsing: purification + conversion (UserName, ClassName) --> (user_is, class_id)
    $csv_data = array();
    if (!empty($users_classes)) {
        foreach ($users_classes as $user_class) {
            $sql1 = "SELECT user_id FROM {$user_table}\n                     WHERE username = '******'UserName'], $purification_option_for_usernames)) . "'";
            $res1 = Database::query($sql1);
            $obj1 = Database::fetch_object($res1);
            $usergroup = new UserGroup();
            $id = $usergroup->get_id_by_name($user_class['ClassName']);
            if ($obj1 && $id) {
                $csv_data[$id]['user_list'][] = $obj1->user_id;
                $csv_data[$id]['user_list_name'][] = $user_class['UserName'];
                $csv_data[$id]['class_name'] = $user_class['ClassName'];
            }
        }
    }
    // Logic for processing the request (data + UI options).
    $message = null;
    if (!empty($csv_data)) {
        foreach ($csv_data as $class_id => $user_data) {
            $user_list = $user_data['user_list'];
            $class_name = $user_data['class_name'];
            $user_list_name = $user_data['user_list_name'];
            $usergroup->subscribe_users_to_usergroup($class_id, $user_list, $deleteUsersNotInList);
            $message .= Display::return_message(get_lang('Class') . ': ' . $class_name . '<br />', 'normal', false);
            $message .= Display::return_message(get_lang('Users') . ': ' . implode(', ', $user_list_name));
        }
    }
    return $message;
}
 // adding coachs to session course user
 foreach ($course_coaches as $course_coach) {
     $coach_id = UserManager::purify_username(api_utf8_decode($course_coach), $purification_option_for_usernames);
     $coach_id = UserManager::get_user_id_from_username($course_coach);
     if ($coach_id !== false) {
         $sql = "INSERT IGNORE INTO {$tbl_session_course_user} SET\n                                                        id_user='******',\n                                                        course_code='{$vcourse['code']}',\n                                                        id_session = '{$session_id}',\n                                                        status = 2 ";
         $rs_coachs = Database::query($sql);
     } else {
         $error_message .= get_lang('UserDoesNotExist') . ' : ' . $user . '<br />';
     }
 }
 // adding users
 $course_counter++;
 $users_in_course_counter = 0;
 foreach ($node_course->User as $node_user) {
     $username = UserManager::purify_username(api_utf8_decode($node_user), $purification_option_for_usernames);
     $user_id = UserManager::get_user_id_from_username($username);
     if ($user_id !== false) {
         // Adding to session_rel_user table.
         $sql = "INSERT IGNORE INTO {$tbl_session_user} SET\n                                                        id_user='******',\n                                                        id_session = '{$session_id}'";
         $rs_user = Database::query($sql);
         $user_counter++;
         // Adding to session_rel_user_rel_course table.
         $sql = "INSERT IGNORE INTO {$tbl_session_course_user} SET\n                                                        id_user='******',\n                                                        course_code='{$vcourse['code']}',\n                                                        id_session = '{$session_id}'";
         $rs_users = Database::query($sql);
         $users_in_course_counter++;
     } else {
         $error_message .= get_lang('UserDoesNotExist') . ' : ' . $username . '<br />';
     }
 }
 $update_session_course = "UPDATE {$tbl_session_course} SET nbr_users='{$users_in_course_counter}' WHERE course_code='{$course_code}'";
Beispiel #5
0
 /**
  * XML-parser: the handler at the end of element.
  */
 function element_end($parser, $data)
 {
     $data = api_utf8_decode($data);
     global $user;
     global $users;
     global $current_value;
     global $purification_option_for_usernames;
     $user[$data] = $current_value;
     switch ($data) {
         case 'Contact':
             $user['UserName'] = UserManager::purify_username($user['UserName'], $purification_option_for_usernames);
             $users[] = $user;
             break;
         default:
             $user[$data] = $current_value;
             break;
     }
 }
 /**
  * Manage the user creation, including checking if the user hasn't been
  * created previously
  * @param array User data
  * @param object List of migrated things
  * @return array User info (from Chamilo DB)
  */
 static function create_user($data, &$omigrate = null)
 {
     //error_log('In create_user, receiving '.print_r($data,1));
     if (empty($data['uidIdPersona'])) {
         error_log('User does not have a uidIdPersona');
         error_log(print_r($data, 1));
         return false;
         //exit;
     }
     $data['uidIdPersona'] = strtoupper($data['uidIdPersona']);
     $data['status'] = STUDENT;
     if (isset($data['uidIdEmpleado'])) {
         $data['status'] = COURSEMANAGER;
     }
     if (!isset($data['username']) || empty($data['username'])) {
         $data['firstname'] = (string) trim($data['firstname']);
         $data['lastname'] = (string) trim($data['lastname']);
         if (empty($data['firstname']) && empty($data['lastname'])) {
             $wanted_user_name = UserManager::purify_username($data['uidIdPersona']);
             //$wanted_user_name = UserManager::create_unique_username(null, null);
         } else {
             $wanted_user_name = UserManager::create_username($data['firstname'], $data['lastname']);
         }
         $extra_data = UserManager::get_extra_user_data_by_value('uidIdPersona', $data['uidIdPersona']);
         if ($extra_data) {
             $user_info = api_get_user_info($extra_data[0]);
             //print_r($extra_data);
             //error_log("User_already_added - {$user_info['user_id']}  - {$user_info['username']} - {$user_info['firstname']} - {$user_info['lastname']}");
             return $user_info;
         }
         if (UserManager::is_username_available($wanted_user_name)) {
             $data['username'] = $wanted_user_name;
             error_log("username available  {$wanted_user_name}");
         } else {
             //the user already exists?
             $user_info = UserManager::get_user_info_simple($wanted_user_name);
             $user_persona = UserManager::get_extra_user_data_by_field($user_info['user_id'], 'uidIdPersona');
             if (isset($user_persona['uidIdPersona']) && $data['uidIdPersona'] == $user_persona['uidIdPersona']) {
                 error_log("Skip user already added: {$user_info['username']}");
                 return $user_info;
             } else {
                 error_log("Homonym - wanted_username: {$wanted_user_name} - uidIdPersona: {$user_persona['uidIdPersona']} - username: {$user_info['username']}");
                 //print_r($data);
                 //The user has the same firstname and lastname but it has another uiIdPersona could by an homonym
                 $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']);
                 error_log("homonym username created " . $data['username']);
             }
         }
         if (empty($data['username'])) {
             //Last chance to have a nice username
             if (empty($data['firstname']) && empty($data['lastname'])) {
                 $data['username'] = UserManager::create_unique_username(uniqid());
                 error_log("username empty 1" . $data['username']);
             } else {
                 $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']);
                 error_log("username empty 2" . $data['username']);
             }
         }
     } else {
         if (UserManager::is_username_available($data['username'])) {
             //error_log("username available {$data['username']} ");
         } else {
             //the user already exists?
             $user_info = UserManager::get_user_info_simple($data['username']);
             $user_persona = UserManager::get_extra_user_data_by_field($user_info['user_id'], 'uidIdPersona');
             if (isset($user_persona['uidIdPersona']) && (string) $data['uidIdPersona'] == (string) $user_persona['uidIdPersona']) {
                 //error_log("2 Skip user already added: {$user_info['username']}");
                 return $user_info;
             } else {
                 //print_r($user_persona);
                 //error_log("2 homonym - wanted_username: {$data['username']} - uidIdPersona: {$user_persona['uidIdPersona']} - username: {$user_info['username']}");
                 //print_r($data);
                 //The user has the same firstname and lastname but it has another uiIdPersona could by an homonym
                 $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']);
                 //error_log("2 homonym username created ". $data['username']);
             }
         }
     }
     if (empty($data['username'])) {
         error_log('No Username provided');
         error_log(print_r($data, 1));
         return false;
         //exit;
     }
     $id_persona = $data['uidIdPersona'];
     unset($data['uidIdPersona']);
     unset($data['uidIdAlumno']);
     unset($data['uidIdEmpleado']);
     $data['encrypt_method'] = 'sha1';
     global $api_failureList;
     $api_failureList = array();
     //error_log(print_r($data, 1));
     $user_info = UserManager::add($data);
     if (!$user_info) {
         error_log('User ' . $id_persona . ' could not be inserted (maybe duplicate?)');
     } else {
         //error_log('User '.$id_persona.' was created as user '.$user_info['user_id']);
     }
     if (is_array($omigrate) && isset($omigrate) && $omigrate['boost_users']) {
         $omigrate['users'][$id_persona] = $user_info['user_id'];
     }
     UserManager::update_extra_field_value($user_info['user_id'], 'uidIdPersona', $id_persona);
     return $user_info;
 }