Version Notes
Magento 1.3: if you use another language than english or german, than the "Strong Identifier" attribute is named "EAN Code" in the backend. But it also works well with GTIN-8 or GTIN-14 (configurable in the global MSemantic configuration). You can rename the label of this attribute manually in the table eav_attribute (attribute_code is gr_ean).
Download this release
Release Info
Developer | Magento Core Team |
Extension | Semantium_MSemanticBasic |
Version | 1.2.6 |
Comparing to | |
See all releases |
Code changes from version 1.2.5 to 1.2.6
- app/code/community/Semantium/MSemanticBasic/Helper/AbstractFormat.php +2 -0
- app/code/community/Semantium/MSemanticBasic/Model/GoodRelations.php +118 -94
- app/code/community/Semantium/MSemanticBasic/Model/Observer.php +1 -1
- app/code/community/Semantium/MSemanticBasic/Model/Sitemap.php +145 -0
- app/code/community/Semantium/MSemanticBasic/Model/System/Config/Source/Product/Attributes.php +22 -0
- app/code/community/Semantium/MSemanticBasic/changelog.txt +14 -0
- app/code/community/Semantium/MSemanticBasic/etc/config.xml +14 -2
- app/code/community/Semantium/MSemanticBasic/etc/system.xml +22 -0
- app/code/community/Semantium/MSemanticBasic/sql/msemanticbasic_setup/mysql4-install-0.9.9.3.2.php +0 -4
- app/code/community/Semantium/MSemanticBasic/sql/msemanticbasic_setup/mysql4-install-1.2.6.php +80 -0
- app/code/community/Semantium/MSemanticBasic/sql/msemanticbasic_setup/mysql4-upgrade-0.9.9.2-0.9.9.3.php +0 -4
- app/code/community/Semantium/MSemanticBasic/sql/msemanticbasic_setup/mysql4-upgrade-1.2.6-1.2.6.php +81 -0
- app/etc/modules/Semantium_MSemanticBasic.xml +3 -0
- package.xml +4 -4
app/code/community/Semantium/MSemanticBasic/Helper/AbstractFormat.php
CHANGED
@@ -45,6 +45,8 @@ abstract class Semantium_MSemanticBasic_Helper_AbstractFormat extends Mage_Core_
|
|
45 |
"gr:validThrough" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#dateTime"',
|
46 |
"gr:eligibleRegions" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#string"',
|
47 |
"gr:hasCurrencyValue" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#float"',
|
|
|
|
|
48 |
"gr:hasCurrency" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#string"',
|
49 |
"gr:hasUnitOfMeasurement" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#string"',
|
50 |
"gr:valueAddedTaxIncluded" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#boolean"',
|
45 |
"gr:validThrough" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#dateTime"',
|
46 |
"gr:eligibleRegions" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#string"',
|
47 |
"gr:hasCurrencyValue" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#float"',
|
48 |
+
"gr:hasMaxCurrencyValue" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#float"',
|
49 |
+
"gr:hasMinCurrencyValue" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#float"',
|
50 |
"gr:hasCurrency" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#string"',
|
51 |
"gr:hasUnitOfMeasurement" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#string"',
|
52 |
"gr:valueAddedTaxIncluded" => '{rdf}datatype="http://www.w3.org/2001/XMLSchema#boolean"',
|
app/code/community/Semantium/MSemanticBasic/Model/GoodRelations.php
CHANGED
@@ -500,24 +500,31 @@ $manufacturers = $attribute->getSource()->getAllOptions(false);
|
|
500 |
$pDescr = htmlspecialchars($pDescr);
|
501 |
$statements .= $this->RDFS->pDesc( $pDescr, $localeCode );
|
502 |
|
503 |
-
$inv = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getQty();
|
504 |
-
|
505 |
-
$statements .= "<div rel=\"gr:hasInventoryLevel\">
|
506 |
-
<div typeof=\"gr:QuantitativeValue\">
|
507 |
-
<div property=\"gr:hasMinValue\" content=\"".round($inv,0)."\" datatype=\"xsd:float\">".
|
508 |
-
"</div>
|
509 |
-
<div property=\"gr:hasUnitOfMeasurement\" datatype=\"xsd:string\" content=\"C62\"></div>
|
510 |
-
</div>
|
511 |
-
</div>
|
512 |
-
";
|
513 |
|
514 |
//$statements .= Mage::getStoreConfig('catalog/review');
|
515 |
//review stuff
|
|
|
|
|
516 |
$array = Mage::getStoreConfig('catalog/review');
|
517 |
if ($array['allow_guest'] == 1) // reviews active
|
518 |
$statements .= $this->pReview();
|
519 |
$grOffering .= $this->rdff->wrapStatements($statements, $this->getURI('offering'), "gr:Offering");
|
520 |
$isSaleable = $this->Product->isSaleable();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
521 |
return $grOffering;
|
522 |
|
523 |
}
|
@@ -562,10 +569,16 @@ $manufacturers = $attribute->getSource()->getAllOptions(false);
|
|
562 |
return $pHasBusinessFunction;
|
563 |
}
|
564 |
|
|
|
|
|
|
|
565 |
protected function pHasPriceSpecification()
|
566 |
{
|
567 |
$priceSpecifications = "";
|
568 |
-
|
|
|
|
|
|
|
569 |
|
570 |
//check if tax is in price
|
571 |
$tax = Mage::helper('tax');
|
@@ -576,74 +589,69 @@ $manufacturers = $attribute->getSource()->getAllOptions(false);
|
|
576 |
// check if special price
|
577 |
|
578 |
if ($this->Product->getSpecialPrice()) {
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
// spec. price
|
590 |
-
// first regular price
|
591 |
-
|
592 |
-
// $statements = $this->rdff->properties($propArray_reg,$this->getReplacements());
|
593 |
-
|
594 |
-
// $statements .= $this->validFromThrough();
|
595 |
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
|
|
|
|
|
|
|
|
|
|
604 |
|
605 |
-
if ( $this->Product->getSpecialToDate() ){
|
606 |
-
$validproperties = array(
|
607 |
-
"gr:validFrom" => $this->div->dateToIso8601( $this->Product->getSpecialFromDate() ),
|
608 |
-
"gr:validThrough" => $this->div->dateToIso8601( $this->Product->getSpecialToDate() )
|
609 |
-
);
|
610 |
-
$statements .= $this->rdff->properties($validproperties, $this->getReplacements());
|
611 |
|
612 |
-
}
|
613 |
else {
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
|
619 |
-
$attributes = $this->rdff->wrapStatements($statements, $this->getURI("specialUnitPriceSpecification"), "gr:UnitPriceSpecification" );
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
}
|
624 |
-
|
625 |
-
|
626 |
-
else {
|
627 |
-
$propArray = array(
|
628 |
-
"gr:hasCurrencyValue" => round($this->Product->getFinalPrice(1), 2), // 1 unit
|
629 |
-
"gr:hasCurrency" => Mage::app()->getStore()->getCurrentCurrencyCode(),
|
630 |
-
"gr:hasUnitOfMeasurement" => "C62" // price per unit
|
631 |
-
);
|
632 |
-
$statements = $this->rdff->properties($propArray,$this->getReplacements());
|
633 |
-
|
634 |
-
$statements .= $this->validFromThrough();
|
635 |
|
636 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
637 |
|
638 |
-
//$attributes .= $this->pValidFromThrough();
|
639 |
|
640 |
-
}
|
641 |
-
|
642 |
$priceSpecifications .= $this->rdff->wrapRel($attributes, "gr:hasPriceSpecification");
|
643 |
|
644 |
return $priceSpecifications;
|
645 |
}
|
646 |
|
|
|
|
|
|
|
|
|
|
|
647 |
protected function pValidFromThrough()
|
648 |
{
|
649 |
$validFrom = date("Y-m-d", strtotime("now"));
|
@@ -740,7 +748,7 @@ $manufacturers = $attribute->getSource()->getAllOptions(false);
|
|
740 |
|
741 |
$productId = $this->Product->getId();
|
742 |
$product = Mage::getModel('catalog/product')->load($productId);
|
743 |
-
|
744 |
|
745 |
|
746 |
if ($product->getData('condition')) {
|
@@ -767,35 +775,38 @@ $manufacturers = $attribute->getSource()->getAllOptions(false);
|
|
767 |
$statements .= $this->rdff->rel("gr:hasManufacturer",$this->Business->getBaseURL() . '#manufacturer_'.$product->getData('manufacturer'), NULL,"en");
|
768 |
}
|
769 |
|
|
|
770 |
|
771 |
-
$categoryIds = $product->getCategoryIds();
|
772 |
|
773 |
-
foreach($categoryIds as $categoryId) {
|
774 |
-
|
775 |
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
|
787 |
if ($category->getName()) $statements .= $this->rdff->property("gr:category",htmlentities($category_name.$category->getName(),ENT_QUOTES,"UTF-8"),NULL,$this->sysinfo->getLocaleCode());
|
788 |
|
789 |
}
|
790 |
|
|
|
791 |
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
|
|
|
|
796 |
if ($strongId)
|
797 |
{
|
798 |
-
|
799 |
$settings = Mage::getStoreConfig("semantium");
|
800 |
$strongid_type = @$settings['strongid']['strongid_type'];
|
801 |
|
@@ -823,18 +834,31 @@ foreach($categoryIds as $categoryId) {
|
|
823 |
|
824 |
// dawn of template style
|
825 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
826 |
$inv = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getQty();
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
"</div>
|
832 |
-
<div property=\"gr:hasUnitOfMeasurement\" datatype=\"xsd:string\" content=\"C62\"></div>
|
833 |
-
</div>
|
834 |
-
</div>
|
835 |
-
";
|
836 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
837 |
|
|
|
838 |
|
839 |
|
840 |
|
500 |
$pDescr = htmlspecialchars($pDescr);
|
501 |
$statements .= $this->RDFS->pDesc( $pDescr, $localeCode );
|
502 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
503 |
|
504 |
//$statements .= Mage::getStoreConfig('catalog/review');
|
505 |
//review stuff
|
506 |
+
$statements .= "
|
507 |
+
<div rel=\"foaf:maker\" resource=\"urn:goodrelations_shop_extensions:msemantic:v1.2.6\"></div>";
|
508 |
$array = Mage::getStoreConfig('catalog/review');
|
509 |
if ($array['allow_guest'] == 1) // reviews active
|
510 |
$statements .= $this->pReview();
|
511 |
$grOffering .= $this->rdff->wrapStatements($statements, $this->getURI('offering'), "gr:Offering");
|
512 |
$isSaleable = $this->Product->isSaleable();
|
513 |
+
|
514 |
+
/* #This will be the related product code.
|
515 |
+
$related = $product->getUpsellProducts();
|
516 |
+
# print gettype($related);
|
517 |
+
# $related->load();
|
518 |
+
foreach ($related as $item) {
|
519 |
+
# $item->setDoNotUseCategoryId(true);
|
520 |
+
print $item->getProductUrl();
|
521 |
+
print $item->getName();
|
522 |
+
# print gettype($item);
|
523 |
+
}
|
524 |
+
*/
|
525 |
+
|
526 |
+
|
527 |
+
|
528 |
return $grOffering;
|
529 |
|
530 |
}
|
569 |
return $pHasBusinessFunction;
|
570 |
}
|
571 |
|
572 |
+
|
573 |
+
###################
|
574 |
+
|
575 |
protected function pHasPriceSpecification()
|
576 |
{
|
577 |
$priceSpecifications = "";
|
578 |
+
$productId = $this->Product->getId();
|
579 |
+
|
580 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
581 |
+
$storeId = Mage::app()->getStore()->getId();
|
582 |
|
583 |
//check if tax is in price
|
584 |
$tax = Mage::helper('tax');
|
589 |
// check if special price
|
590 |
|
591 |
if ($this->Product->getSpecialPrice()) {
|
592 |
+
$propArray_reg = array(
|
593 |
+
"gr:hasCurrencyValue" => round($this->Product->getPrice(1), 2), // 1 unit
|
594 |
+
"gr:hasCurrency" => Mage::app()->getStore()->getCurrentCurrencyCode(),
|
595 |
+
"gr:hasUnitOfMeasurement" => "C62" // price per unit
|
596 |
+
);
|
597 |
+
$propArray_special = array(
|
598 |
+
"gr:hasCurrencyValue" => round($this->Product->getSpecialPrice(1), 2), // 1 unit
|
599 |
+
"gr:hasCurrency" => Mage::app()->getStore()->getCurrentCurrencyCode(),
|
600 |
+
"gr:hasUnitOfMeasurement" => "C62" // price per unit
|
601 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
602 |
|
603 |
+
$statements = $this->rdff->properties($propArray_special,$this->getReplacements());
|
604 |
+
|
605 |
+
if ( $this->Product->getSpecialToDate() ){
|
606 |
+
$validproperties = array(
|
607 |
+
"gr:validFrom" => $this->div->dateToIso8601( $this->Product->getSpecialFromDate() ),
|
608 |
+
"gr:validThrough" => $this->div->dateToIso8601( $this->Product->getSpecialToDate() )
|
609 |
+
);
|
610 |
+
$statements .= $this->rdff->properties($validproperties, $this->getReplacements());
|
611 |
+
}
|
612 |
+
else { $statements .= $this->validFromThrough();}
|
613 |
+
|
614 |
+
$attributes = $this->rdff->wrapStatements($statements, $this->getURI("specialUnitPriceSpecification"), "gr:UnitPriceSpecification" );
|
615 |
+
}
|
616 |
|
|
|
|
|
|
|
|
|
|
|
|
|
617 |
|
|
|
618 |
else {
|
619 |
+
// pricing
|
|
|
|
|
|
|
620 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
|
622 |
+
|
623 |
+
|
624 |
+
if ($product->getTypeId() == "bundle") {
|
625 |
+
|
626 |
+
// get min price of bundle
|
627 |
+
|
628 |
+
$minmax = $product->getPriceModel()->getPrices($product);
|
629 |
+
$propArray["gr:hasMinCurrencyValue"] = round($minmax[0],2);
|
630 |
+
$propArray["gr:hasMaxCurrencyValue"] = round($minmax[1],2); }
|
631 |
+
|
632 |
+
else { $propArray["gr:hasCurrencyValue"] = round($this->Product->getFinalPrice(1), 2); }
|
633 |
+
|
634 |
+
// rest of array
|
635 |
+
$propArray["gr:hasCurrency"] = Mage::app()->getStore()->getCurrentCurrencyCode();
|
636 |
+
$propArray["gr:hasUnitOfMeasurement"] = "C62";
|
637 |
+
|
638 |
+
$statements = $this->rdff->properties($propArray,$this->getReplacements());
|
639 |
+
$statements .= $this->validFromThrough();
|
640 |
+
$attributes = $this->rdff->wrapStatements($statements, $this->getURI("unitPriceSpecification"), "gr:UnitPriceSpecification" );
|
641 |
+
|
642 |
+
}
|
643 |
|
|
|
644 |
|
|
|
|
|
645 |
$priceSpecifications .= $this->rdff->wrapRel($attributes, "gr:hasPriceSpecification");
|
646 |
|
647 |
return $priceSpecifications;
|
648 |
}
|
649 |
|
650 |
+
|
651 |
+
###########################
|
652 |
+
|
653 |
+
|
654 |
+
|
655 |
protected function pValidFromThrough()
|
656 |
{
|
657 |
$validFrom = date("Y-m-d", strtotime("now"));
|
748 |
|
749 |
$productId = $this->Product->getId();
|
750 |
$product = Mage::getModel('catalog/product')->load($productId);
|
751 |
+
$storeId = Mage::app()->getStore()->getId();
|
752 |
|
753 |
|
754 |
if ($product->getData('condition')) {
|
775 |
$statements .= $this->rdff->rel("gr:hasManufacturer",$this->Business->getBaseURL() . '#manufacturer_'.$product->getData('manufacturer'), NULL,"en");
|
776 |
}
|
777 |
|
778 |
+
|
779 |
|
780 |
+
$categoryIds = $product->getCategoryIds();
|
781 |
|
782 |
+
foreach($categoryIds as $categoryId) {
|
783 |
+
$category = Mage::getModel('catalog/category')->load($categoryId);
|
784 |
|
785 |
+
$i = $category->getLevel();
|
786 |
+
$parent = $category;
|
787 |
+
$category_name = "";
|
788 |
+
while($i > 2) {
|
789 |
+
$parent = Mage::getModel('catalog/category')->load($parent->getParentId());
|
790 |
+
if ($parent->getName() != "Hauptnavigation") {
|
791 |
+
$category_name = $parent->getName()."/".$category_name;
|
792 |
+
}
|
793 |
+
$i--;
|
794 |
+
}
|
795 |
|
796 |
if ($category->getName()) $statements .= $this->rdff->property("gr:category",htmlentities($category_name.$category->getName(),ENT_QUOTES,"UTF-8"),NULL,$this->sysinfo->getLocaleCode());
|
797 |
|
798 |
}
|
799 |
|
800 |
+
$settings = Mage::getStoreConfig("semantium");
|
801 |
|
802 |
+
if (@$settings['strongid']['strongid_db']) {
|
803 |
+
$strongId = $product->getData(@$settings['strongid']['strongid_dba']);
|
804 |
+
}
|
805 |
+
|
806 |
+
else {$strongId = $this->productGetAttributeValue('strongid');}
|
807 |
+
|
808 |
if ($strongId)
|
809 |
{
|
|
|
810 |
$settings = Mage::getStoreConfig("semantium");
|
811 |
$strongid_type = @$settings['strongid']['strongid_type'];
|
812 |
|
834 |
|
835 |
// dawn of template style
|
836 |
|
837 |
+
// Inventory - VALID
|
838 |
+
|
839 |
+
|
840 |
+
if ($product->getTypeId() != "bundle" and $product->getTypeId() != "configurable") {
|
841 |
+
|
842 |
+
if ($product->getStockItem()->getManageStock())
|
843 |
+
{
|
844 |
+
|
845 |
$inv = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product)->getQty();
|
846 |
+
}
|
847 |
+
else {
|
848 |
+
if ($product->isSaleable()) {/*$inv = 42;*/}
|
849 |
+
}
|
|
|
|
|
|
|
|
|
|
|
850 |
|
851 |
+
if (isset($inv)) {
|
852 |
+
$statements .= "
|
853 |
+
<div rel=\"gr:hasInventoryLevel\">
|
854 |
+
<div typeof=\"gr:QuantitativeValue\">
|
855 |
+
<div property=\"gr:hasMinValue\" content=\"".round($inv,0)."\" datatype=\"xsd:float\"></div>
|
856 |
+
<div property=\"gr:hasUnitOfMeasurement\" datatype=\"xsd:string\" content=\"C62\"></div>
|
857 |
+
</div>
|
858 |
+
</div>";
|
859 |
+
}
|
860 |
|
861 |
+
}
|
862 |
|
863 |
|
864 |
|
app/code/community/Semantium/MSemanticBasic/Model/Observer.php
CHANGED
@@ -25,7 +25,7 @@ class Semantium_MSemanticBasic_Model_Observer
|
|
25 |
protected function notifySWSE($submission_url="http://gr-notify.appspot.com/submit?uri=") {
|
26 |
$email = Mage::getStoreConfig('trans_email/ident_general/email');
|
27 |
$base_url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
28 |
-
$sitemap_url = $submission_url.$base_url."sitemap.xml"."&contact=".$email."&agent=msemantic-1.2.
|
29 |
$this->_httpGet($sitemap_url);
|
30 |
}
|
31 |
|
25 |
protected function notifySWSE($submission_url="http://gr-notify.appspot.com/submit?uri=") {
|
26 |
$email = Mage::getStoreConfig('trans_email/ident_general/email');
|
27 |
$base_url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
28 |
+
$sitemap_url = $submission_url.$base_url."sitemap.xml"."&contact=".$email."&agent=msemantic-1.2.6";
|
29 |
$this->_httpGet($sitemap_url);
|
30 |
}
|
31 |
|
app/code/community/Semantium/MSemanticBasic/Model/Sitemap.php
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Semantium_MSemanticBasic_Model_Sitemap
|
4 |
+
{
|
5 |
+
|
6 |
+
public function createSitemap()
|
7 |
+
{
|
8 |
+
|
9 |
+
|
10 |
+
|
11 |
+
### was wird hier importiert
|
12 |
+
|
13 |
+
# require ("../config/config.php");
|
14 |
+
|
15 |
+
$inhalt = '';
|
16 |
+
$inhalt_produkte = '';
|
17 |
+
$inhalt_hersteller = '';
|
18 |
+
$inhalt_index = '';
|
19 |
+
$blog_text = '';
|
20 |
+
$a = '0';
|
21 |
+
$g = '0';
|
22 |
+
$h = '0';
|
23 |
+
$l = '0';
|
24 |
+
$x = '0';
|
25 |
+
|
26 |
+
|
27 |
+
// kategorien
|
28 |
+
|
29 |
+
// SQL-Abfrage (kategorien: url und datum)
|
30 |
+
$query = mysql_query("SELECT catalog_category_entity.updated_at AS 'datum', core_url_rewrite.request_path AS 'url'
|
31 |
+
FROM catalog_category_entity
|
32 |
+
INNER JOIN core_url_rewrite
|
33 |
+
ON catalog_category_entity.entity_id = core_url_rewrite.category_id
|
34 |
+
WHERE core_url_rewrite.product_id IS NULL
|
35 |
+
AND core_url_rewrite.request_path NOT LIKE '%hersteller%'
|
36 |
+
AND core_url_rewrite.request_path NOT LIKE '%preisaktion%'
|
37 |
+
");
|
38 |
+
|
39 |
+
echo mysql_error();
|
40 |
+
|
41 |
+
while($reihe = mysql_fetch_array($query)) {
|
42 |
+
$inhalt .= '<url><loc>http://www.arzneimittel.de/'.$reihe['url'].'</loc><lastmod>'.str_replace(' ','T',$reihe['datum']).'-02:00</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url>'."\n";
|
43 |
+
$g++;
|
44 |
+
//echo $g.'<br/>';
|
45 |
+
}
|
46 |
+
|
47 |
+
$startseite = '<url><loc>http://www.arzneimittel.de</loc><lastmod>'.date('c').'</lastmod><changefreq>always</changefreq><priority>1</priority></url>'."\n"; // date('Y-m-d')
|
48 |
+
/*
|
49 |
+
$dateiname = '../../sitemap_kategorien.xml';
|
50 |
+
$datei = fopen ($dateiname,"w");
|
51 |
+
fwrite($datei,'<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n".$startseite.$inhalt.'</urlset>');
|
52 |
+
fclose($datei);
|
53 |
+
*/
|
54 |
+
$dateiname = '../../sitemap.xml';
|
55 |
+
$datei = fopen ($dateiname,"w");
|
56 |
+
fwrite($datei,'<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n".$startseite.$inhalt.'</urlset>');
|
57 |
+
fclose($datei);
|
58 |
+
|
59 |
+
echo 'urls (kategorien): '.$g.'<br/>';
|
60 |
+
|
61 |
+
|
62 |
+
// produkte - mehrere dateien
|
63 |
+
|
64 |
+
|
65 |
+
// datum für ratgeber
|
66 |
+
$handle1 = fopen ("sitemap_datei_blog.csv","r"); // Datei zum Lesen öffnen
|
67 |
+
|
68 |
+
while ( ($data= fgetcsv ($handle1, 1000, ";")) !== FALSE ) {
|
69 |
+
$blog[str_pad($data[0], 7, "0", STR_PAD_LEFT)] = $data[1];
|
70 |
+
$blog_text .= str_pad($data[0], 7, "0", STR_PAD_LEFT).';';
|
71 |
+
}
|
72 |
+
|
73 |
+
fclose($handle1);
|
74 |
+
|
75 |
+
//print_r($blog);
|
76 |
+
|
77 |
+
// SQL-Abfrage (produkte: url und datum)
|
78 |
+
$query_produkte = mysql_query("SELECT catalog_product_entity.updated_at AS 'datum', core_url_rewrite.request_path AS 'url', catalog_product_entity.sku AS 'pzn'
|
79 |
+
FROM catalog_product_entity
|
80 |
+
INNER JOIN core_url_rewrite
|
81 |
+
ON catalog_product_entity.entity_id = core_url_rewrite.product_id
|
82 |
+
WHERE core_url_rewrite.category_id IS NULL
|
83 |
+
");
|
84 |
+
|
85 |
+
echo mysql_error();
|
86 |
+
|
87 |
+
while($reihe_produkte = mysql_fetch_array($query_produkte)) {
|
88 |
+
$l++;
|
89 |
+
$modolus = $l % 50000;
|
90 |
+
if ($modolus == '0') $a++;
|
91 |
+
|
92 |
+
// wenn pzn in blog-datei, dann nehme aktuelleres datum
|
93 |
+
|
94 |
+
// abfrage ob pzn in array, wenn ja abfrage ob datum aktueller
|
95 |
+
if (strstr($blog_text,str_pad($reihe_produkte['pzn'], 7, "0", STR_PAD_LEFT))) {
|
96 |
+
if ($reihe_produkte['datum'] < $blog[str_pad($reihe_produkte['pzn'], 7, "0", STR_PAD_LEFT)]) {
|
97 |
+
$datum = str_replace(' ','T',$blog[str_pad($reihe_produkte['pzn'], 7, "0", STR_PAD_LEFT)]).'+00:00';
|
98 |
+
//echo str_pad($reihe_produkte['pzn'], 7, "0", STR_PAD_LEFT).'neues datum<br/>';
|
99 |
+
}
|
100 |
+
else {
|
101 |
+
$datum = str_replace(' ','T',$reihe_produkte['datum']).'-02:00';
|
102 |
+
}
|
103 |
+
}
|
104 |
+
else {
|
105 |
+
$datum = str_replace(' ','T',$reihe_produkte['datum']).'-02:00';
|
106 |
+
}
|
107 |
+
|
108 |
+
$inhalt_produkte[$a] .= '<url><loc>http://www.arzneimittel.de/'.$reihe_produkte['url'].'</loc><lastmod>'.$datum.'</lastmod><changefreq>daily</changefreq><priority>1</priority></url>'."\n";
|
109 |
+
$h++;
|
110 |
+
}
|
111 |
+
|
112 |
+
for ($i='0'; $i < '5'; $i++) {
|
113 |
+
$dateiname = '../../sitemap_produkte_'.$i.'.xml';
|
114 |
+
$datei = fopen ($dateiname,"w");
|
115 |
+
fwrite($datei,'<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n".$inhalt_produkte[$i].'</urlset>');
|
116 |
+
fclose($datei);
|
117 |
+
}
|
118 |
+
|
119 |
+
echo 'urls (produkte): '.$h.'<br/>';
|
120 |
+
|
121 |
+
|
122 |
+
|
123 |
+
// sitemap-index
|
124 |
+
$inhalt_index .= '<sitemap><loc>http://www.arzneimittel.de/sitemap.xml</loc><lastmod>'.date('Y-m-d').'</lastmod></sitemap>'."\n";
|
125 |
+
$inhalt_index .= '<sitemap><loc>http://www.arzneimittel.de/sitemap_produkte_1.xml</loc><lastmod>'.date('Y-m-d').'</lastmod></sitemap>'."\n";
|
126 |
+
$inhalt_index .= '<sitemap><loc>http://www.arzneimittel.de/sitemap_produkte_2.xml</loc><lastmod>'.date('Y-m-d').'</lastmod></sitemap>'."\n";
|
127 |
+
$inhalt_index .= '<sitemap><loc>http://www.arzneimittel.de/sitemap_produkte_3.xml</loc><lastmod>'.date('Y-m-d').'</lastmod></sitemap>'."\n";
|
128 |
+
$inhalt_index .= '<sitemap><loc>http://www.arzneimittel.de/sitemap_produkte_4.xml</loc><lastmod>'.date('Y-m-d').'</lastmod></sitemap>'."\n";
|
129 |
+
$inhalt_index .= '<sitemap><loc>http://www.arzneimittel.de/sitemap_hersteller.xml</loc><lastmod>'.date('Y-m-d').'</lastmod></sitemap>'."\n";
|
130 |
+
$inhalt_index .= '<sitemap><loc>http://www.arzneimittel.de/blog/sitemap.xml</loc><lastmod>'.date('Y-m-d').'</lastmod></sitemap>'."\n";
|
131 |
+
|
132 |
+
|
133 |
+
|
134 |
+
$dateiname = '../../sitemap_index.xml';
|
135 |
+
$datei = fopen ($dateiname,"w");
|
136 |
+
fwrite($datei,'<?xml version="1.0" encoding="UTF-8"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n".$inhalt_index.'</sitemapindex>');
|
137 |
+
fclose($datei);
|
138 |
+
|
139 |
+
echo 'sitemap-index erstellt<br/>';
|
140 |
+
}
|
141 |
+
|
142 |
+
|
143 |
+
}
|
144 |
+
|
145 |
+
?>
|
app/code/community/Semantium/MSemanticBasic/Model/System/Config/Source/Product/Attributes.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Semantium_MSemanticBasic_Model_System_Config_Source_Product_Attributes
|
3 |
+
{
|
4 |
+
public function toOptionArray(){
|
5 |
+
$options = array();
|
6 |
+
$entityTypeId = Mage::getModel('eav/entity_type')->loadByCode('catalog_product')->getEntityTypeId();
|
7 |
+
$attributes = Mage::getModel('eav/entity_attribute')->getCollection()->addFilter('entity_type_id', $entityTypeId)->setOrder('attribute_code', 'ASC');
|
8 |
+
foreach ($attributes as $attribute){
|
9 |
+
$item = array();
|
10 |
+
$item['value'] = $attribute->getAttributeCode();
|
11 |
+
if ($attribute->getFrontendLabel()){
|
12 |
+
$item['label'] = $attribute->getFrontendLabel();
|
13 |
+
}
|
14 |
+
else{
|
15 |
+
$item['label'] = $attribute->getAttributeCode();
|
16 |
+
}
|
17 |
+
$options[] = $item;
|
18 |
+
}
|
19 |
+
|
20 |
+
return $options;
|
21 |
+
}
|
22 |
+
}
|
app/code/community/Semantium/MSemanticBasic/changelog.txt
CHANGED
@@ -1,6 +1,20 @@
|
|
1 |
Changelog:
|
2 |
***************
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
1.2.5
|
5 |
|
6 |
* minimal fix
|
1 |
Changelog:
|
2 |
***************
|
3 |
|
4 |
+
1.2.6
|
5 |
+
|
6 |
+
* new features:
|
7 |
+
How-to for boosting your crawl rate by publishing correct lastmod values in the sitemap.xml generated by Magento's Google sitemap feature
|
8 |
+
agent & version as foaf:maker
|
9 |
+
general installation notes / documentation update
|
10 |
+
pick a custom Strong identifier from your existing attributes
|
11 |
+
|
12 |
+
* bugfixes:
|
13 |
+
0 stock inventory if stock management not activated now fixed, inventory level then doesn't display at all
|
14 |
+
min and max price for bundle products (gr:hasMinCurrencyValue / gr:hasMinCurrencyValue)
|
15 |
+
|
16 |
+
|
17 |
+
|
18 |
1.2.5
|
19 |
|
20 |
* minimal fix
|
app/code/community/Semantium/MSemanticBasic/etc/config.xml
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
<config>
|
14 |
<modules>
|
15 |
<Semantium_MSemanticBasic>
|
16 |
-
<version>1.2.
|
17 |
<depends>
|
18 |
<Mage_Page />
|
19 |
</depends>
|
@@ -105,7 +105,9 @@
|
|
105 |
</Semantium_MSemanticBasic>
|
106 |
</modules>
|
107 |
</translate>
|
108 |
-
|
|
|
|
|
109 |
<acl>
|
110 |
<resources>
|
111 |
<all>
|
@@ -147,9 +149,17 @@
|
|
147 |
<model>msemanticbasic/observer::submitSemanticWebData</model>
|
148 |
</run>
|
149 |
</catalog_product_alert>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
</jobs>
|
151 |
</crontab>
|
152 |
|
|
|
153 |
<!-- BEGIN: setting the default values -->
|
154 |
<default>
|
155 |
<semantium>
|
@@ -227,6 +237,8 @@
|
|
227 |
|
228 |
<strongid>
|
229 |
<strongid_type>ean13</strongid_type>
|
|
|
|
|
230 |
</strongid>
|
231 |
|
232 |
<!--
|
13 |
<config>
|
14 |
<modules>
|
15 |
<Semantium_MSemanticBasic>
|
16 |
+
<version>1.2.6</version>
|
17 |
<depends>
|
18 |
<Mage_Page />
|
19 |
</depends>
|
105 |
</Semantium_MSemanticBasic>
|
106 |
</modules>
|
107 |
</translate>
|
108 |
+
<rewrite>
|
109 |
+
<system_config_source_product_attributes>Semantium_MSemanticBasic_Model_System_Config_Source_Product_Attributes</system_config_source_product_attributes>
|
110 |
+
</rewrite>
|
111 |
<acl>
|
112 |
<resources>
|
113 |
<all>
|
149 |
<model>msemanticbasic/observer::submitSemanticWebData</model>
|
150 |
</run>
|
151 |
</catalog_product_alert>
|
152 |
+
<create_sitemap>
|
153 |
+
every minute
|
154 |
+
<schedule><cron_expr>* * * * *</cron_expr></schedule>
|
155 |
+
<run>
|
156 |
+
<model>msemanticbasic/sitemap::createSitemap</model>
|
157 |
+
</run>
|
158 |
+
</create_sitemap>
|
159 |
</jobs>
|
160 |
</crontab>
|
161 |
|
162 |
+
|
163 |
<!-- BEGIN: setting the default values -->
|
164 |
<default>
|
165 |
<semantium>
|
237 |
|
238 |
<strongid>
|
239 |
<strongid_type>ean13</strongid_type>
|
240 |
+
<strongid_db>0</strongid_db>
|
241 |
+
<strongid_dba>0</strongid_dba>
|
242 |
</strongid>
|
243 |
|
244 |
<!--
|
app/code/community/Semantium/MSemanticBasic/etc/system.xml
CHANGED
@@ -651,6 +651,24 @@ text-shadow: -1px -1px 0px rgba(0,0,0,0.15);font-family: Arial, sans-serif;text-
|
|
651 |
<show_in_website>1</show_in_website>
|
652 |
<show_in_store>0</show_in_store>
|
653 |
</strongid_type>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
654 |
</fields>
|
655 |
</strongid>
|
656 |
|
@@ -660,3 +678,7 @@ text-shadow: -1px -1px 0px rgba(0,0,0,0.15);font-family: Arial, sans-serif;text-
|
|
660 |
</sections>
|
661 |
|
662 |
</config>
|
|
|
|
|
|
|
|
651 |
<show_in_website>1</show_in_website>
|
652 |
<show_in_store>0</show_in_store>
|
653 |
</strongid_type>
|
654 |
+
<strongid_db translate="label">
|
655 |
+
<label>Use Existing Attribute</label>
|
656 |
+
<frontend_type>select</frontend_type>
|
657 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
658 |
+
<sort_order>2</sort_order>
|
659 |
+
<show_in_default>1</show_in_default>
|
660 |
+
<show_in_website>1</show_in_website>
|
661 |
+
<show_in_store>0</show_in_store>
|
662 |
+
</strongid_db>
|
663 |
+
<strongid_dba translate="label">
|
664 |
+
<label>Attribute </label>
|
665 |
+
<frontend_type>select</frontend_type>
|
666 |
+
<source_model>msemanticbasic/system_config_source_product_attributes</source_model>
|
667 |
+
<sort_order>10</sort_order>
|
668 |
+
<show_in_default>1</show_in_default>
|
669 |
+
<show_in_website>1</show_in_website>
|
670 |
+
<show_in_store>1</show_in_store>
|
671 |
+
</strongid_dba>
|
672 |
</fields>
|
673 |
</strongid>
|
674 |
|
678 |
</sections>
|
679 |
|
680 |
</config>
|
681 |
+
|
682 |
+
|
683 |
+
|
684 |
+
|
app/code/community/Semantium/MSemanticBasic/sql/msemanticbasic_setup/mysql4-install-0.9.9.3.2.php
CHANGED
@@ -10,10 +10,6 @@
|
|
10 |
**/
|
11 |
$installer = $this;
|
12 |
|
13 |
-
$base_url = $_SERVER['DOCUMENT_ROOT'];
|
14 |
-
$sitemap_url = "http://gr-notify.appspot.com/submit?uri=".$base_url."sitemap.xml"."&agent=msemantic";
|
15 |
-
_semantiumMsemanticInstallHttpGet($sitemap_url);
|
16 |
-
|
17 |
$installer->installEntities();
|
18 |
|
19 |
|
10 |
**/
|
11 |
$installer = $this;
|
12 |
|
|
|
|
|
|
|
|
|
13 |
$installer->installEntities();
|
14 |
|
15 |
|
app/code/community/Semantium/MSemanticBasic/sql/msemanticbasic_setup/mysql4-install-1.2.6.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* MSemanticBasic Magento Extension
|
4 |
+
* @package Semantium_MSemanticBasic
|
5 |
+
* @copyright (c) 2010 Semantium, Uwe Stoll <stoll@semantium.de>
|
6 |
+
* @author Michael Lambertz <michael@digitallifedesign.net>
|
7 |
+
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
|
8 |
+
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
9 |
+
* You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>
|
10 |
+
**/
|
11 |
+
$installer = $this;
|
12 |
+
|
13 |
+
$installer->installEntities();
|
14 |
+
|
15 |
+
|
16 |
+
|
17 |
+
// perform HTTP GET on endpoint with given URL
|
18 |
+
function _semantiumMsemanticInstallHttpGet($url)
|
19 |
+
{
|
20 |
+
// file operations are allowed
|
21 |
+
if (ini_get('allow_url_fopen') == '1') {
|
22 |
+
$str = file_get_contents($url);
|
23 |
+
if($str === false) {
|
24 |
+
$http_status_code = "";
|
25 |
+
for($i=0; $i<count($http_response_header); $i++)
|
26 |
+
{
|
27 |
+
if(strncasecmp("HTTP", $http_response_header[$i], 4)==0)
|
28 |
+
{
|
29 |
+
// determine HTTP response code
|
30 |
+
$http_status_code = preg_replace("/^.{0,9}([0-9]{3})/i", "$1", $http_response_header[$i]);
|
31 |
+
break;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
echo "<p class=\"error\">Submission failed: ".$http_status_code."</p>";
|
35 |
+
}
|
36 |
+
return $str;
|
37 |
+
}
|
38 |
+
// file operations are disallowed, try it like curl
|
39 |
+
else {
|
40 |
+
$url = parse_url($url);
|
41 |
+
$port = isset($url['port'])?$url['port']:80;
|
42 |
+
|
43 |
+
$fp = fsockopen($url['host'], $port);
|
44 |
+
|
45 |
+
if(!$fp) {
|
46 |
+
echo "<p class=\"error\">Cannot retrieve $url</p>";
|
47 |
+
return false;
|
48 |
+
}
|
49 |
+
else {
|
50 |
+
// send the necessary headers to get the file
|
51 |
+
fwrite($fp, "GET ".$url['path']."?".$url['query']." HTTP/1.0\r\n".
|
52 |
+
"Host:". $url['host']."\r\n".
|
53 |
+
"Accept: text/html\r\n".
|
54 |
+
"User-Agent: GoodRelations Extension for Joomla v2\r\n".
|
55 |
+
"Connection: close\r\n\r\n");
|
56 |
+
|
57 |
+
// retrieve response from server
|
58 |
+
$buffer = "";
|
59 |
+
$status_code_found = false;
|
60 |
+
$is_error = false;
|
61 |
+
while($line = fread($fp, 4096))
|
62 |
+
{
|
63 |
+
$buffer .= $line;
|
64 |
+
if(!$status_code_found && ($pos=strpos($line, "HTTP"))>=0) {
|
65 |
+
// extract HTTP response code
|
66 |
+
$response = explode("\n", substr($line, $pos));
|
67 |
+
$http_status_code = preg_replace("/^.{0,9}([0-9]{3})/i", "$1", $response[0]);
|
68 |
+
$is_error = !preg_match("/(200|406)/i", $http_status_code); // accepted status codes not resulting in error are 200 and 406
|
69 |
+
$status_code_found = true;
|
70 |
+
}
|
71 |
+
}
|
72 |
+
fclose($fp);
|
73 |
+
|
74 |
+
$pos = strpos($buffer,"\r\n\r\n");
|
75 |
+
if($is_error)
|
76 |
+
echo "<p class=\"error\">Submission failed: ".$http_status_code."</p>";
|
77 |
+
return substr($buffer,$pos);
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
app/code/community/Semantium/MSemanticBasic/sql/msemanticbasic_setup/mysql4-upgrade-0.9.9.2-0.9.9.3.php
CHANGED
@@ -10,10 +10,6 @@
|
|
10 |
**/
|
11 |
$installer = $this;
|
12 |
|
13 |
-
$base_url = $_SERVER['DOCUMENT_ROOT']
|
14 |
-
$sitemap_url = "http://gr-notify.appspot.com/submit?uri=".$base_url."sitemap.xml"."&agent=msemantic";
|
15 |
-
_semantiumMsemanticInstallHttpGet($sitemap_url);
|
16 |
-
|
17 |
$installer->installEntities();
|
18 |
|
19 |
|
10 |
**/
|
11 |
$installer = $this;
|
12 |
|
|
|
|
|
|
|
|
|
13 |
$installer->installEntities();
|
14 |
|
15 |
|
app/code/community/Semantium/MSemanticBasic/sql/msemanticbasic_setup/mysql4-upgrade-1.2.6-1.2.6.php
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* MSemanticBasic Magento Extension
|
4 |
+
* @package Semantium_MSemanticBasic
|
5 |
+
* @copyright (c) 2010 Semantium, Uwe Stoll <stoll@semantium.de>
|
6 |
+
* @author Michael Lambertz <michael@digitallifedesign.net>
|
7 |
+
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
|
8 |
+
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
9 |
+
* You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>
|
10 |
+
**/
|
11 |
+
$installer = $this;
|
12 |
+
|
13 |
+
|
14 |
+
$installer->installEntities();
|
15 |
+
|
16 |
+
|
17 |
+
|
18 |
+
// perform HTTP GET on endpoint with given URL
|
19 |
+
function _semantiumMsemanticInstallHttpGet($url)
|
20 |
+
{
|
21 |
+
// file operations are allowed
|
22 |
+
if (ini_get('allow_url_fopen') == '1') {
|
23 |
+
$str = file_get_contents($url);
|
24 |
+
if($str === false) {
|
25 |
+
$http_status_code = "";
|
26 |
+
for($i=0; $i<count($http_response_header); $i++)
|
27 |
+
{
|
28 |
+
if(strncasecmp("HTTP", $http_response_header[$i], 4)==0)
|
29 |
+
{
|
30 |
+
// determine HTTP response code
|
31 |
+
$http_status_code = preg_replace("/^.{0,9}([0-9]{3})/i", "$1", $http_response_header[$i]);
|
32 |
+
break;
|
33 |
+
}
|
34 |
+
}
|
35 |
+
echo "<p class=\"error\">Submission failed: ".$http_status_code."</p>";
|
36 |
+
}
|
37 |
+
return $str;
|
38 |
+
}
|
39 |
+
// file operations are disallowed, try it like curl
|
40 |
+
else {
|
41 |
+
$url = parse_url($url);
|
42 |
+
$port = isset($url['port'])?$url['port']:80;
|
43 |
+
|
44 |
+
$fp = fsockopen($url['host'], $port);
|
45 |
+
|
46 |
+
if(!$fp) {
|
47 |
+
echo "<p class=\"error\">Cannot retrieve $url</p>";
|
48 |
+
return false;
|
49 |
+
}
|
50 |
+
else {
|
51 |
+
// send the necessary headers to get the file
|
52 |
+
fwrite($fp, "GET ".$url['path']."?".$url['query']." HTTP/1.0\r\n".
|
53 |
+
"Host:". $url['host']."\r\n".
|
54 |
+
"Accept: text/html\r\n".
|
55 |
+
"User-Agent: GoodRelations Extension for Joomla v2\r\n".
|
56 |
+
"Connection: close\r\n\r\n");
|
57 |
+
|
58 |
+
// retrieve response from server
|
59 |
+
$buffer = "";
|
60 |
+
$status_code_found = false;
|
61 |
+
$is_error = false;
|
62 |
+
while($line = fread($fp, 4096))
|
63 |
+
{
|
64 |
+
$buffer .= $line;
|
65 |
+
if(!$status_code_found && ($pos=strpos($line, "HTTP"))>=0) {
|
66 |
+
// extract HTTP response code
|
67 |
+
$response = explode("\n", substr($line, $pos));
|
68 |
+
$http_status_code = preg_replace("/^.{0,9}([0-9]{3})/i", "$1", $response[0]);
|
69 |
+
$is_error = !preg_match("/(200|406)/i", $http_status_code); // accepted status codes not resulting in error are 200 and 406
|
70 |
+
$status_code_found = true;
|
71 |
+
}
|
72 |
+
}
|
73 |
+
fclose($fp);
|
74 |
+
|
75 |
+
$pos = strpos($buffer,"\r\n\r\n");
|
76 |
+
if($is_error)
|
77 |
+
echo "<p class=\"error\">Submission failed: ".$http_status_code."</p>";
|
78 |
+
return substr($buffer,$pos);
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
app/etc/modules/Semantium_MSemanticBasic.xml
CHANGED
@@ -16,6 +16,9 @@
|
|
16 |
<Semantium_MSemanticBasic>
|
17 |
<active>true</active>
|
18 |
<codePool>community</codePool>
|
|
|
|
|
|
|
19 |
</Semantium_MSemanticBasic>
|
20 |
|
21 |
</modules>
|
16 |
<Semantium_MSemanticBasic>
|
17 |
<active>true</active>
|
18 |
<codePool>community</codePool>
|
19 |
+
<depends>
|
20 |
+
<Mage_Adminhtml />
|
21 |
+
</depends>
|
22 |
</Semantium_MSemanticBasic>
|
23 |
|
24 |
</modules>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Semantium_MSemanticBasic</name>
|
4 |
-
<version>1.2.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.gnu.org/licenses/lgpl.html">GNU/LGPL</license>
|
7 |
<channel>community</channel>
|
@@ -18,9 +18,9 @@ The following ressources emphasize the positive outcome of using GoodRelations:
|
|
18 |
* How To Get Ranked Without Resorting to Outdated SEO Tactics [http://www.solutions-answers-results.com.au/index.php/Ways-to-Improve-Your-Website/How-To-Get-Ranked-Without-Resorting-to-Outdated-SEO-Tactics.html]</description>
|
19 |
<notes>Magento 1.3: if you use another language than english or german, than the "Strong Identifier" attribute is named "EAN Code" in the backend. But it also works well with GTIN-8 or GTIN-14 (configurable in the global MSemantic configuration). You can rename the label of this attribute manually in the table eav_attribute (attribute_code is gr_ean).</notes>
|
20 |
<authors><author><name>Uwe Stoll (Semantium)</name><user>auto-converted</user><email>stoll@semantium.de</email></author></authors>
|
21 |
-
<date>
|
22 |
-
<time>
|
23 |
-
<contents><target name="mageetc"><dir name="modules"><file name="Semantium_MSemanticBasic.xml" hash="
|
24 |
<compatible/>
|
25 |
<dependencies/>
|
26 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Semantium_MSemanticBasic</name>
|
4 |
+
<version>1.2.6</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://www.gnu.org/licenses/lgpl.html">GNU/LGPL</license>
|
7 |
<channel>community</channel>
|
18 |
* How To Get Ranked Without Resorting to Outdated SEO Tactics [http://www.solutions-answers-results.com.au/index.php/Ways-to-Improve-Your-Website/How-To-Get-Ranked-Without-Resorting-to-Outdated-SEO-Tactics.html]</description>
|
19 |
<notes>Magento 1.3: if you use another language than english or german, than the "Strong Identifier" attribute is named "EAN Code" in the backend. But it also works well with GTIN-8 or GTIN-14 (configurable in the global MSemantic configuration). You can rename the label of this attribute manually in the table eav_attribute (attribute_code is gr_ean).</notes>
|
20 |
<authors><author><name>Uwe Stoll (Semantium)</name><user>auto-converted</user><email>stoll@semantium.de</email></author></authors>
|
21 |
+
<date>2012-03-01</date>
|
22 |
+
<time>12:52:10</time>
|
23 |
+
<contents><target name="mageetc"><dir name="modules"><file name="Semantium_MSemanticBasic.xml" hash="3eb345a90c04b8804822c9636b7d7555"/></dir></target><target name="magecommunity"><dir name="Semantium"><dir name="MSemanticBasic"><dir name="Block"><file name="Business.php" hash="164ff85e939eac555bc06584c733eb2d"/><file name="Datadump.php" hash="66ff7727bfdc279382d4f55ffa6d5891"/><file name="Product.php" hash="3d55b763293ca2b96201beceb296effd"/><file name="Thanks.php" hash="5039b62205679115ebef99b34192df0a"/></dir><dir name="controllers"><file name="IndexController.php" hash="2d014e2316ba23adb1be2e0821a126ea"/></dir><dir name="etc"><file name="config.xml" hash="2f404f017ce2cd7321699d6218a3c083"/><file name="system.xml" hash="e708829b17a24c7bc68d6162fcec5dd0"/></dir><dir name="Helper"><file name="AbstractFormat.php" hash="953f97f76c3ed5c2bb630435dfb4f350"/><file name="Data.php" hash="fc2043acb2695b5304e9b762831cd208"/><file name="Div.php" hash="eec533dee2be1f0469a15fefb5d06330"/><file name="Rdfaformat.php" hash="f2d8372cc3a1cd347accea583c3fcd44"/><file name="Rdfformat.php" hash="d7718fdca1c77e92668c6a3a3f76bdbd"/><file name="Sysinfo.php" hash="3edac7805c663bd0d82ba85714a39dfb"/></dir><dir name="Model"><dir name="Resource"><dir name="Eav"><dir name="Mysql4"><file name="Setup.php" hash="a39d88f13dae76082a009743e368aa3f"/></dir></dir></dir><dir name="Source"><file name="Strongid.php" hash="13d8833eee26a5f8b870b65f44b4ce0b"/><file name="Valid.php" hash="650c03155a9a8797514fb7e596929d15"/></dir><dir name="System"><dir name="Config"><dir name="Source"><dir name="Product"><file name="Attributes.php" hash="b6f58c1b5737686f7b47796e12e1084c"/></dir></dir></dir></dir><file name="Business.php" hash="678c1a77374b33707bacb5ce57c6afc9"/><file name="GoodRelations.php" hash="2b3be73928f9c301fbd5dacecc99cb94"/><file name="Observer.php" hash="163c5066e9cd1ebe64aca0be2fd99c56"/><file name="RDFs.php" hash="f7f73eb5d812195156f5f7c2143f1636"/><file name="Sitemap.php" hash="6ffe4140e36404b3db6c291a3c576167"/><file name="VCard.php" hash="a697c5fd451fdf62f8317aae70b5c84c"/></dir><dir name="sql"><dir name="msemanticbasic_setup"><file name="mysql4-install-0.8.0.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.8.1.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.8.2.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.8.3.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.8.4.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.8.5.php" hash="810144e6e3eff6073895b501ecee97f2"/><file name="mysql4-install-0.8.6.php" hash="810144e6e3eff6073895b501ecee97f2"/><file name="mysql4-install-0.9.0.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.1.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.2.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.4.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.5.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.6.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.7.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.8.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.9.1.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.9.2.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-0.9.9.3.1 copy 1.php" hash="e5ef3335b06dbb07829a63dd17db3c6c"/><file name="mysql4-install-0.9.9.3.1.php" hash="e5ef3335b06dbb07829a63dd17db3c6c"/><file name="mysql4-install-0.9.9.3.2.php" hash="ae7bacad38ef06f8f12e61f943bf17f7"/><file name="mysql4-install-0.9.9.3.3.php" hash="d2210860f97c46faf1b1c758f1c3530f"/><file name="mysql4-install-0.9.9.3.4.php" hash="745c332d15adbf5d5c92fab04e993f1b"/><file name="mysql4-install-0.9.9.3.5.php" hash="d6eda2c6f7495fd6397c7519c0f06830"/><file name="mysql4-install-0.9.9.3.6.php" hash="694b9cfce33213193099a51735efe79e"/><file name="mysql4-install-0.9.9.3.7.php" hash="67d9edfb0a91a4ad863dfeb95101cdbe"/><file name="mysql4-install-0.9.9.3.8.php" hash="dc41a32c350b609eeb8010e825ab6b0e"/><file name="mysql4-install-0.9.9.3.9.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-install-0.9.9.3.php" hash="d6a89aab9e44aa47478744ad2c9ae6c4"/><file name="mysql4-install-0.9.9.4.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-install-0.9.9.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-install-1.1.0.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-install-1.2.1.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-install-1.2.2.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-install-1.2.3.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-install-1.2.4.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-install-1.2.5.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-install-1.2.6.php" hash="9d4c7920ded55142506596e87fac901f"/><file name="mysql4-upgrade-0.8.0-0.8.1.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.8.1-0.8.2.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.8.2-0.8.3.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.8.3-0.8.4.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.8.4-0.9.0.php" hash="810144e6e3eff6073895b501ecee97f2"/><file name="mysql4-upgrade-0.9.0-0.9.1.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.1-0.9.2.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.2-0.9.4.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.4-0.9.5.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.5-0.9.6.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.6-0.9.7.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.7-0.9.8.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.8-0.9.9.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.9-0.9.9.1.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.9.1-0.9.9.2.php" hash="24bb680b77c72bd957d8e941e1c02c07"/><file name="mysql4-upgrade-0.9.9.2-0.9.9.3.php" hash="6a75f3ece98e56356dca07548d69d29b"/><file name="mysql4-upgrade-0.9.9.3-0.9.9.3.1.php" hash="c5a452e2646b50fb576cfe305f659434"/><file name="mysql4-upgrade-0.9.9.3.1-0.9.9.3.2.php" hash="6dc3aa90d38ec7ad92d804094ef6f4ab"/><file name="mysql4-upgrade-0.9.9.3.2-0.9.9.3.3.php" hash="e123ae7f0c214e4044e5dac17f3be7d8"/><file name="mysql4-upgrade-0.9.9.3.3-0.9.9.3.4.php" hash="745c332d15adbf5d5c92fab04e993f1b"/><file name="mysql4-upgrade-0.9.9.3.4-0.9.9.3.5.php" hash="bddd63eedc4e81ecd25c63995782891d"/><file name="mysql4-upgrade-0.9.9.3.5-0.9.9.3.6.php" hash="6b057032af23dd1937a0314593c0e457"/><file name="mysql4-upgrade-0.9.9.3.6-0.9.9.3.7.php" hash="6b057032af23dd1937a0314593c0e457"/><file name="mysql4-upgrade-0.9.9.3.7-0.9.9.3.8.php" hash="b93259ef17eb9ea97b9d153001eb5f57"/><file name="mysql4-upgrade-0.9.9.3.9-0.9.9.4.php" hash="b93259ef17eb9ea97b9d153001eb5f57"/><file name="mysql4-upgrade-1.2.1.1-1.2.2.php" hash="b93259ef17eb9ea97b9d153001eb5f57"/><file name="mysql4-upgrade-1.2.1.2-1.2.3.php" hash="b93259ef17eb9ea97b9d153001eb5f57"/><file name="mysql4-upgrade-1.2.3-1.2.4.php" hash="b93259ef17eb9ea97b9d153001eb5f57"/><file name="mysql4-upgrade-1.2.4-1.2.5.php" hash="b93259ef17eb9ea97b9d153001eb5f57"/><file name="mysql4-upgrade-1.2.6-1.2.6.php" hash="b93259ef17eb9ea97b9d153001eb5f57"/><file name="script.sh" hash="0168886ab4f6a6c2658fada0f5ff3727"/></dir></dir><file name="changelog.txt" hash="cd2eacd3248b9ed66e2e864bc65064d5"/></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Semantium_MSemanticBasic.csv" hash="a4bfc26d36e33d5c9ed00da83fa8f99c"/></dir><dir name="en_GB"><file name="Semantium_MSemanticBasic.csv" hash="a4bfc26d36e33d5c9ed00da83fa8f99c"/></dir><dir name="en_US"><file name="Semantium_MSemanticBasic.csv" hash="a4bfc26d36e33d5c9ed00da83fa8f99c"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="msemanticbasic.xml" hash="47f8ae8742ea9cb25be73e711d6dfa64"/></dir><dir name="template"><dir name="semantium"><file name="dump.phtml" hash="26ff96865f95e91ee5d5596a30fea112"/></dir></dir></dir></dir></dir></target></contents>
|
24 |
<compatible/>
|
25 |
<dependencies/>
|
26 |
</package>
|