public function __pageParamsResolve($ctx) { // context array contains: &$params $languages = getBrowserLanguages(); $ctx['params']['browser-languages'] = implode(',', $languages); /* $index = 1; foreach($languages as $lang){ $ctx['params']['browser-language-'.$index++] = $lang; } */ }
public function buildSortingSQL(&$joins, &$where, &$sort, $order = 'ASC') { if ($this->get('enable_browser_language_support') == 'yes' && count($languages = getBrowserLanguages()) > 0) { // Allow selecting default language, so if browser does not hint us about languages, or none of // browser languages is found, next in order will always be default. $default = $this->get('default_language'); if (isset($this->lang[$default]) && !in_array($default, $languages)) { array_push($languages, $default); } // If user selected specific language, make sure it will be the first if ((($temp = $_GET['language']) || ($temp = $_COOKIE['language']) || ($temp = $_SESSION['language'])) && isset($this->lang[$temp])) { array_unshift($languages, $temp); if ($_GET['language']) { setcookie('language', $temp, time() + TWO_WEEKS, '/'); $_SESSION['language'] = $temp; } } // array_unique keeps first encountered value, so it has to be run before array_reverse, // otherwise selected order will not be used, e.g., "pl,en-US,en,pl" (after passing ?language=pl in URL) // will become "pl,en,en-US" instead of "en,en-US,pl". $languages = array_map(array($this, 'cleanValue'), $order == 'ASC' ? array_unique($languages) : array_reverse(array_unique($languages))); $order = 'DESC'; $field = "FIELD(`ed`.`lang`, '" . implode("','", $languages) . "')"; } else { $field = '`ed`.`lang`'; } $joins .= " INNER JOIN `tbl_entries_data_" . $this->get('id') . "` AS `ed` ON (`e`.`id` = `ed`.`entry_id`) "; $sort = ' ORDER BY ' . (in_array(strtolower($order), array('random', 'rand')) ? 'RAND()' : "{$field} {$order} "); }