sfMobileIPPluginという、IPベースで高速にキャリア判定をするsymfonyプラグインがあったので、使ってみました。
1.0用に作られているらしく、一部修正する必要があります。
とりあえずやってみてダメだった手順。
$ ./symfony plugin:add-channel openpear.org
$ ./symfony plugin:install -s beta openpear.org/sfMobileIPPlugin
ダウンロードしてインストールを試みる。(これもXMLがおかしいと言われて不可)
$ ./symfony plugin:install ./sfMobileIPPlugin-0.0.13.tgz
ダメっぽいので適当にディレクトリ作って解凍しました。これでセットアップできました。
$ mkdir tmp
$ mv sfMobileIPPlugin-0.0.13.tgz ./tmp/
$ cd tmp/
$ tar xvzf ./sfMobileIPPlugin-0.0.13.tgz
$ mv ./sfMobileIPPlugin-0.0.13 ../plugins/sfMobileIPPlugin
configのyml類はconfigディレクトリに移さずに使える模様です。configにコピーしておけばオーバーライドできるので開発環境の場合はconfigにコピーしたあと、ローカルのネットワーク範囲を追加しておけば便利かと思います。
手動で設置したので、ProjectConfigurationにプラグインを使用するように記述する必要があります。
config/ProjectConfiguration.class.phpの
public function setup() { ... }
に
$this->enablePlugins('sfMobileIPPlugin');
を追加します。
1.4ではすでに存在しないメソッドがあるので、それも書き換えます。
plugins/sfMobileIPPlugin/lib/sfMobileIP.class.php
static protected function configFile() { $config_dir = sfConfig::get('sf_config_dir_name'); $config_file = $config_dir.DIRECTORY_SEPARATOR.'mobile_ips.yml'; return sfConfigCache::getInstance()->checkConfig($config_file); }
を以下のように修正。
static protected function configFile() { return sfContext::getInstance()->getConfigCache()->checkConfig('config/mobile_ips.yml'); }
あと、pear::Net_IPv4が必要です。これがないとdev環境でもエラーを出さずに途中で止まります。
symfonyコマンドでもインストールできますが、pluginディレクトリが汚くなるので、オートロードできる場所にNet_IPv4.phpファイルを適当に設置すれば良いかと思います。
http://pear.php.net/package/Net_IPv4/download
あとは
./symfony cc
を実行して、プログラム内でsfMobileIP::carrier()を実行すればキャリアを読み取れます。
[…] sfMobileIPPluginをsymfony 1.4で使ってみた […]