From 225c4efd255c560e3d2d640096d40e6c43f7ffc3 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 3 Aug 2023 14:58:24 +0200 Subject: [PATCH 1/8] remove unnecessary default values --- CRM/Twingle/Form/Profile.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/CRM/Twingle/Form/Profile.php b/CRM/Twingle/Form/Profile.php index b95ddc4..fb5ef0c 100644 --- a/CRM/Twingle/Form/Profile.php +++ b/CRM/Twingle/Form/Profile.php @@ -278,22 +278,19 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { 'select', 'prefix_male', E::ts('Prefix option for submitted value "male"'), - static::getPrefixOptions(), - FALSE + static::getPrefixOptions() ); $this->add( 'select', 'prefix_female', E::ts('Prefix option for submitted value "female"'), - static::getPrefixOptions(), - FALSE + static::getPrefixOptions() ); $this->add( 'select', 'prefix_other', E::ts('Prefix option for submitted value "other"'), - static::getPrefixOptions(), - FALSE + static::getPrefixOptions() ); $payment_instruments = CRM_Twingle_Profile::paymentInstruments(); From 5a9a911c014f71624377754b59467ff1a3a4b61f Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 3 Aug 2023 15:06:10 +0200 Subject: [PATCH 2/8] remove duplicate array keys --- CRM/Twingle/Profile.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/CRM/Twingle/Profile.php b/CRM/Twingle/Profile.php index 2e052d2..2619b32 100644 --- a/CRM/Twingle/Profile.php +++ b/CRM/Twingle/Profile.php @@ -281,7 +281,6 @@ class CRM_Twingle_Profile { 'pi_paypal' => E::ts('PayPal'), 'pi_sofortueberweisung' => E::ts('SOFORT Überweisung'), 'pi_amazonpay' => E::ts('Amazon Pay'), - 'pi_paydirekt' => E::ts('paydirekt'), 'pi_applepay' => E::ts('Apple Pay'), 'pi_googlepay' => E::ts('Google Pay'), 'pi_paydirekt' => E::ts('Paydirekt'), @@ -319,7 +318,6 @@ class CRM_Twingle_Profile { 'pi_paydirekt' => NULL, 'pi_applepay' => NULL, 'pi_googlepay' => NULL, - 'pi_paydirekt' => NULL, 'pi_twint' => NULL, 'pi_ideal' => NULL, 'pi_post_finance' => NULL, From 3644086ab3fc3e2bfe799ac675ff1ecedd637a53 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 3 Aug 2023 15:08:18 +0200 Subject: [PATCH 3/8] set correct value for debit cards --- CRM/Twingle/Profile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CRM/Twingle/Profile.php b/CRM/Twingle/Profile.php index 2619b32..b1beb49 100644 --- a/CRM/Twingle/Profile.php +++ b/CRM/Twingle/Profile.php @@ -309,7 +309,7 @@ class CRM_Twingle_Profile { 'financial_type_id_recur' => 1, // "Donation" 'pi_banktransfer' => 5, // "EFT" 'pi_debit_manual' => NULL, - 'pi_debit_automatic' => 3, // Debit + 'pi_debit_automatic' => 2, // Debit 'pi_creditcard' => 1, // "Credit Card" 'pi_mobilephone_germany' => NULL, 'pi_paypal' => NULL, From 0b2b8d6523d1ecda7a0b46d50f9b70fe0d84c0ab Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 3 Aug 2023 15:04:18 +0200 Subject: [PATCH 4/8] do not add the xcm default profile manually as an option it simply does not work --- CRM/Twingle/Form/Profile.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/CRM/Twingle/Form/Profile.php b/CRM/Twingle/Form/Profile.php index fb5ef0c..f6df7da 100644 --- a/CRM/Twingle/Form/Profile.php +++ b/CRM/Twingle/Form/Profile.php @@ -613,9 +613,6 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getXCMProfiles() { if (!isset(static::$_xcm_profiles)) { - static::$_xcm_profiles = array( - '' => E::ts("<default profile>"), - ); if (method_exists('CRM_Xcm_Configuration', 'getProfileList')) { $profiles = CRM_Xcm_Configuration::getProfileList(); foreach ($profiles as $profile_key => $profile_name) { From c3f4db86008be6af62717bee2ac1aab45d9aab28 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 3 Aug 2023 15:01:37 +0200 Subject: [PATCH 5/8] replace traditional syntax arrays --- CRM/Twingle/Form/Profile.php | 124 +++++++++++++++++------------------ 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/CRM/Twingle/Form/Profile.php b/CRM/Twingle/Form/Profile.php index f6df7da..1148396 100644 --- a/CRM/Twingle/Form/Profile.php +++ b/CRM/Twingle/Form/Profile.php @@ -299,7 +299,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { $this->add( 'select', // field type $pi_name, // field name - E::ts('Record %1 as', array(1 => $pi_label)), // field label + E::ts('Record %1 as', [1 => $pi_label]), // field label static::getPaymentInstruments(), // list of options TRUE // is required ); @@ -307,7 +307,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { $this->add( 'select', $pi_name . '_status', - E::ts('Record %1 donations with contribution status', array(1 => $pi_label)), + E::ts('Record %1 donations with contribution status', [1 => $pi_label]), static::getContributionStatusOptions(), TRUE ); @@ -328,7 +328,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { 'newsletter_double_opt_in', // field name E::ts('Use Double-Opt-In for newsletter'), // field label FALSE, // is not required - array() + [] ); $this->add( @@ -337,7 +337,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { E::ts('Sign up for newsletter groups'), // field label static::getNewsletterGroups(), // list of options FALSE, // is not required - array('class' => 'crm-select2 huge', 'multiple' => 'multiple') + ['class' => 'crm-select2 huge', 'multiple' => 'multiple'] ); $this->add( @@ -346,7 +346,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { E::ts('Sign up for postal mail groups'), // field label static::getPostinfoGroups(), // list of options FALSE, // is not required - array('class' => 'crm-select2 huge', 'multiple' => 'multiple') + ['class' => 'crm-select2 huge', 'multiple' => 'multiple'] ); $this->add( @@ -355,16 +355,16 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { E::ts('Sign up for Donation receipt groups'), // field label static::getDonationReceiptGroups(), // list of options FALSE, // is not required - array('class' => 'crm-select2 huge', 'multiple' => 'multiple') + ['class' => 'crm-select2 huge', 'multiple' => 'multiple'] ); $this->add( 'select', // field type 'campaign', // field name E::ts('Default Campaign'), // field label - array('' => E::ts('- none -')) + static::getCampaigns(), // list of options + ['' => E::ts('- none -')] + static::getCampaigns(), // list of options FALSE, // is not required - array('class' => 'crm-select2 huge') + ['class' => 'crm-select2 huge'] ); $this->add( @@ -386,17 +386,17 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { 'select', // field type 'membership_type_id', // field name E::ts('Create membership of type'), // field label - array('' => E::ts('- none -')) + static::getMembershipTypes(), // list of options + ['' => E::ts('- none -')] + static::getMembershipTypes(), // list of options FALSE, // is not required - array('class' => 'crm-select2 huge') + ['class' => 'crm-select2 huge'] ); $this->add( 'select', // field type 'membership_type_id_recur', // field name E::ts('Create membership of type (recurring)'), // field label - array('' => E::ts('- none -')) + static::getMembershipTypes(), // list of options + ['' => E::ts('- none -')] + static::getMembershipTypes(), // list of options FALSE, // is not required - array('class' => 'crm-select2 huge') + ['class' => 'crm-select2 huge'] ); $this->add( 'text', @@ -410,7 +410,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { 'text', // field type 'contribution_source', // field name E::ts('Contribution source'), // field label - array() + [] ); $this->add( @@ -431,16 +431,16 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { 'textarea', // field type 'custom_field_mapping', // field name E::ts('Custom field mapping'), // field label - array() + [] ); - $this->addButtons(array( - array( + $this->addButtons([ + [ 'type' => 'submit', 'name' => E::ts('Save'), 'isDefault' => TRUE, - ), - )); + ], + ]); // Export form elements. parent::buildQuickForm(); @@ -544,7 +544,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public function setDefaultValues() { $defaults = parent::setDefaultValues(); - if (in_array($this->_op, array('create', 'edit', 'copy'))) { + if (in_array($this->_op, ['create', 'edit', 'copy'])) { $defaults['name'] = $this->profile->getName(); $profile_data = $this->profile->getData(); foreach ($profile_data as $element_name => $value) { @@ -594,11 +594,11 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getLocationTypes() { if (!isset(static::$_locationTypes)) { - static::$_locationTypes = array(); - $query = civicrm_api3('LocationType', 'get', array( + static::$_locationTypes = []; + $query = civicrm_api3('LocationType', 'get', [ 'option.limit' => 0, 'is_active' => 1, - )); + ]); foreach ($query['values'] as $type) { static::$_locationTypes[$type['id']] = $type['name']; } @@ -633,12 +633,12 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getFinancialTypes() { if (!isset(static::$_financialTypes)) { - static::$_financialTypes = array(); - $query = civicrm_api3('FinancialType', 'get', array( + static::$_financialTypes = []; + $query = civicrm_api3('FinancialType', 'get', [ 'option.limit' => 0, 'is_active' => 1, 'return' => 'id,name' - )); + ]); foreach ($query['values'] as $type) { static::$_financialTypes[$type['id']] = $type['name']; } @@ -656,12 +656,12 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getMembershipTypes() { if (!isset(static::$_membershipTypes)) { - static::$_membershipTypes = array(); - $query = civicrm_api3('MembershipType', 'get', array( + static::$_membershipTypes = []; + $query = civicrm_api3('MembershipType', 'get', [ 'option.limit' => 0, 'is_active' => 1, 'return' => 'id,name' - )); + ]); foreach ($query['values'] as $type) { static::$_membershipTypes[$type['id']] = $type['name']; } @@ -679,16 +679,16 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getGenderOptions() { if (!isset(static::$_genderOptions)) { - static::$_genderOptions = array(); - $query = civicrm_api3('OptionValue', 'get', array( + static::$_genderOptions = []; + $query = civicrm_api3('OptionValue', 'get', [ 'option.limit' => 0, 'option_group_id' => 'gender', 'is_active' => 1, - 'return' => array( + 'return' => [ 'value', 'label', - ), - )); + ], + ]); foreach ($query['values'] as $gender) { static::$_genderOptions[$gender['value']] = $gender['label']; } @@ -706,16 +706,16 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getPrefixOptions() { if (!isset(static::$_prefixOptions)) { - static::$_prefixOptions = array('' => E::ts('none')); - $query = civicrm_api3('OptionValue', 'get', array( + static::$_prefixOptions = ['' => E::ts('none')]; + $query = civicrm_api3('OptionValue', 'get', [ 'option.limit' => 0, 'option_group_id' => 'individual_prefix', 'is_active' => 1, - 'return' => array( + 'return' => [ 'value', 'label', - ), - )); + ], + ]); foreach ($query['values'] as $prefix) { static::$_prefixOptions[$prefix['value']] = $prefix['label']; } @@ -732,11 +732,11 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getSepaCreditors() { if (!isset(static::$_sepaCreditors)) { - static::$_sepaCreditors = array(); + static::$_sepaCreditors = []; if (CRM_Twingle_Submission::civiSepaEnabled()) { - $result = civicrm_api3('SepaCreditor', 'get', array( + $result = civicrm_api3('SepaCreditor', 'get', [ 'option.limit' => 0, - )); + ]); foreach ($result['values'] as $sepa_creditor) { static::$_sepaCreditors[$sepa_creditor['id']] = $sepa_creditor['name']; } @@ -755,13 +755,13 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getPaymentInstruments() { if (!isset(self::$_paymentInstruments)) { - self::$_paymentInstruments = array(); - $query = civicrm_api3('OptionValue', 'get', array( + self::$_paymentInstruments = []; + $query = civicrm_api3('OptionValue', 'get', [ 'option.limit' => 0, 'option_group_id' => 'payment_instrument', 'is_active' => 1, 'return' => 'value,label' - )); + ]); foreach ($query['values'] as $payment_instrument) { // Do not include CiviSEPA payment instruments, but add a SEPA option if // enabled. @@ -793,14 +793,14 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { $query = civicrm_api3( 'OptionValue', 'get', - array( + [ 'option.limit' => 0, 'option_group_id' => 'contribution_status', - 'return' => array( + 'return' => [ 'value', 'label', - ) - ) + ] + ] ); foreach ($query['values'] as $contribution_status) { @@ -822,20 +822,20 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getNewsletterGroups() { if (!isset(static::$_newsletterGroups)) { - static::$_newsletterGroups = array(); - $group_types = civicrm_api3('OptionValue', 'get', array( + static::$_newsletterGroups = []; + $group_types = civicrm_api3('OptionValue', 'get', [ 'option.limit' => 0, 'option_group_id' => 'group_type', 'name' => CRM_Twingle_Submission::GROUP_TYPE_NEWSLETTER, - )); + ]); if ($group_types['count'] > 0) { $group_type = reset($group_types['values']); - $query = civicrm_api3('Group', 'get', array( + $query = civicrm_api3('Group', 'get', [ 'is_active' => 1, - 'group_type' => array('LIKE' => '%' . CRM_Utils_Array::implodePadded($group_type['value']) . '%'), + 'group_type' => ['LIKE' => '%' . CRM_Utils_Array::implodePadded($group_type['value']) . '%'], 'option.limit' => 0, 'return' => 'id,name' - )); + ]); foreach ($query['values'] as $group) { static::$_newsletterGroups[$group['id']] = $group['name']; } @@ -856,12 +856,12 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getGroups() { if (!isset(static::$_groups)) { - static::$_groups = array(); - $query = civicrm_api3('Group', 'get', array( + static::$_groups = []; + $query = civicrm_api3('Group', 'get', [ 'option.limit' => 0, 'is_active' => 1, 'return' => 'id,name' - )); + ]); foreach ($query['values'] as $group) { static::$_groups[$group['id']] = $group['name']; } @@ -902,14 +902,14 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { */ public static function getCampaigns() { if (!isset(static::$_campaigns)) { - static::$_campaigns = array(); - $query = civicrm_api3('Campaign', 'get', array( + static::$_campaigns = []; + $query = civicrm_api3('Campaign', 'get', [ 'option.limit' => 0, - 'return' => array( + 'return' => [ 'id', 'title', - ) - )); + ] + ]); foreach ($query['values'] as $campaign) { static::$_campaigns[$campaign['id']] = $campaign['title']; } From a868e87ba722f3ddf61c01648a1f2d36108e01f0 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 3 Aug 2023 15:05:34 +0200 Subject: [PATCH 6/8] minor changes --- CRM/Twingle/Profile.php | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/CRM/Twingle/Profile.php b/CRM/Twingle/Profile.php index b1beb49..0f9115e 100644 --- a/CRM/Twingle/Profile.php +++ b/CRM/Twingle/Profile.php @@ -52,14 +52,12 @@ class CRM_Twingle_Profile { /** * Logs (production) access to this profile - * - * @return bool */ public function logAccess() { CRM_Core_DAO::executeQuery(" - UPDATE civicrm_twingle_profile - SET - last_access = NOW(), + UPDATE civicrm_twingle_profile + SET + last_access = NOW(), access_counter = access_counter + 1 WHERE name = %1", [1 => [$this->name, 'String']]); } @@ -90,7 +88,7 @@ class CRM_Twingle_Profile { $custom_field_mapping = []; if (!empty($custom_field_definition = $this->getAttribute('custom_field_mapping'))) { foreach (preg_split('/\r\n|\r|\n/', $custom_field_definition, -1, PREG_SPLIT_NO_EMPTY) as $custom_field_map) { - list($twingle_field_name, $custom_field_name) = explode("=", $custom_field_map); + [$twingle_field_name, $custom_field_name] = explode("=", $custom_field_map); $custom_field_mapping[$twingle_field_name] = $custom_field_name; } } @@ -133,12 +131,7 @@ class CRM_Twingle_Profile { * @return mixed | NULL */ public function getAttribute($attribute_name, $default = NULL) { - if (isset($this->data[$attribute_name])) { - return $this->data[$attribute_name]; - } - else { - return $default; - } + return $this->data[$attribute_name] ?? $default; } /** From fd99f3b24ff1bea7145c63595882dac2381926c5 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Tue, 29 Aug 2023 16:35:03 +0200 Subject: [PATCH 7/8] add default option add a 'select profile' default option --- CRM/Twingle/Form/Profile.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CRM/Twingle/Form/Profile.php b/CRM/Twingle/Form/Profile.php index 1148396..ba542eb 100644 --- a/CRM/Twingle/Form/Profile.php +++ b/CRM/Twingle/Form/Profile.php @@ -614,6 +614,9 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { public static function getXCMProfiles() { if (!isset(static::$_xcm_profiles)) { if (method_exists('CRM_Xcm_Configuration', 'getProfileList')) { + static::$_xcm_profiles = array( + '' => E::ts("<select profile>"), + ); $profiles = CRM_Xcm_Configuration::getProfileList(); foreach ($profiles as $profile_key => $profile_name) { static::$_xcm_profiles[$profile_key] = $profile_name; From 89df7482a6be72bfbd0ead47ad3367cf9098c416 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Wed, 6 Sep 2023 16:45:13 +0200 Subject: [PATCH 8/8] throw error if no default project is found --- CRM/Twingle/Profile.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CRM/Twingle/Profile.php b/CRM/Twingle/Profile.php index 0f9115e..80238be 100644 --- a/CRM/Twingle/Profile.php +++ b/CRM/Twingle/Profile.php @@ -350,6 +350,8 @@ class CRM_Twingle_Profile { * @param $project_id * * @return CRM_Twingle_Profile + * @throws \CRM\Twingle\Exceptions\ProfileException + * @throws \Civi\Core\Exception\DBQueryException */ public static function getProfileForProject($project_id) { $profiles = self::getProfiles(); @@ -361,7 +363,16 @@ class CRM_Twingle_Profile { } // If none matches, use the default profile. - return $profiles['default']; + $default_profile = $profiles['default']; + if (!empty($default_profile)) { + return $default_profile; + } + else { + throw new ProfileException( + 'Could not find default profile', + ProfileException::ERROR_CODE_DEFAULT_PROFILE_NOT_FOUND + ); + } } /**