public function process_ask_form() { if (!is_user_logged_in()) { return false; } if (isset($_POST['is_question']) && isset($_POST['submitted']) && isset($_POST['ask_form']) && wp_verify_nonce($_POST['ask_form'], 'post_nonce')) { $fields = $this->get_question_fields_to_process(); if (!ap_user_can_ask()) { return; } $validate = $this->validate_question_form(); if ($validate['has_error']) { if ($_POST['action'] == 'ap_submit_question') { $result = array('action' => 'validation_falied', 'message' => __('Question not submitted, please check the form fields.', 'ap'), 'error' => $validate); return json_encode($result); } return; } do_action('process_ask_form'); $user_id = get_current_user_id(); $status = 'publish'; if (ap_opt('moderate_new_question') == 'pending' || ap_opt('moderate_new_question') == 'point' && ap_get_points($user_id) < ap_opt('mod_question_point')) { $status = 'moderate'; } $question_array = array('post_title' => $fields['post_title'], 'post_author' => $user_id, 'post_content' => wp_kses($fields['post_content'], ap_form_allowed_tags()), 'post_type' => 'question', 'post_status' => $status); $post_id = wp_insert_post($question_array); if ($post_id) { // Update Custom Meta if (isset($fields['category'])) { wp_set_post_terms($post_id, $fields['category'], 'question_category'); } if (isset($fields['tags'])) { wp_set_post_terms($post_id, $fields['tags'], 'question_tags'); } update_post_meta($post_id, ANSPRESS_VOTE_META, '0'); update_post_meta($post_id, ANSPRESS_FAV_META, '0'); update_post_meta($post_id, ANSPRESS_CLOSE_META, '0'); update_post_meta($post_id, ANSPRESS_FLAG_META, '0'); update_post_meta($post_id, ANSPRESS_VIEW_META, '0'); update_post_meta($post_id, ANSPRESS_UPDATED_META, current_time('mysql')); update_post_meta($post_id, ANSPRESS_SELECTED_META, false); //ap_add_history($user_id, $post_id, 'asked'); ap_add_parti($post_id, $user_id, 'question'); //update answer count update_post_meta($post_id, ANSPRESS_ANS_META, '0'); do_action('ap_after_inserting_question', $post_id); ap_do_event('new_question', $post_id, $user_id); if ($_POST['action'] == 'ap_submit_question') { $result = apply_filters('ap_ajax_question_submit_result', array('action' => 'new_question', 'message' => __('Question submitted successfully', 'ap'), 'redirect_to' => get_permalink($post_id))); return json_encode($result); } else { // Redirect wp_redirect(get_permalink($post_id)); exit; } } } }
<?php /** * Ask question page * * @link http://anspress.io * @since 0.1 * * @package AnsPress */ ?> <div id="ap-ask-page" class="clearfix"> <?php if (ap_user_can_ask()) { ?> <div id="answer-form-c"> <div class="ap-avatar ap-pull-left"> <a href="<?php echo ap_user_link(get_current_user_id()); ?> "<?php ap_hover_card_attributes(get_current_user_id()); ?> > <?php echo get_avatar(get_current_user_id(), ap_opt('avatar_size_qquestion')); ?> </a>
/** * Process ask form * @return void * @since 2.0.1 */ public function process_ask_form() { global $ap_errors, $validate; if (ap_show_captcha_to_user() && !$this->check_recaptcha()) { $this->result = array('form' => $_POST['ap_form_action'], 'message' => 'captcha_error', 'errors' => array('captcha' => __('Bot verification failed.', 'ap'))); return; } // Do security check, if fails then return if (!ap_user_can_ask() || !isset($_POST['__nonce']) || !wp_verify_nonce($_POST['__nonce'], 'ask_form')) { return; } $args = array('title' => array('sanitize' => array('sanitize_text_field'), 'validate' => array('required' => true, 'length_check' => ap_opt('minimum_qtitle_length'))), 'description' => array('sanitize' => array('remove_more', 'encode_pre_code', 'wp_kses'), 'validate' => array('length_check' => ap_opt('minimum_question_length'))), 'is_private' => array('sanitize' => array('only_boolean')), 'name' => array('sanitize' => array('strip_tags', 'sanitize_text_field')), 'parent_id' => array('sanitize' => array('only_int')), 'edit_post_id' => array('sanitize' => array('only_int'))); /** * FILTER: ap_ask_fields_validation * Filter can be used to modify ask question fields. * @var void * @since 2.0.1 */ $args = apply_filters('ap_ask_fields_validation', $args); $validate = new AnsPress_Validation($args); $ap_errors = $validate->get_errors(); // if error in form then return if ($validate->have_error()) { $this->result = array('form' => $_POST['ap_form_action'], 'message_type' => 'error', 'message' => __('Check missing fields and then re-submit.', 'ap'), 'errors' => $ap_errors); return; } $fields = $validate->get_sanitized_fields(); $this->fields = $fields; if (!empty($fields['edit_post_id'])) { $this->edit_question(); return; } $user_id = get_current_user_id(); $status = 'publish'; if (ap_opt('new_question_status') == 'moderate' || ap_opt('new_question_status') == 'reputation' && ap_get_points($user_id) < ap_opt('mod_question_point')) { $status = 'moderate'; } if (isset($fields['is_private']) && $fields['is_private']) { $status = 'private_post'; } $question_array = array('post_title' => $fields['title'], 'post_author' => $user_id, 'post_content' => apply_filters('ap_form_contents_filter', $fields['description']), 'post_type' => 'question', 'post_status' => $status, 'comment_status' => 'open'); if (isset($fields['parent_id'])) { $question_array['post_parent'] = (int) $fields['parent_id']; } /** * FILTER: ap_pre_insert_question * Can be used to modify args before inserting question * @var array * @since 2.0.1 */ $question_array = apply_filters('ap_pre_insert_question', $question_array); $post_id = wp_insert_post($question_array); if ($post_id) { // Update Custom Meta if (!is_user_logged_in() && ap_opt('allow_anonymous') && !empty($fields['name'])) { update_post_meta($post_id, 'anonymous_name', $fields['name']); } $this->redirect = get_permalink($post_id); $this->result = array('action' => 'new_question', 'message' => 'question_submitted', 'do' => array('redirect' => get_permalink($post_id))); } $this->process_image_uploads($post_id, $user_id); }
public function process_ask_form() { if (!is_user_logged_in() && !ap_allow_anonymous()) { return false; } if (isset($_POST['is_question']) && isset($_POST['submitted']) && isset($_POST['ask_form']) && wp_verify_nonce($_POST['ask_form'], 'post_nonce')) { $fields = $this->get_question_fields_to_process(); if (!ap_user_can_ask() && ap_opt('allow_anonymous')) { return; } $validate = $this->validate_question_form(); if ($validate['has_error']) { if ($_POST['action'] == 'ap_submit_question') { $result = array('action' => 'validation_falied', 'message' => __('Question not submitted, please check the form fields.', 'ap'), 'error' => $validate); return json_encode($result); } return; } do_action('process_ask_form'); $user_id = get_current_user_id(); $status = 'publish'; if (ap_opt('moderate_new_question') == 'pending' || ap_opt('moderate_new_question') == 'point' && ap_get_points($user_id) < ap_opt('mod_question_point')) { $status = 'moderate'; } if (isset($fields['private_question']) && $fields['private_question']) { $status = 'private_question'; } $question_array = array('post_title' => $fields['post_title'], 'post_author' => $user_id, 'post_content' => wp_kses($fields['post_content'], ap_form_allowed_tags()), 'post_type' => 'question', 'post_status' => $status); if (isset($fields['parent_id'])) { $question_array['post_parent'] = (int) $fields['parent_id']; } $post_id = wp_insert_post($question_array); if ($post_id) { // Update Custom Meta if (isset($fields['category'])) { wp_set_post_terms($post_id, $fields['category'], 'question_category'); } if (isset($fields['tags'])) { wp_set_post_terms($post_id, $fields['tags'], 'question_tags'); } if (ap_opt('allow_anonymous') && isset($fields['name'])) { update_post_meta($post_id, 'anonymous_name', $fields['name']); } if ($_POST['action'] == 'ap_submit_question') { $result = apply_filters('ap_ajax_question_submit_result', array('action' => 'new_question', 'message' => __('Question submitted successfully', 'ap'), 'redirect_to' => get_permalink($post_id))); return json_encode($result); } else { // Redirect wp_redirect(get_permalink($post_id)); exit; } } } }