pukiwikiのアップデート作業 のソース
※※このサイトは2012年頃より更新を停止しています。※※
*pukiwikiのアップデート作業(実施日:2006-11-21) #contents **対象 -元環境:1.4.6 -アップデート:1.4.7_notb **条件 -使用サーバ環境が「LANG=ja_JP.euc」なのでUTF-8版ではなくEUC-JP版を使う。 いつかUTF-8環境に移行するときは[[このへん>http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F186]]を参照すべし。 -スキンは[[irid>http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%82%B9%E3%82%AD%E3%83%B3%2Firid]]を使う。 **実施した作業 +パッケージダウンロード +別ディレクトリでパッケージを展開 +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'), --keitai.skin.php ---navi部分が 0.Top | 1.Menu | 2.新規 | 3.編集 | 9.更新履歴 になる感じに修正。 ---携帯画面の最下部にnaviを追加する。 ---iridスキンを使うなら、上記のように編集したkeitai.skin.phpをirid配下に設置すること。 +''ソース表示用追記'' 上部のリンクに「ソース」を追加し、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'' スキンに適宜追記 +ついでに必要であれば下記の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とデータディレクトリを移動。 +''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 必要であればやる。 +''ディレクトリ移動'' 元環境のログディレクトリやデータディレクトリを新環境に移して、新環境と元環境を入れ替え。 **追加作業1:スパム書き込み対策(2007-05-04) このごろ海外からのスパム書き込みがやたら増えてきたので、下記を参考にスパムフィルタのライブラリを導入してみた。 [[参考:ARK-Web SandBox Wiki - PukiWiki/Akismetによるspam(スパム)防止機能>http://www.ark-web.jp/sandbox/wiki/190.html]] +''WordPress.com から API-key を入手する'' http://wordpress.com/api-keys/ ここでユーザ登録をする。英語だけど頑張って読む。 +''akismetのクラスライブラリを入手する'' [[入手元ページ>http://miphp.net/blog/view/php4_akismet_class]] akismet.class.zip をダウンロードするだけ。作成/配布に携わる方々に感謝。 ちなみに上記はPHP4用。PHP5だったらまた別のを用意するべきだはず。 +''ARK-Web SandBox Wikiさんのページからpukiwiki用ライブラリを入手する'' 俺が入手したのは、新しい方の「akismet_filter.php.1.2」。 [[ダウンロードリンクのあるページ>http://www.ark-web.jp/sandbox/wiki/190.html]] 作者の 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/編集者制限を掛ける>http://tobysoft.net/wiki/index.php?Wiki%2FPukiWiki%2FTips%2F%CA%D4%BD%B8%BC%D4%C0%A9%B8%C2%A4%F2%B3%DD%A4%B1%A4%EB#g0a808e3]]を参考にして対処。 情報元の皆様、非常に助かります。ありがとうございます。 +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) { *なにかコメントがありましたらこちらから #comment(below) - スパム書き込みがあったので削除。 -- [[kimita]] &new{2008-06-29 (日) 01:09:33}; - スパム書き込みがあったので削除。 -- [[kimita]] &new{2008-06-28 (土) 09:22:49}; - スパム書き込みがあったので削除。 -- [[kimita]] &new{2007-09-20 (木) 03:25:10};