} } /// First create the form $editform = new key_form(); $editform->set_data($key); if ($editform->is_cancelled()) { redirect($returnurl); } elseif ($data = $editform->get_data()) { if ($data->id) { $record = new object(); $record->id = $data->id; $record->iprestriction = $data->iprestriction; $record->validuntil = $data->validuntil; update_record('user_private_key', $record); } else { create_user_key('grade/export', $USER->id, $course->id, $data->iprestriction, $data->validuntil); } redirect($returnurl); } $strkeys = get_string('userkeys', 'userkey'); $strgrades = get_string('grades'); if ($id) { $strheading = get_string('edituserkey', 'userkey'); } else { $strheading = get_string('createuserkey', 'userkey'); } $navlinks = array(array('name' => $strgrades, 'link' => $CFG->wwwroot . '/grade/index.php?id=' . $courseid, 'type' => 'misc'), array('name' => $strkeys, 'link' => $CFG->wwwroot . '/grade/export/keymanager.php?id=' . $courseid, 'type' => 'misc'), array('name' => $strheading, 'link' => '', 'type' => 'misc')); $navigation = build_navigation($navlinks); /// Print header print_header_simple($strkeys, ': ' . $strkeys, $navigation, '', '', true, '', navmenu($course)); $editform->display();
/** * Init object based using data from form * @param object $formdata */ function process_form($formdata) { global $USER; $this->columns = array(); if (!empty($formdata->itemids)) { foreach ($formdata->itemids as $itemid => $selected) { if ($selected and array_key_exists($itemid, $this->grade_items)) { $this->columns[$itemid] =& $this->grade_items[$itemid]; } } } else { foreach ($this->grade_items as $itemid => $unused) { $this->columns[$itemid] =& $this->grade_items[$itemid]; } } if (isset($formdata->key)) { if ($formdata->key == 1 && isset($formdata->iprestriction) && isset($formdata->validuntil)) { // Create a new key $formdata->key = create_user_key('grade/export', $USER->id, $this->course->id, $formdata->iprestriction, $formdata->validuntil); } $this->userkey = $formdata->key; } if (isset($formdata->export_letters)) { $this->export_letters = $formdata->export_letters; } if (isset($formdata->export_feedback)) { $this->export_feedback = $formdata->export_feedback; } if (isset($formdata->previewrows)) { $this->previewrows = $formdata->previewrows; } }
/** * Init object based using data from form * @param object $formdata */ function process_form($formdata) { global $USER; $this->columns = array(); if (!empty($formdata->itemids)) { if ($formdata->itemids == '-1') { //user deselected all items } else { foreach ($formdata->itemids as $itemid => $selected) { if ($selected and array_key_exists($itemid, $this->grade_items)) { $this->columns[$itemid] =& $this->grade_items[$itemid]; } } } } else { foreach ($this->grade_items as $itemid => $unused) { $this->columns[$itemid] =& $this->grade_items[$itemid]; } } if (isset($formdata->key)) { if ($formdata->key == 1 && isset($formdata->iprestriction) && isset($formdata->validuntil)) { // Create a new key $formdata->key = create_user_key('grade/export', $USER->id, $this->course->id, $formdata->iprestriction, $formdata->validuntil); } $this->userkey = $formdata->key; } if (isset($formdata->decimals)) { $this->decimalpoints = $formdata->decimals; } if (isset($formdata->export_letters)) { $this->export_letters = $formdata->export_letters; } if (isset($formdata->export_feedback)) { $this->export_feedback = $formdata->export_feedback; } if (isset($formdata->export_onlyactive)) { $this->onlyactive = $formdata->export_onlyactive; } if (isset($formdata->previewrows)) { $this->previewrows = $formdata->previewrows; } if (isset($formdata->display)) { $this->displaytype = $formdata->display; // Used by grade exports which accept multiple display types. // If the checkbox value is 0 (unchecked) then remove it. if (is_array($formdata->display)) { $this->displaytype = array_filter($formdata->display); } } if (isset($formdata->updatedgradesonly)) { $this->updatedgradesonly = $formdata->updatedgradesonly; } }
/** * Gets a private user access key (and creates one if one doesn't exist). * * @param string $script unique target identifier * @param int $userid * @param int $instance optional instance id * @param string $iprestriction optional ip restricted access * @param int $validuntil key valid only until given date * @return string access key value */ function get_user_key($script, $userid, $instance = null, $iprestriction = null, $validuntil = null) { global $DB; if ($key = $DB->get_record('user_private_key', array('script' => $script, 'userid' => $userid, 'instance' => $instance, 'iprestriction' => $iprestriction, 'validuntil' => $validuntil))) { return $key->value; } else { return create_user_key($script, $userid, $instance, $iprestriction, $validuntil); } }
/** * Creates an auto-login key for the current user, this key is restricted by time and ip address. * * @return string the key * @since Moodle 3.2 */ public static function get_autologin_key() { global $USER; // Delete previous keys. delete_user_key('tool_mobile', $USER->id); // Create a new key. $iprestriction = getremoteaddr(); $validuntil = time() + self::LOGIN_KEY_TTL; return create_user_key('tool_mobile', $USER->id, null, $iprestriction, $validuntil); }