Version Notes
Currently active are modules for BPAY, direct deposit, Australia Post, the addition of regions and postcodes, and the addition of ABN and phone number to the general configuration values (although currently not in use). Also supports creating product information feeds for the Shopbot, Getprice and MyShopping services.
Download this release
Release Info
Developer | Magento Core Team |
Extension | Fontis_Australia |
Version | 2.0.7 |
Comparing to | |
See all releases |
Code changes from version 2.0.4 to 2.0.7
- app/code/community/Fontis/Australia/Model/Config/ProductAttributes.php +50 -0
- app/code/community/Fontis/Australia/Model/Getprice/Child.php +49 -1
- app/code/community/Fontis/Australia/Model/Getprice/Cron.php +35 -39
- app/code/community/Fontis/Australia/Model/Myshopping/Child.php +52 -7
- app/code/community/Fontis/Australia/Model/Myshopping/Cron.php +36 -37
- app/code/community/Fontis/Australia/Model/Shipping/Carrier/Australiapost.php +2 -5
- app/code/community/Fontis/Australia/Model/Shopbot/Child.php +53 -8
- app/code/community/Fontis/Australia/Model/Shopbot/Cron.php +35 -42
- app/code/community/Fontis/Australia/etc/config.xml +4 -1
- app/code/community/Fontis/Australia/etc/system.xml +68 -8
- package.xml +4 -4
app/code/community/Fontis/Australia/Model/Config/ProductAttributes.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Fontis Australia Extension
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* @category Fontis
|
16 |
+
* @package Fontis_Australia
|
17 |
+
* @author Tom Greenaway
|
18 |
+
* @copyright Copyright (c) 2010 Fontis Pty. Ltd. (http://www.fontis.com.au)
|
19 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
20 |
+
*/
|
21 |
+
|
22 |
+
/**
|
23 |
+
* List all available product attributes
|
24 |
+
*
|
25 |
+
* @category Fontis
|
26 |
+
* @package Fontis_Australia
|
27 |
+
*/
|
28 |
+
class Fontis_Australia_Model_Config_ProductAttributes {
|
29 |
+
public function toOptionArray() {
|
30 |
+
$eav_config = Mage::getModel('eav/config');
|
31 |
+
$attributes = $eav_config->getEntityAttributeCodes('catalog_product');
|
32 |
+
|
33 |
+
$options = array();
|
34 |
+
$options[0] = "No Attribute";
|
35 |
+
|
36 |
+
foreach($attributes as $att_code)
|
37 |
+
{
|
38 |
+
$attribute = $eav_config->getAttribute('catalog_product', $att_code);
|
39 |
+
Mage::log($attribute);
|
40 |
+
|
41 |
+
if ($att_code != '')
|
42 |
+
{
|
43 |
+
$options[$att_code] = $att_code;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
return $options;
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
app/code/community/Fontis/Australia/Model/Getprice/Child.php
CHANGED
@@ -30,11 +30,58 @@ $store_id = $argv[3];
|
|
30 |
require_once $mage_path . '/app/Mage.php';
|
31 |
Mage::app($store_id);
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
// This array is translated into XML when fed back to the cron parent PHP.
|
34 |
$products = array();
|
35 |
foreach(unserialize($product_ids) as $product_id) {
|
|
|
36 |
// Load product, tax helper and generate final price information
|
37 |
$product = Mage::getModel('catalog/product')->load($product_id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
$tax = Mage::helper('tax');
|
39 |
$final_price = $tax->getPrice($product, $product->getFinalPrice(), true);
|
40 |
|
@@ -77,7 +124,6 @@ foreach(unserialize($product_ids) as $product_id) {
|
|
77 |
$array['category_name'] = Mage::getStoreConfig('fontis_feeds/getpricefeed/defaultcategory');
|
78 |
}
|
79 |
|
80 |
-
//$array['description'] = htmlspecialchars($product->getDescription());
|
81 |
$array['image'] = (string)Mage::helper('catalog/image')->init($product, 'image');
|
82 |
$array['price'] = $final_price;
|
83 |
$array['currency'] = Mage::getStoreConfig('fontis_feeds/getpricefeed/currency');
|
@@ -85,5 +131,7 @@ foreach(unserialize($product_ids) as $product_id) {
|
|
85 |
$products[] = $array;
|
86 |
}
|
87 |
|
|
|
|
|
88 |
// Serialize and print as a string for the cron parent PHP code to grab.
|
89 |
echo json_encode($products);
|
30 |
require_once $mage_path . '/app/Mage.php';
|
31 |
Mage::app($store_id);
|
32 |
|
33 |
+
Mage::log('Fontis/Australia_Model_Getprice_Child: Successfully entered child process');
|
34 |
+
|
35 |
+
$_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'] = $mage_path . "/app/code/community/Fontis/Australia/Model/Getprice/Child.php";
|
36 |
+
|
37 |
+
// Check and assign mode
|
38 |
+
if (Mage::getStoreConfig('fontis_feeds/getpricefeed/include_all_products') == 1) {
|
39 |
+
$include_all = true;
|
40 |
+
} else {
|
41 |
+
$include_all = false;
|
42 |
+
}
|
43 |
+
|
44 |
// This array is translated into XML when fed back to the cron parent PHP.
|
45 |
$products = array();
|
46 |
foreach(unserialize($product_ids) as $product_id) {
|
47 |
+
|
48 |
// Load product, tax helper and generate final price information
|
49 |
$product = Mage::getModel('catalog/product')->load($product_id);
|
50 |
+
|
51 |
+
// Check for overrride attribute
|
52 |
+
// Fetch override attribute
|
53 |
+
$override_attribute_code = Mage::getStoreConfig('fontis_feeds/getpricefeed/custom_filter_attribute');
|
54 |
+
|
55 |
+
Mage::log('Fontis/Australia_Model_Getprice_Child: Override attribute: ' . $override_attribute_code);
|
56 |
+
|
57 |
+
// Check product for that attribute
|
58 |
+
if ($override_attribute_code != '0') {
|
59 |
+
Mage::log('Fontis/Australia_Model_Getprice_Child: Attempting to load attribute value');
|
60 |
+
$attribute_value = $product->getResource()->getAttribute($override_attribute_code)->getFrontend()->getValue($product);
|
61 |
+
Mage::log('Fontis/Australia_Model_Getprice_Child: Attribute value: ' . $attribute_value);
|
62 |
+
|
63 |
+
if ($attribute_value === '' || $attribute_value === 0 || $attribute_value === '0' || strtolower($attribute_value) == 'no') {
|
64 |
+
$override_attribute = false;
|
65 |
+
} else {
|
66 |
+
$override_attribute = true;
|
67 |
+
}
|
68 |
+
} else {
|
69 |
+
Mage::log('Fontis/Australia_Model_Getprice_Child: No override attribute set');
|
70 |
+
$override_attribute = false;
|
71 |
+
}
|
72 |
+
|
73 |
+
// If mode is includeall and override is true don't include this product
|
74 |
+
if ($include_all && $override_attribute) {
|
75 |
+
Mage::log('Fontis/Australia_Model_Getprice_Child: Skipping due to include_all && override_attribute');
|
76 |
+
continue;
|
77 |
+
}
|
78 |
+
|
79 |
+
// If mode is excludeall and override is false don't include this product
|
80 |
+
if (!$include_all && !$override_attribute) {
|
81 |
+
Mage::log('Fontis/Australia_Model_Getprice_Child: Skipping due to !include_all && !override_attribute');
|
82 |
+
continue;
|
83 |
+
}
|
84 |
+
|
85 |
$tax = Mage::helper('tax');
|
86 |
$final_price = $tax->getPrice($product, $product->getFinalPrice(), true);
|
87 |
|
124 |
$array['category_name'] = Mage::getStoreConfig('fontis_feeds/getpricefeed/defaultcategory');
|
125 |
}
|
126 |
|
|
|
127 |
$array['image'] = (string)Mage::helper('catalog/image')->init($product, 'image');
|
128 |
$array['price'] = $final_price;
|
129 |
$array['currency'] = Mage::getStoreConfig('fontis_feeds/getpricefeed/currency');
|
131 |
$products[] = $array;
|
132 |
}
|
133 |
|
134 |
+
Mage::log('Fontis/Australia_Model_Getprice_Child: Finishing child processing. Returning encoded JSON data.');
|
135 |
+
|
136 |
// Serialize and print as a string for the cron parent PHP code to grab.
|
137 |
echo json_encode($products);
|
app/code/community/Fontis/Australia/Model/Getprice/Cron.php
CHANGED
@@ -22,8 +22,7 @@
|
|
22 |
// Callback used by the Magento resource iterator walk() method. Adds a
|
23 |
// product ID to a static array and calls addProductXmlgetPrice() to
|
24 |
// generate XML when the array reaches the batch size.
|
25 |
-
function addProductXmlCallbackGetPrice($args)
|
26 |
-
{
|
27 |
Fontis_Australia_Model_GetPrice_Cron::$accumulator[] = $args['row']['entity_id'];
|
28 |
|
29 |
$length = count(Fontis_Australia_Model_GetPrice_Cron::$accumulator);
|
@@ -34,15 +33,14 @@ function addProductXmlCallbackGetPrice($args)
|
|
34 |
|
35 |
// Runs a subprocesss to create feed XML for the product IDs in the static
|
36 |
// array, then empties the array.
|
37 |
-
function addProductXmlGetPrice()
|
38 |
-
{
|
39 |
$length = count(Fontis_Australia_Model_GetPrice_Cron::$accumulator);
|
40 |
if($length > 0) {
|
41 |
-
Mage::log("Processing product IDs " . Fontis_Australia_Model_GetPrice_Cron::$accumulator[0] .
|
42 |
" to " . Fontis_Australia_Model_GetPrice_Cron::$accumulator[$length - 1]);
|
43 |
$store_id = Fontis_Australia_Model_GetPrice_Cron::$store->getId();
|
44 |
|
45 |
-
$data =
|
46 |
Mage::getBaseDir() . " '" . serialize(Fontis_Australia_Model_GetPrice_Cron::$accumulator) .
|
47 |
"' " . $store_id);
|
48 |
Fontis_Australia_Model_GetPrice_Cron::$accumulator = array();
|
@@ -62,20 +60,19 @@ function addProductXmlGetPrice()
|
|
62 |
}
|
63 |
}
|
64 |
if(!empty($codes)) {
|
65 |
-
Mage::log("Codes: ".implode(",", $codes));
|
66 |
}
|
67 |
} else {
|
68 |
-
Mage::log("Could not unserialize to array:");
|
69 |
Mage::log($data);
|
70 |
Mage::log($array);
|
71 |
}
|
72 |
|
73 |
-
Mage::log(strlen($data) .
|
74 |
}
|
75 |
}
|
76 |
|
77 |
-
class Fontis_Australia_Model_GetPrice_Cron
|
78 |
-
{
|
79 |
const BATCH_SIZE = 100;
|
80 |
|
81 |
public static $doc;
|
@@ -84,13 +81,11 @@ class Fontis_Australia_Model_GetPrice_Cron
|
|
84 |
public static $accumulator;
|
85 |
public static $debugCount = 0;
|
86 |
|
87 |
-
protected function _construct()
|
88 |
-
{
|
89 |
self::$accumulator = array();
|
90 |
}
|
91 |
|
92 |
-
protected function getPath()
|
93 |
-
{
|
94 |
$path = "";
|
95 |
$config_path = Mage::getStoreConfig('fontis_feeds/getpricefeed/output');
|
96 |
|
@@ -103,14 +98,12 @@ class Fontis_Australia_Model_GetPrice_Cron
|
|
103 |
return str_replace('//', '/', $path);
|
104 |
}
|
105 |
|
106 |
-
public function nonstatic()
|
107 |
-
{
|
108 |
self::update();
|
109 |
}
|
110 |
|
111 |
-
public static function update()
|
112 |
-
|
113 |
-
Mage::log('Fontis/Australia_Model_Getprice_Cron: entered update function');
|
114 |
|
115 |
if (Mage::getStoreConfig('fontis_feeds/getpricefeed/active')) {
|
116 |
$io = new Varien_Io_File();
|
@@ -118,41 +111,45 @@ class Fontis_Australia_Model_GetPrice_Cron
|
|
118 |
|
119 |
$io->open(array('path' => self::getPath()));
|
120 |
|
|
|
121 |
foreach(Mage::app()->getStores() as $store) {
|
|
|
122 |
$clean_store_name = str_replace('+', '-', strtolower(urlencode($store->getName())));
|
123 |
-
|
124 |
// Write the entire products xml file:
|
125 |
-
Mage::log('
|
126 |
$products_result = self::getProductsXml($store);
|
127 |
$io->write($clean_store_name . '-products.xml', $products_result['xml']);
|
128 |
-
|
|
|
129 |
// Write the leaf categories xml file:
|
130 |
-
Mage::log('
|
131 |
$categories_result = self::getCategoriesXml($store);
|
132 |
$io->write($clean_store_name . '-categories.xml', $categories_result['xml']);
|
|
|
133 |
|
134 |
// Write for each leaf category, their products xml file:
|
135 |
foreach($categories_result['link_ids'] as $link_id) {
|
136 |
-
Mage::log(
|
137 |
$subcategory_products_result = self::getProductsXml($store, $link_id);
|
138 |
$io->write($clean_store_name . '-products-'.$link_id.'.xml', $subcategory_products_result['xml']);
|
|
|
139 |
}
|
140 |
}
|
141 |
|
142 |
$io->close();
|
143 |
} else {
|
144 |
-
Mage::log('Fontis/Australia_Model_Getprice_Cron:
|
145 |
}
|
146 |
}
|
147 |
|
148 |
-
public function getCategoriesXml($store)
|
149 |
-
{
|
150 |
$clean_store_name = str_replace('+', '-', strtolower(urlencode($store->getName())));
|
151 |
-
|
152 |
$result = array();
|
153 |
$categories = Mage::getModel('catalog/category')->getCollection()
|
154 |
-
|
155 |
-
|
156 |
|
157 |
$categories->load()->getItems();
|
158 |
|
@@ -192,8 +189,7 @@ class Fontis_Australia_Model_GetPrice_Cron
|
|
192 |
return $result;
|
193 |
}
|
194 |
|
195 |
-
public function getProductsXml($store, $cat_id = -1)
|
196 |
-
{
|
197 |
Fontis_Australia_Model_GetPrice_Cron::$store = $store;
|
198 |
$result = array();
|
199 |
|
@@ -203,11 +199,9 @@ class Fontis_Australia_Model_GetPrice_Cron
|
|
203 |
$products->addStoreFilter();
|
204 |
$products->addAttributeToSelect('*');
|
205 |
$products->addAttributeToSelect(array('name', 'price', 'image', 'status', 'manufacturer'), 'left');
|
206 |
-
$products->addAttributeToFilter('
|
|
|
207 |
|
208 |
-
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
|
209 |
-
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
|
210 |
-
|
211 |
if ($cat_id != -1) {
|
212 |
$products->getSelect()->where("e.entity_id IN (
|
213 |
SELECT product_id FROM catalog_category_product WHERE category_id = ".$cat_id."
|
@@ -224,16 +218,18 @@ class Fontis_Australia_Model_GetPrice_Cron
|
|
224 |
self::$doc = new SimpleXMLElement('<store url="' . $storeUrl. '" date="'.$date.'" time="'.$time.'" name="' . $shopName . '"></store>');
|
225 |
self::$root_node = self::$doc->addChild('products');
|
226 |
|
|
|
227 |
Mage::getSingleton('core/resource_iterator')->walk($products->getSelect(), array('addProductXmlCallbackGetPrice'), array('product' => $product));
|
|
|
228 |
// call XML generation function one last time to process remaining batch
|
229 |
addProductXmlGetPrice();
|
|
|
230 |
|
231 |
$result['xml'] = self::formatSimpleXML(self::$doc);
|
232 |
return $result;
|
233 |
}
|
234 |
|
235 |
-
public static function formatSimpleXML($doc)
|
236 |
-
{
|
237 |
$dom = new DOMDocument('1.0');
|
238 |
$dom->preserveWhiteSpace = false;
|
239 |
$dom->formatOutput = true;
|
22 |
// Callback used by the Magento resource iterator walk() method. Adds a
|
23 |
// product ID to a static array and calls addProductXmlgetPrice() to
|
24 |
// generate XML when the array reaches the batch size.
|
25 |
+
function addProductXmlCallbackGetPrice($args) {
|
|
|
26 |
Fontis_Australia_Model_GetPrice_Cron::$accumulator[] = $args['row']['entity_id'];
|
27 |
|
28 |
$length = count(Fontis_Australia_Model_GetPrice_Cron::$accumulator);
|
33 |
|
34 |
// Runs a subprocesss to create feed XML for the product IDs in the static
|
35 |
// array, then empties the array.
|
36 |
+
function addProductXmlGetPrice() {
|
|
|
37 |
$length = count(Fontis_Australia_Model_GetPrice_Cron::$accumulator);
|
38 |
if($length > 0) {
|
39 |
+
Mage::log("Fontis/Australia_Model_Getprice_Cron: Processing product IDs " . Fontis_Australia_Model_GetPrice_Cron::$accumulator[0] .
|
40 |
" to " . Fontis_Australia_Model_GetPrice_Cron::$accumulator[$length - 1]);
|
41 |
$store_id = Fontis_Australia_Model_GetPrice_Cron::$store->getId();
|
42 |
|
43 |
+
$data = shell_exec("php " . Mage::getBaseDir() . "/app/code/community/Fontis/Australia/Model/Getprice/Child.php " .
|
44 |
Mage::getBaseDir() . " '" . serialize(Fontis_Australia_Model_GetPrice_Cron::$accumulator) .
|
45 |
"' " . $store_id);
|
46 |
Fontis_Australia_Model_GetPrice_Cron::$accumulator = array();
|
60 |
}
|
61 |
}
|
62 |
if(!empty($codes)) {
|
63 |
+
Mage::log("Fontis/Australia_Model_Getprice_Cron: Codes: ".implode(",", $codes));
|
64 |
}
|
65 |
} else {
|
66 |
+
Mage::log("Fontis/Australia_Model_Getprice_Cron: Could not unserialize to array:");
|
67 |
Mage::log($data);
|
68 |
Mage::log($array);
|
69 |
}
|
70 |
|
71 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: ' . strlen($data) . ' characters returned');
|
72 |
}
|
73 |
}
|
74 |
|
75 |
+
class Fontis_Australia_Model_GetPrice_Cron {
|
|
|
76 |
const BATCH_SIZE = 100;
|
77 |
|
78 |
public static $doc;
|
81 |
public static $accumulator;
|
82 |
public static $debugCount = 0;
|
83 |
|
84 |
+
protected function _construct() {
|
|
|
85 |
self::$accumulator = array();
|
86 |
}
|
87 |
|
88 |
+
protected function getPath() {
|
|
|
89 |
$path = "";
|
90 |
$config_path = Mage::getStoreConfig('fontis_feeds/getpricefeed/output');
|
91 |
|
98 |
return str_replace('//', '/', $path);
|
99 |
}
|
100 |
|
101 |
+
public function nonstatic() {
|
|
|
102 |
self::update();
|
103 |
}
|
104 |
|
105 |
+
public static function update() {
|
106 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Entered update function');
|
|
|
107 |
|
108 |
if (Mage::getStoreConfig('fontis_feeds/getpricefeed/active')) {
|
109 |
$io = new Varien_Io_File();
|
111 |
|
112 |
$io->open(array('path' => self::getPath()));
|
113 |
|
114 |
+
// Loop through all stores:
|
115 |
foreach(Mage::app()->getStores() as $store) {
|
116 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Processing store: ' . $store->getName());
|
117 |
$clean_store_name = str_replace('+', '-', strtolower(urlencode($store->getName())));
|
118 |
+
|
119 |
// Write the entire products xml file:
|
120 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Generating All Products XML File');
|
121 |
$products_result = self::getProductsXml($store);
|
122 |
$io->write($clean_store_name . '-products.xml', $products_result['xml']);
|
123 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Wrote to file: ' . $clean_store_name . '-products.xml', $products_result['xml']);
|
124 |
+
|
125 |
// Write the leaf categories xml file:
|
126 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Generating Categories XML File');
|
127 |
$categories_result = self::getCategoriesXml($store);
|
128 |
$io->write($clean_store_name . '-categories.xml', $categories_result['xml']);
|
129 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Wrote to file: ' . $clean_store_name . '-categories.xml', $categories_result['xml']);
|
130 |
|
131 |
// Write for each leaf category, their products xml file:
|
132 |
foreach($categories_result['link_ids'] as $link_id) {
|
133 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Generating Product Category XML File: ' . $link_id);
|
134 |
$subcategory_products_result = self::getProductsXml($store, $link_id);
|
135 |
$io->write($clean_store_name . '-products-'.$link_id.'.xml', $subcategory_products_result['xml']);
|
136 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Wrote to file: ' . $clean_store_name . '-products-'.$link_id.'.xml', $subcategory_products_result['xml']);
|
137 |
}
|
138 |
}
|
139 |
|
140 |
$io->close();
|
141 |
} else {
|
142 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Disabled');
|
143 |
}
|
144 |
}
|
145 |
|
146 |
+
public function getCategoriesXml($store) {
|
|
|
147 |
$clean_store_name = str_replace('+', '-', strtolower(urlencode($store->getName())));
|
148 |
+
|
149 |
$result = array();
|
150 |
$categories = Mage::getModel('catalog/category')->getCollection()
|
151 |
+
->setStoreId($store->getId())
|
152 |
+
->addAttributeToFilter('is_active', 1);
|
153 |
|
154 |
$categories->load()->getItems();
|
155 |
|
189 |
return $result;
|
190 |
}
|
191 |
|
192 |
+
public function getProductsXml($store, $cat_id = -1) {
|
|
|
193 |
Fontis_Australia_Model_GetPrice_Cron::$store = $store;
|
194 |
$result = array();
|
195 |
|
199 |
$products->addStoreFilter();
|
200 |
$products->addAttributeToSelect('*');
|
201 |
$products->addAttributeToSelect(array('name', 'price', 'image', 'status', 'manufacturer'), 'left');
|
202 |
+
$products->addAttributeToFilter('status', 1);
|
203 |
+
$products->addAttributeToFilter('visibility', 4);
|
204 |
|
|
|
|
|
|
|
205 |
if ($cat_id != -1) {
|
206 |
$products->getSelect()->where("e.entity_id IN (
|
207 |
SELECT product_id FROM catalog_category_product WHERE category_id = ".$cat_id."
|
218 |
self::$doc = new SimpleXMLElement('<store url="' . $storeUrl. '" date="'.$date.'" time="'.$time.'" name="' . $shopName . '"></store>');
|
219 |
self::$root_node = self::$doc->addChild('products');
|
220 |
|
221 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Iterating: ' . $products->getSize() . ' products...');
|
222 |
Mage::getSingleton('core/resource_iterator')->walk($products->getSelect(), array('addProductXmlCallbackGetPrice'), array('product' => $product));
|
223 |
+
|
224 |
// call XML generation function one last time to process remaining batch
|
225 |
addProductXmlGetPrice();
|
226 |
+
Mage::log('Fontis/Australia_Model_Getprice_Cron: Iteration complete');
|
227 |
|
228 |
$result['xml'] = self::formatSimpleXML(self::$doc);
|
229 |
return $result;
|
230 |
}
|
231 |
|
232 |
+
public static function formatSimpleXML($doc) {
|
|
|
233 |
$dom = new DOMDocument('1.0');
|
234 |
$dom->preserveWhiteSpace = false;
|
235 |
$dom->formatOutput = true;
|
app/code/community/Fontis/Australia/Model/Myshopping/Child.php
CHANGED
@@ -30,11 +30,58 @@ $store_id = $argv[3];
|
|
30 |
require_once $mage_path . '/app/Mage.php';
|
31 |
Mage::app($store_id);
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
// This array is translated into XML when fed back to the cron parent PHP.
|
34 |
$products = array();
|
35 |
foreach(unserialize($product_ids) as $product_id) {
|
|
|
36 |
// Load product, tax helper and generate final price information
|
37 |
$product = Mage::getModel('catalog/product')->load($product_id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
$tax = Mage::helper('tax');
|
39 |
$final_price = $tax->getPrice($product, $product->getFinalPrice(), true);
|
40 |
|
@@ -56,9 +103,9 @@ foreach(unserialize($product_ids) as $product_id) {
|
|
56 |
$array['Category'] = utf8_encode($c->getName());
|
57 |
|
58 |
$loaded_categories = Mage::getModel('catalog/category')
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
|
63 |
foreach($loaded_categories as $loaded_category) {
|
64 |
$array['Category'] = utf8_encode($loaded_category->getName());
|
@@ -85,10 +132,8 @@ foreach(unserialize($product_ids) as $product_id) {
|
|
85 |
}
|
86 |
|
87 |
$linkedAttributes = @unserialize(Mage::getStoreConfig('fontis_feeds/myshoppingfeed/m_to_xml_attributes', $store_id));
|
88 |
-
if(!empty($linkedAttributes))
|
89 |
-
|
90 |
-
foreach($linkedAttributes as $la)
|
91 |
-
{
|
92 |
$magentoAtt = $la['magento'];
|
93 |
$xmlAtt = $la['xmlfeed'];
|
94 |
|
30 |
require_once $mage_path . '/app/Mage.php';
|
31 |
Mage::app($store_id);
|
32 |
|
33 |
+
Mage::log('Fontis/Australia_Model_Myshopping_Child: Successfully entered child process');
|
34 |
+
|
35 |
+
$_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'] = $mage_path . "/app/code/community/Fontis/Australia/Model/Myshopping/Child.php";
|
36 |
+
|
37 |
+
// Check and assign mode
|
38 |
+
if (Mage::getStoreConfig('fontis_feeds/myshoppingfeed/include_all_products') == 1) {
|
39 |
+
$include_all = true;
|
40 |
+
} else {
|
41 |
+
$include_all = false;
|
42 |
+
}
|
43 |
+
|
44 |
// This array is translated into XML when fed back to the cron parent PHP.
|
45 |
$products = array();
|
46 |
foreach(unserialize($product_ids) as $product_id) {
|
47 |
+
|
48 |
// Load product, tax helper and generate final price information
|
49 |
$product = Mage::getModel('catalog/product')->load($product_id);
|
50 |
+
|
51 |
+
// Check for overrride attribute
|
52 |
+
// Fetch override attribute
|
53 |
+
$override_attribute_code = Mage::getStoreConfig('fontis_feeds/myshoppingfeed/custom_filter_attribute');
|
54 |
+
|
55 |
+
Mage::log('Fontis/Australia_Model_Myshopping_Child: Override attribute: ' . $override_attribute_code);
|
56 |
+
|
57 |
+
// Check product for that attribute
|
58 |
+
if ($override_attribute_code != '0') {
|
59 |
+
Mage::log('Fontis/Australia_Model_Myshopping_Child: Attempting to load attribute value');
|
60 |
+
$attribute_value = $product->getResource()->getAttribute($override_attribute_code)->getFrontend()->getValue($product);
|
61 |
+
Mage::log('Fontis/Australia_Model_Myshopping_Child: Attribute value: ' . $attribute_value);
|
62 |
+
|
63 |
+
if ($attribute_value === '' || $attribute_value === 0 || $attribute_value === '0' || strtolower($attribute_value) == 'no') {
|
64 |
+
$override_attribute = false;
|
65 |
+
} else {
|
66 |
+
$override_attribute = true;
|
67 |
+
}
|
68 |
+
} else {
|
69 |
+
Mage::log('Fontis/Australia_Model_Myshopping_Child: No override attribute set');
|
70 |
+
$override_attribute = false;
|
71 |
+
}
|
72 |
+
|
73 |
+
// If mode is includeall and override is true don't include this product
|
74 |
+
if ($include_all && $override_attribute) {
|
75 |
+
Mage::log('Fontis/Australia_Model_Myshopping_Child: Skipping due to include_all && override_attribute');
|
76 |
+
continue;
|
77 |
+
}
|
78 |
+
|
79 |
+
// If mode is excludeall and override is false don't include this product
|
80 |
+
if (!$include_all && !$override_attribute) {
|
81 |
+
Mage::log('Fontis/Australia_Model_Myshopping_Child: Skipping due to !include_all && !override_attribute');
|
82 |
+
continue;
|
83 |
+
}
|
84 |
+
|
85 |
$tax = Mage::helper('tax');
|
86 |
$final_price = $tax->getPrice($product, $product->getFinalPrice(), true);
|
87 |
|
103 |
$array['Category'] = utf8_encode($c->getName());
|
104 |
|
105 |
$loaded_categories = Mage::getModel('catalog/category')
|
106 |
+
->getCollection()
|
107 |
+
->addIdFilter(array($c->getId()))
|
108 |
+
->addAttributeToSelect(array('name'), 'inner')->load();
|
109 |
|
110 |
foreach($loaded_categories as $loaded_category) {
|
111 |
$array['Category'] = utf8_encode($loaded_category->getName());
|
132 |
}
|
133 |
|
134 |
$linkedAttributes = @unserialize(Mage::getStoreConfig('fontis_feeds/myshoppingfeed/m_to_xml_attributes', $store_id));
|
135 |
+
if(!empty($linkedAttributes)) {
|
136 |
+
foreach($linkedAttributes as $la) {
|
|
|
|
|
137 |
$magentoAtt = $la['magento'];
|
138 |
$xmlAtt = $la['xmlfeed'];
|
139 |
|
app/code/community/Fontis/Australia/Model/Myshopping/Cron.php
CHANGED
@@ -22,9 +22,8 @@
|
|
22 |
// Callback used by the Magento resource iterator walk() method. Adds a
|
23 |
// product ID to a static array and calls addProductXmlMyShopping() to
|
24 |
// generate XML when the array reaches the batch size.
|
25 |
-
function addProductXmlCallbackMyShopping($args)
|
26 |
-
|
27 |
-
Fontis_Australia_Model_MyShopping_Cron::$accumulator[] = $args['row']['entity_id'];
|
28 |
|
29 |
$length = count(Fontis_Australia_Model_MyShopping_Cron::$accumulator);
|
30 |
if($length >= Fontis_Australia_Model_MyShopping_Cron::BATCH_SIZE) {
|
@@ -34,19 +33,18 @@ function addProductXmlCallbackMyShopping($args)
|
|
34 |
|
35 |
// Runs a subprocesss to create feed XML for the product IDs in the static
|
36 |
// array, then empties the array.
|
37 |
-
function addProductXmlMyShopping()
|
38 |
-
{
|
39 |
$length = count(Fontis_Australia_Model_MyShopping_Cron::$accumulator);
|
40 |
if($length > 0) {
|
41 |
-
Mage::log("Processing product IDs " . Fontis_Australia_Model_MyShopping_Cron::$accumulator[0] .
|
42 |
" to " . Fontis_Australia_Model_MyShopping_Cron::$accumulator[$length - 1]);
|
43 |
$store_id = Fontis_Australia_Model_MyShopping_Cron::$store->getId();
|
44 |
|
45 |
-
$data =
|
46 |
Mage::getBaseDir() . " '" . serialize(Fontis_Australia_Model_MyShopping_Cron::$accumulator) .
|
47 |
"' " . $store_id);
|
48 |
Fontis_Australia_Model_MyShopping_Cron::$accumulator = array();
|
49 |
-
|
50 |
$array = json_decode($data, true);
|
51 |
|
52 |
if(is_array($array)) {
|
@@ -62,35 +60,32 @@ function addProductXmlMyShopping()
|
|
62 |
}
|
63 |
}
|
64 |
if(!empty($codes)) {
|
65 |
-
Mage::log("Codes: ".implode(",", $codes));
|
66 |
}
|
67 |
} else {
|
68 |
-
Mage::log("Could not unserialize to array:");
|
69 |
Mage::log($data);
|
70 |
Mage::log($array);
|
71 |
}
|
72 |
-
|
73 |
-
Mage::log(strlen($data) . " characters returned");
|
74 |
}
|
75 |
}
|
76 |
|
77 |
-
class Fontis_Australia_Model_MyShopping_Cron
|
78 |
-
{
|
79 |
const BATCH_SIZE = 100;
|
80 |
-
|
81 |
public static $doc;
|
82 |
public static $root_node;
|
83 |
public static $store;
|
84 |
public static $accumulator;
|
85 |
public static $debugCount = 0;
|
86 |
|
87 |
-
protected function _construct()
|
88 |
-
{
|
89 |
self::$accumulator = array();
|
90 |
}
|
91 |
|
92 |
-
protected function getPath()
|
93 |
-
{
|
94 |
$path = "";
|
95 |
$config_path = Mage::getStoreConfig('fontis_feeds/myshoppingfeed/output');
|
96 |
|
@@ -103,39 +98,43 @@ class Fontis_Australia_Model_MyShopping_Cron
|
|
103 |
return str_replace('//', '/', $path);
|
104 |
}
|
105 |
|
106 |
-
public
|
107 |
-
|
108 |
-
|
|
|
|
|
|
|
|
|
109 |
if (Mage::getStoreConfig('fontis_feeds/myshoppingfeed/active')) {
|
110 |
$io = new Varien_Io_File();
|
111 |
$io->setAllowCreateFolders(true);
|
112 |
|
113 |
$io->open(array('path' => self::getPath()));
|
114 |
|
|
|
115 |
foreach(Mage::app()->getStores() as $store) {
|
116 |
-
Mage::log('
|
117 |
$clean_store_name = str_replace('+', '-', strtolower(urlencode($store->getName())));
|
|
|
118 |
Fontis_Australia_Model_MyShopping_Cron::$debugCount = 0;
|
119 |
-
$products_result = self::getProductsXml($store);
|
120 |
|
121 |
// Write the entire products xml file:
|
|
|
|
|
|
|
122 |
$filename = $clean_store_name . '-products.xml';
|
123 |
$io->write($filename, $products_result['xml']);
|
124 |
-
Mage::log(
|
125 |
. " records to " . self::getPath() . $filename);
|
126 |
}
|
127 |
|
128 |
$io->close();
|
|
|
|
|
129 |
}
|
130 |
}
|
131 |
|
132 |
-
public function
|
133 |
-
{
|
134 |
-
self::update();
|
135 |
-
}
|
136 |
-
|
137 |
-
public function getProductsXml($store)
|
138 |
-
{
|
139 |
Mage::log('new getproductsxml');
|
140 |
Fontis_Australia_Model_MyShopping_Cron::$store = $store;
|
141 |
|
@@ -146,9 +145,8 @@ class Fontis_Australia_Model_MyShopping_Cron
|
|
146 |
$products->setStoreId($store);
|
147 |
$products->addStoreFilter();
|
148 |
$products->addAttributeToSelect('*');
|
149 |
-
|
150 |
-
|
151 |
-
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
|
152 |
|
153 |
$storeUrl = $store->getBaseUrl();
|
154 |
$shopName = $store->getName();
|
@@ -158,11 +156,12 @@ class Fontis_Australia_Model_MyShopping_Cron
|
|
158 |
self::$doc = new SimpleXMLElement('<productset></productset>');
|
159 |
self::$root_node = self::$doc;
|
160 |
|
161 |
-
Mage::log(
|
162 |
Mage::getSingleton('core/resource_iterator')->walk($products->getSelect(), array('addProductXmlCallbackMyShopping'));
|
|
|
163 |
// call XML generation function one last time to process remaining batch
|
164 |
addProductXmlMyShopping();
|
165 |
-
Mage::log('
|
166 |
|
167 |
$dom = new DOMDocument('1.0');
|
168 |
$dom->preserveWhiteSpace = false;
|
22 |
// Callback used by the Magento resource iterator walk() method. Adds a
|
23 |
// product ID to a static array and calls addProductXmlMyShopping() to
|
24 |
// generate XML when the array reaches the batch size.
|
25 |
+
function addProductXmlCallbackMyShopping($args) {
|
26 |
+
Fontis_Australia_Model_MyShopping_Cron::$accumulator[] = $args['row']['entity_id'];
|
|
|
27 |
|
28 |
$length = count(Fontis_Australia_Model_MyShopping_Cron::$accumulator);
|
29 |
if($length >= Fontis_Australia_Model_MyShopping_Cron::BATCH_SIZE) {
|
33 |
|
34 |
// Runs a subprocesss to create feed XML for the product IDs in the static
|
35 |
// array, then empties the array.
|
36 |
+
function addProductXmlMyShopping() {
|
|
|
37 |
$length = count(Fontis_Australia_Model_MyShopping_Cron::$accumulator);
|
38 |
if($length > 0) {
|
39 |
+
Mage::log("Fontis/Australia_Model_Myshopping_Cron: Processing product IDs " . Fontis_Australia_Model_MyShopping_Cron::$accumulator[0] .
|
40 |
" to " . Fontis_Australia_Model_MyShopping_Cron::$accumulator[$length - 1]);
|
41 |
$store_id = Fontis_Australia_Model_MyShopping_Cron::$store->getId();
|
42 |
|
43 |
+
$data = shell_exec("php " . Mage::getBaseDir() . "/app/code/community/Fontis/Australia/Model/Myshopping/Child.php " .
|
44 |
Mage::getBaseDir() . " '" . serialize(Fontis_Australia_Model_MyShopping_Cron::$accumulator) .
|
45 |
"' " . $store_id);
|
46 |
Fontis_Australia_Model_MyShopping_Cron::$accumulator = array();
|
47 |
+
|
48 |
$array = json_decode($data, true);
|
49 |
|
50 |
if(is_array($array)) {
|
60 |
}
|
61 |
}
|
62 |
if(!empty($codes)) {
|
63 |
+
Mage::log("Fontis/Australia_Model_Myshopping_Cron: Codes: ".implode(",", $codes));
|
64 |
}
|
65 |
} else {
|
66 |
+
Mage::log("Fontis/Australia_Model_Myshopping_Cron: Could not unserialize to array:");
|
67 |
Mage::log($data);
|
68 |
Mage::log($array);
|
69 |
}
|
70 |
+
|
71 |
+
Mage::log("Fontis/Australia_Model_Myshopping_Cron: " . strlen($data) . " characters returned");
|
72 |
}
|
73 |
}
|
74 |
|
75 |
+
class Fontis_Australia_Model_MyShopping_Cron {
|
|
|
76 |
const BATCH_SIZE = 100;
|
77 |
+
|
78 |
public static $doc;
|
79 |
public static $root_node;
|
80 |
public static $store;
|
81 |
public static $accumulator;
|
82 |
public static $debugCount = 0;
|
83 |
|
84 |
+
protected function _construct() {
|
|
|
85 |
self::$accumulator = array();
|
86 |
}
|
87 |
|
88 |
+
protected function getPath() {
|
|
|
89 |
$path = "";
|
90 |
$config_path = Mage::getStoreConfig('fontis_feeds/myshoppingfeed/output');
|
91 |
|
98 |
return str_replace('//', '/', $path);
|
99 |
}
|
100 |
|
101 |
+
public function nonstatic() {
|
102 |
+
self::update();
|
103 |
+
}
|
104 |
+
|
105 |
+
public static function update() {
|
106 |
+
Mage::log('Fontis/Australia_Model_MyShopping_Cron: Entered update function');
|
107 |
+
|
108 |
if (Mage::getStoreConfig('fontis_feeds/myshoppingfeed/active')) {
|
109 |
$io = new Varien_Io_File();
|
110 |
$io->setAllowCreateFolders(true);
|
111 |
|
112 |
$io->open(array('path' => self::getPath()));
|
113 |
|
114 |
+
// Loop through all stores:
|
115 |
foreach(Mage::app()->getStores() as $store) {
|
116 |
+
Mage::log('Fontis/Australia_Model_MyShopping_Cron: Processing store: ' . $store->getName());
|
117 |
$clean_store_name = str_replace('+', '-', strtolower(urlencode($store->getName())));
|
118 |
+
|
119 |
Fontis_Australia_Model_MyShopping_Cron::$debugCount = 0;
|
|
|
120 |
|
121 |
// Write the entire products xml file:
|
122 |
+
Mage::log('Fontis/Australia_Model_MyShopping_Cron: Generating All Products XML File');
|
123 |
+
$products_result = self::getProductsXml($store);
|
124 |
+
|
125 |
$filename = $clean_store_name . '-products.xml';
|
126 |
$io->write($filename, $products_result['xml']);
|
127 |
+
Mage::log('Fontis/Australia_Model_MyShopping_Cron: Wrote ' . Fontis_Australia_Model_MyShopping_Cron::$debugCount
|
128 |
. " records to " . self::getPath() . $filename);
|
129 |
}
|
130 |
|
131 |
$io->close();
|
132 |
+
} else {
|
133 |
+
Mage::log('Fontis/Australia_Model_MyShopping_Cron: Disabled');
|
134 |
}
|
135 |
}
|
136 |
|
137 |
+
public function getProductsXml($store) {
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
Mage::log('new getproductsxml');
|
139 |
Fontis_Australia_Model_MyShopping_Cron::$store = $store;
|
140 |
|
145 |
$products->setStoreId($store);
|
146 |
$products->addStoreFilter();
|
147 |
$products->addAttributeToSelect('*');
|
148 |
+
$products->addAttributeToFilter('status', 1);
|
149 |
+
$products->addAttributeToFilter('visibility', 4);
|
|
|
150 |
|
151 |
$storeUrl = $store->getBaseUrl();
|
152 |
$shopName = $store->getName();
|
156 |
self::$doc = new SimpleXMLElement('<productset></productset>');
|
157 |
self::$root_node = self::$doc;
|
158 |
|
159 |
+
Mage::log('Fontis/Australia_Model_MyShopping_Cron: Iterating: ' . $products->getSize() . ' products...');
|
160 |
Mage::getSingleton('core/resource_iterator')->walk($products->getSelect(), array('addProductXmlCallbackMyShopping'));
|
161 |
+
|
162 |
// call XML generation function one last time to process remaining batch
|
163 |
addProductXmlMyShopping();
|
164 |
+
Mage::log('Fontis/Australia_Model_MyShopping_Cron: Iteration complete');
|
165 |
|
166 |
$dom = new DOMDocument('1.0');
|
167 |
$dom->preserveWhiteSpace = false;
|
app/code/community/Fontis/Australia/Model/Shipping/Carrier/Australiapost.php
CHANGED
@@ -264,9 +264,6 @@ class Fontis_Australia_Model_Shipping_Carrier_Australiapost
|
|
264 |
|
265 |
protected function _createMethod($request, $method_code, $title, $price, $cost)
|
266 |
{
|
267 |
-
$shippingPrice = $request->getBaseCurrency()->convert($price, $request->getPackageCurrency());
|
268 |
-
$shippingCost = $request->getBaseCurrency()->convert($cost, $request->getPackageCurrency());
|
269 |
-
|
270 |
$method = Mage::getModel('shipping/rate_result_method');
|
271 |
|
272 |
$method->setCarrier('australiapost');
|
@@ -275,8 +272,8 @@ class Fontis_Australia_Model_Shipping_Carrier_Australiapost
|
|
275 |
$method->setMethod($method_code);
|
276 |
$method->setMethodTitle($title);
|
277 |
|
278 |
-
$method->setPrice($this->getFinalPriceWithHandlingFee($
|
279 |
-
$method->setCost($
|
280 |
|
281 |
return $method;
|
282 |
}
|
264 |
|
265 |
protected function _createMethod($request, $method_code, $title, $price, $cost)
|
266 |
{
|
|
|
|
|
|
|
267 |
$method = Mage::getModel('shipping/rate_result_method');
|
268 |
|
269 |
$method->setCarrier('australiapost');
|
272 |
$method->setMethod($method_code);
|
273 |
$method->setMethodTitle($title);
|
274 |
|
275 |
+
$method->setPrice($this->getFinalPriceWithHandlingFee($price));
|
276 |
+
$method->setCost($cost);
|
277 |
|
278 |
return $method;
|
279 |
}
|
app/code/community/Fontis/Australia/Model/Shopbot/Child.php
CHANGED
@@ -30,11 +30,58 @@ $store_id = $argv[3];
|
|
30 |
require_once $mage_path . '/app/Mage.php';
|
31 |
Mage::app($store_id);
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
// This array is translated into XML when fed back to the cron parent PHP.
|
34 |
$products = array();
|
35 |
foreach(unserialize($product_ids) as $product_id) {
|
|
|
36 |
// Load product, tax helper and generate final price information
|
37 |
$product = Mage::getModel('catalog/product')->load($product_id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
$tax = Mage::helper('tax');
|
39 |
$final_price = $tax->getPrice($product, $product->getFinalPrice(), true);
|
40 |
|
@@ -52,16 +99,14 @@ foreach(unserialize($product_ids) as $product_id) {
|
|
52 |
}
|
53 |
|
54 |
$linkedAttributes = @unserialize(Mage::getStoreConfig('fontis_feeds/shopbotfeed/m_to_xml_attributes', $store_id));
|
55 |
-
if(!empty($linkedAttributes))
|
56 |
-
|
57 |
-
foreach($linkedAttributes as $la)
|
58 |
-
{
|
59 |
$magentoAtt = $la['magento'];
|
60 |
$xmlAtt = $la['xmlfeed'];
|
61 |
|
62 |
if ($magentoAtt == "manufacturer") {
|
63 |
$manufacturer_name = $product->getResource()->
|
64 |
-
|
65 |
|
66 |
if ($manufacturer_name != 'No') {
|
67 |
$array['manufacturer'] = $manufacturer_name;
|
@@ -82,9 +127,9 @@ foreach(unserialize($product_ids) as $product_id) {
|
|
82 |
$array['category_name'] = $c->getName();
|
83 |
|
84 |
$loaded_categories = Mage::getModel('catalog/category')
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
|
89 |
foreach($loaded_categories as $loaded_category) {
|
90 |
$array['category_name'] = $loaded_category->getName();
|
30 |
require_once $mage_path . '/app/Mage.php';
|
31 |
Mage::app($store_id);
|
32 |
|
33 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Child: Successfully entered child process');
|
34 |
+
|
35 |
+
$_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'] = $mage_path . "/app/code/community/Fontis/Australia/Model/Shopbot/Child.php";
|
36 |
+
|
37 |
+
// Check and assign mode
|
38 |
+
if (Mage::getStoreConfig('fontis_feeds/shopbotfeed/include_all_products') == 1) {
|
39 |
+
$include_all = true;
|
40 |
+
} else {
|
41 |
+
$include_all = false;
|
42 |
+
}
|
43 |
+
|
44 |
// This array is translated into XML when fed back to the cron parent PHP.
|
45 |
$products = array();
|
46 |
foreach(unserialize($product_ids) as $product_id) {
|
47 |
+
|
48 |
// Load product, tax helper and generate final price information
|
49 |
$product = Mage::getModel('catalog/product')->load($product_id);
|
50 |
+
|
51 |
+
// Check for overrride attribute
|
52 |
+
// Fetch override attribute
|
53 |
+
$override_attribute_code = Mage::getStoreConfig('fontis_feeds/shopbotfeed/custom_filter_attribute');
|
54 |
+
|
55 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Child: Override attribute: ' . $override_attribute_code);
|
56 |
+
|
57 |
+
// Check product for that attribute
|
58 |
+
if ($override_attribute_code != '0') {
|
59 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Child: Attempting to load attribute value');
|
60 |
+
$attribute_value = $product->getResource()->getAttribute($override_attribute_code)->getFrontend()->getValue($product);
|
61 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Child: Attribute value: ' . $attribute_value);
|
62 |
+
|
63 |
+
if ($attribute_value === '' || $attribute_value === 0 || $attribute_value === '0' || strtolower($attribute_value) == 'no') {
|
64 |
+
$override_attribute = false;
|
65 |
+
} else {
|
66 |
+
$override_attribute = true;
|
67 |
+
}
|
68 |
+
} else {
|
69 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Child: No override attribute set');
|
70 |
+
$override_attribute = false;
|
71 |
+
}
|
72 |
+
|
73 |
+
// If mode is includeall and override is true don't include this product
|
74 |
+
if ($include_all && $override_attribute) {
|
75 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Child: Skipping due to include_all && override_attribute');
|
76 |
+
continue;
|
77 |
+
}
|
78 |
+
|
79 |
+
// If mode is excludeall and override is false don't include this product
|
80 |
+
if (!$include_all && !$override_attribute) {
|
81 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Child: Skipping due to !include_all && !override_attribute');
|
82 |
+
continue;
|
83 |
+
}
|
84 |
+
|
85 |
$tax = Mage::helper('tax');
|
86 |
$final_price = $tax->getPrice($product, $product->getFinalPrice(), true);
|
87 |
|
99 |
}
|
100 |
|
101 |
$linkedAttributes = @unserialize(Mage::getStoreConfig('fontis_feeds/shopbotfeed/m_to_xml_attributes', $store_id));
|
102 |
+
if(!empty($linkedAttributes)) {
|
103 |
+
foreach($linkedAttributes as $la) {
|
|
|
|
|
104 |
$magentoAtt = $la['magento'];
|
105 |
$xmlAtt = $la['xmlfeed'];
|
106 |
|
107 |
if ($magentoAtt == "manufacturer") {
|
108 |
$manufacturer_name = $product->getResource()->
|
109 |
+
getAttribute('manufacturer')->getFrontend()->getValue($product);
|
110 |
|
111 |
if ($manufacturer_name != 'No') {
|
112 |
$array['manufacturer'] = $manufacturer_name;
|
127 |
$array['category_name'] = $c->getName();
|
128 |
|
129 |
$loaded_categories = Mage::getModel('catalog/category')
|
130 |
+
->getCollection()
|
131 |
+
->addIdFilter(array($c->getId()))
|
132 |
+
->addAttributeToSelect(array('name'), 'inner')->load();
|
133 |
|
134 |
foreach($loaded_categories as $loaded_category) {
|
135 |
$array['category_name'] = $loaded_category->getName();
|
app/code/community/Fontis/Australia/Model/Shopbot/Cron.php
CHANGED
@@ -22,8 +22,7 @@
|
|
22 |
// Callback used by the Magento resource iterator walk() method. Adds a
|
23 |
// product ID to a static array and calls addProductXmlShopBot() to
|
24 |
// generate XML when the array reaches the batch size.
|
25 |
-
function addProductXmlCallbackShopBot($args)
|
26 |
-
{
|
27 |
Fontis_Australia_Model_ShopBot_Cron::$accumulator[] = $args['row']['entity_id'];
|
28 |
|
29 |
$length = count(Fontis_Australia_Model_ShopBot_Cron::$accumulator);
|
@@ -34,15 +33,14 @@ function addProductXmlCallbackShopBot($args)
|
|
34 |
|
35 |
// Runs a subprocesss to create feed XML for the product IDs in the static
|
36 |
// array, then empties the array.
|
37 |
-
function addProductXmlShopBot()
|
38 |
-
{
|
39 |
$length = count(Fontis_Australia_Model_ShopBot_Cron::$accumulator);
|
40 |
if($length > 0) {
|
41 |
-
Mage::log("Processing product IDs " . Fontis_Australia_Model_ShopBot_Cron::$accumulator[0] .
|
42 |
" to " . Fontis_Australia_Model_ShopBot_Cron::$accumulator[$length - 1]);
|
43 |
$store_id = Fontis_Australia_Model_ShopBot_Cron::$store->getId();
|
44 |
|
45 |
-
$data =
|
46 |
Mage::getBaseDir() . " '" . serialize(Fontis_Australia_Model_ShopBot_Cron::$accumulator) .
|
47 |
"' " . $store_id);
|
48 |
Fontis_Australia_Model_ShopBot_Cron::$accumulator = array();
|
@@ -62,21 +60,20 @@ function addProductXmlShopBot()
|
|
62 |
}
|
63 |
}
|
64 |
if(!empty($codes)) {
|
65 |
-
Mage::log("Codes: ".implode(",", $codes));
|
66 |
}
|
67 |
} else {
|
68 |
-
Mage::log("Could not unserialize to array:");
|
69 |
Mage::log($data);
|
70 |
Mage::log($array);
|
71 |
}
|
72 |
-
|
73 |
-
Mage::log(strlen($data) . " characters returned");
|
74 |
}
|
75 |
}
|
76 |
|
77 |
|
78 |
-
class Fontis_Australia_Model_ShopBot_Cron
|
79 |
-
{
|
80 |
const BATCH_SIZE = 100;
|
81 |
|
82 |
public static $doc;
|
@@ -85,13 +82,11 @@ class Fontis_Australia_Model_ShopBot_Cron
|
|
85 |
public static $accumulator;
|
86 |
public static $debugCount = 0;
|
87 |
|
88 |
-
protected function _construct()
|
89 |
-
{
|
90 |
self::$accumulator = array();
|
91 |
}
|
92 |
|
93 |
-
protected function getPath()
|
94 |
-
{
|
95 |
$path = "";
|
96 |
$config_path = Mage::getStoreConfig('fontis_feeds/shopbotfeed/output');
|
97 |
|
@@ -104,9 +99,12 @@ class Fontis_Australia_Model_ShopBot_Cron
|
|
104 |
return str_replace('//', '/', $path);
|
105 |
}
|
106 |
|
107 |
-
public
|
108 |
-
|
109 |
-
|
|
|
|
|
|
|
110 |
if (Mage::getStoreConfig('fontis_feeds/shopbotfeed/active')) {
|
111 |
$io = new Varien_Io_File();
|
112 |
$io->setAllowCreateFolders(true);
|
@@ -114,30 +112,28 @@ class Fontis_Australia_Model_ShopBot_Cron
|
|
114 |
$io->open(array('path' => self::getPath()));
|
115 |
|
116 |
foreach(Mage::app()->getStores() as $store) {
|
117 |
-
Mage::log('
|
118 |
$clean_store_name = str_replace('+', '-', strtolower(urlencode($store->getName())));
|
119 |
-
Fontis_Australia_Model_ShopBot_Cron::$debugCount = 0;
|
120 |
-
$products_result = self::getProductsXml($store);
|
121 |
|
|
|
|
|
122 |
// Write the entire products xml file:
|
|
|
|
|
|
|
123 |
$filename = $clean_store_name . '-products.xml';
|
124 |
$io->write($filename, $products_result['xml']);
|
125 |
-
Mage::log("Wrote " . Fontis_Australia_Model_ShopBot_Cron::$debugCount
|
126 |
. " records to " . self::getPath() . $filename);
|
127 |
}
|
128 |
|
129 |
$io->close();
|
|
|
|
|
130 |
}
|
131 |
}
|
132 |
|
133 |
-
public function
|
134 |
-
{
|
135 |
-
self::update();
|
136 |
-
}
|
137 |
-
|
138 |
-
public function getProductsXml($store)
|
139 |
-
{
|
140 |
-
Mage::log('new getproductsxml');
|
141 |
Fontis_Australia_Model_ShopBot_Cron::$store = $store;
|
142 |
|
143 |
$result = array();
|
@@ -147,13 +143,13 @@ class Fontis_Australia_Model_ShopBot_Cron
|
|
147 |
$products->setStoreId($store);
|
148 |
$products->addStoreFilter();
|
149 |
$products->addAttributeToSelect('*');
|
|
|
|
|
150 |
|
151 |
$attributes_select_array = array('name', 'price', 'image', 'status');
|
152 |
$linkedAttributes = @unserialize(Mage::getStoreConfig('fontis_feeds/shopbotfeed/m_to_xml_attributes', $store->getId()));
|
153 |
-
if(!empty($linkedAttributes))
|
154 |
-
|
155 |
-
foreach($linkedAttributes as $la)
|
156 |
-
{
|
157 |
if (strpos($la['magento'], 'FONTIS') === false) {
|
158 |
$attributes_select_array[] = $la['magento'];
|
159 |
}
|
@@ -162,10 +158,6 @@ class Fontis_Australia_Model_ShopBot_Cron
|
|
162 |
Mage::log(var_export($attributes_select_array, true));
|
163 |
|
164 |
$products->addAttributeToSelect($attributes_select_array, 'left');
|
165 |
-
$products->addAttributeToFilter('type_id', 'simple');
|
166 |
-
|
167 |
-
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
|
168 |
-
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
|
169 |
|
170 |
$storeUrl = $store->getBaseUrl();
|
171 |
$shopName = $store->getName();
|
@@ -175,12 +167,13 @@ class Fontis_Australia_Model_ShopBot_Cron
|
|
175 |
self::$doc = new SimpleXMLElement('<store url="' . $storeUrl. '" date="'.$date.'" time="'.$time.'" name="' . $shopName . '"></store>');
|
176 |
self::$root_node = self::$doc->addChild('products');
|
177 |
|
178 |
-
Mage::log('
|
179 |
Mage::getSingleton('core/resource_iterator')->walk($products->getSelect(), array('addProductXmlCallbackShopBot'));
|
|
|
180 |
// call XML generation function one last time to process remaining batch
|
181 |
addProductXmlShopBot();
|
182 |
-
Mage::log('
|
183 |
-
|
184 |
$dom = new DOMDocument('1.0');
|
185 |
$dom->preserveWhiteSpace = false;
|
186 |
$dom->formatOutput = true;
|
22 |
// Callback used by the Magento resource iterator walk() method. Adds a
|
23 |
// product ID to a static array and calls addProductXmlShopBot() to
|
24 |
// generate XML when the array reaches the batch size.
|
25 |
+
function addProductXmlCallbackShopBot($args) {
|
|
|
26 |
Fontis_Australia_Model_ShopBot_Cron::$accumulator[] = $args['row']['entity_id'];
|
27 |
|
28 |
$length = count(Fontis_Australia_Model_ShopBot_Cron::$accumulator);
|
33 |
|
34 |
// Runs a subprocesss to create feed XML for the product IDs in the static
|
35 |
// array, then empties the array.
|
36 |
+
function addProductXmlShopBot() {
|
|
|
37 |
$length = count(Fontis_Australia_Model_ShopBot_Cron::$accumulator);
|
38 |
if($length > 0) {
|
39 |
+
Mage::log("Fontis/Australia_Model_Shopbot_Cron: Processing product IDs " . Fontis_Australia_Model_ShopBot_Cron::$accumulator[0] .
|
40 |
" to " . Fontis_Australia_Model_ShopBot_Cron::$accumulator[$length - 1]);
|
41 |
$store_id = Fontis_Australia_Model_ShopBot_Cron::$store->getId();
|
42 |
|
43 |
+
$data = shell_exec("php " . Mage::getBaseDir() . "/app/code/community/Fontis/Australia/Model/Shopbot/Child.php " .
|
44 |
Mage::getBaseDir() . " '" . serialize(Fontis_Australia_Model_ShopBot_Cron::$accumulator) .
|
45 |
"' " . $store_id);
|
46 |
Fontis_Australia_Model_ShopBot_Cron::$accumulator = array();
|
60 |
}
|
61 |
}
|
62 |
if(!empty($codes)) {
|
63 |
+
Mage::log("Fontis/Australia_Model_Shopbot_Cron: Codes: ".implode(",", $codes));
|
64 |
}
|
65 |
} else {
|
66 |
+
Mage::log("Fontis/Australia_Model_Shopbot_Cron: Could not unserialize to array:");
|
67 |
Mage::log($data);
|
68 |
Mage::log($array);
|
69 |
}
|
70 |
+
|
71 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Cron: ' . strlen($data) . " characters returned");
|
72 |
}
|
73 |
}
|
74 |
|
75 |
|
76 |
+
class Fontis_Australia_Model_ShopBot_Cron {
|
|
|
77 |
const BATCH_SIZE = 100;
|
78 |
|
79 |
public static $doc;
|
82 |
public static $accumulator;
|
83 |
public static $debugCount = 0;
|
84 |
|
85 |
+
protected function _construct() {
|
|
|
86 |
self::$accumulator = array();
|
87 |
}
|
88 |
|
89 |
+
protected function getPath() {
|
|
|
90 |
$path = "";
|
91 |
$config_path = Mage::getStoreConfig('fontis_feeds/shopbotfeed/output');
|
92 |
|
99 |
return str_replace('//', '/', $path);
|
100 |
}
|
101 |
|
102 |
+
public function nonstatic() {
|
103 |
+
self::update();
|
104 |
+
}
|
105 |
+
|
106 |
+
public static function update() {
|
107 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Cron: Entered update function');
|
108 |
if (Mage::getStoreConfig('fontis_feeds/shopbotfeed/active')) {
|
109 |
$io = new Varien_Io_File();
|
110 |
$io->setAllowCreateFolders(true);
|
112 |
$io->open(array('path' => self::getPath()));
|
113 |
|
114 |
foreach(Mage::app()->getStores() as $store) {
|
115 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Cron: Processing store: ' . $store->getName());
|
116 |
$clean_store_name = str_replace('+', '-', strtolower(urlencode($store->getName())));
|
|
|
|
|
117 |
|
118 |
+
Fontis_Australia_Model_ShopBot_Cron::$debugCount = 0;
|
119 |
+
|
120 |
// Write the entire products xml file:
|
121 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Cron: Generating All Products XML File');
|
122 |
+
$products_result = self::getProductsXml($store);
|
123 |
+
|
124 |
$filename = $clean_store_name . '-products.xml';
|
125 |
$io->write($filename, $products_result['xml']);
|
126 |
+
Mage::log("Fontis/Australia_Model_Shopbot_Cron: Wrote " . Fontis_Australia_Model_ShopBot_Cron::$debugCount
|
127 |
. " records to " . self::getPath() . $filename);
|
128 |
}
|
129 |
|
130 |
$io->close();
|
131 |
+
} else {
|
132 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Cron: Disabled');
|
133 |
}
|
134 |
}
|
135 |
|
136 |
+
public function getProductsXml($store) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
Fontis_Australia_Model_ShopBot_Cron::$store = $store;
|
138 |
|
139 |
$result = array();
|
143 |
$products->setStoreId($store);
|
144 |
$products->addStoreFilter();
|
145 |
$products->addAttributeToSelect('*');
|
146 |
+
$products->addAttributeToFilter('status', 1);
|
147 |
+
$products->addAttributeToFilter('visibility', 4);
|
148 |
|
149 |
$attributes_select_array = array('name', 'price', 'image', 'status');
|
150 |
$linkedAttributes = @unserialize(Mage::getStoreConfig('fontis_feeds/shopbotfeed/m_to_xml_attributes', $store->getId()));
|
151 |
+
if(!empty($linkedAttributes)) {
|
152 |
+
foreach($linkedAttributes as $la) {
|
|
|
|
|
153 |
if (strpos($la['magento'], 'FONTIS') === false) {
|
154 |
$attributes_select_array[] = $la['magento'];
|
155 |
}
|
158 |
Mage::log(var_export($attributes_select_array, true));
|
159 |
|
160 |
$products->addAttributeToSelect($attributes_select_array, 'left');
|
|
|
|
|
|
|
|
|
161 |
|
162 |
$storeUrl = $store->getBaseUrl();
|
163 |
$shopName = $store->getName();
|
167 |
self::$doc = new SimpleXMLElement('<store url="' . $storeUrl. '" date="'.$date.'" time="'.$time.'" name="' . $shopName . '"></store>');
|
168 |
self::$root_node = self::$doc->addChild('products');
|
169 |
|
170 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Cron: Iterating: ' . $products->getSize() . ' products...');
|
171 |
Mage::getSingleton('core/resource_iterator')->walk($products->getSelect(), array('addProductXmlCallbackShopBot'));
|
172 |
+
|
173 |
// call XML generation function one last time to process remaining batch
|
174 |
addProductXmlShopBot();
|
175 |
+
Mage::log('Fontis/Australia_Model_Shopbot_Cron: Iteration complete');
|
176 |
+
|
177 |
$dom = new DOMDocument('1.0');
|
178 |
$dom->preserveWhiteSpace = false;
|
179 |
$dom->formatOutput = true;
|
app/code/community/Fontis/Australia/etc/config.xml
CHANGED
@@ -23,7 +23,7 @@
|
|
23 |
<config>
|
24 |
<modules>
|
25 |
<Fontis_Australia>
|
26 |
-
<version>2.0.
|
27 |
<depends>
|
28 |
<Mage_Shipping />
|
29 |
<Mage_Payment />
|
@@ -232,16 +232,19 @@
|
|
232 |
<getpricefeed>
|
233 |
<output>getprice-feeds</output>
|
234 |
<defaultcategory>Products</defaultcategory>
|
|
|
235 |
<currency>AUS</currency>
|
236 |
</getpricefeed>
|
237 |
<shopbotfeed>
|
238 |
<output>shopbot-feeds/</output>
|
239 |
<defaultcategory>Products</defaultcategory>
|
|
|
240 |
<m_to_xml_attributes>a:4:{s:18:"_1260239763475_475";a:2:{s:7:"magento";s:12:"manufacturer";s:7:"xmlfeed";s:5:"brand";}s:18:"_1260241020747_747";a:2:{s:7:"magento";s:11:"description";s:7:"xmlfeed";s:11:"description";}s:18:"_1260413375112_112";a:2:{s:7:"magento";s:15:"FONTIS-category";s:7:"xmlfeed";s:8:"category";}s:18:"_1260420319241_241";a:2:{s:7:"magento";s:17:"FONTIS-image-link";s:7:"xmlfeed";s:5:"image";}}</m_to_xml_attributes>
|
241 |
</shopbotfeed>
|
242 |
<myshopping>
|
243 |
<output>myshopping-feeds/</output>
|
244 |
<defaultcategory>Products</defaultcategory>
|
|
|
245 |
<m_to_xml_attributes>a:4:{s:18:"_1260239763475_475";a:2:{s:7:"magento";s:12:"manufacturer";s:7:"xmlfeed";s:5:"brand";}s:18:"_1260241020747_747";a:2:{s:7:"magento";s:11:"description";s:7:"xmlfeed";s:11:"description";}s:18:"_1260413375112_112";a:2:{s:7:"magento";s:15:"FONTIS-category";s:7:"xmlfeed";s:8:"category";}s:18:"_1260420319241_241";a:2:{s:7:"magento";s:17:"FONTIS-image-link";s:7:"xmlfeed";s:5:"image";}}</m_to_xml_attributes>
|
246 |
</myshopping>
|
247 |
</fontis_feeds>
|
23 |
<config>
|
24 |
<modules>
|
25 |
<Fontis_Australia>
|
26 |
+
<version>2.0.7</version>
|
27 |
<depends>
|
28 |
<Mage_Shipping />
|
29 |
<Mage_Payment />
|
232 |
<getpricefeed>
|
233 |
<output>getprice-feeds</output>
|
234 |
<defaultcategory>Products</defaultcategory>
|
235 |
+
<include_all_products>1</include_all_products>
|
236 |
<currency>AUS</currency>
|
237 |
</getpricefeed>
|
238 |
<shopbotfeed>
|
239 |
<output>shopbot-feeds/</output>
|
240 |
<defaultcategory>Products</defaultcategory>
|
241 |
+
<include_all_products>1</include_all_products>
|
242 |
<m_to_xml_attributes>a:4:{s:18:"_1260239763475_475";a:2:{s:7:"magento";s:12:"manufacturer";s:7:"xmlfeed";s:5:"brand";}s:18:"_1260241020747_747";a:2:{s:7:"magento";s:11:"description";s:7:"xmlfeed";s:11:"description";}s:18:"_1260413375112_112";a:2:{s:7:"magento";s:15:"FONTIS-category";s:7:"xmlfeed";s:8:"category";}s:18:"_1260420319241_241";a:2:{s:7:"magento";s:17:"FONTIS-image-link";s:7:"xmlfeed";s:5:"image";}}</m_to_xml_attributes>
|
243 |
</shopbotfeed>
|
244 |
<myshopping>
|
245 |
<output>myshopping-feeds/</output>
|
246 |
<defaultcategory>Products</defaultcategory>
|
247 |
+
<include_all_products>1</include_all_products>
|
248 |
<m_to_xml_attributes>a:4:{s:18:"_1260239763475_475";a:2:{s:7:"magento";s:12:"manufacturer";s:7:"xmlfeed";s:5:"brand";}s:18:"_1260241020747_747";a:2:{s:7:"magento";s:11:"description";s:7:"xmlfeed";s:11:"description";}s:18:"_1260413375112_112";a:2:{s:7:"magento";s:15:"FONTIS-category";s:7:"xmlfeed";s:8:"category";}s:18:"_1260420319241_241";a:2:{s:7:"magento";s:17:"FONTIS-image-link";s:7:"xmlfeed";s:5:"image";}}</m_to_xml_attributes>
|
249 |
</myshopping>
|
250 |
</fontis_feeds>
|
app/code/community/Fontis/Australia/etc/system.xml
CHANGED
@@ -746,10 +746,30 @@
|
|
746 |
<show_in_website>1</show_in_website>
|
747 |
<show_in_store>0</show_in_store>
|
748 |
</active>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
749 |
<output translate="label">
|
750 |
<label>Output Filename</label>
|
751 |
<frontend_type>text</frontend_type>
|
752 |
-
<sort_order>
|
753 |
<show_in_default>1</show_in_default>
|
754 |
<show_in_website>1</show_in_website>
|
755 |
<show_in_store>1</show_in_store>
|
@@ -758,7 +778,7 @@
|
|
758 |
<defaultcategory translate="label">
|
759 |
<label>Default Category</label>
|
760 |
<frontend_type>text</frontend_type>
|
761 |
-
<sort_order>
|
762 |
<show_in_default>1</show_in_default>
|
763 |
<show_in_website>1</show_in_website>
|
764 |
<show_in_store>1</show_in_store>
|
@@ -768,7 +788,7 @@
|
|
768 |
<label>Show Manufacturer</label>
|
769 |
<frontend_type>select</frontend_type>
|
770 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
771 |
-
<sort_order>
|
772 |
<show_in_default>1</show_in_default>
|
773 |
<show_in_website>1</show_in_website>
|
774 |
<show_in_store>0</show_in_store>
|
@@ -776,7 +796,7 @@
|
|
776 |
<currency translate="label">
|
777 |
<label>Currency</label>
|
778 |
<frontend_type>text</frontend_type>
|
779 |
-
<sort_order>
|
780 |
<show_in_default>1</show_in_default>
|
781 |
<show_in_website>1</show_in_website>
|
782 |
<show_in_store>0</show_in_store>
|
@@ -800,10 +820,30 @@
|
|
800 |
<show_in_website>1</show_in_website>
|
801 |
<show_in_store>0</show_in_store>
|
802 |
</active>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
803 |
<output translate="label">
|
804 |
<label>Output Path</label>
|
805 |
<frontend_type>text</frontend_type>
|
806 |
-
<sort_order>
|
807 |
<show_in_default>1</show_in_default>
|
808 |
<show_in_website>1</show_in_website>
|
809 |
<show_in_store>1</show_in_store>
|
@@ -812,7 +852,7 @@
|
|
812 |
<defaultcategory translate="label">
|
813 |
<label>Default Category</label>
|
814 |
<frontend_type>text</frontend_type>
|
815 |
-
<sort_order>
|
816 |
<show_in_default>1</show_in_default>
|
817 |
<show_in_website>1</show_in_website>
|
818 |
<show_in_store>1</show_in_store>
|
@@ -847,10 +887,30 @@
|
|
847 |
<show_in_website>1</show_in_website>
|
848 |
<show_in_store>0</show_in_store>
|
849 |
</active>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
850 |
<output translate="label">
|
851 |
<label>Output Path</label>
|
852 |
<frontend_type>text</frontend_type>
|
853 |
-
<sort_order>
|
854 |
<show_in_default>1</show_in_default>
|
855 |
<show_in_website>1</show_in_website>
|
856 |
<show_in_store>1</show_in_store>
|
@@ -859,7 +919,7 @@
|
|
859 |
<defaultcategory translate="label">
|
860 |
<label>Default Category</label>
|
861 |
<frontend_type>text</frontend_type>
|
862 |
-
<sort_order>
|
863 |
<show_in_default>1</show_in_default>
|
864 |
<show_in_website>1</show_in_website>
|
865 |
<show_in_store>1</show_in_store>
|
746 |
<show_in_website>1</show_in_website>
|
747 |
<show_in_store>0</show_in_store>
|
748 |
</active>
|
749 |
+
<include_all_products translate="label">
|
750 |
+
<label>Include products by default</label>
|
751 |
+
<frontend_type>select</frontend_type>
|
752 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
753 |
+
<sort_order>2</sort_order>
|
754 |
+
<show_in_default>1</show_in_default>
|
755 |
+
<show_in_website>1</show_in_website>
|
756 |
+
<show_in_store>0</show_in_store>
|
757 |
+
<comment>If 'yes', products will be included by default and excluded if the override attribute resolves true for the product. If 'no', products will be excluded by default and only included if the override attribute resolves true for the product.</comment>
|
758 |
+
</include_all_products>
|
759 |
+
<custom_filter_attribute translate="label">
|
760 |
+
<label>Override individual products with attribute</label>
|
761 |
+
<frontend_type>select</frontend_type>
|
762 |
+
<source_model>australia/config_productAttributes</source_model>
|
763 |
+
<sort_order>3</sort_order>
|
764 |
+
<show_in_default>1</show_in_default>
|
765 |
+
<show_in_website>1</show_in_website>
|
766 |
+
<show_in_store>1</show_in_store>
|
767 |
+
<comment>Products with this selected attribute and where the attribute resolves to true for the product will be excluded from the feed if inclusion is set to default (see above option). Otherwise products will only be included if this attribute is available for the product and the attribute resolves to true when inclusion by default is turned off (see above option).</comment>
|
768 |
+
</custom_filter_attribute>
|
769 |
<output translate="label">
|
770 |
<label>Output Filename</label>
|
771 |
<frontend_type>text</frontend_type>
|
772 |
+
<sort_order>4</sort_order>
|
773 |
<show_in_default>1</show_in_default>
|
774 |
<show_in_website>1</show_in_website>
|
775 |
<show_in_store>1</show_in_store>
|
778 |
<defaultcategory translate="label">
|
779 |
<label>Default Category</label>
|
780 |
<frontend_type>text</frontend_type>
|
781 |
+
<sort_order>5</sort_order>
|
782 |
<show_in_default>1</show_in_default>
|
783 |
<show_in_website>1</show_in_website>
|
784 |
<show_in_store>1</show_in_store>
|
788 |
<label>Show Manufacturer</label>
|
789 |
<frontend_type>select</frontend_type>
|
790 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
791 |
+
<sort_order>6</sort_order>
|
792 |
<show_in_default>1</show_in_default>
|
793 |
<show_in_website>1</show_in_website>
|
794 |
<show_in_store>0</show_in_store>
|
796 |
<currency translate="label">
|
797 |
<label>Currency</label>
|
798 |
<frontend_type>text</frontend_type>
|
799 |
+
<sort_order>7</sort_order>
|
800 |
<show_in_default>1</show_in_default>
|
801 |
<show_in_website>1</show_in_website>
|
802 |
<show_in_store>0</show_in_store>
|
820 |
<show_in_website>1</show_in_website>
|
821 |
<show_in_store>0</show_in_store>
|
822 |
</active>
|
823 |
+
<include_all_products translate="label">
|
824 |
+
<label>Include products by default</label>
|
825 |
+
<frontend_type>select</frontend_type>
|
826 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
827 |
+
<sort_order>2</sort_order>
|
828 |
+
<show_in_default>1</show_in_default>
|
829 |
+
<show_in_website>1</show_in_website>
|
830 |
+
<show_in_store>0</show_in_store>
|
831 |
+
<comment>If 'yes', products will be included by default and excluded if the override attribute resolves true for the product. If 'no', products will be excluded by default and only included if the override attribute resolves true for the product.</comment>
|
832 |
+
</include_all_products>
|
833 |
+
<custom_filter_attribute translate="label">
|
834 |
+
<label>Override individual products with attribute</label>
|
835 |
+
<frontend_type>select</frontend_type>
|
836 |
+
<source_model>australia/config_productAttributes</source_model>
|
837 |
+
<sort_order>3</sort_order>
|
838 |
+
<show_in_default>1</show_in_default>
|
839 |
+
<show_in_website>1</show_in_website>
|
840 |
+
<show_in_store>1</show_in_store>
|
841 |
+
<comment>Products with this selected attribute and where the attribute resolves to true for the product will be excluded from the feed if inclusion is set to default (see above option). Otherwise products will only be included if this attribute is available for the product and the attribute resolves to true when inclusion by default is turned off (see above option).</comment>
|
842 |
+
</custom_filter_attribute>
|
843 |
<output translate="label">
|
844 |
<label>Output Path</label>
|
845 |
<frontend_type>text</frontend_type>
|
846 |
+
<sort_order>4</sort_order>
|
847 |
<show_in_default>1</show_in_default>
|
848 |
<show_in_website>1</show_in_website>
|
849 |
<show_in_store>1</show_in_store>
|
852 |
<defaultcategory translate="label">
|
853 |
<label>Default Category</label>
|
854 |
<frontend_type>text</frontend_type>
|
855 |
+
<sort_order>5</sort_order>
|
856 |
<show_in_default>1</show_in_default>
|
857 |
<show_in_website>1</show_in_website>
|
858 |
<show_in_store>1</show_in_store>
|
887 |
<show_in_website>1</show_in_website>
|
888 |
<show_in_store>0</show_in_store>
|
889 |
</active>
|
890 |
+
<include_all_products translate="label">
|
891 |
+
<label>Include products by default</label>
|
892 |
+
<frontend_type>select</frontend_type>
|
893 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
894 |
+
<sort_order>2</sort_order>
|
895 |
+
<show_in_default>1</show_in_default>
|
896 |
+
<show_in_website>1</show_in_website>
|
897 |
+
<show_in_store>0</show_in_store>
|
898 |
+
<comment>If 'yes', products will be included by default and excluded if the override attribute resolves true for the product. If 'no', products will be excluded by default and only included if the override attribute resolves true for the product.</comment>
|
899 |
+
</include_all_products>
|
900 |
+
<custom_filter_attribute translate="label">
|
901 |
+
<label>Override individual products with attribute</label>
|
902 |
+
<frontend_type>select</frontend_type>
|
903 |
+
<source_model>australia/config_productAttributes</source_model>
|
904 |
+
<sort_order>3</sort_order>
|
905 |
+
<show_in_default>1</show_in_default>
|
906 |
+
<show_in_website>1</show_in_website>
|
907 |
+
<show_in_store>1</show_in_store>
|
908 |
+
<comment>Products with this selected attribute and where the attribute resolves to true for the product will be excluded from the feed if inclusion is set to default (see above option). Otherwise products will only be included if this attribute is available for the product and the attribute resolves to true when inclusion by default is turned off (see above option).</comment>
|
909 |
+
</custom_filter_attribute>
|
910 |
<output translate="label">
|
911 |
<label>Output Path</label>
|
912 |
<frontend_type>text</frontend_type>
|
913 |
+
<sort_order>4</sort_order>
|
914 |
<show_in_default>1</show_in_default>
|
915 |
<show_in_website>1</show_in_website>
|
916 |
<show_in_store>1</show_in_store>
|
919 |
<defaultcategory translate="label">
|
920 |
<label>Default Category</label>
|
921 |
<frontend_type>text</frontend_type>
|
922 |
+
<sort_order>5</sort_order>
|
923 |
<show_in_default>1</show_in_default>
|
924 |
<show_in_website>1</show_in_website>
|
925 |
<show_in_store>1</show_in_store>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Fontis_Australia</name>
|
4 |
-
<version>2.0.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
7 |
<channel>community</channel>
|
@@ -10,9 +10,9 @@
|
|
10 |
<description>This extension is intended to provide most of the functionality needed to run a Magento store in Australia. This includes all essential payment and shipping methods as well as small localisations such as adding the store's ABN, adding Australian states and territories to the region directory and adding in a postcode database.</description>
|
11 |
<notes>Currently active are modules for BPAY, direct deposit, Australia Post, the addition of regions and postcodes, and the addition of ABN and phone number to the general configuration values (although currently not in use). Also supports creating product information feeds for the Shopbot, Getprice and MyShopping services.</notes>
|
12 |
<authors><author><name>Chris Norton</name><user>auto-converted</user><email>chris.norton@fontis.com.au</email></author><author><name>Lloyd Hazlett</name><user>auto-converted</user><email>hazzard43@fastmail.fm</email></author><author><name>Fontis</name><user>auto-converted</user><email>magento@fontis.com.au</email></author></authors>
|
13 |
-
<date>2010-
|
14 |
-
<time>
|
15 |
-
<contents><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="fontis"><dir name="australia"><dir name="payment"><dir name="bpay"><file name="form.phtml" hash="7245a655eac2513f8cd6c1a825586936"/><file name="info.phtml" hash="d4836cf6f5316b76b56ddefc48b67d94"/></dir><dir name="directdeposit"><file name="form.phtml" hash="0e5272781aa7c4d25c1c243fcf00487e"/><file name="info.phtml" hash="38112ef511c67c91a3f2ad43da7929da"/></dir></dir><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="array_dropdown.phtml" hash="bdce71494213de5fe194873b5d0bed56"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="fontis_australia.xml" hash="d33f99fc5dfc156de09254e95a2c82eb"/></dir><dir name="template"><dir name="fontis"><dir name="australia"><dir name="payment"><dir name="bpay"><file name="form.phtml" hash="3895f9afa025444eb9a1cdc38582069d"/><file name="info.phtml" hash="47d1e0cc3ae676dff49990eba0ac4608"/><file name="success.phtml" hash="115a1710b1f3b0ef3ecf0b957651bb43"/></dir><dir name="directdeposit"><file name="form.phtml" hash="8cf9d09e42ba30206aabf01a3ec38239"/><file name="info.phtml" hash="8bc98b2fd1d1943f17d2831a67c97db3"/><file name="success.phtml" hash="0545f8c3c9d37a2045a20f442991e8d7"/></dir></dir><file name="postcode-checkout.phtml" hash="51867acd43c4f8c982ab1fea103a579f"/><file name="postcode.phtml" hash="b0d7bfa170c7ca3bd4a256f0404d7189"/></dir></dir></dir></dir></dir></dir></target><target name="magecommunity"><dir name="Fontis"><dir name="Australia"><dir name="Block"><dir name="Bpay"><file name="Form.php" hash="958e11d14d7c87054a68d34b60c498d6"/><file name="Info.php" hash="a28f40be3c76637eb43ba80c61031512"/></dir><dir name="Directdeposit"><file name="Form.php" hash="13589d5d85499678bdc62fde04107095"/><file name="Info.php" hash="0f31ac7451127c87813c823423a9057b"/></dir><file name="Autocomplete.php" hash="4f33f809dae969781ead580b13e9bd3a"/><file name="Myshopping.php" hash="1e9b9149a867136f541b765d54ba402b"/><file name="Shopbot.php" hash="fca48ea13a60bdd1b207913f536bce45"/></dir><dir name="controllers"><file name="AjaxController.php" hash="5fb086e3236446b6a6f10f4c78eb3fcb"/></dir><dir name="etc"><file name="config.xml" hash="
|
16 |
<compatible/>
|
17 |
<dependencies/>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Fontis_Australia</name>
|
4 |
+
<version>2.0.7</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL 3.0)</license>
|
7 |
<channel>community</channel>
|
10 |
<description>This extension is intended to provide most of the functionality needed to run a Magento store in Australia. This includes all essential payment and shipping methods as well as small localisations such as adding the store's ABN, adding Australian states and territories to the region directory and adding in a postcode database.</description>
|
11 |
<notes>Currently active are modules for BPAY, direct deposit, Australia Post, the addition of regions and postcodes, and the addition of ABN and phone number to the general configuration values (although currently not in use). Also supports creating product information feeds for the Shopbot, Getprice and MyShopping services.</notes>
|
12 |
<authors><author><name>Chris Norton</name><user>auto-converted</user><email>chris.norton@fontis.com.au</email></author><author><name>Lloyd Hazlett</name><user>auto-converted</user><email>hazzard43@fastmail.fm</email></author><author><name>Fontis</name><user>auto-converted</user><email>magento@fontis.com.au</email></author></authors>
|
13 |
+
<date>2010-06-17</date>
|
14 |
+
<time>05:13:43</time>
|
15 |
+
<contents><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="fontis"><dir name="australia"><dir name="payment"><dir name="bpay"><file name="form.phtml" hash="7245a655eac2513f8cd6c1a825586936"/><file name="info.phtml" hash="d4836cf6f5316b76b56ddefc48b67d94"/></dir><dir name="directdeposit"><file name="form.phtml" hash="0e5272781aa7c4d25c1c243fcf00487e"/><file name="info.phtml" hash="38112ef511c67c91a3f2ad43da7929da"/></dir></dir><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="array_dropdown.phtml" hash="bdce71494213de5fe194873b5d0bed56"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="fontis_australia.xml" hash="d33f99fc5dfc156de09254e95a2c82eb"/></dir><dir name="template"><dir name="fontis"><dir name="australia"><dir name="payment"><dir name="bpay"><file name="form.phtml" hash="3895f9afa025444eb9a1cdc38582069d"/><file name="info.phtml" hash="47d1e0cc3ae676dff49990eba0ac4608"/><file name="success.phtml" hash="115a1710b1f3b0ef3ecf0b957651bb43"/></dir><dir name="directdeposit"><file name="form.phtml" hash="8cf9d09e42ba30206aabf01a3ec38239"/><file name="info.phtml" hash="8bc98b2fd1d1943f17d2831a67c97db3"/><file name="success.phtml" hash="0545f8c3c9d37a2045a20f442991e8d7"/></dir></dir><file name="postcode-checkout.phtml" hash="51867acd43c4f8c982ab1fea103a579f"/><file name="postcode.phtml" hash="b0d7bfa170c7ca3bd4a256f0404d7189"/></dir></dir></dir></dir></dir></dir></target><target name="magecommunity"><dir name="Fontis"><dir name="Australia"><dir name="Block"><dir name="Bpay"><file name="Form.php" hash="958e11d14d7c87054a68d34b60c498d6"/><file name="Info.php" hash="a28f40be3c76637eb43ba80c61031512"/></dir><dir name="Directdeposit"><file name="Form.php" hash="13589d5d85499678bdc62fde04107095"/><file name="Info.php" hash="0f31ac7451127c87813c823423a9057b"/></dir><file name="Autocomplete.php" hash="4f33f809dae969781ead580b13e9bd3a"/><file name="Myshopping.php" hash="1e9b9149a867136f541b765d54ba402b"/><file name="Shopbot.php" hash="fca48ea13a60bdd1b207913f536bce45"/></dir><dir name="controllers"><file name="AjaxController.php" hash="5fb086e3236446b6a6f10f4c78eb3fcb"/></dir><dir name="etc"><file name="config.xml" hash="e969b8612135e92ed71a3c99c4f8adf3"/><file name="system.xml" hash="66521865e3be5af17279967ffefe7874"/></dir><dir name="Helper"><file name="Bpay.php" hash="a2565444f18b28e70c8d29f802297057"/><file name="Data.php" hash="e493486d7a5ccd5589d99d08b136b819"/></dir><dir name="Model"><dir name="Config"><file name="CustomerGroupAccess.php" hash="e531a8049b9a877e01c2b806b065dbef"/><file name="CustomerGroups.php" hash="8014e56b1141cb9bbb63f807ec1c87a5"/><file name="ProductAttributes.php" hash="44f5a322c2c6c5e1ae7650a9633acd2c"/></dir><dir name="Getprice"><file name="Child.php" hash="dfabad93d15f2429737557edf129e5b6"/><file name="Cron.php" hash="b26abaacab672a4d23a030fdb3ad447c"/></dir><dir name="Myshopping"><file name="Child.php" hash="eed4b19b9461d31fa398804a6dd83b5b"/><file name="Cron.php" hash="8501d2489b5d6738f1eb3075bca3e7e3"/></dir><dir name="Mysql4"><dir name="Shipping"><dir name="Carrier"><dir name="Eparcel"><file name="Collection.php" hash="87f450c6b318060b83e7d7d0662cdf50"/></dir><file name="Eparcel.php" hash="9614eed4296b17a429db745c289d42cf"/></dir></dir></dir><dir name="Payment"><file name="Bpay.php" hash="b60d9a61b06b100164fff49fc5113f71"/><file name="Directdeposit.php" hash="c80ba74494bfeea040dc2bf942cec5f0"/></dir><dir name="Shipping"><dir name="Carrier"><file name="Australiapost.php" hash="30b8f63dda623d65e1505780c6b52737"/><file name="Eparcel.php" hash="b65cd938b27b4666e22b6833ca738226"/></dir><dir name="Config"><file name="Eparcel.php" hash="8c754cdc86316dbee53db68f0e2652bc"/><file name="Eparcelcondition.php" hash="b8cc830ab6e0e397d32bf574f60b0500"/><file name="Weightunits.php" hash="e13ba9de393ae67420f863d4008c3c72"/></dir></dir><dir name="Shopbot"><file name="Child.php" hash="121df42f2ea7cc7945a88227412438ca"/><file name="Cron.php" hash="d264199e5ba497465b5331d72fca5997"/></dir></dir><dir name="sql"><dir name="australia_setup"><file name="mysql4-install-0.7.0.php" hash="f475b13bb5319599c4a852cfb8788f9a"/><file name="mysql4-upgrade-1.2.1-1.2.2.php" hash="9a381c07ec9ee53e2ffaa7ea7da4559d"/><file name="postcodes.txt" hash="21083a0f94e200259c9b4540666b251e"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="default"><dir name="default"><dir name="images"><dir name="fontis"><file name="bpay.png" hash="481c9ee07049203aca13d6d2c2948cf7"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Fontis_Australia.xml" hash="a60b83cf1b1b449a16fe09da16342a4d"/></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies/>
|
18 |
</package>
|