今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Joomla!をハックしてみる

記事の中には適当なキーワードを並べといて、そのキーワードを適切に処理するような Joomla!プラグインを作れば、記事のテンプレートができることに気づいた。ってことで、プラグインをどう作ればいいのかを、ほかのプラグインを参考にしつつ書いてみた。
プラグインのサンプルとして、JSITE_PATH/plugin/content/example.php ってファイルが最初からあるんだけど、なんか期待通りに動作してくれない。Java の printStackTrace() みたいなのはないかとぐぐってみたら、debug_backtrace() ってのがあるらしい。さっそくコードに埋め込んで出力を確認したら、やたら中途半端にしか表示してくれない。var_export(debug_backtrace()) で得られる値をレスポンスに追加してるんだけど、レスポンスが壊れる。w
どうやら、var_export()で処理してる途中にエラーが発生してるっぽい。しかたないので、配列の要素に対してひとつずつ処理するようにしてみた。

    $trace = debug_backtrace();
    foreach($trace as $t) {
        $s .= var_export($t);
    }

でもやっぱりだめ。ひとつずつ調べてみたら、配列の要素を var_export() しようとすると、4番目までが全部エラーになってた。

    $trace = debug_backtrace();
    $s = var_export($trace[0]); // エラー
    $s = var_export($trace[1]); // エラー
    $s = var_export($trace[2]); // エラー
    $s = var_export($trace[3]); // エラー
    $s = var_export($trace[4]); // 正常
    $s = var_export($trace[5]); // 正常
    $s = var_export($trace[6]); // 正常

エラーが発生すると中途半端な出力になるけど、幸いどのファイルのどこを実行してるのかって情報は得られたので、どのように呼び出されているのかは確認できた。
それにしても、Singleton パターンを使いまくりだし、global でいくつも変数を参照してるのがとても気になる。