web-dev-qa-db-ja.com

drupal + civicrmインストールプロファイルにcivicrm拡張機能を自動的にインストールする方法

Drupal配布/インストールプロファイル CiviCRMスターターキット に似ています。これにより、インストール中にDrupal 7およびCiviCRM 4.3がインストールされます配布。

" Extended Reports for CiviCRM "などのCiviCRM拡張をディストリビューションに追加して、ユーザーがディストリビューションをインストールするたびに、これらのCiviCRM拡張もデフォルトでインストールされるようにします。

以下のように、これらのCiviCRM拡張機能をdrupal-org.makeファイルに追加しました。

libraries[nz.co.fuzion.extendedreport][download][type] = get
libraries[nz.co.fuzion.extendedreport][download][url] = "https://github.com/eileenmcnaughton/nz.co.fuzion.extendedreport/archive/master.Zip"
libraries[nz.co.fuzion.extendedreport][destination] = "extensions"

drupalパッケージングスクリプト(drush make)を実行すると、これらはダウンロード/解凍されますが、ディストリビューションインストールの一部としてこれらを有効にする方法がわかりません。

以下のように、profile = infoファイルにDrupalモジュールを追加できることを知っています。

dependencies[] = civicrm

ただし、CiviCRM Extensionsを追加する方法と場所がわからないため、配布/インストールプロファイルセットアップの一部としてインストールされます。

インストールプロファイルのセットアップの一部としてCiviCRM Extensionsを自動的にインストールする方法を提案してください。

3
amitgoyal

現在のAPI呼び出しには、キーだけではありません。モジュールをインストールプロファイルの一部として有効にするには、CiviCRMを初期化できる場合は、このコードをプロセスのどこかに含める必要があります...

  if (!civicrm_initialize()) {
    drupal_set_message(t('Failed to initialize CiviCRM'));
    return;
  }

  require_once 'CRM/Extension/Manager.php';

  $params = array(
    'version' => 3,
    'sequential' => 1,
    'key' => 'org.civicrm.volunteer',
  );

  $result = civicrm_api('Extension', 'install', $params);

Extensions DirectoryとResourceURLがcivicrm.settings.phpで設定されている限り、設定する必要があります。私はPantheonユーザーの拡張機能ディレクトリを設定していますが、ResourceURL https://drupal.org/node/1980088 を動的に構成する必要があります。

「Drupalディストリビューション/インストールプロファイルsimilarto CiviCRM Starter Kit)」を作成するのではなく、ビルドを検討してくださいCiviCRMスターターキットをベースディストリビューションとして使用し、メンテナンスに貢献します。このパッチと、最新バージョンのOpenAtriumがPanopolyでどのように構築されているかを確認してください。

https://drupal.org/comment/6117722#comment-6117722

http://drupalcode.org/project/openatrium.git/blob/refs/heads/7.x-2.x:/drupal-org-core.make

この安定性を維持するためにCiviCRMに戻す必要があるパッチをプッシュするために作業する開発者が本当に必要です。 CiviCRMのリリースごとの変更点を理解する時間がほとんどありません。/profilesディレクトリからCiviCRMをインストールして実行し、CiviCRMをdrush makeでパッケージ化し、必要なライブラリを再構築できるようになるまでに数年かかりました。

CiviCRMスターターキットは、他のユースケース固有のディストリビューションを構築するためのベースインストールを維持するように常に設計されていますが、私はこれまで自分でこれを維持してきており、いくつかの助けが欲しいと思います。

UPDATE:私は先に進んで作成しました https://drupal.org/project/civicrm_extension_enabler このキューのトラブルシューティングコードは難しい。そのモジュールはCiviVolunteer拡張を有効にし、実行中のサイトで動作します https://dashboard.getpantheon.com/products/civicrm_starterkit/spinup CiviVolunteerがsites/all/extensionsにアップロードされると

.installにハードコードされた特定の拡張機能を、ディストリビューションによって追加された拡張機能の配列になるように変更する問題を開始しました https://drupal.org/node/2159317

10
kreynen

(Drupal install-profilesを使用して)これを正確に実行していませんが、他のコンテキストでのセットアップの自動化に役立つ2つの重要な要素があります。

  1. 従来(Civi 3.x => 4.2を含む)、拡張ディレクトリを作成し、Civiがそのディレクトリをスキャンするように構成オプションを設定する必要がありました。これはもう必要ありません。 4.3以降では、CiviCRMソースツリーの任意の場所に拡張ファイルを配置できます-$ civicrm_root/tools/extensionsの一部です。 4.4以降では、$ drupal_root/vendorに拡張機能を配置することもできます。

  2. 拡張機能を有効にするには、CiviCRMの拡張機能APIを呼び出します。この呼び出しは、CiviCRMのコアプラットフォームがインストールされ、ブートストラップされた後に行う必要があります。

APIの使用例

## PHP
$result = civicrm_api('Extension', 'install', array('key' => 'my.extension.name'));

## PHP
$result = civicrm_api('Extension', 'install', array(
  'keys' => array(
    'my.extension.num1',
    'my.extension.num2',
    'my.extension.num3',
  ),
));

## CLI
drush cvapi extension.install key=my.extension.name

## CLI
drush cvapi extension.install keys=my.extension.num1,my.extension.num2,my.extension.num3
1
Tim O