/** * Use own export entity adapter * * @return Ambimax_ArrayExport_Model_Export_Entity_Product|Mage_ImportExport_Model_Export_Entity_Abstract */ protected function _getEntityAdapter() { if (!$this->_entityAdapter && $this->getEntity() == 'catalog_product') { $this->_entityAdapter = new Ambimax_ArrayExport_Model_Export_Entity_Product(); } return parent::_getEntityAdapter(); }
/** * 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; }
/** * Test method '_getEntityAdapter' in case when entity is invalid * * @expectedException Mage_Core_Exception * @covers Mage_ImportExport_Model_Export::_getEntityAdapter */ public function testGetEntityAdapterWithInvalidEntity() { $this->_model->setData(array('entity' => 'test')); $this->_model->getEntityAttributeCollection(); }
/** * 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; }