function display() { global $CFG, $PAGE; require_capability('format/page:managepages', $this->context); $locks = format_page_lock::get_locks(); $mform = new format_page_lock_form($CFG->wwwroot . '/course/format/page/format.php', format_page_lock::decode($this->page->locks)); if ($mform->is_cancelled()) { redirect($PAGE->url_build('action', 'manage')); } else { if ($data = $mform->get_data()) { $lockdata = array(); foreach ($locks as $lock) { $lockdata = array_merge($lockdata, $lock->process_form($data)); } $lockinfo = array(); $lockinfo['showprereqs'] = $data->showprereqs; $lockinfo['visible'] = $data->visible; $lockinfo['locks'] = $lockdata; if (empty($lockinfo['locks'])) { $lockinfo = ''; } else { $lockinfo = format_page_lock::encode($lockinfo); } if (!set_field('format_page', 'locks', $lockinfo, 'id', $this->page->id)) { error('Failed to save lock information'); } redirect($PAGE->url_build('page', $this->page->id, 'action', 'lock')); } else { $PAGE->print_tabs('manage'); $mform->display(); } } }
function definition() { global $COURSE; $mform =& $this->_form; $locks = format_page_lock::get_locks(); if (empty($this->_customdata)) { // Defaults $this->_customdata = array(); $this->_customdata['showprereqs'] = 1; $this->_customdata['visible'] = 1; $this->_customdata['locks'] = array(); } $mform->addElement('hidden', 'id', $COURSE->id); $mform->setType('id', PARAM_INT); $mform->addElement('hidden', 'action', 'lock'); $mform->setType('action', PARAM_SAFEDIR); $mform->addElement('hidden', 'page', required_param('page', PARAM_INT)); $mform->setType('page', PARAM_INT); $mform->addElement('header', 'general', get_string('general')); $mform->addElement('selectyesno', 'showprereqs', get_string('showprereqs', 'format_page')); $mform->setDefault('showprereqs', $this->_customdata['showprereqs']); $mform->setHelpButton('showprereqs', array('showprereqs', get_string('showprereqs', 'format_page'), 'format_page')); $mform->addElement('selectyesno', 'visible', get_string('visiblewhenlocked', 'format_page')); $mform->setDefault('visible', $this->_customdata['visible']); $mform->setHelpButton('visible', array('visible', get_string('visible', 'format_page'), 'format_page')); if (empty($this->_customdata['locks'])) { $mform->hardFreeze(array('visible', 'showprereqs')); } // Allow each lock to add editing form elements foreach ($locks as $lock) { $lock->edit_form($mform, $this->_customdata['locks']); } $mform->addElement('header', 'addlock', get_string('addlock', 'format_page')); // Allow each lock to include add lock form elements foreach ($locks as $lock) { $lock->add_form($mform, $this->_customdata['locks']); } $this->add_action_buttons(); }
/** * This function makes all the necessary calls to {@link restore_decode_content_links_worker()} * function inorder to decode contents of this block from the backup * format to destination site/course in order to mantain inter-activities * working in the backup/restore process. * * This is called from {@link restore_decode_content_links()} * function in the restore process. This function is called regarless of * the return value from {@link backuprestore_enabled()}. * * @param object $restore Standard restore object * @return boolean **/ function page_decode_format_content_links_caller($restore) { global $CFG; $status = true; // Only need to run this when the restore to course is being // deleted and created anew or when creating a new one if ($restore->restoreto == 0 || $restore->restoreto == 2) { require_once $CFG->dirroot . '/course/format/page/lib.php'; $pageitems = get_records_sql("SELECT i.*\n FROM {$CFG->prefix}format_page p,\n {$CFG->prefix}format_page_items i\n WHERE p.id = i.pageid\n AND p.courseid = {$restore->course_id}\n AND i.blockinstance != 0"); if (!empty($pageitems)) { foreach ($pageitems as $pageitem) { $blockinstance = backup_getid($restore->backup_unique_code, 'block_instance', $pageitem->blockinstance); if (!empty($blockinstance)) { set_field('format_page_items', 'blockinstance', $blockinstance->new_id, 'id', $pageitem->id); } else { // Delete page item if (page_block_delete($pageitem)) { if (debugging() and !defined('RESTORE_SILENTLY')) { echo '<br /><hr />Failed to remap block instance ID and successfully deleted page item ID: ' . $pageitem->id . '<hr /><br />'; } } else { if (debugging() and !defined('RESTORE_SILENTLY')) { echo '<br /><hr />Failed to remap block instance ID and failed to delete page item ID: ' . $pageitem->id . '<hr /><br />'; } } } } } // Relink locks (might be activity based, etc) $pages = get_records_sql("SELECT p.id, p.locks\n FROM {$CFG->prefix}format_page p\n WHERE p.courseid = {$restore->course_id}\n AND p.locks != ''"); if (!empty($pages)) { foreach ($pages as $page) { if (!empty($page->locks)) { $newlocks = format_page_lock::restore($restore, $page->locks); if ($newlocks != $page->locks) { set_field('format_page', 'locks', $newlocks, 'id', $page->id); } } } } } return $status; }
/** * Public API to page locks: Print lock * prerequisites to the user * * @param object $page The page to print reqs for * @return void **/ function page_print_lock_prerequisites($page) { global $CFG; require_once $CFG->dirroot . '/course/format/page/plugin/lock.php'; format_page_lock::print_lock_prerequisites($page); }