Facebook_Ads_Toolbox - Version 2.1.18

Version Notes

Product Feed Improvements :
- Up to 60% Faster Feed Upload for larger stores.
- Include all product categories in feed.

Download this release

Release Info

Developer Jordan Rogers-Smith
Extension Facebook_Ads_Toolbox
Version 2.1.18
Comparing to
See all releases


Code changes from version 2.1.17 to 2.1.18

app/code/community/Facebook/AdsToolbox/Block/Adminhtml/Diaindex.php CHANGED
@@ -84,6 +84,7 @@ class Facebook_AdsToolbox_Block_Adminhtml_Diaindex
84
 
85
  public function getTotalVisibleProducts() {
86
  return Mage::getModel('catalog/product')->getCollection()
 
87
  ->addAttributeToFilter('visibility',
88
  array(
89
  'neq' =>
84
 
85
  public function getTotalVisibleProducts() {
86
  return Mage::getModel('catalog/product')->getCollection()
87
+ ->addStoreFilter(FacebookAdsToolbox::getDefaultStoreId())
88
  ->addAttributeToFilter('visibility',
89
  array(
90
  'neq' =>
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeed.php CHANGED
@@ -256,6 +256,36 @@ class FacebookProductFeed {
256
  return strip_tags(html_entity_decode(($attr_value)));
257
  }
258
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
  public function save() {
260
  $io = new Varien_Io_File();
261
  $feed_file_path =
@@ -271,6 +301,9 @@ class FacebookProductFeed {
271
  $feed_file_path));
272
  }
273
 
 
 
 
274
  $io->streamOpen($this->getFileName());
275
  self::log('going to generate file:'.$this->getFileName());
276
 
@@ -278,17 +311,7 @@ class FacebookProductFeed {
278
 
279
  $store_id = FacebookAdsToolbox::getDefaultStoreId();
280
  $collection = Mage::getModel('catalog/product')->getCollection()
281
- ->addStoreFilter($store_id)
282
- ->addAttributeToFilter('visibility',
283
- array(
284
- 'neq' =>
285
- Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE
286
- ))
287
- ->addAttributeToFilter('status',
288
- array(
289
- 'eq' =>
290
- Mage_Catalog_Model_Product_Status::STATUS_ENABLED
291
- ));
292
 
293
  $total_number_of_products = $collection->getSize();
294
  unset($collection);
@@ -314,10 +337,7 @@ class FacebookProductFeed {
314
  $store_id = FacebookAdsToolbox::getDefaultStoreId();
315
 
316
  if ($should_log) {
317
- self::log(
318
- sprintf(
319
- 'About to begin writing %d products',
320
- $total_number_of_products));
321
  }
322
 
323
  $time_limit = (int) ini_get('max_execution_time');
@@ -345,25 +365,18 @@ class FacebookProductFeed {
345
  $products = Mage::getModel('catalog/product')->getCollection()
346
  ->addAttributeToSelect('*')
347
  ->addStoreFilter($store_id)
348
- ->addAttributeToFilter('visibility',
349
- array(
350
- 'neq' =>
351
- Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE
352
- ))
353
- ->addAttributeToFilter('status',
354
- array(
355
- 'eq' =>
356
- Mage_Catalog_Model_Product_Status::STATUS_ENABLED
357
- ))
358
  ->setPageSize($batch_max)
359
  ->setCurPage($count / $batch_max + 1)
360
  ->addUrlRewrite();
361
 
362
  foreach ($products as $product) {
363
  try {
364
- $product->setStoreId($store_id);
365
- $e = $this->buildProductEntry($product);
366
- $io->streamWrite($e."\n");
 
 
 
367
  } catch (\Exception $e) {
368
  $exception_count++;
369
  // Don't overload the logs, log the first 3 exceptions.
@@ -401,6 +414,7 @@ class FacebookProductFeed {
401
  $collection = Mage::getModel('catalog/product')->getCollection();
402
  $total_number_of_products = $collection->getSize();
403
  unset($collection);
 
404
 
405
  $num_samples =
406
  ($total_number_of_products <= 500) ? $total_number_of_products : 500;
@@ -655,18 +669,13 @@ class FacebookProductFeed {
655
  }
656
 
657
  private function getCategoryPath($product) {
658
- $category_string = "";
659
- $category = $product->getCategoryCollection()
660
- ->addAttributeToSelect('name')
661
- ->getFirstItem();
662
- while ($category->getName()
663
- && $category->getName() != 'Root Catalog'
664
- && $category->getName() != 'Default Category') {
665
- $category_string = ($category_string) ?
666
- $category->getName()." > ".$category_string :
667
- $category->getName();
668
- $category = $category->getParentCategory();
669
  }
670
- return $category_string;
671
  }
672
  }
256
  return strip_tags(html_entity_decode(($attr_value)));
257
  }
258
 
259
+ // Generates a map of the form : 4 => "Root > Mens > Shoes"
260
+ private function generateCategoryNameMap() {
261
+ $categories = Mage::getModel('catalog/category')->getCollection()
262
+ ->addAttributeToSelect('id')
263
+ ->addAttributeToSelect('name')
264
+ ->addAttributeToSelect('path')
265
+ ->addAttributeToSelect('is_active')
266
+ ->addAttributeToFilter('is_active', 1);
267
+ $name = array();
268
+ $breadcrumb = array();
269
+ foreach ($categories as $category)
270
+ {
271
+ $entity_id = $category->getId();
272
+ $name[$entity_id] = $category->getName();
273
+ $breadcrumb[$entity_id] = $category->getPath();
274
+ }
275
+ // Converts the product category paths to human readable form.
276
+ // e.g. "1/2/3" => "Root > Mens > Shoes"
277
+ foreach ($name as $id => $value)
278
+ {
279
+ $breadcrumb[$id] = implode(" > ", array_filter(array_map(
280
+ function ($inner_id) use (&$name) {
281
+ return isset($name[$inner_id]) ? $name[$inner_id] : null;
282
+ },
283
+ explode("/", $breadcrumb[$id])
284
+ )));
285
+ }
286
+ return $breadcrumb;
287
+ }
288
+
289
  public function save() {
290
  $io = new Varien_Io_File();
291
  $feed_file_path =
301
  $feed_file_path));
302
  }
303
 
304
+ self::log('Generating Categories');
305
+ $this->categoryNameMap = $this->generateCategoryNameMap();
306
+
307
  $io->streamOpen($this->getFileName());
308
  self::log('going to generate file:'.$this->getFileName());
309
 
311
 
312
  $store_id = FacebookAdsToolbox::getDefaultStoreId();
313
  $collection = Mage::getModel('catalog/product')->getCollection()
314
+ ->addStoreFilter($store_id);
 
 
 
 
 
 
 
 
 
 
315
 
316
  $total_number_of_products = $collection->getSize();
317
  unset($collection);
337
  $store_id = FacebookAdsToolbox::getDefaultStoreId();
338
 
339
  if ($should_log) {
340
+ self::log(sprintf('About to begin writing %d products',$total_number_of_products));
 
 
 
341
  }
342
 
343
  $time_limit = (int) ini_get('max_execution_time');
365
  $products = Mage::getModel('catalog/product')->getCollection()
366
  ->addAttributeToSelect('*')
367
  ->addStoreFilter($store_id)
 
 
 
 
 
 
 
 
 
 
368
  ->setPageSize($batch_max)
369
  ->setCurPage($count / $batch_max + 1)
370
  ->addUrlRewrite();
371
 
372
  foreach ($products as $product) {
373
  try {
374
+ if ($product->getVisibility() != Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE &&
375
+ $product->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_DISABLED) {
376
+ $product->setStoreId($store_id);
377
+ $e = $this->buildProductEntry($product);
378
+ $io->streamWrite($e."\n");
379
+ }
380
  } catch (\Exception $e) {
381
  $exception_count++;
382
  // Don't overload the logs, log the first 3 exceptions.
414
  $collection = Mage::getModel('catalog/product')->getCollection();
415
  $total_number_of_products = $collection->getSize();
416
  unset($collection);
417
+ $this->categoryNameMap = array();
418
 
419
  $num_samples =
420
  ($total_number_of_products <= 500) ? $total_number_of_products : 500;
669
  }
670
 
671
  private function getCategoryPath($product) {
672
+ $category_names = array();
673
+ $category_ids = $product->getCategoryIds();
674
+ foreach ($category_ids as $category_id) {
675
+ if (array_key_exists($category_id, $this->categoryNameMap)) {
676
+ $category_names[] = $this->categoryNameMap[$category_id];
677
+ }
 
 
 
 
 
678
  }
679
+ return implode(" | ", $category_names);
680
  }
681
  }
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeedSamples.php CHANGED
@@ -25,6 +25,7 @@ class FacebookProductFeedSamples extends FacebookProductFeed {
25
  public function generate() {
26
  $MAX = 12;
27
  $this->conversion_needed = false;
 
28
 
29
  $results = array();
30
 
25
  public function generate() {
26
  $MAX = 12;
27
  $this->conversion_needed = false;
28
+ $this->categoryNameMap = array();
29
 
30
  $results = array();
31
 
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeedTSV.php CHANGED
@@ -29,20 +29,6 @@ class FacebookProductFeedTSV extends FacebookProductFeed {
29
  // ref: https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-catalog
30
  const TSV_HEADER = "id\ttitle\tdescription\tlink\timage_link\tbrand\tcondition\tavailability\tprice\tshort_description\tproduct_type\tgoogle_product_category";
31
 
32
- function __construct() {
33
- $this->quote_chars = array(
34
- chr(145),
35
- chr(146),
36
- chr(147),
37
- chr(148),
38
- "\xe2\x80\x98",
39
- "\xe2\x80\x99",
40
- "\xe2\x80\x9c",
41
- "\xe2\x80\x9d",
42
- );
43
- $this->replacement_chars = array("'", "'", '"', '"', "'", "'", '"', '"');
44
- }
45
-
46
  protected function tsvescape($t) {
47
  // replace newlines as TSV does not allow multi-line value
48
  return str_replace(array("\r", "\n", "&nbsp;", "\t"), ' ', $t);
@@ -71,11 +57,7 @@ class FacebookProductFeedTSV extends FacebookProductFeed {
71
 
72
  protected function buildProductEntry($product) {
73
  $items = parent::buildProductEntry($product);
74
- $imploded_str = implode("\t", array_values($items));
75
- return str_replace(
76
- $this->quote_chars,
77
- $this->replacement_chars,
78
- $imploded_str);
79
  }
80
 
81
  }
29
  // ref: https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-catalog
30
  const TSV_HEADER = "id\ttitle\tdescription\tlink\timage_link\tbrand\tcondition\tavailability\tprice\tshort_description\tproduct_type\tgoogle_product_category";
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  protected function tsvescape($t) {
33
  // replace newlines as TSV does not allow multi-line value
34
  return str_replace(array("\r", "\n", "&nbsp;", "\t"), ' ', $t);
57
 
58
  protected function buildProductEntry($product) {
59
  $items = parent::buildProductEntry($product);
60
+ return implode("\t", array_values($items));
 
 
 
 
61
  }
62
 
63
  }
app/code/community/Facebook/AdsToolbox/Model/Observer.php CHANGED
@@ -133,9 +133,6 @@ class Facebook_AdsToolbox_Model_Observer {
133
  FacebookProductFeed::log(sprintf(
134
  'Caught exception: %s. %s', $e->getMessage(), $e->getTraceAsString()
135
  ));
136
- if ($supportzip) {
137
- $feed->saveGZip();
138
- }
139
  if ($throwException) {
140
  throw $e;
141
  }
133
  FacebookProductFeed::log(sprintf(
134
  'Caught exception: %s. %s', $e->getMessage(), $e->getTraceAsString()
135
  ));
 
 
 
136
  if ($throwException) {
137
  throw $e;
138
  }
app/code/community/Facebook/AdsToolbox/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Facebook_AdsToolbox>
5
- <version>2.1.17</version>
6
  </Facebook_AdsToolbox>
7
  </modules>
8
  <global>
2
  <config>
3
  <modules>
4
  <Facebook_AdsToolbox>
5
+ <version>2.1.18</version>
6
  </Facebook_AdsToolbox>
7
  </modules>
8
  <global>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Facebook_Ads_Toolbox</name>
4
- <version>2.1.17</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,15 +59,13 @@ _Installation Instructions_&#xD;
59
  &#xD;
60
  Additional FAQ&#xD;
61
  https://www.facebook.com/help/532749253576163</description>
62
- <notes>Product Feed Improvements:&#xD;
63
- - Fix product count displayed in the UI.&#xD;
64
- - Fix enclosure not terminated in feed.&#xD;
65
- - Increase max allowed feed generation time.&#xD;
66
- - Fix issue which prevent feed file generation.</notes>
67
- <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><author><name>Adam Hoff</name><user>ahoff</user><email>ahoff@fb.com</email></author></authors>
68
- <date>2016-12-16</date>
69
- <time>18:31:32</time>
70
- <contents><target name="magecommunity"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Block"><file name="AddToCart.php" hash="2e31117ad8e7b4e3ecf1e235277142ed"/><dir name="Adminhtml"><file name="Diaindex.php" hash="672bbe77bd2abcaae483d0ecd83a7fbd"/><file name="Feedindex.php" hash="86450e134bcfd4e30b94de3c29d6c101"/><file name="Pixelindex.php" hash="055c1d64fa60ec3909dd9d317392424d"/></dir><file name="Head.php" hash="8e392b70af8647013a9c15c0528ade73"/><file name="InitiateCheckout.php" hash="2ea5eeba2a53336d67081063b570082f"/><file name="Purchase.php" hash="10bd19d5d1687b8967fc1c4b91410e39"/><file name="Search.php" hash="a06d6ba96455beaed85c617ec758258a"/><file name="ViewCategory.php" hash="ecb02aa4085ba56baedf6fde729b4b79"/><file name="ViewContent.php" hash="a079a5a593a7faf389067177057db2a8"/><file name="common.php" hash="651e50d3f2a3d9f681a026fe10790109"/></dir><dir name="Helper"><file name="Data.php" hash="09da04dbb30d6de8b7a873f0447456ba"/></dir><dir name="Model"><file name="FacebookProductFeed.php" hash="7cdf49bb103cb92c0d3af23a1b271e0f"/><file name="FacebookProductFeedSamples.php" hash="56d006dc2cca6ca2e88e9ccae60d274a"/><file name="FacebookProductFeedTSV.php" hash="ceb913121be7465957b7c48fe5a9a297"/><file name="FacebookProductFeedXML.php" hash="c8ba195a0e85182b8541bd1a655e02d5"/><file name="Observer.php" hash="299a0d315d9ee0e8cb26c0eef3f8e23e"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FbfeedController.php" hash="0d7960608bcde90dd3d65a89e0c21692"/><file name="FbfeedlogController.php" hash="3b94fd3429ecf877cb54af173340a326"/><file name="FbmainController.php" hash="60eca5932835fca49fd0ca39b9ec7880"/><file name="FbpixelController.php" hash="f00c250878671e6e4957239ddd952476"/><file name="FbregenController.php" hash="1837e42c7e6d4d9c77bb386732d08e28"/></dir><file name="DebugController.php" hash="4d1219b72175e8b19d6fd6b3b59c7e8f"/><file name="ProductfeedController.php" hash="08e388ead90067721fb6718cac0779dd"/></dir><dir name="etc"><file name="adminhtml.xml" hash="be7e9a1dfc20ca73654c8e4ac557e4c9"/><file name="config.xml" hash="9f4e495205091aec49cb5d1a14685b6f"/></dir><dir name="lib"><file name="fb.php" hash="3cec6abe3ad61fba09ca9f510434ba56"/></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="c1a930b7c09e75f0d9746cba611e3c76"/><file name="head.phtml" hash="f70e26f4f4ee523a17a84ec577fdfde3"/><file name="initiate_checkout.phtml" hash="676e97512a1653bb3965c7171594db98"/><file name="purchase.phtml" hash="1a0383a64698a9d4c2131afc69762fc6"/><file name="search.phtml" hash="35d58ba1a53f73f715c81d2011a9a2d7"/><file name="viewcategory.phtml" hash="857d720f35a902f6ec86e34d5c88f203"/><file name="viewcontent.phtml" hash="55f054f759b06537376774ccbe6dddbe"/></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="9ac2e2030268bcdc33c430f21a6b357b"/><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>
71
  <compatible/>
72
  <dependencies><required><php><min>5.3.0</min><max>8.0.0</max></php></required></dependencies>
73
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Facebook_Ads_Toolbox</name>
4
+ <version>2.1.18</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
  &#xD;
60
  Additional FAQ&#xD;
61
  https://www.facebook.com/help/532749253576163</description>
62
+ <notes>Product Feed Improvements : &#xD;
63
+ - Up to 60% Faster Feed Upload for larger stores.&#xD;
64
+ - Include all product categories in feed.</notes>
65
+ <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><author><name>Adam Hoff</name><user>ahoff</user><email>ahoff@fb.com</email></author><author><name>Xia Wu</name><user>xiawuthu</user><email>xiawuthu@fb.com</email></author></authors>
66
+ <date>2017-01-13</date>
67
+ <time>02:27:14</time>
68
+ <contents><target name="magecommunity"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Block"><file name="AddToCart.php" hash="2e31117ad8e7b4e3ecf1e235277142ed"/><dir name="Adminhtml"><file name="Diaindex.php" hash="fc55e6bbd898a7842e6ebe087339ec1f"/><file name="Feedindex.php" hash="86450e134bcfd4e30b94de3c29d6c101"/><file name="Pixelindex.php" hash="055c1d64fa60ec3909dd9d317392424d"/></dir><file name="Head.php" hash="8e392b70af8647013a9c15c0528ade73"/><file name="InitiateCheckout.php" hash="2ea5eeba2a53336d67081063b570082f"/><file name="Purchase.php" hash="10bd19d5d1687b8967fc1c4b91410e39"/><file name="Search.php" hash="a06d6ba96455beaed85c617ec758258a"/><file name="ViewCategory.php" hash="ecb02aa4085ba56baedf6fde729b4b79"/><file name="ViewContent.php" hash="a079a5a593a7faf389067177057db2a8"/><file name="common.php" hash="651e50d3f2a3d9f681a026fe10790109"/></dir><dir name="Helper"><file name="Data.php" hash="09da04dbb30d6de8b7a873f0447456ba"/></dir><dir name="Model"><file name="FacebookProductFeed.php" hash="45fd15c1cf82252687a794a36204f83c"/><file name="FacebookProductFeedSamples.php" hash="378be26e8b2a5719f2634ffda4f37b29"/><file name="FacebookProductFeedTSV.php" hash="4391132b3f69b32e534a7a5aa21b779f"/><file name="FacebookProductFeedXML.php" hash="c8ba195a0e85182b8541bd1a655e02d5"/><file name="Observer.php" hash="0578b59a4818792201ffbeb61a731eb0"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FbfeedController.php" hash="0d7960608bcde90dd3d65a89e0c21692"/><file name="FbfeedlogController.php" hash="3b94fd3429ecf877cb54af173340a326"/><file name="FbmainController.php" hash="60eca5932835fca49fd0ca39b9ec7880"/><file name="FbpixelController.php" hash="f00c250878671e6e4957239ddd952476"/><file name="FbregenController.php" hash="1837e42c7e6d4d9c77bb386732d08e28"/></dir><file name="DebugController.php" hash="4d1219b72175e8b19d6fd6b3b59c7e8f"/><file name="ProductfeedController.php" hash="08e388ead90067721fb6718cac0779dd"/></dir><dir name="etc"><file name="adminhtml.xml" hash="be7e9a1dfc20ca73654c8e4ac557e4c9"/><file name="config.xml" hash="86e25ab0a37f914292a60b46b00c4f97"/></dir><dir name="lib"><file name="fb.php" hash="3cec6abe3ad61fba09ca9f510434ba56"/></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="c1a930b7c09e75f0d9746cba611e3c76"/><file name="head.phtml" hash="f70e26f4f4ee523a17a84ec577fdfde3"/><file name="initiate_checkout.phtml" hash="676e97512a1653bb3965c7171594db98"/><file name="purchase.phtml" hash="1a0383a64698a9d4c2131afc69762fc6"/><file name="search.phtml" hash="35d58ba1a53f73f715c81d2011a9a2d7"/><file name="viewcategory.phtml" hash="857d720f35a902f6ec86e34d5c88f203"/><file name="viewcontent.phtml" hash="55f054f759b06537376774ccbe6dddbe"/></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="9ac2e2030268bcdc33c430f21a6b357b"/><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>
 
 
69
  <compatible/>
70
  <dependencies><required><php><min>5.3.0</min><max>8.0.0</max></php></required></dependencies>
71
  </package>