veda-consulting-company / uk.co.vedaconsulting.gdpr

Other
11 stars 55 forks source link

Error updating comms-prefs in other language (CiviCRM localized in spanish) #315

Open rubofvil opened 1 year ago

rubofvil commented 1 year ago

Summary

In form -> /civicrm/gdpr/comms-prefs/update

When you make a submission, the next error is reported

 Sorry, due to an error, we are unable to fulfill your request at the moment. You may want to contact your administrator or service provider with more details about what action you were performing when this occurred.
'Teléfono' is not a valid option for field preferred_communication_method

Ref: "Teléfono" is "Phone" in Spanish

Screenshot

error_gdpr

Error in ConfigAndLog

$Fatal Error Details = array:3 [
  "message" => "'Teléfono' is not a valid option for field preferred_communication_method"
  "code" => null
  "exception" => CiviCRM_API3_Exception {#2178
    -extraParams: array:6 [
      "error_field" => "preferred_communication_method"
      "error_code" => 2001
      "entity" => "Contact"
      "action" => "create"
      "is_error" => 1
      "error_message" => "'Teléfono' is not a valid option for field preferred_communication_method"
    ]
    #message: "'Teléfono' is not a valid option for field preferred_communication_method"
    #code: 0
    #file: "/data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/api/api.php"
    #line: 133
    trace: {
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/api/api.php:133 {
        › if (is_array($result) && !empty($result['is_error'])) {
        ›   throw new CiviCRM_API3_Exception($result['error_message'], CRM_Utils_Array::value('error_code', $result, 'undefined'), $result);
        › }
      }
      /data/disk/rpineda/static/repositories/ext/uk.co.vedaconsulting.gdpr/CRM/Gdpr/CommunicationsPreferences/Utils.php:568 { …}
      /data/disk/rpineda/static/repositories/ext/uk.co.vedaconsulting.gdpr/CRM/Gdpr/Form/UpdatePreference.php:326 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/CRM/Core/Form.php:513 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/CRM/Core/QuickForm/Action/Submit.php:56 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/packages/HTML/QuickForm/Controller.php:203 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/packages/HTML/QuickForm/Page.php:103 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/CRM/Core/Controller.php:347 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/CRM/Utils/Wrapper.php:98 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/CRM/Core/Invoke.php:285 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/CRM/Core/Invoke.php:68 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/CRM/Core/Invoke.php:36 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/profiles/commons/modules/contrib/civicrm/drupal/civicrm.module:458 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/includes/menu.inc:527 { …}
      /data/disk/rpineda/static/platforms/civigo_commons/7.91.1-3.50-5.35.2-2.3.2/index.php:21 { …}
    }
  }
]
rubofvil commented 1 year ago

Possible solution: Doing the next replacing of the params the call API contact.create are set correctly

File: https://github.com/veda-consulting-company/uk.co.vedaconsulting.gdpr/blob/master/CRM/Gdpr/CommunicationsPreferences/Utils.php#L510

Line to replace:

CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'preferred_communication_method');

New line

CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'preferred_communication_method',['labelColumn' => 'name']);