コード例 #1
0
		<form action="transfer.php" method="post">
		<div style="display:none;">
			<input type="hidden" name="repository" value="' . $repository . '" />
			<input type="hidden" name="usercourse" value="' . $usercourse . '" />
			<input type="hidden" name="sessionkey" value="' . $sessionkey . '" />
		</div>
		<table>';
    foreach ($materials as $id => $fields) {
        // フィールドを分解
        // @see /course/format/repository/RepositoryMaterial.php # download()
        list($sha1, $type, $icon, $text) = explode('|', $fields, 4);
        // ダウンロードボタンがクリックされたら、教材ファイルをHTTP通信により取得
        if (!empty($downloads[$id])) {
            $user_dir = make_user_directory($USER->id);
            $temp_dir = make_upload_directory('temp/download', false);
            $zip_name = SharingCart_Repository::getDownloadName($id);
            if (!is_dir($user_dir) || !is_dir($temp_dir)) {
                throw new SharingCart_RepositoryException('Directory creation failure');
            }
            if (is_file($user_dir . '/' . $zip_name)) {
                throw new SharingCart_RepositoryException('File already exists');
            }
            $response_header = FileTransfer::downloadFile($temp_dir . '/' . $zip_name, $repository_wwwroot . '/course/format/repository/material.php', array('mode' => 'transfer', 'material' => $id, 'sessionkey' => $sessionkey));
            // ダウンロードしたファイルのハッシュを比較してダウンロード成功かチェック
            if (sha1_file($temp_dir . '/' . $zip_name) == $sha1) {
                if (!rename($temp_dir . '/' . $zip_name, $user_dir . '/' . $zip_name)) {
                    throw new SharingCart_RepositoryException('File rename failure');
                }
                $sharing_cart = new stdClass();
                $sharing_cart->user = $USER->id;
                $sharing_cart->name = $type;