public function add() { $this->authorize(); $input = $this->app['request']->input; $page = new Page(); $page->name = $input['name']; $page->slug = $input['slug']; $page->content = $input['content']; $page->draft = isset($input['draft']); $validator = $page->validator(); if ($validator->fails()) { $this->setFlash('errors', $validator->getErrors()); $this->setFlash('input', serialize($this->app['request']->input)); return $this->redirect('newPage'); } else { $this->dataMapper->save($page); $this->setFlash('message', 'Page has been added successful.'); return $this->redirect('pages'); } }
/** * Save the page. * * @param \Basalt\Database\Page $page Page. * @return void */ public function save(Page &$page) { $page->validate(); if ($page->id) { $statement = $this->pdo->prepare('UPDATE `pages` SET `name` = :name, `slug` = :slug, `content` = :content, `draft` = :draft WHERE `id` = :id'); $statement->bindValue(':id', $page->id, PDO::PARAM_INT); $statement->bindValue(':name', $page->name); $statement->bindValue(':slug', $page->slug); $statement->bindValue(':content', $page->content); $statement->bindValue(':draft', $page->draft, PDO::PARAM_BOOL); $statement->execute(); } else { $statement = $this->pdo->prepare('INSERT INTO `pages` (`name`, `slug`, `content`, `draft`, `order`) SELECT :name, :slug, :content, :draft, MAX(`id`) + 1 FROM `pages`'); $statement->bindValue(':name', $page->name); $statement->bindValue(':slug', $page->slug); $statement->bindValue(':content', $page->content); $statement->bindValue(':draft', $page->draft, PDO::PARAM_BOOL); $statement->execute(); $page->id = $this->pdo->lastInsertId(); } }