自作プラグイン/recentcomment.inc.php
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
** 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で動作確認とっただけで何も変更はありません。 -- [...
- 最新版の1.4.7で使用しようと思ったところ新着コメントがあ...
-- PHP5の問題?[[dev:BugTrack2/120]] -- &new{2010-09-22 ...
//#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件の新着コメ...
define('PLUGIN_RECENTCOMMENT_MSG_NOTFOUND', "新着コメン...
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, $ma...
$timestamp = strtotime($matches[1]);
if(UTIME - ($timestamp - ZONETIME) <= $limit){
@$comments[$timestamp] .= preg_replace('/^-{1,3}/', '...
}
}
eval(PLUGIN_RECENTCOMMENT_SORTFUNC . '($comments);');
$comments = explode("\n", implode('', $comments));
$count = count($comments) - 1;
array_unshift($comments, $count ? sprintf(PLUGIN_RECENT...
return array(
'msg'=>sprintf(PLUGIN_RECENTCOMMENT_MSG_TITLE, PLUGIN_...
'body'=>convert_html($comments)
);
}
?>
**pukiwiki1.4.7に合わせての変更点 [#x74bc7fc]
ソースコード中の~
if(!preg_match('/^-{1,3}.+&new\{(.+)\};$/', $data, $m...
上記の部分を変更して~
if(!preg_match('/([0-9]+-[0-9]+-[0-9]+)/',$data,$matc...
このようにしたら動作しました。~
終了行:
** 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で動作確認とっただけで何も変更はありません。 -- [...
- 最新版の1.4.7で使用しようと思ったところ新着コメントがあ...
-- PHP5の問題?[[dev:BugTrack2/120]] -- &new{2010-09-22 ...
//#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件の新着コメ...
define('PLUGIN_RECENTCOMMENT_MSG_NOTFOUND', "新着コメン...
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, $ma...
$timestamp = strtotime($matches[1]);
if(UTIME - ($timestamp - ZONETIME) <= $limit){
@$comments[$timestamp] .= preg_replace('/^-{1,3}/', '...
}
}
eval(PLUGIN_RECENTCOMMENT_SORTFUNC . '($comments);');
$comments = explode("\n", implode('', $comments));
$count = count($comments) - 1;
array_unshift($comments, $count ? sprintf(PLUGIN_RECENT...
return array(
'msg'=>sprintf(PLUGIN_RECENTCOMMENT_MSG_TITLE, PLUGIN_...
'body'=>convert_html($comments)
);
}
?>
**pukiwiki1.4.7に合わせての変更点 [#x74bc7fc]
ソースコード中の~
if(!preg_match('/^-{1,3}.+&new\{(.+)\};$/', $data, $m...
上記の部分を変更して~
if(!preg_match('/([0-9]+-[0-9]+-[0-9]+)/',$data,$matc...
このようにしたら動作しました。~
ページ名: