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};
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS