public function sortAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $orderings = $this->getOrdering($data['purchaseorderid']); $currentOrdering = array_search($data['id'], $orderings); $position = new Purchases_Model_DbTable_Purchaseorderpos(); if ($data['ordering'] == 'down') { $position->sortPosition($data['id'], $currentOrdering + 1); $position->sortPosition($orderings[$currentOrdering + 1], $currentOrdering); } elseif ($data['ordering'] == 'up') { $position->sortPosition($data['id'], $currentOrdering - 1); $position->sortPosition($orderings[$currentOrdering - 1], $currentOrdering); } elseif ($data['ordering'] > 0) { if ($data['ordering'] < $currentOrdering) { $position->sortPosition($data['id'], $data['ordering']); foreach ($orderings as $ordering => $positionId) { if ($ordering < $currentOrdering && $ordering >= $data['ordering']) { $position->sortPosition($positionId, $ordering + 1); } } } elseif ($data['ordering'] > $currentOrdering) { $position->sortPosition($data['id'], $data['ordering']); foreach ($orderings as $ordering => $positionId) { if ($ordering > $currentOrdering && $ordering <= $data['ordering']) { $position->sortPosition($positionId, $ordering - 1); } } } } $this->setOrdering($data['purchaseorderid']); } }