Toggle_Best_Answer()
Description #
The ap_toggle_best_answer ajax callback.
Source #
File: ajax/toggle-best-answer.php
class Toggle_Best_Answer extends \AnsPress\Classes\Ajax {
/**
* Instance of this class.
*
* @var null|Toggle_Best_Answer
*/
protected static $instance;
/**
* The class constructor.
*
* Set requests and nonce key.
*/
protected function __construct() {
$this->req( 'answer_id', ap_sanitize_unslash( 'answer_id', 'r' ) );
$this->nonce_key = 'select-answer-' . $this->req( 'answer_id' );
// Call parent.
parent::__construct();
}
/**
* Verify user permission.
*
* @return void
*/
protected function verify_permission() {
$answer_id = $this->req( 'answer_id' );
if ( empty( $answer_id ) || ! ap_user_can_select_answer( $answer_id ) ) {
parent::verify_permission();
}
}
/**
* Handle ajax for logged in users.
*
* @return void
*/
public function logged_in() {
$_post = ap_get_post( $this->req( 'answer_id' ) );
// Unselect best answer if already selected.
if ( ap_have_answer_selected( $_post->post_parent ) ) {
ap_unset_selected_answer( $_post->post_parent );
$this->set_success();
$this->add_res( 'selected', false );
$this->add_res( 'label', __( 'Select', 'anspress-question-answer' ) );
$this->snackbar( __( 'Best answer is unselected for your question.', 'anspress-question-answer' ) );
$this->send();
}
// Do not allow answer to be selected as best if status is moderate.
if ( in_array( $_post->post_status, array( 'moderate', 'trash', 'private' ), true ) ) {
$this->set_fail();
$this->snackbar( __( 'This answer cannot be selected as best, update status to select as best answer.', 'anspress-question-answer' ) );
$this->send();
}
// Update question qameta.
ap_set_selected_answer( $_post->post_parent, $_post->ID );
$this->set_success();
$this->add_res( 'selected', true );
$this->add_res( 'label', __( 'Unselect', 'anspress-question-answer' ) );
$this->snackbar( __( 'Best answer is selected for your question.', 'anspress-question-answer' ) );
}
}
Expand full source code Collapse full source code View on GitHub: ajax/toggle-best-answer.php:26
Add your comment