*calendar2,calendar_viewerとcommentで必ず更新の衝突が起きる [#v9bf313b]

-ページ: BugTrack
-投稿者: [[109]]
-優先順位: 普通
-状態: 完了
-カテゴリー: 本体バグ
-投稿日: 2003-09-18 (木) 01:31:53
-バージョン: v1.4

**メッセージ [#n8b0e675]
 #calendar2(off)
 #calendar_viewer([[bugtest]],3)
 #comment

というページで、日記を1つ以上書いてある状態で、
コメントを書くと必ず「更新の衝突」のメッセージが出る
----
-$digest関係を見直さないと駄目ですね… -- [[ぱんだ]] &new{2003-09-18 (木) 10:51:34};
-include系(あるいは、内部でconvert_html()を呼び出す)プラグインが$digestを書き換えてしまうことがある、というのが直接の原因なので、プラグインの呼び出し前後で$digestを保存する仕掛けを考えてみました。バータリー全開 XDですが、動くことは動きます。 -- [[ぱんだ]] &new{2003-09-18 (木) 11:39:38};
 diff -u -r1.8 plugin.php
 --- plugin.php  27 Jul 2003 13:51:36 -0000      1.8
 +++ plugin.php  18 Sep 2003 02:33:52 -0000
 @@ -99,11 +99,19 @@
  //プラグイン(convert)を実行
  function do_plugin_convert($name,$args='')
  {
 +       global $digest;
 +
 +       // digestを退避
 +       $_digest = $digest;
 +
         $aryargs = ($args !== '') ? explode(',',$args) : array();
 
         do_plugin_init($name);
         $retvar = call_user_func_array('plugin_'.$name.'_convert',$aryargs);
 
 +       // digestを復元
 +       $digest = $_digest;
 +
         if ($retvar === FALSE)
         {
                 return htmlspecialchars('#'.$name.($args ? "($args)" : ''));
 @@ -116,11 +124,19 @@
  //プラグイン(inline)を実行
  function do_plugin_inline($name,$args,$body)
  {
 +       global $digest;
 +
 +       // digestを退避
 +       $_digest = $digest;
 +
         $aryargs = ($args !== '') ? explode(',',$args) : array();
         $aryargs[] =& $body;
 
         do_plugin_init($name);
         $retvar = call_user_func_array('plugin_'.$name.'_inline',$aryargs);
 +
 +       // digestを復元
 +       $digest = $_digest;
 
         if($retvar === FALSE)
         {
-PukiWiki2では、ページソースを保持するクラスを作って、digest/filemtime等の属性もオブジェクトから取得するようにしたいですね。 -- [[ぱんだ]] &new{2003-09-18 (木) 11:39:38};
-cvsに投入しました。[[cvs:plugin.php]](v1.4:r1.9) -- [[ぱんだ]] &new{2003-09-28 (日) 23:35:50};

#comment
//#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u8. HTML convert time: 0.075 sec.

OSDN