SecurityImage 3.0.0

2006/03/10 2006/03/10

SecurityImage 3.0.0がrcが外れて正式版になったので、また入れてみました。

今回は設定画面の表示が化け化けにならなかったので色々設定を確認してみました。

前回入れた時に背景が選べないと書きましたが、どうも画像表示のコアモジュールが3種類に分かれていて設定画面で好きなのを使えるようになっており、デフォルトが選べない版(hncaptcha)だったからという事が今回分かりました。
で、ver2.2.5で使われていたコアモジュールは何かというとcoreという名前の物でした。

これに切り換えた所、Ver2.2.5と同じ設定画面が出てきました。
が、なぜか画像が表示されません。
またTrueTypeフォントだけが表示されない状態。
ただ、他のコアモジュールではTrueTypeは表示されているのでどうもcoreだけの問題っぽい。

ちう事で調べてみた所、原因判明。
設定項目の_SECURITY_IMAGES_FONTS_CHOICEには『Array』と入っていてなぜか書き換えられなかったを変に思って、設定書き出ししている処理を覗いてみました。
joomla/administrator/components/com_securityimages/pluginsA/core/1.1/adminpanel.phpがその処理ですが、
394行目に

$config .= "\$securityimages_fontsarray =array(\"garamond.ttf\", \"admono.ttf\",\"aajax.ttf\");\n";

というな記述で出力されています。
要は配列変数で3フォントを強制的に定義しているようです。書き換えられない理由はこれで判明。
で、次に画像生成時ですが、
joomla/components/com_securityimages/plugins/core/1.1/imageGenerator.phpを見てみると、
146〜159行目に

function getRandomTrueTypeFont() {
        global $securityimages_fontsarray, $fullPathToFont;
        srand((float) microtime() * 10000000);
        $item = array_rand(explode(‘,’,$securityimages_fontsarray));
        $fontsArray = explode(‘,’,$securityimages_fontsarray);
        return $fullPathToFont.$fontsArray[$item];
}

function getTrueTypeFont() {
        global $securityimages_fontsarray, $fullPathToFont;
        $fontsArray = explode(‘,’,$securityimages_fontsarray);
        return $fullPathToFont.$fontsArray[0];
}

てな感じでフォントパスの設定を行なっています。
設定画面からフォントをランダムに選択するかどうかの設定内容によって、どちらかが呼び出されるようです。
がこれを見てみると、共に$securityimages_fontsarrayをexplode(文字列中にカンマ毎に区切って配列に格納)しています。
あれ? 設定書き出してる時に既に配列に格納してたんじゃ…
という事でこれが原因でした。

修正は、joomla/administrator/components/com_securityimages/pluginsA/core/1.1/adminpanel.phpのみです。
まず、33行目を

saveConfig($option, $userSelectionBigBackground, $userSelectionSmallBackground,$securityimages_usegrille, $textLength, $securityimages_userandomtextlength, $securityimages_randomtextlengthmin,$securityimages_randomtextlengthmax, $securityimages_textRgbMin, $securityimages_textRgbMax, $useRandomSize, $textFontSizeDefualt, $textFontSizeMin, $textFontSizeMax, $useRandomFont, $securityimages_textUseExtendedCharacterSet, $alignementStrategy, $useRandomTextAngle, $textAngleMin, $textAngleMax, $cleanupTable, $securityImagesLogActive, $securityImagesLogAll, $securityImagesNotifyAdmin, $securityImagesLogSize, $securityImagesAdminEmail, $securityImagesoutput, $securityImagesMaxRetry, $securityImagesVersion, $securityImagesLink,$securityimages_fontsarray);

てな感じで最後に追加し(ていうかフォームの入力全く無視ってどういう事?)、
349行目のsaveConfig自体の定義の部分も同様に修正します。
で、394行目を

if ( $securityimages_fontsarray == ” )
    $config .= "\$securityimages_fontsarray = \"garamond.ttf,admono.ttf,aajax.ttf\";\n";
else
    $config .= "\$securityimages_fontsarray = \"$securityimages_fontsarray\";\n";
#       $config .= "\$securityimages_fontsarray =array(\"garamond.ttf\", \"admono.ttf\",\"aajax.ttf\");\n";

てな感じで修正すればとりあえず動くようになります。
フォント指定を空にするとgaramond.ttf,admono.ttf,aajax.ttfが指定され、空でなければそれを指定するような感じです。

次バージョン待とうかと思ったけど一応RC版では無いから当分出ないだろうなぁ…と思って2時間潰して直してまいました。
いうか、テストしてるのかと、問いたい問い詰めたい。小一時間問い詰めたい。
こんなレベル、公開前に作者自身でテストしてれば一発で気づくだろうに。

関連記事

関連記事はありません。

 

コメントとトラックバック

    コメントはありません

    コメントを残す

    CAPTCHA


    トラックバックURLhttps://e-tune-mt.net/ylab/191/trackback