OpenPNE3メモ
ちょっと腰を据えてOpenPNE 3に取り組む予定なので、自分用メモエントリ。
設定関連
- インストールしないプラグイン - config/plugins.yml
- デフォルトでは、openpne:installでいろいろなプラグインがインストールされてしまい、関連モデルなども作成される。不要なプラグインをインストール/アップデートなどの対象から外すにはconfig/plugins.ymlに記述する。
- Google グループ
opWebAPIPlugin: install: false
- DB設定を変更せずにインストールのやり直し redoオプション
php symfony openpne:install --redo
-
- database.ymlを先に自前で用意して上記redoオプションでインストールしようとしてもできない
- htaccess - mod_rewrite
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} \..+$ RewriteCond %{REQUEST_URI} !^/cache RewriteRule .* - [L] RewriteRule ^(.*)$ index.php [QSA,L]
- ナビゲーション
- ナビゲーションは基本的にnavigationテーブルのレコードに従って表示される
- ローカルナビは、navigationテーブルのtypeに従って表示されるが、管理画面ではコア組み込みのものしか編集できない
- 自前でtypeを追加したい場合は、管理画面で適当な箇所に追加した後、DBでtypeを変更するなど
- 指定したtypeのナビゲーションを表示するには、sfConfig::set('sf_nav_type', 'member');のようにナビゲーションタイプを設定する。
認証関連
- PCメールアドレスと携帯メールアドレスの両方を受け付ける
- 管理画面→プラグイン設定→認証プラグイン設定→opAuthMailAddressPlugin→設定で以下の2種がある。
- PCメールアドレスと携帯メールアドレスの両方を受け付ける→PCのメールだけ登録してあるメンバーが、携帯を使って携帯ログイン画面からPCのメールアドレスでログインできる。逆も同様に、携帯のメールだけ登録してあるメンバーが、PCでPCのログイン画面から携帯のメールアドレスでログインできる。
- PCメールアドレスと携帯メールアドレスのどちらか一方を受け付ける→PCのメールアドレスではPCのログイン画面からのみログインでき、同様に携帯のメールアドレスでは携帯のログイン画面からのみログインできる。
- 管理画面→プラグイン設定→認証プラグイン設定→opAuthMailAddressPlugin→設定で以下の2種がある。
- メールアドレスログイン時のバリデーション
- opAuthMailAddressPluginから、コアのlib/validator/opAuthValidatorMemberConfigAndPasswordを使っている
- lib/validator/opAuthValidatorMemberConfigAndPasswordはopAuthValidatorMemberConfigを継承。
- opAuthValidatorMemberConfig側でメールアドレスのチェックを行っている。
- member_configの名前と値で一致するものがあるかというバリデーション
- opAuthValidatorMemberConfigAndPasswordでは親クラスのdoCleanを呼び出した後、別途パスワードのチェックを行っている
- パスワードはmd5で保存
DB関連
- member_configテーブルにname_value_hashというフィールドがあり、このフィールドを使ってクエリーしている。(ログイン時のメールアドレスバリデーションetc)
<?php md5($name.','.$value)
-
- このあたり、開発用にお手軽にデータを設定したいので、member_configの値を直接コマンドで編集できるプラグインを作ったので、そのうち公開します・・・。
デザイン関連
- デフォルトデザインのCSSをいじる場合、/web/css/main.cssではなくて、/web/opSkinBasicPlugin/css/main.css
- ローカルメニュー(ナビゲーション)
- 特定のモジュール配下でナビゲーションを切り替える仕組みは、navigationテーブルのtypeフィールドによる
- defaultと、モジュール名に該当するものが結合
- 管理画面からはfriendとcommunityしか設定できない
- 独自に追加するには、アクション側に以下のようにtypeを設定する追加処理が必要
<?php // 例えばmemberモジュールのアクションのpreExecute()内で sfConfig::set('sf_nav_type', 'member');
開発関連
- コーディング規約
- OpenPNE3 PHP 標準コーディング規約|OpenPNE
- nullチェックはis_null()ではなく、null === での比較になるとのこと。