/** * Generate XML file * * @return XML */ public function generateXml() { /* $io->streamWrite('<?xml version="1.0" encoding="UTF-8"?>' . "\n"); $io->streamWrite('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'); */ $storeId = $this->getStoreId(); $date = Mage::getSingleton('core/date')->gmtDate('Y-m-d'); $baseUrl = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK); $data = new Varien_Object(); $data->setLinks(array()); /** * Generate categories sitemap */ $collection = Mage::getResourceModel('sitemap/catalog_category')->getCollection($storeId); foreach ($collection as $item) { array_push($data->getLinks(), $item->getUrl()); } unset($collection); /** * Generate products sitemap */ $changefreq = (string) Mage::getStoreConfig('sitemap/product/changefreq', $storeId); $priority = (string) Mage::getStoreConfig('sitemap/product/priority', $storeId); $collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId); foreach ($collection as $item) { $xml = sprintf('<url><loc>%s</loc><lastmod>%s</lastmod><changefreq>%s</changefreq><priority>%.1f</priority></url>', htmlspecialchars($baseUrl . $item->getUrl()), $date, $changefreq, $priority); $io->streamWrite($xml); } unset($collection); /** * Generate cms pages sitemap */ $changefreq = (string) Mage::getStoreConfig('sitemap/page/changefreq', $storeId); $priority = (string) Mage::getStoreConfig('sitemap/page/priority', $storeId); $collection = Mage::getResourceModel('sitemap/cms_page')->getCollection($storeId); foreach ($collection as $item) { $xml = sprintf('<url><loc>%s</loc><lastmod>%s</lastmod><changefreq>%s</changefreq><priority>%.1f</priority></url>', htmlspecialchars($baseUrl . $item->getUrl()), $date, $changefreq, $priority); $io->streamWrite($xml); } unset($collection); $io->streamWrite('</urlset>'); $io->streamClose(); $this->setSitemapTime(Mage::getSingleton('core/date')->gmtDate('Y-m-d H:i:s')); $this->save(); return $this; }
/** * Check if product can be bought * * @param Mage_Catalog_Model_Product $product * @return Mage_Bundle_Model_Product_Type * @throws Mage_Core_Exception */ public function checkProductBuyState($product = null) { parent::checkProductBuyState($product); $product = $this->getProduct($product); $option = $product->getCustomOption('info_buyRequest'); if ($option instanceof Mage_Sales_Model_Quote_Item_Option) { $buyRequest = new Varien_Object(unserialize($option->getValue())); if (!$buyRequest->hasLinks()) { if (!$product->getLinksPurchasedSeparately()) { $allLinksIds = Mage::getModel('downloadable/link')->getCollection()->addProductToFilter($product->getId())->getAllIds(); $buyRequest->setLinks($allLinksIds); $product->addCustomOption('info_buyRequest', serialize($buyRequest->getData())); } else { Mage::throwException(Mage::helper('downloadable')->__('Please specify product link(s).')); } } } return $this; }