:::

10-7 讓學生可以修改投稿文章

  1. 若是希望學生(未登入)投稿完,只有當下自己能看到的文章結果,老師則是一直都可以看得到,其他人則需要等審核通過才看得到。
  2. 先修改 class/Submission_data.phpstore() ,加個 session 來紀錄當下學生有發布或修改文章
    //取得最後新增資料的流水編號
    $id = $xoopsDB->getInsertId();
    
    $_SESSION['my_submission_data'][] = $id;
  3. update() 也要

    $_SESSION['my_submission_data'][] = $id;
    return $id;
  4. 接著就可以在 class/Submission_data.php 的 show() 中做判斷,凡是審核日期為空,沒管理權,也不在發文紀錄中,那就顯示該文尚未通過審核。
    $my_submission_data = isset($_SESSION['my_submission_data']) ? $_SESSION['my_submission_data'] : [];
    if ($review_time == '0000-00-00 00:00:00' && !Tools::chk_is_adm('', '', __FILE__, __LINE__, 'return') && !in_array($id, $my_submission_data)) {
        redirect_header($_SERVER['PHP_SELF'], 3, "該文章尚未通過審核,無法觀看");
    }
  5. 先修改templates\op_submission_data_show.tpl,在工具列部份加入修改文章的按鈕(當文章還沒審核,並且式自己文章的時候)
  6. op 值設成 submission_data_edit 才會跑修改流程,記得將主題編號 submission_id 和文章編號 id 也要送出。
    <div class="text-center">
        <{if $smarty.session.submission_adm|default:false}>
            ...略...
        <{elseif !$review_time && $id|in_array:$smarty.session.my_submission_data}>
            <a href="index.php?op=submission_data_edit&submission_id=<{$submission_id}>&id=<{$id}>" class="btn btn-warning"><i class="fa-solid fa-pen-to-square"></i> 修改投稿內容</a>
        <{/if}>
    </div>
  7. 修改 class/Submission_data.php create(),檔案上傳部份修改一下 set_dir() 子目錄設定,如此修改時才能看到正確圖片。
    //submission_data 編輯表單
    public static function create($submission_id, $id = '')
    {
        ...略...
    
        //上傳表單
        $TadUpFiles = new TadUpFiles("submission");
        if ($id) {
            $TadUpFiles->set_col("submission_data_id", $id);
            $TadUpFiles->set_dir('subdir', "/{$submission_id}/{$id}");
        }
  8. 接著修改update(),主要就是表單送出後,接收到$_POST變數時,也需要做投稿密碼檢查。
  9. 另外最後的更新時間 $_POST['info']['latest_update'] 也記得加上
    //更新 submission_data 某一筆資料 Submission_data::update()
    public static function update($where_arr = [], $data_arr = [])
    {
        global $xoopsDB;
        // Tools::chk_is_adm('', '', __FILE__, __LINE__);
    
        $and = Tools::get_and_where($where_arr);
    
        if (!empty($data_arr)) {
            ...略...
        } else {
            $submission = Submission::get(['id' => $_POST['submission_id']]);
            if (isset($submission['info']['pass_code'])) {
                if ($submission['info']['pass_code'] != $_POST['pass_code']) {
                    redirect_header($_SERVER['HTTP_REFERER'], 3, "投稿密碼錯誤");
                }
            }
             $_POST['info']['latest_update'] = date("Y-m-d H:i:s", xoops_getUserTimestamp(time()));
    
            //XOOPS表單安全檢查
            ...略...
        }
        $xoopsDB->queryF($sql) or Utility::web_error($sql);
    
        return $where_arr['id'];
    }
  10. 修改完 index.php 的流程轉向部份也記得修改
    //更新資料
    case 'submission_data_update':
        $where_arr['id'] = $id;
        Submission_data::update($where_arr);
        header("location: {$_SERVER['PHP_SELF']}?op=submission_data_show&id=$id");
        exit;

     


:::

書籍目錄

展開 | 闔起

快速登入


https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D2088%26tbsn%3D56

計數器

今天: 812812812
昨天: 1856185618561856
總計: 8776736877673687767368776736877673687767368776736