Plugins - advanced/ja

概要
LimeSurvey2.05以降、LimeSurveyは正式にプラグインをサポートしています. 一部のプラグインはLimeSurveyチームによってサポートされ、コアとして組み入れられています. LimeSurveyチーム以外の人たちによってサポートされるものもあります. Available third party pluginsをチェックしてください. あなた自身のプラグインも追加してください！

プラグインを使用すると、通常のソフトウェア更新の恩恵を受けながら、LimeSurveyの機能をカスタマイズすることができます.

このドキュメントは、LimeSurveyを独自に、またはクライアント用に拡張している開発者を対象としています. エンドユーザーはこのドキュメントを読む必要はありません.

プラグインはiPluginインターフェースを実装する必要があります. PluginBaseクラスからプラグインクラスを拡張することをお勧めします.

プラグインは、イベントメカニズムを中心に開発されています.

プラグイン設定
拡張することで、プラ​​グインで必要とされる実装済の共通機能を利用することができます. その1つとして、getPluginSettings関数の実装があります. この関数は、ユーザーの設定オプションを記述する配列を返すものです.

サンプルプラグインでは設定可能な設定が1つだけ表示されます.

配列には、各設定の名前がキーとして含まれています. 値は、必要なメタデータを含む配列です.

サポートされるタイプは次のとおりです.


 * ロゴ
 * 文字列
 * html
 * 選択
 * 関連
 * 情報

タイプに加えて、他の多くのキーが利用可能です.


 * label : を定義します
 * default : 値が指定されていない場合に表示する値を定義します（全体設定のみ、アンケート設定ではない）.
 * current : の値を定義します.
 * readOnly : 設定が読み取り専用であることを指定します.
 * htmlOptions : 入力部分のhtmlOptions（Yiiのマニュアルを参照してください. []）
 * pluginOptions（htmlやselect向けの設定） : ウィジェットオプションを設定します.
 * labelOptions : ラベルのhtmlOptions.
 * controlOptions : ラベルと入力のラッパーのhtmlOptions.

exampleSettingsの実際の設定をすべて使用しているプラグインの例があります.

プラグインの設定を読み書きする
プラグインコードから直接プラグイン設定を読み書きすることができます.

例:

設定がnullの場合、既定値を取得できます.

イベント
プラグインはイベント発生を待機し、イベントが発生するとLimeSurveyと対話できます. 現在利用可能なイベントのリストについては、Plugin eventsを確認してください.

API
プラグインは、"公開された"APIを介してLimeSurveyを拡張するだけにすべきです. つまり、ソースコードにあるクラスを直接使用するのはよくないやり方です. 強制はできませんが、私たちが行うすべてのマイナーアップデートによってプラグインが壊れる危険性があります.

LimeSurveyとは、可能な限りここで説明する方法でのみ対話してください. イベントについても同じです.

APIオブジェクトはPluginBaseから拡張するときに 経由で使用できます. または、プラグインのコンストラクタに渡されるPluginManagerインスタンスから取得できます.

新しい機能は、要求に応じてAPIオブジェクトに追加することができます.

ローカリゼーション
プラグインで独自のロケールファイルを追加することが可能です. 使用されるファイル形式は、コア翻訳と同じ.moです. ファイルは次の場所に保存する必要があります.

/locale/ / .mo

" "は"de"や"fr"のような二文字の文字列です.

特定のロケールファイルを使用するには、プラグイン関数gTを使用します.

指定された文字列がプラグイン固有のロケールファイルに見あたらない場合、関数はコアロケールファイルを検索します. したがって、"キャンセル"のような文字列は安全に使用することができます.

プラグインと一緒にビューを使用している場合は、

のようにし、ビューでプラ​​グイン固有の翻訳を行います.

Logging
プラグインから何かをログに記録する場合は、次のように記述します.

デフォルトのロギングレベルはtraceですが、オプションの第2引数として別のログレベルを指定することもできます.

ログファイルは次のフォルダにあります.

/tmp/runtime/plugin.log

プラグイン名は自動的にカテゴリーとして使用されます. 当該のプラグインのエラーだけを表示するには、grep（Linuxの場合）を使用してください.

$ tailf tmp/runtime/plugin.log | grep <プラグイン名>

拡張機能の更新
LimeSurveyバージョン4.0.0以降、プラグインやその他の拡張機能の更新を処理するシステムが用意されています. このシステムを使用するには、拡張機能のconfig.xmlファイルにアップデーター設定を追加する必要があります.

https://somedownloadlink.com/maybegithub

（上のソースタグはLimeStore REST APIを指しています. これはLimeStoreのすべての拡張機能で使用されます）.

アップデータを提供したくない場合は、config XMLファイルに次のテキストを入力する必要があります.

このようにして、更新システムに関する情報を追加し忘れたのではなく、更新システムを意図的に無効にしたことをシステムに伝えます.

新しいプラグイン UpdateCheck - デフォルトでインストールされ、アクティブ化されます. スーパー管理者がログインすると、インストールされたすべての拡張機能の新しいアップデートがないか非同期で24時間ごとにチェックします. 新しいバージョンが見つかった場合は、通知がプッシュされます.



新しいセキュリティ更新プログラムが見つかった場合、通知は自動的に開き、"danger"クラスでスタイルされます.



プラグインマネージャービューに移動して"更新を確認"をクリックすると、手動で更新がないか確認できます. このボタンは、UpdateCheckプラグインが有効になっている場合にのみ表示されます.



仕組み
このセクションでは、拡張機能のアップデーターの実装について簡単に説明します.

拡張機能アップデーターは、ExtensionInstallerライブラリの一部です. 以下は、アップデータープロセスに関連するクラスのUML図です.



Yii開始時のプログラムフロー:

UpdaterCheckプラグインが機能する時のプログラムフロー:

UpdateCheckプラグインのcheckAllメソッドは、新しいバージョンのすべての拡張機能を照会する方法の例です.

新しいバージョンのフェッチャーを追加する
新しいカスタムバージョンフェッチャーを追加するには、Yiiの初期化中にこれを実行します.

もちろん、クラス は、 をサブクラス化します.

新しいバージョンのフェッチャーを使用するには、アップデーターXMLの タグを を使用するよう設定します（例えば、 の代わりに）.

新しい拡張機能アップデーターの追加
新しいカスタム拡張機能フェッチャーを追加するには、Yiiの初期化中にこれを実行します.

クラスは をサブクラス化します.

config.xml（ 'plugin'、 'theme'、...）の最初の タグは、この拡張機能で使用される拡張機能アップデーターを制御します. カスタムExtensionInstaller、メニュー項目などを追加する必要もあるので、このシステムはまだ完全にカスタマイズ可能ではありません. しかし、理論的、そして将来的には、このように新しいタイプの拡張を追加することは可能です.

特殊なプラグイン

 * 認証プラグインの開発
 * プラグインの開発をエクスポートする

利用可能なプラグイン

 * 認証プラグイン
 * 監査ログ
 * CintLink
 * 利用可能なサードパーティのプラグイン

Tutorial
このステップバイステップのチュートリアルでは、アンケート回答を提出するごとにPOSTリクエストを送信するプラグインを作成する方法を示しています. このチュートリアルでは、全体およびアンケートごとの設定の作成／保存の方法、イベントの登録方法などが紹介されています.