static function addHeader() { if (!CMA_Thread::canPostQuestions()) { self::addMessage(self::MESSAGE_ERROR, 'You cannot post questions.'); wp_redirect(CMA::getReferer()); } self::loadScripts(); }
static function shortcode($atts = array()) { $atts = shortcode_atts(array('title' => 0, 'backlink' => 1, 'cat' => null), $atts); CMA_BaseController::loadScripts(); if (CMA_Thread::canPostQuestions()) { $post = $thread = null; $catId = $atts['cat']; $redirectAfterPost = '_thread'; $displayOptions = array('hideTitle' => empty($atts['title']), 'showBacklink' => !empty($atts['backlink'])); return CMA_BaseController::_loadView('answer/widget/question-form', compact('post', 'thread', 'catId', 'displayOptions', 'redirectAfterPost')); } }
protected static function _processAddThread() { $title = $_POST['thread_title']; $content = $_POST['thread_content']; $tags = isset($_POST['thread_tags']) ? $_POST['thread_tags'] : null; $notify = isset($_POST['thread_notify']) ? (bool) $_POST['thread_notify'] : false; $thread_id = null; if (!empty($_POST['thread_subcategory'])) { $cat = $_POST['thread_subcategory']; } else { if (!empty($_POST['thread_category'])) { $cat = $_POST['thread_category']; } else { $cat = null; } } $author_id = CMA::getPostingUserId(); $error = false; $messages = array(); $data = array('title' => $title, 'content' => $content, 'notify' => $notify, 'author_id' => $author_id, 'category' => $cat, 'tags' => $tags, 'userRelatedQuestions' => isset($_POST['cma_related_questions']) ? $_POST['cma_related_questions'] : array()); try { if (empty($_POST['nonce']) or !wp_verify_nonce($_POST['nonce'], 'cma_question')) { throw new Exception(CMA::__('Invalid nonce.')); } if (!CMA_Thread::canPostQuestions()) { throw new Exception(CMA::__('You cannot post questions.')); } $thread = CMA_Thread::newThread($data); $thread_id = $thread->getId(); } catch (Exception $e) { $messages = @unserialize($e->getMessage()); if (!is_array($messages)) { $messages = array($e->getMessage()); } $error = true; } if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') { if (!$error) { $heldForModeration = $thread->wasHeldForModeration(); if (!$heldForModeration) { $messages[] = CMA_Labels::getLocalized('msg_post_question_success'); } else { $messages[] = CMA_Labels::getLocalized('msg_post_question_moderation'); } } header('Content-type: application/json'); echo json_encode(array('success' => (int) (!$error), 'thread_id' => $thread_id, 'messages' => $messages)); exit; } else { if ($error) { foreach ((array) $messages as $message) { self::addMessage(self::MESSAGE_ERROR, $message); } self::_populate($_POST); if (!empty($_POST['cma-referrer'])) { wp_redirect($_POST['cma-referrer'], 303); } else { wp_redirect(get_post_type_archive_link(CMA_Thread::POST_TYPE), 303); } } else { $heldForModeration = $thread->wasHeldForModeration(); if (!$heldForModeration) { $msg = CMA_Labels::getLocalized('msg_post_question_success'); } else { $msg = CMA_Labels::getLocalized('msg_post_question_moderation'); } self::addMessage(self::MESSAGE_SUCCESS, apply_filters('cma_question_post_msg_success', $msg)); if (!empty($_POST['cma-redirect'])) { if ($_POST['cma-redirect'] == '_thread') { if ($heldForModeration) { wp_redirect(get_post_type_archive_link(CMA_Thread::POST_TYPE), 303); } else { wp_redirect(get_permalink($thread_id), 303); } } else { wp_redirect($_POST['cma-redirect'], 303); } } else { if (!empty($_POST['cma-referrer'])) { wp_redirect($_POST['cma-referrer'], 303); } else { wp_redirect(get_post_type_archive_link(CMA_Thread::POST_TYPE), 303); } } } exit; } }