Eileen has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/243076

Change subject: Create campaign option group
......................................................................

Create campaign option group

Also protect from Civi exception when a campaign doesn't exist yet.

Bug: T99838
Change-Id: I043dc8c702fb3e3a7a49d46c099be1bc4339ea59
---
M sites/all/modules/wmf_campaigns/WmfCampaign.php
M sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php
M sites/all/modules/wmf_campaigns/wmf_campaigns.install
M sites/all/modules/wmf_campaigns/wmf_campaigns.module
4 files changed, 49 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/crm 
refs/changes/76/243076/1

diff --git a/sites/all/modules/wmf_campaigns/WmfCampaign.php 
b/sites/all/modules/wmf_campaigns/WmfCampaign.php
index 21d3901..fc9b853 100644
--- a/sites/all/modules/wmf_campaigns/WmfCampaign.php
+++ b/sites/all/modules/wmf_campaigns/WmfCampaign.php
@@ -6,12 +6,20 @@
 
     protected function __construct() {}
 
+    /**
+     * @return WmfCampaign|null
+     */
     public static function fromKey( $key ) {
-        $result = db_select( 'wmf_campaigns_campaign' )
-            ->fields( 'wmf_campaigns_campaign' )
-            ->condition( 'campaign_key', $key )
-            ->execute()
-            ->fetchAssoc();
+        try {
+            $result = db_select( 'wmf_campaigns_campaign' )
+                ->fields( 'wmf_campaigns_campaign' )
+                ->condition( 'campaign_key', $key )
+                ->execute()
+                ->fetchAssoc();
+        } catch ( CiviCRM_API3_Exception $ex ) {
+            watchdog( 'wmf_campaigns', "Couldn't find campaign {$key}: " . 
$ex->getMessage(), NULL, WATCHDOG_WARNING );
+            return null;
+        }
         return WmfCampaign::fromDbRecord( $result );
     }
 
diff --git a/sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php 
b/sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php
index 912191a..f0407f2 100644
--- a/sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php
+++ b/sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php
@@ -6,6 +6,11 @@
  * @group WmfCampaigns
  */
 class WmfCampaignTest extends BaseWmfDrupalPhpUnitTestCase {
+    public $campaign_custom_field_name;
+    public $campaign_key;
+    public $notification_email;
+    public $contact_id;
+
     function setUp() {
         parent::setUp();
         civicrm_initialize();
@@ -17,6 +22,11 @@
         $this->campaign_key = 'fooCamp' . mt_rand();
         $this->notification_email = '[email protected]';
 
+        civicrm_api3( 'OptionValue', 'create', array(
+            'option_group_id' => WMF_CAMPAIGNS_OPTION_GROUP_NAME,
+            'name' => $this->campaign_key,
+        ) );
+
         $result = civicrm_api3( 'Contact', 'create', array(
             'contact_type' => 'Individual',
             'first_name' => 'Testes',
diff --git a/sites/all/modules/wmf_campaigns/wmf_campaigns.install 
b/sites/all/modules/wmf_campaigns/wmf_campaigns.install
index 70e9cde..3404f4b 100644
--- a/sites/all/modules/wmf_campaigns/wmf_campaigns.install
+++ b/sites/all/modules/wmf_campaigns/wmf_campaigns.install
@@ -1,5 +1,9 @@
 <?php
 
+function wmf_campaigns_install() {
+    wmf_campaigns_update_7000();
+}
+
 function wmf_campaigns_schema() {
     $schema = array();
 
@@ -23,3 +27,24 @@
 
     return $schema;
 }
+
+/**
+ * Create campaign group
+ */
+function wmf_campaigns_update_7000() {
+    civicrm_initialize();
+
+    $result = civicrm_api3( 'OptionGroup', 'get', array(
+        'name' => WMF_CAMPAIGNS_OPTION_GROUP_NAME,
+    ) );
+
+    if ( empty( $result['id'] ) ) {
+        $result = civicrm_api3( 'OptionGroup', 'create', array(
+            'name' => WMF_CAMPAIGNS_OPTION_GROUP_NAME,
+        ) );
+
+        if ( empty( $result['id'] ) ) {
+            throw new RuntimeException( 'Failed to create campaign option 
group.' );
+        }
+    }
+}
diff --git a/sites/all/modules/wmf_campaigns/wmf_campaigns.module 
b/sites/all/modules/wmf_campaigns/wmf_campaigns.module
index 7801eda..a24128f 100644
--- a/sites/all/modules/wmf_campaigns/wmf_campaigns.module
+++ b/sites/all/modules/wmf_campaigns/wmf_campaigns.module
@@ -3,6 +3,7 @@
 use wmf_communication\Mailer;
 use wmf_communication\Templating;
 
+// FIXME: Find the production value dynamically.
 const WMF_CAMPAIGNS_OPTION_GROUP_NAME = 'appeal_20080709183729';
 
 /**

-- 
To view, visit https://gerrit.wikimedia.org/r/243076
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I043dc8c702fb3e3a7a49d46c099be1bc4339ea59
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/crm
Gerrit-Branch: master
Gerrit-Owner: Eileen <[email protected]>
Gerrit-Reviewer: Awight <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to