ap_user_can_answer( mixed $question_id, boolean|integer $user_id = false )
Description #
Check if a user can answer on a question.
Parameters #
- $question_idmixed (Required) Question id or object.
- $user_idboolean | integer (Optional) User ID. Default value: false
Changelog #
Source #
File: includes/class/roles-cap.php
function ap_user_can_answer( $question_id, $user_id = false ) { if ( false === $user_id ) { $user_id = get_current_user_id(); } $question = ap_get_post( $question_id ); // Return false if not a question. if ( ! $question || 'question' !== $question->post_type ) { return false; } if ( is_super_admin( $user_id ) ) { return true; } /** * Allow overriding of ap_user_can_answer. * * @param boolean|string $filter Apply this filter, default is empty string. * @param integer $question_id Question ID. * @param integer $user_id User ID. * @since 2.4.6 Added 2 new arguments `$question_id` and `$user_id`. */ $filter = apply_filters( 'ap_user_can_answer', '', $question->ID, $user_id ); if ( true === $filter ) { return true; } elseif ( false === $filter ) { return false; } // Return if user cannot read question. if ( ! ap_user_can_read_question( $question_id, $user_id ) ) { return false; } // Do not allow to answer if best answer is selected. if ( ap_opt( 'close_selected' ) && ap_have_answer_selected( $question->ID ) ) { return false; } // Bail out if question is closed. if ( is_post_closed( $question ) ) { return false; } // Check if user is original poster and dont allow them to answer their own question. if ( is_user_logged_in() && ap_opt( 'disallow_op_to_answer' ) && ! empty( $question->post_author ) && $question->post_author == $user_id ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual return false; } // Check if user already answered and if multiple answer disabled then don't allow them to answer. if ( is_user_logged_in() && ! ap_opt( 'multiple_answers' ) && ap_is_user_answered( $question->ID, $user_id ) ) { return false; } $option = ap_opt( 'post_answer_per' ); if ( 'have_cap' === $option && is_user_logged_in() && user_can( $user_id, 'ap_new_answer' ) ) { return true; } elseif ( 'logged_in' === $option && is_user_logged_in() ) { return true; } elseif ( 'anyone' === $option ) { return true; } return false; }
Expand full source code Collapse full source code View on GitHub: includes/class/roles-cap.php:171
Add your comment