Beispiel #1
0
 /**
  * Callback method for applying price filter.
  * @param Mage_Catalog_Model_Resource_Product_Collection $_collection
  * @param Mage_Adminhtml_Block_Widget_Grid_Column $_column
  */
 public function _filterPrice($_collection, $_column)
 {
     $_field = $_column->getFilterIndex() ? $_column->getFilterIndex() : $_column->getIndex();
     $_condition = $_column->getFilter()->getCondition();
     if (!$_field || !is_array($_condition)) {
         return;
     }
     if (!array_key_exists('type', $_condition) || !is_numeric($_condition['type'])) {
         $_collection->addFieldToFilter($_field, $_condition);
     } else {
         $_storeId = (int) $this->getRequest()->getParam('store', 0);
         $_store = Mage::app()->getStore($_storeId);
         $_joinCondition = array('`e`.`entity_id` = `at_reservation_price`.`entity_id`', '`at_reservation_price`.`store_id` = ' . $_store->getId(), '`at_reservation_price`.`ptype` = ' . $_condition['type']);
         if (array_key_exists('from', $_condition)) {
             $_joinCondition[] = '`at_reservation_price`.`price` >= ' . $_condition['from'];
         }
         if (array_key_exists('to', $_condition)) {
             $_joinCondition[] = '`at_reservation_price`.`price` <= ' . $_condition['to'];
         }
         $_joinCondition[] = '`at_reservation_price`.`date_from` = \'0000-00-00 00:00:00\' OR DATE(`at_reservation_price`.`date_from`) <= DATE(\'' . date('Y-m-d H:i:s', Mage::getModel('core/date')->gmtTimestamp(time())) . '\')';
         $_joinCondition[] = '`at_reservation_price`.`date_to` = \'0000-00-00 00:00:00\' OR DATE(`at_reservation_price`.`date_to`) >= DATE(\'' . date('Y-m-d H:i:s', Mage::getModel('core/date')->gmtTimestamp(time())) . '\')';
         $_collection->getSelect()->joinInner(array('at_reservation_price' => $_collection->getTable('payperrentals/reservationprices')), '(' . implode(') AND (', $_joinCondition) . ')', array('price_type' => 'at_reservation_price.ptype', 'reservation_price' => 'at_reservation_price.price', 'reservation_number' => 'at_reservation_price.numberof'));
         /** TODO Check collection count calculation with group. I think need change join for use distinct */
         $_collection->getSelect()->group('e.entity_id');
     }
 }
 /**
  * Add filtering
  *
  * @param string $field
  * @param string $condition
  * @return Mage_Reports_Model_Resource_Product_Downloads_Collection
  */
 public function addFieldToFilter($field, $condition = null)
 {
     if ($field == 'link_title') {
         $conditionSql = $this->_getConditionSql('l.title', $condition);
         $this->getSelect()->where($conditionSql);
     } else {
         parent::addFieldToFilter($field, $condition);
     }
     return $this;
 }
Beispiel #3
0
 /**
  * 
  * @param   Mage_Catalog_Model_Resource_Product_Collection $collection
  * @return  Mage_Catalog_Model_Resource_Product_Collection
  */
 protected function _prepareCollection($collection)
 {
     foreach ($this->getConditions() as $condition) {
         $collection->addFieldToFilter($condition['attribute'], array($condition['operator'] => $condition['value']));
     }
     foreach ($this->_columns as $attr => $width) {
         $collection->addAttributeToSelect($attr);
     }
     return $collection;
 }