-オープンソースのSNSエンジン OpenPNEプロジェクト-

最新ブログ

Home

OpenPNE3プラグインの作り方#3

12 / 01 月曜日 2008

この記事は OpenPNE3.0.x のものです。現在の最新安定版では動作しない箇所が存在します。

とうとう12月になってしまいました。
健康的な生活を送っている人であれば、
あと、31回寝ればお正月なんです。恐ろしいですね。

OpenPNE3プラグインの作り方#1
OpenPNE3プラグインの作り方#2

本日もOpenPNE3のプラグインについて、解説していきます。

前回では、新しくページを作ることができましたが、拡張を作る上で
どうしても避けて通れないのは、データをどのように保存するかです。

そこで、プラグイン独自のデータベースモデルを作成する方法を載せておきます。

とりあえず、この連載の最終目標として何を作るかだけ先に決めてしまいます。
OpenPNE.jpにある
MyNews機能であれば、簡単にできる気がするのでやってしまいましょう!

MyNews機能

プラグイン用のデータベースモデルの作成法は
symfonyのマニュアルにある通りです。
http://www.symfony-project.org/book/1\_2/17-Extending-Symfony#Plug-In%20File%20Structure(英語)

プラグインのディレクトリ直下に「config」ディレクトリが作られているはずです。
その下に、「schema.yml」を作ります。

MyNewsを作る上で、
必要なフィールドは次のようになると思います。

ID     (1対1のモデルにしてもよいのですが、今回はこのテーブルのための固有のキーを割り振ることにします。)
メンバーID(コアにあるmemberモデルの外部キーとなりそうです。)
本文
更新日時

このモデルを作成するために、新しく作成した「schema.yml」を次のようにします。

propel:
  _attributes: { package: plugins.opSamplePlugin.lib.model }

  member_news:
    id: ~
    member_id : { type: integer, foreignTable: member, foreignReference: id }
    content:    { type: longvarchar }
    updated_at: ~

前回同様 YAML はタブ文字ではなく、スペース2文字でインデントするということに気を付けてください。

id と指定したフィールドに関しては、特に何もオプションを指定しないと
自動的にプライマリーキーとなり、オートインクリメントが有効になります。

●●●_id とやることにより、●●●テーブルの外部キーになります。
同じ「schema.yml」ファイル上に、そのテーブルがあれば、自動的にそのテーブルの外部キーになりますが、
memberテーブルの宣言は別の場所にあるので、しっかりと foreignTableを指定します。

* アルファ版の段階で、コアのモデルを利用するときはモデルの変更が行われることが
 ありますのでご注意ください。

updated_atは更新時に自動的に更新時時刻が登録されるフィールドになります。

このファイルを保存した後、

symfony openpne:install

コマンドを利用して、データベースモデルを再構築してください。

* 将来的には、OpenPNE3のすべてのデータベースモデルを初期化しないで
新しく作成したモデルを追加することができるようになる予定です。

これで、新たなテーブルが追加されているはずです。
ws000015.PNG
ws000018.PNG

次回は、OpenPNE3の「テンプレート拡張機能」を利用して
ホームとプロフィールのページにパーツを挿入する方法について投稿する予定です。

OpenPNE3開発状況

12 / 01 月曜日 2008

今日のOpenPNE3開発状況ホワイトボード。

・OpenSocialの実装がかなり進んだ
・あと31日で全部を作るのは難しそうだ
・アイシーズさんが開発参加、マークが付いているところを担当して頂く

開発も佳境に入っている。引き続きレポートしていく。

12月20日(土)に「第13回 PNE関西勉強会&忘年会」を開催します

11 / 29 土曜日 2008

PNE関西のモデレーター、zeroichiの西川です。
12月の勉強会という名目で、忘年会を開きたいと考えています。

日付は12月20日(土)の19時からです。第3土曜日です。
定員は15名で、参加費は3,500円を予定しています。飲み放題が付きます。
場所は、梅田のビタミンバー アルバータ様です。バーですが、IT設備満載です。

大阪府大阪市北区兎我野町3-19 ビタミンバー アルバーダ
http://www.bar-albada.com/
(会場への電話による質問はご遠慮下さい)

申し込みは、以下のメールアドレスよりご一報下さいませ。
pnekansai(at)gmail.com
※全角英字を半角英字にし、(at)を @ にして送信をお願いします。
※定員に達しました時は、期日前に締め切らせて頂きます。
※定員オーバーとなった時は、お断りのご連絡することになりますが、ご了承下さい。

当初18時スタートの3,000円としていましたが、19時スタートの3,500円となりました。

OpenPNE2.12.6, OpenPNE2.10.12リリースのお知らせ

11 / 25 火曜日 2008

OpenPNE開発チームのきわです。

本日2008年11月25日、安定版OpenPNE2.12.6と旧安定版OpenPNE2.10.12をリリースしました。大変お待たせいたしました。

バグ修正

  • フレンド申請などの件数が多くなると、携帯版の承認待ちリストが表示できなくなる場合があったのを修正
  • 携帯版のみを利用していたメンバーが iPhone へ機種変更した場合、 SNS を利用できなくなってしまっていたのを修正
  • 食べログ小窓が表示されなくなっていたのを修正
  • 承認待ちリストの「承認」ボタン横にある縦線が切れていたのを修正 (2.12のみ)
  • メンテナンスモードで管理ページのポータルクリエイターの設定画面を出そうとするとメンテナンス中の画面になっていたのを修正 (2.12のみ)
  • コミュニティの強制退会・副管理者降格の確認画面のレイアウトが崩れていたのを修正 (2.12のみ)

などです。詳細は安定版改訂履歴をご覧ください。

「フレンド申請などの件数が多くなると、携帯版の承認待ちリストが表示できなくなる場合があったのを修正」は、携帯版の承認待ちリストのページ分割と・携帯版マイホームに承認待ちリストへのリンク追加というUI変更が含まれています。

「携帯版のみを利用していたメンバーが iPhone へ機種変更した場合、 SNS を利用できなくなってしまっていたのを修正」は開発版に先行で取り込まれていた修正と同様です。携帯メールアドレスのみ登録しているメンバーさん用のPCメールアドレス登録機能がログイン前に追加されました。ログイン画面の「>ログインできない方はこちら」リンクよりアクセスできます。この変更に伴い「パスワード再発行」リンクも「>ログインできない方はこちら」を経由するようになりました。

config.php変更

今回はconfig.phpの変更が入っています。以下のように変更してください。

変更1

「携帯版のみを利用していたメンバーが iPhone へ機種変更した場合、 SNS を利用できなくなってしまっていたのを修正」で追加された画面をSSLに対応させるために、以下の変更を行ってください。

// SSLを使用することが必須であるアクションリスト
$GLOBALS[‘_OPENPNE_SSL_REQUIRED’] = array(
‘page_o_regist_prof’, ‘page_o_regist_prof_confirm’, ‘do_o_regist_prof’,
            …省略…
),

この設定の最後の1行に以下を追加してください。

‘page_o_regist_pc_address’, ‘do_o_regist_pc_address’, ‘page_o_regist_pc_address_end’,

変更2

「メンテナンスモードで管理ページのポータルクリエイターの設定画面を出そうとするとメンテナンス中の画面になっていたのを修正」を反映させるために、以下の変更を行ってください。

// メンテナンス中でも表示するモジュール名
$GLOBALS[‘_OPENPNE_MAINTENANCE_MODULES’] = array(‘admin’);

この設定に「portal」追加してください。

// メンテナンス中でも表示するモジュール名
$GLOBALS[‘_OPENPNE_MAINTENANCE_MODULES’] = array(‘admin’, ‘portal’);

ダウンロード

ダウンロード

/pne-downloads

安定版改定履歴

http://trac.openpne.jp/wiki/ChangeLog

OpenPNE2安定版 次回のリリース予定

2008年12月は「OpenPNE3開発強化月間」ということでOpenPNE2のリリースをお休みします。次のOpenPNE2安定版のリリースは2009/1/15(木)になります。

また、2008年12月にOpenPNE3がリリースされるので、旧安定版のOpenPNE2.10は、2009/1/15(木)リリースのOpenPNE2.10.13でメンテナンスを終了させていただきます。

プレスリリースジェーピーでOpenPNE関連記事が掲載されました!

11 / 25 火曜日 2008

プレスリリースジェーピーでOpenPNE関連記事が掲載されました!

『2008/12/17(水)SNS交流会』 (SNS運営者と一緒の忘年会、聞き合ってすっきりしよう)
プレスリリースジェーピー(2008年11月24日)

記事
http://pressrelease-jp.com/press/10655/20081124/

その他の掲載記事
/docs/pne-clipping/

IT LeadersでOpenPNE関連記事が掲載されました!

11 / 25 火曜日 2008

IT LeadersでOpenPNE関連記事が掲載されました!

エンタープライズ 2.0の先進企業のシステム事例~カシオの場合~
IT Leaders(2008年10月23日)

記事
http://it.impressbm.co.jp/e/2007/10/23/88

その他の掲載記事
/docs/pne-clipping/

OpenPNE Skinコンテスト 2008 in Osaka - 投票発表!

11 / 24 月曜日 2008

●━━━━━━━━━━━━━━━━━━━━━━━━━━━●
OpenPNE Skinコンテスト 2008 in Osaka - 投票発表!
●━━━━━━━━━━━━━━━━━━━━━━━━━━━●
10月より開催していましたOpenPNE Skinコンテスト 2008 in Osakaが、無事に終了しました。
つきまして予定より遅れましたが本日、結果発表をさせて頂きました!

1位.openpne_touch
login_open.png
41票

2位.cwe_kof2008_opt
login_open2.png
39票

3位.openpne_smile2008
login_open1.png
11票

4位.01_hierogryph_v2008
login_open3.png
9票

以上により優秀賞は、openpne_touchとなりました。

会場投票とWEB投票の合計では、openpne_touchとcwe_kof2008_optは接戦を繰り広げ、勉強会での投票によって、見事、openpne_touchを勝ち取りました。

製作者の太田 憲治@CRE8SYSTEM様、おめでとうございます。

OpenPNE2.12.6, OpenPNE2.10.12リリース延期のお知らせ(2)

11 / 21 金曜日 2008

OpenPNE開発チームのきわです。

前回の告知で2008/11/21(金)に延期になった安定版OpenPNE2.12.6, OpenPNE2.10.12ですが、更に延期することになりました。
マイナーバージョンアップのメンテナンス予定などをたてていた方、申し訳ありません。

2008/11/25(火)にリリース予定です。

OpenPNE2.12.6, OpenPNE2.10.12リリース延期のお知らせ

11 / 20 木曜日 2008

OpenPNE開発チームのきわです。

2008/11/20(木)リリース予定だった安定版OpenPNE2.12.6, 旧安定版OpenPNE2.10.12ですが、開発の遅れにより1日延期することになりました。
告知が遅くなって申し訳ありません(´・ω・`)

安定版OpenPNE2.12.6, 旧安定版OpenPNE2.10.12は、2008/11/21(金)にリリース予定です。

OpenPNE3プラグインの作り方#2

11 / 20 木曜日 2008

この記事は OpenPNE3.0.x のものです。現在の最新安定版では動作しない箇所が存在します。

開発チームの川原です。
寒くて風邪をひかないか心配な今日この頃です。

この記事は、
OpenPNE3プラグインの作り方#1
の続きです。

前回作成された 「plugins/opSamplePlugin/app/pc_frontend/modules/hello」
下には 「actions」と「templates」の2つのディレクトリが作られているはずです。

「actions」ディレクトリの中には、最初から「actions.class.php」が
用意されています。

中身はこうなっています。

…(省略)…
class helloActions extends sfActions
  {
  /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex($request)
  {
    $this->forward(‘default’, ‘module’);
  }
}

ここに、アクションを記していきます。

$this->forword('default','module');

となっているため、前回の 「Module “hello” created」
のページにフォワードしてしまいます。
ws000005.PNG

return sfView::SUCCESS;

に置き換えてしまいましょう。

…(省略)…
class helloActions extends sfActions
  {
  /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex($request)
  {
    return sfView::SUCCESS;
  }
}

次に、テンプレートを編集します。
「templates」ディレクトリには、最初から「indexSuccess.php」が
用意されています。

executeIndex() で sfView::SUCCESS が返されると
このテンプレートを表示します。
中身は空白のファイルなので、もぞもぞと入力してしまいます。

とりあえず、

Hello world!

とベタベタに出してみようと思います。

前回のように
http://sns.example/hello
アクセスすると、こうなるはずです

ws000007.PNG

このままでは、ログインしていなくても見ることができてしまいます。
そこで、「hello」ディレクトリの中に、新しく「config」ディレクトリを作成して、
「security.yml」というファイルを作成します。

中身はこのようにします。

all:
  is_secure: on
  credentials: SNSMember

YAMLなので、インデントにはタブでなくて半角スペース2つで。
その後、 symfony cc でキャッシュを削除してください

そうすると、ログインした状態でないと
http://sns.example/hello
にアクセスできなくなります。

ログインしてアクセスすると、下のようにメニューまで付いたページになります。
ws000008.PNG

これで、SNS中に新しいページを作ることができるようになりました。

次回は、プラグイン独自のデータベースモデルを追加してみます。

ページの先頭に戻る