. /** * Handles saving customcert templates. * * @package mod_customcert * @copyright Mark Nelson * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once('../../config.php'); require_once($CFG->dirroot . '/mod/customcert/lib.php'); require_once($CFG->dirroot . '/mod/customcert/save_template_form.php'); $cmid = required_param('cmid', PARAM_INT); $name = required_param('name', PARAM_TEXT); $cm = get_coursemodule_from_id('customcert', $cmid, 0, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); $customcert = $DB->get_record('customcert', array('id' => $cm->instance), '*', MUST_EXIST); $context = context_module::instance($cm->id); require_login($course, false, $cm); require_capability('mod/customcert:manage', $context); // Store the current time in a variable. $time = time(); // Create the template. $template = new stdClass(); $template->name = $name; $template->timecreated = $time; $template->timemodified = $time; $template->id = $DB->insert_record('customcert_template', $template); // Get the pages of the customcert we are copying. if ($pages = $DB->get_records('customcert_pages', array('customcertid' => $customcert->id))) { // Create an array to store any errors saving an element to a template. $errors = array(); // Loop through and copy the data. foreach ($pages as $page) { // Insert into the template page table. $templatepage = clone($page); $templatepage->templateid = $template->id; $templatepage->timecreated = $time; $templatepage->timemodified = $time; $templatepage->id = $DB->insert_record('customcert_template_pages', $templatepage); // Get the elements. if ($elements = $DB->get_records('customcert_elements', array('pageid' => $page->id))) { // Loop through the elements. foreach ($elements as $element) { // Insert into the template element table. $templateelement = clone($element); $templateelement->templatepageid = $templatepage->id; $templateelement->timecreated = $time; $templateelement->timemodified = $time; $templateelement->id = $DB->insert_record('customcert_template_elements', $templateelement); // Save any other information the element may need to for the template. if ($e = customcert_get_element_instance($element)) { if (!$e->save_data_to_template($element)) { // Remove from the customcert_template_elements table. $DB->delete_records('customcert_template_elements', array('id' => $templateelement->id)); // Add the error message to the array to display later. $errors[] = get_string('errorsavingelement', 'customcert', $element->element); } } } } } } // Get any errors caused by the loading of an element and put into a message. $message = ''; if (!empty($errors)) { foreach ($errors as $e) { $message .= $OUTPUT->notification($e) . '
'; } } // Redirect. $url = new moodle_url('/mod/customcert/edit.php', array('cmid' => $cmid)); redirect($url, $message);