ジョブを作成する
ジョブの作成は簡単です。まず、PHPファイルを標準のconcrete5の小文字とアンダースコアのルールに従って作成します。例:"summarize_statistics.php"
次に、このファイルを application/jobs ディレクトリに設置します(パッケージに含める方法は後述)。
次にファイルを開き、ファイル名に対応した名前空間とクラス名を定義し、\Concrete\Core\Job\Job クラスを継承します。
<?php namespace Application\Job; use \Concrete\Core\Job\Job as AbstractJob; class SummarizeStatistics extends AbstractJob { public function getJobName() { return t("Summarize Statistics."); } public function getJobDescription() { return t("Takes all detailed statistics and summarizes them."); } public function run() { } }
ジョブのクラス名は、ファイル名を先頭が大文字でアンダースコアを除いた形式のクラス名となります。ファイルの名前空間は Application\Job となります。すべてのジョブクラスは getJobName() と getJobDescription() メソッドを定義する必要があります。これらは、ジョブの管理画面ページで表示されます。最後に、ジョブに run() メソッドを追加します。このメソッドにこのジョブが実行された際のロジックを記載します。
結果
run() メソッドから返された文字列は自動的にジョブの管理画面ページで表示されます。一般的にこの文字列は、ジョブによって処理されたアイテム数などの、実行が成功した際の詳細メッセージを表示します。
エラーハンドリング
ジョブのエラーハンドリングは例外を投げることで行います。ジョブの中で単に例外を投げるだけで、ジョブはエラー結果を管理画面UIに表示します。
ジョブをインストールする
application/jobs ディレクトリ内のジョブを実行するには、先にインストールする必要があります。管理画面>システムと設定>最適化>自動実行ジョブページからインストールできます。アンインストールされたジョブはページの下部に表示されます。
パッケージに含める
Application 名前空間上に作成した(application/jobsにある)カスタムジョブをパッケージに含めることは簡単です。"SuperStats" という名前のパッケージに、あなたの Summarize Statistics ジョブを配置したいとします。まず、jobs ディレクトリをパッケージディレクトリに作成します:
packages/super_stats/jobs/
そして、jobs ディレクトリにクラスを次のように設置します。 packages/super_stats/jobs/summarize_statistics.php
次に、ジョブの名前空間を変更します。つまり
namespace Application\Job;
を
namespace Concrete\Package\SuperStats\Job;
に変更します。
最後に、UIからではなく、パッケージの install() メソッドでジョブをインストールする必要があるでしょう。あなたの SuperStats パッケージに、次のコードを追加します。
public function install()
{
$pkg = parent::install();
\Concrete\Core\Job\Job::installByPackage('summarize_statistics', $pkg);
}
もちろん、すでにパッケージに install() メソッドが含まれている場合は、その中に追加してください。
パッケージをアンインストールすると、パッケージからインストールした自動実行ジョブは全て自動的にアンインストールされます。そのために何かコードを書く必要はありません。