2020年8月10日(月) 17:14 JST

プラグイン

jpmailプラグイン公開

  • 2007年3月18日(日) 15:47 JST
  • 投稿者:
  • 表示回数 5,041
プラグイン

Geeklog-1.4.1ではメールの文字コードがUTF-8になってしまい,サーバーの環境やメーラによっては文字化けするケースが出てきた。特にhotmailでは顕著なようだ。

lib-common.phpのコードを読んでみると,マルチバイト文字を含むメールのヘッダや本文はUTF-8でエンコードされる仕様になっている。ある意味,強引な仕様だ。

この状況を改善すべく文字コードやメールの勉強を始めたが,なかなかややこしい。「t_komuraの日記」を読むと,文字コード変換はPHPのバージョンによって対応の仕方が違うし,「超極める!PHP」の上鍵さんの記事を読むと,日本語のメールを正しく送るのは至難の業であることがよくわかる。さらにこの記事を読むと,PHPと文字コードの関係について自分がいかに無知だったかを思い知らされる。

そんなこんなで自分のようなホビープログラマには荷が重いが,ないよりはましだろうと思って,jpmailプラグインを作成した。GeeklogがUTF-8にエンコードしたヘッダや本文をデコードし,ISO-2022-JPでエンコードするだけなのだが,PHPのmb_detect_encoding()やmb_encode_mimeheader()を使わないで実装するのはかなりややこしい。

結局,エンコーディングの検出はNucleusに含まれているmb_emulatorを使い,行の折りたたみやコメントの処理は「超極める!PHP」の記事を参考にした。

XREA(PHP-5.1.4, MySQL-5.0.22)とノートPC(Windows XP PRO, PHP-5.2.1, MySQL-4.0.18)の環境では動作しているし,hotmail宛でも文字化けしていない。他の環境でもうまく動作すればよいのだが...

タグ:jpmail プラグイン

テーマエディタプラグイン 1.0.4

  • 2006年12月21日(木) 22:14 JST
  • 投稿者:
  • 表示回数 4,640
プラグイン

[tech:Geeklog]テーマエディタプラグインのバージョン1.0.4を公開した。簡易版の画像アップローダを搭載し,テーマディレクトリ下の /images ディレクトリにテーマエディタから直接画像をアップロードできるようになった。ダウンロードはこちらからどうぞ

I've released the themedit (Theme Editor) plugin 1.0.4 for [tech:Geeklog]. In this version, you can uoload image files directly to /images directories under each theme's directory. You can DOWNLOAD it from here.

タグ:テーマエディタ プラグイン

テーマエディタプラグイン 1.0.3

  • 2006年11月 7日(火) 21:56 JST
  • 投稿者:
  • 表示回数 5,116
プラグイン システムのデフォルト言語が "japanese" や "japanese_utf-8" の場合,デフォルトのテーマ名としてIvySOHOを追加するようにした。編集できるファイルの数を大幅に増やした。Ivyさんに感謝! Geeklog-1.4.1b2 にテーマエディタプラグインをインストールしてみたが,問題なく動作する。
タグ:テーマエディタ プラグイン

テーマエディタプラグイン 1.0.2

  • 2006年11月 2日(木) 22:33 JST
  • 投稿者:
  • 表示回数 4,199
プラグイン Geeklog.netの掲示板から,プレビュー時・保存時にクォーテーションマークの前に余分なバックスラッシュがつくんだけどというレスがあった。調べてみると,案の定,magic_quotes_gpc がオンになっているサーバーのようだ。Geeklog本体の COM_stripslashes() を使ってもよいけど,変数の数が多いので,array_map()と stripslashes() を使った。

これで一安心と思ってマニュアルを眺めていると,magic_quotes_runtime や magic_quotes_sybase の設定によってもエスケープされるデータソース・方法は様々に変化するらしい。特に,前者がオンの場合,データベースやテキストファイルからの入力でもクォートはバックスラッシュでエスケープされると書いてある。きちんと対応するのはかなり面倒だ。

某有名メーカーのワープロソフトの自動書式設定じゃないが,magic_quotes_gpc は小さな親切大きなお世話の典型だろう。

そういえば,メーリングリストでも,Oliverさんが「Geeklogには無駄な stripslashes()が山のようにあるから,なくせるものはなくしたら? データベースから取り出した変数に stripslashes() するのは明らかに無意味でしょ」という趣旨の発言をされていた。日ごろから自分もそう感じていたので,他の開発者の反応を楽しみしていると,「データベースから取り出した変数に stripslashes()を使う必要があるよ」というレスが返ってきた。なぜ? ひょっとして,magic_quotes_runtime = on を前提にしているのだろうか?
タグ:テーマエディタ プラグイン stripslashes php

プライベートメッセージプラグイン公開終了

  • 2006年10月 8日(日) 21:55 JST
  • 投稿者:
  • 表示回数 4,329
プラグイン 諸般の事情により,プライベートメッセージプラグインの公開を中止した。新たに KozyMessagesプラグインという名前で作り直す予定。旧プラグインからのデータインポートはサポートするので,現在使用中の方はしばらく待ってほしい。年内にはリリースする予定。
タグ:プライベートメッセージ プラグイン

テーマエディタプラグイン

  • 2006年10月 1日(日) 15:03 JST
  • 投稿者:
  • 表示回数 5,214
プラグイン [tech:Geeklog]のテーマを構成するテンプレート(*.thtml),カスケィディングスタイルシート(*.css)ファイルをオンラインで編集する[tech:テーマエディタ]である。まだ,プレビュー機能が不十分だが,それなりに使えると思う。

作っていて苦労したのは,JavaScript。食わず嫌いで勉強していないので,PHPやHTMLとの変数のやりとりがどうも難しい。テキストエリア内のキャレットの動きも,FireFoxは楽勝だが,IEは制御できていない。

当サイト(http://mystral-kk.net/filemgmt/index.php?id=13)からでもGeeklog.jpからもダウンロードできるので,試しに使ってみてほしい。
タグ:テーマエディタ プラグイン firefox ie javascript

プライベートメッセージプラグイン 1.3.3.1

  • 2006年9月 1日(金) 08:45 JST
  • 投稿者:
  • 表示回数 4,544
プラグイン バージョン 1.3.3 のアーカイブには,phpblock_pm_notifier.php が添付されていないという指摘があり,確認するとその通りだった。添付したバージョンを当サイトとGeeklog.jpにアップロードしておいたので,「 [tech:Ajax] による新着通知ができないよ」という方はお手数ですが,ダウンロードし直してください。
タグ:プライベートメッセージ プラグイン

アカウントをGeeklogで管理(2)

  • 2006年8月15日(火) 23:15 JST
  • 投稿者:
  • 表示回数 3,728
プラグイン > 以上のことを行ったつもりだが,ユーザーを新規登録したときに,PHP121側にパスワードの
> 情報がコピーされない。プラグインが呼び出されるタイミングの問題かもしれないが,まだ先
> は長そうだ。

仕事の合間にコードを読んでみると,plugin_user_create_{plugin}($uid) が呼び出された時点で $TABLES['users'] に登録されているのはユーザー名とメールアドレスだけだった。しかたないので,ユーザーがGeeklogにログインしたときに [tech:PHP121] 側で管理しているパスワード情報を読み,それが empty なら,$TABLES['users'] からパスワードをコピーすることにした。どちらも生パスワードの md5 ハッシュを取ったものなので互換性はあるはず。とはいえ,そろそろ md5 ではなく sha256 などにしてほしいかな。
タグ:php121 メッセンジャー md5 sha256

アカウントをGeeklogで管理

  • 2006年8月15日(火) 07:12 JST
  • 投稿者:
  • 表示回数 4,040
プラグイン PHP121をGeeklogのプラグインにする過程で,本来,PHP121が管理しているアカウント情報をGeeklog側で一括管理することにした。Geeklogの $_TABLES['users'] テーブルにフィールドを追加するのが一番手っ取り早いのだが,プラグイン開発者ガイドでは堅く禁止されているので,別にアカウント用のテーブルを作ることにした。

そして,Geeklog側でアカウントの作成・編集・変更が行われたときに,プラグイン側に通知してもらって必要な処理を行えばよい。そのためには,プラグインの functions.inc で,それぞれ,plugin_user_create_{plugin}($uid), plugin_user_delete_{plugin}($uid), plugin_user_changed_{plugin}($uid) 関数を実装すればよい({plugin}はプラグイン名,$uidはユーザーID)。

Geeklogにログイン・ログアウトしたときに,PHP121にもログイン・ログアウトさせるには,plugin_user_login_{plugin}($uid), plugin_user_logout_{plugin}($uid) を実装する。

このプラグインは JavaScriptも使用するので,Geeklogの <HEAD>?</HEAD>内に挿入するために,plugin_getheadercode_{plugin}() を実装する。

以上のことを行ったつもりだが,ユーザーを新規登録したときに,PHP121側にパスワードの情報がコピーされない。プラグインが呼び出されるタイミングの問題かもしれないが,まだ先は長そうだ。
タグ:php121 アカウント geeklog

PHP121インスタントメッセンジャー

  • 2006年8月13日(日) 07:09 JST
  • 投稿者:
  • 表示回数 4,736
プラグイン Paul Synnott氏の[tech:PHP121][tech:インスタントメッセンジャー]を[tech:Geeklog]のプラグインに仕立ててこのサイトにもインストールした。アカウント持っている人はログインして遊べるようにしてある。

JavaScriptとブラウザのポップアップをオンにしてからこのサイトにログインすると,自動的にPHP121にログインする。左ブロックのユーザー機能の「PHP121 Instant Messenger」か,右ブロックの「PHP121オンラインメンバ」の自分の名前をクリックすると,メッセンジャーが起動する。終了時はメッセンジャーのウィンドウを閉じるだけでOK。このサイトからログアウトすると,メッセンジャーからもログアウトする。

しばらく使ってみて支障がないようなら,Geeklog.netとGeeklog.jpに投稿し,開発者のPaulさんにもフィードバックするつもり。
タグ:php121 インスタントメッセンジャー geeklog javascript

ページナビゲーション