Linkifyモジュールのサンプル
以下のサンプルモジュールは、チェンジリスト、ジョブまたはコードレビューの記述、コメント、アクティビティエントリのテキストをリンクに変換する方法を示しています。
Swarmは、LICENSE.txtファイルに記載されているバージョンのLaminasコンポーネントをサポートしています。それ以降のバージョンのLaminasで導入されたLaminasドキュメントは、Swarmでは動作しません。LICENSE.txtファイルは、Swarmのインストール環境のreadmeフォルダに保管されています。
実稼働システムに移行する前に、必ずテストシステム上でカスタムモジュールのテストを行ってください。これにより、実稼働システムの運用に悪影響が及ぶことを防ぐことができます。複数のカスタムモジュールがある場合、すべてのモジュールを同時に同じテストシステム上でテストしてください。これにより、お互いに、そしてHelix Swarmと連携して、正しく運用できることを確認できます。
モジュールの追加や編集を行った場合、構成キャッシュを再ロードするまで、そのモジュールがSwarmで使用されることはありません。構成キャッシュを再ロードすると、そのモジュールがSwarmで強制的に使用されます。Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。[ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンボタンをクリックします。
EmailExampleモジュールを作成するために必要な基本手順は以下のとおりです。
- Module.phpファイルを作成する
- module.config.phpファイルを作成する
- custom.modules.config.phpでSwarmに対してRickrollモジュールを有効にする
ファイルの場所
ご参考までに、Rickrollモジュールは以下のファイル名とファイルの場所を使用します。
config/ custom.modules.config.php module/ Rickroll/ config/ module.config.php Module.php
Module.phpファイルを作成する
Module.phpは次のことを行います:
- モジュールのディレクトリ名に一致する、モジュールのネームスペースを宣言します。
- Linkifyアプリケーションを提供します。
- onBootstrap()関数を提供します。
- Linkifyモジュールにコールバックを追加します。このモジュールは、検索するテキスト(rickroll)を宣言し、目的のテキストが見つかった場合に、そのテキストのリンクを作成する方法を宣言します。
- getConfig()関数を提供します。
Module.phpファイルを作成するには、次の操作を実行します。
- モジュールディレクトリに、Rickrollというディレクトリを作成します。
-
module/RickrollにModule.phpというファイルを作成します。
- Module.phpを編集して以下を含めます。
- 次に、module.config.phpファイルを作成するします。
<?php
/**
* Perforce Swarm
*
* @copyright 2019 Perforce Software. All rights reserved.
* @license Please see LICENSE.txt in top-level folder of this distribution.
* @version <release>/<patch>
*/
namespace Rickroll;
use Application\Filter\Linkify;
class Module
{
public function onBootstrap()
{
Linkify::addCallback(
// Linkify requires 3 parameters: "$linkify", "$value" and "$escaper"
function ($linkify, $value, $escaper) {
if (strcasecmp($value, 'rickroll')) {
// not a hit; tell caller we did not handle this one
return false;
}
return '<a target="_new" href="https://www.youtube.com/watch?v=dQw4w9WgXcQ">'
. $escaper->escapeHtml($value) . "</a>";
},
'rickroll',
strlen('rickroll')
);
}
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
}
module.config.phpファイルを作成する
module.config.phpファイルを作成するには、次の操作を実行します。
- Rickroll/configに、module.config.phpというファイルを作成します。
- module.config.phpを編集して以下を含めます。
- 次に、custom.modules.config.phpでSwarmに対してRickrollモジュールを有効にするにします。
<?php
/**
* Perforce Swarm
*
* @copyright 2019 Perforce Software. All rights reserved.
* @license Please see LICENSE.txt in top-level folder of this distribution.
* @version <release>/<patch>
*/
{
return array();
}
custom.modules.config.phpでSwarmに対してRickrollモジュールを有効にする
Swarmはcustom.modules.config.phpファイルを使用してクラスを自動的に読み込み、実行するカスタムモジュールを確認します。これにより、Swarmがどのモジュールを読み込むかを制御し、モジュールが誤って読み込まれることを防ぐことができます。
custom.modules.config.phpファイルを作成するには、次の操作を実行します。
- moduleディレクトリと同じレベルにconfigディレクトリが存在しない場合は、新しく作成します。
- configディレクトリにcustom.modules.config.phpファイルが存在しない場合は、新しく作成します。
- custom.modules.config.phpファイルを編集して、自動ローダとRickrollモジュールの詳細を含めます。
-
Swarmが新しいモジュールを認識できるように、Swarmの構成キャッシュをもう一度ロードする必要があります。adminユーザまたはsuperユーザとして[ユーザID]ドロップダウンメニューにアクセスし、[システム情報]を選択して[キャッシュ情報]タブをクリックしてから、[構成の再ロード]ボタンボタンをクリックします。
- 実稼働サーバに移行する前に、モジュールが正常に機能することを確認してください。
すでにSwarmで1つ以上のカスタムモジュールが有効になっている場合、自動ローダと既存のモジュール詳細はファイルに含まれています。
namespacesにRickrollを追加し、custom.modules.config.phpファイルのreturn配列を追加します。
<?php
\Laminas\Loader\AutoloaderFactory::factory(
array(
'Laminas\Loader\StandardAutoloader' => array(
'namespaces' => array(
'Rickroll' => BASE_PATH . '/module/Rickroll',
)
)
)
);
return [
'Rickroll'
];
これで、Swarmに対してRickrollモジュールが有効になりました。Swarmにより、チェンジリストの説明、ジョブの説明、コードレビューの説明、コメント、アクティビティエントリに含まれている「rickroll」というテキストが「https://www.youtube.com/watch?v=dQw4w9WgXcQ」へのリンクに置き換えられます。