1. '; $source = strip_tags($source, $allowedTags); return preg_replace('/<(.*?)>/ie', "'<'.removeEvilAttributes('\\1').'>'", $source); } function superclean($html) { $html = removeEvilTags($html); /// /// Removes all FONT and SPAN tags, and all Class and Style attributes. /// Designed to get rid of non-standard Microsoft Word HTML tags. /// // start by completely removing all unwanted tags $html = ereg_replace("<(/)?(font|span|del|ins)[^>]*>","",$html); // then run another pass over the html (twice), removing unwanted attributes $html = ereg_replace("<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>","<\\1>",$html); //$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>","<\\1>",$html); return $html; } /* string closeOpenTags(string string [, string beginChar [, stringEndChar [, string CloseChar]]]); */ function closeOpenTags($str, $open = "<", $close = ">", $end = "/", $tokens = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") { $chars = array(); for ($i = 0; $i < strlen($tokens); $i++) { $chars[] = substr($tokens, $i, 1); } $openedTags = array(); $closedTags = array(); $tag = FALSE; $closeTag = FALSE; $tagName = ""; for ($i = 0; $i < strlen($str); $i++) { $char = substr($str, $i, 1); if ($char == $open) { $tag = TRUE; continue; } if ($char == $end) { $closeTag = TRUE; continue; } if ($tag && in_array($char, $chars)) { $tagName .= $char; } else { if ($closeTag) { if (isset($closedTags[$tagName])) { $closedTags[$tagName]++; } else { $closedTags[$tagName] = 1; } } elseif ($tag) { if (isset($openedTags[$tagName])) { $openedTags[$tagName]++; } else { $openedTags[$tagName] = 1; } } $tag = FALSE; $closeTag = FALSE; $tagName = ""; } } while(list($tag, $count) = each($openedTags)) { $closedTags[$tag] = isset($closedTags[$tag]) ? $closedTags[$tag] : 0; $count -= $closedTags[$tag]; if ($count < 1) continue; $str .= str_repeat($open.$end.$tag.$close, $count); } return $str; } function size_readable ($size, $retstring = null) { // adapted from code at http://aidanlister.com/repos/v/function.size_readable.php $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); if ($retstring === null) { $retstring = '%01.2f %s'; } $lastsizestring = end($sizes); foreach ($sizes as $sizestring) { if ($size < 1024) { break; } if ($sizestring != $lastsizestring) { $size /= 1024; } } if ($sizestring == $sizes[0]) { $retstring = '%01d %s'; } // Bytes aren't normally fractional return sprintf($retstring, $size, $sizestring); } function search_highlight($text,$searchstring){ $searchstring = stripslashes($searchstring); $searchstring = str_replace('"','',$searchstring); $searchstring = str_replace('+','',$searchstring); $searchstring = str_replace('-','',$searchstring); $searchstring = str_replace('*','',$searchstring); $text = str_replace("\n",' ',$text); $text = str_replace(' ','',$text); $ntext = explode('.',$text); $nsearchstring = array($searchstring); foreach($ntext as $key => $row){ foreach($nsearchstring as $ns){ //var_dump($ns); $ns = str_replace("\"",'',$ns); $row = str_replace($ns,''.$ns.'',$row,$cnt); if($cnt > 0){ $vrstica[$key]['text'] = $row; $vrstica[$key]['matches'] = $cnt; } } if($cnt == 0){ unset($nsearchstring); $nsearchstring = explode(' ',$searchstring); foreach($nsearchstring as $ns){ //var_dump($ns); $ns = str_replace("\"",'',$ns); $pattern = '~('.$ns.')~i'; $replace = ' ${1} '; $row = preg_replace($pattern,$replace,$row,-1,$cnt); if($cnt > 0){ $vrstica[$key]['text'] = $row; $vrstica[$key]['matches'] = $cnt; } } } } //var_dump($vrstica); if(!$vrstica) $vrstica = array(); $out['text'] = ''; $out['matches'] = ''; foreach($vrstica as $vr){ if($vr['matches'] > $out['matches']){ $out['matches'] = $vr['matches']; $out['text'] = $vr['text']; } } if(strlen($out['text']) > 300 ) { //var_dump(strlen($out['text'])); $out['text'] = substr($out['text'],0,300); } return $out['text'].'...'; } function str_to_upper($string) { $from_array = array('č', 'ž', 'š', 'đ', 'ć'); $to_array = array('Č', 'Ž', 'Š', 'Ð', 'Ć'); $string = str_replace($from_array,$to_array,$string); return strtoupper($string); } function make_array($cnt){ for($a = 0; $a < $cnt; $a++){ $out[$a] = $a; } return $out; } function makeup1($val, $type = ''){ if(is_string($val) && $type != "obj"){ return "'".htmlspecialchars($val)."'"; } else { if(is_bool($val) && $val == true) $val = 'TRUE'; if(is_bool($val) && $val == false) $val = 'FALSE'; return $val; } } function makeup2($val){ if(is_string($val)){ return "'".htmlspecialchars($val)."'"; } else { if(is_bool($val) && $val == true) $val = 'TRUE'; if(is_bool($val) && $val == false) $val = 'FALSE'; return "".$val.""; } } function xecho($val , $ip = false, $die = false){ if($_SERVER['REMOTE_ADDR'] == '84.255.206.218' || $_SERVER['REMOTE_ADDR'] == '213.143.74.179' || $_SERVER['REMOTE_ADDR'] == $ip){ echo($val); if($die){ die(); } } } function xvar_dump($val , $ip = false, $die = false){ if($_SERVER['REMOTE_ADDR'] == '84.255.206.218' || $_SERVER['REMOTE_ADDR'] == '213.143.74.179' || $_SERVER['REMOTE_ADDR'] == "92.37.126.26" || $_SERVER['REMOTE_ADDR'] == $ip){ avar_dumpx($val); if($die){ die(); } } } function avar_dumpx($val,$level = 0){ //echo $level; //print_r($val); if(!is_array($val) && !is_object($val)){ if(is_string($val)){ echo '
      '; echo "'".htmlspecialchars($val)."'"; echo '


      '; } else { echo '
      '; echo htmlspecialchars($val); echo '


      '; } } elseif(is_array($val)){ echo '
      Array
      '; foreach($val as $key => $value){ if(is_array($value)) { echo '
      '.makeup1($key) .'  =>  
      '; avar_dumpx($value, ($level+1)); } else{ echo '
      '.makeup1($key) .'  =>  '.makeup2($value).'
      '; } } $level++; echo '

      '; return; } elseif(is_object($val)){ echo '
      Object
      '; $val = (array)$val; foreach($val as $key => $value){ if(is_array($value)) { echo '
      '.makeup1($key, "obj") .'  =>  
      '; avar_dumpx($value, ($level+1)); } else{ echo '
      '.makeup1($key, "obj") .'  =>  '.makeup2($value).'
      '; } } $level++; echo '

      '; return; } else { echo "problem"; } return; } function avar_dump($val){ echo '
      '.avar_dumpx($val).'
      '; } /* Odstrani nevarne znake (injection chars) iz e-naslova */ function safeEmail($string) { return preg_replace( '((?:\n|\r|\t|%0A|%0D|%08|%09)+)i' , '', $string ); } /* Naredi malo slikico, datoteka slike, nova datoteka slike, nova sirina */ function save_smallpic($image, $newfile, $nwidth , $square = FALSE, $fit = 1, $bgcolor = '#FFFFFF', $brd_width = FALSE, $brd_colorx ="#FFFFFF", $brd_alpha=50){ /* parametri so vsi isti kot prej samo da nova funkcija sprejme še_ - $fit = 0; Pokropa sliko tako da zasede cel prostor - $fit = 1; Ne pokropa niè ampak zmanjša slikco tako da sede cela v dani prostor - $bgcolor; Nastavi barvo ozadja slike èe je slikica manjša od velikosti konène slike (famozni èrni rob bug) */ $size = @getimagesize($image); //var_dump($size); if($size[2] == 1) { // gif $im = @imagecreatefromgif($image); } elseif($size[2] == 2) { $im = @imagecreatefromjpeg($image); } elseif($size[2] == 3) { $im = @imagecreatefrompng($image); } imagealphablending($im,true); /* define background color */ $tmpcolor = str_replace('#','',$bgcolor); $color['r'] = hexdec(substr($tmpcolor,0,2)); $color['g'] = hexdec(substr($tmpcolor,2,2)); $color['b'] = hexdec(substr($tmpcolor,4,2)); $tmpbordercolor = str_replace('#','',$brd_colorx); $brd_color['r'] = hexdec(substr($tmpbordercolor,0,2)); $brd_color['g'] = hexdec(substr($tmpbordercolor,2,2)); $brd_color['b'] = hexdec(substr($tmpbordercolor,4,2)); /*----------------------------------------------*/ /* fiksna širina poljubna višina */ /* dolocime samo novi file, stari file in sirino */ if($square == FALSE){ $koef = $nwidth / $size[0]; $visina = $size[1] * $koef; $newimage=imagecreatetruecolor($nwidth,$visina); imagecopyresampled($newimage,$im,0,0,0,0,$nwidth,$visina,$size[0],$size[1]); } //------------------------------------------------*/ /* fiksna sirina in visina - sliko pokropa navzdol èe je višja od potrebnega*/ /* dolocimo novi file, stari file sirino i koeficient sirine */ if($square != FALSE ){ $koef = $size[1] / $size[0]; //var_dump($koef); $visina_podlaga = $nwidth * $square; /* kropanje sirine v primeru da slika ni v razmerju torej je preširoka torej njen koef je manjši od željenega koefa*/ if($fit == 0){ if($koef <= $square){ /* kropanje po sirini */ $visina_slikca = $visina_podlaga; $sirina_nova = $visina_slikca/$koef; $visina_nova = $visina_slikca; $pos_x = -(($sirina_nova - $nwidth)/2); } else { /* kropanje po visini */ $visina_slikca = ($nwidth * $koef); $sirina_nova = $nwidth; $visina_nova = $visina_slikca; $pos_x = 0; } } else { if($koef <= $square){ /* nastavi sirino da sede */ $visina_slikca = ($nwidth * $koef) * $fit; $sirina_nova = $nwidth * $fit; $visina_nova = $visina_slikca; $pos_x = ($nwidth - $sirina_nova)/2; } else { /* nastavi visino slikice da sede */ $visina_slikca = $visina_podlaga * $fit; $sirina_nova = $visina_slikca/$koef ; $visina_nova = $visina_slikca; $pos_x = ($nwidth - $sirina_nova)/2; } } /* pozicija */ $sredina_podlage = floor($visina_podlaga/2); $polovica_slikice = floor(($visina_slikca/2)); $pos_y = $sredina_podlage - $polovica_slikice; /* ce je slika visja kot podlaga jo da na vrh in ne na sredino */ if($koef >= $square){ $pos_y = 0; } /* ce je presiroka pokropaj */ $newimage=imagecreatetruecolor($nwidth,$visina_podlaga); imagealphablending($newimage,true); $background_color = imagecolorallocate($newimage,$color['r'],$color['g'],$color['b']); imagefilledrectangle($newimage,0, 0, $nwidth , $visina_podlaga, $background_color); imagecopyresampled($newimage,$im,$pos_x ,$pos_y,0,0,$sirina_nova ,$visina_nova ,$size[0],$size[1]); /* robovi */ if($brd_width != FALSE){ $border_color = imagecolorallocatealpha($newimage,$brd_color['r'],$brd_color['g'],$brd_color['b'],$brd_alpha); $border = $brd_width; /* zgornji */ imagefilledrectangle($newimage,0, 0, $nwidth , $border, $border_color); /* spodnji */ imagefilledrectangle($newimage,0,$visina_podlaga-$border , $nwidth , $visina_podlaga, $border_color); /* levi */ imagefilledrectangle($newimage,0, $border+1, $border, $visina_podlaga - $border -1, $border_color); /* desni */ imagefilledrectangle($newimage,$nwidth - $border, $border+1, $nwidth, $visina_podlaga - $border -1, $border_color); } } /* zapis koncnega filea */ imagejpeg($newimage,$newfile,75); } function datumiraj($datum){ if(trim($datum) == '0000-00-00 00:00:00') return '..'; $tina = explode(' ',$datum); $tmp = explode('-',$tina[0]); $xx[2] = $tmp[2]; $xx[1] = $tmp[1]; $xx[0] = $tmp[0]; if($tina[1] == '00:00:00') $tina[1] = ''; if($xx[0] == '0000') $xx[0] = ''; return $xx[2].'.'.$xx[1].'.'.$xx[0].' '.$tina[1]; } function slo2mysql($datum){ if(empty($datum) || $datum == '' ) return NULL; $tmp = explode('.',$datum); $xx[2] = $tmp[2]; $xx[1] = $tmp[1]; $xx[0] = $tmp[0]; return $xx[2].'-'.$xx[1].'-'.$xx[0]; } function slo2sql($datum){ if(empty($datum) || $datum == '' ) return NULL; return date('Y-m-d',strtotime($datum)); } function slo2mysql_alpetour($datum){ if(empty($datum) || $datum == '' ) return 'NULL'; $tmp = explode('.',$datum); $xx[2] = $tmp[2]; $xx[1] = $tmp[1]; $xx[0] = $tmp[0]; return "'".$xx[2].'-'.$xx[1].'-'.$xx[0]."'"; } function keyzer($string){ $string = strtolower(strip_tags($string)); $string = str_replace(' ','',$string); $string = str_replace('"','_',$string); $string = str_replace('"','_',$string); $string = str_replace('/','_',$string); $string = str_replace('č','cz',$string); $string = str_replace('ž','zz',$string); $string = str_replace('š','sz',$string); $string = str_replace('đ','dz',$string); $string = str_replace('ć','czz',$string); $string = str_replace('Č','cz',$string); $string = str_replace('Ž','zz',$string); $string = str_replace('Š','sz',$string); $string = str_replace('Đ','dz',$string); $string = str_replace('Ć','czz',$string); return $string; } function ukeyzer($string){ $string = strtolower(strip_tags($string)); //$string = str_replace(' ','',$string); $string = str_replace('_','"',$string); $string = str_replace('_','"',$string); $string = str_replace('cz','č',$string); $string = str_replace('zz','ž',$string); $string = str_replace('sz','š',$string); $string = str_replace('dz','đ',$string); $string = str_replace('czz','ć',$string); $string = str_replace('cz','Č',$string); $string = str_replace('zz','Ž',$string); $string = str_replace('sz','Š',$string); $string = str_replace('dz','Đ',$string); $string = str_replace('czz','Ć',$string); return $string; } function safe_name_plain($string){ $string = strtolower(strip_tags($string)); $string = str_replace('-','_',$string); $string = str_replace('+','_',$string); $string = str_replace('/','',$string); $string = str_replace(' ','_',$string); $string = str_replace('"','_',$string); $string = str_replace('.','_',$string); $string = str_replace('"','_',$string); $string = str_replace('č','c',$string); $string = str_replace('ž','z',$string); $string = str_replace('š','s',$string); $string = str_replace('đ','d',$string); $string = str_replace('ć','c',$string); $string = str_replace('Č','c',$string); $string = str_replace('Ž','z',$string); $string = str_replace('Š','s',$string); $string = str_replace('Đ','d',$string); $string = str_replace('Ć','c',$string); $string = str_replace('ľ','z',$string); $string = str_replace(':','',$string); $string = str_replace('[','',$string); $string = str_replace(']','',$string); $string = str_replace('«','',$string); $string = str_replace('»','',$string); $string = str_replace('!','',$string); $string = str_replace(',','',$string); $string = str_replace('?','',$string); $string = str_replace(';','',$string); $string = str_replace('"','',$string); return $string; } // Uporabno za URL, neuporabno za vse ostalo function safe_name($string,$delim='_'){ //$string = strtr($string, "čćđšžČĆĐŠŽ", "ccdszCCDSZ"); $table = array( 'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r', ); $string = strtr($string, $table); $string = preg_replace('/([^a-zA-Z0-9\-\_])/',$delim,$string); return $string; } // new pdf extract function gzuncompress_crc32($data) { $f = tempnam('/tmp', 'gz_fix'); file_put_contents($f, "\x1f\x8b\x08\x00\x00\x00\x00\x00" . $data); $out = file_get_contents('compress.zlib://' . $f); //unlink($f); return $out; } // Function : pdf2txt() // Arguments : $filename - Filename of the PDF you want to extract // Description : Reads a pdf file, extracts data streams, and manages // their translation to plain text - returning the plain // text at the end // Author : Jonathan Beckett, 2005-05-02 function pdf2txt($filename){ $data = getFileData($filename); // grab objects and then grab their contents (chunks) $a_obj = getDataArray($data,"obj","endobj"); foreach($a_obj as $obj){ $a_filter = getDataArray($obj,"<<",">>"); if (is_array($a_filter)){ $j++; $a_chunks[$j]["filter"] = $a_filter[0]; $a_data = getDataArray($obj,"stream\r\n","endstream"); if (is_array($a_data)){ $a_chunks[$j]["data"] = substr($a_data[0],strlen("stream\r\n"),strlen($a_data[0])-strlen("stream\r\n")-strlen("endstream")); } } } // decode the chunks foreach($a_chunks as $chunk){ // look at each chunk and decide how to decode it - by looking at the contents of the filter $a_filter = split("/",$chunk["filter"]); if ($chunk["data"]!=""){ // look at the filter to find out which encoding has been used if (substr($chunk["filter"],"FlateDecode")!==false){ if(!$data =@gzuncompress($chunk["data"])){ $data = gzuncompress_crc32($chunk["data"]); } //var_dump($chunk["data"]); if (trim($data)!=""){ $tmp_txt = ps2txt($data); //flush(); if(!strstr($tmp_txt,'')){ $result_data .= $tmp_txt; } } else { //$result_data .= "x"; } } } } return $result_data; } // Function : ps2txt() // Arguments : $ps_data - postscript data you want to convert to plain text // Description : Does a very basic parse of postscript data to // return the plain text // Author : Jonathan Beckett, 2005-05-02 function ps2txt($ps_data){ $result = ""; $a_data = getDataArray($ps_data,"[","]"); if (is_array($a_data)){ foreach ($a_data as $ps_text){ $a_text = getDataArray($ps_text,"(",")"); if (is_array($a_text)){ foreach ($a_text as $text){ $result .= substr($text,1,strlen($text)-2); } } } } else { // the data may just be in raw format (outside of [] tags) $a_text = getDataArray($ps_data,"(",")"); if (is_array($a_text)){ foreach ($a_text as $text){ $result .= substr($text,1,strlen($text)-2); } } } return $result; } // Function : getFileData() // Arguments : $filename - filename you want to load // Description : Reads data from a file into a variable // and passes that data back // Author : Jonathan Beckett, 2005-05-02 function getFileData($filename){ $handle = fopen($filename,"rb"); $data = fread($handle, filesize($filename)); fclose($handle); return $data; } // Function : getDataArray() // Arguments : $data - data you want to chop up // $start_word - delimiting characters at start of each chunk // $end_word - delimiting characters at end of each chunk // Description : Loop through an array of data and put all chunks // between start_word and end_word in an array // Author : Jonathan Beckett, 2005-05-02 function getDataArray($data,$start_word,$end_word){ $start = 0; $end = 0; unset($a_result); while ($start!==false && $end!==false){ $start = strpos($data,$start_word,$end); if ($start!==false){ $end = strpos($data,$end_word,$start); if ($end!==false){ // data is between start and end $a_result[] = substr($data,$start,$end-$start+strlen($end_word)); } } } return $a_result; } function doc2txtalex($file){ $translate_from = array('\x010D','\x0107','\x017E','\x0161','\x0111','\x010C','\x0106','\x017D','\x0160','\x0110'); $translate_to = array('č','ć','ž','š','đ','Č','Ć','Ž','Š','Đ'); ob_start(); system('catdoc -s cp1250 -x '.$file); $out_tmp = ob_get_contents(); ob_end_clean(); $out = str_replace($translate_from, $translate_to, $out_tmp); return $out; } ### PASS GEN FUNCTION function generatePassword ($length = 8) { $password = ""; $possible = "0123456789abcdefghjiklmnopqrstvwxyz"; $i = 0; while ($i < $length) { $char = substr($possible, mt_rand(0, strlen($possible)-1), 1); if (!strstr($password, $char)) { $password .= $char; $i++; } } return $password; } function remove_querystring_var($url, $key) { $url = preg_replace('/(.*)(\?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&'); $url = substr($url, 0, -1); return ($url); } function superrss($ch_title,$ch_desc, $ch_link, $atom_link, $data){ $out = ''."\n"; $out .= ''."\n"; $out .= ''.$ch_title.''."\n"; $out .= ''.$ch_desc.''."\n"; $out .= ''.$ch_link.''."\n"; $out .= ''."\n"; $out .= ''. date('r') .''."\n"; foreach($data as $d){ $out .= ''."\n"; foreach($d as $k => $v){ if( $k == 'title') { $out .= '<'.$k.'>'.htmlspecialchars($v).''."\n"; } else { $out .= '<'.$k.'>'.$v.''."\n"; } } $out .= ''."\n"; } $out .= ''."\n"; $out .= ''."\n"; return $out; } function svar_dump($something){ if( strstr( $_SERVER['REMOTE_ADDR'], '192.168.' ) ) { var_dump( $something );die(); } if($_SERVER['REMOTE_ADDR'] == '84.255.206.218'){ xvar_dump($something); die(); } } function rss_reader($url){ $rss = @simplexml_load_file($url); $aa = 0; if(is_object($rss->channel->item)){ foreach($rss->channel->item as $v){ //var_dump($v); $super_out[$aa]['title'] = (string)$v->title; $super_out[$aa]['description'] = (string)$v->description; $super_out[$aa]['link'] = (string)$v->link; $super_out[$aa]['category'] = (string)$v->category; $super_out[$aa]['pic'] = (string)@$v->enclosure->attributes()->url; $datum = (string)$v->pubDate; if(!$datum){ $datum = date("Y-m-d H:i:s"); } $super_out[$aa]['datum_raw'] = $datum; $super_out[$aa]['datum'] = date("Y-m-d H:i:s",strtotime($datum)); $domena = parse_url((string)$v->link); $super_out[$aa]['domena'] = $domena['host']; $aa++; } } return $super_out; } function siconv($str, $enc_from = 'cp1250', $enc_to = 'utf-8'){ return iconv($enc_from,$enc_to,$str); } function siconv_array($arr = array(), $enc_from = 'cp1250', $enc_to = 'utf-8'){ foreach((array)$arr as $k => $v){ if(!is_array($v)){ $out[$k] = siconv($v, $enc_from, $enc_to ); } else { $out[$k] = siconv_array($v, $enc_from, $enc_to); } } return $out; } function slo_cena($number){ return slo_cena_cela($number); //return number_format($number, 2, ',', '.'); } function cena_2_dec($number){ return number_format($number, 2, ',', '.'); } function slo_cena_cela($number){ $tmp = explode('.',(string)$number); $levo = $tmp[0]; if(!$tmp[1]){ $desno = '00'; } elseif(strlen($tmp[1]) == 1){ $desno = $tmp[1].'0'; } else { $desno = $tmp[1]; } $levo = number_format($levo, 0, '', '.'); return $levo.','.$desno; } if(!function_exists('cache_me_please')){ function cache_me_please($a=0){ #### to funkcijo (ki ne dela nič) pusti tle ker je star nančin keširanja in pol nekatiri sajti cedijo če je ni } } function did_you_mean($needle = '', $haystack = array()){ $shortest = -1; $needle = mb_strtolower($needle,'utf-8'); foreach ($haystack as $k => $word) { $word = mb_strtolower($word,'utf-8'); $lev = levenshtein($needle, $word); if ($lev == 0) { $closest = $haystack[$k]; $shortest = 0; break; } if ($lev <= $shortest || $shortest < 0) { // set the closest match, and shortest distance $closest = $haystack[$k]; $shortest = $lev; } } $out['distance'] = $shortest; $out['closest'] = $closest; return $out; } function get_mime($flag){ $flag = strtolower($flag); $mime = @file_get_contents('libs/mime_types.txt'); $mime = explode("\n",$mime); foreach($mime as $mm){ $row = explode("\t",$mm); $supermime[trim($row[0])] = trim($row[1]); } if(!$supermime[$flag]) $supermime[$flag] = 'application/force-download'; return $supermime[$flag]; } function getEaster($timestamp){ /* accepts timestamp */ if(!$timestamp) return false; $year = date('Y', $timestamp); $easter = date('m-d', easter_date($year)); $easter_date = strtotime($year.'-'.$easter); // easter return date('m-d', strtotime('+1 day', $easter_date)); // Ponedeljek } function getDates($fromDate,$toDate,$weekends=true){ if(!$fromDate && !$toDate){ return NULL; } $dateMonthYearArr = array(); $fromDateTS = strtotime($fromDate); $toDateTS = strtotime($toDate); /* checking if days are eq */ if(date('Y-m-d',$fromDateTS) == date('Y-m-d',$toDateTS)){ //return date('H:i',$toDateTS - $fromDateTS); } /* checking year and month */ $fromYear = date('y',$fromDateTS); $fromMonth = date('m',$fromDateTS); $toYear = date('y',$toDateTS); $toMonth = date('m',$toDateTS); $i = 1; for ($currentDateTS = $fromDateTS; $currentDateTS <= $toDateTS; $currentDateTS += (60 * 60 * 24)) { $day = date("N",$currentDateTS); if(!$weekends && ($day == 6 || $day == 7)){ continue; } $currentDateStr[$i] = date("Y-m-d",$currentDateTS); $dateMonthYearArr = $currentDateStr; $i++; } return $dateMonthYearArr; } ### Preveri najprej email string, če je pravilno oblikovan, nato še domeno!;) ### function checkEmail($email) { if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",$email)){ list($username,$domain)=explode('@',$email); if(!checkdnsrr($domain,'MX')) { return false; } return true; } return false; } function str_truncate($text, $chars = 25) { $add = ''; $text = $text." "; $text = substr($text,0,$chars); $text = substr($text,0,strrpos($text,' ')); if(strlen($text) > $chars) $add = "..."; $text = $text.$add; return $text; } function encryptdata($data_input,$key){ $td = mcrypt_module_open('cast-256', '', 'ecb', ''); $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); mcrypt_generic_init($td, $key, $iv); $encrypted_data = mcrypt_generic($td, $data_input); mcrypt_generic_deinit($td); mcrypt_module_close($td); $encoded_64=base64_encode($encrypted_data); return $encoded_64; } function decryptdata($encoded_64,$key){ $decoded_64=base64_decode($encoded_64); $td = mcrypt_module_open('cast-256', '', 'ecb', ''); $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); mcrypt_generic_init($td, $key, $iv); $decrypted_data = mdecrypt_generic($td, $decoded_64); mcrypt_generic_deinit($td); mcrypt_module_close($td); return $decrypted_data; } function base64_url_encode($input) { return strtr(base64_encode($input), '+/=', '-_,'); } function base64_url_decode($input) { return base64_decode(strtr($input, '-_,', '+/=')); } function get_contry_code_array(){ return array( "4" => "Afghanistan", "248" => "Åland Islands", "8" => "Albania", "12" => "Algeria", "16" => "American Samoa", "20" => "Andorra", "24" => "Angola", "660" => "Anguilla", "10" => "Antarctica", "28" => "Antigua and Barbuda", "32" => "Argentina", "51" => "Armenia", "533" => "Aruba", "36" => "Australia", "40" => "Austria", "31" => "Azerbaijan", "44" => "Bahamas", "48" => "Bahrain", "50" => "Bangladesh", "52" => "Barbados", "112" => "Belarus", "56" => "Belgium", "84" => "Belize", "204" => "Benin", "60" => "Bermuda", "64" => "Bhutan", "68" => "Bolivia, Plurinational State of", "535" => "Bonaire, Sint Eustatius and Saba", "70" => "Bosnia and Herzegovina", "72" => "Botswana", "74" => "Bouvet Island", "76" => "Brazil", "86" => "British Indian Ocean Territory", "96" => "Brunei Darussalam", "100" => "Bulgaria", "854" => "Burkina Faso", "108" => "Burundi", "116" => "Cambodia", "120" => "Cameroon", "124" => "Canada", "132" => "Cape Verde", "136" => "Cayman Islands", "140" => "Central African Republic", "148" => "Chad", "152" => "Chile", "156" => "China", "162" => "Christmas Island", "166" => "Cocos (Keeling) Islands", "170" => "Colombia", "174" => "Comoros", "178" => "Congo", "180" => "Congo, the Democratic Republic of the", "184" => "Cook Islands", "188" => "Costa Rica", "384" => "Côte d'Ivoire", "191" => "Croatia", "192" => "Cuba", "531" => "Curaçao", "196" => "Cyprus", "203" => "Czech Republic", "208" => "Denmark", "262" => "Djibouti", "212" => "Dominica", "214" => "Dominican Republic", "218" => "Ecuador", "818" => "Egypt", "222" => "El Salvador", "226" => "Equatorial Guinea", "232" => "Eritrea", "233" => "Estonia", "231" => "Ethiopia", "238" => "Falkland Islands (Malvinas)", "234" => "Faroe Islands", "242" => "Fiji", "246" => "Finland", "250" => "France", "254" => "French Guiana", "258" => "French Polynesia", "260" => "French Southern Territories", "266" => "Gabon", "270" => "Gambia", "268" => "Georgia", "276" => "Germany", "288" => "Ghana", "292" => "Gibraltar", "300" => "Greece", "304" => "Greenland", "308" => "Grenada", "312" => "Guadeloupe", "316" => "Guam", "320" => "Guatemala", "831" => "Guernsey", "324" => "Guinea", "624" => "Guinea-Bissau", "328" => "Guyana", "332" => "Haiti", "334" => "Heard Island and McDonald Islands", "336" => "Holy See (Vatican City State)", "340" => "Honduras", "344" => "Hong Kong", "348" => "Hungary", "352" => "Iceland", "356" => "India", "360" => "Indonesia", "364" => "Iran, Islamic Republic of", "368" => "Iraq", "372" => "Ireland", "833" => "Isle of Man", "376" => "Israel", "380" => "Italy", "388" => "Jamaica", "392" => "Japan", "832" => "Jersey", "400" => "Jordan", "398" => "Kazakhstan", "404" => "Kenya", "296" => "Kiribati", "408" => "Korea, Democratic People's Republic of", "410" => "Korea, Republic of", "414" => "Kuwait", "417" => "Kyrgyzstan", "418" => "Lao People's Democratic Republic", "428" => "Latvia", "422" => "Lebanon", "426" => "Lesotho", "430" => "Liberia", "434" => "Libya", "438" => "Liechtenstein", "440" => "Lithuania", "442" => "Luxembourg", "446" => "Macao", "807" => "Macedonia, FYR", "450" => "Madagascar", "454" => "Malawi", "458" => "Malaysia", "462" => "Maldives", "466" => "Mali", "470" => "Malta", "584" => "Marshall Islands", "474" => "Martinique", "478" => "Mauritania", "480" => "Mauritius", "175" => "Mayotte", "484" => "Mexico", "583" => "Micronesia, Federated States of", "498" => "Moldova, Republic of", "492" => "Monaco", "496" => "Mongolia", "499" => "Montenegro", "500" => "Montserrat", "504" => "Morocco", "508" => "Mozambique", "104" => "Myanmar", "516" => "Namibia", "520" => "Nauru", "524" => "Nepal", "528" => "Netherlands", "540" => "New Caledonia", "554" => "New Zealand", "558" => "Nicaragua", "562" => "Niger", "566" => "Nigeria", "570" => "Niue", "574" => "Norfolk Island", "580" => "Northern Mariana Islands", "578" => "Norway", "512" => "Oman", "586" => "Pakistan", "585" => "Palau", "275" => "Palestinian Territory, Occupied", "591" => "Panama", "598" => "Papua New Guinea", "600" => "Paraguay", "604" => "Peru", "608" => "Philippines", "612" => "Pitcairn", "616" => "Poland", "620" => "Portugal", "630" => "Puerto Rico", "634" => "Qatar", "638" => "Réunion", "642" => "Romania", "643" => "Russian Federation", "646" => "Rwanda", "652" => "Saint Barthélemy", "654" => "Saint Helena, Ascension and Tristan da Cunha", "659" => "Saint Kitts and Nevis", "662" => "Saint Lucia", "663" => "Saint Martin (French part)", "666" => "Saint Pierre and Miquelon", "670" => "Saint Vincent and the Grenadines", "882" => "Samoa", "674" => "San Marino", "678" => "Sao Tome and Principe", "682" => "Saudi Arabia", "686" => "Senegal", "688" => "Serbia", "690" => "Seychelles", "694" => "Sierra Leone", "702" => "Singapore", "534" => "Sint Maarten (Dutch part)", "703" => "Slovakia", "705" => "Slovenia", "90" => "Solomon Islands", "706" => "Somalia", "710" => "South Africa", "239" => "South Georgia and the South Sandwich Islands", "728" => "South Sudan", "724" => "Spain", "144" => "Sri Lanka", "729" => "Sudan", "740" => "Suriname", "744" => "Svalbard and Jan Mayen", "748" => "Swaziland", "752" => "Sweden", "756" => "Switzerland", "760" => "Syrian Arab Republic", "158" => "Taiwan, Province of China", "762" => "Tajikistan", "834" => "Tanzania, United Republic of", "764" => "Thailand", "626" => "Timor-Leste", "768" => "Togo", "772" => "Tokelau", "776" => "Tonga", "780" => "Trinidad and Tobago", "788" => "Tunisia", "792" => "Turkey", "795" => "Turkmenistan", "796" => "Turks and Caicos Islands", "798" => "Tuvalu", "800" => "Uganda", "804" => "Ukraine", "784" => "United Arab Emirates", "826" => "United Kingdom", "840" => "United States", "581" => "United States Minor Outlying Islands", "858" => "Uruguay", "860" => "Uzbekistan", "548" => "Vanuatu", "862" => "Venezuela, Bolivarian Republic of", "704" => "Viet Nam", "92" => "Virgin Islands, British", "850" => "Virgin Islands, U.S.", "876" => "Wallis and Futuna", "732" => "Western Sahara", "887" => "Yemen", "894" => "Zambia", "716" => "Zimbabwe" ); } function get_country_array($code = 0){ $out = array( "AF" => "Afghanistan", "AX" => "Åland Islands", "AL" => "Albania", "DZ" => "Algeria", "AS" => "American Samoa", "AD" => "Andorra", "AO" => "Angola", "AI" => "Anguilla", "AQ" => "Antarctica", "AG" => "Antigua and Barbuda", "AR" => "Argentina", "AM" => "Armenia", "AW" => "Aruba", "AU" => "Australia", "AT" => "Austria", "AZ" => "Azerbaijan", "BS" => "Bahamas", "BH" => "Bahrain", "BD" => "Bangladesh", "BB" => "Barbados", "BY" => "Belarus", "BE" => "Belgium", "BZ" => "Belize", "BJ" => "Benin", "BM" => "Bermuda", "BT" => "Bhutan", "BO" => "Bolivia, Plurinational State of", "BA" => "Bosnia and Herzegovina", "BW" => "Botswana", "BV" => "Bouvet Island", "BR" => "Brazil", "IO" => "British Indian Ocean Territory", "BN" => "Brunei Darussalam", "BG" => "Bulgaria", "BF" => "Burkina Faso", "BI" => "Burundi", "KH" => "Cambodia", "CM" => "Cameroon", "CA" => "Canada", "CV" => "Cape Verde", "KY" => "Cayman Islands", "CF" => "Central African Republic", "TD" => "Chad", "CL" => "Chile", "CN" => "China", "CX" => "Christmas Island", "CC" => "Cocos (Keeling) Islands", "CO" => "Colombia", "KM" => "Comoros", "CG" => "Congo", "CD" => "Congo, the Democratic Republic of the", "CK" => "Cook Islands", "CR" => "Costa Rica", "CI" => "Côte d'Ivoire", "HR" => "Croatia", "CU" => "Cuba", "CY" => "Cyprus", "CZ" => "Czech Republic", "DK" => "Denmark", "DJ" => "Djibouti", "DM" => "Dominica", "DO" => "Dominican Republic", "EC" => "Ecuador", "EG" => "Egypt", "SV" => "El Salvador", "GQ" => "Equatorial Guinea", "ER" => "Eritrea", "EE" => "Estonia", "ET" => "Ethiopia", "FK" => "Falkland Islands (Malvinas)", "FO" => "Faroe Islands", "FJ" => "Fiji", "FI" => "Finland", "FR" => "France", "GF" => "French Guiana", "PF" => "French Polynesia", "TF" => "French Southern Territories", "GA" => "Gabon", "GM" => "Gambia", "GE" => "Georgia", "DE" => "Germany", "GH" => "Ghana", "GI" => "Gibraltar", "GR" => "Greece", "GL" => "Greenland", "GD" => "Grenada", "GP" => "Guadeloupe", "GU" => "Guam", "GT" => "Guatemala", "GG" => "Guernsey", "GN" => "Guinea", "GW" => "Guinea-Bissau", "GY" => "Guyana", "HT" => "Haiti", "HM" => "Heard Island and McDonald Islands", "VA" => "Holy See (Vatican City State)", "HN" => "Honduras", "HK" => "Hong Kong", "HU" => "Hungary", "IS" => "Iceland", "IN" => "India", "ID" => "Indonesia", "IR" => "Iran, Islamic Republic of", "IQ" => "Iraq", "IE" => "Ireland", "IM" => "Isle of Man", "IL" => "Israel", "IT" => "Italy", "JM" => "Jamaica", "JP" => "Japan", "JE" => "Jersey", "JO" => "Jordan", "KZ" => "Kazakhstan", "KE" => "Kenya", "KI" => "Kiribati", "KP" => "Korea, Democratic People's Republic of", "KR" => "Korea, Republic of", "KW" => "Kuwait", "KG" => "Kyrgyzstan", "LA" => "Lao People's Democratic Republic", "LV" => "Latvia", "LB" => "Lebanon", "LS" => "Lesotho", "LR" => "Liberia", "LY" => "Libyan Arab Jamahiriya", "LI" => "Liechtenstein", "LT" => "Lithuania", "LU" => "Luxembourg", "MO" => "Macao", "MK" => "Macedonia, FYR", "MG" => "Madagascar", "MW" => "Malawi", "MY" => "Malaysia", "MV" => "Maldives", "ML" => "Mali", "MT" => "Malta", "MH" => "Marshall Islands", "MQ" => "Martinique", "MR" => "Mauritania", "MU" => "Mauritius", "YT" => "Mayotte", "MX" => "Mexico", "FM" => "Micronesia, Federated States of", "MD" => "Moldova, Republic of", "MC" => "Monaco", "MN" => "Mongolia", "ME" => "Montenegro", "MS" => "Montserrat", "MA" => "Morocco", "MZ" => "Mozambique", "MM" => "Myanmar", "NA" => "Namibia", "NR" => "Nauru", "NP" => "Nepal", "NL" => "Netherlands", "AN" => "Netherlands Antilles", "NC" => "New Caledonia", "NZ" => "New Zealand", "NI" => "Nicaragua", "NE" => "Niger", "NG" => "Nigeria", "NU" => "Niue", "NF" => "Norfolk Island", "MP" => "Northern Mariana Islands", "NO" => "Norway", "OM" => "Oman", "PK" => "Pakistan", "PW" => "Palau", "PS" => "Palestinian Territory, Occupied", "PA" => "Panama", "PG" => "Papua New Guinea", "PY" => "Paraguay", "PE" => "Peru", "PH" => "Philippines", "PN" => "Pitcairn", "PL" => "Poland", "PT" => "Portugal", "PR" => "Puerto Rico", "QA" => "Qatar", "RE" => "Réunion", "RO" => "Romania", "RU" => "Russian Federation", "RW" => "Rwanda", "BL" => "Saint Barthélemy", "SH" => "Saint Helena, Ascension and Tristan da Cunha", "KN" => "Saint Kitts and Nevis", "LC" => "Saint Lucia", "MF" => "Saint Martin (French part)", "PM" => "Saint Pierre and Miquelon", "VC" => "Saint Vincent and the Grenadines", "WS" => "Samoa", "SM" => "San Marino", "ST" => "Sao Tome and Principe", "SA" => "Saudi Arabia", "SN" => "Senegal", "RS" => "Serbia", "SC" => "Seychelles", "SL" => "Sierra Leone", "SG" => "Singapore", "SK" => "Slovakia", "SI" => "Slovenia", "SB" => "Solomon Islands", "SO" => "Somalia", "ZA" => "South Africa", "GS" => "South Georgia and the South Sandwich Islands", "ES" => "Spain", "LK" => "Sri Lanka", "SD" => "Sudan", "SR" => "Suriname", "SJ" => "Svalbard and Jan Mayen", "SZ" => "Swaziland", "SE" => "Sweden", "CH" => "Switzerland", "SY" => "Syrian Arab Republic", "TW" => "Taiwan, Province of China", "TJ" => "Tajikistan", "TZ" => "Tanzania, United Republic of", "TH" => "Thailand", "TL" => "Timor-Leste", "TG" => "Togo", "TK" => "Tokelau", "TO" => "Tonga", "TT" => "Trinidad and Tobago", "TN" => "Tunisia", "TR" => "Turkey", "TM" => "Turkmenistan", "TC" => "Turks and Caicos Islands", "TV" => "Tuvalu", "UG" => "Uganda", "UA" => "Ukraine", "AE" => "United Arab Emirates", "GB" => "United Kingdom", "US" => "United States", "UM" => "United States Minor Outlying Islands", "UY" => "Uruguay", "UZ" => "Uzbekistan", "VU" => "Vanuatu", "VE" => "Venezuela, Bolivarian Republic of", "VN" => "Viet Nam", "VG" => "Virgin Islands, British", "VI" => "Virgin Islands, U.S.", "WF" => "Wallis and Futuna", "EH" => "Western Sahara", "YE" => "Yemen", "ZM" => "Zambia", "ZW" => "Zimbabwe" ); if($code){ return $out[$code]; } return $out; } function get_language_array(){ return array( "AF" => "Afghanistan", "AX" => "Åland Islands", "AL" => "Albania", "DZ" => "Algeria", "AS" => "American Samoa", "AD" => "Andorra", "AO" => "Angola", "AI" => "Anguilla", "AQ" => "Antarctica", "AG" => "Antigua and Barbuda", "AR" => "Argentina", "AM" => "Armenia", "AW" => "Aruba", "AU" => "Australia", "AT" => "Austria", "AZ" => "Azerbaijan", "BS" => "Bahamas", "BH" => "Bahrain", "BD" => "Bangladesh", "BB" => "Barbados", "BY" => "Belarus", "BE" => "Belgium", "BZ" => "Belize", "BJ" => "Benin", "BM" => "Bermuda", "BT" => "Bhutan", "BO" => "Bolivia, Plurinational State of", "BA" => "Bosnia and Herzegovina", "BW" => "Botswana", "BV" => "Bouvet Island", "BR" => "Brazil", "IO" => "British Indian Ocean Territory", "BN" => "Brunei Darussalam", "BG" => "Bulgaria", "BF" => "Burkina Faso", "BI" => "Burundi", "KH" => "Cambodia", "CM" => "Cameroon", "CA" => "Canada", "CV" => "Cape Verde", "KY" => "Cayman Islands", "CF" => "Central African Republic", "TD" => "Chad", "CL" => "Chile", "CN" => "China", "CX" => "Christmas Island", "CC" => "Cocos (Keeling) Islands", "CO" => "Colombia", "KM" => "Comoros", "CG" => "Congo", "CD" => "Congo, the Democratic Republic of the", "CK" => "Cook Islands", "CR" => "Costa Rica", "CI" => "Côte d'Ivoire", "HR" => "Croatia", "CU" => "Cuba", "CY" => "Cyprus", "CZ" => "Czech Republic", "DK" => "Denmark", "DJ" => "Djibouti", "DM" => "Dominica", "DO" => "Dominican Republic", "EC" => "Ecuador", "EG" => "Egypt", "SV" => "El Salvador", "GQ" => "Equatorial Guinea", "ER" => "Eritrea", "EE" => "Estonia", "ET" => "Ethiopia", "FK" => "Falkland Islands (Malvinas)", "FO" => "Faroe Islands", "FJ" => "Fiji", "FI" => "Finland", "FR" => "France", "GF" => "French Guiana", "PF" => "French Polynesia", "TF" => "French Southern Territories", "GA" => "Gabon", "GM" => "Gambia", "GE" => "Georgia", "DE" => "Germany", "GH" => "Ghana", "GI" => "Gibraltar", "GR" => "Greece", "GL" => "Greenland", "GD" => "Grenada", "GP" => "Guadeloupe", "GU" => "Guam", "GT" => "Guatemala", "GG" => "Guernsey", "GN" => "Guinea", "GW" => "Guinea-Bissau", "GY" => "Guyana", "HT" => "Haiti", "HM" => "Heard Island and McDonald Islands", "VA" => "Holy See (Vatican City State)", "HN" => "Honduras", "HK" => "Hong Kong", "HU" => "Hungary", "IS" => "Iceland", "IN" => "India", "ID" => "Indonesia", "IR" => "Iran, Islamic Republic of", "IQ" => "Iraq", "IE" => "Ireland", "IM" => "Isle of Man", "IL" => "Israel", "IT" => "Italy", "JM" => "Jamaica", "JP" => "Japan", "JE" => "Jersey", "JO" => "Jordan", "KZ" => "Kazakhstan", "KE" => "Kenya", "KI" => "Kiribati", "KP" => "Korea, Democratic People's Republic of", "KR" => "Korea, Republic of", "KW" => "Kuwait", "KG" => "Kyrgyzstan", "LA" => "Lao People's Democratic Republic", "LV" => "Latvia", "LB" => "Lebanon", "LS" => "Lesotho", "LR" => "Liberia", "LY" => "Libyan Arab Jamahiriya", "LI" => "Liechtenstein", "LT" => "Lithuania", "LU" => "Luxembourg", "MO" => "Macao", "MK" => "Macedonia, FYR", "MG" => "Madagascar", "MW" => "Malawi", "MY" => "Malaysia", "MV" => "Maldives", "ML" => "Mali", "MT" => "Malta", "MH" => "Marshall Islands", "MQ" => "Martinique", "MR" => "Mauritania", "MU" => "Mauritius", "YT" => "Mayotte", "MX" => "Mexico", "FM" => "Micronesia, Federated States of", "MD" => "Moldova, Republic of", "MC" => "Monaco", "MN" => "Mongolia", "ME" => "Montenegro", "MS" => "Montserrat", "MA" => "Morocco", "MZ" => "Mozambique", "MM" => "Myanmar", "NA" => "Namibia", "NR" => "Nauru", "NP" => "Nepal", "NL" => "Netherlands", "AN" => "Netherlands Antilles", "NC" => "New Caledonia", "NZ" => "New Zealand", "NI" => "Nicaragua", "NE" => "Niger", "NG" => "Nigeria", "NU" => "Niue", "NF" => "Norfolk Island", "MP" => "Northern Mariana Islands", "NO" => "Norway", "OM" => "Oman", "PK" => "Pakistan", "PW" => "Palau", "PS" => "Palestinian Territory, Occupied", "PA" => "Panama", "PG" => "Papua New Guinea", "PY" => "Paraguay", "PE" => "Peru", "PH" => "Philippines", "PN" => "Pitcairn", "PL" => "Poland", "PT" => "Portugal", "PR" => "Puerto Rico", "QA" => "Qatar", "RE" => "Réunion", "RO" => "Romania", "RU" => "Russian Federation", "RW" => "Rwanda", "BL" => "Saint Barthélemy", "SH" => "Saint Helena, Ascension and Tristan da Cunha", "KN" => "Saint Kitts and Nevis", "LC" => "Saint Lucia", "MF" => "Saint Martin (French part)", "PM" => "Saint Pierre and Miquelon", "VC" => "Saint Vincent and the Grenadines", "WS" => "Samoa", "SM" => "San Marino", "ST" => "Sao Tome and Principe", "SA" => "Saudi Arabia", "SN" => "Senegal", "RS" => "Serbia", "SC" => "Seychelles", "SL" => "Sierra Leone", "SG" => "Singapore", "SK" => "Slovakia", "SI" => "Slovenia", "SB" => "Solomon Islands", "SO" => "Somalia", "ZA" => "South Africa", "GS" => "South Georgia and the South Sandwich Islands", "ES" => "Spain", "LK" => "Sri Lanka", "SD" => "Sudan", "SR" => "Suriname", "SJ" => "Svalbard and Jan Mayen", "SZ" => "Swaziland", "SE" => "Sweden", "CH" => "Switzerland", "SY" => "Syrian Arab Republic", "TW" => "Taiwan, Province of China", "TJ" => "Tajikistan", "TZ" => "Tanzania, United Republic of", "TH" => "Thailand", "TL" => "Timor-Leste", "TG" => "Togo", "TK" => "Tokelau", "TO" => "Tonga", "TT" => "Trinidad and Tobago", "TN" => "Tunisia", "TR" => "Turkey", "TM" => "Turkmenistan", "TC" => "Turks and Caicos Islands", "TV" => "Tuvalu", "UG" => "Uganda", "UA" => "Ukraine", "AE" => "United Arab Emirates", "GB" => "United Kingdom", "US" => "United States", "UM" => "United States Minor Outlying Islands", "UY" => "Uruguay", "UZ" => "Uzbekistan", "VU" => "Vanuatu", "VE" => "Venezuela, Bolivarian Republic of", "VN" => "Viet Nam", "VG" => "Virgin Islands, British", "VI" => "Virgin Islands, U.S.", "WF" => "Wallis and Futuna", "EH" => "Western Sahara", "YE" => "Yemen", "ZM" => "Zambia", "ZW" => "Zimbabwe" ); } function xtrans($text){ global $mysql; global $config; global $xtrans; #### load translations if(!isset($xtrans)){ #### check if db:x_trans exists $tmp = $mysql->query('select * from x_trans'); if(!$tmp){ $q = 'CREATE TABLE IF NOT EXISTS `x_trans` ( '; foreach($config['lang'] as $lang){ $q .= ' `'.$lang.'` varchar(255) NOT NULL,'; } $q .= ' `key` varchar(50) NOT NULL, UNIQUE KEY `key` (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;'; $mysql->q($q); } else { ### populate xtrans; foreach($tmp as $row){ $xtrans[$row['key']] = $row; } } } #### translate $current_key = md5($text); $default_lang = $config['lang'][0]; if(!$xtrans[$current_key]){ $data[$default_lang] = $text; $data['key'] = md5($text); $mysql->insert_row('x_trans',$data); $xtrans[$default_lang] = $text; /* if($default_lang != $_SESSION['lang']){ return $_SESSION['lang'].': '.$text; } else { return $text; } */ return $text; } else { if($xtrans[$current_key][$_SESSION['lang']]){ return $xtrans[$current_key][$_SESSION['lang']]; } else { //return $_SESSION['lang'].': '.$text; return $text; } } } function diffLength($dateFrom, $dateTo) { $dateFrom = (($dateFrom instanceof DateTime) ? $dateFrom : new DateTime($dateFrom)); $dateTo = (($dateTo instanceof DateTime) ? $dateTo : new DateTime($dateTo)); $difference = $dateTo->format('U') - $dateFrom->format('U'); return floor($difference / (60 * 60 * 24)); } function utf8_uri_encode( $utf8_string, $length = 0 ) { $unicode = ''; $values = array(); $num_octets = 1; $unicode_length = 0; $string_length = strlen( $utf8_string ); for ($i = 0; $i < $string_length; $i++ ) { $value = ord( $utf8_string[ $i ] ); if ( $value < 128 ) { if ( $length && ( $unicode_length >= $length ) ) break; $unicode .= chr($value); $unicode_length++; } else { if ( count( $values ) == 0 ) $num_octets = ( $value < 224 ) ? 2 : 3; $values[] = $value; if ( $length && ( $unicode_length + ($num_octets * 3) ) > $length ) break; if ( count( $values ) == $num_octets ) { if ($num_octets == 3) { $unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]) . '%' . dechex($values[2]); $unicode_length += 9; } else { $unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]); $unicode_length += 6; } $values = array(); $num_octets = 1; } } } return $unicode; } //taken from wordpress function seems_utf8($str) { $length = strlen($str); for ($i=0; $i < $length; $i++) { $c = ord($str[$i]); if ($c < 0x80) $n = 0; # 0bbbbbbb elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b else return false; # Does not match any model for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80)) return false; } } return true; } //function sanitize_title_with_dashes taken from wordpress function sanitize($title) { $title = strip_tags($title); // Preserve escaped octets. $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title); // Remove percent signs that are not part of an octet. $title = str_replace('%', '', $title); // Restore octets. $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title); if (seems_utf8($title)) { if (function_exists('mb_strtolower')) { $title = mb_strtolower($title, 'UTF-8'); } $title = utf8_uri_encode($title, 200); } $title = strtolower($title); $title = preg_replace('/&.+?;/', '', $title); // kill entities $title = str_replace('.', '-', $title); $title = preg_replace('/[^%a-z0-9 _-]/', '', $title); $title = preg_replace('/\s+/', '-', $title); $title = preg_replace('|-+|', '-', $title); $title = trim($title, '-'); return $title; } /** * Converts all accent characters to ASCII characters. * * If there are no accent characters, then the string given is just returned. * * @since 1.2.1 * * @param string $string Text that might have accent characters * @return string Filtered string with replaced "nice" characters. */ function remove_accents($string) { if ( !preg_match('/[\x80-\xff]/', $string) ) return $string; if (seems_utf8($string)) { $chars = array( // Decompositions for Latin-1 Supplement chr(194).chr(170) => 'a', chr(194).chr(186) => 'o', chr(195).chr(128) => 'A', chr(195).chr(129) => 'A', chr(195).chr(130) => 'A', chr(195).chr(131) => 'A', chr(195).chr(132) => 'A', chr(195).chr(133) => 'A', chr(195).chr(134) => 'AE',chr(195).chr(135) => 'C', chr(195).chr(136) => 'E', chr(195).chr(137) => 'E', chr(195).chr(138) => 'E', chr(195).chr(139) => 'E', chr(195).chr(140) => 'I', chr(195).chr(141) => 'I', chr(195).chr(142) => 'I', chr(195).chr(143) => 'I', chr(195).chr(144) => 'D', chr(195).chr(145) => 'N', chr(195).chr(146) => 'O', chr(195).chr(147) => 'O', chr(195).chr(148) => 'O', chr(195).chr(149) => 'O', chr(195).chr(150) => 'O', chr(195).chr(153) => 'U', chr(195).chr(154) => 'U', chr(195).chr(155) => 'U', chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y', chr(195).chr(158) => 'TH',chr(195).chr(159) => 's', chr(195).chr(160) => 'a', chr(195).chr(161) => 'a', chr(195).chr(162) => 'a', chr(195).chr(163) => 'a', chr(195).chr(164) => 'a', chr(195).chr(165) => 'a', chr(195).chr(166) => 'ae',chr(195).chr(167) => 'c', chr(195).chr(168) => 'e', chr(195).chr(169) => 'e', chr(195).chr(170) => 'e', chr(195).chr(171) => 'e', chr(195).chr(172) => 'i', chr(195).chr(173) => 'i', chr(195).chr(174) => 'i', chr(195).chr(175) => 'i', chr(195).chr(176) => 'd', chr(195).chr(177) => 'n', chr(195).chr(178) => 'o', chr(195).chr(179) => 'o', chr(195).chr(180) => 'o', chr(195).chr(181) => 'o', chr(195).chr(182) => 'o', chr(195).chr(184) => 'o', chr(195).chr(185) => 'u', chr(195).chr(186) => 'u', chr(195).chr(187) => 'u', chr(195).chr(188) => 'u', chr(195).chr(189) => 'y', chr(195).chr(190) => 'th', chr(195).chr(191) => 'y', chr(195).chr(152) => 'O', // Decompositions for Latin Extended-A chr(196).chr(128) => 'A', chr(196).chr(129) => 'a', chr(196).chr(130) => 'A', chr(196).chr(131) => 'a', chr(196).chr(132) => 'A', chr(196).chr(133) => 'a', chr(196).chr(134) => 'C', chr(196).chr(135) => 'c', chr(196).chr(136) => 'C', chr(196).chr(137) => 'c', chr(196).chr(138) => 'C', chr(196).chr(139) => 'c', chr(196).chr(140) => 'C', chr(196).chr(141) => 'c', chr(196).chr(142) => 'D', chr(196).chr(143) => 'd', chr(196).chr(144) => 'D', chr(196).chr(145) => 'd', chr(196).chr(146) => 'E', chr(196).chr(147) => 'e', chr(196).chr(148) => 'E', chr(196).chr(149) => 'e', chr(196).chr(150) => 'E', chr(196).chr(151) => 'e', chr(196).chr(152) => 'E', chr(196).chr(153) => 'e', chr(196).chr(154) => 'E', chr(196).chr(155) => 'e', chr(196).chr(156) => 'G', chr(196).chr(157) => 'g', chr(196).chr(158) => 'G', chr(196).chr(159) => 'g', chr(196).chr(160) => 'G', chr(196).chr(161) => 'g', chr(196).chr(162) => 'G', chr(196).chr(163) => 'g', chr(196).chr(164) => 'H', chr(196).chr(165) => 'h', chr(196).chr(166) => 'H', chr(196).chr(167) => 'h', chr(196).chr(168) => 'I', chr(196).chr(169) => 'i', chr(196).chr(170) => 'I', chr(196).chr(171) => 'i', chr(196).chr(172) => 'I', chr(196).chr(173) => 'i', chr(196).chr(174) => 'I', chr(196).chr(175) => 'i', chr(196).chr(176) => 'I', chr(196).chr(177) => 'i', chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij', chr(196).chr(180) => 'J', chr(196).chr(181) => 'j', chr(196).chr(182) => 'K', chr(196).chr(183) => 'k', chr(196).chr(184) => 'k', chr(196).chr(185) => 'L', chr(196).chr(186) => 'l', chr(196).chr(187) => 'L', chr(196).chr(188) => 'l', chr(196).chr(189) => 'L', chr(196).chr(190) => 'l', chr(196).chr(191) => 'L', chr(197).chr(128) => 'l', chr(197).chr(129) => 'L', chr(197).chr(130) => 'l', chr(197).chr(131) => 'N', chr(197).chr(132) => 'n', chr(197).chr(133) => 'N', chr(197).chr(134) => 'n', chr(197).chr(135) => 'N', chr(197).chr(136) => 'n', chr(197).chr(137) => 'N', chr(197).chr(138) => 'n', chr(197).chr(139) => 'N', chr(197).chr(140) => 'O', chr(197).chr(141) => 'o', chr(197).chr(142) => 'O', chr(197).chr(143) => 'o', chr(197).chr(144) => 'O', chr(197).chr(145) => 'o', chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe', chr(197).chr(148) => 'R',chr(197).chr(149) => 'r', chr(197).chr(150) => 'R',chr(197).chr(151) => 'r', chr(197).chr(152) => 'R',chr(197).chr(153) => 'r', chr(197).chr(154) => 'S',chr(197).chr(155) => 's', chr(197).chr(156) => 'S',chr(197).chr(157) => 's', chr(197).chr(158) => 'S',chr(197).chr(159) => 's', chr(197).chr(160) => 'S', chr(197).chr(161) => 's', chr(197).chr(162) => 'T', chr(197).chr(163) => 't', chr(197).chr(164) => 'T', chr(197).chr(165) => 't', chr(197).chr(166) => 'T', chr(197).chr(167) => 't', chr(197).chr(168) => 'U', chr(197).chr(169) => 'u', chr(197).chr(170) => 'U', chr(197).chr(171) => 'u', chr(197).chr(172) => 'U', chr(197).chr(173) => 'u', chr(197).chr(174) => 'U', chr(197).chr(175) => 'u', chr(197).chr(176) => 'U', chr(197).chr(177) => 'u', chr(197).chr(178) => 'U', chr(197).chr(179) => 'u', chr(197).chr(180) => 'W', chr(197).chr(181) => 'w', chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y', chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z', chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z', chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z', chr(197).chr(190) => 'z', chr(197).chr(191) => 's', // Decompositions for Latin Extended-B chr(200).chr(152) => 'S', chr(200).chr(153) => 's', chr(200).chr(154) => 'T', chr(200).chr(155) => 't', // Euro Sign chr(226).chr(130).chr(172) => 'E', // GBP (Pound) Sign chr(194).chr(163) => '', // Vowels with diacritic (Vietnamese) // unmarked chr(198).chr(160) => 'O', chr(198).chr(161) => 'o', chr(198).chr(175) => 'U', chr(198).chr(176) => 'u', // grave accent chr(225).chr(186).chr(166) => 'A', chr(225).chr(186).chr(167) => 'a', chr(225).chr(186).chr(176) => 'A', chr(225).chr(186).chr(177) => 'a', chr(225).chr(187).chr(128) => 'E', chr(225).chr(187).chr(129) => 'e', chr(225).chr(187).chr(146) => 'O', chr(225).chr(187).chr(147) => 'o', chr(225).chr(187).chr(156) => 'O', chr(225).chr(187).chr(157) => 'o', chr(225).chr(187).chr(170) => 'U', chr(225).chr(187).chr(171) => 'u', chr(225).chr(187).chr(178) => 'Y', chr(225).chr(187).chr(179) => 'y', // hook chr(225).chr(186).chr(162) => 'A', chr(225).chr(186).chr(163) => 'a', chr(225).chr(186).chr(168) => 'A', chr(225).chr(186).chr(169) => 'a', chr(225).chr(186).chr(178) => 'A', chr(225).chr(186).chr(179) => 'a', chr(225).chr(186).chr(186) => 'E', chr(225).chr(186).chr(187) => 'e', chr(225).chr(187).chr(130) => 'E', chr(225).chr(187).chr(131) => 'e', chr(225).chr(187).chr(136) => 'I', chr(225).chr(187).chr(137) => 'i', chr(225).chr(187).chr(142) => 'O', chr(225).chr(187).chr(143) => 'o', chr(225).chr(187).chr(148) => 'O', chr(225).chr(187).chr(149) => 'o', chr(225).chr(187).chr(158) => 'O', chr(225).chr(187).chr(159) => 'o', chr(225).chr(187).chr(166) => 'U', chr(225).chr(187).chr(167) => 'u', chr(225).chr(187).chr(172) => 'U', chr(225).chr(187).chr(173) => 'u', chr(225).chr(187).chr(182) => 'Y', chr(225).chr(187).chr(183) => 'y', // tilde chr(225).chr(186).chr(170) => 'A', chr(225).chr(186).chr(171) => 'a', chr(225).chr(186).chr(180) => 'A', chr(225).chr(186).chr(181) => 'a', chr(225).chr(186).chr(188) => 'E', chr(225).chr(186).chr(189) => 'e', chr(225).chr(187).chr(132) => 'E', chr(225).chr(187).chr(133) => 'e', chr(225).chr(187).chr(150) => 'O', chr(225).chr(187).chr(151) => 'o', chr(225).chr(187).chr(160) => 'O', chr(225).chr(187).chr(161) => 'o', chr(225).chr(187).chr(174) => 'U', chr(225).chr(187).chr(175) => 'u', chr(225).chr(187).chr(184) => 'Y', chr(225).chr(187).chr(185) => 'y', // acute accent chr(225).chr(186).chr(164) => 'A', chr(225).chr(186).chr(165) => 'a', chr(225).chr(186).chr(174) => 'A', chr(225).chr(186).chr(175) => 'a', chr(225).chr(186).chr(190) => 'E', chr(225).chr(186).chr(191) => 'e', chr(225).chr(187).chr(144) => 'O', chr(225).chr(187).chr(145) => 'o', chr(225).chr(187).chr(154) => 'O', chr(225).chr(187).chr(155) => 'o', chr(225).chr(187).chr(168) => 'U', chr(225).chr(187).chr(169) => 'u', // dot below chr(225).chr(186).chr(160) => 'A', chr(225).chr(186).chr(161) => 'a', chr(225).chr(186).chr(172) => 'A', chr(225).chr(186).chr(173) => 'a', chr(225).chr(186).chr(182) => 'A', chr(225).chr(186).chr(183) => 'a', chr(225).chr(186).chr(184) => 'E', chr(225).chr(186).chr(185) => 'e', chr(225).chr(187).chr(134) => 'E', chr(225).chr(187).chr(135) => 'e', chr(225).chr(187).chr(138) => 'I', chr(225).chr(187).chr(139) => 'i', chr(225).chr(187).chr(140) => 'O', chr(225).chr(187).chr(141) => 'o', chr(225).chr(187).chr(152) => 'O', chr(225).chr(187).chr(153) => 'o', chr(225).chr(187).chr(162) => 'O', chr(225).chr(187).chr(163) => 'o', chr(225).chr(187).chr(164) => 'U', chr(225).chr(187).chr(165) => 'u', chr(225).chr(187).chr(176) => 'U', chr(225).chr(187).chr(177) => 'u', chr(225).chr(187).chr(180) => 'Y', chr(225).chr(187).chr(181) => 'y', // Vowels with diacritic (Chinese, Hanyu Pinyin) chr(201).chr(145) => 'a', // macron chr(199).chr(149) => 'U', chr(199).chr(150) => 'u', // acute accent chr(199).chr(151) => 'U', chr(199).chr(152) => 'u', // caron chr(199).chr(141) => 'A', chr(199).chr(142) => 'a', chr(199).chr(143) => 'I', chr(199).chr(144) => 'i', chr(199).chr(145) => 'O', chr(199).chr(146) => 'o', chr(199).chr(147) => 'U', chr(199).chr(148) => 'u', chr(199).chr(153) => 'U', chr(199).chr(154) => 'u', // grave accent chr(199).chr(155) => 'U', chr(199).chr(156) => 'u', ); // Used for locale-specific rules /*$locale = get_locale(); if ( 'de_DE' == $locale ) { $chars[ chr(195).chr(132) ] = 'Ae'; $chars[ chr(195).chr(164) ] = 'ae'; $chars[ chr(195).chr(150) ] = 'Oe'; $chars[ chr(195).chr(182) ] = 'oe'; $chars[ chr(195).chr(156) ] = 'Ue'; $chars[ chr(195).chr(188) ] = 'ue'; $chars[ chr(195).chr(159) ] = 'ss'; } elseif ( 'da_DK' === $locale ) { $chars[ chr(195).chr(134) ] = 'Ae'; $chars[ chr(195).chr(166) ] = 'ae'; $chars[ chr(195).chr(152) ] = 'Oe'; $chars[ chr(195).chr(184) ] = 'oe'; $chars[ chr(195).chr(133) ] = 'Aa'; $chars[ chr(195).chr(165) ] = 'aa'; }*/ $string = strtr($string, $chars); } else { // Assume ISO-8859-1 if not UTF-8 $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158) .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194) .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202) .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210) .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218) .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227) .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235) .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243) .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251) .chr(252).chr(253).chr(255); $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy"; $string = strtr($string, $chars['in'], $chars['out']); $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254)); $double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th'); $string = str_replace($double_chars['in'], $double_chars['out'], $string); } return $string; } ?>