Esempio n. 1
0
/**
 * Deletes a page deleting non-referenced block instances, all page items for that page,
 * and moving child pages up the page hierarchy to the parent page at the end of the parent;s
 * children
 *
 * @param int $pageid The page ID of the page to delte
 **/
function page_delete_page($pageid)
{
    if (!($page = get_record('format_page', 'id', $pageid))) {
        error('Invalid Page ID');
    }
    // Delete all page items
    if ($pageitems = get_records('format_page_items', 'pageid', $pageid)) {
        foreach ($pageitems as $pageitem) {
            page_block_delete($pageitem);
        }
    }
    // Remove from current location
    page_remove_from_ordering($page->id);
    // Need to get the page out of there so we can get
    // proper sortorder value for children
    $return = delete_records('format_page', 'id', $page->id);
    // Now remap the parent id and sortorder of all the child pages.
    if ($return and $children = get_records('format_page', 'parent', $pageid, 'sortorder', 'id')) {
        $sortorder = page_get_next_sortorder($page->parent, $page->courseid);
        foreach ($children as $child) {
            $update = new stdClass();
            $update->id = $child->id;
            $update->parent = $page->parent;
            $update->sortorder = $sortorder;
            update_record('format_page', $update);
            $sortorder++;
        }
    }
    return $return;
}
 function display()
 {
     global $CFG, $PAGE, $COURSE;
     $returnaction = optional_param('returnaction', '', PARAM_ALPHA);
     if ($pageid = optional_param('page', 0, PARAM_INT)) {
         require_capability('format/page:editpages', $this->context);
         if ($returnaction) {
             $currenttab = $returnaction;
         } else {
             $currenttab = 'settings';
         }
         if (!($page = get_record('format_page', 'id', $pageid))) {
             error('Invalid page ID');
         }
     } else {
         require_capability('format/page:addpages', $this->context);
         $currenttab = 'addpage';
         $page = NULL;
     }
     // Find possible parents for this page
     if ($parents = page_get_possible_parents($pageid, $COURSE->id)) {
         $possibleparents = array(0 => get_string('none'));
         foreach ($parents as $parent) {
             $possibleparents[$parent->id] = page_name_menu($parent->nameone, $parent->depth);
         }
     } else {
         $possibleparents = array();
     }
     $mform = new format_page_editpage_form($CFG->wwwroot . '/course/format/page/format.php', $possibleparents);
     if ($mform->is_cancelled()) {
         if ($returnaction) {
             // Return back to a specific action
             redirect($PAGE->url_build('page', $page->id, 'action', $returnaction));
         } else {
             redirect($PAGE->url_get_full());
         }
     } else {
         if ($data = $mform->get_data()) {
             // Save/update routine
             $page = new stdClass();
             $page->nameone = $data->nameone;
             $page->nametwo = $data->nametwo;
             $page->courseid = $data->id;
             $page->display = $data->publish | $data->dispmenu | $data->disptheme;
             $page->prefleftwidth = $data->prefleftwidth;
             $page->prefcenterwidth = $data->prefcenterwidth;
             $page->prefrightwidth = $data->prefrightwidth;
             $page->template = $data->template;
             $page->showbuttons = $data->showbuttons;
             $page->parent = $data->parent;
             // There can only be one!
             if ($page->template) {
                 // only one template page allowed
                 set_field('format_page', 'template', 0, 'courseid', $page->courseid);
             }
             if ($data->page) {
                 // Updating
                 $page->id = $data->page;
                 if ($page->parent != get_field('format_page', 'parent', 'id', $page->id)) {
                     // Moving - re-assign sortorder
                     $page->sortorder = page_get_next_sortorder($page->parent, $page->courseid);
                     // Remove from old parent location
                     page_remove_from_ordering($page->id);
                 }
                 if (!update_record('format_page', $page)) {
                     error(get_string('couldnotupdatepage', 'format_page'));
                 }
             } else {
                 // Creating new
                 $page->sortorder = page_get_next_sortorder($page->parent, $page->courseid);
                 if (!($page->id = insert_record('format_page', $page))) {
                     error(get_string('couldnotinsertnewpage', 'format_page'));
                 }
             }
             if ($returnaction) {
                 // Return back to a specific action
                 redirect($PAGE->url_build('page', $page->id, 'action', $returnaction));
             } else {
                 // Default, view the page
                 redirect($PAGE->url_build('page', $page->id));
             }
         } else {
             if ($mform->is_submitted() and !defined('HEADER_PRINTED')) {
                 // This is for when JavaScript is turned off and validation failed
                 print_error('editformvalidationfailed', 'format_page', $PAGE->url_build('action', 'editpage'));
             } else {
                 // Set up data to be sent to the form
                 // Might come from a page or page template record
                 $toform = new stdClass();
                 if (!empty($page)) {
                     $toform = $page;
                     $toform->page = $page->id;
                 } else {
                     if ($template = get_record('format_page', 'template', 1, 'courseid', $COURSE->id, '', '', 'prefleftwidth, prefcenterwidth, prefrightwidth, showbuttons, display')) {
                         $toform = $template;
                     }
                 }
                 // Special handling for display field
                 if (!empty($toform->display)) {
                     if ($toform->display & DISP_PUBLISH) {
                         $toform->publish = DISP_PUBLISH;
                     }
                     if ($toform->display & DISP_MENU) {
                         $toform->dispmenu = DISP_MENU;
                     }
                     if ($toform->display & DISP_THEME) {
                         $toform->disptheme = DISP_THEME;
                     }
                 }
                 // Done here on purpose
                 $toform->id = $COURSE->id;
                 $toform->returnaction = $returnaction;
                 $mform->set_data($toform);
                 $PAGE->print_tabs($currenttab);
                 $mform->display();
             }
         }
     }
 }
Esempio n. 3
0
 $page->template = $data->template;
 $page->showbuttons = $data->showbuttons;
 $page->parent = $data->parent;
 // There can only be one!
 if ($page->template) {
     // only one template page allowed
     set_field('format_page', 'template', 0, 'courseid', $page->courseid);
 }
 if ($data->page) {
     // Updating
     $page->id = $data->page;
     if ($page->parent != get_field('format_page', 'parent', 'id', $page->id)) {
         // Moving - re-assign sortorder
         $page->sortorder = page_get_next_sortorder($page->parent, $page->courseid);
         // Remove from old parent location
         page_remove_from_ordering($page->id);
     }
     if (!update_record('format_page', $page)) {
         error(get_string('couldnotupdatepage', 'format_page'));
     }
 } else {
     // Creating new
     $page->sortorder = page_get_next_sortorder($page->parent, $page->courseid);
     if (!($page->id = insert_record('format_page', $page))) {
         error(get_string('couldnotinsertnewpage', 'format_page'));
     }
 }
 if ($returnaction) {
     // Return back to a specific action
     redirect($PAGE->url_build('page', $page->id, 'action', $returnaction));
 } else {