public function process() { global $DB; if ($this->selectedcompany) { $company = new company($this->selectedcompany); $companyshortname = $company->get_shortname(); $companydefaultdepartment = company::get_company_parentnode($company->id); // Process incoming assignments. if (optional_param('add', false, PARAM_BOOL) && confirm_sesskey()) { $userstoassign = $this->potentialusers->get_selected_users(); if (!empty($userstoassign)) { foreach ($userstoassign as $adduser) { $allow = true; if ($allow) { $user = $DB->get_record('user', array('id' => $adduser->id)); // Add user to default company department. $company->assign_user_to_company($adduser->id); } } $this->potentialusers->invalidate_selected_users(); $this->currentusers->invalidate_selected_users(); } } // Process incoming unassignments. if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) { $userstounassign = $this->currentusers->get_selected_users(); if (!empty($userstounassign)) { foreach ($userstounassign as $removeuser) { // Check if the user was a company manager. if ($DB->get_records('company_users', array('userid' => $removeuser->id, 'managertype' => 1))) { $companymanagerrole = $DB->get_record('role', array('shortname' => 'companymanager')); role_unassign($companymanagerrole->id, $removeuser->id, $this->context->id); } if ($DB->get_records('company_users', array('userid' => $removeuser->id, 'managertype' => 2))) { $departmentmanagerrole = $DB->get_record('role', array('shortname' => 'departmentmanager')); role_unassign($departmentmanagerrole->id, $removeuser->id, $this->context->id); } $DB->delete_records('company_users', array('userid' => $removeuser->id)); // Deal with the company theme. $DB->set_field('user', 'theme', '', array('id' => $removeuser->id)); } $this->potentialusers->invalidate_selected_users(); $this->currentusers->invalidate_selected_users(); } } } }
public function process($departmentid, $roletype) { global $DB, $USER; $companymanagerrole = $DB->get_record('role', array('shortname' => 'companymanager')); $departmentmanagerrole = $DB->get_record('role', array('shortname' => 'companydepartmentmanager')); $companycoursenoneditorrole = $DB->get_record('role', array('shortname' => 'companycoursenoneditor')); $companycourseeditorrole = $DB->get_record('role', array('shortname' => 'companycourseeditor')); // Process incoming assignments. if (optional_param('add', false, PARAM_BOOL) && confirm_sesskey()) { $userstoassign = $this->potentialusers->get_selected_users(); if (!empty($userstoassign)) { foreach ($userstoassign as $adduser) { $allow = true; // GWL : Check the userid is valid. if (!company::check_valid_user($this->selectedcompany, $adduser->id, $this->departmentid)) { print_error('invaliduserdepartment', 'block_iomad_company_management'); } if ($allow) { if ($roletype != 0) { // Adding a manager type. // Add user to the company manager table. if ($userrecord = $DB->get_record('company_users', array('companyid' => $this->selectedcompany, 'userid' => $adduser->id))) { if ($roletype == 1 && $userrecord->managertype == 0) { // Give them the company manager role. role_assign($companymanagerrole->id, $adduser->id, $this->context->id); // Deal with company courses. if ($companycourses = $DB->get_records('company_course', array('companyid' => $this->selectedcompany))) { foreach ($companycourses as $companycourse) { if ($DB->record_exists('course', array('id' => $companycourse->courseid))) { if ($DB->record_exists('company_created_courses', array('companyid' => $companycourse->companyid, 'courseid' => $companycourse->courseid))) { company_user::enrol($adduser, array($companycourse->courseid), $companycourse->companyid, $companycourseeditorrole->id); } else { company_user::enrol($adduser, array($companycourse->courseid), $companycourse->companyid, $companycoursenoneditorrole->id); } } } } } else { if ($roletype == 2 && $userrecord->managertype == 0) { // Give them the department manager role. role_assign($departmentmanagerrole->id, $adduser->id, $this->context->id); // Deal with company courses. if ($companycourses = $DB->get_records('company_course', array('companyid' => $this->selectedcompany))) { foreach ($companycourses as $companycourse) { if ($DB->record_exists('course', array('id' => $companycourse->courseid))) { company_user::enrol($adduser, array($companycourse->courseid), $companycourse->companyid, $companycoursenoneditorrole->id); } } } } else { if ($roletype == 1 && ($userrecord->managertype = 2)) { // Give them the department manager role. role_unassign($departmentmanagerrole->id, $adduser->id, $this->context->id); role_assign($companymanagerrole->id, $adduser->id, $this->context->id); // Deal with course permissions. if ($companycourses = $DB->get_records('company_course', array('companyid' => $this->selectedcompany))) { foreach ($companycourses as $companycourse) { if ($DB->record_exists('course', array('id' => $companycourse->courseid))) { // If its a company created course then assign the editor role to the user. if ($DB->record_exists('company_created_courses', array('companyid' => $this->selectedcompany, 'courseid' => $companycourse->courseid))) { company_user::unenrol($adduser, array($companycourse->courseid), $companycourse->companyid); company_user::enrol($adduser, array($companycourse->courseid), $companycourse->companyid, $companycourseeditorrole->id); } else { company_user::enrol($adduser, array($companycourse->courseid), $companycourse->companyid, $companycoursenoneditorrole->id); } } } } } else { if ($roletype == 2 && ($userrecord->managertype = 1)) { // Give them the department manager role. role_unassign($companymanagerrole->id, $adduser->id, $this->context->id); role_assign($departmentmanagerrole->id, $adduser->id, $this->context->id); // Deal with company course roles. if ($companycourses = $DB->get_records('company_course', array('companyid' => $this->selectedcompany))) { foreach ($companycourses as $companycourse) { if ($DB->record_exists('course', array('id' => $companycourse->courseid))) { company_user::unenrol($adduser, array($companycourse->courseid), $companycourse->companyid); company_user::enrol($adduser, array($companycourse->courseid), $companycourse->companyid, $companycoursenoneditorrole->id); } } } } } } } $userrecord->managertype = $roletype; $DB->update_record('company_users', $userrecord); } else { if ($roletype == 1 && $DB->get_records_sql('SELECT id FROM {company_users} WHERE userid = :userid AND managertype = :roletype AND companyid != :companyid', array('userid' => $adduser->id, 'roletype' => 1, 'companyid' => $this->selectedcompany))) { // We have a company manager from another company. // We need to add another record. $company = new company($this->selectedcompany); $company->assign_user_to_company($adduser->id); $DB->set_field('company_users', 'managertype', 1, array('userid' => $adduser->id, 'companyid' => $this->selectedcompany)); // Deal with company courses. if ($companycourses = $DB->get_records('company_course', array('companyid' => $this->selectedcompany))) { foreach ($companycourses as $companycourse) { if ($DB->record_exists('course', array('id' => $companycourse->courseid))) { if ($DB->record_exists('company_created_courses', array('companyid' => $companycourse->companyid, 'courseid' => $companycourse->courseid))) { company_user::enrol($adduser, array($companycourse->courseid), $companycourse->companyid, $companycourseeditorrole->id); } else { company_user::enrol($adduser, array($companycourse->courseid), $companycourse->companyid, $companycoursenoneditorrole->id); } } } } } else { // Assign the user to department as staff. company::assign_user_to_department($departmentid, $adduser->id); } } } else { // Assign the user to department as staff. company::assign_user_to_department($departmentid, $adduser->id); } } } $this->potentialusers->invalidate_selected_users(); $this->currentusers->invalidate_selected_users(); } } // Process incoming unassignments. if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) { $userstounassign = $this->currentusers->get_selected_users(); if (!empty($userstounassign)) { // Check if we are mearly removing the manager role. if ($roletype != 0) { foreach ($userstounassign as $removeuser) { // GWL : Check the userid is valid. if (!company::check_valid_user($this->selectedcompany, $adduser->id, $this->departmentid)) { print_error('invaliduserdepartment', 'block_iomad_company_management'); } $userrecord = $DB->get_record('company_users', array('companyid' => $this->selectedcompany, 'userid' => $removeuser->id)); // Is this a manager from another company? if ($DB->get_records_sql("SELECT id FROM {company_users}\n WHERE userid = :userid\n AND companyid != :companyid\n AND managertype = 1", array('userid' => $removeuser->id, 'companyid' => $this->selectedcompany))) { // Remove the user from this company. $DB->delete_records('company_users', (array) $userrecord); } else { // Remove the manager status from the user. $userrecord->managertype = 0; $DB->update_record('company_users', $userrecord); role_unassign($companymanagerrole->id, $removeuser->id, $this->context->id); role_unassign($departmentmanagerrole->id, $removeuser->id, $this->context->id); } // Remove their capabilities from the company courses. if ($companycourses = $DB->get_records('company_course', array('companyid' => $this->selectedcompany))) { foreach ($companycourses as $companycourse) { if ($DB->record_exists('course', array('id' => $companycourse->courseid))) { company_user::unenrol($removeuser, array($companycourse->courseid), $companycourse->companyid); } } } } } else { foreach ($userstounassign as $removeuser) { // GWL : Check the userid is valid. if (!company::check_valid_user($this->selectedcompany, $removeuser->id, $this->departmentid)) { print_error('invaliduserdepartment', 'block_iomad_company_management'); } // Assign the user to parent department as staff. company::assign_user_to_department($this->companydepartment, $removeuser->id); } } $this->potentialusers->invalidate_selected_users(); $this->currentusers->invalidate_selected_users(); } } }
if ($createpasswords && $isinternalauth) { if (empty($user->password) || $forcechangepassword) { // Passwords will be created and sent out on cron. set_user_preference('create_password', 1, $user->id); set_user_preference('auth_forcepasswordchange', 1, $user->id); $upt->track('password', get_string('new')); } else { set_user_preference('auth_forcepasswordchange', 1, $user->id); } } // Save custom profile fields data. profile_save_data($user); // Make sure user context exists. context_user::instance($user->id); // Add the user to the company $company->assign_user_to_company($user->id); // Add the user to the company default hierarchy level. company::assign_user_to_department($formdata->userdepartment, $user->id); \core\event\user_created::create_from_userid($user->id)->trigger(); if ($bulk == 1 or $bulk == 3) { if (!in_array($user->id, $SESSION->bulk_users)) { $SESSION->bulk_users[] = $user->id; } } } // Find course enrolments, groups, roles/types and enrol periods. foreach ($columns as $column) { if (preg_match('/^course\\d+$/', $column)) { $i = substr($column, 6); if (empty($user->{'course' . $i})) { continue;