getPublicComments() public method

Return true if comments can be posted by unknown readers.
public getPublicComments ( ) : boolean
return boolean
 /**
  * Performs the action; returns true on success, false on error.
  *
  * @param $p_context - the current context object
  * @return bool
  */
 public function takeAction(CampContext &$p_context)
 {
     $p_context->default_url->reset_parameter('f_' . $this->m_name);
     $p_context->url->reset_parameter('f_' . $this->m_name);
     if (!is_null($this->m_error)) {
         return false;
     }
     // Check that the article exists.
     $articleMetaObj = $p_context->default_article;
     if (!$articleMetaObj->defined) {
         $this->m_error = new PEAR_Error('The article was not selected. You must view an article in order to post comments.', ACTION_PREVIEW_COMMENT_ERR_NO_ARTICLE);
         return false;
     }
     if (!$articleMetaObj->comments_enabled || $articleMetaObj->comments_locked) {
         $this->m_error = new PEAR_Error('Comments are not enabled for this publication/article.', ACTION_PREVIEW_COMMENT_ERR_NOT_ENABLED);
         return false;
     }
     // Get the publication.
     $publicationObj = new Publication($articleMetaObj->publication->identifier);
     $user = $p_context->user;
     if ($user->defined) {
         $this->m_properties['reader_email'] = $user->email;
     } else {
         if (!isset($this->m_properties['reader_email'])) {
             $this->m_error = new PEAR_Error('You must be a registered user in order to submit a comment. Please subscribe or log in if you already have a subscription.', ACTION_SUBMIT_COMMENT_ERR_NO_PUBLIC);
             return false;
         }
         if (!$publicationObj->getPublicComments()) {
             $this->m_error = new PEAR_Error('EMail field is empty. You must fill in your EMail address.', ACTION_SUBMIT_COMMENT_ERR_NO_EMAIL);
             return false;
         }
     }
     // Check if the reader was banned from posting comments.
     global $controller;
     $repositoryAcceptance = $controller->getHelper('entity')->getRepository('Newscoop\\Entity\\Comment\\Acceptance');
     $repository = $controller->getHelper('entity')->getRepository('Newscoop\\Entity\\Comment');
     if ($repositoryAcceptance->checkParamsBanned($userRealName, $userEmail, $userIp, $publication_id)) {
         $this->m_error = new PEAR_Error('You are banned from submitting comments.', ACTION_SUBMIT_COMMENT_ERR_BANNED);
         return false;
     }
     $this->m_error = ACTION_OK;
     return true;
 }
 /**
  * Performs the action; returns true on success, false on error.
  *
  * @param $p_context - the current context object
  * @return bool
  */
 public function takeAction(CampContext &$p_context)
 {
     $p_context->default_url->reset_parameter('f_' . $this->m_name);
     $p_context->url->reset_parameter('f_' . $this->m_name);
     \CampRequest::SetVar('f_' . $this->m_name);
     $translator = \Zend_Registry::get('container')->getService('translator');
     $userService = \Zend_Registry::get('container')->getService('user');
     if (!is_null($this->m_error)) {
         return false;
     }
     // Check that the article exists.
     $articleMetaObj = $p_context->default_article;
     if (!$articleMetaObj->defined) {
         $this->m_error = new PEAR_Error('The article was not selected. You must view an article in order to post comments.', ACTION_SUBMIT_COMMENT_ERR_NO_ARTICLE);
         return false;
     }
     if (!$articleMetaObj->comments_enabled || $articleMetaObj->comments_locked) {
         $this->m_error = new PEAR_Error('Comments are not enabled for this publication/article.', ACTION_SUBMIT_COMMENT_ERR_NOT_ENABLED);
         return false;
     }
     // Detect if it's a bot bot_detect
     if (!empty($this->m_properties['bot_detect'])) {
         $this->m_error = new PEAR_Error('The comment cannot be submitted.', ACTION_SUBMIT_COMMENT_BOT_DETECTED);
         return false;
     }
     $publication_id = $articleMetaObj->publication->identifier;
     // Get the publication.
     $publicationObj = new Publication($publication_id);
     $user = $p_context->user;
     $userIp = $userService->getUserIp();
     if ($user->defined) {
         $userId = $user->identifier;
         $userEmail = $user->email;
         if ($this->m_properties['nickname'] == '') {
             $userRealName = $user->name;
         } else {
             $userRealName = $this->m_properties['nickname'];
         }
         if ($this->m_properties['is_anonymous']) {
             $userRealName = $translator->trans('Anonymous', array(), 'comments');
         }
     } else {
         if (!$publicationObj->getPublicComments()) {
             $this->m_error = new PEAR_Error('You must be a registered user in order to submit a comment. Please subscribe or log in if you already have a subscription.', ACTION_SUBMIT_COMMENT_ERR_NO_PUBLIC);
             return false;
         } else {
             if (!isset($this->m_properties['reader_email'])) {
                 $this->m_error = new PEAR_Error('EMail field is empty. You must fill in your EMail address.', ACTION_SUBMIT_COMMENT_ERR_NO_EMAIL);
                 return false;
             }
         }
         $userId = null;
         $userEmail = $this->m_properties['reader_email'];
         $userRealName = $this->m_properties['nickname'];
     }
     // Validate the CAPTCHA code if it was enabled for the current publication.
     if ($publicationObj->isCaptchaEnabled()) {
         if ($this->_processCaptcha() === FALSE) {
             return FALSE;
         }
     }
     // Check if the reader was banned from posting comments.
     global $controller;
     $repositoryAcceptance = $controller->getHelper('entity')->getRepository('Newscoop\\Entity\\Comment\\Acceptance');
     $repository = $controller->getHelper('entity')->getRepository('Newscoop\\Entity\\Comment');
     if ($repositoryAcceptance->checkParamsBanned($userRealName, $userEmail, $userIp, $publication_id)) {
         $this->m_error = new PEAR_Error('You are banned from submitting comments.', ACTION_SUBMIT_COMMENT_ERR_BANNED);
         return false;
     }
     // get the article object
     $articleObj = new Article($articleMetaObj->language->number, $articleMetaObj->number);
     // Set the parent to the currently viewed comment if a certain existing
     // comment was selected. Otherwise, set the parent identifier to the root message.
     // Create the comment. If there was an error creating the comment set the
     // error code to 'internal error' and exit.
     $values = array('thread' => $articleMetaObj->number, 'language' => $articleMetaObj->language->code, 'name' => $userRealName, 'email' => $userEmail, 'message' => $this->m_properties['content'], 'subject' => $this->m_properties['subject'], 'parent' => $this->m_properties['parent'], 'ip' => $userIp, 'time_created' => new DateTime());
     // If the user was unknown (public comment) and public comments were moderated
     // or the user was known (subscriber comment) and subscriber comments were moderated
     // set the comment status to 'hold'. Otherwise, set the status to 'approved'.
     if (!is_null($userId) && $publicationObj->commentsSubscribersModerated() || is_null($userId) && $publicationObj->commentsPublicModerated()) {
         $values['status'] = "pending";
     } else {
         $values['status'] = "approved";
     }
     // If the user was known set it
     if (!is_null($userId)) {
         $values['user'] = $userId;
     }
     //If there is a comment idetifier set it the parent of the comment
     if ($p_context->comment->identifier) {
         $values['parent'] = $p_context->comment->identifier;
     }
     $commentObj = $repository->getPrototype();
     $comment = $repository->save($commentObj, $values);
     $repository->flush();
     $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
     $cacheService->clearNamespace('comment');
     if (!$comment) {
         $this->m_error = new PEAR_Error('There was an internal error when submitting the comment (code 3).', ACTION_SUBMIT_COMMENT_ERR_INTERNAL);
         return false;
     }
     $p_context->default_url->reset_parameter('f_comment_reader_email');
     $p_context->default_url->reset_parameter('f_comment_subject');
     $p_context->default_url->reset_parameter('f_comment_content');
     $p_context->default_url->reset_parameter('f_comment_parent');
     $p_context->default_url->reset_parameter('f_submit_comment');
     $p_context->default_url->reset_parameter('f_captcha_code');
     $p_context->url->reset_parameter('f_comment_reader_email');
     $p_context->url->reset_parameter('f_comment_subject');
     $p_context->url->reset_parameter('f_comment_content');
     $p_context->url->reset_parameter('f_comment_parent');
     $p_context->url->reset_parameter('f_submit_comment');
     $p_context->url->reset_parameter('f_captcha_code');
     $this->m_properties['rejected'] = false;
     $this->m_error = ACTION_OK;
     header('Location: ' . $_SERVER['REQUEST_URI'], true, 303);
     exit(0);
 }