Pukiwiki プラグイン calendar2 の改造

2006.5.26 手島
 

概要

Pukiwiki のプラグイン calendar2 で作成したページに閲覧制限をかけた場合、表示されたカレンダーの月移動を行うことで当日および各月1日の内容をパスワード無しで閲覧されてしまう。これは「当日分ページを表示する機能」によるものであり、月移動の際にこの機能を抑制する(無効にする)ことができないのを原因としている。

したがってこのページでは、プラグインを直接編集することで「当日分ページを表示する機能」を無効にする方法について紹介する。なお、この方法によってどの様な障害が生じても保障はしないのでその点についてはご了承願いたい。

 

方法

 
  • 「当日分ページを表示する機能」の内、実際に当日分ページの出力を行っている箇所(コード)を削除する。
  • 副作用として、「当日分ページを表示する機能」が一切使えなくなる。
 
 

作業内容

サーバに PukiWiki を設置しているユーザでログインしてから作業を行う。
(以下、既に PukiWiki フォルダに移動しているものとする)

まず編集前にプラグイン calendar2 のオリジナルバックアップを取っておく。

$ cp plugin/calendar2.inc.php plugin/calendar2.inc.php.org

次にプラグイン calendar2 の記述されたファイル calendar2.inc.php を編集する。

$ vi plugin/calendar2.inc.php

編集内容は下記と同じ箇所コメントアウトするだけである。

	if ($today_view) {
//=====================================================================================
//  Comment out by Webmaster
//=====================================================================================
//		$tpage = $prefix . sprintf('%4d-%02d-%02d', $today['year'],
//			$today['mon'], $today['mday']);
//		$r_tpage = rawurlencode($tpage);
//		if (is_page($tpage)) {
//			$_page = $vars['page'];
//			$get['page'] = $post['page'] = $vars['page'] =  $tpage;
//			$str = convert_html(get_source($tpage));
//			$str .= '<hr /><a class="small" href="' . $script .
//				'?cmd=edit&amp;page=' . $r_tpage . '">' .
//				$_calendar2_plugin_edit . '</a>';
//			$get['page'] = $post['page'] = $vars['page'] = $_page;
//		} else {
//			$str = sprintf($_calendar2_plugin_empty,
//				make_pagelink(sprintf('%s%4d-%02d-%02d', $prefix,
//				$today['year'], $today['mon'], $today['mday'])));
//		}
//=====================================================================================
		$ret .= '  </td>' . "\n" .
			'  <td valign="top">' . $str . '</td>' . "\n" .
			' </tr>'   . "\n" .
			'</table>' . "\n";
	}
	return $ret;
}

編集済みのプラグインファイルはこちら。

 
 

改造済 calendar2 のテスト

#calendar2(":calendar2")
<< 2018.9 >>
[:calendar2]
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
:calendar2/2018-09-24?は空です。
 

添付ファイル: filecalendar2.inc.php 1155件 [詳細]