/** * Apply default parameters to grid block * * @param Mage_Adminhtml_Block_Widget_Grid $grid Grid block instance * @return this */ public function applyDefaultToGridBlock(Mage_Adminhtml_Block_Widget_Grid $grid) { if ($default = $this->_getData('default_page')) { $grid->blcg_setDefaultPage($default); } if (($default = $this->_getData('default_limit')) && in_array($default, $this->getPaginationValues())) { $grid->blcg_setDefaultLimit($default); } if ($default = $this->_getData('default_sort')) { $grid->blcg_setDefaultSort($default); } if ($default = $this->_getData('default_dir')) { $grid->blcg_setDefaultDir($default); } if ($filters = $this->_getData('default_filter')) { if (is_array($filters = @unserialize($filters))) { // Only apply still valid filters $columns = $this->getColumns(false, true); $appliable = array(); $attributesRenderers = $this->getAvailableAttributesRendererTypes(); foreach ($filters as $columnId => $filter) { if (isset($columns[$columnId])) { $column = $columns[$columnId]; // Basically, those are the same verifications than the ones in verifyGridBlockFilters() if ($filter['column']['origin'] == $column['origin']) { if ($this->isCollectionColumnOrigin($column['origin'])) { $valid = $filter['column']['renderer_type'] == $column['renderer_type']; } elseif ($this->isAttributeColumnOrigin($column['origin'])) { $valid = $filter['column']['renderer_type'] == $attributesRenderers[$column['index']]; } elseif ($this->isCustomColumnOrigin($column['origin'])) { $oldIndex = $filter['column']['index']; $typeModel = Mage::getSingleton('customgrid/grid_type'); $rendererTypes = array('old' => $filter['column']['renderer_type'], 'new' => $column['renderer_type']); $customParams = array('old' => $typeModel->decodeParameters($filter['column']['custom_params'], true), 'new' => $typeModel->decodeParameters($column['custom_params'], true)); if ($oldIndex != $column['index'] || !is_object($column['custom_column']) || $column['custom_column']->shouldInvalidateFilters($this, $column, $customParams, $rendererTypes)) { $valid = false; } else { $valid = true; } } else { $valid = true; } if ($valid) { $appliable[$columnId] = $filter['value']; } } } } $grid->blcg_setDefaultFilter($appliable); } } return $this; }