## XOOPS検索

#### このモジュールについて

日本語に優しくないXOOPSの検索機能を日本語(マルチバイト)向けに改良しモジュール化したものです。検索ブロックも付属しています。EUC-JP専用。

#### 機能説明(付属の検索機能とこのモジュールとの違い)

- 最低文字数の表示を半角と全角で示すように変更。
- 用語の一般化「検索対象のモジュール」→「検索対象のページ」
- 用語の一般化「検索ルール」→「検索上の注意」
- テンプレートで出力するので検索結果のレイアウトができる。
- テンプレートで出力するのでryus_dateなどのプラグインを自由に使える。
- 全角スペースでもAND検索できるように変更。
- 全角英数でも半角英数にヒットするように変更(要mbstring)。
- 全角カナでも半角カナにヒットするように変更(要mbstring)。
- 半角英数でも全角英数にヒットするように変更(要mbstring)。
- 半角カナでも全角カナにヒットするように変更(要mbstring)。
- 検索できるモジュールが無い場合、検索できるモジュールがないことを示すように変更。
- extract()による展開を止めて変数汚染を予防。
- コアの一部から切り離したことで改造することに抵抗がなくなった。
- 「検索対象のモジュール」を管理者が自由に設定できる。
- 検索結果の本文を表示できる。(プラグインで拡張可能)
- 「サイト検索[転送用]」ブロック…http://あなたのサイト/search.phpにリクエストが有った際、このモジュールに自動的に転送するためのブロック。XOOPS付属のsearch.phpを全く使用したく無い場合は、全てのページ、全てのグループで表示されるように設定してください。

*mbstringが無くても作動しますが日本語に最適化された機能の一部が使用できなくなります。機能の一部が使えなくなるわけで動作不能になるわけではありません。

#### 本文表示が使えるモジュール名一覧(アルファベット順)

下記のモジュールはプラグイン又はモジュールが対応しています。
BluesBB
comment_search
myAlbum-P* / mydownloads / mylinks
newbb / news
piCal*
TinyD*
XoopsFAQ / Xwords
*印のあるものはモジュール自体が対応しているためプラグイン不要。そのためプラグインは同封していません。

#### 免責と保証

- このアプリケーションがあなたに与える影響に関して制作者には一切の責任はないとする。
- このアプリケーションの利用者に対して制作者は一切の責任を放棄する。
- 制作者はこのアプリケーションの利用者に予告無くこのアプリケーションを変更・配布する時期・開発の中止等を自由に決定する権利を持つと共に、それらが利用者に与えることに関して制作者は一切の責任を負わない。
- 制作者はこのアプリケーションの不具合を解決することに努力するが、それは制作者の義務ではない。
- 利用者はこのアプリケーションを利用した時点でこのアプリケーションの全責任を負うと共に上記の事項に同意したとする。

#### インストール方法

1) 圧縮ファイルを解凍してモジュールディレクトリにアップロード。
2) モジュール管理にてインストールしてください。
3) このモジュールの「一般設定」で各種設定を行って下さい。
4) グループとブロックの設定を行って下さい。

#### アンインストール方法

通常のモジュール同様にモジュール管理よりアンインストールを実行してください。

#### Tips - よりセキュアに -

このモジュールではコアのセキュリティーホールを埋める機能も果たせます。
グローバルサーチを受け持つsearch.phpにはextract()を２回実行する脆弱が存在します。ここではコアをハックして、それを塞ぐ方法を紹介します。
1.変更前、変更後を参考に、下記のように赤い部分を追加して下さい。
search.php 変更前：

    $xoopsOption['pagetype'] = "search";

    include 'mainfile.php';
    $config_handler =& xoops_gethandler('config');
    $xoopsConfigSearch =& $config_handler->getConfigsByCat(XOOPS_CONF_SEARCH);

    if ($xoopsConfigSearch['enable_search'] != 1) {
        header('Location: '.XOOPS_URL.'/index.php');
        exit();
    }

    extract($_GET);
    extract($_POST, EXTR_OVERWRITE);

変更後：

    $xoopsOption['pagetype'] = "search";

    include 'mainfile.php';

    // xoops search japanese optimization START
    if(file_exists(XOOPS_ROOT_PATH."/modules/search/index.php")){
            $module_handler =& xoops_gethandler('module');
            $module =& $module_handler->getByDirname('search');
            if( $module->getVar('isactive') == 1){
                    header("Location: ".XOOPS_URL."/modules/".$mydirname."/index.php?".$_SERVER['QUERY_STRING']);
                    exit();
            }
    }
    // xoops search japanese optimization END

    $config_handler =& xoops_gethandler('config');
    $xoopsConfigSearch =& $config_handler->getConfigsByCat(XOOPS_CONF_SEARCH);

    if ($xoopsConfigSearch['enable_search'] != 1) {
        header('Location: '.XOOPS_URL.'/index.php');
        exit();
    }

    extract($_GET);
    extract($_POST, EXTR_OVERWRITE);

#### 更新履歴

ver | Date | News
--- | --- | ---
1.0 | 2005-01-19 | ファーストリリース
1.1 | 2005-01-20 | 全角文字と半角文字を区別しないように変更
1.2 | 2005-01-24 | 検索するモジュールを制限できるような管理機能を追加。権限のないモジュールの検索結果が見えてしまう欠陥を修復。mbstringの無い環境で記事が重複してしまうバグを修正。日本語の修正。
1.3 | 2005-01-26 | nao-ponさんの本文表示ハックを導入しました。あいまい検索発動時に「すべて表示」が表示されなくなるバグを修正。「サイト検索[転送用]」ブロック追加。
1.4 | 2005-02-01 | テンプレートのバグを修正。
1.5 | 2005-02-02 | bluesさんから頂いたBluesBB用のプラグインを同封しました。セキュリティバグ修正。
1.6 | 2005-02-04 | XSSを実行しうる脆弱を直しました。1.5以下からのアップグレードは、index.phpを必ず上書きしてください。
1.7 | 2005-02-12 | aibaさんから頂いたXwords用のプラグインを同封しました。
1.8 | 2005-02-20 | 本文を表示するかどうか選択できるようにしました。
1.9 | 2005-03-23 | ・[バグ修正]「次のページ >>」などのURLが&amp;になるのを修正。
2.0 | 2006-06-02 | ・[セキュリティ]SQL Injectionの可能性があるtypoを修正。 ・[バグ修正]ブロックから検索すると本文が表示されなかったバグを修正。

#### 謝辞

本文表示ハックをnao-ponさんからお借りしました。<http://hypweb.net/xoops/>
dendekeさんの「検索対象とするモジュールを選択できる」ようにするというアイディアをお借りしました。
myblocksadminをGIJOEさんからお借りしました。<http://www.peak.ne.jp/>
●プラグインの制作者と入手先
- BluesBB　　bluesさん　<入手先>
- Xwords　　aibaさん　<入手先>
Amethyst Blue by SUIN