register_error(elgg_echo('questions:action:answer:save:error:body', [$container_guid, $description])); forward(REFERER); } if ($adding && !can_write_to_container(0, $container_guid, 'object', 'answer')) { register_error(elgg_echo('questions:action:answer:save:error:container')); forward(REFERER); } $question = get_entity($container_guid); if (empty($question) || !$question instanceof ElggQuestion) { register_error(elgg_echo('ClassException:ClassnameNotClass', [$container_guid, elgg_echo('item:object:question')])); forward(REFERER); } if ($question->getStatus() != 'open') { elgg_clear_sticky_form('answer'); register_error(elgg_echo('questions:action:answer:save:error:question_closed')); forward(REFERER); } $answer->description = $description; $answer->access_id = $question->access_id; $answer->container_guid = $container_guid; try { $answer->save(); if ($adding) { elgg_create_river_item(['view' => 'river/object/answer/create', 'action_type' => 'create', 'subject_guid' => elgg_get_logged_in_user_guid(), 'object_guid' => $answer->getGUID(), 'access_id' => $answer->access_id]); } } catch (Exception $e) { register_error(elgg_echo('questions:action:answer:save:error:save')); register_error($e->getMessage()); } elgg_clear_sticky_form('answer'); forward(get_input('forward', $answer->getURL()));
/** * Publish post also on frontend * * @return bool */ public function publishOnFrontend() { if ($this->answerGuid == 1) { $answer = new ElggAnswer(); $answer->description = $this->description; $answer->intanswerGuid = $this->guid; $answer->container_guid = $this->container_guid; $answer->access_id = $this->getQuestion()->access_id; $publish_user = elgg_get_plugin_setting('workflow_publishuser', 'questions'); if ($publish_user && ($user = get_user_by_username($publish_user))) { $answer->owner_guid = $user->guid; // ignore access because we would maybe want to write in the name of publishuser. elgg_set_ignore_access(true); $answer->save(); elgg_set_ignore_access(false); } else { $answer->save(); } $this->answerGuid = $answer->guid; update_entity_last_action($answer->container_guid, $answer->time_created); } elseif (is_int($this->answerGuid)) { $answer = get_entity($this->answerGuid); if ($answer instanceof ElggAnswer) { // ignore access because we would maybe want to overwrite entity of publishuser. elgg_set_ignore_access(true); $answer->description = $this->description; $answer->save(); elgg_set_ignore_access(false); } } }