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 +1 -0
- app/code/community/Quarticon/Quartic/Block/Adminhtml/System/Config/Form/Field/Placement.php +13 -2
- app/code/community/Quarticon/Quartic/Block/Adminhtml/System/Config/Form/Field/Text.php +12 -1
- app/code/community/Quarticon/Quartic/Block/Getter/Order.php +0 -2
- app/code/community/Quarticon/Quartic/Helper/Data.php +0 -17
- app/code/community/Quarticon/Quartic/Model/Client/Api.php +12 -8
- app/code/community/Quarticon/Quartic/Model/Cron.php +112 -103
- app/code/community/Quarticon/Quartic/Model/Frame.php +4 -7
- app/code/community/Quarticon/Quartic/Model/Observer/Adminhtml.php +2 -0
- app/code/community/Quarticon/Quartic/Model/Product.php +43 -25
- app/code/community/Quarticon/Quartic/controllers/Adminhtml/ApiController.php +5 -0
- app/code/community/Quarticon/Quartic/controllers/Adminhtml/IndexController.php +5 -0
- app/code/community/Quarticon/Quartic/controllers/Adminhtml/MapsController.php +5 -0
- app/code/community/Quarticon/Quartic/controllers/FeedController.php +29 -29
- app/code/community/Quarticon/Quartic/etc/adminhtml.xml +2 -2
- app/code/community/Quarticon/Quartic/etc/config.xml +29 -13
- app/code/community/Quarticon/Quartic/etc/system.xml +2 -2
- app/code/community/Quarticon/Quartic/sql/quartic_setup/mysql4-upgrade-1.0.3-1.0.8.php +47 -0
- app/design/adminhtml/default/default/layout/quartic.xml +8 -8
- package.xml +4 -4
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 |
-
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
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 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
$
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
$mem_writer->endElement();
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
$mem_writer->endElement();
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
$mem_writer->
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
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 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
}
|
100 |
-
$i++;
|
101 |
}
|
102 |
-
|
103 |
-
$mem_writer->endElement();
|
104 |
-
unset($p);
|
105 |
}
|
106 |
|
107 |
-
$
|
108 |
-
|
109 |
-
unset($collection);
|
110 |
}
|
111 |
|
112 |
-
|
113 |
-
$writer->
|
114 |
-
$
|
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 |
-
$
|
39 |
-
$idsA = array();
|
40 |
foreach($items as $item) {
|
41 |
-
$
|
42 |
-
$idsA[$id] = $id;
|
43 |
}
|
44 |
-
$
|
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,
|
164 |
}
|
165 |
// temporary force price for simple product that should show price from it's parent configurable
|
166 |
-
|
167 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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,
|
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 |
-
|
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 |
-
|
|
|
|
|
196 |
}
|
197 |
if($groupedChildRedirect == 1) {
|
198 |
// temporary force url for simple product that should be redirected to it's parent grouped
|
199 |
-
|
|
|
|
|
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' =>
|
247 |
-
'old_price' =>
|
248 |
'link' => $product->getProductUrl(),
|
249 |
-
'categories' => $this->getCategories($
|
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 |
-
|
|
|
417 |
}
|
418 |
}
|
419 |
|
420 |
public function getPriceIncludingTax($product)
|
421 |
{
|
422 |
-
|
|
|
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,
|
|
|
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 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
|
|
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 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
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>
|
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>
|
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 |
</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 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
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>
|
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>
|
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 |
-
<
|
11 |
<reference name="content">
|
12 |
<block type="quartic/adminhtml_urls" name="quartic_urls" />
|
13 |
</reference>
|
14 |
-
</
|
15 |
-
<
|
16 |
<reference name="content">
|
17 |
<block type="quartic/adminhtml_maps" name="quartic_maps" />
|
18 |
</reference>
|
19 |
-
</
|
20 |
-
<
|
21 |
<reference name="content">
|
22 |
<block type="quartic/adminhtml_history" name="quartic_history" />
|
23 |
</reference>
|
24 |
-
</
|
25 |
-
<
|
26 |
<reference name="content">
|
27 |
<block type="quartic/adminhtml_api_dump" name="quartic_result" />
|
28 |
</reference>
|
29 |
-
</
|
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.
|
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-
|
14 |
-
<time>13:
|
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="
|
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>
|