/** * Export the products by the Google Product Atom Export * @author Shine Software * @return xml */ public function googleproductsAction() { // Calling Google Product Extension Zend_Feed_Writer::addPrefixPath('Shineisp_Feed_Writer_Extension_', 'Shineisp/Feed/Writer/Extension/'); Zend_Feed_Writer::registerExtension('Google'); $isp = Shineisp_Registry::get('ISP'); $feed = new Zend_Feed_Writer_Feed(); $feed->setTitle($isp->company); $feed->setLink($isp->website); $feed->setFeedLink($isp->website . '/atom/products', 'atom'); $feed->addAuthor(array('name' => $isp->manager, 'email' => $isp->email, 'uri' => $isp->website)); $feed->setDateModified(time()); $feed->setGenerator("ShineISP Atom Extension"); $products = Products::getAllRss(); // print_r($products); // die; foreach ($products as $product) { // Get the google categories $categories = ProductsCategories::getGoogleCategories($product['categories']); $cattype = Products::get_text_categories($product['categories']); // Create the product entries $entry = $feed->createEntry(); $entry->setTitle($product['ProductsData'][0]['name']); $entry->setProductType(Products::get_text_categories($product['categories'])); $entry->setBrand($isp->company); $entry->setAvailability(true); $entry->setLink($isp->website . "/" . $product['uri'] . ".html"); // Custom Attributes Google Product Extension if (!empty($product['ProductsMedia'][0]['path'])) { $entry->setImageLink($isp->website . str_replace(" ", "%20", $product['ProductsMedia'][0]['path'])); } if (!empty($product['uri'])) { $entry->setProductId($product['uri']); } if (!empty($categories[0]['googlecategs'])) { $entry->setCategory($categories[0]['googlecategs']); } $price = Products::getPriceSuggested($product['product_id'], true); $entry->setPrice($price); $entry->setCondition('new'); $entry->setDateModified(time()); $entry->setDescription(strip_tags($product['ProductsData'][0]['shortdescription'])); $feed->addEntry($entry); } $feed = $feed->export('atom'); // Feed Fixing for google products $feed = $this->googlefixes($feed); Shineisp_Commons_Utilities::writefile($feed, "documents", "googleproducts.xml"); die($feed); }
/** * Reset class state to defaults * * @return void */ public static function reset() { self::$_pluginLoader = null; self::$_prefixPaths = array(); self::$_extensions = array('entry' => array(), 'feed' => array(), 'entryRenderer' => array(), 'feedRenderer' => array()); }
/** * Load extensions from Zend_Feed_Writer * * @return void */ protected function _loadExtensions() { $all = Zend_Feed_Writer::getExtensions(); $exts = $all['feed']; foreach ($exts as $ext) { $className = Zend_Feed_Writer::getPluginLoader()->getClassName($ext); $this->_extensions[$ext] = new $className(); $this->_extensions[$ext]->setEncoding($this->getEncoding()); } }
/** * Overloading to itunes specific setters * * @param string $method * @param array $params * @return mixed */ public function __call($method, array $params) { $point = Zend_Feed_Writer::lcfirst(substr($method, 9)); if (!method_exists($this, 'setItunes' . ucfirst($point)) && !method_exists($this, 'addItunes' . ucfirst($point))) { #require_once 'Zend/Feed/Writer/Exception/InvalidMethodException.php'; throw new Zend_Feed_Writer_Exception_InvalidMethodException('invalid method: ' . $method); } if (!array_key_exists($point, $this->_data) || empty($this->_data[$point])) { return null; } return $this->_data[$point]; }
/** * Load extensions from Zend_Feed_Writer * * @return void */ protected function _loadExtensions() { Zend_Feed_Writer::registerCoreExtensions(); $all = Zend_Feed_Writer::getExtensions(); if (stripos(get_class($this), 'entry')) { $exts = $all['entryRenderer']; } else { $exts = $all['feedRenderer']; } foreach ($exts as $extension) { $className = Zend_Feed_Writer::getPluginLoader()->getClassName($extension); $this->_extensions[$extension] = new $className($this->getDataContainer()); $this->_extensions[$extension]->setEncoding($this->getEncoding()); } }
public function testAddsAndOrdersEntriesByDateIfRequested() { $writer = new Zend_Feed_Writer(); $entry = $writer->createEntry(); $entry->setDateCreated(1234567890); $entry2 = $writer->createEntry(); $entry2->setDateCreated(1230000000); $writer->addEntry($entry); $writer->addEntry($entry2); $writer->orderByDate(); $this->assertEquals(1230000000, $writer->getEntry(1)->getDateCreated()->get(Zend_Date::TIMESTAMP)); }