Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

MDL-14299 New checkbox profile field type.

Credit to Brian King.
  • Loading branch information...
commit 6a983a636f8a987c8f822885c58ce24b950d5a71 1 parent 5cb634a
ikawhero authored
View
13 user/profile/field/checkbox/define.class.php
@@ -0,0 +1,13 @@
+<?php //$Id:
+
+class profile_define_checkbox extends profile_define_base {
+
+ function define_form_specific(&$form) {
+ /// select whether or not this should be checked by default
+ $form->addElement('selectyesno', 'defaultdata', get_string('profiledefaultchecked', 'profilefield_checkbox'));
+ $form->setDefault('defaultdata', 0); // defaults to 'no'
+ $form->setType('defaultdata', PARAM_BOOL);
+ }
+}
+
+?>
View
47 user/profile/field/checkbox/field.class.php
@@ -0,0 +1,47 @@
+<?php //$Id:
+
+class profile_field_checkbox extends profile_field_base {
+
+ /**
+ * Constructor method.
+ * Pulls out the options for the checkbox from the database and sets the
+ * the corresponding key for the data if it exists
+ */
+ function profile_field_checkbox($fieldid=0, $userid=0) {
+ //first call parent constructor
+ $this->profile_field_base($fieldid, $userid);
+
+ if (!empty($this->field)) {
+ $datafield = get_field('user_info_data', 'data', 'userid', $this->userid, 'fieldid', $this->fieldid);
+ if ($datafield !== false) {
+ $this->data = $datafield;
+ } else {
+ $this->data = $this->field->defaultdata;
+ }
+ }
+ }
+
+ function edit_field_add(&$mform) {
+ /// Create the form field
+ $checkbox = &$mform->addElement('advcheckbox', $this->inputname, format_string($this->field->name));
+ if ($this->data == '1') {
+ $checkbox->setChecked(true);
+ }
+ $mform->setType($this->inputname, PARAM_BOOL);
+ if ($this->is_required() and !has_capability('moodle/user:update', get_context_instance(CONTEXT_SYSTEM, SITEID))) {
+ $mform->addRule($this->inputname, get_string('required'), 'nonzero', null, 'client');
+ }
+ }
+
+ /**
+ * Display the data for this field
+ */
+ function display_data() {
+ $options->para = false;
+ $checked = intval($this->data) === 1 ? 'checked="checked"' : '';
+ return '<input disabled="disabled" type="checkbox" name="'.$this->inputname.'" '.$checked.' />';
+ }
+
+}
+
+?>
Please sign in to comment.
Something went wrong with that request. Please try again.