Version Notes
Product feed improvements:
- Fix gzip feed file not generating for some stores.
- Use base currency instead of default currency.
- Fix issues with capitalization for some stores.
- Don't include products that have no store page.
- Include Tax in the product price.
Download this release
Release Info
Developer | Jordan Rogers-Smith |
Extension | Facebook_Ads_Toolbox |
Version | 2.1.10 |
Comparing to | |
See all releases |
Code changes from version 2.1.9 to 2.1.10
- app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeed.php +54 -14
- app/code/community/Facebook/AdsToolbox/controllers/DebugController.php +3 -1
- app/code/community/Facebook/AdsToolbox/controllers/ProductfeedController.php +1 -1
- app/code/community/Facebook/AdsToolbox/etc/config.xml +1 -1
- app/code/community/Facebook/AdsToolbox/lib/fb.php +6 -0
- package.xml +10 -6
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeed.php
CHANGED
@@ -36,6 +36,12 @@ class FacebookProductFeed {
|
|
36 |
Mage::log($info, Zend_Log::INFO, FacebookAdsToolbox::FEED_LOGFILE);
|
37 |
}
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
public static function getCurrentSetup() {
|
40 |
return array(
|
41 |
'format' => Mage::getStoreConfig(
|
@@ -114,8 +120,6 @@ class FacebookProductFeed {
|
|
114 |
if (strlen($attr_value) > 5000) {
|
115 |
$attr_value = substr($attr_value, 0, 5000);
|
116 |
}
|
117 |
-
// description can't be all uppercase
|
118 |
-
$attr_value = $this->lowercaseIfAllCaps($attr_value);
|
119 |
return $escapefn ? $this->$escapefn($attr_value) : $attr_value;
|
120 |
}
|
121 |
break;
|
@@ -190,7 +194,10 @@ class FacebookProductFeed {
|
|
190 |
$product->getShortDescription()
|
191 |
);
|
192 |
}
|
|
|
193 |
$items[self::ATTR_DESCRIPTION] = ($description) ? $description : $items[self::ATTR_TITLE];
|
|
|
|
|
194 |
|
195 |
$items[self::ATTR_LINK] = $this->buildProductAttr(
|
196 |
self::ATTR_LINK,
|
@@ -226,7 +233,7 @@ class FacebookProductFeed {
|
|
226 |
$items[self::ATTR_PRICE] = $this->buildProductAttr('price',
|
227 |
sprintf('%s %s',
|
228 |
$this->stripCurrencySymbol($price),
|
229 |
-
Mage::app()->getStore()->
|
230 |
|
231 |
$items[self::ATTR_SHORT_DESCRIPTION] = $this->buildProductAttr(self::ATTR_SHORT_DESCRIPTION,
|
232 |
$product->getShortDescription());
|
@@ -286,6 +293,8 @@ class FacebookProductFeed {
|
|
286 |
$this->group_separator = $symbols['group'];
|
287 |
$this->decimal_separator = $symbols['decimal'];
|
288 |
$this->conversion_needed = $this->isCurrencyConversionNeeded();
|
|
|
|
|
289 |
|
290 |
while ($count < $total_number_of_products) {
|
291 |
if ($should_log) {
|
@@ -297,26 +306,44 @@ class FacebookProductFeed {
|
|
297 |
$total_number_of_products :
|
298 |
($count + $batch_max)));
|
299 |
}
|
|
|
300 |
$products = Mage::getModel('catalog/product')->getCollection()
|
301 |
->addAttributeToSelect('*')
|
|
|
302 |
->setPageSize($batch_max)
|
303 |
->setCurPage($count / $batch_max + 1)
|
304 |
->addUrlRewrite();
|
305 |
|
306 |
-
$store_id = FacebookAdsToolbox::getDefaultStoreId();
|
307 |
foreach ($products as $product) {
|
308 |
$product->setStoreId($store_id);
|
309 |
if ($product->getVisibility() !=
|
310 |
Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE &&
|
311 |
$product->getStatus() !=
|
312 |
Mage_Catalog_Model_Product_Status::STATUS_DISABLED) {
|
313 |
-
|
314 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
315 |
}
|
316 |
}
|
317 |
unset($products);
|
318 |
$count += $batch_max;
|
319 |
}
|
|
|
|
|
|
|
|
|
320 |
}
|
321 |
|
322 |
public function estimateGenerationTime() {
|
@@ -431,7 +458,7 @@ class FacebookProductFeed {
|
|
431 |
$latin_string = preg_replace('/[^\\p{Latin}]/u', '', $string);
|
432 |
if ($latin_string !== '' &&
|
433 |
mb_strtoupper($latin_string, 'utf-8') === $latin_string) {
|
434 |
-
return
|
435 |
}
|
436 |
}
|
437 |
return $string;
|
@@ -495,7 +522,7 @@ class FacebookProductFeed {
|
|
495 |
case 'bundle':
|
496 |
return $this->getBundleProductPrice($product);
|
497 |
default:
|
498 |
-
return $
|
499 |
}
|
500 |
}
|
501 |
|
@@ -507,11 +534,11 @@ class FacebookProductFeed {
|
|
507 |
->addAttributeToSelect('price')->addFilterByRequiredOptions();
|
508 |
foreach ($simple_collection as $simple_product) {
|
509 |
if ($simple_product->getPrice() > 0) {
|
510 |
-
return $
|
511 |
}
|
512 |
}
|
513 |
}
|
514 |
-
return $
|
515 |
}
|
516 |
|
517 |
private function getBundleProductPrice($product) {
|
@@ -537,26 +564,39 @@ class FacebookProductFeed {
|
|
537 |
foreach ($group as $item) {
|
538 |
$item_price = $pm->getSelectionFinalTotalPrice($product, $item,
|
539 |
$bundle_quantity, $selection_quantity);
|
|
|
540 |
$min_price = min($min_price, $item_price);
|
541 |
}
|
542 |
$option_prices[] = $min_price;
|
543 |
}
|
544 |
|
545 |
-
return $
|
546 |
}
|
547 |
|
548 |
private function getGroupedProductPrice($product) {
|
549 |
$assoc_products = $product->getTypeInstance(true)
|
550 |
->getAssociatedProductCollection($product)
|
551 |
-
->addAttributeToSelect('price')
|
|
|
|
|
552 |
|
553 |
$min_price = INF;
|
554 |
foreach ($assoc_products as $assoc_product) {
|
555 |
-
$min_price = min($min_price, $
|
556 |
-
|
557 |
return $min_price;
|
558 |
}
|
559 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
560 |
private function stripCurrencySymbol($price) {
|
561 |
if (!isset($this->currency_strip_needed)) {
|
562 |
$this->currency_strip_needed = !preg_match('/^[0-9,.]*$/', $price);
|
36 |
Mage::log($info, Zend_Log::INFO, FacebookAdsToolbox::FEED_LOGFILE);
|
37 |
}
|
38 |
|
39 |
+
public static function logException($e) {
|
40 |
+
Mage::log($e->getMessage(), Zend_Log::DEBUG, FacebookAdsToolbox::FEED_EXCEPTION);
|
41 |
+
Mage::log($e->getTraceAsString(), Zend_Log::DEBUG, FacebookAdsToolbox::FEED_EXCEPTION);
|
42 |
+
Mage::log($e, Zend_Log::DEBUG, FacebookAdsToolbox::FEED_EXCEPTION);
|
43 |
+
}
|
44 |
+
|
45 |
public static function getCurrentSetup() {
|
46 |
return array(
|
47 |
'format' => Mage::getStoreConfig(
|
120 |
if (strlen($attr_value) > 5000) {
|
121 |
$attr_value = substr($attr_value, 0, 5000);
|
122 |
}
|
|
|
|
|
123 |
return $escapefn ? $this->$escapefn($attr_value) : $attr_value;
|
124 |
}
|
125 |
break;
|
194 |
$product->getShortDescription()
|
195 |
);
|
196 |
}
|
197 |
+
|
198 |
$items[self::ATTR_DESCRIPTION] = ($description) ? $description : $items[self::ATTR_TITLE];
|
199 |
+
// description can't be all uppercase
|
200 |
+
$items[self::ATTR_DESCRIPTION] = $this->lowercaseIfAllCaps($items[self::ATTR_DESCRIPTION]);
|
201 |
|
202 |
$items[self::ATTR_LINK] = $this->buildProductAttr(
|
203 |
self::ATTR_LINK,
|
233 |
$items[self::ATTR_PRICE] = $this->buildProductAttr('price',
|
234 |
sprintf('%s %s',
|
235 |
$this->stripCurrencySymbol($price),
|
236 |
+
Mage::app()->getStore()->getBaseCurrencyCode()));
|
237 |
|
238 |
$items[self::ATTR_SHORT_DESCRIPTION] = $this->buildProductAttr(self::ATTR_SHORT_DESCRIPTION,
|
239 |
$product->getShortDescription());
|
293 |
$this->group_separator = $symbols['group'];
|
294 |
$this->decimal_separator = $symbols['decimal'];
|
295 |
$this->conversion_needed = $this->isCurrencyConversionNeeded();
|
296 |
+
$exception_count = 0;
|
297 |
+
$store_id = FacebookAdsToolbox::getDefaultStoreId();
|
298 |
|
299 |
while ($count < $total_number_of_products) {
|
300 |
if ($should_log) {
|
306 |
$total_number_of_products :
|
307 |
($count + $batch_max)));
|
308 |
}
|
309 |
+
|
310 |
$products = Mage::getModel('catalog/product')->getCollection()
|
311 |
->addAttributeToSelect('*')
|
312 |
+
->addStoreFilter($store_id)
|
313 |
->setPageSize($batch_max)
|
314 |
->setCurPage($count / $batch_max + 1)
|
315 |
->addUrlRewrite();
|
316 |
|
|
|
317 |
foreach ($products as $product) {
|
318 |
$product->setStoreId($store_id);
|
319 |
if ($product->getVisibility() !=
|
320 |
Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE &&
|
321 |
$product->getStatus() !=
|
322 |
Mage_Catalog_Model_Product_Status::STATUS_DISABLED) {
|
323 |
+
|
324 |
+
try {
|
325 |
+
$e = $this->buildProductEntry($product);
|
326 |
+
$io->streamWrite($e."\n");
|
327 |
+
} catch (Exception $e) {
|
328 |
+
$exception_count++;
|
329 |
+
// Don't overload the logs, log the first 3 exceptions.
|
330 |
+
if ($exception_count <= 3) {
|
331 |
+
self::logException($e);
|
332 |
+
}
|
333 |
+
// If it looks like a systemic failure : stop feed generation.
|
334 |
+
if ($exception_count > 100) {
|
335 |
+
throw $e;
|
336 |
+
}
|
337 |
+
}
|
338 |
}
|
339 |
}
|
340 |
unset($products);
|
341 |
$count += $batch_max;
|
342 |
}
|
343 |
+
|
344 |
+
if ($exception_count != 0) {
|
345 |
+
self::log("Exceptions in Feed Generation : ".$exception_count);
|
346 |
+
}
|
347 |
}
|
348 |
|
349 |
public function estimateGenerationTime() {
|
458 |
$latin_string = preg_replace('/[^\\p{Latin}]/u', '', $string);
|
459 |
if ($latin_string !== '' &&
|
460 |
mb_strtoupper($latin_string, 'utf-8') === $latin_string) {
|
461 |
+
return mb_strtolower($string, 'utf-8');
|
462 |
}
|
463 |
}
|
464 |
return $string;
|
522 |
case 'bundle':
|
523 |
return $this->getBundleProductPrice($product);
|
524 |
default:
|
525 |
+
return $this->getFinalPrice($product);
|
526 |
}
|
527 |
}
|
528 |
|
534 |
->addAttributeToSelect('price')->addFilterByRequiredOptions();
|
535 |
foreach ($simple_collection as $simple_product) {
|
536 |
if ($simple_product->getPrice() > 0) {
|
537 |
+
return $this->getFinalPrice($simple_product);
|
538 |
}
|
539 |
}
|
540 |
}
|
541 |
+
return $this->getFinalPrice($product);
|
542 |
}
|
543 |
|
544 |
private function getBundleProductPrice($product) {
|
564 |
foreach ($group as $item) {
|
565 |
$item_price = $pm->getSelectionFinalTotalPrice($product, $item,
|
566 |
$bundle_quantity, $selection_quantity);
|
567 |
+
$item_price = $this->getFinalPrice($item, $item_price);
|
568 |
$min_price = min($min_price, $item_price);
|
569 |
}
|
570 |
$option_prices[] = $min_price;
|
571 |
}
|
572 |
|
573 |
+
return $this->getFinalPrice($product) + array_sum($option_prices);
|
574 |
}
|
575 |
|
576 |
private function getGroupedProductPrice($product) {
|
577 |
$assoc_products = $product->getTypeInstance(true)
|
578 |
->getAssociatedProductCollection($product)
|
579 |
+
->addAttributeToSelect('price')
|
580 |
+
->addAttributeToSelect('tax_class_id')
|
581 |
+
->addAttributeToSelect('tax_percent');
|
582 |
|
583 |
$min_price = INF;
|
584 |
foreach ($assoc_products as $assoc_product) {
|
585 |
+
$min_price = min($min_price, $this->getFinalPrice($assoc_product));
|
586 |
+
}
|
587 |
return $min_price;
|
588 |
}
|
589 |
|
590 |
+
private function getFinalPrice($product, $price = null) {
|
591 |
+
if (!isset($this->taxHelper)) {
|
592 |
+
$this->taxHelper = Mage::helper('tax');
|
593 |
+
}
|
594 |
+
if ($price === null) {
|
595 |
+
$price = $product->getFinalPrice();
|
596 |
+
}
|
597 |
+
return $this->taxHelper->getPrice($product, $price);
|
598 |
+
}
|
599 |
+
|
600 |
private function stripCurrencySymbol($price) {
|
601 |
if (!isset($this->currency_strip_needed)) {
|
602 |
$this->currency_strip_needed = !preg_match('/^[0-9,.]*$/', $price);
|
app/code/community/Facebook/AdsToolbox/controllers/DebugController.php
CHANGED
@@ -22,7 +22,9 @@ class Facebook_AdsToolbox_DebugController
|
|
22 |
if ($debug_key && $debug_key === FacebookAdsToolbox::getDebugKey()) {
|
23 |
$this->getResponse()->setHeader('Content-type', 'text');
|
24 |
$feed = $this->getRequest()->getParam('feed');
|
25 |
-
if ($feed) {
|
|
|
|
|
26 |
$this->getResponse()->setBody(FacebookAdsToolbox::getFeedLogs());
|
27 |
} else {
|
28 |
$this->getResponse()->setBody(FacebookAdsToolbox::getLogs());
|
22 |
if ($debug_key && $debug_key === FacebookAdsToolbox::getDebugKey()) {
|
23 |
$this->getResponse()->setHeader('Content-type', 'text');
|
24 |
$feed = $this->getRequest()->getParam('feed');
|
25 |
+
if ($feed && $feed == 'exception') {
|
26 |
+
$this->getResponse()->setBody(FacebookAdsToolbox::getFeedException());
|
27 |
+
} else if ($feed) {
|
28 |
$this->getResponse()->setBody(FacebookAdsToolbox::getFeedLogs());
|
29 |
} else {
|
30 |
$this->getResponse()->setBody(FacebookAdsToolbox::getLogs());
|
app/code/community/Facebook/AdsToolbox/controllers/ProductfeedController.php
CHANGED
@@ -21,7 +21,7 @@ class Facebook_AdsToolbox_ProductfeedController
|
|
21 |
$settings_id = Mage::getStoreConfig('facebook_ads_toolbox/dia/setting/id');
|
22 |
|
23 |
list($format, $feed, $supportzip) =
|
24 |
-
$obins->internalGenerateFacebookProductFeed(
|
25 |
if ($supportzip) {
|
26 |
$this->getResponse()->setHeader('Content-type', 'application/x-gzip');
|
27 |
list($filename, $filesize, $filecontent) = $feed->readGZip();
|
21 |
$settings_id = Mage::getStoreConfig('facebook_ads_toolbox/dia/setting/id');
|
22 |
|
23 |
list($format, $feed, $supportzip) =
|
24 |
+
$obins->internalGenerateFacebookProductFeed();
|
25 |
if ($supportzip) {
|
26 |
$this->getResponse()->setHeader('Content-type', 'application/x-gzip');
|
27 |
list($filename, $filesize, $filecontent) = $feed->readGZip();
|
app/code/community/Facebook/AdsToolbox/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Facebook_AdsToolbox>
|
5 |
-
<version>2.1.
|
6 |
</Facebook_AdsToolbox>
|
7 |
</modules>
|
8 |
<global>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Facebook_AdsToolbox>
|
5 |
+
<version>2.1.10</version>
|
6 |
</Facebook_AdsToolbox>
|
7 |
</modules>
|
8 |
<global>
|
app/code/community/Facebook/AdsToolbox/lib/fb.php
CHANGED
@@ -14,6 +14,7 @@ class FacebookAdsToolbox {
|
|
14 |
|
15 |
const LOGFILE = 'facebook_ads_extension.log';
|
16 |
const FEED_LOGFILE = 'facebook_adstoolbox_product_feed.log';
|
|
|
17 |
|
18 |
public static function version() {
|
19 |
return Mage::getConfig()->getModuleConfig("Facebook_AdsToolbox")->version;
|
@@ -61,6 +62,11 @@ class FacebookAdsToolbox {
|
|
61 |
return file_get_contents($log_file_path);
|
62 |
}
|
63 |
|
|
|
|
|
|
|
|
|
|
|
64 |
public static function log($msg) {
|
65 |
Mage::log($msg, Zend_Log::INFO, self::LOGFILE);
|
66 |
}
|
14 |
|
15 |
const LOGFILE = 'facebook_ads_extension.log';
|
16 |
const FEED_LOGFILE = 'facebook_adstoolbox_product_feed.log';
|
17 |
+
const FEED_EXCEPTION = 'facebook_product_feed_exception.log';
|
18 |
|
19 |
public static function version() {
|
20 |
return Mage::getConfig()->getModuleConfig("Facebook_AdsToolbox")->version;
|
62 |
return file_get_contents($log_file_path);
|
63 |
}
|
64 |
|
65 |
+
public static function getFeedException() {
|
66 |
+
$log_file_path = Mage::getBaseDir('log').'/'.self::FEED_EXCEPTION;
|
67 |
+
return file_get_contents($log_file_path);
|
68 |
+
}
|
69 |
+
|
70 |
public static function log($msg) {
|
71 |
Mage::log($msg, Zend_Log::INFO, self::LOGFILE);
|
72 |
}
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Facebook_Ads_Toolbox</name>
|
4 |
-
<version>2.1.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="https://raw.githubusercontent.com/fbsamples/audience-network-support/master/LICENSE">Facebook License</license>
|
7 |
<channel>community</channel>
|
@@ -59,12 +59,16 @@ _Installation Instructions_
|
|
59 |

|
60 |
Additional FAQ
|
61 |
https://www.facebook.com/help/532749253576163</description>
|
62 |
-
<notes
|
63 |
-
-
|
|
|
|
|
|
|
|
|
64 |
<authors><author><name>Jordan Rogers-Smith</name><user>jordanrs</user><email>jordanrs@fb.com</email></author><author><name>Yu Li</name><user>liyuhk</user><email>liyuhk@fb.com</email></author><author><name>Dmitri Dranishnikov</name><user>dmitrid</user><email>dmitrid@fb.com</email></author></authors>
|
65 |
-
<date>2016-10-
|
66 |
-
<time>02:
|
67 |
-
<contents><target name="magecommunity"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Block"><file name="AddToCart.php" hash="0bb7985b9079b8e70585aea350dc1524"/><dir name="Adminhtml"><file name="Diaindex.php" hash="f601096b3033fde99dbcfdc463572ec1"/><file name="Feedindex.php" hash="f08548f1c321e70fb4bebdf5fa6acc37"/><file name="Pixelindex.php" hash="ed25472f13e9dd8ec7e8c7f3378a198b"/></dir><file name="Head.php" hash="eb5ee970cfb6873b9def860232089460"/><file name="InitiateCheckout.php" hash="c47ed5209bed0ae4dbad120be1ba13b3"/><file name="Purchase.php" hash="0c65646369b87e6c818da4f3fdc0e155"/><file name="Search.php" hash="d8acaa72da8ca3df2146949276a3714d"/><file name="ViewCategory.php" hash="36e19e8ff10acbc862420ac8dc39fd05"/><file name="ViewContent.php" hash="38ced65dd84888045e3ef9f189124d0a"/><file name="common.php" hash="ed0e2a1dc8c84138dc6c728b2d428054"/></dir><dir name="Helper"><file name="Data.php" hash="09da04dbb30d6de8b7a873f0447456ba"/></dir><dir name="Model"><file name="FacebookProductFeed.php" hash="
|
68 |
<compatible/>
|
69 |
<dependencies><required><php><min>5.3.0</min><max>8.0.0</max></php></required></dependencies>
|
70 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Facebook_Ads_Toolbox</name>
|
4 |
+
<version>2.1.10</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="https://raw.githubusercontent.com/fbsamples/audience-network-support/master/LICENSE">Facebook License</license>
|
7 |
<channel>community</channel>
|
59 |

|
60 |
Additional FAQ
|
61 |
https://www.facebook.com/help/532749253576163</description>
|
62 |
+
<notes>Product feed improvements:
|
63 |
+
- Fix gzip feed file not generating for some stores.
|
64 |
+
- Use base currency instead of default currency.
|
65 |
+
- Fix issues with capitalization for some stores.
|
66 |
+
- Don't include products that have no store page.
|
67 |
+
- Include Tax in the product price.</notes>
|
68 |
<authors><author><name>Jordan Rogers-Smith</name><user>jordanrs</user><email>jordanrs@fb.com</email></author><author><name>Yu Li</name><user>liyuhk</user><email>liyuhk@fb.com</email></author><author><name>Dmitri Dranishnikov</name><user>dmitrid</user><email>dmitrid@fb.com</email></author></authors>
|
69 |
+
<date>2016-10-27</date>
|
70 |
+
<time>02:06:31</time>
|
71 |
+
<contents><target name="magecommunity"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Block"><file name="AddToCart.php" hash="0bb7985b9079b8e70585aea350dc1524"/><dir name="Adminhtml"><file name="Diaindex.php" hash="f601096b3033fde99dbcfdc463572ec1"/><file name="Feedindex.php" hash="f08548f1c321e70fb4bebdf5fa6acc37"/><file name="Pixelindex.php" hash="ed25472f13e9dd8ec7e8c7f3378a198b"/></dir><file name="Head.php" hash="eb5ee970cfb6873b9def860232089460"/><file name="InitiateCheckout.php" hash="c47ed5209bed0ae4dbad120be1ba13b3"/><file name="Purchase.php" hash="0c65646369b87e6c818da4f3fdc0e155"/><file name="Search.php" hash="d8acaa72da8ca3df2146949276a3714d"/><file name="ViewCategory.php" hash="36e19e8ff10acbc862420ac8dc39fd05"/><file name="ViewContent.php" hash="38ced65dd84888045e3ef9f189124d0a"/><file name="common.php" hash="ed0e2a1dc8c84138dc6c728b2d428054"/></dir><dir name="Helper"><file name="Data.php" hash="09da04dbb30d6de8b7a873f0447456ba"/></dir><dir name="Model"><file name="FacebookProductFeed.php" hash="ef868ae27fb129ab4d00fc04bfc9c3dc"/><file name="FacebookProductFeedSamples.php" hash="b79a1a2f4c857e2ed7b4971c3395406f"/><file name="FacebookProductFeedTSV.php" hash="74b0e3801fa807bfc48e8814c7c0d6c4"/><file name="FacebookProductFeedXML.php" hash="f62f7630ffd1f34b5a062855da62865f"/><file name="Observer.php" hash="6ba9ee34820ad5b86480fba72a540310"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FbfeedController.php" hash="a55045c8ad914584490d36f1410b0051"/><file name="FbfeedlogController.php" hash="34938878c691842a71f4f788c0b5cfee"/><file name="FbmainController.php" hash="b952bf87ca7b49a2b1fb256025e39331"/><file name="FbpixelController.php" hash="f00c250878671e6e4957239ddd952476"/><file name="FbregenController.php" hash="1837e42c7e6d4d9c77bb386732d08e28"/></dir><file name="DebugController.php" hash="b279f8b0a34590e11755079e0e6b34d0"/><file name="ProductfeedController.php" hash="283cf46abb9e688b80626e35e25e883e"/></dir><dir name="etc"><file name="adminhtml.xml" hash="be7e9a1dfc20ca73654c8e4ac557e4c9"/><file name="config.xml" hash="8536fdab5c2b216a3fccd135cec643c9"/></dir><dir name="lib"><file name="fb.php" hash="952d0a678eb38bec17a70fa772b79c28"/></dir></dir><file name="LICENSE" hash="4e3837b373e2371aeb3317bc8d245ad6"/><file name="PATENTS" hash="7eb20d51ce76c08c2e6c939674e75c93"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="facebookadstoolbox.xml" hash="cd8d60f293f5d1b5925efe01c7e48af7"/></dir><dir name="template"><dir name="facebookadstoolbox"><file name="addtocart.phtml" hash="cffaf57c6b633e1c5641783f08769726"/><file name="head.phtml" hash="217c676e9f1893f17073904a62796016"/><file name="initiate_checkout.phtml" hash="0f57840eef0477538b211d63d6c6d3b5"/><file name="purchase.phtml" hash="278c3819865a6a8ef3c03cb1189e4a4c"/><file name="search.phtml" hash="a67005ea51ae63b225cb598cf9152014"/><file name="viewcategory.phtml" hash="c56f37ab17654b53ace6180903900cf3"/><file name="viewcontent.phtml" hash="ebf7844a601511d85135cfaf623a9bc1"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="facebookadstoolbox.xml" hash="5974bb612e16c7b7eff07ef06eddebda"/></dir><dir name="template"><dir name="facebookadstoolbox"><file name="dia_index.phtml" hash="839af71b1454571a41243e24cecc84ec"/><file name="feed_index.phtml" hash="157e56ef40e56378bcd07284162fb439"/><file name="pixel_index.phtml" hash="0b8e1171703bfb27ce5c768c6e79dc81"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Adminhtml"><file name="dia.js" hash="323e73e09b3636ed378463ca288ddca0"/><file name="feed.js" hash="134fbbb334e0d2422b77435dc105ebf5"/><dir name="lib"><file name="react-dom.min.js" hash="80dd76fff4872e658666dec43913360c"/><file name="react.min.js" hash="c3207f7bf39699d4279ba404ea55f163"/></dir><file name="pixel.js" hash="916afd85272d48e3b34c8f2a9f4db38a"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Facebook_AdsToolbox.xml" hash="164bc795b6911c5b0a6ca357a56f38cc"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="css"><dir name="Adminhtml"><file name="dia.css" hash="201b2a78305d44d6eeebbf67231e7767"/><file name="feed.css" hash="2763caa9c8f3b9b21f85a59915d39157"/><file name="pixel.css" hash="8b143487fcc4a902c0e44de8e2af6eef"/></dir></dir><dir name="images"><dir name="Adminhtml"><file name="buttonbg.png" hash="09adbacda0d592a215277230c48df285"/><file name="fbicons.png" hash="8f1b559a279a3785f1b2492a79f518d8"/></dir></dir></dir></dir></dir></dir></dir></dir></target></contents>
|
72 |
<compatible/>
|
73 |
<dependencies><required><php><min>5.3.0</min><max>8.0.0</max></php></required></dependencies>
|
74 |
</package>
|