/** * Get polls * * @param array $params array of search parameters * @param string $lang_code language to get descriptions for * @return array array with found polls in first element and filtered parameters in second */ function fn_get_polls($params, $lang_code = CART_LANGUAGE) { $auth = $_SESSION['auth']; $condition = ''; if (!empty($params['item_ids'])) { $condition .= db_quote(" AND ?:pages.page_id IN (?n)", explode(',', $params['item_ids'])); } if (AREA != 'A') { $condition .= " AND (" . fn_find_array_in_set($auth['usergroup_ids'], '?:pages.usergroup_ids', true) . ")"; } $_data = db_get_array("SELECT ?:pages.page_id, ?:page_descriptions.page FROM ?:pages LEFT JOIN ?:page_descriptions ON ?:page_descriptions.page_id = ?:pages.page_id AND ?:page_descriptions.lang_code = ?s LEFT JOIN ?:polls ON ?:polls.page_id = ?:pages.page_id WHERE ?:pages.status = ?s AND ?:pages.page_type = ?s AND (?:pages.use_avail_period = ?s OR (?:pages.use_avail_period = ?s AND ?:pages.avail_from_timestamp <= ?i AND ?:pages.avail_till_timestamp >= ?i)) ?p ORDER BY position", $lang_code, 'A', PAGE_TYPE_POLL, 'N', 'Y', TIME, TIME, $condition); $polls = array(); foreach ($_data as $k => $_poll) { $polls[$k] = fn_get_poll_data($_poll['page_id']); $polls[$k]['page'] = $_poll['page']; } return array($polls, $params); }
if (!empty($_REQUEST['answer'])) { $answer = $_REQUEST['answer']; } else { $answer = array(); } if (!empty($_REQUEST['answer_text'])) { $answer_text = $_REQUEST['answer_text']; } else { $answer_text = array(); } if (!empty($_REQUEST['answer_more'])) { $answer_more = $_REQUEST['answer_more']; } else { $answer_more = array(); } $poll = fn_get_poll_data($_REQUEST['page_id']); $error = false; foreach ($poll['questions'] as $key => $entry) { if ($entry['required'] == 'N') { continue; } if ($entry['type'] == 'T' && empty($answer_text[$key])) { $error = true; break; } elseif ($entry['type'] == 'M' && (!isset($answer[$key]) || !is_array($answer[$key]))) { $error = true; break; } elseif ($entry['type'] == 'Q' && empty($answer[$key])) { $error = true; break; }