public function createAction() { if (!$this->_helper->requireUser()->isValid()) { return; } $viewer = Engine_Api::_()->user()->getViewer(); $this->view->form = $form = new Book_Form_Work(array('workTitle' => 'Post your work')); if (!$this->getRequest()->isPost()) { return; } if (!$form->isValid($this->getRequest()->getPost())) { return; } $values = $form->getValues(); $db = Engine_Db_Table::getDefaultAdapter(); $db->beginTransaction(); try { $workTable = new Book_Model_DbTable_Works(); $work = $workTable->createRow($values); $work->creation_date = date('Y-m-d H:i:s'); $work->modified_date = $work->creation_date; $work->user_id = $viewer->getIdentity(); $work->save(); if (!empty($values['photo'])) { $work = $work->setPhoto($form->photo); } // CREATE AUTH STUFF HERE $auth = Engine_Api::_()->authorization()->context; $roles = array('owner', 'parent_member', 'registered', 'everyone'); foreach ($roles as $i => $role) { $auth->setAllowed($work, $role, 'view', true); } if (!$work->is_long) { $chapterTbl = new Book_Model_DbTable_Chapters(); $chapter = $chapterTbl->createRow(array('title' => null, 'content' => trim($values['content']), 'work_id' => $work->getIdentity(), 'published' => $values['published'])); $chapter->save(); } $db->commit(); } catch (Exception $e) { $db->rollBack(); throw $e; } if ($work->published) { $actionTbl = Engine_Api::_()->getDbTable('actions', 'activity'); $action = $actionTbl->addActivity($viewer, $work, 'work_new'); } $this->_redirectCustom($work->getHref()); }