From 758ed0e92885cbeb51323338c549799b1d46eb41 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Wed, 24 Jul 2013 15:56:04 +0800 Subject: [PATCH] Introduced the teacher name element --- .../lang/en/customcertelement_teachername.php | 27 +++++ element/teachername/lib.php | 100 ++++++++++++++++++ element/teachername/version.php | 29 +++++ 3 files changed, 156 insertions(+) create mode 100644 element/teachername/lang/en/customcertelement_teachername.php create mode 100644 element/teachername/lib.php create mode 100644 element/teachername/version.php diff --git a/element/teachername/lang/en/customcertelement_teachername.php b/element/teachername/lang/en/customcertelement_teachername.php new file mode 100644 index 0000000..fff9204 --- /dev/null +++ b/element/teachername/lang/en/customcertelement_teachername.php @@ -0,0 +1,27 @@ +. + +/** + * Strings for component 'customcertelement_teachername', language 'en'. + * + * @package customcertelement_teachername + * @copyright 2013 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +$string['pluginname'] = 'Teacher name'; +$string['teacher'] = 'Teacher'; +$string['teacher_help'] = 'This is the teacher name that will be displayed.'; diff --git a/element/teachername/lib.php b/element/teachername/lib.php new file mode 100644 index 0000000..4a342ac --- /dev/null +++ b/element/teachername/lib.php @@ -0,0 +1,100 @@ +. + +defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); + +require_once($CFG->dirroot . '/mod/customcert/element/element.class.php'); + +/** + * The customcert element teachername's core interaction API. + * + * @package customcertelement_teachername + * @copyright 2013 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class customcert_element_teachername extends customcert_element_base { + + /** + * This function renders the form elements when adding a customcert element. + * + * @param mod_customcert_edit_element_form $mform the edit_form instance + */ + public function render_form_elements($mform) { + $mform->addElement('select', 'teacher', get_string('teacher', 'customcertelement_teachername'), + $this->get_list_of_teachers()); + $mform->addHelpButton('teacher', 'teacher', 'customcertelement_teachername'); + + parent::render_form_elements($mform); + } + + /** + * This will handle how form data will be saved into the data column in the + * customcert_elements table. + * + * @param stdClass $data the form data + * @return string the text + */ + public function save_unique_data($data) { + return $data->teacher; + } + + /** + * Handles rendering the element on the pdf. + * + * @param pdf $pdf the pdf object + * @param bool $preview true if it is a preview, false otherwise + */ + public function render($pdf, $preview) { + global $DB; + + $teacher = $DB->get_record('user', array('id' => $this->element->data), 'id, firstname, lastname'); + $teachername = fullname($teacher); + + parent::render_content($pdf, $teachername); + } + + /** + * Helper function to return the teachers for this course. + * + * @return array the list of teachers + */ + private function get_list_of_teachers() { + // When editing this element the cmid will be present in the URL. + $cmid = required_param('cmid', PARAM_INT); + + // The list of teachers to return. + $teachers = array(); + + // Now return all users who can manage the customcert in this context. + if ($users = get_users_by_capability(context_module::instance($cmid), 'mod/customcert:manage', 'u.id, u.firstname, u.lastname')) { + foreach ($users as $user) { + $teachers[$user->id] = fullname($user); + } + } + + return $teachers; + } + + /** + * Sets the data on the form when editing an element. + * + * @param mod_customcert_edit_element_form $mform the edit_form instance + */ + public function definition_after_data($mform) { + $this->element->teacher = $this->element->data; + parent::definition_after_data($mform); + } +} diff --git a/element/teachername/version.php b/element/teachername/version.php new file mode 100644 index 0000000..7e6de7c --- /dev/null +++ b/element/teachername/version.php @@ -0,0 +1,29 @@ +. + +/** + * This file contains the version information for the teachername plugin. + * + * @package customcertelement_teachername + * @copyright 2013 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); + +$plugin->version = 2013072401; +$plugin->requires = 2013040500; // Requires this Moodle version. +$plugin->component = 'customcertelement_teachername';