/**
 * Helper function to handle edit actions
 *
 * @param object $pagemenu Page menu instance
 * @param string $action Action that is being performed
 * @return boolean If return true, then a redirect will occure (in edit.php at least)
 **/
function pagemenu_handle_edit_action($pagemenu, $action = NULL)
{
    global $CFG;
    if (!confirm_sesskey()) {
        error(get_string('confirmsesskeybad', 'error'));
    }
    $linkid = required_param('linkid', PARAM_INT);
    if ($action === NULL) {
        $action = required_param('action', PARAM_ALPHA);
    }
    switch ($action) {
        case 'edit':
        case 'move':
            return false;
            break;
        case 'movehere':
            $after = required_param('after', PARAM_INT);
            pagemenu_move_link($pagemenu, $linkid, $after);
            pagemenu_set_message(get_string('linkmoved', 'pagemenu'), 'notifysuccess');
            break;
        case 'delete':
            pagemenu_delete_link($linkid);
            pagemenu_set_message(get_string('linkdeleted', 'pagemenu'), 'notifysuccess');
            break;
        default:
            error('Inavlid action: ' . $action);
            break;
    }
    return true;
}
Example #2
0
/**
 * This function makes all the necessary calls to {@link restore_decode_content_links_worker()}
 * function in order to mantain inter-activities during the restore process.
 * It's called from {@link restore_decode_content_links()}
 * function in restore process.
 *
 * @uses $CFG
 * @param object $restore Restore object
 * @return boolean
 **/
function pagemenu_decode_content_links_caller($restore)
{
    global $CFG;
    $status = true;
    if ($links = get_records_sql("SELECT l.id, l.type\n                                    FROM {$CFG->prefix}pagemenu p,\n                                         {$CFG->prefix}pagemenu_links l\n                                   WHERE p.id = l.pagemenuid\n                                     AND p.course = {$restore->course_id}")) {
        // Include all link type classes
        require_once $CFG->dirroot . '/mod/pagemenu/link.class.php';
        foreach (pagemenu_get_links() as $type) {
            $path = "{$CFG->dirroot}/mod/pagemenu/links/{$type}.class.php";
            if (file_exists($path)) {
                require_once $path;
            }
        }
        $i = 0;
        foreach ($links as $link) {
            $deleteme = true;
            if ($data = get_records('pagemenu_link_data', 'linkid', $link->id)) {
                // Call statically for speed
                if (call_user_func(array("mod_pagemenu_link_{$link->type}", 'restore_data'), $data, $restore)) {
                    $deleteme = false;
                }
            }
            if ($deleteme) {
                // Restore of data failed, link is useless
                pagemenu_delete_link($link->id);
            }
            // Do some output
            if (($i + 1) % 5 == 0) {
                if (!defined('RESTORE_SILENTLY')) {
                    echo ".";
                    if (($i + 1) % 100 == 0) {
                        echo "<br />";
                    }
                }
                backup_flush(300);
            }
            $i++;
        }
    }
    return $status;
}