From 3161af1c46af7f076788a0818fab6067da0568c9 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Fri, 14 Jun 2013 11:51:34 +0800 Subject: [PATCH] Introduced the user profile field element --- .../lang/en/customcertelements_userfield.php | 28 ++++++ elements/userfield/lib.php | 93 +++++++++++++++++++ elements/userfield/version.php | 30 ++++++ 3 files changed, 151 insertions(+) create mode 100644 elements/userfield/lang/en/customcertelements_userfield.php create mode 100644 elements/userfield/lib.php create mode 100644 elements/userfield/version.php diff --git a/elements/userfield/lang/en/customcertelements_userfield.php b/elements/userfield/lang/en/customcertelements_userfield.php new file mode 100644 index 0000000..d833475 --- /dev/null +++ b/elements/userfield/lang/en/customcertelements_userfield.php @@ -0,0 +1,28 @@ +. + +/** + * Strings for component 'customcertelements_userfield', language 'en'. + * + * @package customcertelements_userfield + * @copyright Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +$string['pluginname'] = 'User field'; +$string['userfield'] = 'User field'; +$string['userfield_help'] = 'This is the user field that will be displayed on the PDF.'; diff --git a/elements/userfield/lib.php b/elements/userfield/lib.php new file mode 100644 index 0000000..e07baac --- /dev/null +++ b/elements/userfield/lib.php @@ -0,0 +1,93 @@ +. + +defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); + +require_once($CFG->dirroot . '/mod/customcert/elements/element.class.php'); + +/** + * The customcert element userfield's core interaction API. + * + * @package customcertelements_userfield + * @copyright Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class customcert_elements_userfield extends customcert_elements_base { + + /** + * Constructor. + * + * @param stdClass $element the element data + */ + function __construct($element) { + parent::__construct($element); + + $this->element->userfield = (!empty($element->data)) ? $element->data : ''; + } + + /** + * 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) { + // Get the user fields. + $userfields = condition_info::get_condition_user_fields(); + collatorlib::asort($userfields); + + // Create the select box where the user field is selected. + $mform->addElement('select', 'userfield', get_string('userfield', 'customcertelements_userfield'), $userfields); + $mform->setType('userfield', PARAM_ALPHANUM); + $mform->addHelpButton('userfield', 'userfield', 'customcertelements_userfield'); + + 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->userfield; + } + + /** + * Handles rendering the element on the pdf. + * + * @param pdf $pdf the pdf object + */ + public function render($pdf) { + global $DB, $USER; + + // The user field to display. + $field = $this->element->data; + // The value to display on the PDF. + $value = ''; + if (is_number($field)) { // Must be a custom user profile field. + if ($field = $DB->get_record('user_info_field', array('id' => $field))) { + $value = $USER->profile[$field->shortname]; + } + } else if (!empty($USER->$field)) { // Field in the user table. + $value = $USER->$field; + } + + parent::render_content($pdf, $value); + } +} diff --git a/elements/userfield/version.php b/elements/userfield/version.php new file mode 100644 index 0000000..c165a02 --- /dev/null +++ b/elements/userfield/version.php @@ -0,0 +1,30 @@ +. + +/** + * This file contains the version information for the userfield plugin. + * + * @package customcertelements_userfield + * @copyright 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 = 2013061400; +$plugin->requires = 2013040500; // Requires this Moodle version. +$plugin->component = 'customcertelements_userfield';