Quarticon_Quartic - Version 1.0.8

Version Notes

The extension integrates your store with Quartic platform.

Download this release

Release Info

Developer QuarticON
Extension Quarticon_Quartic
Version 1.0.8
Comparing to
See all releases


Code changes from version 1.0.6 to 1.0.8

app/code/community/Quarticon/Quartic/Block/Adminhtml/Maps/Grid.php CHANGED
@@ -19,6 +19,7 @@ class Quarticon_Quartic_Block_Adminhtml_Maps_Grid extends Mage_Adminhtml_Block_W
19
  protected function _prepareCollection()
20
  {
21
  $collection = Mage::getModel('quartic/maps')->getCollection();
 
22
  $this->setCollection($collection);
23
  return parent::_prepareCollection();
24
  }
19
  protected function _prepareCollection()
20
  {
21
  $collection = Mage::getModel('quartic/maps')->getCollection();
22
+ $collection->addFieldToFilter('quartic_attribute',array('nlike' => '%price')); //hide price mapping
23
  $this->setCollection($collection);
24
  return parent::_prepareCollection();
25
  }
app/code/community/Quarticon/Quartic/Block/Adminhtml/System/Config/Form/Field/Placement.php CHANGED
@@ -8,8 +8,19 @@ class Quarticon_Quartic_Block_Adminhtml_System_Config_Form_Field_Placement exten
8
 
9
  protected function quarticStatus()
10
  {
11
- $status_api = (bool) Mage::getStoreConfig("quartic/config/status", Mage::app()->getStore());
12
- $status_placements = (bool) Mage::getStoreConfig("quartic/config/modified_placements", Mage::app()->getStore());
 
 
 
 
 
 
 
 
 
 
 
13
  return $status_api && $status_placements;
14
  }
15
  }
8
 
9
  protected function quarticStatus()
10
  {
11
+ // TODO: przenieść pobieranie storeId do helpera
12
+ $params = Mage::app()->getRequest()->getParams();
13
+ if(isset($params['store'])) {
14
+ $storeId = (is_numeric($params['store'])) ? (int)$params['store'] : Mage::getModel('core/store')->load($params['store'], 'code')->getId();
15
+ } elseif(isset($params['website'])) {
16
+ $website = (is_numeric($params['website'])) ? Mage::getModel('core/website')->load($params['website']) : Mage::getModel('core/website')->load($params['website'], 'code');
17
+ $storeId = $website->getDefaultGroup()->getDefaultStoreId();
18
+ } else {
19
+ $storeId = Mage::app()->getStore()->getId();
20
+ }
21
+
22
+ $status_api = (bool) Mage::getStoreConfig("quartic/config/status", $storeId);
23
+ $status_placements = (bool) Mage::getStoreConfig("quartic/config/modified_placements", $storeId);
24
  return $status_api && $status_placements;
25
  }
26
  }
app/code/community/Quarticon/Quartic/Block/Adminhtml/System/Config/Form/Field/Text.php CHANGED
@@ -19,6 +19,17 @@ class Quarticon_Quartic_Block_Adminhtml_System_Config_Form_Field_Text extends Ma
19
 
20
  protected function quarticStatus()
21
  {
22
- return (bool) Mage::getStoreConfig("quartic/config/status", Mage::app()->getStore());
 
 
 
 
 
 
 
 
 
 
 
23
  }
24
  }
19
 
20
  protected function quarticStatus()
21
  {
22
+ // TODO: przenieść pobieranie storeId do helpera
23
+ $params = Mage::app()->getRequest()->getParams();
24
+ if(isset($params['store'])) {
25
+ $storeId = (is_numeric($params['store'])) ? (int)$params['store'] : Mage::getModel('core/store')->load($params['store'], 'code')->getId();
26
+ } elseif(isset($params['website'])) {
27
+ $website = (is_numeric($params['website'])) ? Mage::getModel('core/website')->load($params['website']) : Mage::getModel('core/website')->load($params['website'], 'code');
28
+ $storeId = $website->getDefaultGroup()->getDefaultStoreId();
29
+ } else {
30
+ $storeId = Mage::app()->getStore()->getId();
31
+ }
32
+
33
+ return (bool) Mage::getStoreConfig("quartic/config/status", $storeId);
34
  }
35
  }
app/code/community/Quarticon/Quartic/Block/Getter/Order.php CHANGED
@@ -31,11 +31,9 @@ class Quarticon_Quartic_Block_Getter_Order extends Quarticon_Quartic_Block_Scrip
31
  {
32
  $items = $this->getOrder()->getAllItems();
33
  $products = array();
34
- $qHelper = Mage::helper('quartic');
35
  foreach ($items as $item) {
36
  if (!$item->getParentItemId()) {
37
  $product = Mage::helper('quartic')->getProduct($item);
38
- $product = $qHelper->getParentProductId($product);
39
  $products[] = array(
40
  'product' => $product,
41
  'price' => $item->getPriceInclTax(),
31
  {
32
  $items = $this->getOrder()->getAllItems();
33
  $products = array();
 
34
  foreach ($items as $item) {
35
  if (!$item->getParentItemId()) {
36
  $product = Mage::helper('quartic')->getProduct($item);
 
37
  $products[] = array(
38
  'product' => $product,
39
  'price' => $item->getPriceInclTax(),
app/code/community/Quarticon/Quartic/Helper/Data.php CHANGED
@@ -66,21 +66,4 @@ class Quarticon_Quartic_Helper_Data extends Mage_Core_Helper_Abstract
66
  return $item->getSku();
67
  }
68
  }
69
-
70
- public function getParentProductId($productId) {
71
-
72
- $parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($productId);
73
- if (!isset($parentIds[0])) {
74
- $parentIds = Mage::getSingleton('catalog/product_type_grouped')->getParentIdsByChild($productId);
75
- }
76
- foreach($parentIds as $parentId) {
77
- $parent_product = Mage::getModel('catalog/product')->load($parentId);
78
- if($parent_product && $parent_product->getId() && $parent_product->getStatus() == 1) {
79
- $productId = $parent_product->getId();
80
- break;
81
- }
82
- }
83
-
84
- return $productId;
85
- }
86
  }
66
  return $item->getSku();
67
  }
68
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  }
app/code/community/Quarticon/Quartic/Model/Client/Api.php CHANGED
@@ -106,15 +106,19 @@ class Quarticon_Quartic_Model_Client_Api extends Quarticon_Quartic_Model_Client_
106
  * @throws \Exception
107
  */
108
  public function requestToken($storeId = false)
109
- {
110
- if($storeId === false) {
111
- $storeCode = Mage::app()->getRequest()->getParam('store');
112
- if($storeCode) {
113
- $storeId = Mage::getModel('core/store')->load($storeCode, 'code')->getId();
114
- } else {
115
- $storeId = 0;
116
- }
 
 
117
  }
 
 
118
 
119
  $symbol = Mage::getStoreConfig("quartic/config/customer", $storeId);
120
  $key = Mage::getStoreConfig("quartic/config/api_key", $storeId);
106
  * @throws \Exception
107
  */
108
  public function requestToken($storeId = false)
109
+ {
110
+ // TODO: przenieść pobieranie storeId do helpera
111
+ $params = Mage::app()->getRequest()->getParams();
112
+ if(isset($params['store'])) {
113
+ $storeId = (is_numeric($params['store'])) ? (int)$params['store'] : Mage::getModel('core/store')->load($params['store'], 'code')->getId();
114
+ } elseif(isset($params['website'])) {
115
+ $website = (is_numeric($params['website'])) ? Mage::getModel('core/website')->load($params['website']) : Mage::getModel('core/website')->load($params['website'], 'code');
116
+ $storeId = $website->getDefaultGroup()->getDefaultStoreId();
117
+ } else {
118
+ $storeId = Mage::app()->getStore()->getId();
119
  }
120
+ if($storeId == 0) $storeId = Mage::app()->getDefaultStoreView()->getStoreId();
121
+
122
 
123
  $symbol = Mage::getStoreConfig("quartic/config/customer", $storeId);
124
  $key = Mage::getStoreConfig("quartic/config/api_key", $storeId);
app/code/community/Quarticon/Quartic/Model/Cron.php CHANGED
@@ -6,120 +6,129 @@ class Quarticon_Quartic_Model_Cron {
6
  {
7
  $log = false;
8
  if($log) Mage::log('Start',null,'quartic_cron.log',true);
9
-
10
  $stores = $this->getStoresFeedEnabled();
11
  foreach($stores as $storeId) {
12
- if($log) Mage::log('$storeId: ' . $storeId,null,'quartic_cron.log',true);
13
- $filename = 'xmlOutput_' . $storeId . '.xml';
14
- $filepath = Mage::getBaseDir('var') . "/quartic/" . $filename;
15
-
16
- ob_start();
17
-
18
- $writer = new Quarticon_Quartic_Model_Adapter_Writer();
19
- $writer->openUri('php://output');
20
- $writer->startDocument('1.0', 'UTF-8');
21
- $writer->setIndent(true);
22
- $mem_writer = new Quarticon_Quartic_Model_Adapter_Writer();
23
- $mem_writer->openMemory();
24
- $mem_writer->setIndent(true);
25
- $writer->startElement('products');
26
- $writer->writeAttribute('xmlns', "http://alpha.quarticon.com/docs/catalog/1.0/schema");
27
- $writer->writeAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance");
28
- $writer->writeAttribute('xsi:schemaLocation', "http://quartic.pl/catalog/1.0/schema http://alpha.quarticon.com/docs/catalog/1.0/schema/quartic_catalog_1.0.xsd");
29
-
30
- $time = microtime(true);
31
- $products = array();
32
-
33
- $data = array();
34
- // for proper products data in collection set current store by param
35
- Mage::app()->setCurrentStore($storeId);
36
- /**
37
- * @var Quarticon_Quartic_Model_Product $_product
38
- */
39
- $_product = Mage::getModel('quartic/product');
40
- $count = $_product->getCollectionCount();
41
- if($log) Mage::log('$count: ' . $count,null,'quartic_cron.log',true);
42
-
43
- $steps = ceil($count / $_product->getIterationStep($storeId));
44
- if($log) Mage::log('$steps: ' . $steps,null,'quartic_cron.log',true);
45
- for ($step = 1; $step <= $steps; $step++) {
46
- if($log) Mage::log('$step1: ' . $step,null,'quartic_cron.log',true);
47
- $products[$step] = $_product->getAll($step, $_product->getIterationStep($storeId));
48
- }
49
- $data['steps'] = $steps;
50
- $data['products'] = $products;
51
- $data['time'] = $time;
52
-
53
- $cache = $data;
54
-
55
-
56
- $steps = $cache['steps'];
57
- $products = $cache['products'];
58
- for ($step = 1; $step <= $steps; $step++) {
59
- if($log) Mage::log('$step2: ' . $step,null,'quartic_cron.log',true);
60
- $collection = $products[$step];
61
- foreach ($collection as &$p) {
62
- if($log) Mage::log('$productId: ' . $p['id'],null,'quartic_cron.log',true);
63
- $mem_writer->startElement('product');
64
- $mem_writer->writeElement('id', $p['id']);
65
- $mem_writer->startElement('title');
66
- $mem_writer->writeCData($p['title']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  $mem_writer->endElement();
68
- $mem_writer->startElement('link');
69
- $mem_writer->writeCData($p['link']);
 
 
 
 
 
 
70
  $mem_writer->endElement();
71
- if (isset($p['thumb'])) {
72
- $mem_writer->startElement('thumb');
73
- $mem_writer->writeCData($p['thumb']);
74
- $mem_writer->endElement();
75
- }
76
- $mem_writer->writeElement('price', $p['price']);
77
- if (isset($p['old_price'])) {
78
- $mem_writer->writeElement('old_price', $p['old_price']);
79
- }
80
- if (isset($p['author'])) {
81
- $mem_writer->startElement('author');
82
- $mem_writer->writeCData($p['author']);
83
- $mem_writer->endElement();
84
- }
85
- $mem_writer->writeElement('status', !empty($p['status']) ? '1' : '0');
86
- $i = 0;
87
- foreach ($p['categories'] as $categoryId => $categoryName) {
88
- $i++;
89
- $mem_writer->startElement('category_' . $i);
90
- $mem_writer->writeAttribute('id', $categoryId);
91
- $mem_writer->writeRaw($categoryName);
92
- $mem_writer->endElement();
93
- }
94
 
95
- $i = 1;
96
- while ($i <= 5) {
97
- if (isset($p['custom' . $i])) {
98
- $mem_writer->writeElement('custom' . $i, $p['custom' . $i]);
99
- }
100
- $i++;
101
  }
102
-
103
- $mem_writer->endElement();
104
- unset($p);
105
  }
106
 
107
- $batch_xml_string = $mem_writer->outputMemory(true);
108
- $writer->writeRaw($batch_xml_string);
109
- unset($collection);
110
  }
111
 
112
- unset($mem_writer);
113
- $writer->endElement();
114
- $writer->endDocument();
115
-
116
-
117
- $xmlContent = ob_get_contents();
118
- ob_end_clean();
119
- if($log) Mage::log('przed zapisem',null,'quartic_cron.log',true);
120
- file_put_contents($filepath,$xmlContent);
121
- if($log) Mage::log('po zapisie',null,'quartic_cron.log',true);
122
  }
 
 
 
 
 
 
 
 
 
 
 
 
123
  }
124
 
125
  public function getStoresFeedEnabled()
6
  {
7
  $log = false;
8
  if($log) Mage::log('Start',null,'quartic_cron.log',true);
9
+
10
  $stores = $this->getStoresFeedEnabled();
11
  foreach($stores as $storeId) {
12
+ $this->refreshFeed($storeId,$log);
13
+ }
14
+ }
15
+
16
+ public function refreshFeed($storeId, $log = false)
17
+ {
18
+ $appEmulation = Mage::getSingleton('core/app_emulation');
19
+ $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId);
20
+
21
+ if($log) Mage::log('$storeId: ' . $storeId,null,'quartic_cron.log',true);
22
+ $filename = 'xmlOutput_' . $storeId . '.xml';
23
+ $filepath = Mage::getBaseDir('var') . "/quartic/" . $filename;
24
+
25
+ ob_start();
26
+
27
+ $writer = new Quarticon_Quartic_Model_Adapter_Writer();
28
+ $writer->openUri('php://output');
29
+ $writer->startDocument('1.0', 'UTF-8');
30
+ $writer->setIndent(true);
31
+ $mem_writer = new Quarticon_Quartic_Model_Adapter_Writer();
32
+ $mem_writer->openMemory();
33
+ $mem_writer->setIndent(true);
34
+ $writer->startElement('products');
35
+ $writer->writeAttribute('xmlns', "http://alpha.quarticon.com/docs/catalog/1.0/schema");
36
+ $writer->writeAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance");
37
+ $writer->writeAttribute('xsi:schemaLocation', "http://quartic.pl/catalog/1.0/schema http://alpha.quarticon.com/docs/catalog/1.0/schema/quartic_catalog_1.0.xsd");
38
+
39
+ $time = microtime(true);
40
+ $products = array();
41
+
42
+ $data = array();
43
+ // for proper products data in collection set current store by param
44
+ Mage::app()->setCurrentStore($storeId);
45
+ /**
46
+ * @var Quarticon_Quartic_Model_Product $_product
47
+ */
48
+ $_product = Mage::getModel('quartic/product');
49
+ $count = $_product->getCollectionCount();
50
+ if($log) Mage::log('$count: ' . $count,null,'quartic_cron.log',true);
51
+
52
+ $steps = ceil($count / $_product->getIterationStep($storeId));
53
+ if($log) Mage::log('$steps: ' . $steps,null,'quartic_cron.log',true);
54
+ for ($step = 1; $step <= $steps; $step++) {
55
+ if($log) Mage::log('$step1: ' . $step,null,'quartic_cron.log',true);
56
+ $products[$step] = $_product->getAll($step, $_product->getIterationStep($storeId));
57
+ }
58
+ $data['steps'] = $steps;
59
+ $data['products'] = $products;
60
+ $data['time'] = $time;
61
+
62
+ $cache = $data;
63
+
64
+
65
+ $steps = $cache['steps'];
66
+ $products = $cache['products'];
67
+ for ($step = 1; $step <= $steps; $step++) {
68
+ if($log) Mage::log('$step2: ' . $step,null,'quartic_cron.log',true);
69
+ $collection = $products[$step];
70
+ foreach ($collection as &$p) {
71
+ if($log) Mage::log('$productId: ' . $p['id'],null,'quartic_cron.log',true);
72
+ $mem_writer->startElement('product');
73
+ $mem_writer->writeElement('id', $p['id']);
74
+ $mem_writer->startElement('title');
75
+ $mem_writer->writeCData($p['title']);
76
+ $mem_writer->endElement();
77
+ $mem_writer->startElement('link');
78
+ $mem_writer->writeCData($p['link']);
79
+ $mem_writer->endElement();
80
+ if (isset($p['thumb'])) {
81
+ $mem_writer->startElement('thumb');
82
+ $mem_writer->writeCData($p['thumb']);
83
  $mem_writer->endElement();
84
+ }
85
+ $mem_writer->writeElement('price', $p['price']);
86
+ if (isset($p['old_price'])) {
87
+ $mem_writer->writeElement('old_price', $p['old_price']);
88
+ }
89
+ if (isset($p['author'])) {
90
+ $mem_writer->startElement('author');
91
+ $mem_writer->writeCData($p['author']);
92
  $mem_writer->endElement();
93
+ }
94
+ $mem_writer->writeElement('status', !empty($p['status']) ? '1' : '0');
95
+ $i = 0;
96
+ foreach ($p['categories'] as $categoryId => $categoryName) {
97
+ $i++;
98
+ $mem_writer->startElement('category_' . $i);
99
+ $mem_writer->writeAttribute('id', $categoryId);
100
+ $mem_writer->writeRaw($categoryName);
101
+ $mem_writer->endElement();
102
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
103
 
104
+ $i = 1;
105
+ while ($i <= 5) {
106
+ if (isset($p['custom' . $i])) {
107
+ $mem_writer->writeElement('custom' . $i, $p['custom' . $i]);
 
 
108
  }
109
+ $i++;
 
 
110
  }
111
 
112
+ $mem_writer->endElement();
113
+ unset($p);
 
114
  }
115
 
116
+ $batch_xml_string = $mem_writer->outputMemory(true);
117
+ $writer->writeRaw($batch_xml_string);
118
+ unset($collection);
 
 
 
 
 
 
 
119
  }
120
+
121
+ unset($mem_writer);
122
+ $writer->endElement();
123
+ $writer->endDocument();
124
+
125
+
126
+ $xmlContent = ob_get_contents();
127
+ ob_end_clean();
128
+ if($log) Mage::log('przed zapisem',null,'quartic_cron.log',true);
129
+ file_put_contents($filepath,$xmlContent);
130
+ if($log) Mage::log('po zapisie',null,'quartic_cron.log',true);
131
+ $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo);
132
  }
133
 
134
  public function getStoresFeedEnabled()
app/code/community/Quarticon/Quartic/Model/Frame.php CHANGED
@@ -35,14 +35,11 @@ class Quarticon_Quartic_Model_Frame extends Mage_Core_Model_Abstract
35
  if($this->getFrameName() == 'cart') {
36
  $quote = Mage::helper('checkout/cart')->getCart()->getQuote();
37
  $items = $quote->getItemsCollection();
38
- $qHelper = Mage::helper('quartic');
39
- $idsA = array();
40
  foreach($items as $item) {
41
- $id = $qHelper->getParentProductId($item->getProduct()->getId());
42
- $idsA[$id] = $id;
43
  }
44
- $ids = implode(',',$idsA);
45
- $frame['body'] = str_replace('class="','data-product="' . $ids . '" class="',$frame['body']);
46
  }
47
  return $frame['body'];
48
  }
@@ -83,5 +80,5 @@ class Quarticon_Quartic_Model_Frame extends Mage_Core_Model_Abstract
83
  'div_id' => $div_id,
84
  'body' => "<div id=\"" . $div_id . "\"></div>"
85
  );
86
- }
87
  }
35
  if($this->getFrameName() == 'cart') {
36
  $quote = Mage::helper('checkout/cart')->getCart()->getQuote();
37
  $items = $quote->getItemsCollection();
38
+ $ids = '';
 
39
  foreach($items as $item) {
40
+ $ids .= ',' . $item->getProduct()->getId();
 
41
  }
42
+ $frame['body'] = str_replace('class="','data-product="' . substr($ids,1) . '" class="',$frame['body']);
 
43
  }
44
  return $frame['body'];
45
  }
80
  'div_id' => $div_id,
81
  'body' => "<div id=\"" . $div_id . "\"></div>"
82
  );
83
+ }
84
  }
app/code/community/Quarticon/Quartic/Model/Observer/Adminhtml.php CHANGED
@@ -45,6 +45,8 @@ class Quarticon_Quartic_Model_Observer_Adminhtml
45
  } else {
46
  $status_array = Mage::getStoreConfig("quartic/config", $observer->getStore());
47
  }
 
 
48
 
49
  $status = (
50
  !empty($status_array['active']) &&
45
  } else {
46
  $status_array = Mage::getStoreConfig("quartic/config", $observer->getStore());
47
  }
48
+
49
+ foreach($status_array as $key => $value) $status_array[$key] = (string)$value;
50
 
51
  $status = (
52
  !empty($status_array['active']) &&
app/code/community/Quarticon/Quartic/Model/Product.php CHANGED
@@ -6,6 +6,7 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
6
  {
7
 
8
  const ITERATION_STEP_DEFAULT = 250;
 
9
 
10
  protected $default_attribute_set_id = null;
11
  protected $_categories = array();
@@ -59,6 +60,8 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
59
  if ($productIds) {
60
  $collection->addAttributeToFilter('entity_id', explode(',',$productIds));
61
  }
 
 
62
  $collection = $this->_addQtyField($collection);
63
  $collection = $this->_addDisableFilters($collection);
64
  return $collection;
@@ -115,7 +118,7 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
115
  ->addAttributeToSelect('price', $joinType)
116
  ->addAttributeToSelect('special_price', $joinType)
117
  ->addAttributeToSelect('name', $joinType)
118
- ->addAttributeToSelect('category_ids', $joinType)
119
  ->addAttributeToSelect('visibility', $joinType)
120
  ->addAttributeToSelect('status', $joinType)
121
  ->addAttributeToSelect('url_path', $joinType)
@@ -160,11 +163,22 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
160
  } elseif($configurableChildPrice == 1) { //$configurableChildPrice == 1 - get child product price from parent config
161
  if(!isset($this->_collectedConfigurablePrices[$configurable_id])) {
162
  $configurableProduct = Mage::getModel('catalog/product')->load($configurable_id);
163
- $this->_collectedConfigurablePrices[$configurable_id] = $this->getFinalPriceIncludingTax($configurableProduct,false);
164
  }
165
  // temporary force price for simple product that should show price from it's parent configurable
166
- $product->setFinalPrice($this->_collectedConfigurablePrices[$configurable_id]);
167
- // $product->setSpecialPrice(null);
 
 
 
 
 
 
 
 
 
 
 
168
  $product->setData($map['old_price'],null);
169
  }
170
  if($configurableChildImage == 1) {
@@ -183,20 +197,24 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
183
  if($groupedChildPrice == 1) { //$groupedChildPrice == 1 - get child product price from parent config
184
  if(!isset($this->_collectedGroupedPrices[$grouped_id])) {
185
  $groupedProduct = Mage::getModel('catalog/product')->load($grouped_id);
186
- $this->_collectedGroupedPrices[$grouped_id] = $this->getFinalPriceIncludingTax($groupedProduct,false);
187
  }
188
  // temporary force price for simple product that should show price from it's parent configurable
189
  $product->setFinalPrice($this->_collectedGroupedPrices[$grouped_id][$product->getId()]);
190
- // $product->setSpecialPrice(null);
191
  $product->setData($map['old_price'],null);
192
  }
193
  if($groupedChildImage == 1) {
194
  // temporary force image for simple product that should show image from it's parent configurable
195
- $product->setData('image',$groupedProduct->getData('image'));
 
 
196
  }
197
  if($groupedChildRedirect == 1) {
198
  // temporary force url for simple product that should be redirected to it's parent grouped
199
- $product->setData('url',$groupedProduct->getProductUrl());
 
 
200
  }
201
  }
202
  }
@@ -231,7 +249,6 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
231
  {
232
  if($product->getData('quarticon_exclude') == 1) return false;
233
 
234
- $category_ids = array_slice($product->getCategoryIds(), 0, 6);
235
  $map = $this->getMapping();
236
 
237
  $price = $product->getData($map['price']);
@@ -243,10 +260,10 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
243
  $offer = array(
244
  'id' => Mage::helper('quartic')->getProduct($product),
245
  'title' => !empty($map['title']) ? $product->getData($map['title']) : '',
246
- 'price' => Mage::helper('core')->currency($this->getFinalPriceIncludingTax($product),false,false),
247
- 'old_price' => !empty($map['old_price']) ? $product->getData($map['old_price']) : '',
248
  'link' => $product->getProductUrl(),
249
- 'categories' => $this->getCategories($category_ids),
250
  'status' => $this->_getStatus($product)
251
  );
252
  /**
@@ -264,11 +281,6 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
264
  if ($special_price) {
265
  $offer['old_price'] = $this->getPriceIncludingTax($product);
266
  }
267
-
268
- if (isset($offer['old_price']) && $offer['old_price']) {
269
- $offer['old_price'] = Mage::helper('core')->currency($offer['old_price'],false,false);
270
- }
271
-
272
  if ($this->getConfig()->addThumbs()) {
273
  try {
274
  $offer['thumb'] = Mage::helper('catalog/image')->init($product, 'image',$product->getData('image'))->__toString();
@@ -413,13 +425,15 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
413
  return $result;
414
  }
415
  } else {
416
- return Mage::helper('tax')->getPrice($product, $product->getFinalPrice(), 2);
 
417
  }
418
  }
419
 
420
  public function getPriceIncludingTax($product)
421
  {
422
- return Mage::helper('tax')->getPrice($product, $product->getPrice(), 2);
 
423
  }
424
 
425
  protected function _addAdditionalAttributes($collection)
@@ -505,13 +519,16 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
505
  $collection = Mage::getModel('catalog/category')
506
  ->getCollection()
507
  ->addAttributeToSelect('name', $joinType)
 
508
  ->addAttributeToFilter('entity_id', $categoryIdsToAdd)
509
- ->setPage(0, count($categoryIdsToAdd));
 
510
  foreach ($collection as $category) {
511
  $this->_categories[$category->getId()] = $category->getName();
512
  $categories[$category->getId()] = $category->getName();
513
  }
514
  }
 
515
  return $categories;
516
  }
517
 
@@ -552,12 +569,13 @@ class Quarticon_Quartic_Model_Product extends Mage_Core_Model_Abstract
552
 
553
  private function _getStoreId()
554
  {
555
- $params = Mage::app()->getRequest()->getParams();
556
- if(isset($params['store'])) {
557
- $storeId = (is_numeric($params['store'])) ? (int)$params['store'] : Mage::getModel('core/store')->load($params['store'], 'code')->getId();
558
- } else {
 
559
  $storeId = Mage::app()->getStore()->getId();
560
- }
561
 
562
  return $storeId;
563
  }
6
  {
7
 
8
  const ITERATION_STEP_DEFAULT = 250;
9
+ const CASTEGORIES_LIMIT = 6;
10
 
11
  protected $default_attribute_set_id = null;
12
  protected $_categories = array();
60
  if ($productIds) {
61
  $collection->addAttributeToFilter('entity_id', explode(',',$productIds));
62
  }
63
+ $websiteId = Mage::getModel('core/store')->load($storeId)->getWebsiteId();
64
+ $collection->addPriceData(null,$websiteId);
65
  $collection = $this->_addQtyField($collection);
66
  $collection = $this->_addDisableFilters($collection);
67
  return $collection;
118
  ->addAttributeToSelect('price', $joinType)
119
  ->addAttributeToSelect('special_price', $joinType)
120
  ->addAttributeToSelect('name', $joinType)
121
+ // ->addAttributeToSelect('category_ids', $joinType)
122
  ->addAttributeToSelect('visibility', $joinType)
123
  ->addAttributeToSelect('status', $joinType)
124
  ->addAttributeToSelect('url_path', $joinType)
163
  } elseif($configurableChildPrice == 1) { //$configurableChildPrice == 1 - get child product price from parent config
164
  if(!isset($this->_collectedConfigurablePrices[$configurable_id])) {
165
  $configurableProduct = Mage::getModel('catalog/product')->load($configurable_id);
166
+ $this->_collectedConfigurablePrices[$configurable_id] = $this->getFinalPriceIncludingTax($configurableProduct,true);
167
  }
168
  // temporary force price for simple product that should show price from it's parent configurable
169
+ $configurablePriceType = $this->getConfig()->getConfigurablePrice();
170
+ $collectedPrice = $this->_collectedConfigurablePrices[$configurable_id];
171
+ if(is_array($collectedPrice)) {
172
+ if($configurablePriceType == 1) {
173
+ $forcedFinalPrice = $collectedPrice['minPrice'];
174
+ } elseif($configurablePriceType == 2) {
175
+ $forcedFinalPrice = $collectedPrice['maxPrice'];
176
+ }
177
+ $product->setFinalPrice($forcedFinalPrice);
178
+ } else {
179
+ $product->setFinalPrice($this->_collectedConfigurablePrices[$configurable_id]);
180
+ }
181
+ $product->setSpecialPrice(null);
182
  $product->setData($map['old_price'],null);
183
  }
184
  if($configurableChildImage == 1) {
197
  if($groupedChildPrice == 1) { //$groupedChildPrice == 1 - get child product price from parent config
198
  if(!isset($this->_collectedGroupedPrices[$grouped_id])) {
199
  $groupedProduct = Mage::getModel('catalog/product')->load($grouped_id);
200
+ $this->_collectedGroupedPrices[$grouped_id] = $this->getFinalPriceIncludingTax($groupedProduct,true);
201
  }
202
  // temporary force price for simple product that should show price from it's parent configurable
203
  $product->setFinalPrice($this->_collectedGroupedPrices[$grouped_id][$product->getId()]);
204
+ $product->setSpecialPrice(null);
205
  $product->setData($map['old_price'],null);
206
  }
207
  if($groupedChildImage == 1) {
208
  // temporary force image for simple product that should show image from it's parent configurable
209
+ if(isset($groupedProduct) && $groupedProduct->getId()) {
210
+ $product->setData('image',$groupedProduct->getData('image'));
211
+ }
212
  }
213
  if($groupedChildRedirect == 1) {
214
  // temporary force url for simple product that should be redirected to it's parent grouped
215
+ if(isset($groupedProduct) && $groupedProduct->getId()) {
216
+ $product->setData('url', $groupedProduct->getProductUrl());
217
+ }
218
  }
219
  }
220
  }
249
  {
250
  if($product->getData('quarticon_exclude') == 1) return false;
251
 
 
252
  $map = $this->getMapping();
253
 
254
  $price = $product->getData($map['price']);
260
  $offer = array(
261
  'id' => Mage::helper('quartic')->getProduct($product),
262
  'title' => !empty($map['title']) ? $product->getData($map['title']) : '',
263
+ 'price' => $this->getFinalPriceIncludingTax($product),
264
+ 'old_price' => '',
265
  'link' => $product->getProductUrl(),
266
+ 'categories' => $this->getCategories($product->getCategoryIds()),
267
  'status' => $this->_getStatus($product)
268
  );
269
  /**
281
  if ($special_price) {
282
  $offer['old_price'] = $this->getPriceIncludingTax($product);
283
  }
 
 
 
 
 
284
  if ($this->getConfig()->addThumbs()) {
285
  try {
286
  $offer['thumb'] = Mage::helper('catalog/image')->init($product, 'image',$product->getData('image'))->__toString();
425
  return $result;
426
  }
427
  } else {
428
+ $taxHelper = Mage::helper('tax');
429
+ return $taxHelper->getPrice($product, $product->getFinalPrice(),($taxHelper->getPriceDisplayType() > 1));
430
  }
431
  }
432
 
433
  public function getPriceIncludingTax($product)
434
  {
435
+ $taxHelper = Mage::helper('tax');
436
+ return $taxHelper->getPrice($product, $product->getPrice(),($taxHelper->getPriceDisplayType() > 1));
437
  }
438
 
439
  protected function _addAdditionalAttributes($collection)
519
  $collection = Mage::getModel('catalog/category')
520
  ->getCollection()
521
  ->addAttributeToSelect('name', $joinType)
522
+ ->addAttributeToFilter('is_active', 1)
523
  ->addAttributeToFilter('entity_id', $categoryIdsToAdd)
524
+ ->setPage(0, self::CASTEGORIES_LIMIT)
525
+ ;
526
  foreach ($collection as $category) {
527
  $this->_categories[$category->getId()] = $category->getName();
528
  $categories[$category->getId()] = $category->getName();
529
  }
530
  }
531
+ $categories = array_slice($categories, 0, 6, true);
532
  return $categories;
533
  }
534
 
569
 
570
  private function _getStoreId()
571
  {
572
+ // Store is already set with quartic/cron model
573
+ // $params = Mage::app()->getRequest()->getParams();
574
+ // if(isset($params['store'])) {
575
+ // $storeId = (is_numeric($params['store'])) ? (int)$params['store'] : Mage::getModel('core/store')->load($params['store'], 'code')->getId();
576
+ // } else {
577
  $storeId = Mage::app()->getStore()->getId();
578
+ // }
579
 
580
  return $storeId;
581
  }
app/code/community/Quarticon/Quartic/controllers/Adminhtml/ApiController.php CHANGED
@@ -120,4 +120,9 @@ class Quarticon_Quartic_Adminhtml_ApiController extends Mage_Adminhtml_Controlle
120
 
121
  return $storeId;
122
  }
 
 
 
 
 
123
  }
120
 
121
  return $storeId;
122
  }
123
+
124
+ protected function _isAllowed()
125
+ {
126
+ return Mage::getSingleton('admin/session')->isAllowed('system/config/quartic');
127
+ }
128
  }
app/code/community/Quarticon/Quartic/controllers/Adminhtml/IndexController.php CHANGED
@@ -15,4 +15,9 @@ class Quarticon_Quartic_Adminhtml_IndexController extends Mage_Adminhtml_Control
15
  $this->loadLayout();
16
  $this->renderLayout();
17
  }
 
 
 
 
 
18
  }
15
  $this->loadLayout();
16
  $this->renderLayout();
17
  }
18
+
19
+ protected function _isAllowed()
20
+ {
21
+ return Mage::getSingleton('admin/session')->isAllowed('catalog/quartic');
22
+ }
23
  }
app/code/community/Quarticon/Quartic/controllers/Adminhtml/MapsController.php CHANGED
@@ -25,4 +25,9 @@ class Quarticon_Quartic_Adminhtml_MapsController extends Mage_Adminhtml_Controll
25
  }
26
  $this->_redirect("*/*/");
27
  }
 
 
 
 
 
28
  }
25
  }
26
  $this->_redirect("*/*/");
27
  }
28
+
29
+ protected function _isAllowed()
30
+ {
31
+ return Mage::getSingleton('admin/session')->isAllowed('quartic/maps');
32
+ }
33
  }
app/code/community/Quarticon/Quartic/controllers/FeedController.php CHANGED
@@ -43,39 +43,39 @@ class Quarticon_Quartic_FeedController extends Mage_Core_Controller_Front_Action
43
  $filepath = Mage::getBaseDir('var') . "/quartic/" . $filename;
44
  $olderThan = 24 * 3600; //24h
45
 
46
- if(file_exists($filepath) && (time() - filemtime($filepath) < $olderThan)) { // not older than 24h
47
- header("Content-Type:text/xml");
48
- $contents = file_get_contents($filepath);
49
- echo $contents;
50
- $this->log();
51
- die();
52
- } elseif(file_exists($filepath) && (time() - filemtime($filepath) >= $olderThan)) { // file too old
53
- $this->setHeader(512,'File Too old - ' . date('c',filemtime($filepath)));
54
- $this->log();
55
- die();
56
- } elseif(!file_exists($filepath)) { //file not exists
57
- $this->setHeader(513,'File not exists');
58
- die();
59
- } else {
60
- $this->setHeader(514,'Something is wrong'); // nobody will never see this... that's sad
61
- $this->log();
62
- die();
63
- }
 
 
 
 
 
 
 
 
 
 
 
64
  } else {
65
  $this->_redirect('/');
66
  }
67
  }
68
-
69
- private function setHeader($code,$msg)
70
- {
71
- $phpSapiName = substr(php_sapi_name(), 0, 3);
72
- if ($phpSapiName == 'cgi' || $phpSapiName == 'fpm') {
73
- header('Status: '.$code.' '.$msg);
74
- } else {
75
- $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
76
- header($protocol.' '.$code.' '.$msg);
77
- }
78
- }
79
 
80
  /**
81
  * View orders feed action (if hash and config are active)
43
  $filepath = Mage::getBaseDir('var') . "/quartic/" . $filename;
44
  $olderThan = 24 * 3600; //24h
45
 
46
+ if(file_exists($filepath) && (time() - filemtime($filepath) < $olderThan) && !$this->getRequest()->getParam('refresh')) { // not older than 24h
47
+ header("Content-Type:text/xml");
48
+ header("Data_source: file",true);
49
+ $contents = file_get_contents($filepath);
50
+ echo $contents;
51
+ $this->log();
52
+ die();
53
+ } else {
54
+ Mage::getModel('quartic/cron')->refreshFeed($storeId);
55
+ if(file_exists($filepath)) { // refreshed, try again
56
+ header("Content-Type:text/xml");
57
+ header("Data_source: regenerated",true);
58
+ $contents = file_get_contents($filepath);
59
+ echo $contents;
60
+ die();
61
+ } elseif(file_exists($filepath) && (time() - filemtime($filepath) >= $olderThan)) { // file too old
62
+ header("Error: 512 File Too old - " . date('c',filemtime($filepath)),true,512);
63
+ $this->log();
64
+ die();
65
+ } elseif(!file_exists($filepath)) { //file not exists
66
+ header("Error: 513 File not exists",true,513);
67
+ $this->log();
68
+ die();
69
+ } else {
70
+ header("Error: 514 Something is wrong",true,514); // nobody will never see this... that's sad
71
+ $this->log();
72
+ die();
73
+ }
74
+ }
75
  } else {
76
  $this->_redirect('/');
77
  }
78
  }
 
 
 
 
 
 
 
 
 
 
 
79
 
80
  /**
81
  * View orders feed action (if hash and config are active)
app/code/community/Quarticon/Quartic/etc/adminhtml.xml CHANGED
@@ -5,7 +5,7 @@
5
  <children>
6
  <quartic translate="title" module="quartic">
7
  <title>QUARTICON | Quartic</title>
8
- <action>quartic/adminhtml_index/urls</action>
9
  <sort_order>1500</sort_order>
10
  </quartic>
11
  </children>
@@ -22,7 +22,7 @@
22
  <maps translate="title" module="quartic">
23
  <title>Attribute mapping</title>
24
  <sort_order>20</sort_order>
25
- <action>quartic/adminhtml_maps</action>
26
  </maps>
27
  </children>
28
  </quartic>
5
  <children>
6
  <quartic translate="title" module="quartic">
7
  <title>QUARTICON | Quartic</title>
8
+ <action>adminhtml/index/urls</action>
9
  <sort_order>1500</sort_order>
10
  </quartic>
11
  </children>
22
  <maps translate="title" module="quartic">
23
  <title>Attribute mapping</title>
24
  <sort_order>20</sort_order>
25
+ <action>adminhtml/maps</action>
26
  </maps>
27
  </children>
28
  </quartic>
app/code/community/Quarticon/Quartic/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Quarticon_Quartic>
5
- <version>1.0.6</version>
6
  </Quarticon_Quartic>
7
  </modules>
8
  <global>
@@ -159,17 +159,33 @@
159
  </all>-->
160
  <admin>
161
  <children>
 
 
 
 
 
 
 
162
  <system>
163
  <children>
164
  <config>
165
  <children>
166
- <quartic>
167
  <title>QUARTICON | Quartic</title>
168
  </quartic>
169
  </children>
170
  </config>
171
  </children>
172
  </system>
 
 
 
 
 
 
 
 
 
173
  </children>
174
  </admin>
175
  </resources>
@@ -194,15 +210,15 @@
194
  </quartic>
195
  </jobs>
196
  </crontab>
197
- <admin>
198
- <routers>
199
- <quartic>
200
- <use>admin</use>
201
- <args>
202
- <module>Quarticon_Quartic</module>
203
- <frontName>quartic</frontName>
204
- </args>
205
- </quartic>
206
- </routers>
207
- </admin>
208
  </config>
2
  <config>
3
  <modules>
4
  <Quarticon_Quartic>
5
+ <version>1.0.8</version>
6
  </Quarticon_Quartic>
7
  </modules>
8
  <global>
159
  </all>-->
160
  <admin>
161
  <children>
162
+ <catalog>
163
+ <children>
164
+ <quartic translate="title" module="quartic">
165
+ <title>QUARTICON | Quartic</title>
166
+ </quartic>
167
+ </children>
168
+ </catalog>
169
  <system>
170
  <children>
171
  <config>
172
  <children>
173
+ <quartic translate="title" module="quartic">
174
  <title>QUARTICON | Quartic</title>
175
  </quartic>
176
  </children>
177
  </config>
178
  </children>
179
  </system>
180
+ <quartic translate="title" module="quartic">
181
+ <title>Quartic</title>
182
+ <sort_order>90</sort_order>
183
+ <children>
184
+ <maps translate="title" module="quartic">
185
+ <title>Attribute mapping</title>
186
+ </maps>
187
+ </children>
188
+ </quartic>
189
  </children>
190
  </admin>
191
  </resources>
210
  </quartic>
211
  </jobs>
212
  </crontab>
213
+ <admin>
214
+ <routers>
215
+ <adminhtml>
216
+ <args>
217
+ <modules>
218
+ <Quarticon_Quartic before="Mage_Adminhtml">Quarticon_Quartic_Adminhtml</Quarticon_Quartic>
219
+ </modules>
220
+ </args>
221
+ </adminhtml>
222
+ </routers>
223
+ </admin>
224
  </config>
app/code/community/Quarticon/Quartic/etc/system.xml CHANGED
@@ -106,7 +106,7 @@
106
  <label>Get Placements</label>
107
  <frontend_type>button</frontend_type>
108
  <frontend_model>quartic/adminhtml_system_config_form_field_button</frontend_model>
109
- <button_url>quartic/adminhtml_api/placements</button_url>
110
  <comment>Load placement snippets from your QuarticON account</comment>
111
  <sort_order>100</sort_order>
112
  <show_in_default>1</show_in_default>
@@ -118,7 +118,7 @@
118
  <label>Send Transaction History</label>
119
  <frontend_type>button</frontend_type>
120
  <frontend_model>quartic/adminhtml_system_config_form_field_button</frontend_model>
121
- <button_url>quartic/adminhtml_api/prepareorders</button_url>
122
  <comment>Send transaction history to your QuarticON account</comment>
123
  <sort_order>110</sort_order>
124
  <show_in_default>1</show_in_default>
106
  <label>Get Placements</label>
107
  <frontend_type>button</frontend_type>
108
  <frontend_model>quartic/adminhtml_system_config_form_field_button</frontend_model>
109
+ <button_url>adminhtml/api/placements</button_url>
110
  <comment>Load placement snippets from your QuarticON account</comment>
111
  <sort_order>100</sort_order>
112
  <show_in_default>1</show_in_default>
118
  <label>Send Transaction History</label>
119
  <frontend_type>button</frontend_type>
120
  <frontend_model>quartic/adminhtml_system_config_form_field_button</frontend_model>
121
+ <button_url>adminhtml/api/prepareorders</button_url>
122
  <comment>Send transaction history to your QuarticON account</comment>
123
  <sort_order>110</sort_order>
124
  <show_in_default>1</show_in_default>
app/code/community/Quarticon/Quartic/sql/quartic_setup/mysql4-upgrade-1.0.3-1.0.8.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $installer = $this;
3
+ $installer->startSetup();
4
+ $connection = $installer->getConnection();
5
+
6
+ // category attribute
7
+ $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
8
+ $setup->addAttribute('catalog_product', 'quarticon_exclude', array(
9
+ 'group' => 'General',
10
+ 'input' => 'select',
11
+ 'type' => 'int',
12
+ 'label' => 'Exclude from Quarticon feed',
13
+ 'source' => 'eav/entity_attribute_source_boolean',
14
+ 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
15
+ 'visible' => 1,
16
+ 'required' => 0,
17
+ 'visible_on_front' => 0,
18
+ 'is_html_allowed_on_front' => 0,
19
+ 'is_configurable' => 0,
20
+ 'searchable' => 0,
21
+ 'filterable' => 0,
22
+ 'comparable' => 0,
23
+ 'unique' => false,
24
+ 'user_defined' => true,
25
+ 'default' => '0',
26
+ 'is_user_defined' => true,
27
+ 'used_in_product_listing' => false
28
+ ));
29
+
30
+ ///*
31
+ // * Remove price from mapping
32
+ // */
33
+ //$sql = <<<SQLTEXT
34
+ //DELETE FROM {$this->getTable('quartic_maps')} WHERE quartic_attribute = 'price' OR quartic_attribute = 'old_price';
35
+ //SQLTEXT;
36
+ //$this->run($sql);
37
+
38
+ /*
39
+ * Fix some old versioning
40
+ */
41
+ $sql = <<<SQLTEXT
42
+ update `core_resource` set version = '1.0.8', data_version = '1.0.8' where code = 'quartic_setup';
43
+ SQLTEXT;
44
+ $this->run($sql);
45
+
46
+
47
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/quartic.xml CHANGED
@@ -7,24 +7,24 @@
7
  </action>
8
  </reference>
9
  </default>
10
- <quartic_adminhtml_index_urls>
11
  <reference name="content">
12
  <block type="quartic/adminhtml_urls" name="quartic_urls" />
13
  </reference>
14
- </quartic_adminhtml_index_urls>
15
- <quartic_adminhtml_maps_index>
16
  <reference name="content">
17
  <block type="quartic/adminhtml_maps" name="quartic_maps" />
18
  </reference>
19
- </quartic_adminhtml_maps_index>
20
- <quartic_adminhtml_history_index>
21
  <reference name="content">
22
  <block type="quartic/adminhtml_history" name="quartic_history" />
23
  </reference>
24
- </quartic_adminhtml_history_index>
25
- <quartic_adminhtml_api_placements>
26
  <reference name="content">
27
  <block type="quartic/adminhtml_api_dump" name="quartic_result" />
28
  </reference>
29
- </quartic_adminhtml_api_placements>
30
  </layout>
7
  </action>
8
  </reference>
9
  </default>
10
+ <adminhtml_index_urls>
11
  <reference name="content">
12
  <block type="quartic/adminhtml_urls" name="quartic_urls" />
13
  </reference>
14
+ </adminhtml_index_urls>
15
+ <adminhtml_maps_index>
16
  <reference name="content">
17
  <block type="quartic/adminhtml_maps" name="quartic_maps" />
18
  </reference>
19
+ </adminhtml_maps_index>
20
+ <adminhtml_history_index>
21
  <reference name="content">
22
  <block type="quartic/adminhtml_history" name="quartic_history" />
23
  </reference>
24
+ </adminhtml_history_index>
25
+ <adminhtml_api_placements>
26
  <reference name="content">
27
  <block type="quartic/adminhtml_api_dump" name="quartic_result" />
28
  </reference>
29
+ </adminhtml_api_placements>
30
  </layout>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Quarticon_Quartic</name>
4
- <version>1.0.6</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/academic.php">Academic Free License (AFL)</license>
7
  <channel>community</channel>
@@ -10,9 +10,9 @@
10
  <description>Recommend - personalized product recommendations, by QuarticON.com</description>
11
  <notes>The extension integrates your store with Quartic platform.</notes>
12
  <authors><author><name>QuarticON</name><user>quarticon</user><email>contact@quarticon.com</email></author></authors>
13
- <date>2016-01-28</date>
14
- <time>13:33:47</time>
15
- <contents><target name="magecommunity"><dir name="Quarticon"><dir name="Quartic"><dir name="Block"><dir name="Adminhtml"><dir name="Api"><file name="Dump.php" hash="6d90575698aeb92c20b7ba8db38fd8d4"/></dir><dir name="History"><file name="Grid.php" hash="a32fe8ab7e02f309ca99b42f18af803b"/></dir><file name="History.php" hash="6d552d7d7a7f404b4ed5a816977b2dc8"/><dir name="Maps"><file name="Grid.php" hash="8fb73376bba86e8b871ae17f18769048"/><dir name="Renderer"><file name="Input.php" hash="a209bbe5b71291c1b3f5f5994fbf5e2f"/><file name="Select.php" hash="0318c06d7f4b62c11800b4ffe4aa62bc"/></dir></dir><file name="Maps.php" hash="9744bd8300dac3e98d089ecf70faa6a2"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Button.php" hash="b9df45e6eb248d41386cb5768396c2ee"/><file name="Placement.php" hash="5d2971165f5976e3a5aaeae7ea966272"/><file name="Register.php" hash="3098ec89d046749ec94aae5fe7b74b49"/><file name="Text.php" hash="65614b678c479b7f02d6ce4f54197946"/></dir><file name="Fieldset.php" hash="29fc8b5212bd5d2c825b55beb9e08dd0"/></dir></dir></dir><dir name="Urls"><file name="Grid.php" hash="e104ebebd5ce12f49b1003068f6c40a7"/></dir><file name="Urls.php" hash="6e4bb1a3dbb25174cd9f7226a7eb3e2a"/></dir><file name="Box.php" hash="67ddbd72ae1c06dfa307bd8d6c00ae4f"/><dir name="Frame"><file name="Cart.php" hash="438a729fe07cc629693f06abe431dff3"/><file name="Category.php" hash="068d3d1062c005482bdbed623d6cf136"/><file name="Home.php" hash="475eae5b390abc205ec9a65a0d8c13ad"/><file name="Product.php" hash="e0854d2407b9048758e47e1dd7d70d94"/></dir><dir name="Getter"><file name="Cart.php" hash="d2b99e59220a32f92596033813698069"/><file name="Order.php" hash="04027c90a254bdb46c6ad6da4103c762"/><file name="Product.php" hash="b267c9dbecea690be8aa3d028ce38d75"/></dir><file name="Products.php" hash="282af5d3242c8f13d90dfc19067fc2f7"/><file name="Script.php" hash="4e1173d214e331e68db7f8b3313d4ad6"/></dir><dir name="Helper"><file name="Data.php" hash="a210a8180739ca692722ada6f0001957"/></dir><dir name="Model"><dir name="Adapter"><file name="Writer.php" hash="66e2f2649ac3ec3f8e8878a3e595ce3c"/></dir><file name="Attribute.php" hash="0e2918e9bb12bae57b63b67b7b048f49"/><file name="Catalog.php" hash="2e0eff970755b82ab1b76e2fe9a5b893"/><dir name="Client"><file name="AbstractCurl.php" hash="dd0e0ddc0885c8224a13a563ab8759bd"/><file name="Api.php" hash="9f46b84f14151c5894407eae7fafb6b4"/><dir name="Resource"><file name="Curl.php" hash="07924c032361218ebf4390a61442c30f"/></dir></dir><file name="Config.php" hash="9f30730756e93085b78133df24c9ef63"/><file name="Cron.php" hash="5815fbb5c81ccd4080ccaf4607fb807e"/><file name="Frame.php" hash="7de5061938886fe76622447ecedb05cb"/><file name="History.php" hash="451b494fdd77277b235d2a0d52fcc99c"/><dir name="Insert"><file name="Cart.php" hash="c668360217730c627875560add9ad033"/><file name="Category.php" hash="313ec107fd93bbf07ad40cf754c97197"/><file name="Home.php" hash="ad89be2ba8cdd83827d9d261c056620e"/><file name="Product.php" hash="8d4609828965cc210b83094c157af22d"/></dir><file name="Insert.php" hash="3eac4d73c5d92c077a22106cd8a31651"/><file name="Maps.php" hash="772431aac9f57decc072c91f580ec3f3"/><dir name="Mysql4"><dir name="History"><file name="Collection.php" hash="16c997ad5b0206b64392d64d9986fb40"/></dir><file name="History.php" hash="10ff5200887a7c12cb9b0312acc3a4c5"/><dir name="Maps"><file name="Collection.php" hash="e5a6067327d75240ccf42fc5397332bf"/></dir><file name="Maps.php" hash="bd3dc9f67a482c2f475c1d651abd274a"/><dir name="Placement"><file name="Collection.php" hash="95ac7e3641bb395b3c518b56b85a4985"/></dir><file name="Placement.php" hash="cfaf72514c2cebc604bb14bd79966989"/></dir><dir name="Observer"><file name="Adminhtml.php" hash="495833a35273a01f49273159a4ea2c28"/><file name="Frontend.php" hash="c6028e91a381e0fe43e6685ec9b26e35"/></dir><file name="Order.php" hash="fdf30df406f857a7d8391e9205bc29f6"/><dir name="Placement"><file name="Cart.php" hash="d154c166acb0859d0ef69a81430969f5"/><file name="Category.php" hash="1175fc97b34388bd988393fc2e9a1734"/><file name="Home.php" hash="57a3fa699e54840d341fcfc15fa5a692"/><file name="Product.php" hash="eefb43d29d3945663926d43bcefb587c"/></dir><file name="Placement.php" hash="350264808b4d8a796213ffc69f7e55af"/><file name="Product.php" hash="966ce180a318f9d675e995ce55a6e7a7"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Configurablechildimage.php" hash="c285087d38df0cdb0d185ed9236edd95"/><file name="Configurablechildprice.php" hash="434b0050a09f54939838980cb8bc5e84"/><file name="Configurablechilds.php" hash="faa8090eade035631f216a1204f8abd4"/><file name="Configurableprice.php" hash="7aff7becec4a7ff8e470aa41ffd4dc71"/><file name="Groupedchildimage.php" hash="73360b50fc0e8081bf2f082ce499e2e7"/><file name="Groupedprice.php" hash="313a4b7c952f3276961c95413ad9edbc"/><file name="Visibility.php" hash="40a6fe7628dae2d75f9ec527d20bbf3c"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="ApiController.php" hash="7cf1ad7c2edec2f311a1e3d62f35eeda"/><file name="IndexController.php" hash="aea543c7dc10403eac6b169034a3cee5"/><file name="MapsController.php" hash="6c8c889436b508edbe0b8bb5c2f13dfd"/></dir><file name="FeedController.php" hash="3755008b1acfd5c8f255163151f4c3dd"/><file name="FrameController.php" hash="124801d72b1190909cc3ae82a820e56c"/></dir><dir name="etc"><file name="adminhtml.xml" hash="5c26be5cd721f4556f7a7796c0fcafab"/><file name="config.xml" hash="cbd3e2ae4bb256693ae38946117dac98"/><file name="system.xml" hash="dfc6cf02c4b98fe18cc9217791cc3528"/></dir><dir name="sql"><dir name="quartic_setup"><file name="mysql4-install-0.1.4.php" hash="fea2b7ac9d15990ff0be165b77c6452e"/><file name="mysql4-upgrade-0.1.0-0.1.4.php" hash="e69d1bbc22950cb6c6a4f4b18c2074e7"/><file name="mysql4-upgrade-0.1.7-0.2.0.php" hash="489a892eee6a5bc06e857f20eca2b0c7"/><file name="mysql4-upgrade-0.2.1-0.2.2.php" hash="7aad767fe500b67610163e54cfad0e62"/><file name="mysql4-upgrade-0.2.2-0.2.3.php" hash="5bb55976425ba1076bb57fc823f4dc80"/><file name="mysql4-upgrade-0.2.3-0.2.4.php" hash="fca0ff6f4ab3c78d69bf44cae2b73657"/><file name="mysql4-upgrade-0.2.5-0.2.6.php" hash="1f6bf21fdb97427bf2c564acaded4c14"/><file name="mysql4-upgrade-0.3.1-0.3.2.php" hash="7d4a6e7a6a86e272b5bf443b8995d48f"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="70059300681d0220e4dff6527b4f35ac"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="quartic.xml" hash="8c068279123fb5def099e468b87ee79c"/></dir><dir name="template"><dir name="quartic"><dir name="api"><file name="dump.phtml" hash="0fa64e9c2de0698a998679e0d2b2f1eb"/></dir><file name="history.phtml" hash="fe445bb739fcad8ae688944c0188fd41"/><file name="maps.phtml" hash="8f0814d506b1ddc5248f7487e2942d17"/><dir name="system"><dir name="config"><file name="button_register.phtml" hash="f19fdea76b46c5699f1387cf462d467b"/></dir></dir><file name="urls.phtml" hash="3d6c3fb06daad5e31dec6d97692750cc"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="quartic.xml" hash="96a0f31aa65b5ea9e6f92aecb246de72"/><file name="quartic.xml" hash="96a0f31aa65b5ea9e6f92aecb246de72"/></dir><dir name="template"><dir name="quartic"><dir name="frame"><file name="cart.phtml" hash="f7867e13e0bebd593adaab509e7bff71"/><file name="category.phtml" hash="f7867e13e0bebd593adaab509e7bff71"/><file name="home.phtml" hash="f7867e13e0bebd593adaab509e7bff71"/><file name="product.phtml" hash="43b7ffa983e9ad9324b623fce82bef6c"/></dir><dir name="getter"><file name="order.phtml" hash="e9a993d30ef73ff8b74bc0301347862a"/><file name="product.phtml" hash="68fc01a6ae190e73da448cd0b45a2066"/></dir><dir name="products"><file name="slt_cart.phtml" hash="b534e86c913c3e5c7a59956980055e9a"/><file name="slt_category.phtml" hash="b534e86c913c3e5c7a59956980055e9a"/><file name="slt_home.phtml" hash="b534e86c913c3e5c7a59956980055e9a"/><file name="slt_product.phtml" hash="b534e86c913c3e5c7a59956980055e9a"/></dir><file name="products.phtml" hash="82c4f8d4f3b223133acf500313d1ea65"/><file name="script.phtml" hash="07f7b8f0a867c694e4aec1fd26af2199"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Quarticon_Quartic.xml" hash="028268cb01d9e01103b62b265b9dcd7a"/></dir></target><target name="magelocale"><dir name="pl_PL"><file name="Quarticon_Quartic.csv" hash="44471c7ccb74cefb37a9197c9df8acee"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><file name="quarticon-icon.png" hash="75db9de222be47ea963f5432ef8b3ef3"/></dir><file name="quartic.css" hash="9fef6b352df11c73f1ea3e33041e5fa9"/></dir></dir></dir></target><target name="mage"><dir name="var"><file name="quartic" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Quarticon_Quartic</name>
4
+ <version>1.0.8</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/academic.php">Academic Free License (AFL)</license>
7
  <channel>community</channel>
10
  <description>Recommend - personalized product recommendations, by QuarticON.com</description>
11
  <notes>The extension integrates your store with Quartic platform.</notes>
12
  <authors><author><name>QuarticON</name><user>quarticon</user><email>contact@quarticon.com</email></author></authors>
13
+ <date>2016-04-05</date>
14
+ <time>11:13:53</time>
15
+ <contents><target name="magecommunity"><dir name="Quarticon"><dir name="Quartic"><dir name="Block"><dir name="Adminhtml"><dir name="Api"><file name="Dump.php" hash="6d90575698aeb92c20b7ba8db38fd8d4"/></dir><dir name="History"><file name="Grid.php" hash="a32fe8ab7e02f309ca99b42f18af803b"/></dir><file name="History.php" hash="6d552d7d7a7f404b4ed5a816977b2dc8"/><dir name="Maps"><file name="Grid.php" hash="58f158db6a9bb4ccf702a848b918d333"/><dir name="Renderer"><file name="Input.php" hash="a209bbe5b71291c1b3f5f5994fbf5e2f"/><file name="Select.php" hash="0318c06d7f4b62c11800b4ffe4aa62bc"/></dir></dir><file name="Maps.php" hash="9744bd8300dac3e98d089ecf70faa6a2"/><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Button.php" hash="b9df45e6eb248d41386cb5768396c2ee"/><file name="Placement.php" hash="08810176b93fdd32948b22d15dae3418"/><file name="Register.php" hash="3098ec89d046749ec94aae5fe7b74b49"/><file name="Text.php" hash="1715cb301736f5491399ceb57a7fb510"/></dir><file name="Fieldset.php" hash="29fc8b5212bd5d2c825b55beb9e08dd0"/></dir></dir></dir><dir name="Urls"><file name="Grid.php" hash="e104ebebd5ce12f49b1003068f6c40a7"/></dir><file name="Urls.php" hash="6e4bb1a3dbb25174cd9f7226a7eb3e2a"/></dir><file name="Box.php" hash="67ddbd72ae1c06dfa307bd8d6c00ae4f"/><dir name="Frame"><file name="Cart.php" hash="438a729fe07cc629693f06abe431dff3"/><file name="Category.php" hash="068d3d1062c005482bdbed623d6cf136"/><file name="Home.php" hash="475eae5b390abc205ec9a65a0d8c13ad"/><file name="Product.php" hash="e0854d2407b9048758e47e1dd7d70d94"/></dir><dir name="Getter"><file name="Cart.php" hash="d2b99e59220a32f92596033813698069"/><file name="Order.php" hash="0c13b0eb560fb95e1e73d5fd9689f8b4"/><file name="Product.php" hash="b267c9dbecea690be8aa3d028ce38d75"/></dir><file name="Products.php" hash="282af5d3242c8f13d90dfc19067fc2f7"/><file name="Script.php" hash="4e1173d214e331e68db7f8b3313d4ad6"/></dir><dir name="Helper"><file name="Data.php" hash="5ddf57e608f89502a1c396f40cdbae66"/></dir><dir name="Model"><dir name="Adapter"><file name="Writer.php" hash="66e2f2649ac3ec3f8e8878a3e595ce3c"/></dir><file name="Attribute.php" hash="0e2918e9bb12bae57b63b67b7b048f49"/><file name="Catalog.php" hash="2e0eff970755b82ab1b76e2fe9a5b893"/><dir name="Client"><file name="AbstractCurl.php" hash="dd0e0ddc0885c8224a13a563ab8759bd"/><file name="Api.php" hash="5c36fa2eed71784e3ef3a82c4767b66d"/><dir name="Resource"><file name="Curl.php" hash="07924c032361218ebf4390a61442c30f"/></dir></dir><file name="Config.php" hash="9f30730756e93085b78133df24c9ef63"/><file name="Cron.php" hash="11876b32701bad001efcbc8cf56ed608"/><file name="Frame.php" hash="073932bb3116a30a269fbe94cb019225"/><file name="History.php" hash="451b494fdd77277b235d2a0d52fcc99c"/><dir name="Insert"><file name="Cart.php" hash="c668360217730c627875560add9ad033"/><file name="Category.php" hash="313ec107fd93bbf07ad40cf754c97197"/><file name="Home.php" hash="ad89be2ba8cdd83827d9d261c056620e"/><file name="Product.php" hash="8d4609828965cc210b83094c157af22d"/></dir><file name="Insert.php" hash="3eac4d73c5d92c077a22106cd8a31651"/><file name="Maps.php" hash="772431aac9f57decc072c91f580ec3f3"/><dir name="Mysql4"><dir name="History"><file name="Collection.php" hash="16c997ad5b0206b64392d64d9986fb40"/></dir><file name="History.php" hash="10ff5200887a7c12cb9b0312acc3a4c5"/><dir name="Maps"><file name="Collection.php" hash="e5a6067327d75240ccf42fc5397332bf"/></dir><file name="Maps.php" hash="bd3dc9f67a482c2f475c1d651abd274a"/><dir name="Placement"><file name="Collection.php" hash="95ac7e3641bb395b3c518b56b85a4985"/></dir><file name="Placement.php" hash="cfaf72514c2cebc604bb14bd79966989"/></dir><dir name="Observer"><file name="Adminhtml.php" hash="98e026fd64715ea2ca5ace77591f58ae"/><file name="Frontend.php" hash="c6028e91a381e0fe43e6685ec9b26e35"/></dir><file name="Order.php" hash="fdf30df406f857a7d8391e9205bc29f6"/><dir name="Placement"><file name="Cart.php" hash="d154c166acb0859d0ef69a81430969f5"/><file name="Category.php" hash="1175fc97b34388bd988393fc2e9a1734"/><file name="Home.php" hash="57a3fa699e54840d341fcfc15fa5a692"/><file name="Product.php" hash="eefb43d29d3945663926d43bcefb587c"/></dir><file name="Placement.php" hash="350264808b4d8a796213ffc69f7e55af"/><file name="Product.php" hash="69d81e0a99d6b5576a36d15a92404231"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Configurablechildimage.php" hash="c285087d38df0cdb0d185ed9236edd95"/><file name="Configurablechildprice.php" hash="434b0050a09f54939838980cb8bc5e84"/><file name="Configurablechilds.php" hash="faa8090eade035631f216a1204f8abd4"/><file name="Configurableprice.php" hash="7aff7becec4a7ff8e470aa41ffd4dc71"/><file name="Groupedchildimage.php" hash="73360b50fc0e8081bf2f082ce499e2e7"/><file name="Groupedprice.php" hash="313a4b7c952f3276961c95413ad9edbc"/><file name="Visibility.php" hash="40a6fe7628dae2d75f9ec527d20bbf3c"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="ApiController.php" hash="379e216283ba7b24cb91fcad3bc50fe2"/><file name="IndexController.php" hash="bfa43997a5edde51cc5f0c08fb5a4baf"/><file name="MapsController.php" hash="7c56718d0dcda4e43e0c67c1d8765065"/></dir><file name="FeedController.php" hash="19716b631bedfe0d16d132e004dee9ef"/><file name="FrameController.php" hash="124801d72b1190909cc3ae82a820e56c"/></dir><dir name="etc"><file name="adminhtml.xml" hash="aba68387e0e64d554b1b2c088f620528"/><file name="config.xml" hash="106cdec8d5fd17c430e715cfb2693343"/><file name="system.xml" hash="08639392edb42abb309a158a2d6240fe"/></dir><dir name="sql"><dir name="quartic_setup"><file name="mysql4-install-0.1.4.php" hash="fea2b7ac9d15990ff0be165b77c6452e"/><file name="mysql4-upgrade-0.1.0-0.1.4.php" hash="e69d1bbc22950cb6c6a4f4b18c2074e7"/><file name="mysql4-upgrade-0.1.7-0.2.0.php" hash="489a892eee6a5bc06e857f20eca2b0c7"/><file name="mysql4-upgrade-0.2.1-0.2.2.php" hash="7aad767fe500b67610163e54cfad0e62"/><file name="mysql4-upgrade-0.2.2-0.2.3.php" hash="5bb55976425ba1076bb57fc823f4dc80"/><file name="mysql4-upgrade-0.2.3-0.2.4.php" hash="fca0ff6f4ab3c78d69bf44cae2b73657"/><file name="mysql4-upgrade-0.2.5-0.2.6.php" hash="1f6bf21fdb97427bf2c564acaded4c14"/><file name="mysql4-upgrade-0.3.1-0.3.2.php" hash="7d4a6e7a6a86e272b5bf443b8995d48f"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="70059300681d0220e4dff6527b4f35ac"/><file name="mysql4-upgrade-1.0.3-1.0.8.php" hash="1bdba92d832580a7821585c4ad84a644"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="quartic.xml" hash="12f7e42b8fa9a7ab31e6f78f34bf7bd4"/></dir><dir name="template"><dir name="quartic"><dir name="api"><file name="dump.phtml" hash="0fa64e9c2de0698a998679e0d2b2f1eb"/></dir><file name="history.phtml" hash="fe445bb739fcad8ae688944c0188fd41"/><file name="maps.phtml" hash="8f0814d506b1ddc5248f7487e2942d17"/><dir name="system"><dir name="config"><file name="button_register.phtml" hash="f19fdea76b46c5699f1387cf462d467b"/></dir></dir><file name="urls.phtml" hash="3d6c3fb06daad5e31dec6d97692750cc"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="quartic.xml" hash="96a0f31aa65b5ea9e6f92aecb246de72"/><file name="quartic.xml" hash="96a0f31aa65b5ea9e6f92aecb246de72"/></dir><dir name="template"><dir name="quartic"><dir name="frame"><file name="cart.phtml" hash="f7867e13e0bebd593adaab509e7bff71"/><file name="category.phtml" hash="f7867e13e0bebd593adaab509e7bff71"/><file name="home.phtml" hash="f7867e13e0bebd593adaab509e7bff71"/><file name="product.phtml" hash="43b7ffa983e9ad9324b623fce82bef6c"/></dir><dir name="getter"><file name="order.phtml" hash="e9a993d30ef73ff8b74bc0301347862a"/><file name="product.phtml" hash="68fc01a6ae190e73da448cd0b45a2066"/></dir><dir name="products"><file name="slt_cart.phtml" hash="b534e86c913c3e5c7a59956980055e9a"/><file name="slt_category.phtml" hash="b534e86c913c3e5c7a59956980055e9a"/><file name="slt_home.phtml" hash="b534e86c913c3e5c7a59956980055e9a"/><file name="slt_product.phtml" hash="b534e86c913c3e5c7a59956980055e9a"/></dir><file name="products.phtml" hash="82c4f8d4f3b223133acf500313d1ea65"/><file name="script.phtml" hash="07f7b8f0a867c694e4aec1fd26af2199"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Quarticon_Quartic.xml" hash="028268cb01d9e01103b62b265b9dcd7a"/></dir></target><target name="magelocale"><dir name="pl_PL"><file name="Quarticon_Quartic.csv" hash="44471c7ccb74cefb37a9197c9df8acee"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><file name="quarticon-icon.png" hash="75db9de222be47ea963f5432ef8b3ef3"/></dir><file name="quartic.css" hash="9fef6b352df11c73f1ea3e33041e5fa9"/></dir></dir></dir></target><target name="mage"><dir name="var"><file name="quartic" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>