Copernica_MarketingSoftware - Version 2.0.1

Version Notes

Improvements:
- Added the attribute set name to sync.
- Added field validation linking fields to Copernica.
- Changed download link to Magento Connect.
- Only sync guest orders by initial sync, other orders are synced via the customer.

Download this release

Release Info

Developer Cream
Extension Copernica_MarketingSoftware
Version 2.0.1
Comparing to
See all releases


Code changes from version 2.0.0 to 2.0.1

app/code/community/Copernica/MarketingSoftware/Helper/Config.php CHANGED
@@ -22,7 +22,7 @@ class Copernica_MarketingSoftware_Helper_Config extends Mage_Core_Helper_Abstrac
22
  * @param string $name Name of the config parameter
23
  * @param string $value Value that should be stored in the config
24
  */
25
- private function _setConfig($name, $value)
26
  {
27
  // is this value new the same as the existing value
28
  if ($value === $this->_getConfig($name)) return;
@@ -30,8 +30,10 @@ class Copernica_MarketingSoftware_Helper_Config extends Mage_Core_Helper_Abstrac
30
  // Store the value in the config
31
  Mage::getConfig()->saveConfig(self::CONFIG_BASE . $name, $value);
32
 
33
- // We changed something in the settings, clean the cache
34
- Mage::getConfig()->cleanCache();
 
 
35
 
36
  // some config items are not that interesting
37
  if (in_array($name, array(
@@ -188,7 +190,7 @@ class Copernica_MarketingSoftware_Helper_Config extends Mage_Core_Helper_Abstrac
188
  */
189
  public function setLinkedCustomerFields($value)
190
  {
191
- $this->_setConfig('linked_customer_fields', json_encode($value));
192
  return $this;
193
  }
194
 
@@ -232,7 +234,7 @@ class Copernica_MarketingSoftware_Helper_Config extends Mage_Core_Helper_Abstrac
232
  */
233
  public function setLinkedCartItemFields($value)
234
  {
235
- $this->_setConfig('linked_cart_item_fields', json_encode($value));
236
  return $this;
237
  }
238
 
@@ -297,7 +299,7 @@ class Copernica_MarketingSoftware_Helper_Config extends Mage_Core_Helper_Abstrac
297
  */
298
  public function setLinkedOrderFields($value)
299
  {
300
- $this->_setConfig('linked_order_fields', json_encode($value));
301
  return $this;
302
  }
303
 
@@ -365,7 +367,7 @@ class Copernica_MarketingSoftware_Helper_Config extends Mage_Core_Helper_Abstrac
365
  */
366
  public function setLinkedOrderItemFields($value)
367
  {
368
- $this->_setConfig('linked_order_item_fields', json_encode($value));
369
  return $this;
370
  }
371
 
@@ -427,7 +429,7 @@ class Copernica_MarketingSoftware_Helper_Config extends Mage_Core_Helper_Abstrac
427
  */
428
  public function setLinkedAddressFields($value)
429
  {
430
- $this->_setConfig('linked_address_fields', json_encode($value));
431
  return $this;
432
  }
433
 
@@ -534,7 +536,7 @@ class Copernica_MarketingSoftware_Helper_Config extends Mage_Core_Helper_Abstrac
534
  */
535
  public function setLastEndTimeCronjob($value)
536
  {
537
- $this->_setConfig('cronjob_endtime', $value);
538
  return $this;
539
  }
540
 
22
  * @param string $name Name of the config parameter
23
  * @param string $value Value that should be stored in the config
24
  */
25
+ private function _setConfig($name, $value, $cleanCache = false)
26
  {
27
  // is this value new the same as the existing value
28
  if ($value === $this->_getConfig($name)) return;
30
  // Store the value in the config
31
  Mage::getConfig()->saveConfig(self::CONFIG_BASE . $name, $value);
32
 
33
+ if ($cleanCache) {
34
+ // We changed something in the settings, clean the cache
35
+ Mage::getConfig()->cleanCache();
36
+ }
37
 
38
  // some config items are not that interesting
39
  if (in_array($name, array(
190
  */
191
  public function setLinkedCustomerFields($value)
192
  {
193
+ $this->_setConfig('linked_customer_fields', json_encode($value), true);
194
  return $this;
195
  }
196
 
234
  */
235
  public function setLinkedCartItemFields($value)
236
  {
237
+ $this->_setConfig('linked_cart_item_fields', json_encode($value), true);
238
  return $this;
239
  }
240
 
299
  */
300
  public function setLinkedOrderFields($value)
301
  {
302
+ $this->_setConfig('linked_order_fields', json_encode($value), true);
303
  return $this;
304
  }
305
 
367
  */
368
  public function setLinkedOrderItemFields($value)
369
  {
370
+ $this->_setConfig('linked_order_item_fields', json_encode($value), true);
371
  return $this;
372
  }
373
 
429
  */
430
  public function setLinkedAddressFields($value)
431
  {
432
+ $this->_setConfig('linked_address_fields', json_encode($value), true);
433
  return $this;
434
  }
435
 
536
  */
537
  public function setLastEndTimeCronjob($value)
538
  {
539
+ $this->_setConfig('cronjob_endtime', $value, true);
540
  return $this;
541
  }
542
 
app/code/community/Copernica/MarketingSoftware/Helper/Data.php CHANGED
@@ -36,6 +36,7 @@ class Copernica_MarketingSoftware_Helper_Data extends Mage_Core_Helper_Abstract
36
  'product_id' => 'product id',
37
  'name' => 'Product name',
38
  'sku' => 'SKU',
 
39
  'weight' => 'Weight',
40
  'quantity' => 'Quantity',
41
  'price' => 'Price',
@@ -88,6 +89,7 @@ class Copernica_MarketingSoftware_Helper_Data extends Mage_Core_Helper_Abstract
88
  'increment_id' => 'Increment id',
89
  'name' => 'Product name',
90
  'sku' => 'SKU',
 
91
  'weight' => 'Weight',
92
  'quantity' => 'Quantity',
93
  'price' => 'Price',
@@ -281,7 +283,7 @@ class Copernica_MarketingSoftware_Helper_Data extends Mage_Core_Helper_Abstract
281
  public function validatePluginBehaviour()
282
  {
283
  // A new version is available
284
- if ($version = $this->checkNewVersion()) Mage::getSingleton('adminhtml/session')->addNotice("A new version ($version) of the Magento-Copernica extension is available. Click <a href='http://www.copernica.com/download/Copernica_MarketingSoftware-$version.tar.gz'>here</a> to download it.");
285
 
286
  // Perform the checks, an exception might be thrown, not that in in this way we can show only one error
287
  try
@@ -341,6 +343,6 @@ class Copernica_MarketingSoftware_Helper_Data extends Mage_Core_Helper_Abstract
341
  */
342
  public function generateCustomerId($email, $storeview)
343
  {
344
- return md5($email . $storeview);
345
  }
346
  }
36
  'product_id' => 'product id',
37
  'name' => 'Product name',
38
  'sku' => 'SKU',
39
+ 'attribute_set' => 'Attribute set',
40
  'weight' => 'Weight',
41
  'quantity' => 'Quantity',
42
  'price' => 'Price',
89
  'increment_id' => 'Increment id',
90
  'name' => 'Product name',
91
  'sku' => 'SKU',
92
+ 'attribute_set' => 'Attribute set',
93
  'weight' => 'Weight',
94
  'quantity' => 'Quantity',
95
  'price' => 'Price',
283
  public function validatePluginBehaviour()
284
  {
285
  // A new version is available
286
+ if ($version = $this->checkNewVersion()) Mage::getSingleton('adminhtml/session')->addNotice("A new version ($version) of the Magento-Copernica extension is available. Click <a href='http://www.magentocommerce.com/magento-connect/copernica-marketing-software-8325.html'>here</a> to download it.");
287
 
288
  // Perform the checks, an exception might be thrown, not that in in this way we can show only one error
289
  try
343
  */
344
  public function generateCustomerId($email, $storeview)
345
  {
346
+ return md5(strtolower($email) . $storeview);
347
  }
348
  }
app/code/community/Copernica/MarketingSoftware/Model/Abstraction/Customer.php CHANGED
@@ -137,14 +137,14 @@ class Copernica_MarketingSoftware_Model_Abstraction_Customer implements Serializ
137
  if (is_object($this->original))
138
  {
139
  $subscriber = Mage::getModel('newsletter/subscriber');
140
- if (
141
- $subscriber->loadByCustomer($this->original)->getId() ||
142
- $subscriber->loadByEmail($this->email())->getId()
143
- ) {
144
- return Mage::getModel('marketingsoftware/abstraction_subscription')->setOriginal($subscriber);
145
  }
 
 
146
  }
147
- else return $this->subscription;
148
  }
149
 
150
  /**
137
  if (is_object($this->original))
138
  {
139
  $subscriber = Mage::getModel('newsletter/subscriber');
140
+ if ($subscriber->loadByCustomer($this->original)->getId()) {
141
+ if ($subscriber->getStoreId() === $this->original->getStoreId()) {
142
+ return Mage::getModel('marketingsoftware/abstraction_subscription')->setOriginal($subscriber);
143
+ }
 
144
  }
145
+ } else {
146
+ return $this->subscription;
147
  }
 
148
  }
149
 
150
  /**
app/code/community/Copernica/MarketingSoftware/Model/Abstraction/Product.php CHANGED
@@ -26,6 +26,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Product implements Serializa
26
  private $created;
27
  private $modified;
28
  private $attributes;
 
29
 
30
  /**
31
  * Sets the original model
@@ -33,28 +34,24 @@ class Copernica_MarketingSoftware_Model_Abstraction_Product implements Serializa
33
  * @return Copernica_MarketingSoftware_Model_Abstraction_Product
34
  */
35
  public function setOriginal($original)
36
- {
37
  if ($original instanceof Mage_Catalog_Model_Product) {
38
  //this is the original product
39
  $this->original = $original;
40
 
41
  return $this;
42
- }
43
- else
44
- {
45
  //the quote item or order item has a product id
46
  $product = Mage::getModel('catalog/product')->load($original->getProductId());
47
- if ($product->getId())
48
- {
49
  //the product exists
50
  $this->original = $product;
51
- }
52
- else
53
- {
54
  // unfortunately we do not have the product any more, but we have the information
55
  // so we can fill a lot of fields, so the functions still work
56
  $this->id = $original->getProductId();
57
  $this->sku = $original->getSKU();
 
58
  $this->name = $original->getName();
59
  $this->description = $original->getDescription();
60
  $this->productUrl = '';
@@ -359,6 +356,19 @@ class Copernica_MarketingSoftware_Model_Abstraction_Product implements Serializa
359
  }
360
  else return $this->attributes;
361
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
362
 
363
  /**
364
  * Serialize the object
@@ -370,6 +380,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Product implements Serializa
370
  return serialize(array(
371
  $this->id(),
372
  $this->sku(),
 
373
  $this->name(),
374
  $this->description(),
375
  $this->productUrl(),
@@ -394,6 +405,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Product implements Serializa
394
  list(
395
  $this->id,
396
  $this->sku,
 
397
  $this->name,
398
  $this->description,
399
  $this->productUrl,
26
  private $created;
27
  private $modified;
28
  private $attributes;
29
+ private $attributeSet;
30
 
31
  /**
32
  * Sets the original model
34
  * @return Copernica_MarketingSoftware_Model_Abstraction_Product
35
  */
36
  public function setOriginal($original)
37
+ {
38
  if ($original instanceof Mage_Catalog_Model_Product) {
39
  //this is the original product
40
  $this->original = $original;
41
 
42
  return $this;
43
+ } else {
 
 
44
  //the quote item or order item has a product id
45
  $product = Mage::getModel('catalog/product')->load($original->getProductId());
46
+ if ($product->getId()) {
 
47
  //the product exists
48
  $this->original = $product;
49
+ } else {
 
 
50
  // unfortunately we do not have the product any more, but we have the information
51
  // so we can fill a lot of fields, so the functions still work
52
  $this->id = $original->getProductId();
53
  $this->sku = $original->getSKU();
54
+ $this->attributeSet = '';
55
  $this->name = $original->getName();
56
  $this->description = $original->getDescription();
57
  $this->productUrl = '';
356
  }
357
  else return $this->attributes;
358
  }
359
+
360
+ public function attributeSet()
361
+ {
362
+ // Is this object still present?
363
+ if (is_object($this->original)) {
364
+ $attributeSetModel = Mage::getModel("eav/entity_attribute_set");
365
+ $attributeSetModel->load($this->original->getAttributeSetId());
366
+
367
+ return $attributeSetModel->getAttributeSetName();
368
+ } else {
369
+ return $this->attributeSet;
370
+ }
371
+ }
372
 
373
  /**
374
  * Serialize the object
380
  return serialize(array(
381
  $this->id(),
382
  $this->sku(),
383
+ $this->attributeSet(),
384
  $this->name(),
385
  $this->description(),
386
  $this->productUrl(),
405
  list(
406
  $this->id,
407
  $this->sku,
408
+ $this->attributeSet,
409
  $this->name,
410
  $this->description,
411
  $this->productUrl,
app/code/community/Copernica/MarketingSoftware/Model/Abstraction/Storeview.php CHANGED
@@ -40,7 +40,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Storeview implements Seriali
40
  public function id()
41
  {
42
  // Is this object still present?
43
- if (is_object($this->original))
44
  {
45
  return $this->original->getId();
46
  }
@@ -54,11 +54,12 @@ class Copernica_MarketingSoftware_Model_Abstraction_Storeview implements Seriali
54
  public function websiteCode()
55
  {
56
  // Is this object still present?
57
- if (is_object($this->original))
58
  {
59
  return $this->original->getWebsite()->getCode();
60
  }
61
- else return $this->websiteCode;
 
62
  }
63
 
64
  /**
@@ -68,7 +69,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Storeview implements Seriali
68
  public function websiteLabel()
69
  {
70
  // Is this object still present?
71
- if (is_object($this->original))
72
  {
73
  return $this->original->getWebsite()->getName();
74
  }
@@ -82,7 +83,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Storeview implements Seriali
82
  public function storeCode()
83
  {
84
  // Is this object still present?
85
- if (is_object($this->original))
86
  {
87
  return $this->original->getGroup()->getId();
88
  }
@@ -96,7 +97,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Storeview implements Seriali
96
  public function storeLabel()
97
  {
98
  // Is this object still present?
99
- if (is_object($this->original))
100
  {
101
  return $this->original->getGroup()->getName();
102
  }
@@ -110,7 +111,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Storeview implements Seriali
110
  public function viewCode()
111
  {
112
  // Is this object still present?
113
- if (is_object($this->original))
114
  {
115
  return $this->original->getCode();
116
  }
@@ -124,7 +125,7 @@ class Copernica_MarketingSoftware_Model_Abstraction_Storeview implements Seriali
124
  public function viewLabel()
125
  {
126
  // Is this object still present?
127
- if (is_object($this->original))
128
  {
129
  return $this->original->getName();
130
  }
40
  public function id()
41
  {
42
  // Is this object still present?
43
+ if ($this->original instanceof Mage_Core_Model_Store && $this->original->getWebsite() instanceof Mage_Core_Model_Website)
44
  {
45
  return $this->original->getId();
46
  }
54
  public function websiteCode()
55
  {
56
  // Is this object still present?
57
+ if ($this->original instanceof Mage_Core_Model_Store && $this->original->getWebsite() instanceof Mage_Core_Model_Website)
58
  {
59
  return $this->original->getWebsite()->getCode();
60
  }
61
+
62
+ return $this->websiteCode;
63
  }
64
 
65
  /**
69
  public function websiteLabel()
70
  {
71
  // Is this object still present?
72
+ if ($this->original instanceof Mage_Core_Model_Store && $this->original->getWebsite() instanceof Mage_Core_Model_Website)
73
  {
74
  return $this->original->getWebsite()->getName();
75
  }
83
  public function storeCode()
84
  {
85
  // Is this object still present?
86
+ if ($this->original instanceof Mage_Core_Model_Store && $this->original->getWebsite() instanceof Mage_Core_Model_Website)
87
  {
88
  return $this->original->getGroup()->getId();
89
  }
97
  public function storeLabel()
98
  {
99
  // Is this object still present?
100
+ if ($this->original instanceof Mage_Core_Model_Store && $this->original->getWebsite() instanceof Mage_Core_Model_Website)
101
  {
102
  return $this->original->getGroup()->getName();
103
  }
111
  public function viewCode()
112
  {
113
  // Is this object still present?
114
+ if ($this->original instanceof Mage_Core_Model_Store && $this->original->getWebsite() instanceof Mage_Core_Model_Website)
115
  {
116
  return $this->original->getCode();
117
  }
125
  public function viewLabel()
126
  {
127
  // Is this object still present?
128
+ if ($this->original instanceof Mage_Core_Model_Store && $this->original->getWebsite() instanceof Mage_Core_Model_Website)
129
  {
130
  return $this->original->getName();
131
  }
app/code/community/Copernica/MarketingSoftware/Model/Copernica/Cartitem/Subprofile.php CHANGED
@@ -7,7 +7,7 @@ class Copernica_MarketingSoftware_Model_Copernica_Cartitem_Subprofile extends Co
7
  /**
8
  * @var Copernica_MarketingSoftware_Model_Abstraction_Quote_Item
9
  */
10
- private $quoteItem = false;
11
 
12
  /**
13
  * @var string
@@ -93,6 +93,7 @@ class Copernica_MarketingSoftware_Model_Copernica_Cartitem_Subprofile extends Co
93
  'status' => $this->status,
94
  'name' => $product->name(),
95
  'sku' => $product->sku(),
 
96
  'weight' => $quoteItem->weight(),
97
  'quantity' => $quoteItem->quantity(),
98
  'timestamp' => $quoteItem->timestamp(),
7
  /**
8
  * @var Copernica_MarketingSoftware_Model_Abstraction_Quote_Item
9
  */
10
+ protected $quoteItem = false;
11
 
12
  /**
13
  * @var string
93
  'status' => $this->status,
94
  'name' => $product->name(),
95
  'sku' => $product->sku(),
96
+ 'attribute_set' => $product->attributeSet(),
97
  'weight' => $quoteItem->weight(),
98
  'quantity' => $quoteItem->quantity(),
99
  'timestamp' => $quoteItem->timestamp(),
app/code/community/Copernica/MarketingSoftware/Model/Copernica/Order/Subprofile.php CHANGED
@@ -7,8 +7,7 @@ class Copernica_MarketingSoftware_Model_Copernica_Order_Subprofile extends Coper
7
  /**
8
  * @var Copernica_MarketingSoftware_Model_Abstraction_Order
9
  */
10
- private $order = false;
11
-
12
 
13
  /**
14
  * Return the identifier for this profile
7
  /**
8
  * @var Copernica_MarketingSoftware_Model_Abstraction_Order
9
  */
10
+ protected $order = false;
 
11
 
12
  /**
13
  * Return the identifier for this profile
app/code/community/Copernica/MarketingSoftware/Model/Copernica/Orderitem/Subprofile.php CHANGED
@@ -7,8 +7,7 @@ class Copernica_MarketingSoftware_Model_Copernica_Orderitem_Subprofile extends C
7
  /**
8
  * @var Copernica_MarketingSoftware_Model_Abstraction_Order_Item
9
  */
10
- private $orderItem = false;
11
-
12
 
13
  /**
14
  * Return the identifier for this profile
@@ -77,6 +76,7 @@ class Copernica_MarketingSoftware_Model_Copernica_Orderitem_Subprofile extends C
77
  'price' => is_object($price) ? $price->itemPrice() : null,
78
  'name' => $product->name(),
79
  'sku' => $product->sku(),
 
80
  'weight' => $orderItem->weight(),
81
  'quantity' => $orderItem->quantity(),
82
  'timestamp' => $orderItem->timestamp(),
7
  /**
8
  * @var Copernica_MarketingSoftware_Model_Abstraction_Order_Item
9
  */
10
+ protected $orderItem = false;
 
11
 
12
  /**
13
  * Return the identifier for this profile
76
  'price' => is_object($price) ? $price->itemPrice() : null,
77
  'name' => $product->name(),
78
  'sku' => $product->sku(),
79
+ 'attribute_set' => $product->attributeSet(),
80
  'weight' => $orderItem->weight(),
81
  'quantity' => $orderItem->quantity(),
82
  'timestamp' => $orderItem->timestamp(),
app/code/community/Copernica/MarketingSoftware/Model/Copernica/Profileorder.php CHANGED
@@ -46,7 +46,7 @@ class Copernica_MarketingSoftware_Model_Copernica_ProfileOrder extends Copernica
46
 
47
  // return an array with customer data
48
  return array(
49
- 'customer_id' => Mage::helper('marketingsoftware')->generateCustomerId($address->email(), $this->order->storeview()),
50
  'store_view' => (string)$this->order->storeview(),
51
  'firstname' => is_object($name) ? $name->firstname() : null,
52
  'middlename' => is_object($name) ? $name->middlename() : null,
46
 
47
  // return an array with customer data
48
  return array(
49
+ 'customer_id' => Mage::helper('marketingsoftware')->generateCustomerId($address->email(), (string)$this->order->storeview()),
50
  'store_view' => (string)$this->order->storeview(),
51
  'firstname' => is_object($name) ? $name->firstname() : null,
52
  'middlename' => is_object($name) ? $name->middlename() : null,
app/code/community/Copernica/MarketingSoftware/Model/Copernica/Profilequote.php CHANGED
@@ -46,7 +46,7 @@ class Copernica_MarketingSoftware_Model_Copernica_ProfileQuote extends Copernica
46
 
47
  // return an array with customer data
48
  return array(
49
- 'customer_id' => Mage::helper('marketingsoftware')->generateCustomerId($address->email(), $this->quote->storeview()),
50
  'store_view' => (string)$this->quote->storeview(),
51
  'firstname' => is_object($name) ? $name->firstname() : null,
52
  'middlename' => is_object($name) ? $name->middlename() : null,
46
 
47
  // return an array with customer data
48
  return array(
49
+ 'customer_id' => Mage::helper('marketingsoftware')->generateCustomerId($address->email(), (string)$this->quote->storeview()),
50
  'store_view' => (string)$this->quote->storeview(),
51
  'firstname' => is_object($name) ? $name->firstname() : null,
52
  'middlename' => is_object($name) ? $name->middlename() : null,
app/code/community/Copernica/MarketingSoftware/Model/Copernica/Profilesubscription.php CHANGED
@@ -28,7 +28,7 @@ class Copernica_MarketingSoftware_Model_Copernica_ProfileSubscription extends Co
28
  {
29
  // return an array with customer data
30
  return array(
31
- 'customer_id' => Mage::helper('marketingsoftware')->generateCustomerId($this->subscription->email(), $this->subscription->storeView()),
32
  'store_view' => (string)$this->subscription->storeView(),
33
  'email' => $this->subscription->email(),
34
  'group' => Mage::getModel('customer/group')->load(0)->getCode(),
28
  {
29
  // return an array with customer data
30
  return array(
31
+ 'customer_id' => Mage::helper('marketingsoftware')->generateCustomerId($this->subscription->email(), (string)$this->subscription->storeView()),
32
  'store_view' => (string)$this->subscription->storeView(),
33
  'email' => $this->subscription->email(),
34
  'group' => Mage::getModel('customer/group')->load(0)->getCode(),
app/code/community/Copernica/MarketingSoftware/Model/QueueEvent/StartSync.php CHANGED
@@ -59,6 +59,8 @@ class Copernica_MarketingSoftware_Model_QueueEvent_StartSync extends Copernica_M
59
  ->getCollection()
60
  ->setPageSize($pageSize)
61
  ->addAttributeToSort('updated_at')
 
 
62
  ->addAttributeToFilter('updated_at', array(
63
  'from' => $config->getCustomerProgressStatus()
64
  ));
@@ -130,6 +132,7 @@ class Copernica_MarketingSoftware_Model_QueueEvent_StartSync extends Copernica_M
130
  $orders = Mage::getModel('sales/order')
131
  ->getCollection()
132
  ->addAttributeToSort('updated_at')
 
133
  ->addAttributeToFilter('updated_at', array(
134
  'from' => $config->getOrderProgressStatus()
135
  ));
@@ -159,9 +162,9 @@ class Copernica_MarketingSoftware_Model_QueueEvent_StartSync extends Copernica_M
159
  // Was this record changed or modified after the last synchronisation
160
  if ($order->getCreatedAt() <= $progressDateTime &&
161
  $order->getUpdatedAt() <= $progressDateTime ) continue;
162
-
163
- // Does this order have a customer id? This check is needed for Magento 1.4
164
- if ($order->getCustomerId()) continue;
165
 
166
  // wrap the object
167
  $object = Mage::getModel('marketingsoftware/abstraction_order')->loadOrder($order->getEntityId());
@@ -211,7 +214,8 @@ class Copernica_MarketingSoftware_Model_QueueEvent_StartSync extends Copernica_M
211
  // get the subscriptions
212
  $subscriptions = Mage::getModel('newsletter/subscriber')
213
  ->getCollection()
214
- ->addFieldToFilter('customer_id', array(0, 'null'));
 
215
 
216
  // iterate over the subscriptions
217
  foreach ($subscriptions as $subscription)
59
  ->getCollection()
60
  ->setPageSize($pageSize)
61
  ->addAttributeToSort('updated_at')
62
+ ->addAttributeToFilter('store_id', array('notnull' => true))
63
+ ->addAttributeToFilter('website_id', array('notnull' => true))
64
  ->addAttributeToFilter('updated_at', array(
65
  'from' => $config->getCustomerProgressStatus()
66
  ));
132
  $orders = Mage::getModel('sales/order')
133
  ->getCollection()
134
  ->addAttributeToSort('updated_at')
135
+ ->addAttributeToFilter('store_id', array('notnull' => true))
136
  ->addAttributeToFilter('updated_at', array(
137
  'from' => $config->getOrderProgressStatus()
138
  ));
162
  // Was this record changed or modified after the last synchronisation
163
  if ($order->getCreatedAt() <= $progressDateTime &&
164
  $order->getUpdatedAt() <= $progressDateTime ) continue;
165
+
166
+ // Only sync guest orders
167
+ if ($order->getCustomerId()) continue;
168
 
169
  // wrap the object
170
  $object = Mage::getModel('marketingsoftware/abstraction_order')->loadOrder($order->getEntityId());
214
  // get the subscriptions
215
  $subscriptions = Mage::getModel('newsletter/subscriber')
216
  ->getCollection()
217
+ ->addFieldToFilter('customer_id', array(0, 'null'))
218
+ ->addFieldToFilter('store_id', array('notnull' => true));
219
 
220
  // iterate over the subscriptions
221
  foreach ($subscriptions as $subscription)
app/code/community/Copernica/MarketingSoftware/controllers/Adminhtml/Marketingsoftware/LinkController.php CHANGED
@@ -32,7 +32,8 @@ class Copernica_MarketingSoftware_Adminhtml_Marketingsoftware_LinkController ext
32
  $this->getLayout()->getBlock('head')->addJs('copernica/marketingsoftware/field.js');
33
  $this->getLayout()->getBlock('head')->addJs('copernica/marketingsoftware/collection.js');
34
  $this->getLayout()->getBlock('head')->addJs('copernica/marketingsoftware/database.js');
35
-
 
36
  // Render the layout
37
  $this->renderLayout();
38
  }
@@ -67,18 +68,29 @@ class Copernica_MarketingSoftware_Adminhtml_Marketingsoftware_LinkController ext
67
  // now we need to process the request
68
  switch ($data['type'])
69
  {
70
- case 'check_database': $result = $api->validateDatabase($data['database']); break;
 
 
71
  case 'repair_database':
72
- case 'create_database': $result = $api->repairDatabase($data['database']); break;
73
-
74
- case 'check_collection': $result = $api->validateCollection($data['database'], $data['collection_type'], $data['collection']); break;
 
 
 
75
  case 'create_collection':
76
- case 'repair_collection': $result = $api->repairCollection($data['database'], $data['collection_type'], $data['collection']); break;
77
-
78
- case 'check_field': $result = $api->validateField($data['field_system_name'], $data['field'], $data['database'], $data['collection'] == 'database' ? false : $data['collection'], $data['collectionName']); break;
 
 
 
79
  case 'repair_field':
80
- case 'create_field': $result = $api->repairField($data['field_system_name'], $data['field'], $data['database'], $data['collection'] == 'database' ? false : $data['collection'], $data['collectionName']); break;
81
- default: $result = "impossible";
 
 
 
82
  }
83
 
84
  // store the result
32
  $this->getLayout()->getBlock('head')->addJs('copernica/marketingsoftware/field.js');
33
  $this->getLayout()->getBlock('head')->addJs('copernica/marketingsoftware/collection.js');
34
  $this->getLayout()->getBlock('head')->addJs('copernica/marketingsoftware/database.js');
35
+ $this->getLayout()->getBlock('head')->addJs('varien/form.js');
36
+
37
  // Render the layout
38
  $this->renderLayout();
39
  }
68
  // now we need to process the request
69
  switch ($data['type'])
70
  {
71
+ case 'check_database':
72
+ $result = $api->validateDatabase($data['database']);
73
+ break;
74
  case 'repair_database':
75
+ case 'create_database':
76
+ $result = $api->repairDatabase($data['database']);
77
+ break;
78
+ case 'check_collection':
79
+ $result = $api->validateCollection($data['database'], $data['collection_type'], $data['collection']);
80
+ break;
81
  case 'create_collection':
82
+ case 'repair_collection':
83
+ $result = $api->repairCollection($data['database'], $data['collection_type'], $data['collection']);
84
+ break;
85
+ case 'check_field':
86
+ $result = $api->validateField($data['field_system_name'], $data['field'], $data['database'], $data['collection'] == 'database' ? false : $data['collection'], $data['collectionName']);
87
+ break;
88
  case 'repair_field':
89
+ case 'create_field':
90
+ $result = $api->repairField($data['field_system_name'], $data['field'], $data['database'], $data['collection'] == 'database' ? false : $data['collection'], $data['collectionName']);
91
+ break;
92
+ default:
93
+ $result = "impossible";
94
  }
95
 
96
  // store the result
app/code/community/Copernica/MarketingSoftware/controllers/ProductController.php CHANGED
@@ -91,6 +91,10 @@ class Copernica_MarketingSoftware_ProductController extends Mage_Core_Controller
91
  }
92
  elseif (!is_array($value))
93
  {
 
 
 
 
94
  $element->addChild($name, htmlspecialchars(html_entity_decode((string)$value)));
95
  continue;
96
  }
@@ -110,6 +114,8 @@ class Copernica_MarketingSoftware_ProductController extends Mage_Core_Controller
110
  // special treatment for categories and empty values
111
  if ($name == 'categories') $attribute = implode(' > ', $attribute);
112
  elseif (trim($attribute) === '') continue;
 
 
113
 
114
  // Add the child
115
  $node->addChild($key, htmlspecialchars(html_entity_decode((string)$attribute)));
91
  }
92
  elseif (!is_array($value))
93
  {
94
+ if ($name == 'price') {
95
+ $value = Mage::helper('core')->currency($value, true, false);
96
+ }
97
+
98
  $element->addChild($name, htmlspecialchars(html_entity_decode((string)$value)));
99
  continue;
100
  }
114
  // special treatment for categories and empty values
115
  if ($name == 'categories') $attribute = implode(' > ', $attribute);
116
  elseif (trim($attribute) === '') continue;
117
+
118
+
119
 
120
  // Add the child
121
  $node->addChild($key, htmlspecialchars(html_entity_decode((string)$attribute)));
app/code/community/Copernica/MarketingSoftware/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Copernica_MarketingSoftware>
5
- <version>2.0.0</version>
6
  </Copernica_MarketingSoftware>
7
  </modules>
8
  <global>
2
  <config>
3
  <modules>
4
  <Copernica_MarketingSoftware>
5
+ <version>2.0.1</version>
6
  </Copernica_MarketingSoftware>
7
  </modules>
8
  <global>
app/design/adminhtml/default/default/template/marketingsoftware/link.phtml CHANGED
@@ -38,7 +38,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
38
  </tr>
39
  <tr>
40
  <td class="value">
41
- <input type="text" class="input-text" value="<?php echo(htmlspecialchars($_config->getDatabaseName())); ?>" name="db_input" id="db_input"/>
42
  </td>
43
  <td class="value">
44
  <span style="display:none;" id="db_checking">Checking database....</span>
@@ -102,7 +102,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
102
  </select>
103
  </td>
104
  <td class="value">
105
- <input type="text" class="input-text " value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
106
  </td>
107
  <td class="value">
108
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
@@ -136,7 +136,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
136
  </tr>
137
  <tr>
138
  <td class="value">
139
- <input type="text" class="input-text " title="Cart Products Collection" value="<?php echo(htmlspecialchars($_config->getCartItemsCollectionName())); ?>" name="cartproducts_input" id="cartproducts_input">
140
  </td>
141
  <td class="value">
142
  <span style="display:none;" id="cartproducts_checking">Checking collection....</span>
@@ -192,7 +192,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
192
  </select>
193
  </td>
194
  <td class="value">
195
- <input type="text" class="input-text " value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
196
  </td>
197
  <td class="value">
198
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
@@ -226,7 +226,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
226
  </tr>
227
  <tr>
228
  <td class="value">
229
- <input type="text" class="input-text " title="Completed Orders Collection" value="<?php echo(htmlspecialchars($_config->getOrdersCollectionName())); ?>" name="orders_input" id="orders_input">
230
  </td>
231
  <td class="value">
232
  <span style="display:none;" id="orders_checking">Checking collection....</span>
@@ -282,7 +282,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
282
  </select>
283
  </td>
284
  <td class="value">
285
- <input type="text" class="input-text " value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
286
  </td>
287
  <td class="value">
288
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
@@ -316,7 +316,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
316
  </tr>
317
  <tr>
318
  <td class="value">
319
- <input type="text" class="input-text " title="Cart Products Collection" value="<?php echo(htmlspecialchars($_config->getOrderItemsCollectionName()))?>" name="orderproducts_input" id="orderproducts_input">
320
  </td>
321
  <td class="value">
322
  <span style="display:none;" id="orderproducts_checking">Checking collection....</span>
@@ -372,7 +372,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
372
  </select>
373
  </td>
374
  <td class="value">
375
- <input type="text" class="input-text " value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
376
  </td>
377
  <td class="value">
378
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
@@ -406,7 +406,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
406
  </tr>
407
  <tr>
408
  <td class="value">
409
- <input type="text" class="input-text " title="Completed Orders Collection" value="<?php echo(htmlspecialchars($_config->getAddressesCollectionName()))?>" name="addresses_input" id="addresses_input">
410
  </td>
411
  <td class="value">
412
  <span style="display:none;" id="addresses_checking">Checking collection....</span>
@@ -463,7 +463,7 @@ $_config = Mage::helper('marketingsoftware/config') ?>
463
  </select>
464
  </td>
465
  <td class="value">
466
- <input type="text" class="input-text " value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
467
  </td>
468
  <td class="value">
469
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
@@ -659,8 +659,17 @@ function doAjaxCall(data, callback)
659
  }
660
 
661
  //<![CDATA[
662
- var customForm = new varienForm('cp_form', true);
663
- cpForm = new varienForm('cp_form', '');
664
- cpProfileCollectionForm = new varienForm('cp_profile_collection', '');
 
 
 
 
 
 
 
 
 
665
  //]]>
666
  </script>
38
  </tr>
39
  <tr>
40
  <td class="value">
41
+ <input type="text" class="input-text validate-code" value="<?php echo(htmlspecialchars($_config->getDatabaseName())); ?>" name="db_input" id="db_input"/>
42
  </td>
43
  <td class="value">
44
  <span style="display:none;" id="db_checking">Checking database....</span>
102
  </select>
103
  </td>
104
  <td class="value">
105
+ <input type="text" class="input-text validate-code" value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
106
  </td>
107
  <td class="value">
108
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
136
  </tr>
137
  <tr>
138
  <td class="value">
139
+ <input type="text" class="input-text validate-code" title="Cart Products Collection" value="<?php echo(htmlspecialchars($_config->getCartItemsCollectionName())); ?>" name="cartproducts_input" id="cartproducts_input">
140
  </td>
141
  <td class="value">
142
  <span style="display:none;" id="cartproducts_checking">Checking collection....</span>
192
  </select>
193
  </td>
194
  <td class="value">
195
+ <input type="text" class="input-text validate-code" value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
196
  </td>
197
  <td class="value">
198
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
226
  </tr>
227
  <tr>
228
  <td class="value">
229
+ <input type="text" class="input-text validate-code" title="Completed Orders Collection" value="<?php echo(htmlspecialchars($_config->getOrdersCollectionName())); ?>" name="orders_input" id="orders_input">
230
  </td>
231
  <td class="value">
232
  <span style="display:none;" id="orders_checking">Checking collection....</span>
282
  </select>
283
  </td>
284
  <td class="value">
285
+ <input type="text" class="input-text validate-code" value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
286
  </td>
287
  <td class="value">
288
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
316
  </tr>
317
  <tr>
318
  <td class="value">
319
+ <input type="text" class="input-text validate-code" title="Cart Products Collection" value="<?php echo(htmlspecialchars($_config->getOrderItemsCollectionName()))?>" name="orderproducts_input" id="orderproducts_input">
320
  </td>
321
  <td class="value">
322
  <span style="display:none;" id="orderproducts_checking">Checking collection....</span>
372
  </select>
373
  </td>
374
  <td class="value">
375
+ <input type="text" class="input-text validate-code" value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
376
  </td>
377
  <td class="value">
378
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
406
  </tr>
407
  <tr>
408
  <td class="value">
409
+ <input type="text" class="input-text validate-code" title="Completed Orders Collection" value="<?php echo(htmlspecialchars($_config->getAddressesCollectionName()))?>" name="addresses_input" id="addresses_input">
410
  </td>
411
  <td class="value">
412
  <span style="display:none;" id="addresses_checking">Checking collection....</span>
463
  </select>
464
  </td>
465
  <td class="value">
466
+ <input type="text" class="input-text validate-code" value="<?php echo htmlspecialchars($copernicaField); ?>" name="<?php echo htmlspecialchars($textfield_name); ?>" id="<?php echo htmlspecialchars($textfield_name); ?>" <?php if ($copernicaField == '') echo "style='display: none;'"; ?>>
467
  </td>
468
  <td class="value">
469
  <span style="display:none;" id="checking_<?php echo $magentoField; ?>">Checking field....</span>
659
  }
660
 
661
  //<![CDATA[
662
+ var customForm = new VarienForm('cp_form', true);
663
+ cpForm = new VarienForm('cp_form', '');
664
+ cpProfileCollectionForm = new VarienForm('cp_profile_collection', '');
665
+
666
+ document.observe('dom:loaded', function() {
667
+
668
+ $$('.input-text').forEach(function(e) {
669
+ Event.observe(e, 'change', function() {
670
+ cpProfileCollectionForm.validator.validate();
671
+ });
672
+ });
673
+ });
674
  //]]>
675
  </script>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Copernica_MarketingSoftware</name>
4
- <version>2.0.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
7
  <channel>community</channel>
@@ -9,16 +9,14 @@
9
  <summary>Plugin to exchange data from Magento with Copernica Marketing Software.</summary>
10
  <description>When you install the integration, all contact, order and shop cart data from Magento will be automatically synchronized and stored in Copernica. By synchronizing data between your Magento webshop and Copernica, you are able to set up targeted email campaigns. For example you can consider emailing customers with abandoned shopcarts automatically every week. Your contacts will only receive information relevant to them, which will make them come back to your shop time and again. The available integration is also compatible with the Magento Enterprise edition.</description>
11
  <notes>Improvements:&#xD;
12
- - Changed the way profiles are synchronised. A unique key is generated by combining the e-mail address and storeview in order to sync to Copernica. This way it is no longer possible to have the same e-mail address multiple times in Copernica.&#xD;
13
- - Added the gender to be able to sync from Magento to Copernica.&#xD;
14
- - Performance improvement, removed unnecessary SOAP call.&#xD;
15
- &#xD;
16
- IMPORTANT: In order for this version to work, a complete new synchronisation from Magento to Copernica is necessary for the full database. &#xD;
17
- </notes>
18
  <authors><author><name>Cream</name><user>creaminternet</user><email>info@cream.nl</email></author></authors>
19
- <date>2012-04-19</date>
20
- <time>08:22:30</time>
21
- <contents><target name="magecommunity"><dir name="Copernica"><dir name="MarketingSoftware"><dir name="Block"><dir name="Adminhtml"><dir name="Marketingsoftware"><file name="Export.php" hash="a0c98a7b89f2757a7b27c599d8a2f8f8"/><file name="Link.php" hash="15e331131759fedf98c2e461ee97385f"/><file name="Settings.php" hash="f880b7232fdf18d1605885242e9632e8"/></dir></dir></dir><dir name="Helper"><file name="Api.php" hash="e69c0b82075c4204ea80a275675a4f56"/><file name="Config.php" hash="331efdf28b14cce05165e2fcac34cf31"/><file name="Data.php" hash="8e2d12fa6154cce91fb91fafe0fab24d"/></dir><dir name="Model"><dir name="Abstraction"><file name="Address.php" hash="75eacde3e77b6b76c85d32ba865a9192"/><file name="Attributes.php" hash="0e5699302fc6575733824acbfee0b445"/><file name="Customer.php" hash="2d70ad79018adcf75ecfefc652a4ccbe"/><file name="Name.php" hash="519508275dcac2990532828bd8dbf0ee"/><dir name="Order"><dir name="Item"><file name="Options.php" hash="1c9d5d7c23a5a9f12ff3d777a01fa7d5"/></dir><file name="Item.php" hash="a119a36c52123a78f330ea532d7798d1"/></dir><file name="Order.php" hash="babfe3d247989ac179a83442b4af4100"/><file name="Price.php" hash="bf133886520769200060cf360e0941d6"/><file name="Product.php" hash="461ed687dd25af1b67c358294ad73358"/><dir name="Quote"><dir name="Item"><file name="Options.php" hash="7b7f3e826527fa29ceef8df0ad61c3d3"/></dir><file name="Item.php" hash="a8705d21b21229b521ecdd66f24b9570"/></dir><file name="Quote.php" hash="8e227f1bdcb0608ae5f86f0d6907a8ca"/><file name="Storeview.php" hash="5ae134522abe867554cda35d8acf7457"/><file name="Subscription.php" hash="f4a0bd6bb094b71d6b12b3404f22ea8f"/><file name="readme.txt" hash="d450b7fa3d88b6a5c2b5efa526d17077"/></dir><file name="AsyncPomSoapClient.php" hash="77cc23e1a61cfcc1ee36a33d6e7d6d3e"/><dir name="Copernica"><file name="Abstract.php" hash="b2d065859580ca9c55ac7e8c392db61e"/><dir name="Address"><file name="Subprofile.php" hash="b963f768c25d4790c47deb013de2c44a"/></dir><dir name="Cartitem"><file name="Subprofile.php" hash="5bbb3bee33d774b11ad0f8d794330eec"/></dir><dir name="Order"><file name="Subprofile.php" hash="dc90bdf195538b67276961194ecc6da5"/></dir><dir name="Orderitem"><file name="Subprofile.php" hash="7dc3904bb45c3b0d33e714b7ee101338"/></dir><file name="Profile.php" hash="52f14d70ceaac0066ca35bc3791c906c"/><file name="Profilecustomer.php" hash="74d50c861f23387092c71e364653504b"/><file name="Profileorder.php" hash="9bd86b9ddf197f0fb6082247cc7aa87f"/><file name="Profilequote.php" hash="289f23abfa2233be6ebc7f07b7f85f02"/><file name="Profilesubscription.php" hash="beea58e993a764f1399863b178c4ecd6"/></dir><file name="Error.php" hash="0660881720c0210c65e25cb14b1011fe"/><file name="Marketingsoftware.php" hash="bd7290f645a46b98da8bf15072bffef5"/><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="64b29b94d61a809a14ff0036888f3596"/></dir><file name="Queue.php" hash="db3f8b50caf3697a61bc1f587259e1ef"/></dir><file name="Observer.php" hash="0dd703b10d7febc5aecce7af7bd51b6d"/><file name="PomSoapClient.php" hash="2dc657ed44acd003df8aef41986aeb88"/><file name="Queue.php" hash="5cad0c42996f2673924e33b5f047fe46"/><dir name="QueueEvent"><file name="Abstract.php" hash="897bb46d1437599b832f9d304eda6832"/><file name="CustomerAdd.php" hash="daef30d8daeb0819d605323f02cad779"/><file name="CustomerFull.php" hash="f66aaa9afa75c6658958b9ecf7b55cd7"/><file name="CustomerModify.php" hash="a9bd99258679e6ccfdc6011139e90fcc"/><file name="CustomerRemove.php" hash="a061c5646f9c776a38063325f0a39e1b"/><file name="OrderAdd.php" hash="d0b1edb9ed91def6840f29a5b2777901"/><file name="OrderModify.php" hash="a1cb1cdffbf8b8c1a5b4ddbbc5ae0a0b"/><file name="QuoteItem.php" hash="a064df99bbf8d8d3002b03335f5e844b"/><file name="QuoteItemAdd.php" hash="499c4c4d5e34d124918c12bffb72e28b"/><file name="QuoteItemModify.php" hash="f60c728a3b5d3c11451fd6332ecea912"/><file name="QuoteItemRemove.php" hash="a7e4fb9e227ddb538420d0c2b485bb36"/><file name="QuoteModify.php" hash="66bd14c78630895f14c4b48532b2d3a9"/><file name="StartSync.php" hash="d6a06c8a74a8e810bc3fc9640657912e"/><file name="SubscriptionAdd.php" hash="445455dd4fda2867b1ce9d67d7133aaa"/><file name="SubscriptionModify.php" hash="be0e469349469545ef9762b2a463a555"/><file name="SubscriptionRemove.php" hash="f3051c5f35e8a6c4bd727d895cad479f"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Marketingsoftware"><file name="ExportController.php" hash="f22c80e7650e3a2d47f43d9ffab783e9"/><file name="LinkController.php" hash="686554d1960024bb01c2db027ea62b9b"/><file name="SettingsController.php" hash="b62fa5f9c2d37152449530fb6a9a5988"/></dir></dir><file name="ProductController.php" hash="02bcb287f671266a131ddc57c5171754"/><file name="UnsubscribeController.php" hash="691be73c944b1e4fb641803a4271c7a2"/></dir><dir name="etc"><file name="adminhtml.xml" hash="70433e755407e049a938075763e01e6d"/><file name="config.xml" hash="cb01f13bbe096b8b1ce8292110322642"/></dir><dir name="sql"><dir name="marketingsoftware_setup"><file name="mysql4-install-1.2.0.php" hash="624d62aad61c642dba4a9488a0b9508f"/><file name="mysql4-upgrade-1.1.5-1.1.6.php" hash="135144b872076048040f4bdae123a08f"/><file name="mysql4-upgrade-1.1.6-1.1.7.php" hash="e587cbbd9c0ddb77248abafef55df46e"/><file name="mysql4-upgrade-1.1.7-1.1.8.php" hash="e255e732e015f852796bde55bde07dd9"/><file name="mysql4-upgrade-1.1.8-1.2.0.php" hash="54fd03029d3a39b556d62ed95ed423f3"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Copernica_MarketingSoftware.xml" hash="04c9e69139dbff42d829bad22fa2ab85"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="marketingsoftware"><file name="export.phtml" hash="4a3783aac318f5683060bc9119893989"/><file name="link.phtml" hash="a0906a990d5a50fde0f523ef99a39f3f"/><file name="settings.phtml" hash="7497c7d74e93797f455d5b47a846bf82"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="copernica"><dir name="marketingsoftware"><file name="collection.js" hash="260f06a4e891df402e145bec4d15bc51"/><file name="database.js" hash="4e51925d1fedd36a203c625050fb9b07"/><file name="field.js" hash="c4f98de6a9c210c626db36730485b853"/></dir></dir></dir></target></contents>
22
  <compatible/>
23
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>soap</name><min></min><max></max></extension></required></dependencies>
24
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Copernica_MarketingSoftware</name>
4
+ <version>2.0.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
7
  <channel>community</channel>
9
  <summary>Plugin to exchange data from Magento with Copernica Marketing Software.</summary>
10
  <description>When you install the integration, all contact, order and shop cart data from Magento will be automatically synchronized and stored in Copernica. By synchronizing data between your Magento webshop and Copernica, you are able to set up targeted email campaigns. For example you can consider emailing customers with abandoned shopcarts automatically every week. Your contacts will only receive information relevant to them, which will make them come back to your shop time and again. The available integration is also compatible with the Magento Enterprise edition.</description>
11
  <notes>Improvements:&#xD;
12
+ - Added the attribute set name to sync.&#xD;
13
+ - Added field validation linking fields to Copernica.&#xD;
14
+ - Changed download link to Magento Connect.&#xD;
15
+ - Only sync guest orders by initial sync, other orders are synced via the customer. </notes>
 
 
16
  <authors><author><name>Cream</name><user>creaminternet</user><email>info@cream.nl</email></author></authors>
17
+ <date>2012-09-11</date>
18
+ <time>21:56:07</time>
19
+ <contents><target name="magecommunity"><dir name="Copernica"><dir name="MarketingSoftware"><dir name="Block"><dir name="Adminhtml"><dir name="Marketingsoftware"><file name="Export.php" hash="a0c98a7b89f2757a7b27c599d8a2f8f8"/><file name="Link.php" hash="15e331131759fedf98c2e461ee97385f"/><file name="Settings.php" hash="f880b7232fdf18d1605885242e9632e8"/></dir></dir></dir><dir name="Helper"><file name="Api.php" hash="e69c0b82075c4204ea80a275675a4f56"/><file name="Config.php" hash="189b1d3b95c8ecaa01f0ce10a12c7cce"/><file name="Data.php" hash="48343bcddb1798c62533f3dd8b64d8a2"/></dir><dir name="Model"><dir name="Abstraction"><file name="Address.php" hash="75eacde3e77b6b76c85d32ba865a9192"/><file name="Attributes.php" hash="0e5699302fc6575733824acbfee0b445"/><file name="Customer.php" hash="a64f4ece16196385f1972643ba99f712"/><file name="Name.php" hash="519508275dcac2990532828bd8dbf0ee"/><dir name="Order"><dir name="Item"><file name="Options.php" hash="1c9d5d7c23a5a9f12ff3d777a01fa7d5"/></dir><file name="Item.php" hash="a119a36c52123a78f330ea532d7798d1"/></dir><file name="Order.php" hash="babfe3d247989ac179a83442b4af4100"/><file name="Price.php" hash="bf133886520769200060cf360e0941d6"/><file name="Product.php" hash="fd7601e3cec64b9b0475a875f2881239"/><dir name="Quote"><dir name="Item"><file name="Options.php" hash="7b7f3e826527fa29ceef8df0ad61c3d3"/></dir><file name="Item.php" hash="a8705d21b21229b521ecdd66f24b9570"/></dir><file name="Quote.php" hash="8e227f1bdcb0608ae5f86f0d6907a8ca"/><file name="Storeview.php" hash="b4bb284d5486ca14a877a3518dc68074"/><file name="Subscription.php" hash="f4a0bd6bb094b71d6b12b3404f22ea8f"/><file name="readme.txt" hash="d450b7fa3d88b6a5c2b5efa526d17077"/></dir><file name="AsyncPomSoapClient.php" hash="77cc23e1a61cfcc1ee36a33d6e7d6d3e"/><dir name="Copernica"><file name="Abstract.php" hash="b2d065859580ca9c55ac7e8c392db61e"/><dir name="Address"><file name="Subprofile.php" hash="b963f768c25d4790c47deb013de2c44a"/></dir><dir name="Cartitem"><file name="Subprofile.php" hash="6f3907f41c6e86158eb4495f61065f5e"/></dir><dir name="Order"><file name="Subprofile.php" hash="16b086ee846c9252fc27050684c5c336"/></dir><dir name="Orderitem"><file name="Subprofile.php" hash="88bcf93c7c0ed2e37f97a42dfe0a643e"/></dir><file name="Profile.php" hash="52f14d70ceaac0066ca35bc3791c906c"/><file name="Profilecustomer.php" hash="74d50c861f23387092c71e364653504b"/><file name="Profileorder.php" hash="64883534c013d7e9fc708e30870712df"/><file name="Profilequote.php" hash="95bbfb780af312389d0843d4623eb105"/><file name="Profilesubscription.php" hash="aecff6c7790a70dc63df54d42749eda8"/></dir><file name="Error.php" hash="0660881720c0210c65e25cb14b1011fe"/><file name="Marketingsoftware.php" hash="bd7290f645a46b98da8bf15072bffef5"/><dir name="Mysql4"><dir name="Queue"><file name="Collection.php" hash="64b29b94d61a809a14ff0036888f3596"/></dir><file name="Queue.php" hash="db3f8b50caf3697a61bc1f587259e1ef"/></dir><file name="Observer.php" hash="0dd703b10d7febc5aecce7af7bd51b6d"/><file name="PomSoapClient.php" hash="2dc657ed44acd003df8aef41986aeb88"/><file name="Queue.php" hash="5cad0c42996f2673924e33b5f047fe46"/><dir name="QueueEvent"><file name="Abstract.php" hash="897bb46d1437599b832f9d304eda6832"/><file name="CustomerAdd.php" hash="daef30d8daeb0819d605323f02cad779"/><file name="CustomerFull.php" hash="f66aaa9afa75c6658958b9ecf7b55cd7"/><file name="CustomerModify.php" hash="a9bd99258679e6ccfdc6011139e90fcc"/><file name="CustomerRemove.php" hash="a061c5646f9c776a38063325f0a39e1b"/><file name="OrderAdd.php" hash="d0b1edb9ed91def6840f29a5b2777901"/><file name="OrderModify.php" hash="a1cb1cdffbf8b8c1a5b4ddbbc5ae0a0b"/><file name="QuoteItem.php" hash="a064df99bbf8d8d3002b03335f5e844b"/><file name="QuoteItemAdd.php" hash="499c4c4d5e34d124918c12bffb72e28b"/><file name="QuoteItemModify.php" hash="f60c728a3b5d3c11451fd6332ecea912"/><file name="QuoteItemRemove.php" hash="a7e4fb9e227ddb538420d0c2b485bb36"/><file name="QuoteModify.php" hash="66bd14c78630895f14c4b48532b2d3a9"/><file name="StartSync.php" hash="b9835655e8dd783079ea21672f00091f"/><file name="SubscriptionAdd.php" hash="445455dd4fda2867b1ce9d67d7133aaa"/><file name="SubscriptionModify.php" hash="be0e469349469545ef9762b2a463a555"/><file name="SubscriptionRemove.php" hash="f3051c5f35e8a6c4bd727d895cad479f"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Marketingsoftware"><file name="ExportController.php" hash="f22c80e7650e3a2d47f43d9ffab783e9"/><file name="LinkController.php" hash="7919feb55a96745df1b50faff83fc7d1"/><file name="SettingsController.php" hash="b62fa5f9c2d37152449530fb6a9a5988"/></dir></dir><file name="ProductController.php" hash="dff5479428f4d817c04ff12190a5878c"/><file name="UnsubscribeController.php" hash="691be73c944b1e4fb641803a4271c7a2"/></dir><dir name="etc"><file name="adminhtml.xml" hash="70433e755407e049a938075763e01e6d"/><file name="config.xml" hash="fee08503afdfe465e459219a70d93df5"/></dir><dir name="sql"><dir name="marketingsoftware_setup"><file name="mysql4-install-1.2.0.php" hash="624d62aad61c642dba4a9488a0b9508f"/><file name="mysql4-upgrade-1.1.5-1.1.6.php" hash="135144b872076048040f4bdae123a08f"/><file name="mysql4-upgrade-1.1.6-1.1.7.php" hash="e587cbbd9c0ddb77248abafef55df46e"/><file name="mysql4-upgrade-1.1.7-1.1.8.php" hash="e255e732e015f852796bde55bde07dd9"/><file name="mysql4-upgrade-1.1.8-1.2.0.php" hash="54fd03029d3a39b556d62ed95ed423f3"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Copernica_MarketingSoftware.xml" hash="04c9e69139dbff42d829bad22fa2ab85"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="marketingsoftware"><file name="export.phtml" hash="4a3783aac318f5683060bc9119893989"/><file name="link.phtml" hash="390b6e5a5e0b2ac35b886eaa9f4e437e"/><file name="settings.phtml" hash="7497c7d74e93797f455d5b47a846bf82"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="copernica"><dir name="marketingsoftware"><file name="collection.js" hash="260f06a4e891df402e145bec4d15bc51"/><file name="database.js" hash="4e51925d1fedd36a203c625050fb9b07"/><file name="field.js" hash="c4f98de6a9c210c626db36730485b853"/></dir></dir></dir></target></contents>
20
  <compatible/>
21
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>soap</name><min></min><max></max></extension></required></dependencies>
22
  </package>