pukiwikiのアップデート作業 のバックアップ(No.6)
※※このサイトは2012年頃より更新を停止しています。※※
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- pukiwikiのアップデート作業 へ行く。
pukiwikiのアップデート作業(実施日:2006-11-21)
対象
- 元環境:1.4.6
- アップデート:1.4.7_notb
条件
実施した作業
- パッケージダウンロード
- 別ディレクトリでパッケージを展開
- pukiwiki.ini.php
元とのdiffを参照しながら適宜修正 - 携帯向け修正
- pukiwiki.ini.php
以前使ってたauのWAP2.0対応端末からのアクセスをi-modeと同等に扱うように下記の記述を加える。- $agents = array の内部に
array('pattern'=>'#^(Vodafone)/([0-9\.]+)#', 'profile'=>'keitai'), array('pattern'=>'#^(SoftBank)/([0-9\.]+)#', 'profile'=>'keitai'), array('pattern'=>'#^KDDI#', 'profile'=>'keitai'),
- $agents = array の内部に
- keitai.skin.php
- navi部分が
0.Top | 1.Menu | 2.新規 | 3.編集 | 9.更新履歴
になる感じに修正。 - 携帯画面の最下部にnaviを追加する。
- iridスキンを使うなら、上記のように編集したkeitai.skin.phpをirid配下に設置すること。
- navi部分が
- pukiwiki.ini.php
- ソース表示用追記
上部のリンクに「ソース」を追加し、sourceコマンドで表示中のページのHTML整形前のテキスト生データを出力するようにした。
以下、変更箇所- lib/html.php
61行目付近 - 追加:$_LINK['source'] = "$script?cmd=source&page=$r_page"; 86行目付近 - 追加:$link_source = & $_LINK['source'];
- skin/pukiwiki.skin.php
114行目付近 - 追加: <?php _navigator('source') ?> |
- ja.lng.php
131行目付近 - 追加:$_LANG['skin']['source'] = 'ソース'; // HTML整形前テキスト表示
- skin/pukiwiki.skin.php
スキンに適宜追記
- lib/html.php
- ついでに必要であれば下記のmetaタグもpukiwiki.skin.phpに付け加える。
<meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Cache-Control" content="no-cache" /> <?php if ( $nofollow ) { ?> <meta name="robots" content="NOINDEX,NOFOLLOW" /><?php } ?>
- プラグイン
calendar_viewer にちょいと。
「<<前の5件」とか「次の5件>>」っていうリンクは、標準のプラグインだとリストの一番最後にだけ出る。
これをリストの一番上に出したいなと思ったのでちょっとソースに手を加える。
下記、変更箇所。- 対象ファイル:calendar_viewer.inc.php,v 1.34 2005/06/05
- いじるところはfunction plugin_calendar_viewer_convert()。
- 見るところは「// Include start」以降。
- A)
150行目過ぎぐらい、コメントで「// $limit_page の件数までインクルード」とあるところの while{〜〜〜} の塊りが、表示している記事を読み込んでいるところになる。 - B)
260行目過ぎぐらい、コメントで「// ナビゲート用のリンクを末尾に追加」とあるところの if{〜〜〜} の塊りが、「<<前の5件」「次の5件>>」というリンクを出力しているところになる。 - 元々のソースでは上から順序良く$return_bodyにつなげていってるだけ。
- なので、A)で
$return_body .= $head . $body;
となっているところを↓↓$tmp_return_body .= $head . $body;
とでもしておく。 - そして、B)の
$return_body .=
となっているところを↓↓$link_prev_and_next .=
とでもしておく。 - このfunction plugin_calendar_viewer_convert()の最後で
return $return_body;
の直前に$return_body .= $link_prev_and_next . $tmp_return_body . $link_prev_and_next;
と書き加える。
- kifubbs
plugin本体とcssとデータディレクトリを移動。
- 対象ファイル:calendar_viewer.inc.php,v 1.34 2005/06/05
- index.php
自分スクリプトをインクルード - iridスキン適用
pukiwiki.skin.phpとkeitai.skin.phpだけ新しいのと差し替えて、ディレクトリ丸ごと入れ替え。
- 必要であればpukiwiki.skin.phpに下記のmetaタグの付け加え
<meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Cache-Control" content="no-cache" /> <?php if ( $nofollow ) { ?> <meta name="robots" content="NOINDEX,NOFOLLOW" /><?php } ?>
- mb_send_mail関数のバグ対応
- lib/mail.php
必要であればやる。
- lib/mail.php
- ディレクトリ移動
元環境のログディレクトリやデータディレクトリを新環境に移して、新環境と元環境を入れ替え。
追加作業1:スパム書き込み対策(2007-05-04)
このごろ海外からのスパム書き込みがやたら増えてきたので、下記を参考にスパムフィルタのライブラリを導入してみた。
参考:ARK-Web SandBox Wiki - PukiWiki/Akismetによるspam(スパム)防止機能
- WordPress.com から API-key を入手する
http://wordpress.com/api-keys/
ここでユーザ登録をする。英語だけど頑張って読む。 - akismetのクラスライブラリを入手する
入手元ページ
akismet.class.zip をダウンロードするだけ。作成/配布に携わる方々に感謝。
ちなみに上記はPHP4用。PHP5だったらまた別のを用意するべきだはず。 - ARK-Web SandBox Wikiさんのページからpukiwiki用ライブラリを入手する
俺が入手したのは、新しい方の「akismet_filter.php.1.2」。
ダウンロードリンクのあるページ
作者の Akio KONUMA さんに感謝。 - 取得ファイル中の必要箇所書き換え
- 入手したAPI-keyの部分を、上記のダウンロードページを参考にして書き加え。
- pukiwikiの lib/plugin.php に必要記述を書き加え。
- 入手/変更済みの各種ファイルをアップロード
lib/plugin.php
lib/akismet.class.php
lib/akismet_filter.php
追加作業2:スパム書き込み対策(2007-05-06)
上記の対応をしたら、今度はスパマーがMenuBarを直接書き換えやがった。
しかもタイムスタンプの変更しないで。いやらしいねぇ。
そこで、ページ編集の権限制限を施すことに。
しかーし。うちのサーバはPHPがCGIで動作してるとか何とかで、素直にPHPのBASIC認証を使うことが出来ない。
そこで、TOBY SOFT wiki:Wiki/PukiWiki/Tips/編集者制限を掛けるを参考にして対処。
情報元の皆様、非常に助かります。ありがとうございます。
- index.php をコピーして edit.php を作る
- .htaccess で edit.php にBasic認証を掛ける (下記参照)
- edit.php 内に、define('EDIT_OK','yes'); を記述
- lib/auth.php の中の function basic_auth の中の
if (empty($user_list)) return TRUE; // No limit
の行をif (empty($user_list)){ return TRUE; // No limit } elseif ( mb_ereg_match( "^ほげほげ", $target_str)) { // 「ほげほげ」のところは、認証制限の対象に // したくないページのキーワードを入れるとよい return TRUE; // No limit }
として、さらに下記の$auth_flag = FALSE; if(defined('EDIT_OK') and isset($_SERVER['REMOTE_USER'])) { $_SERVER['PHP_AUTH_USER'] = $_SERVER['REMOTE_USER']; $_SERVER['PHP_AUTH_PW'] = 'pass'; }
を追加。 - pukiwiki.ini.php の $auth_user 定義ではパスワードをすべて 'pass' にしておく
もちろん実際のパスワードは、edit.php のBasic認証で設定したものを入力する。 - ib/init.php に下記の行頭に「+」がある箇所を追加。
/// 280行目ぐらい $arg = input_filter($arg); // \0 除去 +if (!defined('EDIT_OK') && ereg('^cmd=edit&', $arg)) { + pkwk_headers_sent(); + $parse_url = parse_url($script); + $script_url = $parse_url['pass']; + header('Location: ' . $script_url . 'edit.php?' . $arg); + exit; +} // unset QUERY_STRINGs foreach (array('QUERY_STRING', 'argv', 'argc') as $key) {