Creative Mail – Easier WordPress & WooCommerce Email Marketing - Version 1.1.2

Version Description

Download this release

Release Info

Developer constantcontact
Plugin Icon 128x128 Creative Mail – Easier WordPress & WooCommerce Email Marketing
Version 1.1.2
Comparing to
See all releases

Code changes from version 1.1.1 to 1.1.2

CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
  Changelog
2
  =========
3
 
 
 
 
 
4
  #### 1.1.1 - August 27 2020
5
  - Fixes a bug that would cache API responses
6
 
1
  Changelog
2
  =========
3
 
4
+ #### 1.1.2 - August 31 2020
5
+ - Fixes a bug that would cause the plugin to throw an exception when installing through the plugin management api.
6
+ - Add support for beta versions of Jetpack.
7
+
8
  #### 1.1.1 - August 27 2020
9
  - Fixes a bug that would cache API responses
10
 
README.md CHANGED
@@ -3,7 +3,7 @@ Contributors: Constant Contact
3
  Tags: email, marketing, newsletter, subscribe, contact form, constant contact, crm, automations, ecommerce, promotion, offers, retargeting
4
  Requires at least: 4.6
5
  Tested up to: 5.5
6
- Stable tag: 1.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Requires PHP: 5.6
@@ -33,12 +33,12 @@ Turn your WooCommerce store and your WordPress site into efficient marketing eng
33
 
34
  ### [OPT-IN EMAIL FORMS](https://www.creativemail.com):
35
  - **Jetpack & WordPress Website Forms:** Creative Mail detects the current website forms used on your site, and automatically adds contacts to your email marketing lists. Automagically awesome!
36
- - **JMML Newsletter Form:** Create Mail and Jetpack now include a JMML (join my mailing list) Newsletter Signup form. When activated, contacts who sign up for your Newsletter through the JMML form are brought right into your Newsletter email marketing list. Easy peasy.
37
 
38
  ### [EMAIL AUTOMATIONS](https://www.creativemail.com):
39
- - **Scheduled Sends:** Schedule the time and date of outgoing email marketing campaigns based on your business or organizations preferences.
40
  - **Single-Step Triggered Emails:** Replace your non-branded triggered emails with on-brand Creative Mail emails for deeper customer engagement.
41
- - **Multi-Step Marketing Journeys:** Develop sophisticated CLM (that’s marketing speak for - customer lifecycle marketing) campaigns by leveraging our “if this, then that” campaign automation engine that responds to a customers actions or purchases. (Coming Soon)
42
 
43
  ### [ANALYTICS & INSIGHTS](https://www.creativemail.com):
44
  - **Realtime Email Marketing Statistics:** Bounces, opens, clicks, forwards, complaints, unsubscribes and more are easily tracked and managed. Be a control freak, it’s OK.
@@ -88,6 +88,7 @@ Creative Mail by Constant Contact [Privacy Policy](https://endurance.clarip.com/
88
  6. Enhance your brand with logomaker
89
 
90
  == Changelog ==
 
91
  * 1.1.1 - Fixes a bug that would cache API responses
92
  * 1.1.0 - Added support for WooCommerce emails, WPFormsLite and JetPack Forms
93
  * 1.0.4 - Added compatibility with PHP 5.6
3
  Tags: email, marketing, newsletter, subscribe, contact form, constant contact, crm, automations, ecommerce, promotion, offers, retargeting
4
  Requires at least: 4.6
5
  Tested up to: 5.5
6
+ Stable tag: 1.1.2
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Requires PHP: 5.6
33
 
34
  ### [OPT-IN EMAIL FORMS](https://www.creativemail.com):
35
  - **Jetpack & WordPress Website Forms:** Creative Mail detects the current website forms used on your site, and automatically adds contacts to your email marketing lists. Automagically awesome!
36
+ - **JMML Newsletter Form:** Creative Mail and Jetpack now include a JMML (join my mailing list) Newsletter Signup form. When activated, contacts who sign up for your Newsletter through the JMML form are brought right into your Newsletter email marketing list. Easy peasy.
37
 
38
  ### [EMAIL AUTOMATIONS](https://www.creativemail.com):
39
+ - **Scheduled Sends:** Schedule the time and date of outgoing email marketing campaigns based on your business or organization's preferences.
40
  - **Single-Step Triggered Emails:** Replace your non-branded triggered emails with on-brand Creative Mail emails for deeper customer engagement.
41
+ - **Multi-Step Marketing Journeys:** Develop sophisticated CLM (that’s marketing speak for - customer lifecycle marketing) campaigns by leveraging our “if this, then that” campaign automation engine that responds to a customer's actions or purchases. (Coming Soon)
42
 
43
  ### [ANALYTICS & INSIGHTS](https://www.creativemail.com):
44
  - **Realtime Email Marketing Statistics:** Bounces, opens, clicks, forwards, complaints, unsubscribes and more are easily tracked and managed. Be a control freak, it’s OK.
88
  6. Enhance your brand with logomaker
89
 
90
  == Changelog ==
91
+ * 1.1.2 - Add support for beta versions of Jetpack
92
  * 1.1.1 - Fixes a bug that would cache API responses
93
  * 1.1.0 - Added support for WooCommerce emails, WPFormsLite and JetPack Forms
94
  * 1.0.4 - Added compatibility with PHP 5.6
creative-mail-plugin.php CHANGED
@@ -6,7 +6,7 @@ use CreativeMail\CreativeMail;
6
  * Plugin URI: https://wordpress.org/plugins/creative-mail-by-constant-contact/
7
  * Description: Power your WooCommerce Store or WordPress Blog with simple & free email marketing from Constant Contact. With the official Creative Mail for WooCommerce plugin, your products, blog posts, images and store links are automatically included as rich shoppable email marketing content for your customers. Our included CRM also intelligently pulls in and identifies your WordPress site contacts and WooCommerce store customers. That makes it easy to build audiences and send targeted customer campaigns. Get free email marketing, 97% deliverability, and Constant Contact rock solid reliability all without ever needing to leave your WP Admin.
8
  * Author: Constant Contact
9
- * Version: 1.1.1
10
  * Author URI: https://www.constantcontact.com
11
  */
12
 
@@ -20,7 +20,7 @@ function _load_ce4wp_plugin() {
20
 
21
  define('CE4WP_PLUGIN_DIR', __DIR__ . '/');
22
  define('CE4WP_PLUGIN_URL', plugin_dir_url(__FILE__) . '/');
23
- define('CE4WP_PLUGIN_VERSION', '1.1.1');
24
  define('CE4WP_INSTANCE_UUID_KEY', 'ce4wp_instance_uuid');
25
  define('CE4WP_INSTANCE_HANDSHAKE_TOKEN', 'ce4wp_handshake_token');
26
  define('CE4WP_INSTANCE_HANDSHAKE_EXPIRATION', 'ce4wp_handshake_expiration');
@@ -35,6 +35,7 @@ function _load_ce4wp_plugin() {
35
  define('CE4WP_APP_GATEWAY_URL', 'https://app-gateway.creativemail.com/');
36
  define('CE4WP_APP_URL', 'https://app.creativemail.com/');
37
  define('CE4WP_ENVIRONMENT', 'PRODUCTION');
 
38
  define('CE4WP_BATCH_SIZE', 500);
39
  define('CE4WP_WC_API_KEY_ID', 'ce4wp_woocommerce_api_key_id');
40
  define('CE4WP_WC_API_CONSUMER_KEY', 'ce4wp_woocommerce_consumer_key');
6
  * Plugin URI: https://wordpress.org/plugins/creative-mail-by-constant-contact/
7
  * Description: Power your WooCommerce Store or WordPress Blog with simple & free email marketing from Constant Contact. With the official Creative Mail for WooCommerce plugin, your products, blog posts, images and store links are automatically included as rich shoppable email marketing content for your customers. Our included CRM also intelligently pulls in and identifies your WordPress site contacts and WooCommerce store customers. That makes it easy to build audiences and send targeted customer campaigns. Get free email marketing, 97% deliverability, and Constant Contact rock solid reliability all without ever needing to leave your WP Admin.
8
  * Author: Constant Contact
9
+ * Version: 1.1.2
10
  * Author URI: https://www.constantcontact.com
11
  */
12
 
20
 
21
  define('CE4WP_PLUGIN_DIR', __DIR__ . '/');
22
  define('CE4WP_PLUGIN_URL', plugin_dir_url(__FILE__) . '/');
23
+ define('CE4WP_PLUGIN_VERSION', '1.1.2');
24
  define('CE4WP_INSTANCE_UUID_KEY', 'ce4wp_instance_uuid');
25
  define('CE4WP_INSTANCE_HANDSHAKE_TOKEN', 'ce4wp_handshake_token');
26
  define('CE4WP_INSTANCE_HANDSHAKE_EXPIRATION', 'ce4wp_handshake_expiration');
35
  define('CE4WP_APP_GATEWAY_URL', 'https://app-gateway.creativemail.com/');
36
  define('CE4WP_APP_URL', 'https://app.creativemail.com/');
37
  define('CE4WP_ENVIRONMENT', 'PRODUCTION');
38
+ define('CE4WP_BUILD_NUMBER', '519');
39
  define('CE4WP_BATCH_SIZE', 500);
40
  define('CE4WP_WC_API_KEY_ID', 'ce4wp_woocommerce_api_key_id');
41
  define('CE4WP_WC_API_CONSUMER_KEY', 'ce4wp_woocommerce_consumer_key');
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: Constant Contact
3
  Tags: email, marketing, newsletter, subscribe, contact form, constant contact, crm, automations, ecommerce, promotion, offers, retargeting
4
  Requires at least: 4.6
5
  Tested up to: 5.5
6
- Stable tag: 1.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Requires PHP: 5.6
@@ -33,12 +33,12 @@ Turn your WooCommerce store and your WordPress site into efficient marketing eng
33
 
34
  ### [OPT-IN EMAIL FORMS](https://www.creativemail.com):
35
  - **Jetpack & WordPress Website Forms:** Creative Mail detects the current website forms used on your site, and automatically adds contacts to your email marketing lists. Automagically awesome!
36
- - **JMML Newsletter Form:** Create Mail and Jetpack now include a JMML (join my mailing list) Newsletter Signup form. When activated, contacts who sign up for your Newsletter through the JMML form are brought right into your Newsletter email marketing list. Easy peasy.
37
 
38
  ### [EMAIL AUTOMATIONS](https://www.creativemail.com):
39
- - **Scheduled Sends:** Schedule the time and date of outgoing email marketing campaigns based on your business or organizations preferences.
40
  - **Single-Step Triggered Emails:** Replace your non-branded triggered emails with on-brand Creative Mail emails for deeper customer engagement.
41
- - **Multi-Step Marketing Journeys:** Develop sophisticated CLM (that’s marketing speak for - customer lifecycle marketing) campaigns by leveraging our “if this, then that” campaign automation engine that responds to a customers actions or purchases. (Coming Soon)
42
 
43
  ### [ANALYTICS & INSIGHTS](https://www.creativemail.com):
44
  - **Realtime Email Marketing Statistics:** Bounces, opens, clicks, forwards, complaints, unsubscribes and more are easily tracked and managed. Be a control freak, it’s OK.
@@ -88,6 +88,7 @@ Creative Mail by Constant Contact [Privacy Policy](https://endurance.clarip.com/
88
  6. Enhance your brand with logomaker
89
 
90
  == Changelog ==
 
91
  * 1.1.1 - Fixes a bug that would cache API responses
92
  * 1.1.0 - Added support for WooCommerce emails, WPFormsLite and JetPack Forms
93
  * 1.0.4 - Added compatibility with PHP 5.6
3
  Tags: email, marketing, newsletter, subscribe, contact form, constant contact, crm, automations, ecommerce, promotion, offers, retargeting
4
  Requires at least: 4.6
5
  Tested up to: 5.5
6
+ Stable tag: 1.1.2
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Requires PHP: 5.6
33
 
34
  ### [OPT-IN EMAIL FORMS](https://www.creativemail.com):
35
  - **Jetpack & WordPress Website Forms:** Creative Mail detects the current website forms used on your site, and automatically adds contacts to your email marketing lists. Automagically awesome!
36
+ - **JMML Newsletter Form:** Creative Mail and Jetpack now include a JMML (join my mailing list) Newsletter Signup form. When activated, contacts who sign up for your Newsletter through the JMML form are brought right into your Newsletter email marketing list. Easy peasy.
37
 
38
  ### [EMAIL AUTOMATIONS](https://www.creativemail.com):
39
+ - **Scheduled Sends:** Schedule the time and date of outgoing email marketing campaigns based on your business or organization's preferences.
40
  - **Single-Step Triggered Emails:** Replace your non-branded triggered emails with on-brand Creative Mail emails for deeper customer engagement.
41
+ - **Multi-Step Marketing Journeys:** Develop sophisticated CLM (that’s marketing speak for - customer lifecycle marketing) campaigns by leveraging our “if this, then that” campaign automation engine that responds to a customer's actions or purchases. (Coming Soon)
42
 
43
  ### [ANALYTICS & INSIGHTS](https://www.creativemail.com):
44
  - **Realtime Email Marketing Statistics:** Bounces, opens, clicks, forwards, complaints, unsubscribes and more are easily tracked and managed. Be a control freak, it’s OK.
88
  6. Enhance your brand with logomaker
89
 
90
  == Changelog ==
91
+ * 1.1.2 - Add support for beta versions of Jetpack
92
  * 1.1.1 - Fixes a bug that would cache API responses
93
  * 1.1.0 - Added support for WooCommerce emails, WPFormsLite and JetPack Forms
94
  * 1.0.4 - Added compatibility with PHP 5.6
src/constants/environment-names.php CHANGED
@@ -5,5 +5,6 @@ namespace CreativeMail\Constants;
5
  class EnvironmentNames
6
  {
7
  const DEVELOPMENT = 'DEVELOP';
 
8
  const PRODUCTION = 'PRODUCTION';
9
- }
5
  class EnvironmentNames
6
  {
7
  const DEVELOPMENT = 'DEVELOP';
8
+ const QA = 'QA';
9
  const PRODUCTION = 'PRODUCTION';
10
+ }
src/modules/woocommerce/models/WCStoreInformation.php CHANGED
@@ -13,6 +13,7 @@ class WCStoreInformation
13
  public $postcode;
14
  public $state;
15
  public $country;
 
16
  public $currency;
17
  public $currency_symbol;
18
  public $email_from;
@@ -22,13 +23,13 @@ class WCStoreInformation
22
  {
23
  if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins'))))
24
  {
25
- $location = wc_get_base_location();
26
- $this->address1 = apply_filters( 'woocommerce_countries_base_address', get_option( 'woocommerce_store_address', '' ));
27
- $this->address2 = apply_filters( 'woocommerce_countries_base_address_2', get_option( 'woocommerce_store_address_2', '' ));
28
- $this->city = apply_filters( 'woocommerce_countries_base_city', $location);
29
- $this->postcode = apply_filters( 'woocommerce_countries_base_postcode', $location );
30
- $this->state = apply_filters( 'woocommerce_countries_base_country', $location );
31
- $this->country = apply_filters( 'woocommerce_countries_base_country', $location );
32
  $this->currency_symbol = get_woocommerce_currency_symbol();
33
  $this->currency = get_woocommerce_currency();
34
  $this->email_from = apply_filters( 'woocommerce_email_from_address', get_option( 'woocommerce_email_from_address' ));
13
  public $postcode;
14
  public $state;
15
  public $country;
16
+ public $country_code;
17
  public $currency;
18
  public $currency_symbol;
19
  public $email_from;
23
  {
24
  if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins'))))
25
  {
26
+ $this->address1 = WC()->countries->get_base_address();
27
+ $this->address2 = WC()->countries->get_base_address_2();
28
+ $this->city = WC()->countries->get_base_city();
29
+ $this->postcode = WC()->countries->get_base_postcode();
30
+ $this->state = WC()->countries->get_base_state();
31
+ $this->country = WC()->countries->countries[WC()->countries->get_base_country()];
32
+ $this->country_code = WC()->countries->get_base_country();
33
  $this->currency_symbol = get_woocommerce_currency_symbol();
34
  $this->currency = get_woocommerce_currency();
35
  $this->email_from = apply_filters( 'woocommerce_email_from_address', get_option( 'woocommerce_email_from_address' ));
src/views/onboarding.php CHANGED
@@ -11,8 +11,15 @@
11
  . '&wp_version=' . get_bloginfo('version')
12
  . '&plugin_version=' . CE4WP_PLUGIN_VERSION;
13
  $referred_by = OptionsHelper::get_referred_by();
14
- if (isset($referred_by)) {
15
- $onboardingUrl .= '&utm_source=wordpress&utm_medium=plugin&utm_campaign=' . str_replace(';', '|', $referred_by);
 
 
 
 
 
 
 
16
  }
17
  ?>
18
 
11
  . '&wp_version=' . get_bloginfo('version')
12
  . '&plugin_version=' . CE4WP_PLUGIN_VERSION;
13
  $referred_by = OptionsHelper::get_referred_by();
14
+ if (isset($referred_by))
15
+ {
16
+ $utm_campaign = '';
17
+ if (is_array($referred_by) && array_key_exists('plugin', $referred_by) && array_key_exists('source', $referred_by)) {
18
+ $utm_campaign = $referred_by['plugin'] . $referred_by['source'];
19
+ } else if (is_string($referred_by)){
20
+ $utm_campaign = str_replace(';', '|', $referred_by);
21
+ }
22
+ $onboardingUrl .= '&utm_source=wordpress&utm_medium=plugin&utm_campaign=' . $utm_campaign;
23
  }
24
  ?>
25
 
src/views/settings-internal.php CHANGED
@@ -19,6 +19,11 @@ use CreativeMail\Helpers\EnvironmentHelper;
19
  <h5><?php echo esc_html(EnvironmentHelper::get_environment()) ?></h5>
20
  </div>
21
 
 
 
 
 
 
22
  <div class="ce4wp-kvp">
23
  <h6>App</h6>
24
  <h5><?php echo esc_js(EnvironmentHelper::get_app_url()) ?></h5>
19
  <h5><?php echo esc_html(EnvironmentHelper::get_environment()) ?></h5>
20
  </div>
21
 
22
+ <div class="ce4wp-kvp">
23
+ <h6>Plugin version</h6>
24
+ <h5><?php echo esc_html(CE4WP_PLUGIN_VERSION) . '.' . esc_html(CE4WP_BUILD_NUMBER) ?></h5>
25
+ </div>
26
+
27
  <div class="ce4wp-kvp">
28
  <h6>App</h6>
29
  <h5><?php echo esc_js(EnvironmentHelper::get_app_url()) ?></h5>
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit202e2f3347eb8c97cbd8db07dd18cea8::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit4fa04db1c96f7c0120bcc31606e0b2b8::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit202e2f3347eb8c97cbd8db07dd18cea8
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit202e2f3347eb8c97cbd8db07dd18cea8
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInit202e2f3347eb8c97cbd8db07dd18cea8', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInit202e2f3347eb8c97cbd8db07dd18cea8', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInit202e2f3347eb8c97cbd8db07dd18cea8::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit4fa04db1c96f7c0120bcc31606e0b2b8
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInit4fa04db1c96f7c0120bcc31606e0b2b8', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit4fa04db1c96f7c0120bcc31606e0b2b8', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInit4fa04db1c96f7c0120bcc31606e0b2b8::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit202e2f3347eb8c97cbd8db07dd18cea8
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'F' =>
@@ -121,9 +121,9 @@ class ComposerStaticInit202e2f3347eb8c97cbd8db07dd18cea8
121
  public static function getInitializer(ClassLoader $loader)
122
  {
123
  return \Closure::bind(function () use ($loader) {
124
- $loader->prefixLengthsPsr4 = ComposerStaticInit202e2f3347eb8c97cbd8db07dd18cea8::$prefixLengthsPsr4;
125
- $loader->prefixDirsPsr4 = ComposerStaticInit202e2f3347eb8c97cbd8db07dd18cea8::$prefixDirsPsr4;
126
- $loader->classMap = ComposerStaticInit202e2f3347eb8c97cbd8db07dd18cea8::$classMap;
127
 
128
  }, null, ClassLoader::class);
129
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit4fa04db1c96f7c0120bcc31606e0b2b8
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'F' =>
121
  public static function getInitializer(ClassLoader $loader)
122
  {
123
  return \Closure::bind(function () use ($loader) {
124
+ $loader->prefixLengthsPsr4 = ComposerStaticInit4fa04db1c96f7c0120bcc31606e0b2b8::$prefixLengthsPsr4;
125
+ $loader->prefixDirsPsr4 = ComposerStaticInit4fa04db1c96f7c0120bcc31606e0b2b8::$prefixDirsPsr4;
126
+ $loader->classMap = ComposerStaticInit4fa04db1c96f7c0120bcc31606e0b2b8::$classMap;
127
 
128
  }, null, ClassLoader::class);
129
  }