:::
主內容區域
10-7 讓學生可以修改投稿文章
- 若是希望學生(未登入)投稿完,只有當下自己能看到的文章結果,老師則是一直都可以看得到,其他人則需要等審核通過才看得到。
- 先修改
class/Submission_data.php的store(),加個 session 來紀錄當下學生有發布或修改文章//取得最後新增資料的流水編號 $id = $xoopsDB->getInsertId(); $_SESSION['my_submission_data'][] = $id; -
update()也要$_SESSION['my_submission_data'][] = $id; return $id; - 接著就可以在
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, "該文章尚未通過審核,無法觀看"); } - 先修改
templates\op_submission_data_show.tpl,在工具列部份加入修改文章的按鈕(當文章還沒審核,並且式自己文章的時候) 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>- 修改
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}"); } - 接著修改
update(),主要就是表單送出後,接收到$_POST變數時,也需要做投稿密碼檢查。 - 另外最後的更新時間
$_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']; } - 修改完
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;
10-6 讓老師可以審核學生文章