public function actionReorder($params) { $view = $this->ajaxView(); $view->state = 'failed'; if ($params['id'] && $params['targid']) { $otopic = new Model_Topic($this->getStorage(), $params['id']); $ttopic = new Model_Topic($this->getStorage(), $params['targid']); $view->id = $otopic->getId(); $view->target_id = $ttopic->getId(); $view->parent_id = $otopic->parent; if ($otopic->isLoaded() && $ttopic->isLoaded()) { $this->canPerform($otopic, 'edit'); $view->state = 'reordered'; $view->place = $params['place']; switch ($params['place']) { case 'before': $method = 'insertBefore'; break; case 'after': $method = 'insertAfter'; break; default: if ($otopic->isBefore($ttopic)) { $method = 'insertAfter'; $view->place = 'after'; } else { $method = 'insertBefore'; $view->place = 'before'; } } try { $otopic->{$method}($ttopic); } catch (Exception $e) { $view->state = 'failed'; $view->error = $e->getMessage(); } } else { $view->error = 'Topic(s) not found.'; } } else { $view->error = 'Topic IDs are not set.'; } return $view; }