*/ /** * Klasa stNokaut * * @package stNokautPlugin * @subpackage libs */ class stNokaut extends stPriceCompareGenerateFile implements stPriceCompareGenerateFileInterface { /** * Konstruktor */ public function __construct() { parent::__construct(__CLASS__); } /** * Generowanie nagłówka pliku * * @return string */ protected function getFileHead() { $content = xml_open_tag('?xml version="1.0" encoding="UTF-8"?'); $content.= xml_open_tag('!DOCTYPE nokaut SYSTEM "http://www.nokaut.pl/integracja/nokaut.dtd"'); $content.= xml_open_tag('nokaut'); $content.= xml_open_tag('offers'); return $content; } /** * Generowanie zawartości pliku * * @param $step integer numer kroku * @return string */ protected function getFileBody($step) { $priceCompareProducts = $this->getProducts($step); $url_product_params = ""; if (is_dir(sfConfig::get('sf_plugins_dir')."/appAdsTrackerPlugin")) { $config = stConfig::getInstance(sfContext::getInstance(), 'appAdsTrackerBackend'); if ($config->get("is_active")==1) { $c = new Criteria(); $c->add(AdsTrackerListPeer::IS_ACTIVE, 1); $c->add(AdsTrackerListPeer::PLUGIN_NAME, "nokaut"); $nokaut_ads = AdsTrackerListPeer::doSelectOne($c); if ($nokaut_ads) { $url_product_params = "?hash=".$nokaut_ads->getHash(); } } } $content = ""; foreach ($priceCompareProducts as $priceCompareProduct) { $parsedProduct = new stPriceCompareProductParser($priceCompareProduct->getProduct()); if ($parsedProduct->checkProduct()) { $this->product = $priceCompareProduct->getProduct(); $this->price = $parsedProduct->getPrice(); stEventDispatcher::getInstance()->notify(new sfEvent($this, 'stNokautPlugin.stNokautChangePrice', array())); $productContent = xml_tag('id', $parsedProduct->getId()); $productContent.= xml_cdata_tag('name', $parsedProduct->getName()); $productContent.= xml_cdata_tag('description', $parsedProduct->getDescription()); $productContent.= xml_tag('url', $parsedProduct->getUrl().$url_product_params); $productContent.= xml_tag('image', $parsedProduct->getPhoto()); $productContent.= xml_tag('price', $this->price); $productContent.= xml_cdata_tag('category', $parsedProduct->getCategory()); if ($parsedProduct->hasProducer()) $productContent.= xml_cdata_tag('producer', $parsedProduct->getProducer()); if ($this->getConfig('use_product_code') == true) { $productContent.= xml_tag('property',$parsedProduct->getCode(), array('name' => 'producer code')); } if($parsedProduct->getManCode()){ $productContent.= xml_tag('property',$parsedProduct->getManCode(), array('name' => 'EAN')); } $productContent.= xml_tag('availability', $parsedProduct->getPriceCompareAvailability($this, 4)); $content.= price_compare_xml_tag('offer', $productContent); } unset($parsedProduct); if ($this->isCLI()) { usleep(250000); } } return $content; } /** * Generowanie stopki pliku * * @return string */ protected function getFileFoot() { $content = xml_close_tag('offers'); $content.= xml_close_tag('nokaut'); return $content; } /** * Pobieranie infromacji o porównywarce podczas eksportu * * @param object $object * @return integer */ static public function getProduct($object = null) { return stPriceCompareGenerateFile::getProductForExport(__CLASS__, $object); } /** * Ustawianie infromacji o porównywarce podczas importu * * @param object $object * @param integer $value * @return boolean */ static public function setProduct($object = null, $active = 0) { return stPriceCompareGenerateFile::setProductForImport(__CLASS__, $object, $active); } /** * Pobieranie informacji o statusach dostępności Nokaut * * @return array */ static public function getNokautAvailabilities() { return array(4 => __('sprawdź dostępność w sklepie'), 0 => __('produkt dostępny od ręki'), 1 => __('produkt dostępny do tygodnia'), 2 => __('produkt dostępny powyżej tygodnia'), 3 => __('produkt na życzenie')); } }