public function subscribe() { $action_id = (int) $_POST['action_id']; $type = sanitize_text_field($_POST['type']); if (!wp_verify_nonce($_POST['__nonce'], 'subscribe_' . $action_id . '_' . $type)) { ap_send_json(ap_ajax_responce('something_wrong')); return; } if (!is_user_logged_in()) { ap_send_json(ap_ajax_responce('please_login')); return; } if ($type === 'category') { $subscribe_type = 'category'; } elseif ($type === 'tag') { $subscribe_type = 'tag'; } else { $subscribe_type = false; } $user_id = get_current_user_id(); $is_subscribed = ap_is_user_subscribed($action_id, $user_id, $subscribe_type); if ($is_subscribed) { if ($subscribe_type === false) { $row = ap_remove_question_subscriber($action_id); } else { $row = ap_remove_subscriber($user_id, $action_id, $subscribe_type); } if (FALSE !== $row) { ap_send_json(ap_ajax_responce(array('message' => 'unsubscribed', 'action' => 'unsubscribed', 'container' => '#subscribe_' . $action_id . ' b', 'do' => 'updateHtml', 'html' => __('Follow question', 'ap')))); } } else { if ($subscribe_type === false) { ap_add_question_subscriber($action_id); } else { ap_add_subscriber($user_id, $action_id, $subscribe_type); } ap_send_json(ap_ajax_responce(array('message' => 'subscribed', 'action' => 'subscribed', 'container' => '#subscribe_' . $action_id . ' b', 'do' => 'updateHtml', 'html' => __('Unfollow question', 'ap')))); } }
/** * Subscribe a question * @param integer $question_id * @param boolean|integer $user_id * @return boolean|array */ function ap_add_question_subscriber($question_id, $user_id = false, $type = '', $secondary_id = '') { $is_subscribed = ap_is_user_subscribed($question_id); if ($user_id === false) { $user_id = get_current_user_id(); } if ($user_id < 1) { return false; } if (!$is_subscribed) { ap_add_subscriber($user_id, $question_id, $type, $secondary_id); $counts = ap_subscribers_count($question_id); //update post meta update_post_meta($question_id, ANSPRESS_SUBSCRIBER_META, $counts); return array('count' => $counts, 'action' => 'subscribed'); } return false; }