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);
}