/** * 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 column filter to collection * * @param Mage_Adminhtml_Block_Widget_Grid_Column $column * @return Enterprise_Reward_Block_Adminhtml_Customer_Edit_Tab_Reward_History_Grid */ protected function _addColumnFilterToCollection($column) { if ($this->getCollection()) { $field = $column->getFilterIndex() ? $column->getFilterIndex() : $column->getIndex(); if ($field == 'website_id' || $field == 'points_balance') { $cond = $column->getFilter()->getCondition(); if ($field && isset($cond)) { $this->getCollection()->addFieldToFilter('main_table.' . $field, $cond); } } else { parent::_addColumnFilterToCollection($column); } } return $this; }
/** * Apply the condition to the given collection by way of the resource specified on instantiation * * @param \Cm_Mongo_Model_Resource_Collection_Abstract $collection * @param \Mage_Adminhtml_Block_Widget_Grid_Column $column */ public function apply(Cm_Mongo_Model_Resource_Collection_Abstract $collection, Mage_Adminhtml_Block_Widget_Grid_Column $column) { if (is_string($this->_resource)) { $filterCollection = Mage::getResourceModel($this->_resource); } else { $filterCollection = $this->_resource; } var_dump($filterCollection); if ($this->_filters) { $filterCollection->addFieldToFilter($this->_filters); } $field = $column->getFilterIndex() ? $column->getFilterIndex() : $column->getIndex(); $cond = $column->getFilter()->getCondition(); if ($field && isset($cond)) { $filterCollection->addFieldToFilter($field, $cond); } $collection->addFieldToFilter($this->_field, '$in', $filterCollection->getAllIds(TRUE)); }
/** * Add store filter * * @param Mage_Adminhtml_Block_Widget_Grid_Column $column * @return Enterprise_Banner_Block_Adminhtml_Banner_Grid */ protected function _addColumnFilterToCollection($column) { if ($column->getIndex() == 'stores') { $this->getCollection()->addStoreFilter($column->getFilter()->getCondition(), false); } else { parent::_addColumnFilterToCollection($column); } return $this; }
/** * Add column filter to collection * * @param Mage_Adminhtml_Block_Widget_Grid_Column $column * @return Mage_Adminhtml_Block_Customer_Edit_Tab_Wishlist */ protected function _addColumnFilterToCollection($column) { /* @var $collection Mage_Wishlist_Model_Mysql4_Item_Collection */ $collection = $this->getCollection(); $value = $column->getFilter()->getValue(); if ($collection && $value) { switch ($column->getId()) { case 'product_name': $collection->addProductNameFilter($value); break; case 'store': $collection->addStoreFilter($value); break; case 'days': $collection->addDaysFilter($value); break; default: $collection->addFieldToFilter($column->getIndex(), $column->getFilter()->getCondition()); break; } } return $this; }
/** * Add column filter to collection * * @param Mage_Adminhtml_Block_Widget_Grid_Column $column * @return Mage_Adminhtml_Block_Customer_Edit_Tab_Wishlist */ protected function _addColumnFilterToCollection($column) { if ($column->getId() == 'store') { $this->getCollection()->addFieldToFilter('item_store_id', $column->getFilter()->getCondition()); return $this; } if ($this->getCollection() && $column->getFilter()->getValue()) { $this->getCollection()->addFieldToFilter($column->getIndex(), $column->getFilter()->getCondition()); } return $this; }
/** * Sets sorting order by some column * * @param Mage_Adminhtml_Block_Widget_Grid_Column $column * @return Mage_Adminhtml_Block_Widget_Grid */ protected function _setCollectionOrder($column) { $collection = $this->getCollection(); if ($collection) { $columnIndex = $column->getFilterIndex() ? $column->getFilterIndex() : $column->getIndex(); $columnIndex = $columnIndex == 'category_ids' ? 'cat_ids' : $columnIndex; $collection->setOrder($columnIndex, strtoupper($column->getDir())); } return $this; }
/** * Sets sorting order by some column * * @param Mage_Adminhtml_Block_Widget_Grid_Column $column * * @return $this */ protected function _setCollectionOrder($column) { $collection = $this->getCollection(); if (!$collection) { return $this; } $columnIndex = $column->getFilterIndex() ? $column->getFilterIndex() : $column->getIndex(); $collection->setOrder($columnIndex, strtoupper($column->getDir())); return $this; }
/** * Add a grid column from block origin * * @param Mage_Adminhtml_Block_Widget_Grid_Column $column Column object * @param int $order Column order * @return this */ protected function _addColumnFromBlock(Mage_Adminhtml_Block_Widget_Grid_Column $column, $order) { $this->addColumn($column->getId(), array('id' => $column->getId(), 'index' => $column->getIndex(), 'width' => $column->getWidth(), 'align' => array_key_exists($column->getAlign(), $this->getColumnAlignments()) ? $column->getAlign() : self::GRID_COLUMN_ALIGNMENT_LEFT, 'header' => $column->getHeader(), 'order' => $order, 'origin' => self::GRID_COLUMN_ORIGIN_GRID, 'is_visible' => 1, 'filter_only' => 0, 'is_system' => $column->getIsSystem() ? 1 : 0, 'missing' => 0, 'store_id' => null, 'renderer_type' => null, 'renderer_params' => null, 'allow_edit' => 1, 'custom_params' => null)); return $this; }