Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }