public function init() { parent::init(); $this->setTitle('Edit Talk')->setDescription('Edit your entry below, then click "Post Entry" to publish the entry on your talk.'); $this->submit->setLabel('Save Changes'); $captcha = Engine_Api::_()->getApi('settings', 'core')->getSetting('ynblog.captcha', 0); if ($captcha) { $this->removeElement('captcha'); } }
public function createAction() { // Check authoraiztion permisstion if (!$this->_helper->requireUser()->isValid()) { return; } if (!$this->_helper->requireAuth()->setAuthParams('blog', null, 'create')->isValid()) { return; } // Render $this->_helper->content->setEnabled(); $viewer = Engine_Api::_()->user()->getViewer(); // Checking maximum blog allowed $this->view->maximum_blogs = $maximum_blogs = Engine_Api::_()->getItemTable('blog')->checkMaxBlogs(); $blog_number = Engine_Api::_()->getItemTable('blog')->getCountBlog($viewer); if ($maximum_blogs == 0 || $blog_number < $maximum_blogs) { $this->view->maximum_reach = false; } else { $this->view->maximum_reach = true; } // Get navigation $this->view->navigation = $navigation = Engine_Api::_()->getApi('menus', 'core')->getNavigation('ynblog_main'); // Prepare form $this->view->form = $form = new Ynblog_Form_Create(); // Post request checking if (!$this->getRequest()->isPost()) { return; } if (!$form->isValid($this->getRequest()->getPost())) { return; } // Process $table = Engine_Api::_()->getDbTable('blogs', 'ynblog'); $db = $table->getAdapter(); $db->beginTransaction(); try { // Create blog $values = array_merge($form->getValues(), array('owner_type' => $viewer->getType(), 'owner_id' => $viewer->getIdentity())); // Moderation mode $blog_moderation = Engine_Api::_()->getApi('settings', 'core')->getSetting('ynblog.moderation', 0); if ($blog_moderation) { $values['is_approved'] = 0; } else { $values['is_approved'] = 1; } $blog = $table->createRow(); $blog->setFromArray($values); $blog->save(); // Set photo if (!empty($values['photo'])) { $blog->setPhoto($form->photo); } // Authorization set up $auth = Engine_Api::_()->authorization()->context; $roles = array('owner', 'owner_member', 'owner_member_member', 'owner_network', 'everyone'); if (empty($values['auth_view'])) { $values['auth_view'] = 'everyone'; } if (empty($values['auth_comment'])) { $values['auth_comment'] = 'everyone'; } $viewMax = array_search($values['auth_view'], $roles); $commentMax = array_search($values['auth_comment'], $roles); foreach ($roles as $i => $role) { $auth->setAllowed($blog, $role, 'view', $i <= $viewMax); $auth->setAllowed($blog, $role, 'comment', $i <= $commentMax); } // Add tags $tags = preg_split('/[,]+/', $values['tags']); $blog->tags()->addTagMaps($viewer, $tags); // Add activity only if blog is published if ($values['draft'] == 0 && $values['is_approved'] == 1) { $action = Engine_Api::_()->getDbtable('actions', 'activity')->addActivity($viewer, $blog, 'ynblog_new'); // Make sure action exists before attaching the blog to the // activity if ($action) { Engine_Api::_()->getDbtable('actions', 'activity')->attachActivity($action, $blog); } // Send notifications for subscribers Engine_Api::_()->getDbtable('subscriptions', 'ynblog')->sendNotifications($blog); $blog->add_activity = 1; $blog->save(); } // Commit $db->commit(); } catch (Exception $e) { $db->rollBack(); throw $e; } return $this->_helper->redirector->gotoRoute(array('action' => 'manage')); }