trackerプラグインの入力フォームからファイル添付ができなくなっている

メッセージ

現在のtracker.inc.php のコードには、 selectやtextfieldとといった形式の他に、 「file」というファイルの添付フォームを trackerの入力フォームに提供する形式が存在しています。

これはページの新規作成時に attach.inc.php を呼び出して、 指定されたファイルを、新規のページに添付する動作を行ってますが、 現在の処理では、ページの作成の前にファイルの添付処理を行っています。

そのため、先日のBugTrack/654での修正による、 存在しないページへのファイルの添付処理を制限により、 この機能を利用時に(trackerの入力フォームの形式のひとつに、 「file」形式にあたるフィールドがひとつでも定義すると) attach.inc.php の制限によるRuntime errorが生じます。

ぱんださんのページでも紹介されてはいないので*1、どの程度 利用者がいるのか定かではありませんが、 attach.inc.php の制限を尊重しながら trackerの上記機能を有効にするために、 以下のような修正案を考えてみました。

(修正案の概略)

  1. ファイルの添付処理の前に投稿ページを先に作成させます。
  2. 各項目の処理を行います(foreach~の部分)
  3. 投稿内容の書き込み時には、直前に作成したページのタイムスタンプを変更しないようにオプションで指定します。(foreach~後のpage_write()の部分)

(コード修正案)

 function plugin_tracker_action()
 {
   :
   $fields = plugin_tracker_get_fields($page,$refer,$config);

+    // 書き込み : attach.inc.php のセキュリティ対策の回避
+    // 空のコンテンツを書き込んでページを先に作成する
+    page_write($page," ");

   foreach (array_keys($fields) as $key)
   { 
     :
   }

// 書き込み
- page_write($page,join('',$postdata));
+ page_write($page,join('',$postdata),TRUE);

(関連)


trackerプラグインから新規に追加したページが recent プラグインにリストアップされない


*1 それゆえ優先順位を低にしました
*2 ところでpukiwikiの動作にCVSは関わりませんよね。 ageやsageといった挙動はpukiwikiにあるのかな?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-11-30 (火) 22:34:02
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.143 sec.

OSDN