/** * Form tweaks that depend on current data. */ public function definition_after_data() { global $USER, $SESSION; $mform =& $this->_form; $columns =& $this->_customdata; foreach ($columns as $column) { if ($mform->elementExists($column)) { $mform->removeElement($column); } } // Set the companyid to bypass the company select form if possible. if (!empty($SESSION->currenteditingcompany)) { $companyid = $SESSION->currenteditingcompany; } else { $companyid = company_user::companyid(); } // Get the department list. $parentlevel = company::get_company_parentnode($companyid); if (iomad::has_capability('block/iomad_company_admin:edit_all_departments', context_system::instance())) { $userhierarchylevel = $parentlevel->id; } else { $userlevel = company::get_userlevel($USER); $userhierarchylevel = $userlevel->id; } $this->departmentid = $userhierarchylevel; $subhierarchieslist = company::get_all_subdepartments($userhierarchylevel); // Department drop down. $mform->insertElementBefore($mform->createElement('select', 'userdepartment', get_string('department', 'block_iomad_company_admin'), $subhierarchieslist, $userhierarchylevel), 'uutypelabel'); $this->courseselector = $this->add_course_selector(); $this->add_action_buttons(true, get_string('uploadusers', 'tool_uploaduser')); }
public function __construct($actionurl, $context, $companyid, $deptid, $roleid, $showothermanagers) { global $USER; $this->selectedcompany = $companyid; $this->context = $context; $this->departmentid = $deptid; $this->roletype = $roleid; /* GWL : */ if (!iomad::has_capability('block/iomad_company_admin:company_add', context_system::instance())) { $this->showothermanagers = false; } else { $this->showothermanagers = $showothermanagers; } $company = new company($this->selectedcompany); $parentlevel = company::get_company_parentnode($company->id); $this->companydepartment = $parentlevel->id; if (iomad::has_capability('block/iomad_company_admin:edit_all_departments', context_system::instance())) { $userhierarchylevel = $parentlevel->id; } else { $userlevel = company::get_userlevel($USER); $userhierarchylevel = $userlevel->id; } $this->subhierarchieslist = company::get_all_subdepartments($userhierarchylevel); if ($this->departmentid == 0) { $departmentid = $userhierarchylevel; } else { $departmentid = $this->departmentid; } $options = array('context' => $this->context, 'companyid' => $this->selectedcompany, 'departmentid' => $departmentid, 'roletype' => $this->roletype, 'subdepartments' => $this->subhierarchieslist, 'parentdepartmentid' => $parentlevel, 'showothermanagers' => $this->showothermanagers); $this->potentialusers = new potential_department_user_selector('potentialmanagers', $options); $this->currentusers = new current_department_user_selector('currentmanagers', $options); parent::__construct($actionurl); }
public function __construct($actionurl, $companyid, $departmentid) { global $CFG, $USER; $this->selectedcompany = $companyid; $this->departmentid = $departmentid; $company = new company($this->selectedcompany); $parentlevel = company::get_company_parentnode($company->id); $this->companydepartment = $parentlevel->id; if (iomad::has_capability('block/iomad_company_admin:edit_all_departments', context_system::instance())) { $userhierarchylevel = $parentlevel->id; } else { $userlevel = company::get_userlevel($USER); $userhierarchylevel = $userlevel->id; } $this->subhierarchieslist = company::get_all_subdepartments($userhierarchylevel); if ($this->departmentid == 0) { $departmentid = $userhierarchylevel; } else { $departmentid = $this->departmentid; } $this->userdepartment = $userhierarchylevel; $options = array('context' => $this->context, 'multiselect' => true, 'companyid' => $this->selectedcompany, 'departmentid' => $departmentid, 'subdepartments' => $this->subhierarchieslist, 'parentdepartmentid' => $parentlevel, 'showopenshared' => true, 'license' => false); $this->currentcourses = new potential_subdepartment_course_selector('currentcourses', $options); $this->currentcourses->set_rows(20); $this->context = context_coursecat::instance($CFG->defaultrequestcategory); parent::moodleform($actionurl); }
public function __construct($actionurl, $context, $companyid, $departmentid) { global $USER; $this->selectedcompany = $companyid; $this->context = $context; $this->departmentid = $departmentid; $company = new company($this->selectedcompany); $parentlevel = company::get_company_parentnode($company->id); $this->companydepartment = $parentlevel->id; $syscontext = context_system::instance(); if (iomad::has_capability('block/iomad_company_admin:edit_all_departments', $syscontext)) { $userhierarchylevel = $parentlevel->id; } else { $userlevel = company::get_userlevel($USER); $userhierarchylevel = $userlevel->id; } $this->subhierarchieslist = company::get_all_subdepartments($userhierarchylevel); if ($this->departmentid == 0) { $departmentid = $userhierarchylevel; } else { $departmentid = $this->departmentid; } $options = array('context' => $this->context, 'companyid' => $this->selectedcompany, 'departmentid' => $departmentid, 'subdepartments' => $this->subhierarchieslist, 'parentdepartmentid' => $parentlevel, 'shared' => false, 'partialshared' => true); $this->potentialcourses = new potential_company_course_selector('potentialcourses', $options); $this->currentcourses = new current_company_course_selector('currentcourses', $options); parent::__construct($actionurl); }
public function __construct($actionurl, $context, $companyid, $departmentid, $userid, $licenseid) { global $USER, $DB; $this->selectedcompany = $companyid; $this->context = $context; $company = new company($this->selectedcompany); $this->parentlevel = company::get_company_parentnode($company->id); $this->companydepartment = $this->parentlevel->id; $this->licenseid = $licenseid; if (iomad::has_capability('block/iomad_company_admin:edit_all_departments', context_system::instance())) { $userhierarchylevel = $this->parentlevel->id; } else { $userlevel = company::get_userlevel($USER); $userhierarchylevel = $userlevel->id; } $this->subhierarchieslist = company::get_all_subdepartments($userhierarchylevel); if ($departmentid == 0) { $this->departmentid = $userhierarchylevel; } else { $this->departmentid = $departmentid; } $this->userid = $userid; $this->user = $DB->get_record('user', array('id' => $this->userid)); parent::__construct($actionurl); }
public function __construct($actionurl, $context, $companyid, $templateid, $templaterecord) { $this->templateid = $templateid; $this->context = $context; $this->templaterecord = $templaterecord; $this->companyid = $companyid; $department = company::get_company_parentnode($this->companyid); $subhierarchieslist = company::get_all_subdepartments($department->id); $options = array('context' => $this->context, 'multiselect' => false, 'companyid' => $this->companyid, 'departmentid' => $department->id, 'subdepartments' => $subhierarchieslist, 'parentdepartmentid' => $department); $this->currentcourses = new current_company_course_selector('currentcourses', $options); $this->currentcourses->set_rows(1); parent::__construct($actionurl); }
} // Get the associated department id. $company = new company($companyid); $parentlevel = company::get_company_parentnode($company->id); $companydepartment = $parentlevel->id; if (iomad::has_capability('block/iomad_company_admin:edit_all_departments', context_system::instance())) { $userhierarchylevel = $parentlevel->id; } else { $userlevel = company::get_userlevel($USER); $userhierarchylevel = $userlevel->id; } if ($departmentid == 0) { $departmentid = $userhierarchylevel; } // Get the appropriate list of departments. $subhierarchieslist = company::get_all_subdepartments($userhierarchylevel); $select = new single_select($baseurl, 'departmentid', $subhierarchieslist, $departmentid); //GWL $select->label = get_string('department', 'block_iomad_company_admin'); $select->label = get_string('regionlocation', 'block_iomad_company_admin'); $select->formid = 'choosedepartment'; echo html_writer::tag('div', $OUTPUT->render($select), array('id' => 'iomad_department_selector')); $fwselectoutput = html_writer::tag('div', $OUTPUT->render($select), array('id' => 'iomad_company_selector')); if (!(iomad::has_capability('block/iomad_company_admin:editusers', $systemcontext) or iomad::has_capability('block/iomad_company_admin:editallusers', $systemcontext))) { print_error('nopermissions', 'error', '', 'edit/delete users'); } // Set up the filter form. $mform = new iomad_user_filter_form(null, array('companyid' => $companyid)); $mform->set_data(array('departmentid' => $departmentid)); $mform->set_data($params); // Display the user filter form. $mform->display();
public function find_courses($search) { global $DB, $SITE; // By default wherecondition retrieves all courses except the deleted, not confirmed and guest. list($wherecondition, $params) = $this->search_sql($search, 'c'); $params['companyid'] = $this->companyid; $params['siteid'] = $SITE->id; $fields = 'SELECT ' . $this->required_fields_sql('c'); $countfields = 'SELECT COUNT(1)'; $distinctfields = 'SELECT DISTINCT ' . $this->required_fields_sql('c'); $distinctcountfields = 'SELECT COUNT(DISTINCT c.id) '; // Get appropriate department ids. $departmentids = array_keys(company::get_all_subdepartments($this->departmentid)); // Check the top department. $parentnode = company::get_company_parentnode($this->companyid); if (!empty($departmentids)) { if ($parentnode->id == $this->departmentid) { $departmentselect = "AND cc.departmentid in (" . implode(',', $departmentids) . ") "; } else { $departmentselect = "AND cc.departmentid in (" . $parentnode->id . ',' . implode(',', $departmentids) . ") "; } } else { $departmentselect = "AND cc.departmentid = " . $parentnode->id; } if (!$this->license) { if (!($licensecourses = $DB->get_records('iomad_courses', array('licensed' => 1), null, 'courseid'))) { $licensesql = ""; } else { $licensesql = " AND c.id not in (" . implode(',', array_keys($licensecourses)) . ")"; } } else { $licensesql = ""; } $sqldistinct = " FROM {course} c,\n {company_course} cc\n WHERE {$wherecondition}\n AND cc.courseid = c.id\n AND c.id != :siteid\n {$licensesql}\n {$departmentselect}"; $sql = " FROM {course} c\n WHERE {$wherecondition}\n AND c.id != :siteid\n AND NOT EXISTS (SELECT NULL FROM {company_course} WHERE courseid = c.id)"; if (!empty($this->showopenshared)) { $sqlopenshared = " FROM {course} c,\n {iomad_courses} ic\n WHERE {$wherecondition}\n AND ic.courseid = c.id\n AND c.id != :siteid\n AND ic.shared = 1\n {$licensesql}"; } $order = ' ORDER BY c.fullname ASC'; if (!$this->is_validating()) { $potentialmemberscount = $DB->count_records_sql($countfields . $sql, $params) + $DB->count_records_sql($distinctcountfields . $sqldistinct, $params); if ($potentialmemberscount > company_course_selector_base::MAX_COURSES_PER_PAGE) { return $this->too_many_results($search, $potentialmemberscount); } } $availablecourses = $DB->get_records_sql($fields . $sql . $order, $params) + $DB->get_records_sql($distinctfields . $sqldistinct . $order, $params); if (!empty($this->showopenshared)) { $availablecourses = $availablecourses + $DB->get_records_sql($distinctfields . $sqlopenshared . $order, $params); } if (empty($availablecourses)) { return array(); } $sanitisedcourses = array(); foreach ($availablecourses as $key => $availablecourse) { $sanitisedcourses[$key] = $availablecourse; } // Have any of the courses got enrollments? $this->process_enrollments($sanitisedcourses); if ($search) { $groupname = get_string('potcoursesmatching', 'block_iomad_company_admin', $search); } else { $groupname = get_string('potcourses', 'block_iomad_company_admin'); } return array($groupname => $availablecourses); }
/** * Get user completion info for a course * * Parameters - $departmentid = int; * $courseid = int; * $page = int; * $perpade = int; * * Return array(); * */ public static function get_user_course_completion_data($searchinfo, $courseid, $page = 0, $perpage = 0, $completiontype = 0) { global $DB; $completiondata = new stdclass(); // Create a temporary table to hold the userids. $temptablename = 'tmp_ccomp_users_' . time(); $dbman = $DB->get_manager(); // Define table user to be created. $table = new xmldb_table($temptablename); $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null); $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); $dbman->create_temp_table($table); // Populate it. $alldepartments = company::get_all_subdepartments($searchinfo->departmentid); if (count($alldepartments) > 0) { $tempcreatesql = "INSERT INTO {" . $temptablename . "} (userid) SELECT userid from {company_users}\n WHERE departmentid IN (" . implode(',', array_keys($alldepartments)) . ")"; } else { $tempcreatesql = ""; } $DB->execute($tempcreatesql); // Deal with completion types. if (!empty($completiontype)) { if ($completiontype == 1) { $completionsql = " AND cc.timeenrolled > 0 AND cc.timestarted = 0 "; } else { if ($completiontype == 2) { $completionsql = " AND cc.timestarted > 0 AND cc.timecompleted IS NULL "; } else { if ($completiontype == 3) { $completionsql = " AND cc.timecompleted IS NOT NULL "; } } } } else { $completionsql = ""; } // Get the user details. if ($vantagefield = $DB->get_record('user_info_field', array('shortname' => 'VANTAGE'))) { $countsql = "SELECT u.id "; $selectsql = "SELECT u.id,\n u.firstname AS firstname,\n u.lastname AS lastname,\n u.email AS email,\n cc.timeenrolled AS timeenrolled,\n cc.timestarted AS timestarted,\n cc.timecompleted AS timecompleted,\n d.name as department,\n gg.finalgrade as result,\n uid.data as vantage "; $fromsql = " FROM {user} u, {course_completions} cc, {department} d, {company_users} du,\n {user_info_data} uid, {" . $temptablename . "} tt\n LEFT JOIN {grade_grades} gg ON ( gg.itemid = (\n SELECT id FROM {grade_items} WHERE courseid = {$courseid} AND itemtype='course'))\n\n WHERE {$searchinfo->sqlsearch}\n AND tt.userid = u.id\n AND cc.course = {$courseid}\n AND u.id = cc.userid\n AND du.userid = u.id\n AND d.id = du.departmentid\n AND gg.userid = u.id\n AND uid.userid = u.id\n AND uid.fieldid = {$vantagefield->id}\n {$completionsql}\n {$searchinfo->sqlsort} "; } else { $countsql = "SELECT u.id "; $selectsql = "SELECT u.id,\n u.firstname AS firstname,\n u.lastname AS lastname,\n u.email AS email,\n cc.timeenrolled AS timeenrolled,\n cc.timestarted AS timestarted,\n cc.timecompleted AS timecompleted,\n d.name as department,\n gg.finalgrade as result "; $fromsql = " FROM {user} u, {course_completions} cc, {department} d, {company_users} du, {" . $temptablename . "} tt\n LEFT JOIN {grade_grades} gg ON ( gg.itemid = (\n SELECT id FROM {grade_items} WHERE courseid = {$courseid} AND itemtype='course'))\n\n WHERE {$searchinfo->sqlsearch}\n AND tt.userid = u.id\n AND cc.course = {$courseid}\n AND u.id = cc.userid\n AND du.userid = u.id\n AND d.id = du.departmentid\n AND gg.userid = u.id\n {$completionsql}\n {$searchinfo->sqlsort} "; } $searchinfo->searchparams['courseid'] = $courseid; $users = $DB->get_records_sql($selectsql . $fromsql, $searchinfo->searchparams, $page * $perpage, $perpage); $countusers = $DB->get_records_sql($countsql . $fromsql, $searchinfo->searchparams); $numusers = count($countusers); $returnobj = new stdclass(); $returnobj->users = $users; $returnobj->totalcount = $numusers; return $returnobj; }
public function find_users($search) { global $DB, $USER; // By default wherecondition retrieves all users except the deleted, not confirmed and guest. list($wherecondition, $params) = $this->search_sql($search, 'u'); $params['companyid'] = $this->companyid; $fields = 'SELECT ' . $this->required_fields_sql('u') . ', u.email, d.shortname '; $countfields = 'SELECT COUNT(1)'; $myusers = company::get_my_users($this->companyid); $licenseusers = $this->get_license_user_ids(); if (count($licenseusers) > 0) { $licenseuserids = implode(',', $licenseusers); if ($licenseuserids != ',') { $userfilter = " AND NOT u.id in ({$licenseuserids}) "; } else { $userfilter = ""; } } else { $userfilter = ""; } // Add in a filter to return just the users beloning to the current USER. if (!empty($myusers)) { $userfilter .= " AND u.id in (" . implode(',', array_keys($myusers)) . ") "; } // Get the department ids for this license. $departmentids = $this->get_license_department_ids(); // Add subdepartments to include their users. foreach ($departmentids as $deptid) { $departmentids += array_keys(company::get_all_subdepartments($deptid)); } $deptids = implode(',', $departmentids); if (!empty($deptids)) { $departmentsql = "AND du.departmentid in ({$deptids})"; } else { return array(); } $sql = " FROM\n {user} u\n INNER JOIN {company_users} du ON du.userid = u.id\n INNER JOIN {department} d ON d.id = du.departmentid\n WHERE {$wherecondition} AND u.suspended = 0 \n {$departmentsql}\n {$userfilter}"; $order = ' ORDER BY u.lastname ASC, u.firstname ASC'; if (!$this->is_validating()) { $potentialmemberscount = $DB->count_records_sql($countfields . $sql, $params); if ($potentialmemberscount > company_user_selector_base::MAX_USERS_PER_PAGE) { return $this->too_many_results($search, $potentialmemberscount); } } $availableusers = $DB->get_records_sql($fields . $sql . $order, $params); if (empty($availableusers)) { return array(); } $this->process_license_allocations($availableusers); if ($search) { $groupname = get_string('potusersmatching', 'block_iomad_company_admin', $search); } else { $groupname = get_string('potusers', 'block_iomad_company_admin'); } return array($groupname => $availableusers); }
public function definition() { global $CFG, $USER; $mform =& $this->_form; $company = new company($this->selectedcompany); if (!($parentnode = company::get_company_parentnode($company->id))) { // Company has not been set up, possibly from before an upgrade. company::initialise_departments($company->id); } if (!empty($this->departmentid)) { $departmentslist = company::get_all_subdepartments($this->departmentid); } else { $departmentslist = company::get_all_departments($company->id); } if (!empty($this->departmentid)) { $department = company::get_departmentbyid($this->departmentid); } else { $department = company::get_company_parentnode($this->selectedcompany); } /* GWL : Get Company Parent Node */ $parentnode = company::get_company_parentnode($this->selectedcompany); $context = context_system::instance(); if (iomad::has_capability('block/iomad_company_admin:edit_all_departments', $context)) { $userhierarchylevel = $parentnode->id; } else { $userlevel = company::get_userlevel($USER); $userhierarchylevel = $userlevel->id; } $subdepartmentslist = company::get_subdepartments_list($department); $subdepartments = company::get_subdepartments($department); $regionlistarr = array('' => get_string('choose')); $showregiondropdown = 1; $showlocationdropdown = 1; if ($parentnode->id == $userhierarchylevel) { $regionlist = company::get_all_regions($company->id); foreach ($regionlist as $region) { $regionlistarr[$region->id] = $region->name; } } else { $regionlist = company::get_my_region($userhierarchylevel); if (!$regionlist) { $showregiondropdown = 0; } else { $regionlistarr[$regionlist->id] = $regionlist->name; } } // Create the sub department checkboxes html. $subdepartmenthtml = "<div class='departments_container'></div>"; $locationlist = array('' => get_string('choose')); if ($parentnode->id != $userhierarchylevel && empty($regionlist)) { $mylocationlist = company::get_my_location($userhierarchylevel); if ($mylocationlist) { $locationlist[$mylocationlist->id] = $mylocationlist->name; } else { $showlocationdropdown = 0; } } /* if (!empty($subdepartmentslist)) { $subdepartmenthtml = "<p>" . get_string('subdepartments', 'block_iomad_company_admin') . "</p>"; foreach ($subdepartmentslist as $key => $value) { $subdepartmenthtml .= '<input type = "checkbox" name = "departmentids[]" value="' . $key . '" /> ' . $value . '</br>'; } } */ // Then show the fields about where this block appears. $mform->addElement('header', 'header', get_string('companydepartment', 'block_iomad_company_admin') . $company->get_name()); if ($showregiondropdown) { $mform->addElement('select', 'regionid', get_string('region', 'block_iomad_company_admin'), $regionlistarr, array('class' => 'companyregion')); $mform->addRule('regionid', get_string('regionnotselect', 'block_iomad_company_admin'), 'required', null, 'client'); } if ($showlocationdropdown) { $mform->addElement('select', 'locationid', get_string('location', 'block_iomad_company_admin'), $locationlist, array('class' => 'companylocation')); $mform->addRule('locationid', get_string('locationnotselect', 'block_iomad_company_admin'), 'required', null, 'client'); } //$mform->addElement('html', $subdepartmenthtml); $mform->addElement('select', 'deptid', get_string('department', 'block_iomad_company_admin'), $locationlist, array('class' => 'dept_container')); $mform->addElement('html', $subdepartmenthtml); $buttonarray = array(); $attr = array(); if (!$showlocationdropdown) { $attr = array('disabled' => 'disabled'); } $buttonarray[] = $mform->createElement('submit', 'create', get_string('createdepartment', 'block_iomad_company_admin'), $attr); // if (!empty($subdepartmentslist)) { $buttonarray[] = $mform->createElement('submit', 'edit', get_string('editdepartments', 'block_iomad_company_admin'), array('disabled' => 'disabled', 'class' => 'editdepart')); $buttonarray[] = $mform->createElement('submit', 'delete', get_string('deletedepartment', 'block_iomad_company_admin'), array('disabled' => 'disabled')); //} $mform->addGroup($buttonarray, '', array(' '), ' ', false); }
public function definition() { global $CFG; $mform =& $this->_form; $company = new company($this->selectedcompany); if (!empty($this->departmentid)) { $departmentslist = company::get_all_subdepartments($this->departmentid); } else { $departmentslist = company::get_all_departments($company->id); } $department = company::get_departmentbyid($this->departmentid); // Then show the fields about where this block appears. if ($this->action == 0) { $mform->addElement('header', 'header', get_string('createdepartment', 'block_iomad_company_admin')); } else { $mform->addElement('header', 'header', get_string('editdepartments', 'block_iomad_company_admin')); } $mform->addElement('hidden', 'departmentid', $this->departmentid); $mform->setType('departmentid', PARAM_INT); $mform->addElement('hidden', 'action', $this->action); $mform->setType('action', PARAM_INT); $mform->addElement('select', 'deptid', get_string('department', 'block_iomad_company_admin'), $departmentslist); $mform->disabledIf('deptid', 'action', 'eq', 1); $mform->addElement('text', 'fullname', get_string('fullnamedepartment', 'block_iomad_company_admin'), 'maxlength = "254" size = "50"'); $mform->addHelpButton('fullname', 'fullnamedepartment', 'block_iomad_company_admin'); $mform->addRule('fullname', get_string('missingfullnamedepartment', 'block_iomad_company_admin'), 'required', null, 'client'); $mform->setType('fullname', PARAM_MULTILANG); $mform->addElement('text', 'shortname', get_string('shortnamedepartment', 'block_iomad_company_admin'), 'maxlength = "100" size = "20"'); $mform->addHelpButton('shortname', 'shortnamedepartment', 'block_iomad_company_admin'); $mform->addRule('shortname', get_string('missingshortnamedepartment', 'block_iomad_company_admin'), 'required', null, 'client'); $mform->setType('shortname', PARAM_MULTILANG); if (!$this->departmentid) { $mform->addElement('hidden', 'chosenid', $this->chosenid); } else { $mform->addElement('hidden', 'chosenid', $this->departmentid); } $mform->setType('chosenid', PARAM_INT); $this->add_action_buttons(); }