/** * Основная страница модуля (маршрутизатор) * $params => array( * 'url' => 'survey', // url к странице с модулем * 'show_list' => false, // показывать ссылку на список незакрытых опросов * 'show_block' => false, // вывести блок с последним открытым опросом * 'show_archive' => false, // показывать ссылку на архив * 'show_quest_results' => true, // показывать ссылку на результаты конктретного вопросоа * ) * * @param array $params * @return mixed */ function survey(&$params) { $this->params = $params; $this->page_obj =& Registry::get('TPage'); if (!isset($this->params['url']) or !$this->params['url']) { $this->params['url'] = "survey"; } if (isset($this->params['show_block']) and $this->params['show_block']) { return $this->showBlock(); } switch ($this->page_obj->content['page']) { case 'archive': $ret = $this->getArchive(); // Просмотр архива break; case 'list': $ret = $this->getList(); // Просмотр списка опросов break; case 'surveydo': $ret = $this->surveydo(); // Кто-то заполнил опросник break; case 'thanks': $ret = false; if ($_GET['from'] == 'survey_popup') { echo "<script>\n window.opener.location = '/" . $this->params['url'] . "/thanks?id=" . (int) $_GET['id'] . "';\n window.close();\n\t \t\t </script>"; } break; default: $ret = false; } $id = (int) get('id', '', 'g'); if ($id and !$ret) { // Значит пришли смотреть результаты/голосовать в конкретный опрос $survey = $this->getSurvey($id); if (!$survey) { return false; } $ret['survey'] = $survey; $ret['survey']['total'] = $this->qrySurveyTotal($id); $show = $this->whatShow($survey); switch ($show) { case 'questions': $ret['survey']['questions'] = $this->getQuests($id); break; case 'results': $resultsModel = new SurveyResultsModel($id); $ret['survey']['results'] = $resultsModel->getResults(); break; case 'results_more': $quest_id = (int) get('qid', 0, 'g'); $resultsModel = new SurveyResultsModel($id); $ret['survey']['results_more'] = $resultsModel->getMoreResults($quest_id); break; case 'none': break; } } $ret['current_answers'] = isset($_SESSION['survey']['data']) ? $_SESSION['survey']['data'] : array(); $ret['current_free_answers'] = isset($_SESSION['survey']['free']) ? $_SESSION['survey']['free'] : array(); $ret['current_catalog_answers'] = isset($_SESSION['survey']['catalog']) ? $_SESSION['survey']['catalog'] : array(); $_SESSION['survey']['data'] = $_SESSION['survey']['free'] = array(); if ($ret) { $ret['params'] = $this->params; return $ret; } else { redirect('/' . $this->params['url'] . '/list/'); } }
/** * Показ результатов по каждому вопросу * @return mixed */ function showMoreResults() { $id = (int) get('id', 0, 'g'); $qid = (int) get('qid', 0, 'g'); if (!$id or !$qid) { return false; } $resultsModel = new SurveyResultsModel($id); $data = $resultsModel->getMoreResults($qid); $data['survey'] = sql_getRow('SELECT * FROM surveys WHERE id = ' . $id); $data['module_name'] = $this->name; $this->AddStrings($data); return $this->Parse($data, "surveys.moreresults.tmpl"); }