function xmldb_block_sharing_cart_upgrade($oldversion = 0)
{
    global $CFG, $THEME, $DB;
    $result = true;
    if ($oldversion < 2009020300) {
        $result = execute_sql("ALTER TABLE `{$CFG->prefix}sharing_cart`\n            ADD `file` VARCHAR(255) NOT NULL DEFAULT '' AFTER `time`");
        if ($result) {
            require_once dirname(__FILE__) . '../sharing_cart_table.php';
            if ($shared_items = $DB->get_records('sharing_cart')) {
                foreach ($shared_items as $shared_item) {
                    $shared_item->file = sharing_cart_table::gen_zipname($shared_item->time);
                    update_record('sharing_cart', $shared_item);
                }
            }
        }
    }
    if ($oldversion < 2009040600) {
        $result = execute_sql("CREATE TABLE `{$CFG->prefix}sharing_cart_plugins` (\n            `id`     INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,\n            `plugin` VARCHAR(32)      NOT NULL,\n            `user`   INT(10) UNSIGNED NOT NULL,\n            `data`   TEXT             NOT NULL\n        )");
    }
    return $result;
}
<?php

require_once '../../config.php';
require_once './sharing_cart_table.php';
//error_reporting(E_ALL);
global $DB;
require_login();
$shared_id = required_param('id', PARAM_INT);
$return_to = urldecode(required_param('return'));
$insert_to = urldecode(optional_param('to'));
// 共有アイテムが存在するかチェック
$shared = sharing_cart_table::get_record_by_id($shared_id) or print_error('err_shared_id', 'block_sharing_cart', $return_to);
// 自分が所有する共有アイテムかチェック
$shared->user == $USER->id or print_error('err_capability', 'block_sharing_cart', $return_to);
// 挿入先アイテムIDからソート順を取得 (挿入先未指定=最後尾へ)
$dest_sort = 0;
if (!empty($insert_to) and $target = $DB->get_record('sharing_cart', 'id', $insert_to, 'tree', $shared->tree, 'user', $USER->id)) {
    $dest_sort = $target->sort;
} else {
    $max_sort = get_field_sql("SELECT MAX(sort) FROM {$CFG->prefix}sharing_cart\n            WHERE user = '******' AND tree = '{$shared->tree}'");
    $dest_sort = $max_sort + 1;
}
// 挿入先以降のレコードの`sort`をインクリメントしてスペースを確保
$sql = "UPDATE {$CFG->prefix}sharing_cart SET sort = sort + 1\n            WHERE user = '******' AND tree = '{$shared->tree}'\n            AND sort >= {$dest_sort}";
execute_sql($sql, FALSE);
// 目的のアイテムを移動
$shared->sort = $dest_sort;
sharing_cart_table::update_record($shared) or print_error('err_move', 'block_sharing_cart', $return_to);
//if (headers_sent()) die;
redirect($return_to);
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<?php 
require_once '../../config.php';
//error_reporting(E_ALL);
require_once './shared/SharingCart_Restore.php';
require_once './sharing_cart_table.php';
$sc_id = required_param('id', PARAM_INT);
$course_id = required_param('course', PARAM_INT);
$section_id = required_param('section', PARAM_INT);
$return_to = urldecode(required_param('return'));
// 共有アイテムが存在するかチェック
$sharing_cart = sharing_cart_table::get_record_by_id($sc_id) or print_error('err_shared_id', 'block_sharing_cart', $return_to);
// 自分が所有する共有アイテムかチェック
$sharing_cart->user == $USER->id or print_error('err_capability', 'block_sharing_cart', $return_to);
// ZIPファイル名取得
$zip_name = $sharing_cart->file;
try {
    // リストアオブジェクト (※ $restore は Moodle グローバル変数として予約されているので使用不可)
    $worker = new SharingCart_Restore($course_id, $section_id);
    // サイレントモード
    $worker->setSilent();
    // 設定開始
    $worker->beginPreferences();
    // ZIPファイル名設定
    $worker->setZipName($zip_name);
    // 設定完了
    $worker->endPreferences();
    // 設定完了
    $worker->endPreferences();
    // バックアップ実行
    $worker->execute();
    // モジュールの名前とZIPとの対応などをDBに登録 (ブロック表示で使用)
    $sharing_cart = new stdClass();
    $sharing_cart->userid = $USER->id;
    $sharing_cart->name = addslashes($module->name);
    $sharing_cart->icon = addslashes($cm->icon);
    $sharing_cart->text = addslashes($module->name == 'label' ? $cm->extra : $cm->name);
    $sharing_cart->time = $worker->getUnique();
    // ZIP名生成に使用したユニーク値 (=タイムスタンプ)
    $sharing_cart->contextid = $worker->getContextID();
    $sharing_cart->fileid = $worker->getFileID();
    $sharing_cart->sort = 0;
    sharing_cart_table::insert_record($sharing_cart);
    if ($worker->succeeded()) {
        // 成功:リダイレクト
        redirect($return_to);
    } else {
        // 失敗:「続行」画面
        print_continue($return_to);
    }
} catch (SharingCart_CourseException $e) {
    //print_error('err_course_id', 'block_sharing_cart', $return_to);
    error((string) $e);
    // デバッグ用に詳細メッセージを表示
} catch (SharingCart_SectionException $e) {
    //print_error('err_section_id', 'block_sharing_cart', $return_to);
    error((string) $e);
    // デバッグ用に詳細メッセージを表示
<?php

require_once '../../config.php';
require_once './sharing_cart_table.php';
//error_reporting(E_ALL);
require_login();
$shared_id = required_param('id', PARAM_INT);
$return_to = urldecode(required_param('return', PARAM_LOCALURL));
// 続行可能な通知メッセージがあれば直接リダイレクトせずにそれを表示
$notifications = array();
// 共有アイテムが存在するかチェック
$shared = sharing_cart_table::get_record_by_id($shared_id) or print_error('err_shared_id', 'block_sharing_cart', $return_to);
// 自分が所有する共有アイテムかチェック
$shared->userid == $USER->id or print_error('err_capability', 'block_sharing_cart', $return_to);
//    $zip_path = make_user_directory($USER->id, true).'/'.$shared->file;
// ZIP削除
//$oldmask = umask(0);
//chmod($zip_path, 0666);
//  unlink($zip_path)
//       or $notifications[] = get_string('err_delete', 'block_sharing_cart');
//umask($oldmask);
// DB削除
sharing_cart_table::delete_record($shared) or print_error('err_delete', 'block_sharing_cart', $return_to);
//if (headers_sent()) die;
if (count($notifications)) {
    notice(implode('<br />', $notifications), $return_to);
} else {
    redirect($return_to);
}
    // 削除実行
    // SQLインジェクション対策のためintvalでフィルタリング
    $delete_ids = array_map('intval', array_keys($delete)) or print_error('err_shared_id', 'block_sharing_cart', $return_to);
    $items = $DB->get_records_select('sharing_cart', 'user = '******' AND ' . 'id IN (' . implode(',', $delete_ids) . ')') or print_error('err_shared_id', 'block_sharing_cart', $return_to);
    $user_dir = make_user_directory($USER->id, true);
    // ファイル削除に成功したIDのみをDB削除に渡す
    $delete_ids = array();
    foreach ($items as $id => $item) {
        if (@unlink($user_dir . '/' . $item->file)) {
            $delete_ids[] = $id;
        } else {
            $notifications[] = get_string('err_delete', 'block_sharing_cart');
        }
    }
    delete_records_select('sharing_cart', 'id IN (' . implode(',', $delete_ids) . ')');
    sharing_cart_table::renumber($USER->id);
    if (count($notifications)) {
        notice(implode('<br />', $notifications), $return_to);
    } else {
        redirect($return_to);
    }
    exit;
}
$title = get_string('bulkdelete', 'block_sharing_cart');
$navlinks = array();
if ($course_id != SITEID) {
    $navlinks[] = array('name' => get_field('course', 'shortname', 'id', $course_id), 'link' => $CFG->wwwroot . '/course/view.php?id=' . $course_id, 'type' => 'title');
}
$navlinks[] = array('name' => $title, 'link' => '', 'type' => 'title');
print_header_simple($title, '', build_navigation($navlinks));
print_heading($title);