Ejegg has uploaded a new change for review.

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

Change subject: Include 'Do Not Solicit' field in offline imports
......................................................................

Include 'Do Not Solicit' field in offline imports

Change-Id: I8884cd6f970f4ab5e02e3cdc8c7b36ef0101a9dd
---
M sites/all/modules/offline2civicrm/ChecksFile.php
M sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
M sites/all/modules/wmf_civicrm/wmf_civicrm.module
3 files changed, 49 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/crm 
refs/changes/89/171889/1

diff --git a/sites/all/modules/offline2civicrm/ChecksFile.php 
b/sites/all/modules/offline2civicrm/ChecksFile.php
index c16a0ef..07231e6 100644
--- a/sites/all/modules/offline2civicrm/ChecksFile.php
+++ b/sites/all/modules/offline2civicrm/ChecksFile.php
@@ -250,6 +250,7 @@
             'Do Not Mail' => 'do_not_mail',
             'Do Not Phone' => 'do_not_phone',
             'Do Not SMS' => 'do_not_sms',
+            'Do Not Solicit' => 'do_not_solicit',
             'Email' => 'email',
             'First Name' => 'first_name',
             'Gift Source' => 'gift_source',
diff --git a/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php 
b/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
index ccac575..60518f9 100644
--- a/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
+++ b/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
@@ -82,6 +82,28 @@
     }
 
     /**
+     * Make sure we import 'Do Not Solicit' values to the wmf_donor table
+     */
+    public function testImportDoNotSolicit() {
+        $msg = array(
+            'email' => 'nob...@wikimedia.org',
+            'gross' => '1.23',
+            'currency' => 'USD',
+            'payment_method' => 'cc',
+            'gateway' => 'test_gateway',
+            'do_not_solicit' => 'Y',
+            'gateway_txn_id' => mt_rand(),
+        );
+        $contribution = wmf_civicrm_contribution_message_import( $msg );
+        $donor_fields = wmf_civicrm_contribution_get_custom_values(
+            $contribution['contact_id'],
+            array( 'do_not_solicit' ),
+            'wmf_donor'
+        );
+        $this->assertEquals( '1', $donor_fields['do_not_solicit'] );
+    }
+
+    /**
      * Remove unique stuff which cannot be expected
      */
     function stripUniques( &$contribution ) {
diff --git a/sites/all/modules/wmf_civicrm/wmf_civicrm.module 
b/sites/all/modules/wmf_civicrm/wmf_civicrm.module
index 6a5a08d..971352d 100644
--- a/sites/all/modules/wmf_civicrm/wmf_civicrm.module
+++ b/sites/all/modules/wmf_civicrm/wmf_civicrm.module
@@ -126,13 +126,12 @@
     return array_merge( $contribution, $custom_values );
 }
 
-// FIXME all of these custom field helpers share flaws: they do not consider 
entity type, or custom group name
-function wmf_civicrm_contribution_get_custom_values( $contribution_id, $names )
+function wmf_civicrm_contribution_get_custom_values( $entity_id, $names, 
$group_name = null )
 {
     $names = (array)$names;
-    $params[ 'entityID' ] = $contribution_id;
+    $params[ 'entityID' ] = $entity_id;
     foreach ( $names as $name ) {
-        $field = wmf_civicrm_get_custom_field_name( $name );
+        $field = wmf_civicrm_get_custom_field_name( $name, $group_name );
         $params[ $field ] = 1;
         $field_map[ $field ] = $name;
     }
@@ -146,13 +145,12 @@
     return $ret;
 }
 
-// FIXME: this is only valid for contributions
-function wmf_civicrm_set_custom_field_values($entity_id, $map)
+function wmf_civicrm_set_custom_field_values($entity_id, $map, $group_name = 
null)
 {
     $params = array(
         'entityID' => $entity_id,
     );
-    $custom_fields = wmf_civicrm_get_custom_field_map(array_keys($map));
+    $custom_fields = wmf_civicrm_get_custom_field_map(array_keys($map), 
$group_name);
     foreach ($map as $field_name => $value)
     {
         $params[$custom_fields[$field_name]] = $value;
@@ -181,8 +179,8 @@
     return $custom_fields;
 }
 
-function wmf_civicrm_get_custom_field_name( $field_name ) {
-    $custom_fields = wmf_civicrm_get_custom_field_map( array( $field_name ) );
+function wmf_civicrm_get_custom_field_name( $field_name, $group_name = null ) {
+    $custom_fields = wmf_civicrm_get_custom_field_map( array( $field_name ), 
$group_name );
     return $custom_fields[ $field_name ];
 }
 
@@ -912,9 +910,27 @@
             "Contact could not be added. Aborting import. Contact data was " . 
print_r($contact, true) . " Original error: " . $ex->getMessage()
         );
     }
+    $contact_id = $contact_result['id'];
+
+    // Add any wmf_donor custom field values
+    $wmf_donor_fields = array(
+        'do_not_solicit',
+    );
+    $wmf_donor_values = array();
+    foreach ( $wmf_donor_fields as $donor_field ) {
+        if ( isset( $msg[$donor_field] ) ) {
+            $wmf_donor_values[$donor_field] = $msg[$donor_field];
+        }
+    }
+    if ( !empty( $wmf_donor_values ) ) {
+        try {
+            wmf_civicrm_set_custom_field_values( $contact_id, 
$wmf_donor_values, 'wmf_donor' );
+        } catch ( WmfException $ex ) {
+            watchdog( 'wmf_civicrm', "Setting wmf_donor custom field values 
failed with details: {$ex->getMessage()}", array(), WATCHDOG_ERROR );
+        }
+    }
 
     // Do we have any tags we need to add to this contact?
-    $contact_id = $contact_result['id'];
     if ( $msg['contact_tags'] ) {
         $supported_tags = array_flip(CRM_Core_PseudoConstant::tag());
         $stacked_ex = array();

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8884cd6f970f4ab5e02e3cdc8c7b36ef0101a9dd
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/crm
Gerrit-Branch: master
Gerrit-Owner: Ejegg <eeggles...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to