Exemplo n.º 1
0
         $user_data[$field['name']] = mktime($values[$field['name']]['H'], $values[$field['name']]['i'], $values[$field['name']]['s'], $values[$field['name']]['M'], $values[$field['name']]['d'], $values[$field['name']]['Y']);
     } else {
         if ($field['type'] == 'branchinfo') {
             $self_registered_jobs[] = array("branch_ID" => $values[$field['name'] . "_branches"], "job_description" => $_POST[$field['name'] . "_jobs"], "supervisor" => $_POST[$field['name'] . "_supervisors"], "mandatory" => $field['mandatory']);
         } else {
             if ($field['type'] == 'groupinfo') {
                 if ($values[$field['name'] . "_groups"]) {
                     $groupToAdd = new EfrontGroup($values[$field['name'] . "_groups"]);
                 }
             } else {
                 $user_data[$field['name']] = $values[$field['name']];
             }
         }
     }
 }
 $newUser = EfrontUser::createUser($user_data);
 $encrypted = true;
 //needed for autologin
 EfrontEvent::triggerEvent(array("type" => EfrontEvent::SYSTEM_REGISTER, "users_LOGIN" => $user_data['login'], "users_name" => $user_data['name'], "users_surname" => $user_data['surname'], "entity_name" => $user_data['password']));
 // send not-visited notifications for the newly registered user
 //EfrontEvent::triggerEvent(array("type" => (-1) * EfrontEvent::SYSTEM_VISITED, "users_LOGIN" => $user_data['login'], "users_name" => $user_data['name'], "users_surname" => $user_data['surname']));
 if (G_VERSIONTYPE == 'enterprise') {
     #cpp#ifdef ENTERPRISE
     try {
         if (isset($groupToAdd)) {
             $groupToAdd->addUsers($values['login']);
         }
         $new_employees_content['users_login'] = $values['login'];
         EfrontHcdUser::createUser($new_employees_content);
         foreach ($self_registered_jobs as $job_assigned) {
             if ($job_assigned['branch_ID'] != 0 || $job_assigned['mandatory']) {
Exemplo n.º 2
0
 /**
  * Import users
  *
  * This function is used to import users from the given CSV
  * file.
  * <br/>Example:
  * <code>
  * $file = new EfrontFile(/var/www/efront/upload/admin/temp/users.csv);
  * EfrontSystem :: importUsers($file);
  * </code>
  *
  * @param mixed $file The CVS file with the users, either an EfrontFile object or the full path to the file
  * @param boolean $replaceUsers Whether to replace existing users having the same name as the ones imported
  * @return array The imported users in an array of EfrontUser objects
  * @since 3.5.0
  * @access public
  */
 public static function importUsers($file, $replaceUsers = false)
 {
     if (!$file instanceof EfrontFile) {
         $file = new EfrontFile($file);
     }
     $usersTable = eF_getTableData("users", "*", "");
     $tableFields = array_keys($usersTable[0]);
     // Get user types to check if they exist
     $userTypesTable = eF_getTableData("user_types", "*", "");
     // Set the userTypesTable to find in O(1) the existence or not of a user-type according to its name
     foreach ($userTypesTable as $key => $userType) {
         $userTypesTable[$userType['name']] = $userType;
     }
     // If we work on the enterprise version we need to distinguish between users and module_hcd_employees tables fields
     //$userFields = array('login', 'password','email','languages_NAME','name','surname','active','comments','user_type','timestamp','avatar','pending','user_types_ID');
     $userFields = eF_getTableFields('users');
     $existingUsers = eF_getTableDataFlat("users", "login");
     $fileContents = file_get_contents($file['path']);
     $fileContents = explode("\n", trim($fileContents));
     $separator = ";";
     //$fields       = explode($separator, trim($fileContents[0]));
     $fields = str_getcsv(trim($fileContents[0]), $separator);
     if (sizeof($fields) == 1) {
         $separator = ",";
         //$fields    = explode($separator, $fileContents[0]);
         $fields = str_getcsv(trim($fileContents[0]), $separator);
         if (sizeof($fields) == 1) {
             throw new Exception(_UNKNOWNSEPARATOR, EfrontSystemException::ILLEGAL_CSV);
         }
     }
     foreach ($fields as $key => $value) {
         if (empty($value)) {
             $unused = $key;
             unset($fields[$key]);
         }
     }
     $inserted = 0;
     $matched = array_intersect($fields, $tableFields);
     $newUsers = array();
     $messages = array();
     // The check here is removed to offer interoperability between enterprise and educational versions
     // throw new Exception (_PLEASECHECKYOURCSVFILEFORMAT, EfrontSystemException::ILLEGAL_CSV);
     for ($i = 1; $i < sizeof($fileContents); $i++) {
         //$csvUser = explode($separator, $fileContents[$i]);
         $csvUser = str_getcsv($fileContents[$i], $separator);
         unset($csvUser[$unused]);
         if (sizeof($csvUser) != sizeof($fields)) {
             throw new Exception(_PLEASECHECKYOURCSVFILEFORMAT . ': ' . _NUMBEROFFIELDSMUSTBE . ' ' . sizeof($fields) . ' ' . _BUTFOUND . ' ' . sizeof($csvUser), EfrontSystemException::ILLEGAL_CSV);
         }
         $csvUser = array_combine($fields, $csvUser);
         array_walk($csvUser, create_function('&$v, $k', '$v=trim($v);'));
         if (in_array($csvUser['login'], $existingUsers['login']) && $replaceUsers) {
             $existingUser = EfrontUserFactory::factory($csvUser['login']);
             $existingUser->delete();
         }
         if (!in_array($csvUser['login'], $existingUsers['login']) || $replaceUsers) {
             if (!isset($csvUser['password']) || !$csvUser['password']) {
                 $csvUser['password'] = $csvUser['login'];
             }
             // Check the user-type existence by name
             if ($csvUser['user_type_name'] != "" && isset($userTypesTable[$csvUser['user_type_name']])) {
                 // If there is a mismatch between the imported custom type basic type and the current basic type
                 // then set no custom type
                 if ($userTypesTable[$csvUser['user_type_name']]['basic_user_type'] != $csvUser['user_type']) {
                     $csvUser['user_types_ID'] = 0;
                 } else {
                     $csvUser['user_types_ID'] = $userTypesTable[$csvUser['user_type_name']]['id'];
                 }
             } else {
                 $csvUser['user_types_ID'] = 0;
             }
             unset($csvUser['user_type_name']);
             if (!$csvUser['user_type']) {
                 $csvUser['user_type'] = 'student';
             }
             //If user type is not valid, don't insert that user
             if ($csvUser['user_type'] != "administrator" && $csvUser['user_type'] != "professor" && $csvUser['user_type'] != "student") {
                 $messages[] = '&quot;' . $csvUser['login'] . '&quot;: ' . _INVALIDUSERTYPE;
                 unset($csvUser);
                 continue;
             }
             // If we are not in enterprise version then $csvEmployeeProperties is used as a buffer
             // This is done to enable enterprise <-> Enteprise, educational <-> educational, enterprise <-> educational imports/exports
             $csvEmployeeProperties = $csvUser;
             if (G_VERSIONTYPE == 'enterprise') {
                 #cpp#ifdef ENTERPRISE
                 // Copy all fields and remove the user ones -> leaving only employee related fields
                 $csvEmployeeProperties['users_login'] = $csvUser['login'];
             }
             #cpp#endif
             // Delete and recreate $csvUser to keep only the fields in userFields
             unset($csvUser);
             foreach ($userFields as $field) {
                 if (isset($csvEmployeeProperties[$field])) {
                     $csvUser[$field] = $csvEmployeeProperties[$field];
                     if (G_VERSIONTYPE == 'enterprise') {
                         #cpp#ifdef ENTERPRISE
                         unset($csvEmployeeProperties[$field]);
                     }
                     #cpp#endif
                 }
             }
             try {
                 if (G_VERSIONTYPE == 'enterprise') {
                     #cpp#ifdef ENTERPRISE
                     $user = EfrontUser::createUser($csvUser);
                     if (isset($csvEmployeeProperties['branch_name'])) {
                         $result = eF_getTableData("module_hcd_branch", "branch_ID", "name='" . $csvEmployeeProperties['branch_name'] . "'");
                         if ($result[0]['branch_ID']) {
                             $branchId = $result[0]['branch_ID'];
                         }
                         unset($csvEmployeeProperties['branch_name']);
                     }
                     if (isset($csvEmployeeProperties['job_name'])) {
                         $result = eF_getTableData("module_hcd_job_description", "job_description_ID", "description='" . $csvEmployeeProperties['job_name'] . "'");
                         if ($result[0]['job_description_ID']) {
                             $jobId = $result[0]['job_description_ID'];
                         }
                         unset($csvEmployeeProperties['job_name']);
                     }
                     if (isset($csvEmployeeProperties['job_role'])) {
                         $csvEmployeeProperties['job_role'] ? $jobRole = 1 : ($jobRole = 0);
                         unset($csvEmployeeProperties['job_role']);
                     }
                     $user->aspects['hcd'] = EfrontHcdUser::createUser($csvEmployeeProperties);
                     if (isset($branchId) && isset($jobId) && isset($jobRole)) {
                         $user->aspects['hcd']->addJob($user, $jobId, $branchId, $jobRole);
                     }
                     $newUsers[] = $user;
                 } else {
                     #cpp#else
                     $newUsers[] = EfrontUser::createUser($csvUser);
                 }
                 #cpp#endif
             } catch (Exception $e) {
                 $messages[] = '&quot;' . $csvUser['login'] . '&quot;: ' . $e->getMessage() . ' (' . $e->getCode() . ')';
             }
         }
     }
     return array($newUsers, $messages);
 }
Exemplo n.º 3
0
 protected function importData($line, $type, $data)
 {
     //pr($line);exit;
     try {
         switch ($type) {
             case "users":
                 $newUser = EfrontUser::createUser($data);
                 $this->log["success"][] = _LINE . " {$line}: " . _IMPORTEDUSER . " " . $newUser->login;
                 break;
             case "users_to_courses":
                 //Check if a user exists and whether it has the same case
                 $userFound = false;
                 if (!in_array($data['users_login'], $this->allUserLogins)) {
                     //For case-insensitive matches
                     foreach ($this->allUserLogins as $login) {
                         if (mb_strtolower($data['users_login']) == mb_strtolower($login)) {
                             $data['users_login'] = $login;
                             $userFound = true;
                         }
                     }
                 } else {
                     $userFound = true;
                 }
                 if ($userFound) {
                     $courses_name = trim($data['course_name']);
                     $courses_ID = $this->getCourseByName($courses_name);
                     unset($data['course_name']);
                     if ($courses_ID) {
                         foreach ($courses_ID as $course_ID) {
                             $data['courses_ID'] = $course_ID;
                             $course = new EfrontCourse($course_ID);
                             if (is_null($this->course_users[$course_ID])) {
                                 $result = eF_getTableDataFlat("users_to_courses", "users_LOGIN", "courses_ID={$course_ID} AND archive=0");
                                 $this->course_users[$course_ID] = array_combine($result['users_LOGIN'], $result['users_LOGIN']);
                             }
                             if (isset($this->course_users[$course_ID][$data['users_login']])) {
                                 throw new Exception("User is already assigned to the course", self::USER_TO_COURSE_EXISTS);
                             }
                             //$course -> addUsers($data['users_login'], (isset($data['user_type']) && $data['user_type']?$data['user_type']:"student"));
                             $course->addUsers($data['users_login'], isset($data['user_type']) ? $data['user_type'] : "student");
                             $where = "users_login = '******'users_login'] . "' AND courses_ID = " . $data['courses_ID'];
                             $data['completed'] ? $data['completed'] = 1 : ($data['completed'] = 0);
                             EfrontCourse::persistCourseUsers($data, $where, $data['courses_ID'], $data['users_login']);
                             if ($data['active']) {
                                 $course->confirm($data['users_login']);
                             } else {
                                 $course->unconfirm($data['users_login']);
                             }
                             $this->course_users[$course_ID][$data['users_login']] = $data['users_login'];
                             $this->log["success"][] = _LINE . " {$line}: " . _NEWCOURSEASSIGNMENT . " " . $courses_name . " - " . $data['users_login'];
                         }
                     } else {
                         if ($courses_name != "") {
                             $course = EfrontCourse::createCourse(array("name" => $courses_name));
                             $this->log["success"][] = _LINE . " {$line}: " . _NEWCOURSE . " " . $courses_name;
                             $course->addUsers($data['users_login'], isset($data['user_type']) ? $data['user_type'] : "student");
                             $courses_ID = $course->course['id'];
                             $this->courseNamesToIds[$courses_name] = array($courses_ID);
                             $where = "users_login = '******'users_login'] . "' AND courses_ID = " . $courses_ID;
                             EfrontCourse::persistCourseUsers($data, $where, $courses_ID, $data['users_login']);
                             if ($data['active']) {
                                 $course->confirm($data['users_login']);
                             } else {
                                 $course->unconfirm($data['users_login']);
                             }
                             $this->log["success"][] = _LINE . " {$line}: " . _NEWCOURSEASSIGNMENT . " " . $courses_name . " - " . $data['users_login'];
                         } else {
                             $this->log["failure"][] = _LINE . " {$line}: " . _COULDNOTFINDCOURSE . " " . $courses_name;
                         }
                     }
                 } else {
                     $this->log["failure"][] = _LINE . " {$line}: " . _USERDOESNOTEXIST . ": " . $data['users_login'];
                 }
                 break;
             case "users_to_lessons":
                 //Check if a user exists and whether it has the same case
                 $userFound = false;
                 if (!in_array($data['users_login'], $this->allUserLogins)) {
                     //For case-insensitive matches
                     foreach ($this->allUserLogins as $login) {
                         if (mb_strtolower($data['users_login']) == mb_strtolower($login)) {
                             $data['users_login'] = $login;
                             $userFound = true;
                         }
                     }
                 } else {
                     $userFound = true;
                 }
                 if ($userFound) {
                     $lessons_name = trim($data['lesson_name']);
                     $lessons_ID = $this->getLessonByName($lessons_name);
                     unset($data['lesson_name']);
                     if ($lessons_ID) {
                         foreach ($lessons_ID as $lesson_ID) {
                             $data['lessons_ID'] = $lesson_ID;
                             $lesson = new EfrontLesson($lesson_ID);
                             if (is_null($this->lesson_users[$lesson_ID])) {
                                 $result = eF_getTableDataFlat("users_to_lessons", "users_LOGIN", "lessons_ID={$lesson_ID} AND archive=0");
                                 $this->lesson_users[$lesson_ID] = array_combine($result['users_LOGIN'], $result['users_LOGIN']);
                             }
                             if (isset($this->lesson_users[$lesson_ID][$data['users_login']])) {
                                 throw new Exception("User is already assigned to the lesson", self::USER_TO_LESSON_EXISTS);
                             }
                             if (!$lesson->lesson['course_only']) {
                                 $lesson->addUsers($data['users_login'], isset($data['user_type']) ? $data['user_type'] : "student");
                             }
                             $data['completed'] ? $data['completed'] = 1 : ($data['completed'] = 0);
                             eF_updateTableData("users_to_lessons", $data, "users_login = '******'users_login'] . "' AND lessons_ID = " . $data['lessons_ID']);
                             if (!$lesson->lesson['course_only']) {
                                 if ($data['active']) {
                                     $lesson->confirm($data['users_login']);
                                 } else {
                                     $lesson->unconfirm($data['users_login']);
                                 }
                             }
                             $this->log["success"][] = _LINE . " {$line}: " . _NEWLESSONASSIGNMENT . " " . $lessons_name . " - " . $data['users_login'];
                         }
                     } else {
                         if ($lessons_name != "") {
                             $lesson = EfrontLesson::createLesson(array("name" => $lessons_name, 'course_only' => false));
                             $this->log["success"][] = _LINE . " {$line}: " . _NEWLESSON . " " . $lessons_name;
                             $lesson->addUsers($data['users_login'], isset($data['user_type']) ? $data['user_type'] : "student");
                             $lessons_ID = $lesson->lesson['id'];
                             $this->lessonNamesToIds[$lessons_name] = array($lessons_ID);
                             eF_updateTableData("users_to_lessons", $data, "users_login = '******'users_login'] . "' AND lessons_ID = " . $lessons_ID);
                             if ($data['active']) {
                                 $lesson->confirm($data['users_login']);
                             } else {
                                 $lesson->unconfirm($data['users_login']);
                             }
                             $this->log["success"][] = _LINE . " {$line}: " . _NEWLESSONASSIGNMENT . " " . $lessons_name . " - " . $data['users_login'];
                         } else {
                             $this->log["failure"][] = _LINE . " {$line}: " . _COULDNOTFINDLESSON . " " . $lessons_name;
                         }
                     }
                 } else {
                     $this->log["failure"][] = _LINE . " {$line}: " . _USERDOESNOTEXIST . ": " . $data['users_login'];
                 }
                 break;
             case "users_to_groups":
                 //debug();
                 $groups_ID = $this->getGroupByName($data['groups.name']);
                 $group_name = $data['groups.name'];
                 unset($data['groups.name']);
                 foreach ($groups_ID as $group_ID) {
                     $data['groups_ID'] = $group_ID;
                     $group = new EfrontGroup($group_ID);
                     $group->addUsers(array($data['users_login']));
                     $this->log["success"][] = _LINE . " {$line}: " . _NEWGROUPASSIGNMENT . " " . $group_name . " - " . $data['users_login'];
                 }
                 break;
                 //debug(false);
                 #cpp#ifdef ENTERPRISE
             //debug(false);
             #cpp#ifdef ENTERPRISE
             case "employees":
                 $this->cleanUpEmptyValues($data);
                 // a bit customized here, based on the fact that employees are always created together AFTER users (so the object should exist)
                 eF_updateTableData("module_hcd_employees", $data, "users_login='******'users_login'] . "'");
                 break;
             case "branches":
                 // If no father defined - root, else we may need to create the father first
                 $data['father_branch_ID'] = $this->getFatherBranchId($data['father_branch_name']);
                 $father_name = $data['father_branch_name'];
                 $branch_ID = $this->getBranchByName($data['name']);
                 $branch_name = $data['name'];
                 if (sizeof($branch_ID) > 0 && $data['name'] != $data['father_branch_name']) {
                     //TODO
                     unset($data['father_branch_name']);
                     $data['branch_ID'] = $branch_ID[0];
                     throw new EfrontBranchException(_BRANCHALREADYEXISTS, EfrontBranchException::BRANCH_EXISTS);
                 } else {
                     unset($data['father_branch_name']);
                     $data['url'] = EfrontBranch::getBranchUrl($data['name']);
                     $branch = EfrontBranch::createBranch($data);
                     $this->setBranchByName($branch_name, $branch->branch['branch_ID']);
                 }
                 $this->log["success"][] = _LINE . " {$line}: " . _NEWBRANCH . " " . $branch_name;
                 break;
             case "job_descriptions":
                 if ($data['branch_name'] == "") {
                     $data['branch_ID'] = "all";
                     // this denotes to the createJob class to put the job in all branches
                 } else {
                     $data['branch_ID'] = $this->getBranchByName($data['branch_name']);
                     if (sizeof($data['branch_ID']) > 0) {
                         //TODO: maybe different handling when multiple branches are found
                         $data['branch_ID'] = $data['branch_ID'][0];
                     } else {
                         throw new EfrontJobException(_BRANCHDESIGNATEDFORTHISJOBDESCRIPTIONDOESNOTEXIST, EfrontJobException::BRANCH_NOT_EXISTS);
                     }
                 }
                 unset($data['branch_name']);
                 if ($data['description'] != "") {
                     $job_ID = $this->getJobByName($data['description']);
                     if (sizeof($job_ID) > 0) {
                         $data['job_description_ID'] = $job_ID[0];
                         throw new EfrontJobException(_JOBDESCRIPTIONEXISTSALREADY, EfrontJobException::JOB_ALREADY_EXISTS);
                     } else {
                         EfrontJob::createJob($data);
                         $this->log["success"][] = _LINE . " {$line}: " . _NEWJOB . " " . $data['description'];
                     }
                 } else {
                     $this->log["failure"][] = _LINE . " {$line}: " . _NOTITLEPROVIDEDFORNEWJOB;
                 }
                 break;
             case "skills":
                 if ($data['skill_category'] == "") {
                     throw new EfrontSkillException(_MISSINGSKILLCATEGORY, EfrontSkillException::INVALID_SKILL_CATEGORY);
                 } else {
                     $data['categories_ID'] = $this->getSkillCategoryByName($data['skill_category']);
                     if ($data['categories_ID'][0] != "") {
                         $data['categories_ID'] = $data['categories_ID'][0];
                     } else {
                         // create skill category
                         $data['categories_ID'] = eF_insertTableData("module_hcd_skill_categories", array('description' => $data['skill_category']));
                         $this->setSkillCategoryByName($data['skill_category'], $data['categories_ID']);
                     }
                 }
                 unset($data['skill_category']);
                 $skill_ID = $this->getSkillByName($data['description']);
                 if ($skill_ID) {
                     //TODO: another double issue
                     $data['skill_ID'] = $skill_ID[0];
                     throw new EfrontSkillException(_SKILLALREADYEXISTS, EfrontSkillException::SKILL_EXISTS);
                 } else {
                     EfrontSkill::createSkill($data);
                     $this->log["success"][] = _LINE . " {$line}: " . _NEWSKILL . " " . $data['description'];
                 }
                 break;
             case "users_to_jobs":
                 // Get user
                 $user = EfrontUserFactory::factory($data["users_login"]);
                 // Get branch id
                 $branch_ID = $this->getBranchByName($data['branch_name']);
                 $branch_name = $data['branch_name'];
                 if ($branch_ID[0] != "") {
                     if (sizeof($branch_ID) == 1) {
                         $branch_ID = $branch_ID[0];
                     } else {
                         throw new EfrontBranchException(_BRANCHNAMEAMBIGUOUS, EfrontBranchException::BRANCH_AMBIGUOUS);
                     }
                 } else {
                     throw new EfrontBranchException(_BRANCHDOESNOTEXIST, EfrontBranchException::BRANCH_NOT_EXISTS);
                 }
                 // Get job id
                 $job_name = $data['description'];
                 if ($job_name != "") {
                     $new_job_description_ID = eF_getJobDescriptionId($job_name, $branch_ID);
                 } else {
                     throw new EfrontJobException(_MISSING_JOB_DESCRIPTION, EfrontJobException::MISSING_JOB_DESCRIPTION);
                 }
                 // Get hcd employee object
                 if ($data['supervisor']) {
                     $employee = new EfrontSupervisor(array("users_login" => $data["users_login"]));
                     $position = 1;
                 } else {
                     $employee = new EfrontEmployee(array("users_login" => $data["users_login"]));
                     $position = 0;
                 }
                 // Assign job
                 try {
                     $employee->addJob($user, $new_job_description_ID, $branch_ID, $position);
                     $this->log["success"][] = _LINE . " {$line}: " . _NEWJOBASSIGNMENT . " " . $data["users_login"] . " - (" . $branch_name . " - " . $job_name . ") ";
                 } catch (Exception $e) {
                     if ($this->options['replace_existing']) {
                         $employee->removeJob($new_job_description_ID);
                         $employee->addJob($user, $new_job_description_ID, $branch_ID, $position);
                         $this->log["success"][] = _LINE . " {$line}: " . _NEWJOBASSIGNMENT . " " . $data["users_login"] . " - (" . $branch_name . " - " . $job_name . ") ";
                     }
                 }
                 break;
             case "users_to_skills":
                 $skill_ID = $this->getSkillByName($data['description']);
                 $skill_name = $data['description'];
                 if ($skill_ID[0] != "") {
                     if (sizeof($skill_ID) == 1) {
                         $skill_ID = $skill_ID[0];
                     } else {
                         throw new EfrontSkillException(_SKILLNAMEAMBIGUOUS, EfrontSkillException::SKILL_AMBIGUOUS);
                     }
                 } else {
                     throw new EfrontSkillException(_SKILLDOESNOTEXIST, EfrontSkillException::SKILL_NOT_EXISTS);
                 }
                 $skill = new EfrontSkill($skill_ID);
                 $skill->assignToEmployee($data['users_login'], $data['specification']);
                 $this->log["success"][] = _LINE . " {$line}: " . _NEWSKILLASSIGNMENT . " " . $data["users_login"] . " - " . $skill_name;
                 break;
             case "courses_to_branches":
                 $branchId = $this->getBranchByName($data['branch_name']);
                 if (!$branchId[0]) {
                     $fields = array('name' => $data['branch_name'], 'url' => EfrontBranch::getBranchUrl($data['branch_name']));
                     $branch = EfrontBranch::createBranch($fields);
                 } else {
                     $branch = new EfrontBranch($branchId[0]);
                 }
                 $courseId = $this->getCourseByName($data['course_name']);
                 if ($courseId[0]) {
                     $branch->addCoursesToBranch($courseId[0]);
                 }
                 $this->log["success"][] = _LINE . " {$line}: " . _NEWCOURSETOBRANCHASSIGNMENT . " " . $data['course_name'] . " - " . $data['branch_name'];
                 break;
                 #cpp#endif
         }
     } catch (Exception $e) {
         if ($this->options['replace_existing']) {
             if ($this->isAlreadyExistsException($e->getCode(), $type)) {
                 $this->updateExistingData($line, $type, $data);
             } else {
                 $this->log["failure"][] = _LINE . " {$line}: " . $e->getMessage();
                 // ." ". str_replace("\n", "<BR>", $e->getTraceAsString());
             }
         } else {
             $this->log["failure"][] = _LINE . " {$line}: " . $e->getMessage();
             // ." ". str_replace("\n", "<BR>", $e->getTraceAsString());
         }
     }
 }
}
if ($form->isSubmitted() && $form->validate()) {
    try {
        $values = $form->exportValues();
        $roles = EfrontUser::getRoles();
        $userProperties = array('login' => $values['login'], 'name' => $values['name'], 'surname' => $values['surname'], 'active' => $values['active'], 'email' => $values['email'], 'user_type' => $roles[$values['user_type']], 'languages_NAME' => $values['languages_NAME'], 'timezone' => $values['timezone'], 'timestamp' => time(), 'password' => $values['password_'], 'user_types_ID' => is_numeric($values['user_type']) ? $values['user_type'] : 0, 'short_description' => $values['short_description'], 'comments' => $values['comments']);
        foreach ($userProfile as $field) {
            //Get the custom fields values
            if ($field['type'] == "date") {
                $timestampValues = $values[$field['name']];
                $values[$field['name']] = mktime($timestampValues['H'], $timestampValues['i'], 0, $timestampValues['M'], $timestampValues['d'], $timestampValues['Y']);
            }
            $userProperties[$field['name']] = $values[$field['name']];
        }
        if (isset($_GET['add_user'])) {
            $editedUser = EfrontUser::createUser($userProperties);
            //EfrontEvent::triggerEvent(array("type" => (-1) * EfrontEvent::SYSTEM_VISITED, "users_LOGIN" => $userProperties['login'], "users_name" => $userProperties['name'], "users_surname" => $userProperties['surname']));
        } else {
            unset($userProperties['timestamp']);
            //!$editedUser->user['pending'] OR $editedUser->user['pending'] = !$userProperties['active'];		//If the user was pending, then set his status as the opposite of
            if ($editedUser->user['pending']) {
                $editedUser->user['pending'] = !$userProperties['active'];
                EfrontEvent::triggerEvent(array("type" => EfrontEvent::SYSTEM_ON_ADMIN_ACTIVATION, "users_LOGIN" => $editedUser->user['login'], "users_name" => $editedUser->user['name'], "users_surname" => $editedUser->user['surname'], "timestamp" => time(), "entity_name" => time()));
            }
            foreach ($constrainAccess as $value) {
                unset($userProperties[$value]);
            }
            if ($values['ldap_user'] && !$editedUser->isLdapUser) {
                $userProperties['password'] = '******';
            } else {
                if (!$values['password_']) {
Exemplo n.º 5
0
 /**
  * Process the variables sent by the Idp and perform the login with SAML
  * @param $sso array the value defined in domain's Configuration table
  * @param $values array sent by IdP
  */
 protected function _login($attributes)
 {
     if (!empty($attributes[$this->_sso_settings['saml_targeted_id']])) {
         // user comes authenticated in index page
         $login = $attributes[$this->_sso_settings['saml_targeted_id']][0];
         try {
             $user = EfrontUserFactory::factory($login);
         } catch (\Exception $e) {
             $login = null;
         }
         if (is_null($login)) {
             // User doesn't exist. Create user
             if (0 && reachedPlanLimit()) {
                 //@todo
                 // 					TemplateController::setMessage(("You have reached the maximum active users allowed by the selected plan."), 'warning');
             } else {
                 $fields = array('login' => $attributes[$this->_sso_settings['saml_targeted_id']][0], 'password' => sha1($attributes[$this->_sso_settings['saml_targeted_id']][0]), 'name' => $attributes[$this->_sso_settings['saml_first_name']][0], 'surname' => $attributes[$this->_sso_settings['saml_last_name']][0], 'active' => 1, 'email' => $attributes[$this->_sso_settings['saml_email']][0]);
                 $user = EfrontUser::createUser($fields);
                 $user->login($user->user['password'], true);
                 eF_redirect($user->user['user_type'] . '.php');
             }
         } else {
             // User exists
             $fields = array('name' => $attributes[$this->_sso_settings['saml_first_name']][0], 'surname' => $attributes[$this->_sso_settings['saml_last_name']][0], 'email' => $attributes[$this->_sso_settings['saml_email']][0]);
             $user = EfrontUserFactory::factory($login);
             //$user->setFields($fields)->save();	//update whatever changed
             $user->login($user->user['password'], true);
             eF_redirect($user->user['user_type'] . '.php');
         }
     }
     /*
      else{//User is not authenticates, set SAML session to be ready for authentication
     	
     $session = \SimpleSAML_Session::getInstance();
     $sso['domain']=$this->_domain;
     $session->setData("Array", "sso", $this->_sso_settings);
     }
     */
 }
Exemplo n.º 6
0
             echo "</xml>";
             exit;
         }
         $insert[$value['name']] = $_GET[$value['name']];
     }
 }
 $languages = EfrontSystem::getLanguages(true, true);
 if ($_GET['languages'] != "" && in_array($_GET['languages'], array_keys($languages)) === false) {
     echo "<xml>";
     echo "<status>error</status>";
     echo "<message>Invalid language</message>";
     echo "</xml>";
     exit;
 }
 try {
     $user = EfrontUser::createUser($insert);
     echo "<xml>";
     echo "<status>ok</status>";
     echo "</xml>";
 } catch (Exception $e) {
     if ($e->getCode() == EfrontUserException::INVALID_LOGIN) {
         echo "<xml>";
         echo "<status>error</status>";
         echo "<message>Invalid login format</message>";
         echo "</xml>";
         exit;
     } elseif ($e->getCode() == EfrontUserException::MAXIMUM_REACHED) {
         echo "<xml>";
         echo "<status>error</status>";
         echo "<message>Maximum number of users reached</message>";
         echo "</xml>";