Poq_Integration - Version 2.0.0.2.7

Version Notes

Fixed a bug while creating picture URLs.

Download this release

Release Info

Developer Oyvind Henriksen
Extension Poq_Integration
Version 2.0.0.2.7
Comparing to
See all releases


Code changes from version 2.0.0.2.6 to 2.0.0.2.7

app/code/community/Poq/Integration/controllers/IndexController.php CHANGED
@@ -374,8 +374,8 @@ class Poq_Integration_IndexController extends Mage_Core_Controller_Front_Action
374
  echo ",\"size\"";
375
  echo ",\"color\"";
376
  echo ",\"colorGroupId\"";
377
- echo ",\"productURL\"";
378
  echo ",\"pictureurls\"";
 
379
  echo ",\"categoryid\"";
380
  echo ",\"categoryname\"";
381
  echo ",\"categoryurl\"";
@@ -397,116 +397,114 @@ class Poq_Integration_IndexController extends Mage_Core_Controller_Front_Action
397
  //Loop through the products, get the values and write them in CSV format
398
  foreach ($collection as $product)
399
  {
400
- echo "\"" . $product->getId() . "\"";
401
-
402
- $productName = addslashes($product->getName());
403
- $productName = preg_replace('/\"/', '""', $productName); //double up any double quote
404
- echo ",\"" . $productName . "\"";
405
-
406
- // Original price might have been tax rates applied on live site
407
- // Fix by macromania
408
- //echo ",\"" . $product->getPrice() . "\""; )
409
  try
410
  {
 
 
 
 
 
 
 
 
 
 
 
411
 
412
- // Original price without tax
413
- $product_price = $product->getPrice();
414
- $special_price = $product->getFinalPrice();
415
 
416
- if ($tax_rates_enabled)
417
- {
418
 
419
- // Get product tax class id
420
- $tax_class_id = $_product->getData('tax_class_id');
421
 
422
- // $tax_classes is returned as string. So parsing is needed to get the value
423
- // an example $tax_classes could be like {"value_2":20,"value_4":20,"value_5":20,"value_6":0,"value_7":5}
424
- $tax_classes = str_replace('{', '', $tax_classes);
425
- $tax_classes = str_replace('}', '', $tax_classes);
426
- $tax_class_value_array = explode(',', $tax_classes);
427
 
428
- // Tax value
429
- $product_tax_value = 0;
430
 
431
- foreach ($tax_class_value_array as $tax_class)
432
- {
433
 
434
- $values = explode(':', $tax_class);
435
- if ($values[0] == '"value_' . $tax_class_id . '"')
 
 
 
 
 
 
 
 
436
  {
437
- // Get the rate
438
- $product_tax_value = $values[1];
439
  }
440
- }
441
 
442
- // Apply tax rate
443
- if ($product_tax_value > 0)
 
 
444
  {
445
- $product_price += $product_price * $product_tax_value / 100;
446
- $special_price += $special_price * $product_tax_value / 100;
447
  }
448
 
449
- echo ",\"" . ceil($product_price) . "\"";
450
- echo ",\"" . ceil($special_price) . "\"";
 
451
  }
452
- else
453
  {
454
- echo ",\"" . $product_price . "\"";
455
- echo ",\"" . $special_price . "\"";
456
  }
457
 
458
 
459
-
460
- //echo '<p style="color:red">------<br/>Caught exception: ', ceil($product_price),'----',$product->getPrice(), '<br/>-----</p>';
461
- }
462
- catch (Exception $eproductprice)
463
- {
464
- echo '<p style="color:red">------<br/>Caught exception: ', $e2->getMessage(), '<br/>-----</p>';
465
- }
466
-
467
-
468
- // Parent product id
469
- $parentProductIdCombined = $parentProductIds[$product->getId()];
470
- if ($productColors[$product->getId()])
471
- {
472
- if (!empty($productColors[$product->getId()]))
473
  {
474
- $parentProductIdCombined .= "-" . $productColors[$product->getId()];
 
 
 
475
  }
476
- }
477
 
478
 
479
- echo ",\"" . $parentProductIdCombined . "\"";
480
 
481
- // SKU
482
- echo ",\"" . $product->getSku() . "\"";
483
 
484
- // Stock
485
- echo ",\"" . $product->getStockItem()->getIsInStock() . "\"";
486
 
487
- // Stock Quantity
488
- echo ",\"" . $product->getQty() . "\"";
489
 
490
- // Size
491
- echo ",\"" . $productSizeDescriptions[$product->getId()] . "\"";
492
 
493
- // Color name
494
- echo ",\"" . $productColors[$product->getId()] . "\"";
495
 
496
- // Color group id
497
- echo ",\"" . $parentProductIds[$product->getId()] . "\"";
498
 
499
- // Color
500
- /*
501
- $productColor = "test";
502
- echo ",\"" . $productColor . "\"";
503
- *
504
- */
505
 
506
- if ($product->getVisibility() == 4)
507
- { //Only products that are individually visible need URLs, pictures, categories.
508
- //Get product URL
509
- echo ",\"" . $product->getProductUrl() . "\"";
510
 
511
  //Get main image
512
  $imageString = $product->getMediaConfig()->getMediaUrl($product->getData('image'));
@@ -517,6 +515,11 @@ class Poq_Integration_IndexController extends Mage_Core_Controller_Front_Action
517
  $image_base_url = substr($imageString, 0, strrpos($imageString, 'media/catalog/product')) . 'media/catalog/product';
518
  }
519
 
 
 
 
 
 
520
  //Option #1 - Fast way to get all media gallery images from preloaded array
521
  $_images = $product->getData('media_gallery');
522
  foreach ($_images as $imagegallery)
@@ -533,7 +536,7 @@ class Poq_Integration_IndexController extends Mage_Core_Controller_Front_Action
533
  foreach ($image_ignore_string_array as $image_ignore_string)
534
  {
535
  //echo "\n image_ignore_string: " . $image_ignore_string;
536
- if (strpos($add_image['file'], $image_ignore_string) !== false)
537
  {
538
  //echo "\n IGNORING: " . $add_image['file'];
539
  $image_should_be_added = false;
@@ -547,102 +550,119 @@ class Poq_Integration_IndexController extends Mage_Core_Controller_Front_Action
547
  }
548
  }
549
 
550
- //Option #2 - Slower, but more reliable way to get all images. Try this is option #1 does not run
551
- // $_images = Mage::getModel('catalog/product')->load($product->getId())->getMediaGalleryImages();
552
- // foreach ($_images as $imagegallery) {
553
- // $imageString .= ';' . $imagegallery['url'];
554
- // }
555
- echo ",\"" . $imageString . "\"";
556
-
557
- //List the categories this product should be listed in
558
- $cats = $product->getCategoryIds();
559
- $category_id_list = "";
560
- $category_name_list = "";
561
- $category_url_list = "";
562
- $category_sort_list = "";
563
-
564
- foreach ($cats as $category_id)
565
- {
566
- $category_id_list .= $categories[$category_id]['ids'] . ';';
567
- $category_name_list .= $categories[$category_id]['name'] . ';';
568
- $category_url_list .= $categories[$category_id]['url'] . ';';
569
-
570
- // Check if this category has products
571
- if(count($categories[$category_id]['products']) > 0)
572
  {
573
- $category_sort_list .= $categories[$category_id]['products'][$product->getId()] . ';';
 
 
 
 
 
 
 
 
 
574
  }
575
-
576
- }
577
 
578
- $category_id_list = substr($category_id_list, 0, -1);
579
- $category_name_list = substr($category_name_list, 0, -1);
580
- $category_url_list = substr($category_url_list, 0, -1);
581
- $category_sort_list = substr($category_sort_list, 0, -1);
582
 
583
- echo ",\"" . $category_id_list . "\"";
584
- echo ",\"" . $category_name_list . "\"";
585
- echo ",\"" . $category_url_list . "\"";
586
- echo ",\"" . $category_sort_list . "\"";
587
- }
588
- else{
589
- echo ",\"" . "" . "\"";
590
- echo ",\"" . "" . "\"";
591
- echo ",\"" . "" . "\"";
592
- echo ",\"" . "" . "\"";
593
- echo ",\"" . "" . "\"";
594
- echo ",\"" . "" . "\"";
595
- }
596
 
597
- if (!isset($description_fields)) {
598
- $description = $product->getDescription(); //Remove HTML tags from the description
599
- }
600
- else {
601
- $product = Mage::getModel('catalog/product')->load($product->getId());
602
- $descFields = explode(",",$description_fields);
603
- $descValues = explode(",",$description_values);
604
- $i=0;
605
- $description = "";
606
-
607
-
608
- foreach ($descFields as $descField) {
609
- //$attr = $product->getResource()->getAttribute($descField);
610
- $val=$product->getData($descField);//$attr->getFrontend()->getValue($product);
611
- if (isset($descValues) && count($descValues) == count($descFields)) {
612
-
613
- if (isset($val)) {
614
- $description=$description.'<b>'.$descValues[$i].'</b><br/>';
615
- $description=$description.$val.'<br/><br/>';//$product->getValue($descField).'\n\n';
616
- }
617
- $i++;
618
- }
619
- else {
620
- if (isset($val)) {
621
- $description=$description.$val.'<br/>';
622
- }
 
 
 
 
 
 
 
623
  }
624
- }
625
- }
626
- $description = addslashes($description); //Escape quotes etc from the text
627
- $description = preg_replace('#\s{2,}#', '\\n', $description); //Remove line breaks, "\\n" will be put back in as line breaks when importing.
628
- //$description = preg_replace('/(?<!,)"(?!,)/', '""', $description); //double up any double quote that is not immediately preceded or followed by a comma
629
- $description = preg_replace('/\"/', '""', $description); //double up any double quote
630
- echo ",\"" . $description . "\"";
631
- // get barcode of product and expose it as ean
632
- if (isset($barcode_field)) {
633
- $barcode = $product->getData($barcode_field);
634
- if (!isset($barcode)) {
635
- $product = Mage::getModel('catalog/product')->load($product->getId());
636
  $barcode = $product->getData($barcode_field);
 
 
 
 
 
 
 
637
  }
638
- }
639
- else {
640
- $barcode = $product->getData('barcode');
641
- }
642
 
643
- echo ",\"" . $barcode . "\"";
644
 
645
- echo "\n";
 
 
 
 
 
 
646
  }
647
  if ($_GET['debug'] == '1')
648
  { //Show performance data
374
  echo ",\"size\"";
375
  echo ",\"color\"";
376
  echo ",\"colorGroupId\"";
 
377
  echo ",\"pictureurls\"";
378
+ echo ",\"productURL\"";
379
  echo ",\"categoryid\"";
380
  echo ",\"categoryname\"";
381
  echo ",\"categoryurl\"";
397
  //Loop through the products, get the values and write them in CSV format
398
  foreach ($collection as $product)
399
  {
 
 
 
 
 
 
 
 
 
400
  try
401
  {
402
+ echo "\"" . $product->getId() . "\"";
403
+
404
+ $productName = addslashes($product->getName());
405
+ $productName = preg_replace('/\"/', '""', $productName); //double up any double quote
406
+ echo ",\"" . $productName . "\"";
407
+
408
+ // Original price might have been tax rates applied on live site
409
+ // Fix by macromania
410
+ //echo ",\"" . $product->getPrice() . "\""; )
411
+ try
412
+ {
413
 
414
+ // Original price without tax
415
+ $product_price = $product->getPrice();
416
+ $special_price = $product->getFinalPrice();
417
 
418
+ if ($tax_rates_enabled)
419
+ {
420
 
421
+ // Get product tax class id
422
+ $tax_class_id = $_product->getData('tax_class_id');
423
 
424
+ // $tax_classes is returned as string. So parsing is needed to get the value
425
+ // an example $tax_classes could be like {"value_2":20,"value_4":20,"value_5":20,"value_6":0,"value_7":5}
426
+ $tax_classes = str_replace('{', '', $tax_classes);
427
+ $tax_classes = str_replace('}', '', $tax_classes);
428
+ $tax_class_value_array = explode(',', $tax_classes);
429
 
430
+ // Tax value
431
+ $product_tax_value = 0;
432
 
433
+ foreach ($tax_class_value_array as $tax_class)
434
+ {
435
 
436
+ $values = explode(':', $tax_class);
437
+ if ($values[0] == '"value_' . $tax_class_id . '"')
438
+ {
439
+ // Get the rate
440
+ $product_tax_value = $values[1];
441
+ }
442
+ }
443
+
444
+ // Apply tax rate
445
+ if ($product_tax_value > 0)
446
  {
447
+ $product_price += $product_price * $product_tax_value / 100;
448
+ $special_price += $special_price * $product_tax_value / 100;
449
  }
 
450
 
451
+ echo ",\"" . ceil($product_price) . "\"";
452
+ echo ",\"" . ceil($special_price) . "\"";
453
+ }
454
+ else
455
  {
456
+ echo ",\"" . $product_price . "\"";
457
+ echo ",\"" . $special_price . "\"";
458
  }
459
 
460
+
461
+
462
+ //echo '<p style="color:red">------<br/>Caught exception: ', ceil($product_price),'----',$product->getPrice(), '<br/>-----</p>';
463
  }
464
+ catch (Exception $eproductprice)
465
  {
466
+ echo '<p style="color:red">------<br/>Caught exception: ', $e2->getMessage(), '<br/>-----</p>';
 
467
  }
468
 
469
 
470
+ // Parent product id
471
+ $parentProductIdCombined = $parentProductIds[$product->getId()];
472
+ if ($productColors[$product->getId()])
 
 
 
 
 
 
 
 
 
 
 
473
  {
474
+ if (!empty($productColors[$product->getId()]))
475
+ {
476
+ $parentProductIdCombined .= "-" . $productColors[$product->getId()];
477
+ }
478
  }
 
479
 
480
 
481
+ echo ",\"" . $parentProductIdCombined . "\"";
482
 
483
+ // SKU
484
+ echo ",\"" . $product->getSku() . "\"";
485
 
486
+ // Stock
487
+ echo ",\"" . $product->getStockItem()->getIsInStock() . "\"";
488
 
489
+ // Stock Quantity
490
+ echo ",\"" . $product->getQty() . "\"";
491
 
492
+ // Size
493
+ echo ",\"" . $productSizeDescriptions[$product->getId()] . "\"";
494
 
495
+ // Color name
496
+ echo ",\"" . $productColors[$product->getId()] . "\"";
497
 
498
+ // Color group id
499
+ echo ",\"" . $parentProductIds[$product->getId()] . "\"";
500
 
501
+ // Color
502
+ /*
503
+ $productColor = "test";
504
+ echo ",\"" . $productColor . "\"";
505
+ *
506
+ */
507
 
 
 
 
 
508
 
509
  //Get main image
510
  $imageString = $product->getMediaConfig()->getMediaUrl($product->getData('image'));
515
  $image_base_url = substr($imageString, 0, strrpos($imageString, 'media/catalog/product')) . 'media/catalog/product';
516
  }
517
 
518
+ if (count(explode("product/",$imageString)) == 1 || !isset(explode("product/",$imageString)[1]) || explode("product/",$imageString)[1] == "")
519
+ {
520
+ $imageString = "";
521
+ }
522
+
523
  //Option #1 - Fast way to get all media gallery images from preloaded array
524
  $_images = $product->getData('media_gallery');
525
  foreach ($_images as $imagegallery)
536
  foreach ($image_ignore_string_array as $image_ignore_string)
537
  {
538
  //echo "\n image_ignore_string: " . $image_ignore_string;
539
+ if ($add_image['file']===NULL && strpos($add_image['file'], $image_ignore_string) !== false)
540
  {
541
  //echo "\n IGNORING: " . $add_image['file'];
542
  $image_should_be_added = false;
550
  }
551
  }
552
 
553
+ //Option #2 - Slower, but more reliable way to get all images. Try this is option #1 does not run
554
+ // $_images = Mage::getModel('catalog/product')->load($product->getId())->getMediaGalleryImages();
555
+ // foreach ($_images as $imagegallery) {
556
+ // $imageString .= ';' . $imagegallery['url'];
557
+ // }
558
+ echo ",\"" . $imageString . "\"";
559
+
560
+ if ($product->getVisibility() == 4)
561
+ { //Only products that are individually visible need URLs, pictures, categories.
562
+ //Get product URL
563
+ echo ",\"" . $product->getProductUrl() . "\"";
564
+
565
+ //List the categories this product should be listed in
566
+ $cats = $product->getCategoryIds();
567
+ $category_id_list = "";
568
+ $category_name_list = "";
569
+ $category_url_list = "";
570
+ $category_sort_list = "";
571
+
572
+ foreach ($cats as $category_id)
 
 
573
  {
574
+ $category_id_list .= $categories[$category_id]['ids'] . ';';
575
+ $category_name_list .= $categories[$category_id]['name'] . ';';
576
+ $category_url_list .= $categories[$category_id]['url'] . ';';
577
+
578
+ // Check if this category has products
579
+ if(count($categories[$category_id]['products']) > 0)
580
+ {
581
+ $category_sort_list .= $categories[$category_id]['products'][$product->getId()] . ';';
582
+ }
583
+
584
  }
 
 
585
 
586
+ $category_id_list = substr($category_id_list, 0, -1);
587
+ $category_name_list = substr($category_name_list, 0, -1);
588
+ $category_url_list = substr($category_url_list, 0, -1);
589
+ $category_sort_list = substr($category_sort_list, 0, -1);
590
 
591
+ echo ",\"" . $category_id_list . "\"";
592
+ echo ",\"" . $category_name_list . "\"";
593
+ echo ",\"" . $category_url_list . "\"";
594
+ echo ",\"" . $category_sort_list . "\"";
595
+ }
596
+ else{
597
+ echo ",\"" . "" . "\"";
598
+ echo ",\"" . "" . "\"";
599
+ echo ",\"" . "" . "\"";
600
+ echo ",\"" . "" . "\"";
601
+ echo ",\"" . "" . "\"";
602
+ echo ",\"" . "" . "\"";
603
+ }
604
 
605
+ if (!isset($description_fields)) {
606
+ $description = $product->getDescription(); //Remove HTML tags from the description
607
+ }
608
+ else {
609
+ $product = Mage::getModel('catalog/product')->load($product->getId());
610
+ $descFields = explode(",",$description_fields);
611
+ $descValues = explode(",",$description_values);
612
+ $i=0;
613
+ $description = "";
614
+
615
+
616
+ foreach ($descFields as $descField) {
617
+ //$attr = $product->getResource()->getAttribute($descField);
618
+ $val=$product->getData($descField);//$attr->getFrontend()->getValue($product);
619
+
620
+ if ($_GET['debug'] == '1' && !isset($val))
621
+ {
622
+ var_dump($val);
623
+ }
624
+
625
+ if (isset($descValues) && count($descValues) == count($descFields)) {
626
+
627
+ if (isset($val)) {
628
+ $description=$description.'<b>'.$descValues[$i].'</b><br/>';
629
+ $description=$description.$val.'<br/><br/>';//$product->getValue($descField).'\n\n';
630
+ }
631
+ $i++;
632
+ }
633
+ else {
634
+ if (isset($val)) {
635
+ $description=$description.$val.'<br/>';
636
+ }
637
+ }
638
  }
639
+ }
640
+ $description = addslashes($description); //Escape quotes etc from the text
641
+ $description = preg_replace('#\s{2,}#', '\\n', $description); //Remove line breaks, "\\n" will be put back in as line breaks when importing.
642
+ //$description = preg_replace('/(?<!,)"(?!,)/', '""', $description); //double up any double quote that is not immediately preceded or followed by a comma
643
+ $description = preg_replace('/\"/', '""', $description); //double up any double quote
644
+ echo ",\"" . $description . "\"";
645
+ // get barcode of product and expose it as ean
646
+ if (isset($barcode_field)) {
 
 
 
 
647
  $barcode = $product->getData($barcode_field);
648
+ if (!isset($barcode)) {
649
+ $product = Mage::getModel('catalog/product')->load($product->getId());
650
+ $barcode = $product->getData($barcode_field);
651
+ }
652
+ }
653
+ else {
654
+ $barcode = $product->getData('barcode');
655
  }
 
 
 
 
656
 
657
+ echo ",\"" . $barcode . "\"";
658
 
659
+ echo "\n";
660
+ }
661
+ catch (Exception $e2)
662
+ {
663
+ echo '<p style="color:red">------<br/>Caught exception: ', $e2->getMessage(), '<br/>-----</p>';
664
+ break;
665
+ }
666
  }
667
  if ($_GET['debug'] == '1')
668
  { //Show performance data
app/code/community/Poq/Integration/etc/config.xml CHANGED
@@ -9,7 +9,7 @@
9
  <config>
10
  <modules>
11
  <Poq_Integration>
12
- <version>2.0.0.2.6</version>
13
  </Poq_Integration>
14
  </modules>
15
  <global>
9
  <config>
10
  <modules>
11
  <Poq_Integration>
12
+ <version>2.0.0.2.7</version>
13
  </Poq_Integration>
14
  </modules>
15
  <global>
package.xml CHANGED
@@ -1,18 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Poq_Integration</name>
4
- <version>2.0.0.2.6</version>
5
  <stability>stable</stability>
6
  <license>ASL</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>This integration forms a connection between the Magento and Poq Studio platforms.</summary>
10
  <description>The extension has two main features: Exposing your catalogue information in the Poq Feed Format and Accepting a shopping cart transfer from the Poq Studio platform.</description>
11
- <notes>Fixed an issue which is caused by when product name has quote (") and comma (,)</notes>
12
  <authors><author><name>Oyvind Henriksen</name><user>poqmagento</user><email>info@poqstudio.com</email></author></authors>
13
- <date>2014-11-03</date>
14
- <time>11:50:03</time>
15
- <contents><target name="magecommunity"><dir name="Poq"><dir name="Integration"><dir name="Helper"><file name="Data.php" hash="12410f17762f6ae40294252a0c383d87"/></dir><dir name="controllers"><file name="IndexController.php" hash="5f1caa9785579ab68cbc1d736465ab7a"/><file name="OrderController.php" hash="2fe18c8f02b05440412f84df1bb6bc13"/></dir><dir name="etc"><file name="adminhtml.xml" hash="545b50fa7d354adb75a6bc27ff2ef41e"/><file name="config.xml" hash="52156f2df8272d41ba380695ca5459af"/><file name="system.xml" hash="4c572e04c7adf4e6feb37385376134e2"/></dir><file name=".DS_Store" hash="edbbdc9cbdcde369d585980e7a279eac"/></dir><file name=".DS_Store" hash="16eb133391c4355b50681fccd76eee48"/></dir></target><target name="mageetc"><dir name="modules"><file name="Poq_Integration.xml" hash="f735b9c01c16c559a05ba50185ef8a61"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Poq_Integration</name>
4
+ <version>2.0.0.2.7</version>
5
  <stability>stable</stability>
6
  <license>ASL</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>This integration forms a connection between the Magento and Poq Studio platforms.</summary>
10
  <description>The extension has two main features: Exposing your catalogue information in the Poq Feed Format and Accepting a shopping cart transfer from the Poq Studio platform.</description>
11
+ <notes>Fixed a bug while creating picture URLs.</notes>
12
  <authors><author><name>Oyvind Henriksen</name><user>poqmagento</user><email>info@poqstudio.com</email></author></authors>
13
+ <date>2014-11-10</date>
14
+ <time>09:48:46</time>
15
+ <contents><target name="magecommunity"><dir name="Poq"><dir name="Integration"><dir name="Helper"><file name="Data.php" hash="12410f17762f6ae40294252a0c383d87"/></dir><dir name="controllers"><file name="IndexController.php" hash="3d86e61ae31bbe9a69b5c9b75a4fd2fc"/><file name="OrderController.php" hash="2fe18c8f02b05440412f84df1bb6bc13"/></dir><dir name="etc"><file name="adminhtml.xml" hash="545b50fa7d354adb75a6bc27ff2ef41e"/><file name="config.xml" hash="f66f953d99abf0a47d0b55452b24924d"/><file name="system.xml" hash="4c572e04c7adf4e6feb37385376134e2"/></dir><file name=".DS_Store" hash="edbbdc9cbdcde369d585980e7a279eac"/></dir><file name=".DS_Store" hash="16eb133391c4355b50681fccd76eee48"/></dir></target><target name="mageetc"><dir name="modules"><file name="Poq_Integration.xml" hash="f735b9c01c16c559a05ba50185ef8a61"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>