From 19fc13dd468b85712ab2d132a7788f2b08c2e878 Mon Sep 17 00:00:00 2001 From: Gravity Forms Date: Mon, 22 Apr 2024 12:54:42 +0000 Subject: [PATCH] Updates to 1.5 --- change_log.txt | 44 + class-gf-icontact.php | 896 ++++++++++++++++++ css/form_settings.css | 23 + css/form_settings.min.css | 1 + icontact.php | 53 ++ images/menu-icon.svg | 6 + includes/class-icontact.php | 334 +++++++ languages/gravityformsicontact-ar.mo | Bin 0 -> 514 bytes languages/gravityformsicontact-ca.mo | Bin 0 -> 1528 bytes languages/gravityformsicontact-da_DK.mo | Bin 0 -> 6238 bytes languages/gravityformsicontact-de_DE.mo | Bin 0 -> 6464 bytes .../gravityformsicontact-de_DE_formal.mo | Bin 0 -> 868 bytes languages/gravityformsicontact-en_AU.mo | Bin 0 -> 6100 bytes languages/gravityformsicontact-en_GB.mo | Bin 0 -> 6105 bytes languages/gravityformsicontact-es_ES.mo | Bin 0 -> 6516 bytes languages/gravityformsicontact-fi.mo | Bin 0 -> 6148 bytes languages/gravityformsicontact-fr_CA.mo | Bin 0 -> 453 bytes languages/gravityformsicontact-fr_FR.mo | Bin 0 -> 6623 bytes languages/gravityformsicontact-he_IL.mo | Bin 0 -> 6494 bytes languages/gravityformsicontact-hi_IN.mo | Bin 0 -> 9094 bytes languages/gravityformsicontact-hu_HU.mo | Bin 0 -> 458 bytes languages/gravityformsicontact-it_IT.mo | Bin 0 -> 6517 bytes languages/gravityformsicontact-ja.mo | Bin 0 -> 7097 bytes languages/gravityformsicontact-nb_NO.mo | Bin 0 -> 1562 bytes languages/gravityformsicontact-nl_BE.mo | Bin 0 -> 454 bytes languages/gravityformsicontact-nl_NL.mo | Bin 0 -> 6370 bytes languages/gravityformsicontact-pt_BR.mo | Bin 0 -> 6441 bytes languages/gravityformsicontact-pt_PT.mo | Bin 0 -> 6529 bytes languages/gravityformsicontact-ru_RU.mo | Bin 0 -> 7946 bytes languages/gravityformsicontact-sv_SE.mo | Bin 0 -> 455 bytes languages/gravityformsicontact-tr_TR.mo | Bin 0 -> 5996 bytes languages/gravityformsicontact-zh_CN.mo | Bin 0 -> 1213 bytes languages/gravityformsicontact.pot | 237 +++++ 33 files changed, 1594 insertions(+) create mode 100644 change_log.txt create mode 100644 class-gf-icontact.php create mode 100644 css/form_settings.css create mode 100644 css/form_settings.min.css create mode 100644 icontact.php create mode 100644 images/menu-icon.svg create mode 100644 includes/class-icontact.php create mode 100644 languages/gravityformsicontact-ar.mo create mode 100644 languages/gravityformsicontact-ca.mo create mode 100644 languages/gravityformsicontact-da_DK.mo create mode 100644 languages/gravityformsicontact-de_DE.mo create mode 100644 languages/gravityformsicontact-de_DE_formal.mo create mode 100644 languages/gravityformsicontact-en_AU.mo create mode 100644 languages/gravityformsicontact-en_GB.mo create mode 100644 languages/gravityformsicontact-es_ES.mo create mode 100644 languages/gravityformsicontact-fi.mo create mode 100644 languages/gravityformsicontact-fr_CA.mo create mode 100644 languages/gravityformsicontact-fr_FR.mo create mode 100644 languages/gravityformsicontact-he_IL.mo create mode 100644 languages/gravityformsicontact-hi_IN.mo create mode 100644 languages/gravityformsicontact-hu_HU.mo create mode 100644 languages/gravityformsicontact-it_IT.mo create mode 100644 languages/gravityformsicontact-ja.mo create mode 100644 languages/gravityformsicontact-nb_NO.mo create mode 100644 languages/gravityformsicontact-nl_BE.mo create mode 100644 languages/gravityformsicontact-nl_NL.mo create mode 100644 languages/gravityformsicontact-pt_BR.mo create mode 100644 languages/gravityformsicontact-pt_PT.mo create mode 100644 languages/gravityformsicontact-ru_RU.mo create mode 100644 languages/gravityformsicontact-sv_SE.mo create mode 100644 languages/gravityformsicontact-tr_TR.mo create mode 100644 languages/gravityformsicontact-zh_CN.mo create mode 100644 languages/gravityformsicontact.pot diff --git a/change_log.txt b/change_log.txt new file mode 100644 index 0000000..835e7e6 --- /dev/null +++ b/change_log.txt @@ -0,0 +1,44 @@ +### 1.5 | 2020-09-08 +- Added support for Gravity Forms 2.5. +- Fixed a PHP fatal error which occurs when accessing an existing feed which was created by a different iContact account. + + +### 1.4 | 2020-03-24 +- Added translations for Hebrew, Hindi, Japanese, and Turkish. +- Updated account username setting label. +- Updated stylesheets to use minified versions. +- Fixed PHP 7.4 notices which occur when the API is initializing and the settings are empty. +- Fixed a PHP 7.4 notice which occurs on the feed configuration page when saving a new feed. +- Fixed the width of the Feed Name setting on the feed configuration page. + + +### 1.3 | 2018-03-30 +- Added security enhancements. +- Added GPL to plugin header. +- Added the *gform_icontact_request_args* hook allowing customers to modify the options array before sending requests to iContact. +- Updated Plugin URI and Author URI to use https. +- Fixed PHP notice on the add-on settings page. +- Fixed strings for translations. +- Increased limit for number of client folders retrieved from iContact. + + +### 1.2 | 2016-08-31 +- Added feed duplication support. +- Added support for delaying feed processing until payment by PayPal Standard is successfully completed. +- Fixed an issue with the request failed message. + + +### 1.1 | 2015-12-16 +- Added auto-mapping of first name and last name fields if only one name field exists. +- Added client folder option to plugin settings. +- Added default name for new feeds. +- Added gf_icontact() for easily getting an iContact instance. +- Fixed PHP warning during feed processing. +- Updated feed processing to abort if value of mapped Email Address field is invalid. +- Updated feed processing to use add_feed_error(). +- Updated feed field mapping styling. +- Updated feed settings to support more than 20 iContact lists. + + +### 1.0 | 2015-05-20 +- It's all new! \ No newline at end of file diff --git a/class-gf-icontact.php b/class-gf-icontact.php new file mode 100644 index 0000000..eb67c9d --- /dev/null +++ b/class-gf-icontact.php @@ -0,0 +1,896 @@ +add_delayed_payment_support( + array( + 'option_label' => esc_html__( 'Subscribe contact to iContact only when payment is received.', 'gravityformsicontact' ) + ) + ); + + } + + /** + * Register needed styles. + * + * @access public + * @return array $styles + */ + public function styles() { + $min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG || isset( $_GET['gform_debug'] ) ? '' : '.min'; + + $styles = array( + array( + 'handle' => 'gform_icontact_form_settings_css', + 'src' => $this->get_base_url() . "/css/form_settings{$min}.css", + 'version' => $this->_version, + 'enqueue' => array( + array( 'admin_page' => array( 'form_settings' ) ), + ) + ) + ); + + return array_merge( parent::styles(), $styles ); + + } + + /** + * Return the plugin's icon for the plugin/form settings menu. + * + * @since 1.4 + * + * @return string + */ + public function get_menu_icon() { + + return file_get_contents( $this->get_base_path() . '/images/menu-icon.svg' ); + + } + + /** + * Setup plugin settings fields. + * + * @access public + * @return array + */ + public function plugin_settings_fields() { + + return array( + array( + 'title' => '', + 'description' => $this->plugin_settings_description(), + 'fields' => array( + array( + 'name' => 'app_id', + 'label' => esc_html__( 'Application ID', 'gravityformsicontact' ), + 'type' => 'text', + 'class' => 'medium', + 'feedback_callback' => array( $this, 'initialize_api' ) + ), + array( + 'name' => 'api_username', + 'label' => esc_html__( 'Account Username', 'gravityformsicontact' ), + 'type' => 'text', + 'class' => 'medium', + 'feedback_callback' => array( $this, 'initialize_api' ) + ), + array( + 'name' => 'api_password', + 'label' => esc_html__( 'API Password', 'gravityformsicontact' ), + 'type' => 'text', + 'class' => 'medium', + 'input_type' => 'password', + 'feedback_callback' => array( $this, 'initialize_api' ) + ), + array( + 'name' => 'client_folder', + 'label' => esc_html__( 'Client Folder', 'gravityformsicontact' ), + 'type' => 'select', + 'choices' => version_compare( GFForms::$version, '2.5-dev-1', '>=' ) ? array( $this, 'client_folders_for_plugin_setting' ) : $this->client_folders_for_plugin_setting(), + 'dependency' => array( $this, 'initialize_api' ), + 'no_choices' => esc_html__( 'Unable to retrieve Client Folders.', 'gravityformsicontact' ), + ), + array( + 'type' => 'save', + 'messages' => array( + 'success' => esc_html__( 'iContact settings have been updated.', 'gravityformsicontact' ) + ), + ), + ), + ), + ); + + } + + /** + * Prepare plugin settings description. + * + * @access public + * @return string $description + */ + public function plugin_settings_description() { + + $description = '

'; + $description .= sprintf( + esc_html__( 'iContact makes it easy to send email newsletters to your customers, manage your subscriber lists, and track campaign performance. Use Gravity Forms to collect customer information and automatically add it to your iContact list. If you don\'t have an iContact account, you can %1$s sign up for one here.%2$s', 'gravityformsicontact' ), + '', '' + ); + $description .= '

'; + + if ( ! $this->initialize_api() ) { + + $description .= '

'; + $description .= esc_html__( 'Gravity Forms iContact Add-On requires your Application ID, API username and API password. To obtain an application ID, follow the steps below:', 'gravityformsicontact' ); + $description .= '

'; + + $description .= '
    '; + $description .= '
  1. ' . sprintf( + esc_html__( 'Visit iContact\'s %1$s application registration page.%2$s', 'gravityformsicontact' ), + '', '' + ) . '
  2. '; + $description .= '
  3. ' . esc_html__( 'Set an application name and description for your application.', 'gravityformsicontact' ) . '
  4. '; + $description .= '
  5. ' . esc_html__( 'Choose to show information for API 2.0.', 'gravityformsicontact' ) . '
  6. '; + $description .= '
  7. ' . esc_html__( 'Copy the provided API-AppId into the Application ID setting field below.', 'gravityformsicontact' ) . '
  8. '; + $description .= '
  9. ' . esc_html__( 'Click "Enable this AppId for your account".', 'gravityformsicontact' ) . '
  10. '; + $description .= '
  11. ' . esc_html__( 'Create a password for your application and click save.', 'gravityformsicontact' ) . '
  12. '; + $description .= '
  13. ' . esc_html__( 'Enter your API password, along with your iContact account username, into the settings fields below.', 'gravityformsicontact' ) . '
  14. '; + $description .= '
'; + + } + + return $description; + + } + + /** + * Prepare client folders for plugin settings. + * + * @access public + * @return array + */ + public function client_folders_for_plugin_setting() { + + $choices = array(); + + /* If API is not initialized, return choices array. */ + if ( ! $this->initialize_api() ) { + return $choices; + } + + /* Get client folders. */ + + $client_folders = $this->api->get_client_folders(); + if ( is_wp_error( $client_folders ) ) { + $this->log_error( __METHOD__ . '(): Unable to get client folders; ' . $client_folders->get_error_message() ); + + return $choices; + } + + if ( ! is_array( $client_folders ) ) { + return $choices; + } + + $choices[] = array( + 'label' => esc_html__( 'Select a Client Folder', 'gravityformsicontact' ), + 'value' => '' + ); + + /* Add client folders to choices array. */ + foreach ( $client_folders as $folder ) { + + $choices[] = array( + 'label' => rgar( $folder, 'name' ) ? $folder['name'] : esc_html__( 'Default Client Folder', 'gravityformsicontact' ), + 'value' => $folder['clientFolderId'] + ); + + } + + return $choices; + + } + + /** + * Setup fields for feed settings. + * + * @access public + * @return array + */ + public function feed_settings_fields() { + + return array( + array( + 'title' => '', + 'fields' => array( + array( + 'name' => 'feed_name', + 'label' => esc_html__( 'Feed Name', 'gravityformsicontact' ), + 'type' => 'text', + 'required' => true, + 'tooltip' => '
'. esc_html__( 'Name', 'gravityformsicontact' ) .'
' . esc_html__( 'Enter a feed name to uniquely identify this setup.', 'gravityformsicontact' ), + 'default_value' => $this->get_default_feed_name(), + 'class' => 'medium', + ), + array( + 'name' => 'list', + 'label' => esc_html__( 'iContact List', 'gravityformsicontact' ), + 'type' => 'select', + 'required' => true, + 'choices' => $this->lists_for_feed_setting(), + 'no_choices' => esc_html__( 'Unable to retrieve Lists.', 'gravityformsicontact' ), + 'tooltip' => '
'. esc_html__( 'iContact List', 'gravityformsicontact' ) .'
' . esc_html__( 'Select which iContact list this feed will add contacts to.', 'gravityformsicontact' ) + ), + array( + 'name' => 'fields', + 'label' => esc_html__( 'Map Fields', 'gravityformsicontact' ), + 'type' => 'field_map', + 'field_map' => $this->fields_for_feed_mapping(), + 'tooltip' => '
'. esc_html__( 'Map Fields', 'gravityformsicontact' ) .'
' . esc_html__( 'Select which Gravity Form fields pair with their respective iContact fields.', 'gravityformsicontact' ) + ), + array( + 'name' => 'custom_fields', + 'label' => '', + 'type' => 'dynamic_field_map', + 'field_map' => version_compare( GFForms::$version, '2.5-dev-1', '<' ) ? $this->custom_fields_for_feed_setting() : array( $this, 'custom_fields_for_feed_setting' ), + 'save_callback' => array( $this, 'create_new_custom_fields' ), + ), + array( + 'name' => 'feed_condition', + 'label' => esc_html__( 'Opt-In Condition', 'gravityformsicontact' ), + 'type' => 'feed_condition', + 'checkbox_label' => esc_html__( 'Enable', 'gravityformsicontact' ), + 'instructions' => esc_html__( 'Export to iContact if', 'gravityformsicontact' ), + 'tooltip' => '
'. esc_html__( 'Opt-In Condition', 'gravityformsicontact' ) .'
' . esc_html__( 'When the opt-in condition is enabled, form submissions will only be exported to iContact when the condition is met. When disabled, all form submissions will be exported.', 'gravityformsicontact' ) + ), + ) + ) + ); + + } + + /** + * Prepare iContact lists for feed field. + * + * @access public + * @return array $lists + */ + public function lists_for_feed_setting() { + + $lists = array(); + + /* If iContact API credentials are invalid, return the lists array. */ + if ( ! $this->initialize_api() ) { + return $lists; + } + + /* Get available iContact lists. */ + $icontact_lists = $this->api->get_lists(); + + if ( is_wp_error( $icontact_lists ) ) { + $this->log_error( __METHOD__ . '(): Unable to retrieve lists; ' . $icontact_lists->get_error_message() ); + + return $lists; + } + + if ( is_array( $icontact_lists ) ) { + /* Add iContact lists to array and return it. */ + foreach ( $icontact_lists as $list ) { + + $lists[] = array( + 'label' => $list['name'], + 'value' => $list['listId'] + ); + + } + } + + return $lists; + + } + + /** + * Prepare fields for feed field mapping. + * + * @access public + * @return array + */ + public function fields_for_feed_mapping() { + + return array( + array( + 'name' => 'email', + 'label' => esc_html__( 'Email Address', 'gravityformsicontact' ), + 'required' => true, + 'field_type' => array( 'email' ), + 'default_value' => $this->get_first_field_by_type( 'email' ) + ), + array( + 'name' => 'prefix', + 'label' => esc_html__( 'Prefix', 'gravityformsicontact' ), + ), + array( + 'name' => 'first_name', + 'label' => esc_html__( 'First Name', 'gravityformsicontact' ), + 'default_value' => $this->get_first_field_by_type( 'name', 3 ) + ), + array( + 'name' => 'last_name', + 'label' => esc_html__( 'Last Name', 'gravityformsicontact' ), + 'default_value' => $this->get_first_field_by_type( 'name', 6 ) + ), + array( + 'name' => 'suffix', + 'label' => esc_html__( 'Suffix', 'gravityformsicontact' ), + ), + array( + 'name' => 'street', + 'label' => esc_html__( 'Address: Street Address', 'gravityformsicontact' ), + ), + array( + 'name' => 'street2', + 'label' => esc_html__( 'Address: Line 2', 'gravityformsicontact' ), + ), + array( + 'name' => 'city', + 'label' => esc_html__( 'Address: City', 'gravityformsicontact' ), + ), + array( + 'name' => 'state', + 'label' => esc_html__( 'Address: State', 'gravityformsicontact' ), + ), + array( + 'name' => 'postal_code', + 'label' => esc_html__( 'Address: Postal Code', 'gravityformsicontact' ), + ), + array( + 'name' => 'phone', + 'label' => esc_html__( 'Phone Number', 'gravityformsicontact' ), + ), + array( + 'name' => 'fax', + 'label' => esc_html__( 'Fax Number', 'gravityformsicontact' ), + ), + array( + 'name' => 'business', + 'label' => esc_html__( 'Business Number', 'gravityformsicontact' ), + ), + ); + + } + + /** + * Prepare custom fields for feed field mapping. + * + * @access public + * @return array $fields + */ + public function custom_fields_for_feed_setting() { + + $fields = array(); + + /* If iContact API credentials are invalid, return the fields array. */ + if ( ! $this->initialize_api() ) { + return $fields; + } + + /* Get available iContact fields. */ + $icontact_fields = $this->api->get_custom_fields(); + + /* If no iContact fields exist, return the fields array. */ + if ( empty( $icontact_fields ) || is_wp_error( $icontact_fields ) || ! is_array( $icontact_fields ) ) { + return $fields; + } + + /* Add iContact fields to the fields array. */ + foreach ( $icontact_fields as $field ) { + + $fields[] = array( + 'label' => $field['publicName'], + 'value' => $field['customFieldId'] + ); + + } + + /* Add new custom fields to the fields array. */ + if ( ! empty( $this->_new_custom_fields ) ) { + + foreach ( $this->_new_custom_fields as $new_field ) { + + $found_custom_field = false; + foreach ( $fields as $field ) { + + if ( $field['value'] == $new_field['value'] ) + $found_custom_field = true; + + } + + if ( ! $found_custom_field ) + $fields[] = array( + 'label' => $new_field['label'], + 'value' => $new_field['value'] + ); + + } + + } + + if ( empty( $fields ) ) { + return $fields; + } + + /* Add "Add Custom Field" to array. */ + $fields[] = array( + 'label' => esc_html__( 'Add Custom Field', 'gravityformsicontact' ), + 'value' => 'gf_custom' + ); + + return $fields; + + } + + /** + * Create new iContact custom fields. + * + * @since Unknown + * + * @param array $field Field settings. + * @param array $field_value Field value. + * + * @return array + */ + public function create_new_custom_fields( $field, $field_value ) { + + global $_gaddon_posted_settings; + + // If no custom fields are set or if the API credentials are invalid, return settings. */ + if ( empty( $field_value ) || ! $this->initialize_api() ) { + return $field_value; + } + + // Loop through defined custom fields, create new ones. + foreach ( $field_value as $index => &$field ) { + + // If no custom key is set, skip. + if ( ! rgar( $field, 'custom_key' ) ) { + continue; + } + + // Prepare field name. + $custom_key = $field['custom_key']; + $private_name = strtolower( str_replace( + array( ' ', '"', "'", '\\', '/', '[', ']' ), + '', + $custom_key + ) ); + + // Prepare new field to add. + $custom_field = array( + 'fieldType' => 'text', + 'displayToUser' => 1, + 'privateName' => $private_name, + 'publicName' => $custom_key + ); + + // Add custom field. + $new_field = $this->api->add_custom_field( $custom_field ); + + // If field could not be added, log error and skip. + if ( is_wp_error( $new_field ) ) { + $this->log_error( __METHOD__ . '(): Unable to create custom field; ' . $new_field->get_error_message() ); + continue; + } + + // Replace key for field with new shortcut name and reset custom key. + $field['key'] = $private_name; + $field['custom_key'] = ''; + + // Update POST field to ensure front-end display is up-to-date. + $_gaddon_posted_settings['custom_fields'][ $index ]['key'] = $private_name; + $_gaddon_posted_settings['custom_fields'][ $index ]['custom_key'] = ''; + + // Push to new custom fields array to update the UI. + if ( version_compare( GFForms::$version, '2.5-dev-1', '<' ) ) { + $this->_new_custom_fields[] = array( + 'label' => $custom_key, + 'value' => $private_name, + ); + } + + } + + return $field_value; + + } + + /** + * Setup columns for feed list table. + * + * @access public + * @return array + */ + public function feed_list_columns() { + + return array( + 'feed_name' => esc_html__( 'Name', 'gravityformsicontact' ), + 'list' => esc_html__( 'iContact List', 'gravityformsicontact' ) + ); + + } + + /** + * Get value for list feed list column. + * + * @access public + * @param array $feed + * @return string $list + */ + public function get_column_value_list( $feed ) { + + /* If iContact instance is not initialized, return list ID. */ + if ( ! $this->initialize_api() ) { + return $feed['meta']['list']; + } + + /* Get iContact list. */ + $list = $this->api->get_list( $feed['meta']['list'] ); + + if ( is_wp_error( $list ) ) { + $this->log_error( __METHOD__ . '(): Unable to retrieve list; ' . $list->get_error_message() ); + + return $feed['meta']['list']; + } + + return $list['name']; + + } + + /** + * Set feed creation control. + * + * @access public + * @return bool + */ + public function can_create_feed() { + + return $this->initialize_api() && $this->api->is_client_folder_set(); + + } + + /** + * Enable feed duplication. + * + * @access public + * @param int $feed_id + * @return bool + */ + public function can_duplicate_feed( $feed_id ) { + + return true; + + } + + /** + * Process feed. + * + * @access public + * @param array $feed + * @param array $entry + * @param array $form + * @return void + */ + public function process_feed( $feed, $entry, $form ) { + + $this->log_debug( __METHOD__ . '(): Processing feed.' ); + + /* If API instance is not initialized, exit. */ + if ( ! $this->initialize_api() ) { + + $this->add_feed_error( esc_html__( 'Feed was not processed because API was not initialized.', 'gravityformsicontact' ), $feed, $entry, $form ); + return; + + } + + /* Setup mapped fields array. */ + $mapped_fields = $this->get_field_map_fields( $feed, 'fields' ); + + /* Setup contact array. */ + $contact = array( + 'email' => $this->get_field_value( $form, $entry, $mapped_fields['email'] ), + 'prefix' => $this->get_field_value( $form, $entry, $mapped_fields['prefix'] ), + 'firstName' => $this->get_field_value( $form, $entry, $mapped_fields['first_name'] ), + 'lastName' => $this->get_field_value( $form, $entry, $mapped_fields['last_name'] ), + 'suffix' => $this->get_field_value( $form, $entry, $mapped_fields['suffix'] ), + 'street' => $this->get_field_value( $form, $entry, $mapped_fields['street'] ), + 'street2' => $this->get_field_value( $form, $entry, $mapped_fields['street2'] ), + 'city' => $this->get_field_value( $form, $entry, $mapped_fields['city'] ), + 'state' => $this->get_field_value( $form, $entry, $mapped_fields['state'] ), + 'postalCode' => $this->get_field_value( $form, $entry, $mapped_fields['postal_code'] ), + 'phone' => $this->get_field_value( $form, $entry, $mapped_fields['phone'] ), + 'fax' => $this->get_field_value( $form, $entry, $mapped_fields['fax'] ), + 'business' => $this->get_field_value( $form, $entry, $mapped_fields['business'] ) + ); + + /* If the email address is empty, exit. */ + if ( GFCommon::is_invalid_or_empty_email( $contact['email'] ) ) { + + $this->add_feed_error( esc_html__( 'Contact could not be created as email address was not provided.', 'gravityformsicontact' ), $feed, $entry, $form ); + return; + + } + + /* Add custom fields to contact array. */ + if ( rgars( $feed, 'meta/custom_fields' ) ) { + + foreach ( $feed['meta']['custom_fields'] as $custom_field ) { + + if ( rgblank( $custom_field['key'] ) || $custom_field['key'] == 'gf_custom' || rgblank( $custom_field['value'] ) ) { + continue; + } + + $field_value = $this->get_field_value( $form, $entry, $custom_field['value'] ); + + if ( rgblank( $field_value ) ) { + continue; + } + + $contact[$custom_field['key']] = $field_value; + + } + + } + + /* Check to see if we're adding a new contact. */ + $find_contact = $this->api->get_contact_by_email( $contact['email'] ); + $is_new_contact = empty( $find_contact ); + + if ( $is_new_contact ) { + + /* Log that we're creating a new contact. */ + $this->log_debug( __METHOD__ . "(): {$contact['email']} does not exist and will be created." ); + + /* Log the contact object we're creating. */ + $this->log_debug( __METHOD__ . '(): Creating contact: ' . print_r( $contact, true ) ); + + /* Add the contact. */ + $new_contact = $this->api->add_contact( $contact ); + + if ( is_wp_error( $new_contact ) ) { + $this->add_feed_error( sprintf( + esc_html__( 'Contact could not be created. %s', 'gravityformsicontact' ), + $new_contact->get_error_message() + ), $feed, $entry, $form ); + + /* Stop processing feed. */ + return; + } + + /* Log that contact was created. */ + $this->log_debug( __METHOD__ . "(): {$contact['email']} has been created; contact ID: {$new_contact['contactId']}." ); + + $contact['id'] = $new_contact['contactId']; + $this->add_subscription( $contact, $feed, $entry, $form ); + + + } else { + + if ( is_wp_error( $find_contact ) ) { + $this->add_feed_error( sprintf( + esc_html__( 'Unable to determine if contact already exists. %s', 'gravityformsicontact' ), + $find_contact->get_error_message() + ), $feed, $entry, $form ); + + return; + } + + /* Log that we're updating an existing contact. */ + $this->log_debug( __METHOD__ . "(): {$contact['email']} already exists and will be updated." ); + + /* Log the contact object we're updating. */ + $this->log_debug( __METHOD__ . '(): Updating contact: ' . print_r( $contact, true ) ); + + $contact_id = $find_contact[0]['contactId']; + + /* Update the contact. */ + $update_contact = $this->api->update_contact( $contact_id, $contact ); + + if ( is_wp_error( $update_contact ) ) { + $this->add_feed_error( sprintf( + esc_html__( 'Contact could not be updated. %s', 'gravityformsicontact' ), + $update_contact->get_error_message() + ), $feed, $entry, $form ); + + return; + } + + $this->log_debug( __METHOD__ . "(): {$contact['email']} has been updated; contact ID: {$contact_id}." ); + + $contact['id'] = $contact_id; + $this->add_subscription( $contact, $feed, $entry, $form ); + + } + + } + + /** + * Add contact to subscription list. + * + * @access public + * @param array $contact + * @param array $feed + * @param array $entry + * @param array $form + */ + public function add_subscription( $contact, $feed, $entry, $form ) { + + /* Subscribe the contact to the list. */ + $subscription = $this->api->add_contact_to_list( $contact['id'], $feed['meta']['list'] ); + + /* Log whether or not contact was subscribed to list. */ + if ( empty ( $subscription ) ) { + + $this->log_debug( __METHOD__ . "(): {$contact['email']} was already subscribed to list." ); + + } else { + + if ( is_wp_error( $subscription ) ) { + $this->add_feed_error( sprintf( + esc_html__( 'Contact could not be subscribed to list. %s', 'gravityformsicontact' ), + $subscription->get_error_message() + ), $feed, $entry, $form ); + + return; + } + + $this->log_debug( __METHOD__ . "(): {$contact['email']} has been subscribed to list; subscription ID: {$subscription[0]['subscriptionId']}." ); + + } + + } + + /** + * Initialized iContact API if credentials are valid. + * + * @access public + * @return bool + */ + public function initialize_api() { + + if ( ! is_null( $this->api ) ) { + return true; + } + + /* Load the iContact API library. */ + require_once 'includes/class-icontact.php'; + + /* Get the plugin settings */ + $settings = $this->get_plugin_settings(); + + /* If any of the account information fields are empty, return null. */ + if ( empty( $settings['app_id'] ) || empty( $settings['api_username'] ) || empty( $settings['api_password'] ) ) { + return null; + } + + $this->log_debug( __METHOD__ . "(): Validating API info for {$settings['app_id']} / {$settings['api_username']}." ); + + /* Create a new iContact object. */ + $icontact = new iContact( $settings['app_id'], $settings['api_username'], $settings['api_password'], rgar( $settings, 'client_folder' ) ); + + /* Run a test request. */ + $contacts = $icontact->get_client_folders(); + + if ( is_wp_error( $contacts ) ) { + $this->log_error( __METHOD__ . '(): API credentials are invalid; ' . $contacts->get_error_message() ); + + return false; + } + + /* Log that test passed. */ + $this->log_debug( __METHOD__ . '(): API credentials are valid.' ); + + /* Assign iContact object to the class. */ + $this->api = $icontact; + + return true; + + } + + /** + * Sets the default client folder is upgrading from pre-1.1. + * + * @access public + * @param string $previous_version + * @return void + */ + public function upgrade( $previous_version ) { + + $previous_is_pre_client_folder_change = ! empty( $previous_version ) && version_compare( $previous_version, '1.1', '<' ); + + if ( $previous_is_pre_client_folder_change ) { + + /* Initialize the API. */ + if ( ! $this->initialize_api() ) { + return; + } + + /* Get client folders. */ + $client_folders = $this->api->get_client_folders(); + + if ( is_wp_error( $client_folders ) ) { + $this->log_error( __METHOD__ . '(): Unable to get client folders; ' . $client_folders->get_error_message() ); + + return; + } + + /* Get the plugin settings. */ + $settings = $this->get_plugin_settings(); + + /* Add client folder to plugin settings. */ + $settings['client_folder'] = $client_folders[0]['clientFolderId']; + + /* Update plugin settings. */ + $this->update_plugin_settings( $settings ); + + } + + } + +} \ No newline at end of file diff --git a/css/form_settings.css b/css/form_settings.css new file mode 100644 index 0000000..2bf1a89 --- /dev/null +++ b/css/form_settings.css @@ -0,0 +1,23 @@ +#gaddon-setting-row-fields > td { + padding-bottom: 0; +} + +#gaddon-setting-row-custom_fields > td, +#gaddon-setting-row-custom_fields .repeater th { + padding-top: 0; +} + +#gaddon-setting-row-custom_fields .repeater th { + width: 210px; +} + +#gaddon-setting-row-fields td select, +#gaddon-setting-row-custom_fields .repeater td select { + margin-right: 6px; + max-width: none; + width: 200px; +} + +#gaddon-setting-row-custom_fields .settings-field-map-table .custom-key-reset { + margin-left: 172px; +} \ No newline at end of file diff --git a/css/form_settings.min.css b/css/form_settings.min.css new file mode 100644 index 0000000..28b30ed --- /dev/null +++ b/css/form_settings.min.css @@ -0,0 +1 @@ +#gaddon-setting-row-fields>td{padding-bottom:0}#gaddon-setting-row-custom_fields .repeater th,#gaddon-setting-row-custom_fields>td{padding-top:0}#gaddon-setting-row-custom_fields .repeater th{width:210px}#gaddon-setting-row-custom_fields .repeater td select,#gaddon-setting-row-fields td select{margin-right:6px;max-width:none;width:200px}#gaddon-setting-row-custom_fields .settings-field-map-table .custom-key-reset{margin-left:172px} \ No newline at end of file diff --git a/icontact.php b/icontact.php new file mode 100644 index 0000000..7e91d9c --- /dev/null +++ b/icontact.php @@ -0,0 +1,53 @@ + + + + + + diff --git a/includes/class-icontact.php b/includes/class-icontact.php new file mode 100644 index 0000000..7111b05 --- /dev/null +++ b/includes/class-icontact.php @@ -0,0 +1,334 @@ +app_id = $app_id; + $this->api_username = $api_username; + $this->api_password = $api_password; + $this->client_folder_id = $client_folder_id; + + } + + /** + * Get base path of API requests. + * + * @access public + * @return string + */ + public function get_url_base() { + + return $this->set_account_id() . '/c/' . $this->client_folder_id . '/'; + + } + + /** + * Get array of headers needed for every API request. + * + * @access public + * @return array + */ + public function request_headers() { + + return array( + 'Expect' => '', + 'Accept' => 'application/json', + 'Content-type' => 'application/json', + 'Api-Version' => '2.2', + 'Api-AppId' => $this->app_id, + 'Api-Username' => $this->api_username, + 'Api-Password' => $this->api_password + ); + + } + + /** + * Make API request. + * + * @access public + * + * @param string $action + * @param array $options (default: array()) + * @param string $method (default: 'GET') + * + * @return array|WP_Error + */ + public function make_request( $action = null, $options = array(), $method = 'GET', $return_key = null ) { + + /** + * Filter the options array so that is modifiable before sending requests to iContact. + * + * @since 1.2.1 + * + * @param array $options Query arguments to be sent in the request. + * @param string $action The action being sent to the iContact API, passed in the URL. + * @param string $method The request method being used. Example: GET. + * @param string $return_key The array key desired from the response. + * + * @see https://www.gravityhelp.com/documentation/article/gform_icontact_request_args/ + * + */ + $options = apply_filters( 'gform_icontact_request_args', $options, $action, $method, $return_key ); + + // Build request options string. + $request_options = ( $method == 'GET' && ! empty( $options ) ) ? '?' . http_build_query( $options ) : ''; + + // Build request URL. + $request_url = $this->api_url . $action . $request_options; + + // Prepare request and execute. + $args = array( + 'headers' => $this->request_headers(), + 'method' => $method + ); + + if ( $method == 'POST' ) { + $args['body'] = json_encode( $options ); + } + + $response = wp_remote_request( $request_url, $args ); + + // If WP_Error, die. Otherwise, return decoded JSON. + if ( is_wp_error( $response ) ) { + + return $response; + + } else { + + $response = json_decode( $response['body'], true ); + + if ( isset( $response['errors'] ) ) { + return new WP_Error( wp_remote_retrieve_response_code( $response ), $response['errors'][0] ); + } + + if ( isset( $response['warnings'] ) ) { + return new WP_Error( wp_remote_retrieve_response_code( $response ), $response['warnings'][0] ); + } + + return empty( $return_key ) ? $response : $response[ $return_key ]; + + } + + } + + /** + * Fetch the Account ID. + * + * @access public + * @return string|WP_Error + */ + public function set_account_id() { + + if ( empty( $this->account_id ) ) { + + $accounts = $this->make_request(); + + if ( is_wp_error( $accounts ) ) { + return $accounts; + } + + if ( isset( $accounts['errors'] ) ) { + return new WP_Error( 'iContact_accounts_error', $accounts['errors'][0] ); + } + + $account = $accounts['accounts'][0]; + + if ( $account['enabled'] == 1 ) { + + $this->account_id = $account['accountId']; + + } else { + + return new WP_Error( 'iContact_account_error', 'Your account has been disabled.' ); + + } + + } + + return $this->account_id; + + } + + /** + * Add a new contact. + * + * @access public + * + * @param array $contact + * + * @return array|WP_Error + */ + public function add_contact( $contact ) { + + $contacts = $this->make_request( $this->get_url_base() . 'contacts', array( $contact ), 'POST', 'contacts' ); + + if ( is_wp_error( $contacts ) ) { + return $contacts; + } + + return $contacts[0]; + + } + + /** + * Add a contact to a list. + * + * @access public + * + * @param int $contact_id + * @param int $list_id + * @param string $status (default: 'normal') + * + * @return array|WP_Error + */ + public function add_contact_to_list( $contact_id, $list_id, $status = 'normal' ) { + + $subscription = array( + 'contactId' => $contact_id, + 'listId' => $list_id, + 'status' => $status + ); + + return $this->make_request( $this->get_url_base() . 'subscriptions', array( $subscription ), 'POST', 'subscriptions' ); + + } + + /** + * Add new custom field to account. + * + * @access public + * + * @param mixed $custom_field + * + * @return array|WP_Error + */ + public function add_custom_field( $custom_field ) { + + return $this->make_request( $this->get_url_base() . 'customfields', array( $custom_field ), 'POST', 'customfields' ); + + } + + /** + * Get available client folders. + * + * @access public + * @return array|WP_Error $folders + */ + public function get_client_folders() { + + /* If the account ID isn't set, go set it. */ + if ( empty( $this->account_id ) ) { + $this->set_account_id(); + } + + $clients = $this->make_request( $this->account_id . '/c/', array( 'limit' => 999 ) ); + + if ( is_wp_error( $clients ) ) { + return $clients; + } + + if ( isset( $clients['errors'] ) ) { + return new WP_Error( 'iContact_client_folders_error', 'No client folders were found for this account.' ); + } + + return $clients['clientfolders']; + + } + + /** + * Fetch all contacts associated with this account. + * + * @access public + * @return array|WP_Error + */ + public function get_contacts() { + + return $this->make_request( $this->get_url_base() . 'contacts', array(), 'GET', 'contacts' ); + + } + + /** + * Fetch contact by email address. + * + * @access public + * @return array|WP_Error + */ + public function get_contact_by_email( $email ) { + + return $this->make_request( $this->get_url_base() . 'contacts', array( 'email' => $email ), 'GET', 'contacts' ); + + } + + /** + * Fetch custom fields for associated with this account. + * + * @access public + * @return array|WP_Error + */ + public function get_custom_fields() { + + return $this->make_request( $this->get_url_base() . 'customfields', array(), 'GET', 'customfields' ); + + } + + /** + * Fetch all lists associated with this account. + * + * @access public + * @return array|WP_Error + */ + public function get_lists() { + + return $this->make_request( $this->get_url_base() . 'lists', array( 'limit' => 999 ), 'GET', 'lists' ); + + } + + /** + * Fetch a specific list associated with this account. + * + * @access public + * + * @param mixed $list_id + * + * @return array|WP_Error + */ + public function get_list( $list_id ) { + + return $this->make_request( $this->get_url_base() . 'lists/' . $list_id, array(), 'GET', 'list' ); + + } + + /** + * Checks to see if a client folder has been selected. + * + * @access public + * @return bool + */ + public function is_client_folder_set() { + + return ! empty( $this->client_folder_id ); + + } + + /** + * Update an existing contact. + * + * @access public + * + * @param int $contact_id + * @param array $contact + * + * @return array|WP_Error + */ + public function update_contact( $contact_id, $contact ) { + + return $this->make_request( $this->get_url_base() . 'contacts/' . $contact_id, $contact, 'POST', 'contact' ); + + } + +} \ No newline at end of file diff --git a/languages/gravityformsicontact-ar.mo b/languages/gravityformsicontact-ar.mo new file mode 100644 index 0000000000000000000000000000000000000000..d268e82132a07e094f09e019cf9e04c4e1d843cb GIT binary patch literal 514 zcmYLF!A=`75Tz=oJ@(wg99k~zZ0se8f>VQ13J9qY5!zN&Z^N!xTqX9(c2N0{{u5up zw{*-RGSZXZc;2&T=IP!3zdepOjQ5NWjJJ%>j2tt@BNvbO%$nC&1^>r12`^jxX+pH# zDYyu9Z_@*u`>=^%PrXajBv`a9UOABEq_{S{4+)pCvn_tzb`fi@;4Y;;s?n$${I}U& zHhwdT+dk`y?-Uc(fm~cu@<9RLxNb|G!P?M9!6ML&ZHndP@@&_REJcxfFpkX+y-|?N z-!$siWZfK^I||Vx{i8m|*-n=~xitaLT;p5oIt8;En~K#{jiV-OgVS2T2?*e_){?0lXvMV3^rIBwSRcZ{!N9+0nH`6_n#{H_=aYG{_a7b^ BkZk|} literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-ca.mo b/languages/gravityformsicontact-ca.mo new file mode 100644 index 0000000000000000000000000000000000000000..761a5adcec0e1999c99964fbc9d99bd9448ee3b4 GIT binary patch literal 1528 zcmYjR&2Jk;6kkgDr~wI;LnQ>#19`-J}XMsnxis;$lr^$M%rjneEJM zV&}*iaYJ0VQ%*>5L)?7kUqBoDjIcmsG1_!;mHun!Eez5!kZeh+*b_yh34t5Nh5@O|w6 zf$~G(wb$nH)_}*@$H2FMUjy#}zXe_g{sDx0^cV0w;NL)miU9RFfLi}XU=}On6>_}- zdJ`1#igvS%x|Q>$pnWCtEZQr$$_ZjCos0G~KglJ)OG})FQf8!iA;}x6w0d62d`c>l z+NEY#?x0Acun@z!+w;G2BhkL8CTXE6|wc-(2e_G0vyqx%EnRBH(B*xt0 zNp_z0_u2N!E}S-$mhEX_GNnf;ZJ#LL=soVUu9e*5LfHfE5v-lG6PDa%$#%cBm9{q0 zjm?jfBux?+vnTRQh0DLRZEdq;leM=fX{W6OhOk?fpOWB>US3(Av-*uv(q+AMJM9k5 z*`1r3KH8zytxn?^dnmQE^DAFm^hUfDx1s47nJLfib0_<+S zBw?(T70Dd^W@o=>C8Ay7)ftZtaGxftW+2sQgPj*jXmISo|~p4{4)FNX&ANCL?s$&l^yYW9NiwJ<;Q!VvRA mg!vIlh@)NSj8JvzuC5V-#1zrd?6*Q%6LRu0pS>6w9sLixK*{C+ literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-da_DK.mo b/languages/gravityformsicontact-da_DK.mo new file mode 100644 index 0000000000000000000000000000000000000000..1a7c594712c69b237d3a2a1a49862468e8fb7ee5 GIT binary patch literal 6238 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 literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-de_DE.mo b/languages/gravityformsicontact-de_DE.mo new file mode 100644 index 0000000000000000000000000000000000000000..7e5a19e53dc1f094f867945d77eab4ebbf2e16cc GIT binary patch literal 6464 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 I^)`e50?g6NTmS$7 literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-de_DE_formal.mo b/languages/gravityformsicontact-de_DE_formal.mo new file mode 100644 index 0000000000000000000000000000000000000000..695fe3888237953df06d6b8a574f6fd8a9b0c99e GIT binary patch literal 868 zcmYjP%}yIZ45n&Nd+fOfSLy-U%>IOc!faEuq<~OCL=Y;}%WBwlHVfIA)r^-U57LL| zbM!s>EcI?ef+cJ0&-U2gc>cY8^LvNo73(|J53H|QJFJcLSwAvx#AlPUk&!hIn36cp z#80%YFj~TyRZj&i;ndjDK`}I%R7&tI%fyw2$UpF|u`-s#rOS&<9M`!MVl>4bE16Nl~zIUMWbfcp7|Jl@WO0p8Mf2|K+zn9)8G55xZPiS) zn~5W!NGIBu>KWcRo&7XMmnMqH@@0)VrE<15TNJnG%52efr%l1y-wt|%%BIs1(-t8U ke-SXXO>wwdu7sK}&Yx0KWl@fxiLLxC?J%Yyr3eJPX_aJ^|dR+Ft;E9QAJlzXkj$ z&;g%%dpZ6WK>GgIKx~=)0Z2Uj5lFn;2h#el0Y3oz8*m$V7K=r|JHTte7lBU#Ujfqi zbC`4m_%QItz-=Je^LJny8k~6txIujxi`;=0Uj)*6KL?q#{>wlb|0)pw*nRwv4u1iX z4i8}v>2MxM^+$m;ZWXu)>;j4BdqA4!2SC!{CqNE-t?EDb-m<;|yovVD14)M;0*T*0 z0qOg{0?Dp_0!fE6=Sv-)0MfYc17R9_2?z?_rHoz4b=wuG{;D3HSY5`bMsp;Yh*6yn8e0c7jDUA`-<9hp2~>q){l3hT^}Zz-AjhFn@3 z@eSq1)LquLm6p6St?wG^M9MczBBzaePPn;hE~Vqu9Be(yQWXoQjON`N?0R7_r?vc< zVt6QXwlOfqO70A|12f`E_e?%4N8^ptt~+5XWE+^|h+o*$;xNVVfwCMkcN0#d#-_-* zh+|V|cfpU9+VL%uCbWXlPQ;F*H%+)Ujvq=M=MtMvxUgIfg-W?7P39xC(3mVY$10Ht zW_yG0Lw?Er_W`yzv~jKuu?B2Qm36N_w#X9NOf?`I!#p|J08tQ>rYeo8sBfNAZl!Zd z_j!+`gmtMIVcXt9E_hanKEu?EBtj=V_S{-=EJJof_C%374!&nN-1HpPl9nQ{P3)>~_Eks25l-I4rMH`o_D^w zS83&xNY(S?5?d;_uAJiOTpS~0;B5KOPFDm~!7a_+u$SlZUZD_ZrOET6HvH22R`>M1+zGO zd8n*K1Y4pN;Ufy94n%2;fn$h^XhVnBwVtGo$B=D{nyej>mHEap&;PB=1znAFq7$%d zG}|2*B%CTW?B=qkPS~DICBj!c;F4AIXrSW3oH4aKWJ2YoMklOCLb|2 ztk)oPhGP z)@ZOh8c2;u84rnNgi@lseM8k`{#td|L0%aKiy7-jCA*867ck36(A z_)uu@P`d0SSLZ%aqnE@3UpR4MF@z)aL7U8p387;d^4rJ`^8tj#V+0*}YQ4(bVMa5~ zM-5IK+WLRQO?g&yd$c#67`^ED0I8XrY(hho6&rp`j2|lG1IkWBV!zt`~h9?3;)W zoXc#~Y$DlEdL-s-7@J|!78#9SprjD&=R(_5IFsYzVKPOzcg(*4X`J9s#=a#u90$+) zmd}qlCO(p` zFSROc(_seNe7v=~aeb^|4kfYPB#pcvc=GzGud^SAy2nptHo+GWijxyIW|YYWc>PfIP48%TtT`YYjb*g?;(kw^%^bzx;D+#up%*qmuL z=4dGLBdjoO+@L#HK92Zp9GKA4Uk>fG|8sIoH&9D~9PxvLwF9|!a1yl}ofxn6i>8LP z1MTaLE9lY(+L)|vo>Ur-$7@Kk2g11=lhNzI4b$q?x5{a2`RZG%l_nol_31|Uq{!pJ zF3b*EFnp#1m(5sil%hwxa6PF09Q^RaB{&q74)#hPkN8;H1xCmA>Bal>;!S^|Opktl u#GGEdt3S2=hl@8Z=BF3$2d)sO7w^-H_uL;0{%?iTi}&pRBK;p+y#Ec0{xJUl literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-en_GB.mo b/languages/gravityformsicontact-en_GB.mo new file mode 100644 index 0000000000000000000000000000000000000000..c31e5db0a03a69a6b3d70fb9df6378a9c49c7b5b GIT binary patch literal 6105 zcmeHLON<;x87>k7@e&e}0O6gAv9Xs-_dH@R>t3(HUhg_9@7km6+KC8asqL610y{ts%z@PZT2=oU@EO$q1Y80x zzKyZ>06zz$_YZ;iV_(Fr1N;gw2L2RC<4(Puu?65V@FZ{z_zB>4)&3>mhf)73@D<>9 zfDU;1fpYx!f%N`QfLJp76_9xNEs%J*3#9q~0(>v}~EgLm((%zW|aBzp2{qf2`EuA>b=$ZvaV$9|LK8 z8_v=DD?rj=1BfNE8$jaaGeDYO0ZE4pxCQ(&kaYM1kaTz$iy;y>{5Z-P6k0p!N7~XwTo4bmR=Pe~g6Ezd5l*ayf^EbC6x!=; z6uKz>>3ToP2T&l1k0k&*hl229A3-5rNQ(vvyVBj{U19CWtWwXVf}is1ugIV^7`oJNgJ zk#iBprqJ$`A1k%v8zxO?2BV#b9Y=4PaBUplmpslT7M*Zmxf}|Wa#6a>M`)ojS#Azh zA`@79llMb@#{TyKw%E6EuJ$npd`p#eZ#=fh5?V|(AREIyIavTv5R|Se4O7%N&ndUk zIi>r&M^eJO)Qqrf?;#gFt3;n+YDN;F6CQhRtvHk+yC!?0NF4{?GaRmaj%rCu5!kwR z614N4gp*nfy^4iaFBUQ#bC9Q<>X9?h3QH`quzJPIMatGoYjBYoI51LfP>QK))+<$c zVP#HpG!P;c3zgfp^xM{suODS5cf|U{i0ZKoaa4!g2CerdY%%{dqj-$KMBl!Q1?Ka? zSNAHdoD!*ei9%vS<<^xZuIJ(qTL!_F5AAeDP!-(L>`i-lE?+DZHd^WOyr>O7d+jwR znPwRa`L5w+-wCDB$Hk1Io7WnUIzEsZv8XmpygFc4R8CeZ@T?Sv8LaDjv)^Q-?z)R9;3DwhSIYbOuA}P)=p? zJI03f9Hp^|2efO;@bw`+QmM}q$Rs|a5E=9;);6zz-wUKzA}I%CKKD)Y)Kn|HU8jlK z=v>?y4R%KZsj*YWLt+_QDVMQ?69~hdqDKVXQC6X++A(J>Khr*K=RzWveYgVMDG6ty zFT*pP)0RC)mMNbY=zu_iU!@K-jr5r|p;)>n1UwIZX@~^rcUzg|>Lrv*Cc|?UhY~r^ z&zUGoX&lB8KW{L>jO~z3EN{V&X>BMD5Xo>}3X4R8Z-@lzWkT0-WK$$Ynfsviu^IbM z9$FfFC^UE|Lw1s@bDyZuOX7hqd~sqiL?HD+o6Ly`p<@~H+sF>{8wiuf*mM-B^(=EA zGqO0pYw*RPrT@piDZdq)Jz5)2j6Uo50I8XRY(hho6&rp`j2b8 z?3#!VoXc#~Y$DlEdL-s-7@J|!78#9SprjD&=0e+4IFsYxVKPOzcg#NxX`JAfV&4+% zkAs(d%cn{RP2RtZ_jSL3g2Ap7!-%izK6o4ObGMPFVde&sS7L^X{9L_~(P$JxQf*aF z9{Hu@CO(j^FSROc)4_~wKHa*we4#1z-u0`^#f9z7?e!@Y?Xa~#dkot!*d1pw;!Ym9 zW|krcukd&va*(@vdv_yPo{pmldomB!b!-x>DdNlf$}Mzn?FRk>4U&Uv$j1@yv^uSz zbunly@3xns_W9`ig{NArsMW&Y;8}TyO+GWWy&SYI1f3<`>O}1p24Y-INrb%%2Nt?% zk&86gAnqfsGhelQNxGuFsf*>U-{?CU?VFx{3Basz?tHR1m zxIx6jusPFg%)wCP2bf{nxJC!Dd>rvg4Szzk)BYQBOvg}5yE)=}dnjzB@D|_148|Trb_p~ut-8`u@o{m?LY4?P4IgHWczzx&t(YMNJYx(F~tC=P*RQ2gX zccjSUK^JZZEjT{YffHve*GkbNUbr4qe;&bjK0bXPpT6mL y%Jlp1zca_D@9Ou~|8V-o>HPTgea|`K`1E~z`kwpM;D0b2pT1}RmGpmb`u;aV1u=jC literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-es_ES.mo b/languages/gravityformsicontact-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..5f7898e3fe42e9eb685ea0b493da88e064c6bb8f GIT binary patch literal 6516 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 ZxF043S?-T!(CWisJ7`F_hp_3L{Q-xkg)jgB literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-fr_FR.mo b/languages/gravityformsicontact-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..b9ac53f7c2ac02ca043af100888c4414835f9917 GIT binary patch literal 6623 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 literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-hi_IN.mo b/languages/gravityformsicontact-hi_IN.mo new file mode 100644 index 0000000000000000000000000000000000000000..9aff8e42156b6d0c7f8119c2f0fba93b8157420e GIT binary patch literal 9094 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 literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-nb_NO.mo b/languages/gravityformsicontact-nb_NO.mo new file mode 100644 index 0000000000000000000000000000000000000000..5a3613ccecb25020df70dc3027d15caf2f40c97b GIT binary patch literal 1562 zcmYjRO>ZMb5FKD)!7LKXg$sv*QzFv#*c*rJm;f8&tfI|_wehZ2AY`>?%Hzf}-9vXx z9Pj_&$}Qr`5pj*UAnx3_a^%d7>KQxUmP)Uxy83lh*G&EW!JQuiUhlGe#6m3hS^i}4 z>;2bQ81FN_$M^|jhcRS)hcRaSj4@|yFkY|xzpU)v81JzEcgA~+e=vUcMiBhP_#xZf zH*4Ng#zVHhWqh0QC&n)se`dVP_z$DM?_Wlr$A65T_wHM@eUFhTtHt!yo;NtG;`8-! z$nEmE`t>@C=k?3q6Ff>1=$DR64o3>JBpBpUWx#HW&IJQaXhFghF##=e1Ts)+^+So- z5>$ek)N~0nQw|(bSu}$qA9}{2wYHEBv>_<0iJ6i2CK$`oAv_u$!+KX~MM`GsB__SqbF@ww9l>KOFBL7}$k^P0>Kjcm zCSRF2*U)Zu8&9z?mc*$`RU!_{)QORaU`AB9sMSjA^HYDk8JoQ2%EHGtd`@CyrFNMl zV#LYYT!X6yn}B{dwHd46-9 z!IpQ)x7+9gbziyKWgtq?cHd%`)L?PVaUPaDPAhylH1t!z6iUbvj<@(YKI)i zaqCBkpemp-%t|XWQ8kZ!MP<5!P7iAJU`xZt2hiT`HC~9vsL|HFSao2xx!3IQ&d^|@ zNE}Lsg``;o&1UNrx8WC;cJ3nBIQyp5WS0><<8PANdO=*G+w4EV<-*v+ohU~UjK{q( z_QqFHd#4k#x>mGz^v1ffcXoM8kF_zy+I?&6JcxVf;;|&MOy<=Y<=INDytwh!YUN$s zbbDZBZxX#gY2(?D%N8LQ{>p|aZH)c8=@FDP<*vWr&+&>9!@s{47xkwe!ICQvPB2Y@ zcq*_IlK)}id5}>s5QT9ht4V>u#oVe(P+IexxYSVGTmx!wWN&`Wf&U^uHs3^5 zpNh6HHg@Ac-5X6JA-GFZoNI`}cCeI%v4k_1sT7B0<}fxK)SPuS1XQjv_#!_rJJd~8Ip*ECxrpiq{m`!J+V_i|mf~pv)eU@z@ zIgtFKMv)7p`;e@Kb&>{8@ff>DuKH~yEsk_zQl&Ev-FHR7VjknYm4bZ7_#nt9YqBOo z)*YkuoE_eMP6Ew Z<8GLqE_O#ZX!c>h9n>^j4IruqCx1L?g@phB literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-nl_NL.mo b/languages/gravityformsicontact-nl_NL.mo new file mode 100644 index 0000000000000000000000000000000000000000..f520cf950778f76e8b8be8d2478abc2e0f66d760 GIT binary patch literal 6370 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 literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-pt_PT.mo b/languages/gravityformsicontact-pt_PT.mo new file mode 100644 index 0000000000000000000000000000000000000000..ac64d5f21ae6bd69e70180ce4383632bd3821f2e GIT binary patch literal 6529 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 literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-ru_RU.mo b/languages/gravityformsicontact-ru_RU.mo new file mode 100644 index 0000000000000000000000000000000000000000..f98a3663e470aed0b8c75282436568cb3e0fc84a GIT binary patch literal 7946 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 literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-sv_SE.mo b/languages/gravityformsicontact-sv_SE.mo new file mode 100644 index 0000000000000000000000000000000000000000..5eef05aacb456561d0ea5a4f43873813380b27a9 GIT binary patch literal 455 zcmYLF!A=4(5Y^~ukDfh@i3fQh9&?2 literal 0 HcmV?d00001 diff --git a/languages/gravityformsicontact-tr_TR.mo b/languages/gravityformsicontact-tr_TR.mo new file mode 100644 index 0000000000000000000000000000000000000000..4bc2ee51ccef68cc7f061eb2612c7541c97a9b95 GIT binary patch literal 5996 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 kAAa-u(f\n" +"Language-Team: Gravity Forms \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"POT-Creation-Date: 2020-09-08T16:14:45+00:00\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"X-Generator: WP-CLI 2.4.0\n" +"X-Domain: gravityformsicontact\n" + +#. Plugin Name of the plugin +msgid "Gravity Forms iContact Add-On" +msgstr "" + +#. Plugin URI of the plugin +#. Author URI of the plugin +msgid "https://gravityforms.com" +msgstr "" + +#. Description of the plugin +msgid "Integrates Gravity Forms with iContact, allowing form submissions to be automatically sent to your iContact account." +msgstr "" + +#. Author of the plugin +msgid "Gravity Forms" +msgstr "" + +#: class-gf-icontact.php:67 +msgid "Subscribe contact to iContact only when payment is received." +msgstr "" + +#: class-gf-icontact.php:125 +msgid "Application ID" +msgstr "" + +#: class-gf-icontact.php:132 +msgid "Account Username" +msgstr "" + +#: class-gf-icontact.php:139 +msgid "API Password" +msgstr "" + +#: class-gf-icontact.php:147 +msgid "Client Folder" +msgstr "" + +#: class-gf-icontact.php:151 +msgid "Unable to retrieve Client Folders." +msgstr "" + +#: class-gf-icontact.php:156 +msgid "iContact settings have been updated." +msgstr "" + +#: class-gf-icontact.php:175 +msgid "iContact makes it easy to send email newsletters to your customers, manage your subscriber lists, and track campaign performance. Use Gravity Forms to collect customer information and automatically add it to your iContact list. If you don't have an iContact account, you can %1$s sign up for one here.%2$s" +msgstr "" + +#: class-gf-icontact.php:183 +msgid "Gravity Forms iContact Add-On requires your Application ID, API username and API password. To obtain an application ID, follow the steps below:" +msgstr "" + +#: class-gf-icontact.php:188 +msgid "Visit iContact's %1$s application registration page.%2$s" +msgstr "" + +#: class-gf-icontact.php:191 +msgid "Set an application name and description for your application." +msgstr "" + +#: class-gf-icontact.php:192 +msgid "Choose to show information for API 2.0." +msgstr "" + +#: class-gf-icontact.php:193 +msgid "Copy the provided API-AppId into the Application ID setting field below." +msgstr "" + +#: class-gf-icontact.php:194 +msgid "Click \"Enable this AppId for your account\"." +msgstr "" + +#: class-gf-icontact.php:195 +msgid "Create a password for your application and click save." +msgstr "" + +#: class-gf-icontact.php:196 +msgid "Enter your API password, along with your iContact account username, into the settings fields below." +msgstr "" + +#: class-gf-icontact.php:234 +msgid "Select a Client Folder" +msgstr "" + +#: class-gf-icontact.php:242 +msgid "Default Client Folder" +msgstr "" + +#: class-gf-icontact.php:266 +msgid "Feed Name" +msgstr "" + +#: class-gf-icontact.php:269 +#: class-gf-icontact.php:573 +msgid "Name" +msgstr "" + +#: class-gf-icontact.php:269 +msgid "Enter a feed name to uniquely identify this setup." +msgstr "" + +#: class-gf-icontact.php:275 +#: class-gf-icontact.php:280 +#: class-gf-icontact.php:574 +msgid "iContact List" +msgstr "" + +#: class-gf-icontact.php:279 +msgid "Unable to retrieve Lists." +msgstr "" + +#: class-gf-icontact.php:280 +msgid "Select which iContact list this feed will add contacts to." +msgstr "" + +#: class-gf-icontact.php:284 +#: class-gf-icontact.php:287 +msgid "Map Fields" +msgstr "" + +#: class-gf-icontact.php:287 +msgid "Select which Gravity Form fields pair with their respective iContact fields." +msgstr "" + +#: class-gf-icontact.php:298 +#: class-gf-icontact.php:302 +msgid "Opt-In Condition" +msgstr "" + +#: class-gf-icontact.php:300 +msgid "Enable" +msgstr "" + +#: class-gf-icontact.php:301 +msgid "Export to iContact if" +msgstr "" + +#: class-gf-icontact.php:302 +msgid "When the opt-in condition is enabled, form submissions will only be exported to iContact when the condition is met. When disabled, all form submissions will be exported." +msgstr "" + +#: class-gf-icontact.php:361 +msgid "Email Address" +msgstr "" + +#: class-gf-icontact.php:368 +msgid "Prefix" +msgstr "" + +#: class-gf-icontact.php:372 +msgid "First Name" +msgstr "" + +#: class-gf-icontact.php:377 +msgid "Last Name" +msgstr "" + +#: class-gf-icontact.php:382 +msgid "Suffix" +msgstr "" + +#: class-gf-icontact.php:386 +msgid "Address: Street Address" +msgstr "" + +#: class-gf-icontact.php:390 +msgid "Address: Line 2" +msgstr "" + +#: class-gf-icontact.php:394 +msgid "Address: City" +msgstr "" + +#: class-gf-icontact.php:398 +msgid "Address: State" +msgstr "" + +#: class-gf-icontact.php:402 +msgid "Address: Postal Code" +msgstr "" + +#: class-gf-icontact.php:406 +msgid "Phone Number" +msgstr "" + +#: class-gf-icontact.php:410 +msgid "Fax Number" +msgstr "" + +#: class-gf-icontact.php:414 +msgid "Business Number" +msgstr "" + +#: class-gf-icontact.php:482 +msgid "Add Custom Field" +msgstr "" + +#: class-gf-icontact.php:647 +msgid "Feed was not processed because API was not initialized." +msgstr "" + +#: class-gf-icontact.php:675 +msgid "Contact could not be created as email address was not provided." +msgstr "" + +#: class-gf-icontact.php:718 +msgid "Contact could not be created. %s" +msgstr "" + +#: class-gf-icontact.php:737 +msgid "Unable to determine if contact already exists. %s" +msgstr "" + +#: class-gf-icontact.php:757 +msgid "Contact could not be updated. %s" +msgstr "" + +#: class-gf-icontact.php:796 +msgid "Contact could not be subscribed to list. %s" +msgstr ""