public function export($ids) { $dom = new DOMDocument('1.0', 'utf-8'); $root = $dom->createElement('wpProQuiz'); $dom->appendChild($root); $header = $dom->createElement('header'); $header->setAttribute('version', WPPROQUIZ_VERSION); $header->setAttribute('exportVersion', 1); $root->appendChild($header); $data = $dom->createElement('data'); $quizMapper = new WpProQuiz_Model_QuizMapper(); $questionMapper = new WpProQuiz_Model_QuestionMapper(); $formMapper = new WpProQuiz_Model_FormMapper(); foreach ($ids as $id) { $quizModel = $quizMapper->fetch($id); if ($quizModel->getId() <= 0) { continue; } $questionModel = $questionMapper->fetchAll($quizModel->getId()); $forms = array(); if ($quizModel->isFormActivated()) { $forms = $formMapper->fetch($quizModel->getId()); } $quizElement = $this->getQuizElement($dom, $quizModel, $forms); $quizElement->appendChild($questionsElement = $dom->createElement('questions')); foreach ($questionModel as $model) { $questionElement = $this->createQuestionElement($dom, $model); $questionsElement->appendChild($questionElement); } $data->appendChild($quizElement); } $root->appendChild($data); return $dom->saveXML(); }
public function quizCompleted() { $lockMapper = new WpProQuiz_Model_LockMapper(); $quizMapper = new WpProQuiz_Model_QuizMapper(); $categoryMapper = new WpProQuiz_Model_CategoryMapper(); $statistics = new WpProQuiz_Controller_Statistics(); $quiz = $quizMapper->fetch($this->data['quizId']); if ($quiz === null || $quiz->getId() <= 0) { return; } $categories = $categoryMapper->fetchByQuiz($quiz->getId()); $userId = get_current_user_id(); $resultInPercent = floor($this->data['results']['comp']['result']); $this->setResultCookie($quiz); $this->emailNote($quiz, $this->data['results']['comp'], $categories); if (!$this->isPreLockQuiz($quiz)) { $statistics->save(); do_action('wp_pro_quiz_completed_quiz'); do_action('wp_pro_quiz_completed_quiz_' . $resultInPercent . '_percent'); return; } $lockMapper->deleteOldLock(60 * 60 * 24 * 7, $this->_post['quizId'], time(), WpProQuiz_Model_Lock::TYPE_QUIZ, 0); $lockIp = $lockMapper->isLock($this->_post['quizId'], $this->getIp(), get_current_user_id(), WpProQuiz_Model_Lock::TYPE_QUIZ); $lockCookie = false; $cookieTime = $quiz->getQuizRunOnceTime(); $cookieJson = null; if (isset($this->_cookie['wpProQuiz_lock']) && get_current_user_id() == 0 && $quiz->isQuizRunOnceCookie()) { $cookieJson = json_decode($this->_cookie['wpProQuiz_lock'], true); if ($cookieJson !== false) { if (isset($cookieJson[$this->_post['quizId']]) && $cookieJson[$this->_post['quizId']] == $cookieTime) { $lockCookie = true; } } } if (!$lockIp && !$lockCookie) { $statistics->save(); do_action('wp_pro_quiz_completed_quiz'); do_action('wp_pro_quiz_completed_quiz_' . $resultInPercent . '_percent'); if (get_current_user_id() == 0 && $quiz->isQuizRunOnceCookie()) { $cookieData = array(); if ($cookieJson !== null || $cookieJson !== false) { $cookieData = $cookieJson; } $cookieData[$this->_post['quizId']] = $quiz->getQuizRunOnceTime(); $url = parse_url(get_bloginfo('url')); setcookie('wpProQuiz_lock', json_encode($cookieData), time() + 60 * 60 * 24 * 60, empty($url['path']) ? '/' : $url['path']); } $lock = new WpProQuiz_Model_Lock(); $lock->setUserId(get_current_user_id()); $lock->setQuizId($this->_post['quizId']); $lock->setLockDate(time()); $lock->setLockIp($this->getIp()); $lock->setLockType(WpProQuiz_Model_Lock::TYPE_QUIZ); $lockMapper->insert($lock); } return; }
/** * @param $ids * @return WpProQuiz_Model_Quiz[] */ private function getQuizMaster($ids) { $m = new WpProQuiz_Model_QuizMapper(); $r = array(); foreach ($ids as $id) { $master = $m->fetch($id); if ($master->getId() > 0) { $r[] = $master; } } return $r; }
/** * * @param WpProQuiz_Model_Quiz $quiz * @return void|boolean */ public function save($quiz = null) { $quizId = $this->_post['quizId']; $array = $this->_post['results']; $lockIp = $this->getIp(); $userId = get_current_user_id(); if ($lockIp === false) { return false; } if ($quiz === null) { $quizMapper = new WpProQuiz_Model_QuizMapper(); $quiz = $quizMapper->fetch($quizId); } if (!$quiz->isStatisticsOn()) { return false; } $values = $this->makeDataList($quizId, $array, $quiz->getQuizModus()); $formValues = $this->makeFormData($quiz, isset($this->_post['forms']) ? $this->_post['forms'] : null); if ($values === false) { return false; } if ($quiz->getStatisticsIpLock() > 0) { $lockMapper = new WpProQuiz_Model_LockMapper(); $lockTime = $quiz->getStatisticsIpLock() * 60; $lockMapper->deleteOldLock($lockTime, $quiz->getId(), time(), WpProQuiz_Model_Lock::TYPE_STATISTIC); if ($lockMapper->isLock($quizId, $lockIp, $userId, WpProQuiz_Model_Lock::TYPE_STATISTIC)) { return false; } $lock = new WpProQuiz_Model_Lock(); $lock->setQuizId($quizId)->setLockIp($lockIp)->setUserId($userId)->setLockType(WpProQuiz_Model_Lock::TYPE_STATISTIC)->setLockDate(time()); $lockMapper->insert($lock); } $statisticRefModel = new WpProQuiz_Model_StatisticRefModel(); $statisticRefModel->setCreateTime(time()); $statisticRefModel->setUserId($userId); $statisticRefModel->setQuizId($quizId); $statisticRefModel->setFormData($formValues); $statisticRefMapper = new WpProQuiz_Model_StatisticRefMapper(); $statisticRefMapper->statisticSave($statisticRefModel, $values); return true; }
public function showAction($id) { $view = new WpProQuiz_View_FrontQuiz(); $quizMapper = new WpProQuiz_Model_QuizMapper(); $questionMapper = new WpProQuiz_Model_QuestionMapper(); $categoryMapper = new WpProQuiz_Model_CategoryMapper(); $formMapper = new WpProQuiz_Model_FormMapper(); $quiz = $quizMapper->fetch($id); if ($quiz->isShowMaxQuestion() && $quiz->getShowMaxQuestionValue() > 0) { $value = $quiz->getShowMaxQuestionValue(); if ($quiz->isShowMaxQuestionPercent()) { $count = $questionMapper->count($id); $value = ceil($count * $value / 100); } $question = $questionMapper->fetchAll($id, true, $value); } else { $question = $questionMapper->fetchAll($id); } $view->quiz = $quiz; $view->question = $question; $view->category = $categoryMapper->fetchByQuiz($quiz->getId()); $view->forms = $formMapper->fetch($quiz->getId()); $view->show(true); }
public function showAction() { if (!current_user_can('wpProQuiz_show')) { wp_die(__('You do not have sufficient permissions to access this page.')); } $m = new WpProQuiz_Model_QuizMapper(); $mm = new WpProQuiz_Model_QuestionMapper(); $categoryMapper = new WpProQuiz_Model_CategoryMapper(); $view = new WpProQuiz_View_QuestionOverall(); $view->quiz = $m->fetch($this->_quizId); $per_page = (int) get_user_option('wp_pro_quiz_question_overview_per_page'); if (empty($per_page) || $per_page < 1) { $per_page = 20; } $current_page = $this->getCurrentPage(); $search = isset($_GET['s']) ? trim($_GET['s']) : ''; $orderBy = isset($_GET['orderby']) ? trim($_GET['orderby']) : ''; $order = isset($_GET['order']) ? trim($_GET['order']) : ''; $offset = ($current_page - 1) * $per_page; $limit = $per_page; $filter = array(); if (isset($_GET['cat'])) { $filter['cat'] = $_GET['cat']; } $result = $mm->fetchTable($this->_quizId, $orderBy, $order, $search, $limit, $offset, $filter); $view->questionItems = $result['questions']; $view->questionCount = $result['count']; $view->categoryItems = $categoryMapper->fetchAll(WpProQuiz_Model_Category::CATEGORY_TYPE_QUESTION); $view->perPage = $per_page; $view->show(); }
public static function ajaxShowFrontToplist($data) { // workaround ... $_POST = $_POST['data']; $quizIds = empty($data['quizIds']) ? array() : array_unique((array) $data['quizIds']); $toplistMapper = new WpProQuiz_Model_ToplistMapper(); $quizMapper = new WpProQuiz_Model_QuizMapper(); $j = array(); foreach ($quizIds as $quizId) { $quiz = $quizMapper->fetch($quizId); if ($quiz == null || $quiz->getId() == 0) { continue; } $toplist = $toplistMapper->fetch($quizId, $quiz->getToplistDataShowLimit(), $quiz->getToplistDataSort()); foreach ($toplist as $tp) { $j[$quizId][] = array('name' => $tp->getName(), 'date' => WpProQuiz_Helper_Until::convertTime($tp->getDate(), get_option('wpProQuiz_toplistDataFormat', 'Y/m/d g:i A')), 'points' => $tp->getPoints(), 'result' => $tp->getResult()); } } return json_encode($j); }
public static function ajaxQuizLoadData($data) { $id = $data['quizId']; $view = new WpProQuiz_View_FrontQuiz(); $quizMapper = new WpProQuiz_Model_QuizMapper(); $questionMapper = new WpProQuiz_Model_QuestionMapper(); $categoryMapper = new WpProQuiz_Model_CategoryMapper(); $formMapper = new WpProQuiz_Model_FormMapper(); $quiz = $quizMapper->fetch($id); if ($quiz->isShowMaxQuestion() && $quiz->getShowMaxQuestionValue() > 0) { $value = $quiz->getShowMaxQuestionValue(); if ($quiz->isShowMaxQuestionPercent()) { $count = $questionMapper->count($id); $value = ceil($count * $value / 100); } $question = $questionMapper->fetchAll($id, true, $value); } else { $question = $questionMapper->fetchAll($id); } if (empty($quiz) || empty($question)) { return null; } $view->quiz = $quiz; $view->question = $question; $view->category = $categoryMapper->fetchByQuiz($quiz->getId()); $view->forms = $formMapper->fetch($quiz->getId()); return json_encode($view->getQuizData()); }
public static function ajaxCompletedQuiz($data) { // workaround ... $_POST = $_POST['data']; $ctr = new WpProQuiz_Controller_Quiz(); $lockMapper = new WpProQuiz_Model_LockMapper(); $quizMapper = new WpProQuiz_Model_QuizMapper(); $categoryMapper = new WpProQuiz_Model_CategoryMapper(); $formMapper = new WpProQuiz_Model_FormMapper(); $is100P = $data['results']['comp']['result'] == 100; $quiz = $quizMapper->fetch($data['quizId']); if ($quiz === null || $quiz->getId() <= 0) { return json_encode(array()); } $categories = $categoryMapper->fetchByQuiz($quiz->getId()); $forms = $formMapper->fetch($quiz->getId()); $ctr->setResultCookie($quiz); $ctr->emailNote($quiz, $data['results']['comp'], $categories, $forms, isset($data['forms']) ? $data['forms'] : array()); if (!$ctr->isPreLockQuiz($quiz)) { $statistics = new WpProQuiz_Controller_Statistics(); $statistics->save($quiz); do_action('wp_pro_quiz_completed_quiz'); if ($is100P) { do_action('wp_pro_quiz_completed_quiz_100_percent'); } return json_encode(array()); } $lockMapper->deleteOldLock(60 * 60 * 24 * 7, $data['quizId'], time(), WpProQuiz_Model_Lock::TYPE_QUIZ, 0); $lockIp = $lockMapper->isLock($data['quizId'], $ctr->getIp(), get_current_user_id(), WpProQuiz_Model_Lock::TYPE_QUIZ); $lockCookie = false; $cookieTime = $quiz->getQuizRunOnceTime(); $cookieJson = null; if (isset($ctr->_cookie['wpProQuiz_lock']) && get_current_user_id() == 0 && $quiz->isQuizRunOnceCookie()) { $cookieJson = json_decode($ctr->_cookie['wpProQuiz_lock'], true); if ($cookieJson !== false) { if (isset($cookieJson[$data['quizId']]) && $cookieJson[$data['quizId']] == $cookieTime) { $lockCookie = true; } } } if (!$lockIp && !$lockCookie) { $statistics = new WpProQuiz_Controller_Statistics(); $statistics->save($quiz); do_action('wp_pro_quiz_completed_quiz'); if ($is100P) { do_action('wp_pro_quiz_completed_quiz_100_percent'); } if (get_current_user_id() == 0 && $quiz->isQuizRunOnceCookie()) { $cookieData = array(); if ($cookieJson !== null || $cookieJson !== false) { $cookieData = $cookieJson; } $cookieData[$data['quizId']] = $quiz->getQuizRunOnceTime(); $url = parse_url(get_bloginfo('url')); setcookie('wpProQuiz_lock', json_encode($cookieData), time() + 60 * 60 * 24 * 60, empty($url['path']) ? '/' : $url['path']); } $lock = new WpProQuiz_Model_Lock(); $lock->setUserId(get_current_user_id()); $lock->setQuizId($data['quizId']); $lock->setLockDate(time()); $lock->setLockIp($ctr->getIp()); $lock->setLockType(WpProQuiz_Model_Lock::TYPE_QUIZ); $lockMapper->insert($lock); } return json_encode(array()); }