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());
 }