diff --git a/classes/form/evaluserexport.php b/classes/form/evaluserexport.php index b17730d5e85a884ce528ed26d369768d8ea4f4ef..3f9a5f5861b5781575ce995c09dfeb1fdbb0eb84 100644 --- a/classes/form/evaluserexport.php +++ b/classes/form/evaluserexport.php @@ -38,13 +38,12 @@ class evaluserexport extends moodleform { $mform->addElement('html', '<div id="intor">' . $introtext . '</div>'); $courseid = $this->_customdata['courseid']; + $mform->addElement('hidden', 'courseid', $courseid); + $mform->setType('courseid', PARAM_INT); + $coursecontext = $this->_customdata['coursecontext']; - $viewableroles = get_roles_used_in_context($coursecontext, false); - $roles = role_fix_names($viewableroles, $coursecontext, ROLENAME_ALIAS); - $options = []; - foreach ($roles as $role) { - $options[$role->id] = $role->localname; - } + $mform->addElement('hidden', 'coursecontextid', $coursecontext->id); + $mform->setType('coursecontextid', PARAM_INT); $placeholder = get_string('course_code_placeholder', 'local_hshexport'); $mform->addElement('text', 'course_code', get_string('course_code', 'local_hshexport'), 'maxlength="150" size="50" placeholder="'.$placeholder.'"'); @@ -52,22 +51,21 @@ class evaluserexport extends moodleform { $mform->addHelpButton('course_code', 'course_code', 'local_hshexport'); $mform->setDefault('course_code', null); + $viewableroles = get_roles_used_in_context($coursecontext, false); $roles = role_fix_names($viewableroles, $coursecontext, ROLENAME_ALIAS); - $roles_checkboxes = []; - foreach ($roles as $role) { $roles_checkboxes[] =& $mform->createElement('advcheckbox', 'role_'.$role->id, $role->localname, null, ['group' => 1], [null, $role->id]); } + $mform->addGroup($roles_checkboxes, 'roles', get_string('select_roles', 'local_hshexport'), ['<br/>'], true); $mform->addHelpButton('roles', 'select_roles', 'local_hshexport'); $mform->addGroupRule( 'roles', get_string('noselectedroles', 'local_hshexport'), 'required', - null, - 1, - 'client' + PARAM_INT, + 1 ); $this->add_checkbox_controller( @@ -75,21 +73,7 @@ class evaluserexport extends moodleform { get_string("checkall", "local_hshexport") ); - $mform->addElement('hidden', 'courseid', $courseid); - $mform->setType('courseid', PARAM_INT); - - $mform->addElement('hidden', 'coursecontextid', $coursecontext->id); - $mform->setType('coursecontextid', PARAM_INT); - $submitlabel = get_string('csvdownload', 'local_hshexport'); $this->add_action_buttons(false, $submitlabel); - - } - - function validation($data, $files) - { - $errors = parent::validation($data, $files); // TODO: Change the autogenerated stub - return $errors; } - } \ No newline at end of file diff --git a/action_download.php b/download.php similarity index 73% rename from action_download.php rename to download.php index 842edc9902fb49359a097ffdfae4162a6b8619e6..e8f15bc53914cd7d15a9a44c856bde6400dc548b 100644 --- a/action_download.php +++ b/download.php @@ -27,21 +27,22 @@ use local_hshexport\local\helpers\download; require(__DIR__ . '/../../config.php'); require_once($CFG->libdir.'/csvlib.class.php'); -$PAGE->set_url('/local/hshexport/action_download.php'); +$PAGE->set_url('/local/hshexport/download.php'); -if (!confirm_sesskey()) { - throw new \moodle_exception('confirmsesskeybad'); -} +$course_code = optional_param('code', null, PARAM_ALPHANUMEXT); +$courseid = required_param('id', PARAM_INT); +$coursecontextid = required_param('context', PARAM_INT); +$roles = required_param('roles', PARAM_TEXT); -$course_code = optional_param('course_code', null, PARAM_ALPHANUMEXT); -$courseid = required_param('courseid', PARAM_INT); -$coursecontextid = required_param('coursecontextid', PARAM_INT); -$roles = required_param_array('roles',PARAM_INT); +$coursecontext = context_course::instance($courseid); +$PAGE->set_context($coursecontext); +require_capability('local/hshexport:canexport', $coursecontext); -$roleids = array_values(array_filter($roles)); +$roles = json_decode(urldecode($roles)); +$roleids = array_map('intval', $roles); $filename = download::get_evaluation_filename($courseid, $course_code); -$users = local_hshexport\local\helpers\user_query::get_users_by_role($courseid, $coursecontextid, $roleids); +$users = local_hshexport\local\helpers\user_query::get_users_by_role($courseid, $coursecontextid, $roles); if (!$course_code) { $course = get_course($courseid); diff --git a/index.php b/index.php index b6774a84075ea18fa219f283f8c18aeb3f52abc3..fa798c3931fbe5bdb25ae42703f55c9f91925384 100644 --- a/index.php +++ b/index.php @@ -24,8 +24,8 @@ use local_hshexport\form\evaluserexport; - require(__DIR__ . '/../../config.php'); +require_once($CFG->libdir.'/csvlib.class.php'); $courseid = required_param('id', PARAM_INT); $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); @@ -48,11 +48,26 @@ $customdata = [ 'coursecontext' => $coursecontext ]; -$mform = new evaluserexport('action_download.php', $customdata); +$mform = new evaluserexport('#', $customdata); + +if ($formdata = $mform->get_data()) { + + // removes not selected roles from array + $roleids = array_values(array_filter($formdata->roles)); + $roles_param = urlencode(json_encode($roleids)); + + $params = [ + 'id' => $formdata->courseid, + 'context' => $formdata->coursecontextid, + 'roles' => $roles_param, + 'code' => $formdata->course_code + ]; + + redirect(new moodle_url('/local/hshexport/download.php', $params)); -//if ($mform->get_data()) { -// redirect(new moodle_url('local/hshexport/action_download.php')); -//} +} else { + $mform->set_data($formdata); +} $mform->display(); echo $OUTPUT->footer();