Linkifyモジュールのサンプル

以下のサンプルモジュールは、チェンジリスト、ジョブまたはコードレビューの記述、コメント、アクティビティエントリのテキストをリンクに変換する方法を示しています。

注意

Swarmは、LICENSE.txtファイルに記載されているバージョンのLaminasコンポーネントをサポートしています。それ以降のバージョンのLaminasで導入されたLaminasドキュメントは、Swarmでは動作しません。LICENSE.txtファイルは、Swarmのインストール環境のreadmeフォルダに保管されています。

ヒント

実稼働システムに移行する前に、必ずテストシステム上でカスタムモジュールのテストを行ってください。これにより、実稼働システムの運用に悪影響が及ぶことを防ぐことができます。複数のカスタムモジュールがある場合、すべてのモジュールを同時に同じテストシステム上でテストしてください。これにより、お互いに、そしてHelix Swarmと連携して、正しく運用できることを確認できます。

ヒント

モジュールの追加や編集を行った場合、構成キャッシュを再ロードするまで、そのモジュールがSwarmで使用されることはありません。構成キャッシュを再ロードすると、そのモジュールがSwarmで強制的に使用されます。Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。[ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンボタンをクリックします。

EmailExampleモジュールを作成するために必要な基本手順は以下のとおりです。

ファイルの場所

ご参考までに、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ファイルを作成するには、次の操作を実行します。

  1. モジュールディレクトリに、Rickrollというディレクトリを作成します。
  2. module/RickrollModule.phpというファイルを作成します。

  3. Module.phpを編集して以下を含めます。
  4. <?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';
        }
    }
  5. 次に、module.config.phpファイルを作成するします。

module.config.phpファイルを作成する

  • module.config.phpファイルは必須ですが、Linkifyモジュールに対しての戻り値は空になります。
  • module.config.phpファイルを作成するには、次の操作を実行します。

    1. Rickroll/configに、module.config.phpというファイルを作成します。
    2. module.config.phpを編集して以下を含めます。
    3. <?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(); }
    4. 次に、custom.modules.config.phpでSwarmに対してRickrollモジュールを有効にするにします。

    custom.modules.config.phpでSwarmに対してRickrollモジュールを有効にする

    Swarmcustom.modules.config.phpファイルを使用してクラスを自動的に読み込み、実行するカスタムモジュールを確認します。これにより、Swarmがどのモジュールを読み込むかを制御し、モジュールが誤って読み込まれることを防ぐことができます。

    custom.modules.config.phpファイルを作成するには、次の操作を実行します。

    1. moduleディレクトリと同じレベルにconfigディレクトリが存在しない場合は、新しく作成します。
    2. configディレクトリにcustom.modules.config.phpファイルが存在しない場合は、新しく作成します。
    3. custom.modules.config.phpファイルを編集して、自動ローダとRickrollモジュールの詳細を含めます。
    4. ヒント

      すでにSwarmで1つ以上のカスタムモジュールが有効になっている場合、自動ローダと既存のモジュール詳細はファイルに含まれています。

      namespacesRickrollを追加し、custom.modules.config.phpファイルのreturn配列を追加します。

      <?php
      \Laminas\Loader\AutoloaderFactory::factory(
          array(
              'Laminas\Loader\StandardAutoloader' => array(
                  'namespaces' => array(
                      'Rickroll'      => BASE_PATH . '/module/Rickroll',
                  )
              )
          )
      );
      return [
          'Rickroll'
      ];
      

    5. Swarmが新しいモジュールを認識できるように、Swarmの構成キャッシュをもう一度ロードする必要があります。adminユーザまたはsuperユーザとして[ユーザID]ドロップダウンメニューにアクセスし、[システム情報]を選択して[キャッシュ情報]タブをクリックしてから、[構成の再ロード]ボタンボタンをクリックします。

    6. これで、Swarmに対してRickrollモジュールが有効になりました。Swarmにより、チェンジリストの説明、ジョブの説明、コードレビューの説明、コメント、アクティビティエントリに含まれている「rickroll」というテキストが「https://www.youtube.com/watch?v=dQw4w9WgXcQ」へのリンクに置き換えられます。

    7. 実稼働サーバに移行する前に、モジュールが正常に機能することを確認してください。