\n"; $head_css = "\n"; //$bodyadd .= "$('#elementid').trigger('click');"; } ?> "0","2" => "9","3" => "8","4" => "7","5" => "6","6" => "5","7" => "4","8" => "3","9" => "2","0" => "1"); $flip = array_flip($array); $geparste_id = strtr ($ulm_uploaded_file_step_id, $flip); return $geparste_id; } else { return FALSE; } } // decodiert die verschluesselte ID function decode_id($zu_parsende_ID) { $ulm_parse_id_multi = codeparameter("multi"); $ulm_parse_id_add = codeparameter("add"); if ($zu_parsende_ID) { $array = array ("1" => "0","2" => "9","3" => "8","4" => "7","5" => "6","6" => "5","7" => "4","8" => "3","9" => "2","0" => "1"); $flip = array_flip($array); $ulm_uploaded_file_step_id = strtr ($zu_parsende_ID, $flip); $geparste_id = ($ulm_uploaded_file_step_id - $ulm_parse_id_add) / $ulm_parse_id_multi; return $geparste_id; } else { return FALSE; } } function sende_mail($empfaenger,$text,$titel,$bcc,$from,$reply,$envelopefrom,$disclaimer=NULL) { $lang = strtolower($_SESSION['lang']); $SBJ_IN = $titel; // HTML-Email Start $MSG_IN_USER = " \n"; // HTML-Email Text $MSG_IN_USER .= $text; $MSG_IN_USER .= "

\n"; if ($disclaimer != "disabled") { $MSG_IN_USER .= "NAME
\n"; $MSG_IN_USER .= "STRASSE
\n"; $MSG_IN_USER .= "PLZ ORT
\n"; $MSG_IN_USER .= "FON/FAX/EMAIL
\n"; $MSG_IN_USER .= "WEBSITE
\n"; } // HTML-Email Ende $MSG_IN_USER .= ""; $header = "From:".$from."\n"; if (($bcc) AND ($bcc != NULL)) { $header .= "BCC:".$bcc."\n"; } if (($reply) AND ($reply != NULL)) { $header .= "Reply-to:".$reply."\n"; } $header .= "X-Mailer: XMailer V2.4\n"; $header .= "Content-Type: text/html; charset=utf-8\n"; $header .= "Content-Transfer-Encoding: 7bit\n"; $header .= "Mime-Version: 1.0\n"; if (mail($empfaenger, $SBJ_IN, $MSG_IN_USER, $header, "-f $envelopefrom")) { return TRUE; } else { return FALSE; } } function checktext($text,$laenge,$vorhanden) { //wenn $laenge = 0 dann keine Prüfung auf Textlänge //wenn $laenge != 0 dann Prüfung auf Textlänge --> länger --> Fehler //wenn $vorhanden = 0 dann keine Prüfung ob leer //wenn $vorhanden = 1 dann Prüfung ob leer --> leer --> Fehler $fehler = 0; if (($laenge != 0) && (strlen(trim($text)) >= ($laenge+1))) { $fehler = 1; } if (($vorhanden == 1) && (strlen(trim($text)) == 0)) { $fehler = 2; } return $fehler; /* $fehler = 1 --> länger als angegeben $fehler = 2 --> leer */ } function checkdatum($von,$bis) { //prüft die Datumsangaben $durchlauf_1 = 1; $durchlauf_2 = 1; $durchlauf_3 = 1; $xp_von = explode(".", $von); $xp_bis = explode(".", $bis); $mk_von = mktime(0,0,0,$xp_von[1],$xp_von[0],$xp_von[2]); $mk_bis = mktime(0,0,0,$xp_bis[1],$xp_bis[0],$xp_bis[2]); if ($mk_bis >= $mk_von) { $durchlauf_1 = 1; } else { $durchlauf_1 = 2; } if ((strlen($xp_von[0]) != 2) || ($xp_von[0] > 31) || (!is_numeric($xp_von[0]))) { $durchlauf_2 = 2; } if ((strlen($xp_von[1]) != 2) || ($xp_von[1] > 12) || (!is_numeric($xp_von[1]))) { $durchlauf_2 = 2; } if ((strlen($xp_von[2]) != 4) || (!is_numeric($xp_von[2]))) { $durchlauf_2 = 2; } if ((strlen($xp_bis[0]) != 2) || ($xp_bis[0] > 31) || (!is_numeric($xp_bis[0]))) { $durchlauf_3 = 2; } if ((strlen($xp_bis[1]) != 2) || ($xp_bis[1] > 12) || (!is_numeric($xp_bis[1]))) { $durchlauf_3 = 2; } if ((strlen($xp_bis[2]) != 4) || (!is_numeric($xp_bis[2]))) { $durchlauf_3 = 2; } /* $durchlauf_1 = 1 --> ok; 2 --> von ist größer als bis --> Fehler $durchlauf_2 = 1 --> ok; 2 --> von Datum fehlerhaft --> Fehler $durchlauf_3 = 1 --> ok; 2 --> bis Datum fehlerhaft --> Fehler */ return array ($durchlauf_1, $durchlauf_2, $durchlauf_3); } function transdatum($trans_datum) { //wandelt Datumsangaben (tt.mm.jjjj) in Unix-Timestamp um $xp_datum = explode(".", $trans_datum); $mk_datum = @mktime(0,0,0,$xp_datum[1],$xp_datum[0],$xp_datum[2]); echo $mk_datum."
"; return $mk_datum; } function transdatum_von($trans_datum) { //wandelt Datumsangaben (tt.mm.jjjj) in Unix-Timestamp um $xp_datum = explode(".", $trans_datum); $mk_datum = @mktime(00,00,00,$xp_datum[1],$xp_datum[0],$xp_datum[2]); return $mk_datum; } function transdatum_bis($trans_datum) { //wandelt Datumsangaben (tt.mm.jjjj) in Unix-Timestamp um $xp_datum = explode(".", $trans_datum); $mk_datum = @mktime(23,59,59,$xp_datum[1],$xp_datum[0],$xp_datum[2]); return $mk_datum; } function transtimestamp($trans_timestamp,$lang="de",$show="light",$details="dmy") { //wandelt Unix-Timestamp in Datumsangabe (tt.mm.jjjj) um if ($lang == "de") { if ($details == "dmy") { $mk_datum = strftime("%d.%m.%Y", $trans_timestamp); } if ($details == "my") { $mk_datum = strftime("%m.%Y", $trans_timestamp); } } else { if ($details == "dmy") { $mk_datum = strftime("%Y-%m-%d", $trans_timestamp); } if ($details == "my") { $mk_datum = strftime("%Y-%m", $trans_timestamp); } } if ($show != "light") { $mk_datum .= strftime(" %T", $trans_timestamp); } return $mk_datum; } function getlastupdate() { for ($i=1;$i<=4;$i++) { switch ($i) { case 1: $verzeichnis = "./"; break; case 2: $verzeichnis = "css/"; break; case 3: $verzeichnis = "layout/"; break; case 4: $verzeichnis = "templates/"; break; } $dir_open = opendir ($verzeichnis); while ($file = readdir ($dir_open)) { //$fp = fopen($file,"r"); if($file != "" && $file != "." && $file != "..") { //$allezeilen = $allezeilen+count(file($verzeichnis.$file)); //$alledateien = $alledateien + @filesize($verzeichnis.$file); //$allefiles++; if (@filemtime($verzeichnis.$file) >= $lastmod) { $lastmod = @filemtime($verzeichnis.$file); $lastdatei = $verzeichnis.$file; } clearstatcache(); } } $dir_close = closedir ($dir_open); } return $lastmod; } function geturlinfo($uri,$urltarget,$urltext) { $opener = "http://"; if (substr($uri,0,7) != $opener) { $uri = $opener.$uri; } if ($urltext) { $urlinfos = "$urltext"; } else { $urlinfos = "$uri"; } return $urlinfos; } function clearinputnum($input) { $input = trim(strip_tags($input)); if (!is_numeric($input)) { return false; } else { return $input; } } function clearinputcms($input) { return trim($input); } function clearinputmin($input) { return trim(strip_tags($input)); } function clearinputmed($input) { return ucfirst(trim(strip_tags(strtolower($input)))); } function clearinputmax($input) { return trim(clearinputtxt($input)); } function clearinputtxt($input) { $abuse = array("\"" => "´", "'" => "´", "<" => "(", ">" => ")", "{" => "(", "}" => ")"); return trim(strip_tags(stripslashes(strtr($input, $abuse)))); } function checkinputint($input) { $input = clearinputmin($input); if (is_numeric($input) == true) { return true; } else { return false; } } function emailpruefen($email) { $email = trim(strip_tags($email)); if (($email) and (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))) { return true; } else { return false; } } function namepruefen($vorname) { $vorname = ucfirst(trim(strip_tags(strtolower($vorname)))); if ((strlen($vorname) >= 2) and (ereg("([a-z,A-Z, ,-,´,`])",$vorname))) { return true; } else { return false; } } function telefonpruefen($nummer) { $nummer = trim(strip_tags($nummer)); if ((strlen($nummer) >= 4) and (!ereg("([a-z,A-Z])",$nummer))) { return true; } else { return false; } } function checkcaptive($name) { $inkorrekt = strtolower(trim(strip_tags($name))); $p_vorname_2 = explode(" ",$inkorrekt); $p_vorname_2_length = count($p_vorname_2); for ($p=1;$p<=$p_vorname_2_length;$p++) { $p_vorname_3 .= ucfirst($p_vorname_2[$p-1])." "; } if ($p_vorname_3) { $p_vorname_4 = $p_vorname_3; } else { $p_vorname_4 = $p_vorname_1; } $p_vorname_2 = explode("-",$p_vorname_4); $p_vorname_2_length = count($p_vorname_2); for ($p=1;$p<=$p_vorname_2_length;$p++) { $p_vorname_5 = $p_vorname_5.ucfirst($p_vorname_2[$p-1])."-"; } if ($p_vorname_5) { $korrekt = trim(substr($p_vorname_5, 0, -2)); } else { $korrekt = trim($p_vorname_4); } return $korrekt; } function sortAry($a, $b) { $aValue = array_values($a); $aValue = $aValue[0]; $bValue = array_values($b); $bValue = $bValue[0]; if ($aValue < $bValue) { return -1; } else if ($aValue == $bValue) { return 0; } else { return 1; } } function von($datum) { //wandelt Datumsangaben (tt.mm.jjjj) in Unix-Timestamp um, Startzeit 00:00:00 Uhr $xp_datum = explode(".", $datum); $mk_datum = mktime(0,0,0,$xp_datum[1],$xp_datum[0],$xp_datum[2]); return $mk_datum; } function bis($datum) { //wandelt Datumsangaben (tt.mm.jjjj) in Unix-Timestamp um, Endzeit 23:59:59 Uhr $xp_datum = explode(".", $datum); $mk_datum = mktime(23,59,59,$xp_datum[1],$xp_datum[0],$xp_datum[2]); return $mk_datum; } function altercheck($geburtsdatum) { $datum = explode(".", $geburtsdatum); $m = $datum[1]; $d = $datum[0]; $y = $datum[2]; $secs = mktime(0,0,0,$m,$d,$y); $alter = date("Y", time() - $secs) - 1970; return $alter; } function getfileinfo($dateityp) { switch ($dateityp) { default: $dateitypus = ""; $dateiicon = "na.gif"; break; case "doc": $dateitypus = "Microsoft Word"; $dateiicon = "word.gif"; break; case "xls": $dateitypus = "Microsoft Excel"; $dateiicon = "excel.gif"; break; case "pdf": $dateitypus = "Adobe PDF"; $dateiicon = "pdf.gif"; break; case "txt": $dateitypus = "Text"; $dateiicon = "txt.gif"; break; case "ppt": $dateitypus = "Microsoft Powerpoint"; $dateiicon = "ppt.gif"; break; case "pps": $dateitypus = "Microsoft Powerpoint"; $dateiicon = "pps.gif"; break; case "zip": $dateitypus = "ZIP"; $dateiicon = "zip.gif"; break; } if (($dateitypus != "") AND ($dateiicon != "")) { return $dateitypus.";".$dateiicon; } else { return FALSE; } } function getdownloadelement($pfad,$datei,$bezeichnung,$header="http") { $file = $_SERVER['DOCUMENT_ROOT']."/".$pfad.$datei; if (file_exists($file)) { $file_size = (ceil(@filesize($file)/1000))." KB"; $file_time = ", ".transtimestamp(@filemtime($file)); $file_ext = strtoupper(substr(strrchr($file,'.'),1,strlen(strrchr($file,'.'))))."-Datei, "; clearstatcache(); return "$bezeichnung [".$file_ext.$file_size."]"; } else { clearstatcache(); return FALSE; } } function check_filename($name,$neu) { if (!$name) { return FALSE; } $name = clearinputmin($name); $name_neu = clearinputmin($neu); $name_endung = strtolower(strrchr($name, '.')); $name_endung_ari = str_replace(".","",$name_endung); $name_neutral = substr($name,0,(strlen($name)-strlen($name_endung))); $name_neu_endung = strtolower(strrchr($name_neu, '.')); $name_neu_endung_ari = str_replace(".","",$name_neu_endung); $name_neu_neutral = substr($name,0,(strlen($name_neu)-strlen($name_neu_endung))); if ($name_endung == "") { return FALSE; } if ($name_neutral != $name_neu_neutral) { $name_komplett = $name_neu_neutral; } else { $name_komplett = $name_neutral; } $korrektur = array("&" => "+", "." => "_", "ä" => "ae", "ö" => "oe", "ü" => "ue", "Ä" => "AE", "Ö" => "OE", "Ü" => "UE", "ß" => "ss", "\"" => "-", "&" => "+", " " => "_", "%" => "-", "'" => "-", "?" => "_", "<" => "(", ">" => ")", "{" => "(", "}" => ")", "~" => "-"); $name_new = strtr($name_komplett, $korrektur); return array("$name_new","$name_endung_ari"); } function check_urlname($name) { if (!$name) { return FALSE; } $name = clearinputmin($name); $korrektur = array("–" => "_", " " => "_", "ß" => "ss","ß" => "ss","ä" => "ae", "ö" => "oe", "ü" => "ue", "Ä" => "AE", "Ö" => "OE", "Ü" => "UE", "ä" => "ae", "ö" => "oe", "ü" => "ue", "Ä" => "AE", "Ö" => "OE", "Ü" => "UE", "\"" => "", " " => "_", "%" => "_", "'" => "", "?" => "_", "<" => "_", ">" => "_", "(" => "_", ")" => "_", "{" => "_", "}" => "_", "~" => "_", "§" => "_", "=" => "_", "*" => "_", "#" => "_", ":" => "_", ";" => "_", "," => "_", "!" => "_", "|" => "_", "´" => "_", "`" => "_", "+" => "_", "$" => "_", "/" => "_", "\\" => "_","&" => "_", "&" => "_","__" => "_", "-" => "_"); return strtr($name, $korrektur); } function get_nonbreaker($name) { if (!$name) { return FALSE; } $name = clearinputmin($name); $korrektur = array("ä" => "ae", "ö" => "oe", "ü" => "ue", "Ä" => "AE", "Ö" => "OE", "Ü" => "UE", "ß" => "ss", "\"" => "_", "&" => "_", " " => "_", "%" => "_", "'" => "_", "?" => "_", "<" => "_", ">" => "_", "(" => "_", ")" => "_", "{" => "_", "}" => "_", "~" => "_", "§" => "_", "=" => "_", "*" => "_", "#" => "_", ":" => "_", ";" => "_", "," => "_", "!" => "_", "|" => "_", "´" => "_", "`" => "_","&" => "_", "&" => "_", "." => "_", "+" => "_", "$" => "_", "/" => "_"); return strtolower(strtr($name, $korrektur)); } function get_cleansearch($name) { if (!$name) { return FALSE; } $name = clearinputmin($name); $korrektur = array("’" => "'","\"" => "", "&" => "", "%" => "", "'" => "", "?" => "", "<" => "", ">" => "", "(" => "", ")" => "", "{" => "", "}" => "", "~" => "", "§" => "", "=" => "", "*" => "", "#" => "", ":" => "", ";" => "", "," => "", "!" => "", "|" => "", "´" => "", "`" => "","&" => "", "&" => "", "." => "", "+" => "", "$" => "", "/" => "", "javascript" => "", "?PHP" => "", "\\" => "","+" => ""); return strtr($name, $korrektur); } function get_single_amper($name) { if (!$name) { return FALSE; } $korrektur = array("&" => "&"); return strtr($name, $korrektur); } function get_amper($name) { return $name; } function truncate_text($text,$zeichen) { $laenge = strlen(clearinputmin($text)); if (($laenge >= 1) AND ($laenge <= $zeichen)) { return $text; } if (($laenge >= 1) AND ($laenge > $zeichen)) { return substr($text,0,($zeichen))."..."; } } function parsephone($phone,$land) { if ((!$phone) or (!$land)) { return FALSE; } $sql_select = mysql_query("SELECT id,vorwahl FROM laender WHERE kuerzel = '$land' LIMIT 1"); $sql_part = mysql_fetch_array($sql_select); $vorwahl = $sql_part['vorwahl']; $phone = str_replace("-"," ",$phone); $phone = str_replace("/"," ",$phone); $phone = str_replace(" "," ",$phone); $check = substr($phone,0,1); if ($check == "0") { $phone = substr($phone,1,strlen($phone)); $phone = "+".$vorwahl."(0)".$phone; } else { $phone = "+".$vorwahl.$phone; } return $phone; } function clear_double_br($text) { if (!$text) { return FALSE; } $korrektur = array("

" => "
"); return strtr($text, $korrektur); } function clear_first_br($text) { if (!$text) { return FALSE; } $text = trim($text); $foo = substr($text,0,6); if ($foo == "
") { return (substr($text,6,strlen($text))); } else { return $text; } } function clear_last_br($text) { if (!$text) { return FALSE; } $text = trim($text); $foo = substr($text,-6); if ($foo == "
") { return (substr($text,0,-6)); } else { return $text; } } function clear_first_spacer($text) { if (!$text) { return FALSE; } $text = trim($text); $foo = substr($text,0,6); if ($foo == " ") { return (substr($text,6,strlen($text))); } else { return $text; } } function shuffle_assoc(&$array) { if (count($array)>1) { $keys = array_rand($array, count($array)); foreach($keys as $key) $new[$key] = $array[$key]; $array = $new; } return true; //because it's a wannabe shuffle(), which returns true } function encode_url($name) { if (!$name) { return FALSE; } //$name = clearinputmin($name); $korrektur = array("ß" => "ss", "&" => "_und_", "+" => "--", "ä" => "aee", "ö" => "oe", "ü" => "ue", "Ä" => "AEE", "Ö" => "OE", "Ü" => "UE", " " => "_", "é" => "EE"); return strtr($name, $korrektur); } function decode_url($name) { if (!$name) { return FALSE; } //$name = clearinputmin($name); $korrektur = array("_und_" => "&", "--" => "+", "aee" => "ä", "oe" => "ö", "ue" => "ü", "AEE" => "Ä", "OE" => "Ö", "UE" => "Ü", "_" => " ", "EE" => "é"); return strtr($name, $korrektur); } function format_euro($waehrung) { if (!$waehrung) { return FALSE; } $korrektur = array("EUR" => "€", "EURO" => "€", "Eur" => "€", "Euro" => "€"); return strtr($waehrung, $korrektur); } function rename_file_name($file) { if (!$file) { return FALSE; } $name_endung = strtolower(strrchr($file, '.')); $name_neutral = substr($file,0,(strlen($file)-strlen($name_endung))); $name_neu = $name_neutral."_".time().$name_endung; return $name_neu; } function clear_file_extension($file) { if (!$file) { return FALSE; } $name_endung = strtolower(strrchr($file, '.')); $name_neu = substr($file,0,(strlen($file)-strlen($name_endung))); return $name_neu; } function update_timestamp($table,$field,$where,$id,$tag,$monat,$jahr,$direction) { if ((!$table) OR (!$field) OR (!$where) OR (!$id) OR (!$tag) OR (!$monat) OR (!$jahr) OR (!$direction)) { return FALSE; } if (($tag == "none") OR ($monat == "none") OR ($jahr == "none")) { $sql = "UPDATE ".$table." SET ".$field." = '' WHERE ".$where." = '".$id."' LIMIT 1"; return mysql_query($sql); } else { switch ($direction) { default: case "von": $timestamp = transdatum_von($tag.".".$monat.".".$jahr); break; case "bis": $timestamp = transdatum_bis($tag.".".$monat.".".$jahr); break; } $sql = "UPDATE ".$table." SET ".$field." = '".$timestamp."' WHERE ".$where." = '".$id."' LIMIT 1"; return mysql_query($sql); } } function update_timestamp_aktuelles($what) { if (!$what) { return FALSE; } switch ($what) { default: case "von": $sql = "SELECT * FROM pr_aktuelles"; $query = mysql_query($sql); while ($data = mysql_fetch_array($query)) { if (($data['tag'] != "") AND ($data['monat'] != "") AND ($data['jahr'] != "")) { $timestamp = transdatum_von($data['tag'].".".$data['monat'].".".$data['jahr']); $sql2 = "UPDATE pr_aktuelles SET timestamp = '".$timestamp."' WHERE id = '".$data['id']."' LIMIT 1"; $query2 = mysql_query($sql2); } } break; } } function split_file_extension($file) { if (!$file) { return FALSE; } $name_endung = strtolower(strrchr($file, '.')); $name_neu = substr($file,0,(strlen($file)-strlen($name_endung))); return array($name_neu,$name_endung); } function change_text_double_nl($text) { if (!$text) { return FALSE; } $foo = nl2br($text); $korrektur = array("

" => "
", "

" => "
"); return strtr($foo, $korrektur); } function get_clean_alphanumeric($name) { if (!$name) { return FALSE; } return (preg_replace('/[^a-z0-9_-]/isU', '', $name)); } function get_clean_alphanumeric_spacer($name) { if (!$name) { return FALSE; } return (preg_replace('/[^a-z0-9_-äöüÄÖÜ ]/isU', '', $name)); } function get_clean_googlemaps_name($text) { if (!$text) { return FALSE; } return urlencode($text); } ?> $complete ) { if ( $index == $user_languages[$i][0] ) { // complete language, like english (canada) $user_languages[$i][2] = $complete; // extract working language, like english $user_languages[$i][3] = substr( $complete, 0, strcspn( $complete, ' (' ) ); } } } } else// if no languages found { $user_languages[0] = array( '','','','' ); //return blank array. } //echo "
".print_r($user_languages)."
"; // return parameters if ( $feature == 'data' ) { return $user_languages; } } function browser_languages() { // pack abbreviation/language array // important note: you must have the default language as the last item in each major language, after all the // en-ca type entries, so en would be last in that case $a_languages = array( 'af' => 'Afrikaans', 'sq' => 'Albanian', 'ar-dz' => 'Arabic (Algeria)', 'ar-bh' => 'Arabic (Bahrain)', 'ar-eg' => 'Arabic (Egypt)', 'ar-iq' => 'Arabic (Iraq)', 'ar-jo' => 'Arabic (Jordan)', 'ar-kw' => 'Arabic (Kuwait)', 'ar-lb' => 'Arabic (Lebanon)', 'ar-ly' => 'Arabic (libya)', 'ar-ma' => 'Arabic (Morocco)', 'ar-om' => 'Arabic (Oman)', 'ar-qa' => 'Arabic (Qatar)', 'ar-sa' => 'Arabic (Saudi Arabia)', 'ar-sy' => 'Arabic (Syria)', 'ar-tn' => 'Arabic (Tunisia)', 'ar-ae' => 'Arabic (U.A.E.)', 'ar-ye' => 'Arabic (Yemen)', 'ar' => 'Arabic', 'hy' => 'Armenian', 'as' => 'Assamese', 'az' => 'Azeri', 'eu' => 'Basque', 'be' => 'Belarusian', 'bn' => 'Bengali', 'bg' => 'Bulgarian', 'ca' => 'Catalan', 'zh-cn' => 'Chinese (China)', 'zh-hk' => 'Chinese (Hong Kong SAR)', 'zh-mo' => 'Chinese (Macau SAR)', 'zh-sg' => 'Chinese (Singapore)', 'zh-tw' => 'Chinese (Taiwan)', 'zh' => 'Chinese', 'hr' => 'Croatian', 'cs' => 'Czech', 'da' => 'Danish', 'div' => 'Divehi', 'nl-be' => 'Dutch (Belgium)', 'nl' => 'Dutch (Netherlands)', 'en-au' => 'English (Australia)', 'en-bz' => 'English (Belize)', 'en-ca' => 'English (Canada)', 'en-ie' => 'English (Ireland)', 'en-jm' => 'English (Jamaica)', 'en-nz' => 'English (New Zealand)', 'en-ph' => 'English (Philippines)', 'en-za' => 'English (South Africa)', 'en-tt' => 'English (Trinidad)', 'en-gb' => 'English (United Kingdom)', 'en-us' => 'English (United States)', 'en-zw' => 'English (Zimbabwe)', 'en' => 'English', 'us' => 'English (United States)', 'et' => 'Estonian', 'fo' => 'Faeroese', 'fa' => 'Farsi', 'fi' => 'Finnish', 'fr-be' => 'French (Belgium)', 'fr-ca' => 'French (Canada)', 'fr-lu' => 'French (Luxembourg)', 'fr-mc' => 'French (Monaco)', 'fr-ch' => 'French (Switzerland)', 'fr' => 'French (France)', 'mk' => 'FYRO Macedonian', 'gd' => 'Gaelic', 'ka' => 'Georgian', 'de-at' => 'German (Austria)', 'de-li' => 'German (Liechtenstein)', 'de-lu' => 'German (Luxembourg)', 'de-ch' => 'German (Switzerland)', 'de-de' => 'German (Germany)', 'de' => 'German (Germany)', 'el' => 'Greek', 'gu' => 'Gujarati', 'he' => 'Hebrew', 'hi' => 'Hindi', 'hu' => 'Hungarian', 'is' => 'Icelandic', 'id' => 'Indonesian', 'it-ch' => 'Italian (Switzerland)', 'it' => 'Italian (Italy)', 'ja' => 'Japanese', 'kn' => 'Kannada', 'kk' => 'Kazakh', 'kok' => 'Konkani', 'ko' => 'Korean', 'kz' => 'Kyrgyz', 'lv' => 'Latvian', 'lt' => 'Lithuanian', 'ms' => 'Malay', 'ml' => 'Malayalam', 'mt' => 'Maltese', 'mr' => 'Marathi', 'mn' => 'Mongolian (Cyrillic)', 'ne' => 'Nepali (India)', 'nb-no' => 'Norwegian (Bokmal)', 'nn-no' => 'Norwegian (Nynorsk)', 'no' => 'Norwegian (Bokmal)', 'or' => 'Oriya', 'pl' => 'Polish', 'pt-br' => 'Portuguese (Brazil)', 'pt' => 'Portuguese (Portugal)', 'pa' => 'Punjabi', 'rm' => 'Rhaeto-Romanic', 'ro-md' => 'Romanian (Moldova)', 'ro' => 'Romanian', 'ru-md' => 'Russian (Moldova)', 'ru' => 'Russian', 'sa' => 'Sanskrit', 'sr' => 'Serbian', 'sk' => 'Slovak', 'ls' => 'Slovenian', 'sb' => 'Sorbian', 'es-ar' => 'Spanish (Argentina)', 'es-bo' => 'Spanish (Bolivia)', 'es-cl' => 'Spanish (Chile)', 'es-co' => 'Spanish (Colombia)', 'es-cr' => 'Spanish (Costa Rica)', 'es-do' => 'Spanish (Dominican Republic)', 'es-ec' => 'Spanish (Ecuador)', 'es-sv' => 'Spanish (El Salvador)', 'es-gt' => 'Spanish (Guatemala)', 'es-hn' => 'Spanish (Honduras)', 'es-mx' => 'Spanish (Mexico)', 'es-ni' => 'Spanish (Nicaragua)', 'es-pa' => 'Spanish (Panama)', 'es-py' => 'Spanish (Paraguay)', 'es-pe' => 'Spanish (Peru)', 'es-pr' => 'Spanish (Puerto Rico)', 'es-us' => 'Spanish (United States)', 'es-uy' => 'Spanish (Uruguay)', 'es-ve' => 'Spanish (Venezuela)', 'es' => 'Spanish (Traditional Sort)', 'sx' => 'Sutu', 'sw' => 'Swahili', 'sv-fi' => 'Swedish (Finland)', 'sv' => 'Swedish', 'syr' => 'Syriac', 'ta' => 'Tamil', 'tt' => 'Tatar', 'te' => 'Telugu', 'th' => 'Thai', 'ts' => 'Tsonga', 'tn' => 'Tswana', 'tr' => 'Turkish', 'uk' => 'Ukrainian', 'ur' => 'Urdu', 'uz' => 'Uzbek', 'vi' => 'Vietnamese', 'xh' => 'Xhosa', 'yi' => 'Yiddish', 'zu' => 'Zulu' ); return $a_languages; } function convert_browser_language($lang) { if (!$lang) { return FALSE; } switch ($lang) { default: $is = "en"; break; case "de": case "ch": case "at": $is = "de"; break; } return $is; } /** * File: Browser.php * Author: Chris Schuld (http://chrisschuld.com/) * Last Modified: August 20th, 2010 * @version 1.9 * @package PegasusPHP * * Copyright (C) 2008-2010 Chris Schuld (chris@chrisschuld.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details at: * http://www.gnu.org/copyleft/gpl.html * * * Typical Usage: * * $browser = new Browser(); * if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) { * echo 'You have FireFox version 2 or greater'; * } * * User Agents Sampled from: http://www.useragentstring.com/ * * This implementation is based on the original work from Gary White * http://apptools.com/phptools/browser/ * * UPDATES: * * 2010-08-20 (v1.9): * + Added MSN Explorer Browser (legacy) * + Added Bing/MSN Robot (Thanks Rob MacDonald) * + Added the Android Platform (PLATFORM_ANDROID) * + Fixed issue with Android 1.6/2.2 (Thanks Tom Hirashima) * * 2010-04-27 (v1.8): * + Added iPad Support * * 2010-03-07 (v1.7): * + *MAJOR* Rebuild (preg_match and other "slow" routine removal(s)) * + Almost allof Gary's original code has been replaced * + Large PHPUNIT testing environment created to validate new releases and additions * + Added FreeBSD Platform * + Added OpenBSD Platform * + Added NetBSD Platform * + Added SunOS Platform * + Added OpenSolaris Platform * + Added support of the Iceweazel Browser * + Added isChromeFrame() call to check if chromeframe is in use * + Moved the Opera check in front of the Firefox check due to legacy Opera User Agents * + Added the __toString() method (Thanks Deano) * * 2009-11-15: * + Updated the checkes for Firefox * + Added the NOKIA platform * + Added Checks for the NOKIA brower(s) * * 2009-11-08: * + PHP 5.3 Support * + Added support for BlackBerry OS and BlackBerry browser * + Added support for the Opera Mini browser * + Added additional documenation * + Added support for isRobot() and isMobile() * + Added support for Opera version 10 * + Added support for deprecated Netscape Navigator version 9 * + Added support for IceCat * + Added support for Shiretoko * * 2010-04-27 (v1.8): * + Added iPad Support * * 2009-08-18: * + Updated to support PHP 5.3 - removed all deprecated function calls * + Updated to remove all double quotes (") -- converted to single quotes (') * * 2009-04-27: * + Updated the IE check to remove a typo and bug (thanks John) * * 2009-04-22: * + Added detection for GoogleBot * + Added detection for the W3C Validator. * + Added detection for Yahoo! Slurp * * 2009-03-14: * + Added detection for iPods. * + Added Platform detection for iPhones * + Added Platform detection for iPods * * 2009-02-16: (Rick Hale) * + Added version detection for Android phones. * * 2008-12-09: * + Removed unused constant * * 2008-11-07: * + Added Google's Chrome to the detection list * + Added isBrowser(string) to the list of functions special thanks to * Daniel 'mavrick' Lang for the function concept (http://mavrick.id.au) * * * Gary White noted: "Since browser detection is so unreliable, I am * no longer maintaining this script. You are free to use and or * modify/update it as you want, however the author assumes no * responsibility for the accuracy of the detected values." * * Anyone experienced with Gary's script might be interested in these notes: * * Added class constants * Added detection and version detection for Google's Chrome * Updated the version detection for Amaya * Updated the version detection for Firefox * Updated the version detection for Lynx * Updated the version detection for WebTV * Updated the version detection for NetPositive * Updated the version detection for IE * Updated the version detection for OmniWeb * Updated the version detection for iCab * Updated the version detection for Safari * Updated Safari to remove mobile devices (iPhone) * Added detection for iPhone * Added detection for robots * Added detection for mobile devices * Added detection for BlackBerry * Removed Netscape checks (matches heavily with firefox & mozilla) * */ class Browser { private $_agent = ''; private $_browser_name = ''; private $_version = ''; private $_platform = ''; private $_os = ''; private $_is_aol = false; private $_is_mobile = false; private $_is_robot = false; private $_aol_version = ''; const BROWSER_UNKNOWN = 'unknown'; const VERSION_UNKNOWN = 'unknown'; const BROWSER_OPERA = 'Opera'; // http://www.opera.com/ const BROWSER_OPERA_MINI = 'Opera Mini'; // http://www.opera.com/mini/ const BROWSER_WEBTV = 'WebTV'; // http://www.webtv.net/pc/ const BROWSER_IE = 'Internet Explorer'; // http://www.microsoft.com/ie/ const BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // http://en.wikipedia.org/wiki/Internet_Explorer_Mobile const BROWSER_KONQUEROR = 'Konqueror'; // http://www.konqueror.org/ const BROWSER_ICAB = 'iCab'; // http://www.icab.de/ const BROWSER_OMNIWEB = 'OmniWeb'; // http://www.omnigroup.com/applications/omniweb/ const BROWSER_FIREBIRD = 'Firebird'; // http://www.ibphoenix.com/ const BROWSER_FIREFOX = 'Firefox'; // http://www.mozilla.com/en-US/firefox/firefox.html const BROWSER_ICEWEASEL = 'Iceweasel'; // http://www.geticeweasel.org/ const BROWSER_SHIRETOKO = 'Shiretoko'; // http://wiki.mozilla.org/Projects/shiretoko const BROWSER_MOZILLA = 'Mozilla'; // http://www.mozilla.com/en-US/ const BROWSER_AMAYA = 'Amaya'; // http://www.w3.org/Amaya/ const BROWSER_LYNX = 'Lynx'; // http://en.wikipedia.org/wiki/Lynx const BROWSER_SAFARI = 'Safari'; // http://apple.com const BROWSER_IPHONE = 'iPhone'; // http://apple.com const BROWSER_IPOD = 'iPod'; // http://apple.com const BROWSER_IPAD = 'iPad'; // http://apple.com const BROWSER_CHROME = 'Chrome'; // http://www.google.com/chrome const BROWSER_ANDROID = 'Android'; // http://www.android.com/ const BROWSER_GOOGLEBOT = 'GoogleBot'; // http://en.wikipedia.org/wiki/Googlebot const BROWSER_SLURP = 'Yahoo! Slurp'; // http://en.wikipedia.org/wiki/Yahoo!_Slurp const BROWSER_W3CVALIDATOR = 'W3C Validator'; // http://validator.w3.org/ const BROWSER_BLACKBERRY = 'BlackBerry'; // http://www.blackberry.com/ const BROWSER_ICECAT = 'IceCat'; // http://en.wikipedia.org/wiki/GNU_IceCat const BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // http://en.wikipedia.org/wiki/Web_Browser_for_S60 const BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform const BROWSER_MSN = 'MSN Browser'; // http://explorer.msn.com/ const BROWSER_MSNBOT = 'MSN Bot'; // http://search.msn.com/msnbot.htm // http://en.wikipedia.org/wiki/Msnbot (used for Bing as well) const BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // http://browser.netscape.com/ (DEPRECATED) const BROWSER_GALEON = 'Galeon'; // http://galeon.sourceforge.net/ (DEPRECATED) const BROWSER_NETPOSITIVE = 'NetPositive'; // http://en.wikipedia.org/wiki/NetPositive (DEPRECATED) const BROWSER_PHOENIX = 'Phoenix'; // http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED) const PLATFORM_UNKNOWN = 'unknown'; const PLATFORM_WINDOWS = 'Windows'; const PLATFORM_WINDOWS_CE = 'Windows CE'; const PLATFORM_APPLE = 'Apple'; const PLATFORM_LINUX = 'Linux'; const PLATFORM_OS2 = 'OS/2'; const PLATFORM_BEOS = 'BeOS'; const PLATFORM_IPHONE = 'iPhone'; const PLATFORM_IPOD = 'iPod'; const PLATFORM_IPAD = 'iPad'; const PLATFORM_BLACKBERRY = 'BlackBerry'; const PLATFORM_NOKIA = 'Nokia'; const PLATFORM_FREEBSD = 'FreeBSD'; const PLATFORM_OPENBSD = 'OpenBSD'; const PLATFORM_NETBSD = 'NetBSD'; const PLATFORM_SUNOS = 'SunOS'; const PLATFORM_OPENSOLARIS = 'OpenSolaris'; const PLATFORM_ANDROID = 'Android'; const OPERATING_SYSTEM_UNKNOWN = 'unknown'; public function Browser($useragent="") { $this->reset(); if( $useragent != "" ) { $this->setUserAgent($useragent); } else { $this->determine(); } } /** * Reset all properties */ public function reset() { $this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""; $this->_browser_name = self::BROWSER_UNKNOWN; $this->_version = self::VERSION_UNKNOWN; $this->_platform = self::PLATFORM_UNKNOWN; $this->_os = self::OPERATING_SYSTEM_UNKNOWN; $this->_is_aol = false; $this->_is_mobile = false; $this->_is_robot = false; $this->_aol_version = self::VERSION_UNKNOWN; } /** * Check to see if the specific browser is valid * @param string $browserName * @return True if the browser is the specified browser */ function isBrowser($browserName) { return( 0 == strcasecmp($this->_browser_name, trim($browserName))); } /** * The name of the browser. All return types are from the class contants * @return string Name of the browser */ public function getBrowser() { return $this->_browser_name; } /** * Set the name of the browser * @param $browser The name of the Browser */ public function setBrowser($browser) { return $this->_browser_name = $browser; } /** * The name of the platform. All return types are from the class contants * @return string Name of the browser */ public function getPlatform() { return $this->_platform; } /** * Set the name of the platform * @param $platform The name of the Platform */ public function setPlatform($platform) { return $this->_platform = $platform; } /** * The version of the browser. * @return string Version of the browser (will only contain alpha-numeric characters and a period) */ public function getVersion() { return $this->_version; } /** * Set the version of the browser * @param $version The version of the Browser */ public function setVersion($version) { $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/','',$version); } /** * The version of AOL. * @return string Version of AOL (will only contain alpha-numeric characters and a period) */ public function getAolVersion() { return $this->_aol_version; } /** * Set the version of AOL * @param $version The version of AOL */ public function setAolVersion($version) { $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/','',$version); } /** * Is the browser from AOL? * @return boolean True if the browser is from AOL otherwise false */ public function isAol() { return $this->_is_aol; } /** * Is the browser from a mobile device? * @return boolean True if the browser is from a mobile device otherwise false */ public function isMobile() { return $this->_is_mobile; } /** * Is the browser from a robot (ex Slurp,GoogleBot)? * @return boolean True if the browser is from a robot otherwise false */ public function isRobot() { return $this->_is_robot; } /** * Set the browser to be from AOL * @param $isAol */ public function setAol($isAol) { $this->_is_aol = $isAol; } /** * Set the Browser to be mobile * @param boolean $value is the browser a mobile brower or not */ protected function setMobile($value=true) { $this->_is_mobile = $value; } /** * Set the Browser to be a robot * @param boolean $value is the browser a robot or not */ protected function setRobot($value=true) { $this->_is_robot = $value; } /** * Get the user agent value in use to determine the browser * @return string The user agent from the HTTP header */ public function getUserAgent() { return $this->_agent; } /** * Set the user agent value (the construction will use the HTTP header value - this will overwrite it) * @param $agent_string The value for the User Agent */ public function setUserAgent($agent_string) { $this->reset(); $this->_agent = $agent_string; $this->determine(); } /** * Used to determine if the browser is actually "chromeframe" * @since 1.7 * @return boolean True if the browser is using chromeframe */ public function isChromeFrame() { return( strpos($this->_agent,"chromeframe") !== false ); } /** * Returns a formatted string with a summary of the details of the browser. * @return string formatted string with a summary of the browser */ public function __toString() { return "Browser Name:{$this->getBrowser()}
\n" . "Browser Version:{$this->getVersion()}
\n" . "Browser User Agent String:{$this->getUserAgent()}
\n" . "Platform:{$this->getPlatform()}
"; } /** * Protected routine to calculate and determine what the browser is in use (including platform) */ protected function determine() { $this->checkPlatform(); $this->checkBrowsers(); $this->checkForAol(); } /** * Protected routine to determine the browser type * @return boolean True if the browser was detected otherwise false */ protected function checkBrowsers() { return ( // well-known, well-used // Special Notes: // (1) Opera must be checked before FireFox due to the odd // user agents used in some older versions of Opera // (2) WebTV is strapped onto Internet Explorer so we must // check for WebTV before IE // (3) (deprecated) Galeon is based on Firefox and needs to be // tested before Firefox is tested // (4) OmniWeb is based on Safari so OmniWeb check must occur // before Safari // (5) Netscape 9+ is based on Firefox so Netscape checks // before FireFox are necessary $this->checkBrowserWebTv() || $this->checkBrowserInternetExplorer() || $this->checkBrowserOpera() || $this->checkBrowserGaleon() || $this->checkBrowserNetscapeNavigator9Plus() || $this->checkBrowserFirefox() || $this->checkBrowserChrome() || $this->checkBrowserOmniWeb() || // common mobile $this->checkBrowserAndroid() || $this->checkBrowseriPad() || $this->checkBrowseriPod() || $this->checkBrowseriPhone() || $this->checkBrowserBlackBerry() || $this->checkBrowserNokia() || // common bots $this->checkBrowserGoogleBot() || $this->checkBrowserMSNBot() || $this->checkBrowserSlurp() || // WebKit base check (post mobile and others) $this->checkBrowserSafari() || // everyone else $this->checkBrowserNetPositive() || $this->checkBrowserFirebird() || $this->checkBrowserKonqueror() || $this->checkBrowserIcab() || $this->checkBrowserPhoenix() || $this->checkBrowserAmaya() || $this->checkBrowserLynx() || $this->checkBrowserShiretoko() || $this->checkBrowserIceCat() || $this->checkBrowserW3CValidator() || $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */ ); } /** * Determine if the user is using a BlackBerry (last updated 1.7) * @return boolean True if the browser is the BlackBerry browser otherwise false */ protected function checkBrowserBlackBerry() { if( stripos($this->_agent,'blackberry') !== false ) { $aresult = explode("/",stristr($this->_agent,"BlackBerry")); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_BLACKBERRY; $this->setMobile(true); return true; } return false; } /** * Determine if the user is using an AOL User Agent (last updated 1.7) * @return boolean True if the browser is from AOL otherwise false */ protected function checkForAol() { $this->setAol(false); $this->setAolVersion(self::VERSION_UNKNOWN); if( stripos($this->_agent,'aol') !== false ) { $aversion = explode(' ',stristr($this->_agent, 'AOL')); $this->setAol(true); $this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1])); return true; } return false; } /** * Determine if the browser is the GoogleBot or not (last updated 1.7) * @return boolean True if the browser is the GoogletBot otherwise false */ protected function checkBrowserGoogleBot() { if( stripos($this->_agent,'googlebot') !== false ) { $aresult = explode('/',stristr($this->_agent,'googlebot')); $aversion = explode(' ',$aresult[1]); $this->setVersion(str_replace(';','',$aversion[0])); $this->_browser_name = self::BROWSER_GOOGLEBOT; $this->setRobot(true); return true; } return false; } /** * Determine if the browser is the MSNBot or not (last updated 1.9) * @return boolean True if the browser is the MSNBot otherwise false */ protected function checkBrowserMSNBot() { if( stripos($this->_agent,"msnbot") !== false ) { $aresult = explode("/",stristr($this->_agent,"msnbot")); $aversion = explode(" ",$aresult[1]); $this->setVersion(str_replace(";","",$aversion[0])); $this->_browser_name = self::BROWSER_MSNBOT; $this->setRobot(true); return true; } return false; } /** * Determine if the browser is the W3C Validator or not (last updated 1.7) * @return boolean True if the browser is the W3C Validator otherwise false */ protected function checkBrowserW3CValidator() { if( stripos($this->_agent,'W3C-checklink') !== false ) { $aresult = explode('/',stristr($this->_agent,'W3C-checklink')); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_W3CVALIDATOR; return true; } else if( stripos($this->_agent,'W3C_Validator') !== false ) { // Some of the Validator versions do not delineate w/ a slash - add it back in $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent); $aresult = explode('/',stristr($ua,'W3C_Validator')); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_W3CVALIDATOR; return true; } return false; } /** * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7) * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false */ protected function checkBrowserSlurp() { if( stripos($this->_agent,'slurp') !== false ) { $aresult = explode('/',stristr($this->_agent,'Slurp')); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_SLURP; $this->setRobot(true); $this->setMobile(false); return true; } return false; } /** * Determine if the browser is Internet Explorer or not (last updated 1.7) * @return boolean True if the browser is Internet Explorer otherwise false */ protected function checkBrowserInternetExplorer() { // Test for v1 - v1.5 IE if( stripos($this->_agent,'microsoft internet explorer') !== false ) { $this->setBrowser(self::BROWSER_IE); $this->setVersion('1.0'); $aresult = stristr($this->_agent, '/'); if( preg_match('/308|425|426|474|0b1/i', $aresult) ) { $this->setVersion('1.5'); } return true; } // Test for versions > 1.5 else if( stripos($this->_agent,'msie') !== false && stripos($this->_agent,'opera') === false ) { // See if the browser is the odd MSN Explorer if( stripos($this->_agent,'msnb') !== false ) { $aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'MSN')); $this->setBrowser( self::BROWSER_MSN ); $this->setVersion(str_replace(array('(',')',';'),'',$aresult[1])); return true; } $aresult = explode(' ',stristr(str_replace(';','; ',$this->_agent),'msie')); $this->setBrowser( self::BROWSER_IE ); $this->setVersion(str_replace(array('(',')',';'),'',$aresult[1])); return true; } // Test for Pocket IE else if( stripos($this->_agent,'mspie') !== false || stripos($this->_agent,'pocket') !== false ) { $aresult = explode(' ',stristr($this->_agent,'mspie')); $this->setPlatform( self::PLATFORM_WINDOWS_CE ); $this->setBrowser( self::BROWSER_POCKET_IE ); $this->setMobile(true); if( stripos($this->_agent,'mspie') !== false ) { $this->setVersion($aresult[1]); } else { $aversion = explode('/',$this->_agent); $this->setVersion($aversion[1]); } return true; } return false; } /** * Determine if the browser is Opera or not (last updated 1.7) * @return boolean True if the browser is Opera otherwise false */ protected function checkBrowserOpera() { if( stripos($this->_agent,'opera mini') !== false ) { $resultant = stristr($this->_agent, 'opera mini'); if( preg_match('/\//',$resultant) ) { $aresult = explode('/',$resultant); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); } else { $aversion = explode(' ',stristr($resultant,'opera mini')); $this->setVersion($aversion[1]); } $this->_browser_name = self::BROWSER_OPERA_MINI; $this->setMobile(true); return true; } else if( stripos($this->_agent,'opera') !== false ) { $resultant = stristr($this->_agent, 'opera'); if( preg_match('/Version\/(10.*)$/',$resultant,$matches) ) { $this->setVersion($matches[1]); } else if( preg_match('/\//',$resultant) ) { $aresult = explode('/',str_replace("("," ",$resultant)); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); } else { $aversion = explode(' ',stristr($resultant,'opera')); $this->setVersion(isset($aversion[1])?$aversion[1]:""); } $this->_browser_name = self::BROWSER_OPERA; return true; } return false; } /** * Determine if the browser is Chrome or not (last updated 1.7) * @return boolean True if the browser is Chrome otherwise false */ protected function checkBrowserChrome() { if( stripos($this->_agent,'Chrome') !== false ) { $aresult = explode('/',stristr($this->_agent,'Chrome')); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_CHROME); return true; } return false; } /** * Determine if the browser is WebTv or not (last updated 1.7) * @return boolean True if the browser is WebTv otherwise false */ protected function checkBrowserWebTv() { if( stripos($this->_agent,'webtv') !== false ) { $aresult = explode('/',stristr($this->_agent,'webtv')); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_WEBTV); return true; } return false; } /** * Determine if the browser is NetPositive or not (last updated 1.7) * @return boolean True if the browser is NetPositive otherwise false */ protected function checkBrowserNetPositive() { if( stripos($this->_agent,'NetPositive') !== false ) { $aresult = explode('/',stristr($this->_agent,'NetPositive')); $aversion = explode(' ',$aresult[1]); $this->setVersion(str_replace(array('(',')',';'),'',$aversion[0])); $this->setBrowser(self::BROWSER_NETPOSITIVE); return true; } return false; } /** * Determine if the browser is Galeon or not (last updated 1.7) * @return boolean True if the browser is Galeon otherwise false */ protected function checkBrowserGaleon() { if( stripos($this->_agent,'galeon') !== false ) { $aresult = explode(' ',stristr($this->_agent,'galeon')); $aversion = explode('/',$aresult[0]); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_GALEON); return true; } return false; } /** * Determine if the browser is Konqueror or not (last updated 1.7) * @return boolean True if the browser is Konqueror otherwise false */ protected function checkBrowserKonqueror() { if( stripos($this->_agent,'Konqueror') !== false ) { $aresult = explode(' ',stristr($this->_agent,'Konqueror')); $aversion = explode('/',$aresult[0]); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_KONQUEROR); return true; } return false; } /** * Determine if the browser is iCab or not (last updated 1.7) * @return boolean True if the browser is iCab otherwise false */ protected function checkBrowserIcab() { if( stripos($this->_agent,'icab') !== false ) { $aversion = explode(' ',stristr(str_replace('/',' ',$this->_agent),'icab')); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_ICAB); return true; } return false; } /** * Determine if the browser is OmniWeb or not (last updated 1.7) * @return boolean True if the browser is OmniWeb otherwise false */ protected function checkBrowserOmniWeb() { if( stripos($this->_agent,'omniweb') !== false ) { $aresult = explode('/',stristr($this->_agent,'omniweb')); $aversion = explode(' ',isset($aresult[1])?$aresult[1]:""); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_OMNIWEB); return true; } return false; } /** * Determine if the browser is Phoenix or not (last updated 1.7) * @return boolean True if the browser is Phoenix otherwise false */ protected function checkBrowserPhoenix() { if( stripos($this->_agent,'Phoenix') !== false ) { $aversion = explode('/',stristr($this->_agent,'Phoenix')); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_PHOENIX); return true; } return false; } /** * Determine if the browser is Firebird or not (last updated 1.7) * @return boolean True if the browser is Firebird otherwise false */ protected function checkBrowserFirebird() { if( stripos($this->_agent,'Firebird') !== false ) { $aversion = explode('/',stristr($this->_agent,'Firebird')); $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_FIREBIRD); return true; } return false; } /** * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7) * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008) * @return boolean True if the browser is Netscape Navigator 9+ otherwise false */ protected function checkBrowserNetscapeNavigator9Plus() { if( stripos($this->_agent,'Firefox') !== false && preg_match('/Navigator\/([^ ]*)/i',$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); return true; } else if( stripos($this->_agent,'Firefox') === false && preg_match('/Netscape6?\/([^ ]*)/i',$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); return true; } return false; } /** * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7) * @return boolean True if the browser is Shiretoko otherwise false */ protected function checkBrowserShiretoko() { if( stripos($this->_agent,'Mozilla') !== false && preg_match('/Shiretoko\/([^ ]*)/i',$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_SHIRETOKO); return true; } return false; } /** * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7) * @return boolean True if the browser is Ice Cat otherwise false */ protected function checkBrowserIceCat() { if( stripos($this->_agent,'Mozilla') !== false && preg_match('/IceCat\/([^ ]*)/i',$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_ICECAT); return true; } return false; } /** * Determine if the browser is Nokia or not (last updated 1.7) * @return boolean True if the browser is Nokia otherwise false */ protected function checkBrowserNokia() { if( preg_match("/Nokia([^\/]+)\/([^ SP]+)/i",$this->_agent,$matches) ) { $this->setVersion($matches[2]); if( stripos($this->_agent,'Series60') !== false || strpos($this->_agent,'S60') !== false ) { $this->setBrowser(self::BROWSER_NOKIA_S60); } else { $this->setBrowser( self::BROWSER_NOKIA ); } $this->setMobile(true); return true; } return false; } /** * Determine if the browser is Firefox or not (last updated 1.7) * @return boolean True if the browser is Firefox otherwise false */ protected function checkBrowserFirefox() { if( stripos($this->_agent,'safari') === false ) { if( preg_match("/Firefox[\/ \(]([^ ;\)]+)/i",$this->_agent,$matches) ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_FIREFOX); return true; } else if( preg_match("/Firefox$/i",$this->_agent,$matches) ) { $this->setVersion(""); $this->setBrowser(self::BROWSER_FIREFOX); return true; } } return false; } /** * Determine if the browser is Firefox or not (last updated 1.7) * @return boolean True if the browser is Firefox otherwise false */ protected function checkBrowserIceweasel() { if( stripos($this->_agent,'Iceweasel') !== false ) { $aresult = explode('/',stristr($this->_agent,'Iceweasel')); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_ICEWEASEL); return true; } return false; } /** * Determine if the browser is Mozilla or not (last updated 1.7) * @return boolean True if the browser is Mozilla otherwise false */ protected function checkBrowserMozilla() { if( stripos($this->_agent,'mozilla') !== false && preg_match('/rv:[0-9].[0-9][a-b]?/i',$this->_agent) && stripos($this->_agent,'netscape') === false) { $aversion = explode(' ',stristr($this->_agent,'rv:')); preg_match('/rv:[0-9].[0-9][a-b]?/i',$this->_agent,$aversion); $this->setVersion(str_replace('rv:','',$aversion[0])); $this->setBrowser(self::BROWSER_MOZILLA); return true; } else if( stripos($this->_agent,'mozilla') !== false && preg_match('/rv:[0-9]\.[0-9]/i',$this->_agent) && stripos($this->_agent,'netscape') === false ) { $aversion = explode('',stristr($this->_agent,'rv:')); $this->setVersion(str_replace('rv:','',$aversion[0])); $this->setBrowser(self::BROWSER_MOZILLA); return true; } else if( stripos($this->_agent,'mozilla') !== false && preg_match('/mozilla\/([^ ]*)/i',$this->_agent,$matches) && stripos($this->_agent,'netscape') === false ) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_MOZILLA); return true; } return false; } /** * Determine if the browser is Lynx or not (last updated 1.7) * @return boolean True if the browser is Lynx otherwise false */ protected function checkBrowserLynx() { if( stripos($this->_agent,'lynx') !== false ) { $aresult = explode('/',stristr($this->_agent,'Lynx')); $aversion = explode(' ',(isset($aresult[1])?$aresult[1]:"")); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_LYNX); return true; } return false; } /** * Determine if the browser is Amaya or not (last updated 1.7) * @return boolean True if the browser is Amaya otherwise false */ protected function checkBrowserAmaya() { if( stripos($this->_agent,'amaya') !== false ) { $aresult = explode('/',stristr($this->_agent,'Amaya')); $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_AMAYA); return true; } return false; } /** * Determine if the browser is Safari or not (last updated 1.7) * @return boolean True if the browser is Safari otherwise false */ protected function checkBrowserSafari() { if( stripos($this->_agent,'Safari') !== false && stripos($this->_agent,'iPhone') === false && stripos($this->_agent,'iPod') === false ) { $aresult = explode('/',stristr($this->_agent,'Version')); if( isset($aresult[1]) ) { $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setBrowser(self::BROWSER_SAFARI); return true; } return false; } /** * Determine if the browser is iPhone or not (last updated 1.7) * @return boolean True if the browser is iPhone otherwise false */ protected function checkBrowseriPhone() { if( stripos($this->_agent,'iPhone') !== false ) { $aresult = explode('/',stristr($this->_agent,'Version')); if( isset($aresult[1]) ) { $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setMobile(true); $this->setBrowser(self::BROWSER_IPHONE); return true; } return false; } /** * Determine if the browser is iPod or not (last updated 1.7) * @return boolean True if the browser is iPod otherwise false */ protected function checkBrowseriPad() { if( stripos($this->_agent,'iPad') !== false ) { $aresult = explode('/',stristr($this->_agent,'Version')); if( isset($aresult[1]) ) { $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setMobile(true); $this->setBrowser(self::BROWSER_IPAD); return true; } return false; } /** * Determine if the browser is iPod or not (last updated 1.7) * @return boolean True if the browser is iPod otherwise false */ protected function checkBrowseriPod() { if( stripos($this->_agent,'iPod') !== false ) { $aresult = explode('/',stristr($this->_agent,'Version')); if( isset($aresult[1]) ) { $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setMobile(true); $this->setBrowser(self::BROWSER_IPOD); return true; } return false; } /** * Determine if the browser is Android or not (last updated 1.7) * @return boolean True if the browser is Android otherwise false */ protected function checkBrowserAndroid() { if( stripos($this->_agent,'Android') !== false ) { $aresult = explode(' ',stristr($this->_agent,'Android')); if( isset($aresult[1]) ) { $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setMobile(true); $this->setBrowser(self::BROWSER_ANDROID); return true; } return false; } /** * Determine the user's platform (last updated 1.7) */ protected function checkPlatform() { if( stripos($this->_agent, 'windows') !== false ) { $this->_platform = self::PLATFORM_WINDOWS; } else if( stripos($this->_agent, 'iPad') !== false ) { $this->_platform = self::PLATFORM_IPAD; } else if( stripos($this->_agent, 'iPod') !== false ) { $this->_platform = self::PLATFORM_IPOD; } else if( stripos($this->_agent, 'iPhone') !== false ) { $this->_platform = self::PLATFORM_IPHONE; } elseif( stripos($this->_agent, 'mac') !== false ) { $this->_platform = self::PLATFORM_APPLE; } elseif( stripos($this->_agent, 'android') !== false ) { $this->_platform = self::PLATFORM_ANDROID; } elseif( stripos($this->_agent, 'linux') !== false ) { $this->_platform = self::PLATFORM_LINUX; } else if( stripos($this->_agent, 'Nokia') !== false ) { $this->_platform = self::PLATFORM_NOKIA; } else if( stripos($this->_agent, 'BlackBerry') !== false ) { $this->_platform = self::PLATFORM_BLACKBERRY; } elseif( stripos($this->_agent,'FreeBSD') !== false ) { $this->_platform = self::PLATFORM_FREEBSD; } elseif( stripos($this->_agent,'OpenBSD') !== false ) { $this->_platform = self::PLATFORM_OPENBSD; } elseif( stripos($this->_agent,'NetBSD') !== false ) { $this->_platform = self::PLATFORM_NETBSD; } elseif( stripos($this->_agent, 'OpenSolaris') !== false ) { $this->_platform = self::PLATFORM_OPENSOLARIS; } elseif( stripos($this->_agent, 'SunOS') !== false ) { $this->_platform = self::PLATFORM_SUNOS; } elseif( stripos($this->_agent, 'OS\/2') !== false ) { $this->_platform = self::PLATFORM_OS2; } elseif( stripos($this->_agent, 'BeOS') !== false ) { $this->_platform = self::PLATFORM_BEOS; } elseif( stripos($this->_agent, 'win') !== false ) { $this->_platform = self::PLATFORM_WINDOWS; } } } function get_navigation_main($lang,$area,$portal=NULL,$login=NULL) { $content = array(); $sql = "SELECT name,url,target,url_target,header,template,portal,active FROM public_navigation_main WHERE lang = '".$lang."' AND area = '".$area."'"; if ($_SESSION['login'] == "active") { $sql .= " AND adminfunction = '0'"; } else { $sql .= " AND active = '1'"; } $sql .= " ORDER BY sort"; $query = mysql_query($sql); while ($data = mysql_fetch_array($query)) { $content[$data['url']] = array($data['name'],$data['header'],$data['template'],$data['portal'],$data['active'],$data['target'],$data['url_target']); } return $content; } function get_navigation_sub($lang,$area,$subarea="top",$portal=NULL) { if ((!$lang) or (!$area)) { return FALSE; } $content = array(); $sql2 = "SELECT name,url,target,url_target,header,template,active FROM public_navigation_sub WHERE unique_id_main = (SELECT unique_id FROM public_navigation_main WHERE url = '".$area."' AND area = '".$subarea."' AND lang='".$lang."'"; if ($_SESSION['login'] == "active") { $sql2 .= " AND adminfunction = '0'"; } else { $sql2 .= " AND active = '1'"; } $sql2 .= " LIMIT 1) AND lang='".$lang."'"; if ($_SESSION['login'] == "active") { $sql2 .= " AND adminfunction = '0'"; } else { $sql2 .= " AND active = '1'"; } $sql2 .= " ORDER BY sort"; $query2 = mysql_query($sql2); if (mysql_affected_rows() >= 1) { while ($data2 = mysql_fetch_array($query2)) { $content[$data2['url']] = array($area,$data2['url'],$data2['name'],$data2['header'],$data2['template'],$data2['active'],$data2['target'],$data2['url_target']); } } if (count($content) >= 1) { return $content; } return FALSE; } function get_navigation_sub_sub($lang,$area,$subarea,$portal=NULL) { if ((!$lang) or (!$area) or (!$subarea)) { return FALSE; } $content = array(); $sql2 = "SELECT name,url,header,template,active FROM public_navigation_sub_sub WHERE unique_id_sub = (SELECT unique_id FROM public_navigation_sub WHERE url = '".$subarea."' AND lang='".$lang."'"; if ($_SESSION['login'] == "active") { $sql2 .= " AND adminfunction = '0'"; } else { $sql2 .= " AND active = '1'"; } $sql2 .= " AND unique_id_main = (SELECT unique_id FROM public_navigation_main WHERE url = '".$area."' AND lang = '".$lang."'"; if ($_SESSION['login'] == "active") { $sql2 .= " AND adminfunction = '0'"; } else { $sql2 .= " AND active = '1'"; } $sql2 .= " LIMIT 1) LIMIT 1) AND lang='".$lang."'"; if ($_SESSION['login'] == "active") { $sql2 .= " AND adminfunction = '0'"; } else { $sql2 .= " AND active = '1'"; } $sql2 .= " ORDER BY sort"; $query2 = mysql_query($sql2); $countt = mysql_affected_rows(); if ($countt >= 1) { while ($data2 = mysql_fetch_array($query2)) { $content[$data2['url']] = array($area,$data2['url'],$data2['name'],$data2['header'],$data2['template'],$data2['active']); } } if (count($content) >= 1) { return $content; } return FALSE; } function get_navigation_redirect($lang,$area) { $content = array(); if ($area == "main") { $sql = "SELECT redirect.unique_id_main,redirect.unique_id_sub,main.unique_id,main.url AS mainurl,sub.unique_id,sub.url AS suburl FROM public_navigation_redirect AS redirect, public_navigation_main AS main, public_navigation_sub AS sub WHERE main.unique_id = redirect.unique_id_main AND sub.unique_id = redirect.unique_id_sub AND main.lang = '".$lang."' AND sub.lang = '".$lang."' AND redirect.unique_id_sub_sub = '0'"; $query = mysql_query($sql); if (mysql_affected_rows() != 1) { $sql = "SELECT redirect.unique_id_main,redirect.unique_id_sub,main.unique_id,main.url AS mainurl,sub.unique_id,sub.url AS suburl FROM public_navigation_redirect AS redirect, public_navigation_main AS main, public_navigation_sub AS sub WHERE main.unique_id = redirect.unique_id_main AND sub.unique_id = redirect.unique_id_sub AND main.lang = '".$lang."' AND sub.lang = '".$lang."' AND redirect.unique_id_sub_sub = '0'"; $query = mysql_query($sql); } while ($data = mysql_fetch_array($query)) { $content[$data['mainurl']] = $data['suburl']; } return $content; } if ($area == "sub") { $sql = "SELECT redirect.unique_id_sub,redirect.unique_id_sub_sub,sub.unique_id,sub.url AS suburl,subsub.unique_id,subsub.url AS subsuburl FROM public_navigation_redirect AS redirect, public_navigation_sub AS sub, public_navigation_sub_sub AS subsub WHERE sub.unique_id = redirect.unique_id_sub AND subsub.unique_id = redirect.unique_id_sub_sub AND sub.lang = '".$lang."' AND subsub.lang = '".$lang."' AND redirect.unique_id_main = '0'"; $query = mysql_query($sql); while ($data = mysql_fetch_array($query)) { $content[$data['suburl']] = $data['subsuburl']; } return $content; } } function get_template($mainurl=NULL,$suburl=NULL,$subsuburl=NULL) { $content = array(); if (($mainurl != NULL) AND ($suburl != NULL) AND ($subsuburl != NULL)) { $sql = "SELECT templates.template AS template, templates.unique_id AS unique_id FROM public_navigation_templates AS templates WHERE templates.unique_id_main = (SELECT unique_id FROM public_navigation_main WHERE url = '".$mainurl."' LIMIT 1) AND templates.unique_id_sub = (SELECT unique_id FROM public_navigation_sub WHERE url = '".$suburl."' AND unique_id_main = (SELECT unique_id FROM public_navigation_main WHERE url = '".$mainurl."' LIMIT 1) LIMIT 1) AND templates.unique_id_sub_sub = (SELECT unique_id FROM public_navigation_sub_sub WHERE url = '".$subsuburl."' AND unique_id_sub = (SELECT unique_id FROM public_navigation_sub WHERE url = '".$suburl."' LIMIT 1) LIMIT 1)"; } if (($mainurl != NULL) AND ($suburl != NULL) AND ($subsuburl == NULL)) { $sql = "SELECT templates.template AS template, templates.unique_id AS unique_id FROM public_navigation_templates AS templates WHERE templates.unique_id_main = (SELECT unique_id FROM public_navigation_main WHERE url = '".$mainurl."' LIMIT 1) AND templates.unique_id_sub = (SELECT unique_id FROM public_navigation_sub WHERE url = '".$suburl."' AND unique_id_main = (SELECT unique_id FROM public_navigation_main WHERE url = '".$mainurl."' LIMIT 1) LIMIT 1) AND templates.unique_id_sub_sub = '0' LIMIT 1"; } if (($mainurl != NULL) AND ($suburl == NULL) AND ($subsuburl == NULL)) { $sql = "SELECT templates.template AS template, templates.unique_id AS unique_id FROM public_navigation_templates AS templates WHERE templates.unique_id_main = (SELECT unique_id FROM public_navigation_main WHERE url = '".$mainurl."' LIMIT 1) AND templates.unique_id_sub = '0' AND templates.unique_id_sub_sub = '0' LIMIT 1"; } $query = mysql_query($sql); $count = mysql_affected_rows(); //echo "count:".$count."
sql:".$sql."
error:". mysql_error()."
"; if ($count >= 1) { $data = mysql_fetch_array($query); return array($data['template'],$data['unique_id']); } } function get_image_data($path,$thumb,$large=NULL,$class=NULL,$alt=NULL,$ratio=16,$idtag=NULL,$imageurl=NULL,$code=NULL,$style=NULL) { if (file_exists($path.$thumb)) { $details = @getimagesize($path.$thumb); $width = @px2em($details[0],$ratio); $height = @px2em($details[1],$ratio); if ($class != NULL) { $class_insert = " class=\"".$class."\""; } if ($imageurl != NULL) { $master = "\"".$alt."\""; if ($large != NULL) { if (file_exists($path.$large)) { $master = "".$master.""; } } return $master; } else { return FALSE; } } function get_image_data_products($path,$thumb,$large=NULL,$class=NULL,$alt=NULL,$ratio=16,$idtag=NULL,$imageurl=NULL,$code=NULL,$style=NULL) { if (!file_exists($path.$thumb)) { $thumb = "ico_nopic_150_113.jpg"; $large = NULL; } //echo "path:".$path."#thumb:".$thumb."#large:".$large."#class:".$class."#alt:".$alt."#ratio:".$ratio."#idtag:".$idtag."#imageurl:".$imageurl."
"; $details = @getimagesize($path.$thumb); $width = @px2em($details[0],$ratio); $height = @px2em($details[1],$ratio); if ($class != NULL) { $class_insert = " class=\"".$class."\""; } if ($imageurl != NULL) { $master = "\"".$alt."\""; if ($large != NULL) { if (file_exists($path.$large)) { $master = "".$master.""; } } return $master; } function px2em($pixel,$ratio=16) { return round(((1/$ratio)*$pixel),3); } function get_countries() { $laender = array(); $sql = "SELECT country,iso2 FROM countries"; $query = mysql_query($sql); while ($data = mysql_fetch_array($query)) { $laender[$data['iso2']] = $data['country']; } return $laender; } function get_countrylist($id) { //echo "id: ".$id."
"; $laender = get_countries(); foreach ($laender as $iso => $land) { $laenderliste .= "\n