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;