
Magento: verificando se produto é novidade.
By:
juliovedovatto on
Sep 22nd, 2011 | syntax:
PHP | size: 1.52 KB | hits: 117 | expires: Never
/**
* Verificar se o produto é novidade, comparando campos "NewsFromDate" e "NewsToDate" do produto.
*
* @author Julio Vedovatto <juliovedovatto@gmail.com>
* @uses Zend_Date
* @param Mage_Catalog_Model_Product $_product
* @throws Exception
* @return boolean
*/
public function isProdutoNovidade(Mage_Catalog_Model_Product $_product) {
$is_novidade = false;
try {
$locale = Mage::app()->getLocale();
if (!$_product instanceof Mage_Catalog_Model_Product)
throw new Exception('Produto inválido');
// Pegar a data atual, pegando apenas a parte da data (sem comparação com hora)
$now = $locale->date(null, 'yyyy-MM-dd', null, false);
// Pegar datas de início e fim do produto
$data_ini = $_product->getNewsFromDate();
$data_fim = $_product->getNewsToDate();
if (empty($data_ini) || empty($data_fim))
throw new Exception('NewsFromDate ou NewsToDate não foi preenchido.');
// Converter $data_ini e $data_fim p/ Zend_Date para comparação.Desabilitando o uso de timezone (já que vem sem horas do banco)
$data_ini = $locale->date($data_ini, null, null, false);
$data_fim = $locale->date($data_fim, null, null, false);
$is_novidade = ($data_ini->isEarlier($now) | $data_ini->equals($now)) && ($data_fim->isLater($now) | $data_fim->equals($now));
} catch (Exception $err) {
Mage::logException('Erro ao converter data para comparação. [Erro]: ' . $err->getMessage());
$is_novidade = false;
}
return $is_novidade;
}