Advertisement
juliovedovatto

Magento: verificando se produto é novidade.

Sep 22nd, 2011
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.52 KB | None | 0 0
  1.     /**
  2.      * Verificar se o produto é novidade, comparando campos "NewsFromDate" e "NewsToDate" do produto.
  3.      *
  4.      * @author Julio Vedovatto <juliovedovatto@gmail.com>
  5.      * @uses Zend_Date
  6.      * @param Mage_Catalog_Model_Product $_product
  7.      * @throws Exception
  8.      * @return boolean
  9.      */
  10.     public function isProdutoNovidade(Mage_Catalog_Model_Product $_product) {
  11.         $is_novidade = false;
  12.         try {
  13.             $locale = Mage::app()->getLocale();
  14.            
  15.             if (!$_product instanceof Mage_Catalog_Model_Product)
  16.                 throw new Exception('Produto inválido');
  17.                
  18. //          Pegar a data atual, pegando apenas a parte da data (sem comparação com hora)
  19.             $now = $locale->date(null, 'yyyy-MM-dd', null, false);
  20. //          Pegar datas de início e fim do produto    
  21.             $data_ini = $_product->getNewsFromDate();
  22.             $data_fim = $_product->getNewsToDate();
  23.            
  24.             if (empty($data_ini) || empty($data_fim))
  25.                 throw new Exception('NewsFromDate ou NewsToDate não foi preenchido.');
  26.  
  27. //          Converter $data_ini e $data_fim p/ Zend_Date para comparação.Desabilitando o uso de timezone (já que vem sem horas do banco)    
  28.             $data_ini = $locale->date($data_ini, null, null, false);
  29.             $data_fim = $locale->date($data_fim, null, null, false);
  30.            
  31.             $is_novidade = ($data_ini->isEarlier($now) | $data_ini->equals($now)) && ($data_fim->isLater($now) | $data_fim->equals($now));
  32.            
  33.         } catch (Exception $err) {
  34.             Mage::logException('Erro ao converter data para comparação. [Erro]: ' . $err->getMessage());
  35.             $is_novidade = false;
  36.         }
  37.        
  38.         return $is_novidade;
  39.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement