calendar2,calendar_viewerとcommentで必ず更新の衝突が起きる

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

メッセージ

#calendar2(off)
#calendar_viewer([[bugtest]],3)
#comment

というページで、日記を1つ以上書いてある状態で、 コメントを書くと必ず「更新の衝突」のメッセージが出る


  • $digest関係を見直さないと駄目ですね… -- ぱんだ 2003-09-18 (木) 10:51:34
  • include系(あるいは、内部でconvert_html()を呼び出す)プラグインが$digestを書き換えてしまうことがある、というのが直接の原因なので、プラグインの呼び出し前後で$digestを保存する仕掛けを考えてみました。バータリー全開 XDですが、動くことは動きます。 -- ぱんだ 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等の属性もオブジェクトから取得するようにしたいですね。 -- ぱんだ 2003-09-18 (木) 11:39:38
  • cvsに投入しました。cvs:plugin.php(v1.4:r1.9) -- ぱんだ 2003-09-28 (日) 23:35:50

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2003-09-28 (日) 23:35:50
Site admin: PukiWiki Development Team

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

OSDN