HawkSearch_Datafeed - Version 1.0.0.2

Version Notes

Should have url generation for Magento 1.13
Should have category generation for attributes file
Minor fix for attributes returning int values.

Download this release

Release Info

Developer Hawksearch Inc.
Extension HawkSearch_Datafeed
Version 1.0.0.2
Comparing to
See all releases


Code changes from version 1.0.0.0 to 1.0.0.2

app/code/community/Hawksearch/Datafeed/Model/Feed.php CHANGED
@@ -21,6 +21,8 @@ class Hawksearch_Datafeed_Model_Feed extends Mage_Core_Model_Abstract {
21
  $_feedPath,
22
  $isLoggingEnabled,
23
  $_totalProductCount,
 
 
24
  $_optionType;
25
 
26
  private $countryMap;
@@ -109,7 +111,7 @@ FROM
109
  LEFT JOIN
110
  $eavAttributeTable a ON v.attribute_id = a.attribute_id
111
  WHERE
112
- v.entity_type_id = $entity_type_id
113
  AND
114
  a.frontend_input IN ('select', 'multiselect')
115
  AND a.attribute_code != 'msrp_enabled' AND a.attribute_code != 'msrp_display_actual_price_type' AND a.attribute_code != 'is_recurring' AND a.attribute_code != 'enable_googlecheckout' AND a.attribute_code != 'tax_class_id' AND a.attribute_code != 'visibility' AND a.attribute_code != 'status'
@@ -228,7 +230,7 @@ EOSQL;
228
  'varchar',
229
  'decimal',
230
  'datetime',
231
- 'catalog_category_product',
232
  );
233
 
234
  $multiSelectValues = $this->getMultiSelectValues();
@@ -251,6 +253,7 @@ EOSQL;
251
  // Loop through each of the catalog_product_entity_XXX tables separately. Despite tribal knowledge to the contrary
252
  // among DB developers, in this specific case multiple queries happens to be faster than multiple joins.
253
  foreach ($tables as $table) {
 
254
  $done = false;
255
  $offset = 0;
256
  $valueTable = $productEntityValueTable . $table;
@@ -261,6 +264,8 @@ SELECT
261
  e.entity_id,
262
  e.sku,
263
  a.attribute_code,
 
 
264
  a.attribute_code As value
265
  FROM
266
  $productEntityTable e
@@ -278,17 +283,22 @@ EOSQL;
278
  // overhead of being set up in the first place. This query takes less than 2 seconds each
279
  // time it is called, compared to the over 5 minutes it took previously, when the temp
280
  // table was a good idea.
281
- $valColumn = 'v.value';
282
  $eaovTable = '';
283
  if ($table == 'int') {
284
- $valColumn = "case when a.frontend_input = 'select' and (a.source_model = 'eav/entity_attribute_source_table' or a.source_model = '') then eaov.value else v.value end AS value";
285
- $eaovTable = "LEFT JOIN $eavOptionValueTable eaov ON eaov.option_id = v.value";
 
 
 
286
  }
287
  $selectQry = <<<EOSQL
288
  SELECT
289
  e.entity_id,
290
  e.sku,
291
  a.attribute_code,
 
 
292
  $valColumn
293
  FROM
294
  $productEntityTable e
@@ -310,6 +320,8 @@ SELECT
310
  e.entity_id,
311
  e.sku,
312
  a.attribute_code,
 
 
313
  v.value
314
  FROM
315
  $productEntityTable e
@@ -355,9 +367,16 @@ EOSQL;
355
 
356
  } else if (is_numeric($values[0])) {
357
  foreach ($values as $val) {
358
- if (!empty($multiSelectValues[$row['attribute_code']][$val])) {
359
  //$content .= "\"" . $row['sku'] . "\"\t\"" . $row['attribute_code'] . "\"\t\"" . str_replace("\"", "\"\"", $multiSelectValues[$row['attribute_code']][$val]) . "\"\n";
360
  $output->appendRow(array($row['sku'], $row['attribute_code'], $multiSelectValues[$row['attribute_code']][$val]));
 
 
 
 
 
 
 
361
  } else {
362
  //$content .= "\"" . $row['sku'] . "\"\t\"" . $row['attribute_code'] . "\"\t\"" . str_replace("\"", "\"\"", $val) . "\"\n";
363
  $output->appendRow(array($row['sku'], $row['attribute_code'], $val));
@@ -394,6 +413,52 @@ EOSQL;
394
  }
395
  }
396
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
397
  return true;
398
  }
399
 
@@ -440,7 +505,7 @@ EOSQL;
440
 
441
  //$content = "category_id\tcategory_name\tparent_category_id\tsort_order\n1\tRoot\t0\t0\n";
442
  $output = new CsvWriter($filename, $this->outputFileDelimiter, $this->bufferSize);
443
- $output->appendRow(array('category_id', 'category_name', 'parent_category_id','sort_order'));
444
  $output->appendRow(array('1', 'Root', '0', '0'));
445
 
446
  while (!$done) {
@@ -534,8 +599,8 @@ EOSQL;
534
 
535
  $disabled_sql = '';
536
  $CONN = ' WHERE ';
537
- if(!$allowDisabled){
538
- $disabled_sql = "LEFT JOIN $productEntityIntTable AS T6 ON P.entity_id = T6.entity_id AND T6.attribute_id = '" . $attrCodes['status']. "'";
539
  }
540
 
541
  $brandAttribute = Mage::helper('hawksearch_datafeed/data')->getBrandAttribute();
@@ -543,8 +608,14 @@ EOSQL;
543
  $brand_select = ", B5.value AS Brand";
544
  $brand_sql = "LEFT JOIN " . $productEntityIntTable . " AS B5 ON P.entity_id = B5.entity_id AND B5.attribute_id = '" . $attrCodes[$brandAttribute] . "'";
545
  }
 
 
 
 
 
 
546
 
547
- $select_qry = "SELECT P.attribute_set_id, P.entity_id AS ProductID, P.type_id, P.sku, P.has_options, V.value AS Name, T1.value AS ProdDesc, T2.value AS ShortDesc, T3.value AS MetaKeyword, T5.value AS visibility, D.value AS Price, S.value AS Special_Price, SDF.value As Special_Date_From, SDT.value As Special_Date_To, ST.qty, ST.is_in_stock AS IsInStock, X.value AS Msrp" . $brand_select . ", R.parent_id AS GroupID, CONCAT(V1.value, '.html') AS Link,
548
  CASE
549
  WHEN V2.Value IS NULL
550
  THEN '/no-image.jpg'
@@ -553,7 +624,7 @@ EOSQL;
553
  FROM $productEntityTable AS P
554
  INNER JOIN " . $productEntityVarCharTable . " AS V ON P.entity_id = V.entity_id AND V.attribute_id = '" . $attrCodes['name'] . "'
555
  INNER JOIN " . $catalogInventoryStockTable . " AS ST ON P.entity_id = ST.product_id
556
- LEFT JOIN " . $productEntityUrlTable . " AS V1 ON P.entity_id = V1.entity_id AND V1.attribute_id = '" . $attrCodes['url_key'] . "'
557
  LEFT JOIN " . $productEntityVarCharTable . " AS V2 ON P.entity_id = V2.entity_id AND V2.attribute_id = '" . $attrCodes['image'] . "'
558
  LEFT JOIN " . $productEntityTextTable . " AS T1 ON P.entity_id = T1.entity_id AND T1.attribute_id = '" . $attrCodes['description'] . "'
559
  LEFT JOIN " . $productEntityTextTable . " AS T2 ON P.entity_id = T2.entity_id AND T2.attribute_id = '" . $attrCodes['short_description'] . "'
@@ -573,7 +644,7 @@ EOSQL;
573
  $select_qry .= " $CONN ST.is_in_stock = 1";
574
  $CONN = ' AND ';
575
  }
576
- if(!$allowDisabled) {
577
  $select_qry .= " $CONN T6.value = 1 ";
578
  $CONN = ' AND ';
579
  }
@@ -761,7 +832,7 @@ EOSQL;
761
 
762
  public function getCountryName($code) {
763
  /* map friendly country_of_origin names */
764
- if(!isset($this->countryMap)){
765
  $options = Mage::getModel('directory/country')->getResourceCollection()->toOptionArray();
766
 
767
  $this->countryMap = array();
@@ -771,7 +842,7 @@ EOSQL;
771
  }
772
  }
773
  }
774
- return isset($this->countryMap[$code]) ? $this->countryMap[$code]: $code;
775
  }
776
 
777
  public function generateFeed($price_feed = false) {
@@ -869,6 +940,7 @@ EOSQL;
869
  return $this->_ajaxNotice;
870
  }
871
  }
 
872
  /**
873
  * CsvWriter
874
  *
@@ -898,10 +970,10 @@ class CsvWriter {
898
  }
899
 
900
  public function appendRow(array $fields) {
901
- if(!$this->outputOpen){
902
  $this->openOutput();
903
  }
904
- if(false === fputcsv($this->outputFile, $fields, $this->delimiter)) {
905
  throw new Exception("CsvWriter: failed to write row.");
906
  }
907
  }
@@ -910,7 +982,7 @@ class CsvWriter {
910
  if (false === ($this->outputFile = fopen($this->finalDestinationPath, 'a'))) {
911
  throw new Exception("CsvWriter: Failed to open destination file '$this->finalDestinationPath'.");
912
  }
913
- if(!is_null($this->bufferSize)) {
914
  stream_set_write_buffer($this->outputFile, $this->bufferSize);
915
  }
916
  $this->outputOpen = true;
@@ -918,7 +990,7 @@ class CsvWriter {
918
 
919
  public function closeOutput() {
920
  if (!$this->outputOpen) {
921
- if(false === fclose($this->outputFile)) {
922
  throw new Exception("CsvWriter: Failed to close destination file'$this->finalDestinationPath'.");
923
  }
924
  $this->outputOpen = false;
21
  $_feedPath,
22
  $isLoggingEnabled,
23
  $_totalProductCount,
24
+ $_imageHeight,
25
+ $_imageWidth,
26
  $_optionType;
27
 
28
  private $countryMap;
111
  LEFT JOIN
112
  $eavAttributeTable a ON v.attribute_id = a.attribute_id
113
  WHERE
114
+ v.entity_type_id = $this->_entityTypeId
115
  AND
116
  a.frontend_input IN ('select', 'multiselect')
117
  AND a.attribute_code != 'msrp_enabled' AND a.attribute_code != 'msrp_display_actual_price_type' AND a.attribute_code != 'is_recurring' AND a.attribute_code != 'enable_googlecheckout' AND a.attribute_code != 'tax_class_id' AND a.attribute_code != 'visibility' AND a.attribute_code != 'status'
230
  'varchar',
231
  'decimal',
232
  'datetime',
233
+ // 'catalog_category_product',
234
  );
235
 
236
  $multiSelectValues = $this->getMultiSelectValues();
253
  // Loop through each of the catalog_product_entity_XXX tables separately. Despite tribal knowledge to the contrary
254
  // among DB developers, in this specific case multiple queries happens to be faster than multiple joins.
255
  foreach ($tables as $table) {
256
+ //$output->appendRow(array('NOW', 'OUTPUTTING', $table));
257
  $done = false;
258
  $offset = 0;
259
  $valueTable = $productEntityValueTable . $table;
264
  e.entity_id,
265
  e.sku,
266
  a.attribute_code,
267
+ a.source_model,
268
+ a.attribute_id,
269
  a.attribute_code As value
270
  FROM
271
  $productEntityTable e
283
  // overhead of being set up in the first place. This query takes less than 2 seconds each
284
  // time it is called, compared to the over 5 minutes it took previously, when the temp
285
  // table was a good idea.
286
+ $valColumn = "v.value";
287
  $eaovTable = '';
288
  if ($table == 'int') {
289
+ $valColumn = "case when a.frontend_input = 'select' and (a.source_model = 'eav/entity_attribute_source_table' or a.source_model = '' or a.source_model IS NULL) then ov.value else v.value end AS value";
290
+ $eaovTable = "LEFT JOIN $eavOptionValueTable ov ON ov.option_id = v.value and ov.store_id = 0";
291
+ } elseif ($table == 'varchar') {
292
+ $valColumn = "case a.frontend_input when 'multiselect' then ov.value else v.value end AS value";
293
+ $eaovTable = "LEFT JOIN $eavOptionValueTable ov ON ov.option_id = v.value and ov.store_id = 0";
294
  }
295
  $selectQry = <<<EOSQL
296
  SELECT
297
  e.entity_id,
298
  e.sku,
299
  a.attribute_code,
300
+ a.source_model,
301
+ a.attribute_id,
302
  $valColumn
303
  FROM
304
  $productEntityTable e
320
  e.entity_id,
321
  e.sku,
322
  a.attribute_code,
323
+ a.source_model,
324
+ a.attribute_id,
325
  v.value
326
  FROM
327
  $productEntityTable e
367
 
368
  } else if (is_numeric($values[0])) {
369
  foreach ($values as $val) {
370
+ if (false && !empty($multiSelectValues[$row['attribute_code']][$val])) {
371
  //$content .= "\"" . $row['sku'] . "\"\t\"" . $row['attribute_code'] . "\"\t\"" . str_replace("\"", "\"\"", $multiSelectValues[$row['attribute_code']][$val]) . "\"\n";
372
  $output->appendRow(array($row['sku'], $row['attribute_code'], $multiSelectValues[$row['attribute_code']][$val]));
373
+ } elseif ($table == 'int' && !empty($row['source_model'])) {
374
+ $source = Mage::getSingleton($row['source_model']);
375
+ if ($row['source_model'] == 'eav/entity_attribute_source_table') {
376
+ $attribute = Mage::getModel('eav/entity_attribute')->load($row['attribute_id']);
377
+ $source->setAttribute($attribute);
378
+ }
379
+ $output->appendRow(array($row['sku'], $row['attribute_code'], $source->getOptionText($row['value'])));
380
  } else {
381
  //$content .= "\"" . $row['sku'] . "\"\t\"" . $row['attribute_code'] . "\"\t\"" . str_replace("\"", "\"\"", $val) . "\"\n";
382
  $output->appendRow(array($row['sku'], $row['attribute_code'], $val));
413
  }
414
  }
415
 
416
+ /* custom attribute code/category_id */
417
+ $collection = Mage::getModel('catalog/product')->getCollection();
418
+ $collection->addAttributeToSelect('sku');
419
+ $collection->addAttributeToFilter('visibility', array('neq' => Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE));
420
+ if (!Mage::helper('hawksearch_datafeed/data')->getAllowDisabledAttribute()) {
421
+ $collection->addAttributeToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
422
+ }
423
+ if(!Mage::helper('hawksearch_datafeed/data')->isIncludeOutOfStockItems()) {
424
+ /** @var Mage_CatalogInventory_Model_Stock $stockfilter */
425
+ $stockfilter = Mage::getSingleton('cataloginventory/stock');
426
+ $stockfilter->addInStockFilterToCollection($collection);
427
+ }
428
+
429
+ $collection->setPageSize($this->_batchSize);
430
+ $totalPages = $collection->getLastPageNumber();
431
+
432
+ $currentPage = 1;
433
+ do {
434
+ $collection->setCurPage($currentPage);
435
+ /** @var Mage_Catalog_Model_Product $product */
436
+ foreach ($collection as $product) {
437
+ foreach($product->getCategoryIds() as $id) {
438
+ $output->appendRow(array($product->getSku(), 'category_id', $id));
439
+ }
440
+ /* Example of custom attribute generation */
441
+ // $product->load('media_gallery');
442
+ // /** @var Varien_Data_Collection $images */
443
+ // $images = $product->getMediaGalleryImages();
444
+ // $image = $images->getLastItem();
445
+ // $imagePath = $image->getFile();
446
+ // $output->appendRow(array($product->getSku(), 'rollover_image', $imagePath));
447
+
448
+ /* Gallery images should come out sorted,
449
+ but if not, try this instead of getLastItem(): */
450
+ // $pos = 0;
451
+ // foreach ($images as $image) {
452
+ // if ($image->getPosition() >= $pos) {
453
+ // $pos = $image->getPosition();
454
+ // $imagePath = $image->getFile();
455
+ // }
456
+ // }
457
+ }
458
+ $collection->clear();
459
+ $currentPage++;
460
+ } while ($currentPage <= $totalPages);
461
+
462
  return true;
463
  }
464
 
505
 
506
  //$content = "category_id\tcategory_name\tparent_category_id\tsort_order\n1\tRoot\t0\t0\n";
507
  $output = new CsvWriter($filename, $this->outputFileDelimiter, $this->bufferSize);
508
+ $output->appendRow(array('category_id', 'category_name', 'parent_category_id', 'sort_order'));
509
  $output->appendRow(array('1', 'Root', '0', '0'));
510
 
511
  while (!$done) {
599
 
600
  $disabled_sql = '';
601
  $CONN = ' WHERE ';
602
+ if (!$allowDisabled) {
603
+ $disabled_sql = "LEFT JOIN $productEntityIntTable AS T6 ON P.entity_id = T6.entity_id AND T6.attribute_id = '" . $attrCodes['status'] . "'";
604
  }
605
 
606
  $brandAttribute = Mage::helper('hawksearch_datafeed/data')->getBrandAttribute();
608
  $brand_select = ", B5.value AS Brand";
609
  $brand_sql = "LEFT JOIN " . $productEntityIntTable . " AS B5 ON P.entity_id = B5.entity_id AND B5.attribute_id = '" . $attrCodes[$brandAttribute] . "'";
610
  }
611
+ $urlfield = ", CONCAT(V1.value, '.html') AS Link";
612
+ $urljoin = "LEFT JOIN $productEntityUrlTable AS V1 ON P.entity_id = V1.entity_id AND V1.attribute_id = '" . $attrCodes['url_key'] . "'";
613
+ if (!Mage::getSingleton('core/resource')->getConnection('core_write')->isTableExists('catalog_product_entity_url_key')) {
614
+ $urlfield = '';
615
+ $urljoin = '';
616
+ }
617
 
618
+ $select_qry = "SELECT P.attribute_set_id, P.entity_id AS ProductID, P.type_id, P.sku, P.has_options, V.value AS Name, T1.value AS ProdDesc, T2.value AS ShortDesc, T3.value AS MetaKeyword, T5.value AS visibility, D.value AS Price, S.value AS Special_Price, SDF.value As Special_Date_From, SDT.value As Special_Date_To, ST.qty, ST.is_in_stock AS IsInStock, X.value AS Msrp" . $brand_select . ", R.parent_id AS GroupID $urlfield,
619
  CASE
620
  WHEN V2.Value IS NULL
621
  THEN '/no-image.jpg'
624
  FROM $productEntityTable AS P
625
  INNER JOIN " . $productEntityVarCharTable . " AS V ON P.entity_id = V.entity_id AND V.attribute_id = '" . $attrCodes['name'] . "'
626
  INNER JOIN " . $catalogInventoryStockTable . " AS ST ON P.entity_id = ST.product_id
627
+ " . $urljoin . "
628
  LEFT JOIN " . $productEntityVarCharTable . " AS V2 ON P.entity_id = V2.entity_id AND V2.attribute_id = '" . $attrCodes['image'] . "'
629
  LEFT JOIN " . $productEntityTextTable . " AS T1 ON P.entity_id = T1.entity_id AND T1.attribute_id = '" . $attrCodes['description'] . "'
630
  LEFT JOIN " . $productEntityTextTable . " AS T2 ON P.entity_id = T2.entity_id AND T2.attribute_id = '" . $attrCodes['short_description'] . "'
644
  $select_qry .= " $CONN ST.is_in_stock = 1";
645
  $CONN = ' AND ';
646
  }
647
+ if (!$allowDisabled) {
648
  $select_qry .= " $CONN T6.value = 1 ";
649
  $CONN = ' AND ';
650
  }
832
 
833
  public function getCountryName($code) {
834
  /* map friendly country_of_origin names */
835
+ if (!isset($this->countryMap)) {
836
  $options = Mage::getModel('directory/country')->getResourceCollection()->toOptionArray();
837
 
838
  $this->countryMap = array();
842
  }
843
  }
844
  }
845
+ return isset($this->countryMap[$code]) ? $this->countryMap[$code] : $code;
846
  }
847
 
848
  public function generateFeed($price_feed = false) {
940
  return $this->_ajaxNotice;
941
  }
942
  }
943
+
944
  /**
945
  * CsvWriter
946
  *
970
  }
971
 
972
  public function appendRow(array $fields) {
973
+ if (!$this->outputOpen) {
974
  $this->openOutput();
975
  }
976
+ if (false === fputcsv($this->outputFile, $fields, $this->delimiter)) {
977
  throw new Exception("CsvWriter: failed to write row.");
978
  }
979
  }
982
  if (false === ($this->outputFile = fopen($this->finalDestinationPath, 'a'))) {
983
  throw new Exception("CsvWriter: Failed to open destination file '$this->finalDestinationPath'.");
984
  }
985
+ if (!is_null($this->bufferSize)) {
986
  stream_set_write_buffer($this->outputFile, $this->bufferSize);
987
  }
988
  $this->outputOpen = true;
990
 
991
  public function closeOutput() {
992
  if (!$this->outputOpen) {
993
+ if (false === fclose($this->outputFile)) {
994
  throw new Exception("CsvWriter: Failed to close destination file'$this->finalDestinationPath'.");
995
  }
996
  $this->outputOpen = false;
app/code/community/Hawksearch/Datafeed/controllers/SearchController.php CHANGED
@@ -117,9 +117,6 @@ class Hawksearch_Datafeed_SearchController extends Mage_Core_Controller_Front_Ac
117
  try {
118
  Mage::helper('hawksearch_datafeed/feed')->generateFeedsForAllStores();
119
  }
120
- catch (Exception $e) {
121
- $response['error'] = $e->getMessage();
122
- }
123
  catch (Exception $e) {
124
  Mage::logException($e);
125
  $response['error'] = "An unknown error occurred.";
@@ -133,7 +130,7 @@ class Hawksearch_Datafeed_SearchController extends Mage_Core_Controller_Front_Ac
133
  * Refreshes image cache based on passed in store id. Defaults store id to default store
134
  */
135
  public function runImageCacheGenerationAction() {
136
- $response = "";
137
  try {
138
  $storeId = $this->getRequest()->getParam("storeId");
139
 
@@ -143,14 +140,13 @@ class Hawksearch_Datafeed_SearchController extends Mage_Core_Controller_Front_Ac
143
 
144
  Mage::getModel('hawksearch_datafeed/feed')->setData('store_id', $storeId)->refreshImageCache();
145
  }
146
- catch (Exception $e) {
147
- $response = $e->getMessage();
148
- }
149
  catch (Exception $e) {
150
  Mage::logException($e);
151
- $response = "An unknown error occurred.";
152
  }
153
- $this->getResponse()->setBody($response);
 
 
154
  }
155
 
156
  /**
@@ -166,9 +162,6 @@ class Hawksearch_Datafeed_SearchController extends Mage_Core_Controller_Front_Ac
166
  }
167
  Mage::getModel('hawksearch_datafeed/feed')->setData('store_id', $storeId)->generateFeed(true);
168
  }
169
- catch (Exception $e) {
170
- $response = $e->getMessage();
171
- }
172
  catch (Exception $e) {
173
  Mage::logException($e);
174
  $response = "An unknown error occurred.";
117
  try {
118
  Mage::helper('hawksearch_datafeed/feed')->generateFeedsForAllStores();
119
  }
 
 
 
120
  catch (Exception $e) {
121
  Mage::logException($e);
122
  $response['error'] = "An unknown error occurred.";
130
  * Refreshes image cache based on passed in store id. Defaults store id to default store
131
  */
132
  public function runImageCacheGenerationAction() {
133
+ $response = array("error" => false);
134
  try {
135
  $storeId = $this->getRequest()->getParam("storeId");
136
 
140
 
141
  Mage::getModel('hawksearch_datafeed/feed')->setData('store_id', $storeId)->refreshImageCache();
142
  }
 
 
 
143
  catch (Exception $e) {
144
  Mage::logException($e);
145
+ $response['error'] = "An unknown error occurred.";
146
  }
147
+ $this->getResponse()
148
+ ->setHeader("Content-Type", "application/json")
149
+ ->setBody(json_encode($response));
150
  }
151
 
152
  /**
162
  }
163
  Mage::getModel('hawksearch_datafeed/feed')->setData('store_id', $storeId)->generateFeed(true);
164
  }
 
 
 
165
  catch (Exception $e) {
166
  Mage::logException($e);
167
  $response = "An unknown error occurred.";
app/code/community/Hawksearch/Datafeed/etc/config.xml CHANGED
@@ -12,7 +12,7 @@
12
  <config>
13
  <modules>
14
  <Hawksearch_Datafeed>
15
- <version>1.0.0.0</version>
16
  </Hawksearch_Datafeed>
17
  </modules>
18
  <global>
12
  <config>
13
  <modules>
14
  <Hawksearch_Datafeed>
15
+ <version>1.0.0.2</version>
16
  </Hawksearch_Datafeed>
17
  </modules>
18
  <global>
app/code/community/Hawksearch/Datafeed/etc/system.xml CHANGED
@@ -181,6 +181,15 @@
181
  <show_in_website>0</show_in_website>
182
  <show_in_store>0</show_in_store>
183
  </optional_htaccess_password>
 
 
 
 
 
 
 
 
 
184
  </fields>
185
  </feed>
186
  <cron translate="label" module="hawksearch_datafeed">
181
  <show_in_website>0</show_in_website>
182
  <show_in_store>0</show_in_store>
183
  </optional_htaccess_password>
184
+ <option_type translate="label">
185
+ <label>Attribute type</label>
186
+ <frontend_type>text</frontend_type>
187
+ <comment>Mode should generally be set to 'eav'</comment>
188
+ <sort_order>900</sort_order>
189
+ <show_in_default>1</show_in_default>
190
+ <show_in_website>0</show_in_website>
191
+ <show_in_store>0</show_in_store>
192
+ </option_type>
193
  </fields>
194
  </feed>
195
  <cron translate="label" module="hawksearch_datafeed">
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>HawkSearch_Datafeed</name>
4
- <version>1.0.0.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/OSL-3.0">Open Software License (OSL)</license>
7
  <channel>community</channel>
@@ -9,11 +9,12 @@
9
  <summary>This package generates data feeds in the required format and can be consumed by Hawk Search.</summary>
10
  <description>This package generates data feeds in the required format and can be consumed by Hawk Search.</description>
11
  <notes>Should have url generation for Magento 1.13&#xD;
12
- Should have category generation for attributes file</notes>
 
13
  <authors><author><name>Hawksearch Inc.</name><user>hawksearch</user><email>mmunoz@thanxmedia.com</email></author></authors>
14
- <date>2014-06-04</date>
15
- <time>19:47:02</time>
16
- <contents><target name="magecommunity"><dir name="Hawksearch"><dir name="Datafeed"><dir name="Block"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Version.php" hash="7f72ce91b67d40e68424454a449f1841"/></dir></dir><file name="Form.php" hash="1f6eaf265d3b8c78d3efd93cf93c7f2d"/><dir name="Frontend"><dir name="Feed"><dir name="Generate"><file name="Js.php" hash="b54e5207b5579648d7dfeb9515b3dfb2"/></dir><file name="Generate.php" hash="c73b0b2bd965b5c4e4cded455f23baa1"/><dir name="Generateimagecache"><file name="Js.php" hash="a8e2a4c5a6827eec8d9eebc88db9bbb9"/></dir><file name="Generateimagecache.php" hash="05a3585804163326b33d3a46ab7717b5"/><file name="Next.php" hash="92a25b140bc4d0f3b0c7b497fdf0ca6d"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="569bc6b857b652c80b933a6da02e4e19"/><file name="Feed.php" hash="8cf12219fcb541c409d1cde16b366de1"/></dir><dir name="Model"><file name="Cron.php" hash="2d5421315908619a744b96aa9d4d77cb"/><file name="Email.php" hash="f671df12afac28ae10713cd1972bef2c"/><file name="Feed.php" hash="d1c1fc9b1373cbf5c0cff5efbd9dcd93"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="2919385264c00276cbf09c105418d5ed"/></dir></dir></dir></dir><dir name="controllers"><file name="SearchController.php" hash="8250847b6e2526be19e04f807640d699"/></dir><dir name="etc"><file name="adminhtml.xml" hash="96daebeddbd749dfe0341818fe2eeabb"/><file name="config.xml" hash="8513047fa7d9020175957349cb968755"/><file name="system.xml" hash="3b763bc3073ce575eedb1632efc988a3"/></dir><dir name="sql"><dir name="hawksearch_datafeed_setup"><file name="install-1.0.0.0.php" hash="768e75fd75bbd9532c92859346d78ef2"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="hawksearch"><dir name="search"><dir name="sysconfig"><dir name="generate"><file name="js.phtml" hash="aa7a51511eaf9c2c1319df358181ae70"/></dir><dir name="generateimagecache"><file name="js.phtml" hash="aba0594893460ae5763ae243866e7e65"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Hawksearch_Datafeed.xml" hash="06b94625c6b60d1269fe61c4127d2146"/></dir></target></contents>
17
  <compatible/>
18
  <dependencies><required><php><min>5.1.0</min><max>8.1.0</max></php></required></dependencies>
19
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>HawkSearch_Datafeed</name>
4
+ <version>1.0.0.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/OSL-3.0">Open Software License (OSL)</license>
7
  <channel>community</channel>
9
  <summary>This package generates data feeds in the required format and can be consumed by Hawk Search.</summary>
10
  <description>This package generates data feeds in the required format and can be consumed by Hawk Search.</description>
11
  <notes>Should have url generation for Magento 1.13&#xD;
12
+ Should have category generation for attributes file&#xD;
13
+ Minor fix for attributes returning int values.</notes>
14
  <authors><author><name>Hawksearch Inc.</name><user>hawksearch</user><email>mmunoz@thanxmedia.com</email></author></authors>
15
+ <date>2014-08-07</date>
16
+ <time>14:09:08</time>
17
+ <contents><target name="magecommunity"><dir name="Hawksearch"><dir name="Datafeed"><dir name="Block"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Version.php" hash="7f72ce91b67d40e68424454a449f1841"/></dir></dir><file name="Form.php" hash="1f6eaf265d3b8c78d3efd93cf93c7f2d"/><dir name="Frontend"><dir name="Feed"><dir name="Generate"><file name="Js.php" hash="b54e5207b5579648d7dfeb9515b3dfb2"/></dir><file name="Generate.php" hash="c73b0b2bd965b5c4e4cded455f23baa1"/><dir name="Generateimagecache"><file name="Js.php" hash="a8e2a4c5a6827eec8d9eebc88db9bbb9"/></dir><file name="Generateimagecache.php" hash="05a3585804163326b33d3a46ab7717b5"/><file name="Next.php" hash="92a25b140bc4d0f3b0c7b497fdf0ca6d"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="569bc6b857b652c80b933a6da02e4e19"/><file name="Feed.php" hash="8cf12219fcb541c409d1cde16b366de1"/></dir><dir name="Model"><file name="Cron.php" hash="2d5421315908619a744b96aa9d4d77cb"/><file name="Email.php" hash="f671df12afac28ae10713cd1972bef2c"/><file name="Feed.php" hash="a4973f0ebc2dca577d0bc29e2cca2da7"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Cron.php" hash="2919385264c00276cbf09c105418d5ed"/></dir></dir></dir></dir><dir name="controllers"><file name="SearchController.php" hash="1455f555aab7bd397993f4153309a248"/></dir><dir name="etc"><file name="adminhtml.xml" hash="96daebeddbd749dfe0341818fe2eeabb"/><file name="config.xml" hash="af82af1e1b99f072bb69b6ce560ff27f"/><file name="system.xml" hash="eeeeee9921ae160ab321b8c3192fa2b8"/></dir><dir name="sql"><dir name="hawksearch_datafeed_setup"><file name="install-1.0.0.0.php" hash="768e75fd75bbd9532c92859346d78ef2"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="hawksearch"><dir name="search"><dir name="sysconfig"><dir name="generate"><file name="js.phtml" hash="aa7a51511eaf9c2c1319df358181ae70"/></dir><dir name="generateimagecache"><file name="js.phtml" hash="aba0594893460ae5763ae243866e7e65"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Hawksearch_Datafeed.xml" hash="06b94625c6b60d1269fe61c4127d2146"/></dir></target></contents>
18
  <compatible/>
19
  <dependencies><required><php><min>5.1.0</min><max>8.1.0</max></php></required></dependencies>
20
  </package>