Exemplo n.º 1
0
 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;
             }
         }
     }
 }
Exemplo n.º 2
0
<?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>
Exemplo n.º 3
0
 /**
  * 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);
 }
Exemplo n.º 4
0
 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;
             }
         }
     }
 }