** recentcomment.inc.php [#i44d431a] |RIGHT:100|LEFT:360|c |~サマリ|ページ内の最近のコメントを抽出・ソート| |~リビジョン|0.03| |~対応バージョン|1.4.4-1.4.6rc| |~投稿者|[[Cue]]| |~投稿日|&new{2005-06-02 (木) 17:41:56};| **概要 [#a2e78b28] #pccomentをreply付きで運用している場合、短時間に多数のコメントが寄せられると時系列が追い難くなるので作りました。~ このような状況になるのは稀だと思いますが…。 **ライセンス [#b5fcf7c3] GPLでお願いします。 **インストール [#le02b127] +ダウンロードしたファイルを plugin ディレクトリに配置 +InterWikiName に以下のようなエントリを追加 -[./?cmd=recentcomment&page=$1 RecentComment] **使い方 [#f6427f03] 適当なページに以下のようなリンクを設置します。 [[新着コメントを参照>RecentComment:参照したいコメントページ名]] **コメント [#m92db58d] -1.4.6rcで動作確認とっただけで何も変更はありません。 -- [[Cue]] &new{2005-07-05 (火) 17:13:12}; - 最新版の1.4.7で使用しようと思ったところ新着コメントがありませんという表示しかされませんでした。日付の表記が問題のようだったので最新版に会わせて一部変更して使わせていただきました。勝手ながら変更部分を載せさせていただきます。不都合がある場合は再編集をよろしくお願いします。 -- [[a.ohkubo]] &new{2007-10-31 (水) 15:38:08}; -- PHP5の問題?[[dev:BugTrack2/120]] -- &new{2010-09-22 (水) 22:21:15}; //#comment **ソースコード [#oc684869] 添付できませんのでソースコード張ります。 <?php // PukiWiki - Yet another WikiWikiWeb clone. // // recentcomment.inc.php // // 2005/06/01 v0.01 // とりあえず作る // // 2005/06/01 v0.02 // 対象ページのチェック追加 // 同一タイムスタンプのコメントが複数あるときの対策 // // 2005/06/02 v0.03 // 件数の表示追加 // 設定項目を作る // // // 何時間前のコメントまで表示するか(単位:時間) define('PLUGIN_RECENTCOMMENT_LIMIT', 24); // // 表示方向(降順:krsoort, 昇順:ksort) define('PLUGIN_RECENTCOMMENT_SORTFUNC', 'krsort'); // // メッセージの設定 define('PLUGIN_RECENTCOMMENT_MSG_FOUND', "%d件の新着コメントがあります\n"); define('PLUGIN_RECENTCOMMENT_MSG_NOTFOUND', "新着コメントはありません\n"); define('PLUGIN_RECENTCOMMENT_MSG_TITLE', '$1 の最近%d時間のコメント'); function plugin_recentcomment_action() { global $vars, $_title_invalidwn, $_msg_invalidiwn; $page = $vars['page']; if (!is_page($page)) { return array( 'msg'=>$_title_invalidwn, 'body'=>str_replace('$1', htmlspecialchars($page), str_replace('$2', 'WikiName', $_msg_invalidiwn)) ); } check_readable($page, false, true); $limit = 60 * 60 * PLUGIN_RECENTCOMMENT_LIMIT; $comments = $matches = array(); $lines = get_source($page); foreach($lines as $data){ if(!preg_match('/^-{1,3}.+&new\{(.+)\};$/', $data, $matches)) continue; $timestamp = strtotime($matches[1]); if(UTIME - ($timestamp - ZONETIME) <= $limit){ @$comments[$timestamp] .= preg_replace('/^-{1,3}/', '-', $data); } } eval(PLUGIN_RECENTCOMMENT_SORTFUNC . '($comments);'); $comments = explode("\n", implode('', $comments)); $count = count($comments) - 1; array_unshift($comments, $count ? sprintf(PLUGIN_RECENTCOMMENT_MSG_FOUND, $count) : PLUGIN_RECENTCOMMENT_MSG_NOTFOUND); return array( 'msg'=>sprintf(PLUGIN_RECENTCOMMENT_MSG_TITLE, PLUGIN_RECENTCOMMENT_LIMIT), 'body'=>convert_html($comments) ); } ?> **pukiwiki1.4.7に合わせての変更点 [#x74bc7fc] ソースコード中の~ if(!preg_match('/^-{1,3}.+&new\{(.+)\};$/', $data, $matches)) continue;~ 上記の部分を変更して~ if(!preg_match('/([0-9]+-[0-9]+-[0-9]+)/',$data,$matches)) continue;~ このようにしたら動作しました。~