SMF Forum Integration (MODxとSMFの連携)

MODx(1.0.2J)とSMF(V1.1.11)との連携を先日お仕事でちょっぴりやりました。双方のバージョンの違いに起因するインストールプロセスの問題はさほど苦労せずにパスできました。(詳しい過程は忘れましたが・・・ ^^;)
SMFとの連携を必要とするモドエクサーは比較的多いようなので、SMF Forum Integration(以後、”SFI”と略)が持つ機能やMODxとSMFを連携させる上でのポイントなどを自分なりにかいつまんで整理してみたいと思います。

1.概要

SFIは”Integration”の言葉が示すとおり、MODxとSMFの橋渡しを行うもの。双方のCMSでユーザーアカウントを共有する(同期させる)ことで一体化したシステムとして連携させる(運用する)ための基盤を提供するもので、同一サーバ上にMODxとSMFがあらかじめインストールされていることが前提になります。SFIにはMODxにSMFの画面を丸ごとマウントする方法も示されていますが、互換性がないSMFでは単にindex.phpをインクルードするだけではうまく動いてくれないようです。とはいえ、MODxのWebloginとSMFのログイン機能を連動させたシングルサインオンやユーザーの自動同期だけでも使う価値は十分にあるように思います。MODxにSMFの画面をマウントした姿を想像すると、SMFのページあたりのデータ量の多さを考えれば、画面をまんまMODxにマウントするのは、性能やデザイン面から若干非現実的な気もします。

2.プログラム構成

SFIは大きく分けて2つの部品で構成されます。

2.1 SMF Connector (モジュール)

MODxの管理画面のモジュールとして動作する部品。SMFにオートログインしてSMFの画面をMODxの管理(モジュール)画面にマウントしてMODx上でSMFを管理したり、ユーザーアカウントを再同期(MODxとSMF双方のユーザーアカウントを一致)させることができます。

2.2 SMF Connect (スニペット)

MODxのWebUser系イベントを利用して、SMFへのシングルサインオン/サインアウト、ユーザーアカウントの自動同期を行います。

3.主な機能

名称 説明
SMF画面のマウント SMFに管理者権限でオートログインし、SMFの画面をMODxの管理画面内に表示します。MODxとSMFを行き来せずにMODx一本でフォーラムを管理できるようになります。

モジュールには以下のような付随機能があります。

  • SMFのログイン有効時間の指定
  • SMFのログインページやユーザー登録ページを隠す機能
  • MODx側のウェブユーザーが削除された場合の処理方法の指定
ユーザー再同期 以下の処理を行うことでMODxとSMF双方のユーザー情報を一致させます。

  • SMFのアカウントをMODxのウェブユーザーとしてインポート
  • MODxのウェブユーザーをSMFのアカウントとしてエクスポート

考えられる使用シーン)

  • SFIを初期導入したタイミング
  • SMFで独自にユーザーの構成を変えた(変わった)場合
  • MODxの規定のウェブユーザーの生成・変更・削除、パスワード変更の処理ルートを通らずにウェブユーザーの構成を変更した場合(例えば、CSVでウェブユーザーの一括移入を行った場合やDBのマニュアル操作など)
ユーザー同期 MODxのウェブユーザーの構成が変化したタイミング(追加、更新、削除、パスワードの変更)を捉え、SMF側に反映します。この機能は、MODxのウェブユーザー管理イベントに基づいて動作するため、SMF側のアカウント構成に変化があった場合はMODxとSMFのユーザー構成は不一致な状態になります。この場合は、「ユーザー再同期機能」を使ってマニュアルで同期させる必要があります。
シングルサインオン MODxのウェブユーザーのログイン/ログアウトタイミングを捉え、SMFに自動ログイン/ログアウトします。

4.融合方法に関する考察

SMFの画面をMODxのページにガッツリマウントするのはちょっと・・・と言いましたが、SMFにはSSI(サーバーサイドインクルード)があらかじめ用意されており、SMFのデータベースから様々な形でデータを抽出できるようになっています。自分もそうですが、PHPに苦手意識がある人がMODxにSMFの情報を融合する場合は、この機能を使うことになると思われます。ただ、ざっとソースを眺めた感じでは、決して使いやすいものとはいえない印象を受けました。特にSMFV1とV2ではSSIのインタフェースがかなり変わっており、現行の正式バージョンであるV1ベースで処理を組み立てようとすると、V1のSSIのインタフェースの不完全さに足を引っ張られるかもしれません。

5.実際の融合局面での問題点と対処

あくまで自分の経験則ですが、SSIを使ってSMFのデータをMODxに取り込む場合は、V1のSSIそのものを改造したり、V1のSSIのインタフェースに合わせてMODx側から引き渡す引数を調整しなければならない必要性が出てきます。また、PHPがバリバリ組める人にとってはそれほど苦にならないPHP関数の呼び出しやデータの加工処理も、PHPが苦手な人にとっては大きな壁になりえます。このような状況に対処するためには、MODxの開発環境に合うインタフェースに置き換えることを目的としたSSIのラッパースニペットを別途用意することをお勧めします。

6.使うために必要なスキル

いろいろ述べましたが、MODxとSMFをシームレスに連携するためには、以下のスキルが必要不可欠と考えます。また、SFIが動作確認されたMODxのバージョンは0.9.6(公証値)、SMFは1.1.4です。現行のMODxは1.0.2、SMFは1.1.11とバージョンが進んでますので、問題が出ることを前提に取り組める人であることが重要なポイントになります。

  • MODxの内部的な仕組みやユーザーマメージメントにある程度精通していること
  • SMFの基本的な機能やユーザーマメージメントにある程度精通していること
  • PHPの基本的な知識があること(コードが読めてちょいと直せる程度)
  • SQLの基本的な知識があること(SQL構文の意味が理解できて、ちょっとした変更を加えられること)

サンプル画面があると分かりやすいと思うのですが、今日はここまで。 :-D

にほんブログ村 IT技術ブログ Webサイト構築へにほんブログ村 IT技術ブログ オープンソースへ

CMSを多くの人に知ってもらいたい。そんな気持ちで参加しています。


モノ・マガジン オンライン
コメント

0 comments.

コメントフォーム


[ Ctrl + Enter ]