/** * Edit entry * * @param integer $entry_id * * @throws Model_Exception */ protected function _edit_entry($entry_id = null) { $this->history = false; if ($entry_id) { // Editing old $entry = new Model_Blog_Entry($entry_id); if (!$entry->loaded()) { throw new Model_Exception($entry, $entry_id); } Permission::required($entry, Model_Blog_Entry::PERMISSION_UPDATE); $cancel = Route::model($entry); $this->view->title = __('Edit blog entry'); $entry->modified = time(); $entry->modify_count++; } else { // Creating new $entry = new Model_Blog_Entry(); Permission::required($entry, Model_Blog_Entry::PERMISSION_CREATE); $cancel = Request::back(Route::get('blogs')->uri(), true); $newsfeed = true; $this->view->title = __('New blog entry'); $entry->author_id = Visitor::$user->id; $entry->created = time(); } // Handle post $errors = array(); if ($_POST && Security::csrf_valid()) { try { $entry->name = Arr::get($_POST, 'name'); $entry->content = Arr::get($_POST, 'content'); $entry->save(); // Newsfeed if (isset($newsfeed) && $newsfeed) { NewsfeedItem_Blog::entry(Visitor::$user, $entry); } $this->request->redirect(Route::model($entry)); } catch (Validation_Exception $e) { $errors = $e->array->errors('validation'); } } // Form $section = $this->section_entry_edit($entry); $section->cancel = $cancel; $section->errors = $errors; $this->view->add(View_Page::COLUMN_CENTER, $section); }