public function processReorderFilterAction() { $baseId = (int) $this->_getParam('baseId'); $from = $this->_getParam('from'); $to = $this->_getParam('to'); // utilizing the ORM in the meantime, but can be optimized $reportBase = new ReportBase(); $reportBase->reportBaseId = $baseId; $reportBase->populate(); $rows = array(); if (strlen($reportBase->filters) > 0) { $filters = unserialize($reportBase->filters); foreach ($filters as $id => $filter) { if ($from == $id) { $fromFilter = $filters[$id]; unset($filters[$id]); break; } } if (isset($fromFilter)) { $tmpFilters = array(); foreach ($filters as $id => $filter) { $tmpFilters[$id] = $filter; if ($to == $id) { $tmpFilters[$from] = $fromFilter; } } $filters = $tmpFilters; } foreach ($filters as $id => $filter) { $row = array(); $row['id'] = $filter->id; $row['data'] = array(); $row['data'][] = $filter->name; $row['data'][] = $filter->defaultValue; $row['data'][] = $filter->type; $row['data'][] = $this->_formatOptions($filter->options); $rows[] = $row; } $reportBase->filters = serialize($filters); $reportBase->persist(); } $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct(array('rows' => $rows)); }