/** * Apply filter to collection and add not skipped attributes to select. * * @param Mage_Eav_Model_Entity_Collection_Abstract $collection * @return Mage_Eav_Model_Entity_Collection_Abstract */ protected function _prepareEntityCollection(Mage_Eav_Model_Entity_Collection_Abstract $collection) { if (!isset($this->_parameters[Mage_ImportExport_Model_Export::FILTER_ELEMENT_GROUP]) || !is_array($this->_parameters[Mage_ImportExport_Model_Export::FILTER_ELEMENT_GROUP])) { $exportFilter = array(); } else { $exportFilter = $this->_parameters[Mage_ImportExport_Model_Export::FILTER_ELEMENT_GROUP]; } $exportAttrCodes = $this->_getExportAttrCodes(); foreach ($this->filterAttributeCollection($this->getAttributeCollection()) as $attribute) { $attrCode = $attribute->getAttributeCode(); // filter applying if (isset($exportFilter[$attrCode])) { $attrFilterType = Mage_ImportExport_Model_Export::getAttributeFilterType($attribute); if ($attrCode == 'sku') { $collection->addAttributeToFilter($attrCode, array('in' => $exportFilter[$attrCode])); } elseif (Mage_ImportExport_Model_Export::FILTER_TYPE_SELECT == $attrFilterType) { if (is_scalar($exportFilter[$attrCode]) && trim($exportFilter[$attrCode])) { $collection->addAttributeToFilter($attrCode, array('eq' => $exportFilter[$attrCode])); } } elseif (Mage_ImportExport_Model_Export::FILTER_TYPE_INPUT == $attrFilterType) { if (is_scalar($exportFilter[$attrCode]) && trim($exportFilter[$attrCode])) { $collection->addAttributeToFilter($attrCode, array('like' => "%{$exportFilter[$attrCode]}%")); } } elseif (Mage_ImportExport_Model_Export::FILTER_TYPE_DATE == $attrFilterType) { if (is_array($exportFilter[$attrCode]) && count($exportFilter[$attrCode]) == 2) { $from = array_shift($exportFilter[$attrCode]); $to = array_shift($exportFilter[$attrCode]); if (is_scalar($from) && !empty($from)) { $date = Mage::app()->getLocale()->date($from, null, null, false)->toString('MM/dd/YYYY'); $collection->addAttributeToFilter($attrCode, array('from' => $date, 'date' => true)); } if (is_scalar($to) && !empty($to)) { $date = Mage::app()->getLocale()->date($to, null, null, false)->toString('MM/dd/YYYY'); $collection->addAttributeToFilter($attrCode, array('to' => $date, 'date' => true)); } } } elseif (Mage_ImportExport_Model_Export::FILTER_TYPE_NUMBER == $attrFilterType) { if (is_array($exportFilter[$attrCode]) && count($exportFilter[$attrCode]) == 2) { $from = array_shift($exportFilter[$attrCode]); $to = array_shift($exportFilter[$attrCode]); if (is_numeric($from)) { $collection->addAttributeToFilter($attrCode, array('from' => $from)); } if (is_numeric($to)) { $collection->addAttributeToFilter($attrCode, array('to' => $to)); } } } } if (in_array($attrCode, $exportAttrCodes)) { $collection->addAttributeToSelect($attrCode); } } return $collection; }
/** * Create filter fields for 'Filter' column. * * @param mixed $value * @param Mage_Eav_Model_Entity_Attribute $row * @param Varien_Object $column * @param boolean $isExport * @return string */ public function decorateFilter($value, Mage_Eav_Model_Entity_Attribute $row, Varien_Object $column, $isExport) { $value = null; $values = $column->getValues(); if (is_array($values) && isset($values[$row->getAttributeCode()])) { $value = $values[$row->getAttributeCode()]; } switch (Mage_ImportExport_Model_Export::getAttributeFilterType($row)) { case Mage_ImportExport_Model_Export::FILTER_TYPE_SELECT: $cell = $this->_getSelectHtmlWithValue($row, $value); break; case Mage_ImportExport_Model_Export::FILTER_TYPE_INPUT: $cell = $this->_getInputHtmlWithValue($row, $value); break; case Mage_ImportExport_Model_Export::FILTER_TYPE_DATE: $cell = $this->_getDateFromToHtmlWithValue($row, $value); break; case Mage_ImportExport_Model_Export::FILTER_TYPE_NUMBER: $cell = $this->_getNumberFromToHtmlWithValue($row, $value); break; default: $cell = $this->_helper->__('Unknown attribute filter type'); } return $cell; }
/** * Create filter fields for 'Filter' column. * * @param mixed $value * @param Mage_Eav_Model_Entity_Attribute $row * @param Varien_Object $column * @param boolean $isExport * @return string */ public function decorateFilter($value, Mage_Eav_Model_Entity_Attribute $row, Varien_Object $column, $isExport) { switch (Mage_ImportExport_Model_Export::getAttributeFilterType($row)) { case Mage_ImportExport_Model_Export::FILTER_TYPE_SELECT: $cell = $this->_getSelectHtml($row); break; case Mage_ImportExport_Model_Export::FILTER_TYPE_INPUT: $cell = $this->_getInputHtml($row); break; case Mage_ImportExport_Model_Export::FILTER_TYPE_DATE: $cell = $this->_getDateFromToHtml($row); break; case Mage_ImportExport_Model_Export::FILTER_TYPE_NUMBER: $cell = $this->_getNumberFromToHtml($row); break; default: $cell = $this->_helper->__('Unknown attribute filter type'); } return $cell; }