submission_store
,會執行的物件方法是:Submission::store()
,其預設內容如下:
//新增資料到 submission Submission::store()
public static function store($data_arr = [])
{
global $xoopsDB, $xoopsUser;
Tools::chk_is_adm('', '', __FILE__, __LINE__);
//XOOPS表單安全檢查
if (empty($data_arr)) {
Utility::xoops_security_check();
$data_arr = $_POST;
}
foreach ($data_arr as $key => $value) {
$$key = Tools::filter($key, $value, 'write', self::$filter_arr);
}
//取得使用者編號
$uid = ($xoopsUser) ? $xoopsUser->uid() : 0;
$create_time = date("Y-m-d H:i:s", xoops_getUserTimestamp(time()));
$sql = "INSERT INTO `" . $xoopsDB->prefix("submission") . "` (
`title`,
`content`,
`start`,
`end`,
`info`,
`uid`,
`create_time`
) VALUES(
'{$title}',
'{$content}',
'{$start}',
'{$end}',
'{$info}',
'{$uid}',
'{$create_time}'
)";
$xoopsDB->queryF($sql) or Utility::web_error($sql);
//取得最後新增資料的流水編號
$id = $xoopsDB->getInsertId();
$TadUpFiles = new TadUpFiles("submission");
$TadUpFiles->set_col("submission_id", $id);
$TadUpFiles->set_dir('subdir', "/$id");
$TadUpFiles->upload_file('submission_files', '', '', '', '', true, false);
return $id;
}
$data_arr
Tools::chk_is_adm()
檢查權限,若是沒有傳入資料陣列,那就用 Utility::xoops_security_check()
檢查 token 後,將 $_POST
做為資料陣列 $data_arr
以便後續處理
Tools::chk_is_adm('', '', __FILE__, __LINE__);
//XOOPS表單安全檢查
if (empty($data_arr)) {
Utility::xoops_security_check();
$data_arr = $_POST;
}
Tools::filter()
過濾變數,確保可以存入資料庫,避免資料庫隱碼攻擊。
foreach ($data_arr as $key => $value) {
$$key = Tools::filter($key, $value, 'write', self::$filter_arr);
}
//取得使用者編號
$uid = ($xoopsUser) ? $xoopsUser->uid() : 0;
$create_time = date("Y-m-d H:i:s", xoops_getUserTimestamp(time()));
過濾後,可以自己設定某些變數,來強制其值,例如目前登入者的編號 $uid
,或者目前的建立時間
$sql = "INSERT INTO `" . $xoopsDB->prefix("submission") . "` (
`title`,
`content`,
`start`,
`end`,
`info`,
`uid`,
`create_time`
) VALUES(
'{$title}',
'{$content}',
'{$start}',
'{$end}',
'{$info}',
'{$uid}',
'{$create_time}'
)";
$xoopsDB->queryF($sql) or Utility::web_error($sql);
//取得最後新增資料的流水編號
$id = $xoopsDB->getInsertId();
執行後務必用 $xoopsDB->getInsertId()
取得該資料流水號,後續會用到
儲存後,取得資料流水號就可以開始處理上傳檔案的部份,TadUpFiles 詳細用法可以看這裡
if ($id) {
$TadUpFiles = new TadUpFiles("submission");
$TadUpFiles->set_col("submission_id", $id);
$TadUpFiles->set_dir('subdir', "/$id");
$TadUpFiles->upload_file('submission_files', '', '', '', '', true, false);
}
只要 set_col()
和 set_dir()
和剛剛 create()
中的設定一致即可
接著,可以輸入資料試試囉!