$/i','/
$/i','/
<\/p>$/i','/
<\/p>$/i') , '', $string_wo_slashes_weg);
return $string_wo_slashes_weg;
}
function clean_slweg($string_wo_slashes_weg, $string_laenge=0, $trim=true) {
// Falls die Serverfunktion magic_quotes_gpc aktiviert ist, so
// sollen die Slashes herausgenommen werden, anderenfalls nicht
if($trim) $string_wo_slashes_weg = trim($string_wo_slashes_weg);
if( get_magic_quotes_gpc() ) $string_wo_slashes_weg = stripslashes ($string_wo_slashes_weg);
$string_wo_slashes_weg = strip_tags($string_wo_slashes_weg);
if($string_laenge) $string_wo_slashes_weg = substr($string_wo_slashes_weg, 0, $string_laenge);
return $string_wo_slashes_weg;
}
function getpostvar($formvar, $string_laenge=0) {
//combines trim, stripslashes und apostrophe replace
return aporeplace( slweg( $formvar, $string_laenge ) );
}
function html_specialchars($h='') {
//used to replace the htmlspecialchars original php function
//not compatible with many internation chars like turkish, polish
$h = preg_replace('/&(?!((#[0-9]+)|[a-z]+);)/s', '&', $h ); //works correct for "…" and/or "–"
//$h = preg_replace('/&(?!#[0-9]+;)/s', '&', $h );
$h = str_replace( '<', '<' , $h );
$h = str_replace( '>', '>' , $h );
$h = str_replace( '"', '"', $h );
$h = str_replace( "'", ''', $h );
$h = str_replace( "\\", '\', $h );
return $h;
}
function html_despecialchars($h='') {
//call off html_specialchars
$h = str_replace( '&' , '&', $h );
$h = str_replace( '<' , '<', $h );
$h = str_replace( '>' , '>', $h );
$h = str_replace( '"', '"', $h );
$h = str_replace( ''', "'", $h );
$h = str_replace( '\' , "\\", $h );
return $h;
}
function trimhtml($h='') {
return html_specialchars(trim($h));
}
function list_country($c, $lang='') {
//Create the country list menu for forms with the given value selected
//$c = selected value
if(empty($c)) {
$c = strtoupper($GLOBALS['phpwcms']['default_lang']);
}
$country_list = '';
$country = getCountry($lang);
foreach($country as $key => $value) {
$country_list .= ' \n";
} else {
echo "\t\t\t\n";
}
}
mysql_free_result($sql);
}
function is_selected($c, $chkvalue, $xhtml=1, $echoit=1) {
$e = '';
if(strval($c) == strval($chkvalue)) {
$e = (!$xhtml) ? ' selected' : ' selected="selected"' ;
}
if($echoit) {
echo $e;
} else {
return $e;
}
}
function is_checked($c, $chkvalue, $xhtml=1, $echoit=1) {
$e = '';
if(strval($c) == strval($chkvalue)) {
$e = (!$xhtml) ? ' checked' : ' checked="checked"' ;
}
if($echoit) {
echo $e;
} else {
return $e;
}
}
function check_checkbox($c) {
//Prüft, ob korrekte Werte via Checkbox übergeben wurden
$c = intval($c);
if($c != 0 AND $c != 1) $c = 0;
return $c;
}
function which_ext($filename) {
// return file extension
return strtolower(str_replace('.', '', strrchr(trim($filename), '.')));
}
function cut_ext($dateiname) {
//cuts extension of file
$cutoff = strrpos($dateiname, '.');
return ($cutoff !== false) ? substr($dateiname, 0, $cutoff) : $dateiname;
}
function fsize($zahl,$spacer=' ',$short=1) {
//Creates Filesize-Info
//number_format($_FILES["wcsfile"]["size"] / 1024, 0, ',', '.')." kB)
//$short 0 = ultrashort = B, K, M, G, T
//$short 1 = short = B, KB, MB, GB, TB
//$short 2 = long = Byte, KiloByte, MegaByte, GigaByte, TeraByte
$_unit = array(
0 => array( "B" => "B", "K" => "K", "M" => "M",
"G" => "G", "T" => "T"
),
1 => array( "B" => "Byte", "K" => "KB", "M" => "MB",
"G" => "GB", "T" => "TB"
),
2 => array( "B" => "Byte", "K" => "KiloByte", "M" => "MegaByte",
"G" => "GigaByte", "T" => "TeraByte"
) );
$zahl = intval($zahl);
if($zahl < 1024) {
$zahl = number_format($zahl, 0, '.', '.');
$unit = "B";
} elseif($zahl < 1048576) {
$zahl = number_format($zahl/1024, 2, '.', '.');
$unit = "K";
} elseif ($zahl < 1073741824) {
$zahl = number_format($zahl/1048576, 2, '.', '.');
$unit = "M";
} elseif ($zahl < 1099511627776) {
$zahl = number_format($zahl/1073741824, 2, '.', '.');
$unit = "G";
} else {
$zahl = number_format($zahl/1125899906842624, 2, ' ', '.');
$unit = "T";
}
return $zahl.$spacer.$_unit[$short][$unit];
}
function fsizelong($zahl,$spacer=' ') {
return fsize($zahl,$spacer,1);
}
function extimg($ext) {
//get extension image
$img = array (
"exe" => "icon_exe.gif", "com" => "icon_exe.gif",
"bat" => "icon_exe.gif", "pdf" => "icon_pdf.gif",
"txt" => "icon_txt.gif", "xls" => "icon_xls.gif",
"cvs" => "icon_xls.gif", "rtf" => "icon_txt.gif",
"htm" => "icon_htm.gif", "html" => "icon_htm.gif",
"pix" => "icon_pix.gif", "tif" => "icon_pix.gif",
"jpg" => "icon_pix.gif", "jpeg" => "icon_pix.gif",
"gif" => "icon_pix.gif", "png" => "icon_pix.gif",
"psd" => "icon_pix.gif", "rar" => "icon_rar.gif",
"zip" => "icon_zip.gif", "tar" => "icon_zip.gif",
"gzip" => "icon_zip.gif", "sit" => "icon_sit.gif",
"sea" => "icon_sit.gif", "doc" => "icon_doc.gif",
"dot" => "icon_doc.gif", "ai" => "icon_ai.gif",
"ps" => "icon_ps.gif", "eps" => "icon_eps.gif",
"tar" => "icon_tar.gif", "gz" => "icon_gz.gif",
"tgz" => "icon_gz.gif", "aif" => "icon_snd.gif",
"aiff" => "icon_snd.gif", "mp3" => "icon_snd.gif",
"snd" => "icon_snd.gif", "wav" => "icon_snd.gif",
"mid" => "icon_snd.gif", "mov" => "icon_vid.gif",
"avi" => "icon_vid.gif", "qt" => "icon_vid.gif",
"mpeg" => "icon_vid.gif"
);
return (isset($img[$ext])) ? $img[$ext] : "icon_generic.gif";
}
function randpassword($length=6) {
//totally random password creation
return generic_string($length);
}
function generic_string($length, $i=0) {
$gen_string = '';
$p[0] = "abcdefghijklmnopqrstuvwxyz";
$p[1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$p[2] = "1234567890";
switch($i) {
case 1: $chars = $p[0].$p[2]; break;
case 2: $chars = $p[1].$p[2]; break;
case 3: $chars = $p[0].$p[1]; break;
case 4: $chars = $p[0]; break;
case 5: $chars = $p[1]; break;
case 6: $chars = $p[2]; break;
default: $chars = $p[0].$p[2].$p[1];
}
mt_srand((double)microtime()*1000000);
$count = strlen($chars)-1;
for($i = 0; $i < $length; $i++){
$gen_string .= substr($chars, mt_rand(0,$count),1);
}
return $gen_string;
}
function genlogname() {
$usercount = _dbQuery('SELECT COUNT(*) FROM '.DB_PREPEND."phpwcms_user WHERE usr_login LIKE 'user%'", 'COUNT');
$usercount = $usercount ? $usercount+1 : 1;
return 'user'.$usercount;
}
function gib_part($value, $part, $separator) {
//Gibt den Wert an Stelle $part von $value zurück
$value_array = explode($separator, $value);
return $value_array[$part];
}
function cut_string($string, $endchar = '…', $length = 20, $trim = 1) {
// alias function for older function
return getCleanSubString($string, $length, $endchar);
}
function which_folder_active($ist, $soll, $ac="#9BBECA", $nc="#363E57", $nclass="msgreiter") {
if($ist == $soll) {
echo "bgcolor='".$ac."' class='".$nclass."'";
} else {
echo "bgcolor='".$nc."' class='".$nclass."' ";
echo "onMouseOver=\"bgColor='#FF6600'\" onMouseOut=\"bgColor='".$nc."'\"";
}
}
function FileExtension($filename) {
return substr(strrchr($filename, "."), 1, strlen(strrchr($filename, ".")));
}
function convert_into($extension) {
//check which extension to give back
$extension = strtolower($extension);
$ext = 'jpg';
if(IMAGICK_ON) {
switch($extension) {
case 'gif': $ext = 'gif'; break;
case 'png': $ext = 'png'; break;
}
} else {
switch($extension) {
case 'gif': $ext = (imagetypes() & IMG_GIF) ? "gif" : "png";
break;
case 'png': $ext = 'png'; break;
}
}
return $ext;
}
function is_ext_true($extension) {
$ext = false;
if(IMAGICK_ON) {
// if ImageMagick for thumbnail creation
switch($extension) {
case "jpg": $ext="jpg"; break;
case "jpeg": $ext="jpg"; break;
case "tif": $ext="jpg"; break;
case "tiff": $ext="jpg"; break;
case "psd": $ext="jpg"; break;
case "bmp": $ext="jpg"; break;
case "pic": $ext="jpg"; break;
case "eps": $ext="jpg"; break;
case "ps": $ext="jpg"; break;
case "ai": $ext="jpg"; break;
case "ps2": $ext="jpg"; break;
case "ps3": $ext="jpg"; break;
case "pn": $ext="jpg"; break;
case "wmf": $ext="jpg"; break;
case "gif": $ext="gif"; break;
case "png": $ext="png"; break;
case "tga": $ext="jpg"; break;
case "pdf": $ext="jpg"; break;
case "pict": $ext="jpg"; break;
case "jp2": $ext="jpg"; break;
case "jpc": $ext="jpg"; break;
case "ico": $ext="jpg"; break;
case "fax": $ext="jpg"; break;
}
} else {
// if GD is used
switch($extension) {
case "jpg": $ext="jpg"; break;
case "jpeg": $ext="jpg"; break;
case "gif": $ext=(imagetypes() & IMG_GIF) ? "gif" : "png";
break;
case "png": $ext="png"; break;
}
}
if($ext && !empty($GLOBALS['phpwcms']["imgext_disabled"])) {
$GLOBALS['phpwcms']["imgext_disabled"] = str_replace(' ', '', $GLOBALS['phpwcms']["imgext_disabled"]);
$GLOBALS['phpwcms']["imgext_disabled"] = strtolower($GLOBALS['phpwcms']["imgext_disabled"]);
$disabled_ext = explode(',', $GLOBALS['phpwcms']["imgext_disabled"]);
if(in_array($ext, $disabled_ext)) {
$ext = false;
}
}
return $ext;
}
function make_date($datestring, $dateformat = "d.m.y") {
$unixtime=strtotime($datestring);
return ($unixtime) ? date($dateformat, $unixtime) : $datestring;
}
function switch_on_off($wert) {
//switches the value off->on and on->off
return intval($wert) ? 0 : 1;
}
function online_users($dbcon, $spacer=" and ", ' ', '
", $wrap="|") {
$wrap = explode("|", $wrap);
$x=0; $xo="";
if($o = mysql_query("SELECT logged_user FROM ".DB_PREPEND."phpwcms_userlog WHERE logged_in=1", $dbcon)) {
while($uo = mysql_fetch_row($o)) {
$xo .= ($x) ? $spacer : "";
$xo .= html_specialchars($uo[0]);
$x++;
}
mysql_free_result($o);
}
return ($x) ? $wrap[0].$xo.$wrap[1] : "";
}
function get_filecat_childcount ($fcatid, $dbcon) {
$sql = "SELECT COUNT(fkey_id) FROM ".DB_PREPEND."phpwcms_filekey WHERE fkey_deleted=0 AND fkey_cid=".intval($fcatid);
if($result = mysql_query($sql, $dbcon)) {
if($row = mysql_fetch_row($result)) $count = $row[0];
mysql_free_result($result);
}
return intval($count);
}
function is_valid_email($email) {
// Split it into sections to make life easier
$email_array = explode('@', $email);
$count = count($email_array);
// First, we check that there's one @ symbol, and that the lengths are right
if($count != 2) {
return false;
}
if(empty($email_array[0]) || strlen($email_array[0]) > 64) {
return false;
}
if(empty($email_array[1]) || strlen($email_array[1]) > 255) {
return false;
}
$local_array = explode('.', $email_array[0]);
for ($i = 0; $i < count($local_array); $i++) {
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
return false;
}
}
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
$domain_array = explode('.', $email_array[1]);
$count = count($domain_array);
if ($count < 2) {
return false; // Not enough parts to domain
}
for ($i = 0; $i < $count; $i++) {
if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
return false;
}
}
// check if it is valid TLD
$tld = strtolower($domain_array[ $count-1 ]);
// Updated 2009-09-14
$tld_all = array(
'ac',
'ad',
'ae',
'aero',
'af',
'ag',
'ai',
'al',
'am',
'an',
'ao',
'aq',
'ar',
'arpa',
'as',
'asia',
'at',
'au',
'aw',
'ax',
'az',
'ba',
'bb',
'bd',
'be',
'bf',
'bg',
'bh',
'bi',
'biz',
'bj',
'bm',
'bn',
'bo',
'br',
'bs',
'bt',
'bv',
'bw',
'by',
'bz',
'ca',
'cat',
'cc',
'cd',
'cf',
'cg',
'ch',
'ci',
'ck',
'cl',
'cm',
'cn',
'co',
'com',
'coop',
'cr',
'cu',
'cv',
'cx',
'cy',
'cz',
'de',
'dj',
'dk',
'dm',
'do',
'dz',
'ec',
'edu',
'ee',
'eg',
'er',
'es',
'et',
'eu',
'fi',
'fj',
'fk',
'fm',
'fo',
'fr',
'ga',
'gb',
'gd',
'ge',
'gf',
'gg',
'gh',
'gi',
'gl',
'gm',
'gn',
'gov',
'gp',
'gq',
'gr',
'gs',
'gt',
'gu',
'gw',
'gy',
'hk',
'hm',
'hn',
'hr',
'ht',
'hu',
'id',
'ie',
'il',
'im',
'in',
'info',
'int',
'io',
'iq',
'ir',
'is',
'it',
'je',
'jm',
'jo',
'jobs',
'jp',
'ke',
'kg',
'kh',
'ki',
'km',
'kn',
'kp',
'kr',
'kw',
'ky',
'kz',
'la',
'lb',
'lc',
'li',
'lk',
'lr',
'ls',
'lt',
'lu',
'lv',
'ly',
'ma',
'mc',
'md',
'me',
'mg',
'mh',
'mil',
'mk',
'ml',
'mm',
'mn',
'mo',
'mobi',
'mp',
'mq',
'mr',
'ms',
'mt',
'mu',
'museum',
'mv',
'mw',
'mx',
'my',
'mz',
'na',
'name',
'nc',
'ne',
'net',
'nf',
'ng',
'ni',
'nl',
'no',
'np',
'nr',
'nu',
'nz',
'om',
'org',
'pa',
'pe',
'pf',
'pg',
'ph',
'pk',
'pl',
'pm',
'pn',
'pr',
'pro',
'ps',
'pt',
'pw',
'py',
'qa',
're',
'ro',
'rs',
'ru',
'rw',
'sa',
'sb',
'sc',
'sd',
'se',
'sg',
'sh',
'si',
'sj',
'sk',
'sl',
'sm',
'sn',
'so',
'sr',
'st',
'su',
'sv',
'sy',
'sz',
'tc',
'td',
'tel',
'tf',
'tg',
'th',
'tj',
'tk',
'tl',
'tm',
'tn',
'to',
'tp',
'tr',
'travel',
'tt',
'tv',
'tw',
'tz',
'ua',
'ug',
'uk',
'us',
'uy',
'uz',
'va',
'vc',
've',
'vg',
'vi',
'vn',
'vu',
'wf',
'ws',
'ye',
'yt',
'yu',
'za',
'zm',
'zw',
);
if(!in_array($tld, $tld_all)) {
return false;
}
}
return true;
}
function MailVal($Addr, $Level, $Timeout = 15000) {
// just simple alias function
return is_valid_email($Addr) ? 0 : 1;
}
function read_textfile($filename, $mode='rb') {
if(is_file($filename)) {
$fd = @fopen($filename, $mode);
$text = fread($fd, filesize($filename));
fclose($fd);
return $text;
} else {
return false;
}
}
function write_textfile($filename, $text, $mode='w+b') {
if($fp = @fopen($filename, $mode)) {
if(empty($text)) $text = "\n";
fwrite($fp, $text);
fclose($fp);
return true;
} else {
return false;
}
}
function check_cache($file, $cache_timeout=0) {
if(is_file($file)) { // file exists
$filetime = filemtime($file);
$fileage = time() - $filetime;
if($cache_timeout > $fileage) {
return 'VALID'; // file is up-to-date
} else {
return 'EXPIRED'; // file is too old and expired
}
} else {
return 'MISSING'; // file not present
}
}
//added: 09-20-2003
function add_keywords_to_search ($list_of_keywords, $keywords, $spacer=" ", $start_spacer=1) {
//adds available keywords to the values used by search engine in file section
//returns a string
$kw_string = "";
if(sizeof($list_of_keywords) && $keywords) {
$kw = explode(":", $keywords);
if(sizeof($kw)) {
foreach($kw as $value) {
list($kw_cat, $kw_id) = explode("_", $value);
$kw_id = intval($kw_id);
if($kw_string) {
$kw_string .= $spacer;
}
if(isset($list_of_keywords[$kw_id])) {
$kw_string .= $list_of_keywords[$kw_id];
}
}
}
}
return (($start_spacer) ? $spacer : "") . $kw_string;
}
function get_list_of_file_keywords() {
//reads possible keywords defined by admin and returns
//array with values if exists
//else it returns false
if($result = mysql_query("SELECT * FROM ".DB_PREPEND."phpwcms_filekey")) {
while($row = mysql_fetch_assoc($result)) {
$file_key[intval($row["fkey_id"])] = html_specialchars($row["fkey_name"]);
}
mysql_free_result($result);
}
return (!empty($file_key) && count($file_key)) ? $file_key : false;
}
function get_int_or_empty($value, $emptyreturn='""') {
//is used to return configuration values
//that's why the default empty return value is ""
$value = intval($value);
return ($value) ? $value : $emptyreturn;
}
function get_pix_or_percent($val) {
//is used to return configuration width/height values
//whether based on pixel or percent
//that's why the default empty return value is ""
//returns a string
$val = trim($val);
$intval = intval($val);
if(strlen($val) > 1 && strlen($val)-1 == strrpos($val, "%") && $intval) {
$val = (($intval > 100) ? "100" : $intval)."%";
} else {
$val = ($intval) ? $intval : "";
}
return $val;
}
function check_URL($url) {
//checks if URL is valid
$fp = @fopen($url, "r");
if(!$fp) {
$url_status = 0;
} else {
$url_status = 1;
fclose($fp);
}
return $url_status;
}
function validate_email($email) {
// checks if the Email is well formatted
return preg_match("/[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $email);
}
function validate_url($url) {
// checks if the URL is well formatted
return preg_match("/(((ht|f)tps*:\/\/)*)((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((\/|\?)[a-z0-9~#%&'_\+=:\?\.-]*)*)$/", $url);
}
function convert_url($text) {
// converts URLs in Texts to link
$text = eregi_replace("((ht|f)tp(s*)://www\.|www\.)([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})((/|\?)[a-z0-9~#%&\\/'_\+=:\?\.-]*)*)", "http\\3://www.\\4", $text);
$text = eregi_replace("((ht|f)tp(s*)://)((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%&'_\+=:\?\.-]*)*)", "\\0", $text);
return $text;
}
function link_url($text) {
// converts URLs in Texts to link
$text = eregi_replace("((ht|f)tp(s*)://www\.|www\.)([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})((/|\?)[a-z0-9~#%&\\/'_\+=:\?\.-]*)*)", "http\\3://www.\\4", $text);
$text = eregi_replace("((ht|f)tp(s*)://)((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%&'_\+=:\?\.-]*)*)", "\\0", $text);
return $text;
}
function convert_email($text) {
// converts Email addresses in Texts to mailto link
return eregi_replace("([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))", "mailto:\\0", $text);
}
function link_email($text) {
// converts Email addresses in Texts to mailto link
return eregi_replace("([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))", "\\0", $text);
}
function convert_all_links($text) {
// combines convertMail and convertURL
$text = link_url($text);
$text = link_email($text);
return $text;
}
function convert_url_email($text) {
// combines convertMail and convertURL
$text = convert_email($text);
$text = convert_url($text);
return $text;
}
function validate_url_email($text) {
// combined url email validation
if(validate_email($text) || validate_url($text)) {
return 1;
} else {
return 0;
}
}
function remove_multiple_whitespaces($text) {
// removes all multiple whitespaces from string
return preg_replace("/(\s)+/"," ",$text);
}
function cut_redirect($text) {
// formats the redirect string
// returns only the first 2 parts if availabe like
// "part1 part2 part3" -> "part1 part2"
// if only 1 part is returned trim the string
return trim(preg_replace("/((.*?)\s(.*?))\s(.*)/","$1",$text));
}
function format_redirect($text) {
// combines remove_multiple_whitespaces and cut_redirect
return cut_redirect(remove_multiple_whitespaces($text));
}
function gd_image_check($file) {
// when GD thumbnail creation is enabled
// then check if image can be used by GD image function
// GIF, JPG, PNG
$status = 1;
if(!IMAGICK_ON) {
$image_check = getimagesize($file);
$status = (!$image_check) ? 0 : 1;
if($status && $image_check["channels"] < 4 && ($image_check[2] == 1 || $image_check[2] == 2 || $image_check[2] == 3)) {
$status = 1;
} else {
$status = 0;
}
}
return $status;
}
function encode($in_str, $charset) {
$out_str = $in_str;
if ($out_str && $charset) {
// define start delimimter, end delimiter and spacer
$end = "?=";
$start = "=?" . $charset . "?B?";
$spacer = $end . "\r\n " . $start;
// determine length of encoded text within chunks
// and ensure length is even
$length = 75 - strlen($start) - strlen($end);
$length = floor($length/2) * 2;
// encode the string and split it into chunks
// with spacers after each chunk
$out_str = base64_encode($out_str);
$out_str = chunk_split($out_str, $length, $spacer);
// remove trailing spacer and
// add start and end delimiters
$spacer = preg_quote($spacer);
$out_str = preg_replace("/" . $spacer . "$/", "", $out_str);
$out_str = $start . $out_str . $end;
}
return $out_str;
}
function js_singlequote($t='') {
// make singe quotes js compatible
$t = str_replace("\\", "\\\\", $t );
$t = str_replace("\", "\\\\", $t );
$t = str_replace("'", ''', $t);
//$t = str_replace("'", "\\'", $t);
$t = str_replace('"', '"', $t );
//$t = str_replace('"', '\"', $t );
//$t = str_replace(':', ':', $t ); //send by pappnase
return $t;
}
function get_tmpl_files($dir='', $ext='', $sort=true) {
//browse a dir and return all template files
$c = '\.html|\.htm|\.php|\.inc|\.tmpl'; //$c = '\.html|\.htm|\.txt|\.php|\.inc|\.tmpl';
if($ext) {
$ext = explode(',', $ext);
if(count($ext)) {
$c = '';
foreach($ext as $value) {
if($c) $c .= '|';
$c .= '\.'.$value;
}
}
}
$regexp = '/('.$c.')$/';
$fa = array(); //file array
if(is_dir($dir)) {
$ph = opendir($dir);
while($pf = readdir($ph)) {
if( $pf != '.' && $pf != '..' && !is_dir($dir.'/'.$pf) && preg_match($regexp, strtolower($pf)) ) {
$fa[] = $pf; //add $pf to file array for current dir
}
}
closedir($ph);
if(count($fa) && $sort === true) {
sort($fa);
}
}
return $fa;
}
function get_tmpl_section($s='',$t='') {
// try to return the matching section of template
// within HTML comments like ...
return (preg_match("/(.*?)/si", $t, $g)) ? $g[1] : '';
}
function replace_tmpl_section($s='',$t='',$r='') {
// try to delete the matching section of template
// within HTML comments like ...
return preg_replace("/(.*?)/si", $r, $t);
}
// -------------------------------------------------------------
function importedFile_toString($filename='') {
$file = array();
if(isset($_FILES[$filename]) && !$_FILES[$filename]['error']) {
$file['name'] = $_FILES[$filename]['name'];
$file['data'] = file_get_contents($_FILES[$filename]['tmp_name']);
} else {
$file = false;
}
return $file;
}
// -------------------------------------------------------------
function get_order_sort($order=0, $resort=0) {
// for getting right article structure sorting INT
// $o[0] = $acat_order; $o[1] = $acat_ordersort;
$o = array(3);
$order = intval($order);
switch($order) {
case 0: $o[0] = 0; $o[1] = 0; $o[2] = ' article_sort ASC'; break;
case 1: $o[0] = 0; $o[1] = 1; $o[2] = ' article_sort DESC'; break;
case 2: $o[0] = 2; $o[1] = 0; $o[2] = ' article_created ASC'; break;
case 3: $o[0] = 2; $o[1] = 1; $o[2] = ' article_created DESC'; break;
case 4: $o[0] = 4; $o[1] = 0; $o[2] = ' article_tstamp ASC'; break;
case 5: $o[0] = 4; $o[1] = 1; $o[2] = ' article_tstamp DESC'; break;
case 6: $o[0] = 6; $o[1] = 0; $o[2] = ' article_begin ASC'; break;
case 7: $o[0] = 6; $o[1] = 1; $o[2] = ' article_begin DESC'; break;
case 8: $o[0] = 8; $o[1] = 0; $o[2] = ' article_title ASC'; break;
case 9: $o[0] = 8; $o[1] = 1; $o[2] = ' article_title DESC'; break;
case 10: $o[0] = 10; $o[1] = 0; $o[2] = ' article_end ASC'; break;
case 11: $o[0] = 10; $o[1] = 1; $o[2] = ' article_end DESC'; break;
}
$o[2] = ' article_priorize DESC,'.$o[2];
return $o;
}
// -------------------------------------------------------------
function getRefererURL() {
if(strtolower(substr($GLOBALS['phpwcms']['site'],0,5)) != 'https') {
$url = 'http://';
} else {
$url = 'https://';
}
$url .= $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
return $url;
}
// -------------------------------------------------------------
function build_QueryString() {
// used to build a query string based on given parameters
// there is no limitation in length
// first Parameter is the delimtere char
// build_QueryString('&', 'k=1', 'b=5')
$numargs = func_num_args();
$query = array();
$delimeter = '';
if ($numargs) {
$delimeter = func_get_arg(0);
for ($i = 1; $i < $numargs; $i++) {
$query[] = func_get_arg($i);
}
}
return implode($delimeter, $query);
}
// -------------------------------------------------------------
function getAltTitle($string='', $altAndTitle=0, $echo=0) {
$attribute = trim($string);
switch(intval($altAndTitle)) {
case 0: // alt and title attribute
$attribute = 'alt="'.$attribute.'" title="'.$attribute.'"';
break;
case 1: // alt only
$attribute = 'alt="'.$attribute.'"';
break;
case 2: // alt only
$attribute = 'title="'.$attribute.'"';
break;
}
if($echo != 0) {
echo $attribute;
} else {
return $attribute;
}
}
// -------------------------------------------------------------
function sendEmail($data = array( 'recipient'=>'','toName'=>'','subject'=>'','isHTML'=>0,'html'=>'','text'=>'',
'attach'=>array(),'from'=>'','fromName'=>'','sender'=>'','stringAttach'=>array()) ) {
// used to send a standardized email message
global $phpwcms;
$mailInfo = array(0 => false, 1 => '');
$sendTo = array();
$from = empty($data['from']) || !is_valid_email($data['from']) ? $phpwcms['SMTP_FROM_EMAIL'] : $data['from'];
$sender = empty($data['sender']) || !is_valid_email($data['sender']) ? $from : $data['sender'];
$fromName = empty($data['fromName']) ? '' : cleanUpForEmailHeader($data['fromName']);
$toName = empty($data['toName']) ? '' : cleanUpForEmailHeader($data['toName']);
$subject = empty($data['subject']) ? 'Email sent by phpwcms' : cleanUpForEmailHeader($data['subject']);
$data['isHTML'] = empty($data['isHTML']) ? 0 : 1;
if(!is_array($data['recipient'])) {
$recipient = str_replace(' ', '', trim($data['recipient']));
$recipient = str_replace(',', ';', $recipient);
$recipient = str_replace(' ', '', $recipient);
$recipient = explode(';', $recipient);
} else {
$recipient = $data['recipient'];
}
if(is_array($recipient) && count($recipient)) {
foreach($recipient as $value) {
if(is_valid_email($value)) {
$sendTo[] = $value;
}
}
}
if(count($sendTo)) {
include_once(PHPWCMS_ROOT.'/include/inc_ext/phpmailer/class.phpmailer.php');
$mail = new PHPMailer();
$mail->Mailer = $phpwcms['SMTP_MAILER'];
$mail->Host = $phpwcms['SMTP_HOST'];
$mail->Port = $phpwcms['SMTP_PORT'];
if($phpwcms['SMTP_AUTH']) {
$mail->SMTPAuth = 1;
$mail->Username = $phpwcms['SMTP_USER'];
$mail->Password = $phpwcms['SMTP_PASS'];
}
$mail->CharSet = $phpwcms["charset"];
$mail->IsHTML($data['isHTML']);
$mail->Subject = $data['subject'];
if($data['isHTML']) {
$mail->AltBody = $data['text'];
$mail->Body = $data['html'];
} else {
$mail->Body = $data['text'];
}
if(!$mail->SetLanguage($phpwcms['default_lang'])) {
$mail->SetLanguage('en');
}
$mail->From = $from;
$mail->FromName = $fromName;
$mail->Sender = $sender;
$mail->AddAddress($sendTo[0], $toName);
unset($sendTo[0]);
if(is_array($sendTo) && count($sendTo)) {
foreach($sendTo as $value) {
$mail->AddBCC($value);
}
}
if(isset($data['attach']) && is_array($data['attach']) && count($data['attach'])) {
foreach($data['attach'] as $attach_file) {
$mail->AddAttachment($attach_file);
}
}
if(isset($data['stringAttach']) && is_array($data['stringAttach']) && count($data['stringAttach'])) {
$attach_counter = 1;
foreach($data['stringAttach'] as $attach_string) {
if(is_array($attach_string) && !empty($attach_string['data'])) {
$attach_string['filename'] = empty($attach_string['filename']) ? 'attachment_'.$attach_counter : $attach_string['filename'];
$attach_string['mime'] = empty($attach_string['mime']) ? 'application/octet-stream' : $attach_string['mime'];
$attach_string['encoding'] = empty($attach_string['encoding']) ? 'base64' : $attach_string['encoding'];
$mail->AddStringAttachment($attach_string['data'], $attach_string['filename'], $attach_string['encoding'], $attach_string['mime']);
$attach_counter++;
}
}
}
if(!$mail->Send()) {
$mailInfo[0] = false;
$mailInfo[1] = $mail->ErrorInfo;
} else {
$mailInfo[0] = true;
}
unset($mail);
} else {
$mailInfo[0] = false;
$mailInfo[1] = 0; //means no recipient
}
return $mailInfo;
}
// -------------------------------------------------------------
function getFormTrackingValue() {
//creates a new form tracking entry in database
//returns a
$ip = getRemoteIP();
$hash = md5($ip.$GLOBALS['phpwcms']["db_pass"].date('G'));
$entry_id = time();
if(!empty($GLOBALS['phpwcms']["form_tracking"])) {
$sql = "INSERT INTO ".DB_PREPEND."phpwcms_formtracking SET ";
$sql .= "formtracking_hash = '".$hash."', ";
$sql .= "formtracking_ip = '".aporeplace($ip)."'";
if($entry_created = mysql_query($sql, $GLOBALS['db'])) {
$entry_id = mysql_insert_id($GLOBALS['db']);
}
}
return '';
}
function checkFormTrackingValue() {
//compare given tracking value against db tracking entry
$ip = getRemoteIP();
$hash1 = md5($ip.$GLOBALS['phpwcms']["db_pass"].date('G'));
$hash2 = md5($ip.$GLOBALS['phpwcms']["db_pass"].date('G', time()-3600)); //max form delay of 1 hour
$valid = false;
if(isset($_POST[$hash1])) {
// form method POST
$entry_id = intval($_POST[$hash1]);
$valid = true;
unset($_POST[$hash1]);
} elseif(isset($_POST[$hash2])) {
// form method POST 1 hour ago
$entry_id = intval($_POST[$hash2]);
$valid = true;
unset($_POST[$hash2]);
} else {
// hm, no hash means - ERROR
$valid = false;
}
return $valid;
}
// -------------------------------------------------------------
function dumpVar($var, $commented=false) {
//just a simple funcction returning formatted print_r()
switch($commented) {
case 1: echo "\n\n";
return NULL;
break;
case 2: return ''.html_entities(print_r($var, true)).'
';
break;
default: echo '';
echo html_entities(print_r($var, true));
echo '
';
return NULL;
}
}
// -------------------------------------------------------------
// workaround functions for PHP < 4.3
if(!function_exists('file_get_contents')) {
function file_get_contents($file) {
$f = fopen($file,'r');
if (!$f) return '';
$t = '';
while ($s = fread($f,100000)) $t .= $s;
fclose($f);
return $t;
}
}
if(!function_exists('html_entity_decode')) {
function html_entity_decode($string, $test='', $charset='') {
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return strtr($string, $trans_tbl);
}
}
function cleanUpSpecialHtmlEntities($string='') {
if(isset($GLOBALS['SPECIAL_ENTITIES_TABLES'])) {
$string = str_replace($GLOBALS['SPECIAL_ENTITIES_TABLES']['latin1_encode'], $GLOBALS['SPECIAL_ENTITIES_TABLES']['latin1_decode'], $string);
$string = str_replace($GLOBALS['SPECIAL_ENTITIES_TABLES']['symbol_encode'], $GLOBALS['SPECIAL_ENTITIES_TABLES']['symbol_decode'], $string);
$string = str_replace($GLOBALS['SPECIAL_ENTITIES_TABLES']['specialchars_encode'], $GLOBALS['SPECIAL_ENTITIES_TABLES']['specialchars_decode'], $string);
}
return $string;
}
function encode_SpecialHtmlEntities($string='', $mode='ALL') {
global $SPECIAL_ENTITIES_TABLES;
switch($mode) {
case 'LATIN':
$string = str_replace($SPECIAL_ENTITIES_TABLES['latin1_decode'], $SPECIAL_ENTITIES_TABLES['latin1_encode'], $string);
break;
case 'SYMBOL':
$string = str_replace($SPECIAL_ENTITIES_TABLES['symbol_decode'], $SPECIAL_ENTITIES_TABLES['symbol_encode'], $string);
break;
case 'LATIN SYMBOL':
case 'SYMBOL LATIN':
$string = str_replace($SPECIAL_ENTITIES_TABLES['latin1_decode'], $SPECIAL_ENTITIES_TABLES['latin1_encode'], $string);
$string = str_replace($SPECIAL_ENTITIES_TABLES['symbol_decode'], $SPECIAL_ENTITIES_TABLES['symbol_encode'], $string);
break;
case 'SPECIALCHARS':
$string = str_replace($SPECIAL_ENTITIES_TABLES['specialchars_decode'], $SPECIAL_ENTITIES_TABLES['specialchars_encode'], $string);
break;
case 'LATIN SPECIALCHARS':
case 'SPECIALCHARS LATIN':
$string = str_replace($SPECIAL_ENTITIES_TABLES['latin1_decode'], $SPECIAL_ENTITIES_TABLES['latin1_encode'], $string);
$string = str_replace($SPECIAL_ENTITIES_TABLES['specialchars_decode'], $SPECIAL_ENTITIES_TABLES['specialchars_encode'], $string);
break;
case 'SYMBOL SPECIALCHARS':
case 'SPECIALCHARS SYMBOL':
$string = str_replace($SPECIAL_ENTITIES_TABLES['symbol_decode'], $SPECIAL_ENTITIES_TABLES['symbol_encode'], $string);
$string = str_replace($SPECIAL_ENTITIES_TABLES['specialchars_decode'], $SPECIAL_ENTITIES_TABLES['specialchars_encode'], $string);
break;
default:
$string = str_replace($SPECIAL_ENTITIES_TABLES['latin1_decode'], $SPECIAL_ENTITIES_TABLES['latin1_encode'], $string);
$string = str_replace($SPECIAL_ENTITIES_TABLES['symbol_decode'], $SPECIAL_ENTITIES_TABLES['symbol_encode'], $string);
$string = str_replace($SPECIAL_ENTITIES_TABLES['specialchars_decode'], $SPECIAL_ENTITIES_TABLES['specialchars_encode'], $string);
}
return $string;
}
function cleanUpFormMailerPostValue($string = '') {
if(strpos("\n", $string) !== false) {
return '';
}
$string = clean_slweg($string);
$string = cleanUpSpecialHtmlEntities($string);
return $string;
}
function cleanUpForEmailHeader($text='') {
list($text) = explode("\n", $text);
list($text) = explode("%0D", $text);
list($text) = explode("%0d", $text);
list($text) = explode("\r", $text);
list($text) = explode("%0A", $text);
list($text) = explode("%0a", $text);
$spam = array('/bcc:/i', '/cc:/i', '/to:/i', '/from:/i', '/mime-version:/i', '/reply-to:/i');
$text = preg_replace($spam, '', $text);
return trim($text);
}
function getCleanSubString($cutString='', $maxLength, $moreChar='', $cutMode='char', $sanitize=NULL) {
// used to cut a string by words or chars
if(empty($maxLength) || $maxLength < 0) return $cutString;
if($cutMode == 'word') {
$words = preg_split("/[\s]+/", $cutString, -1, PREG_SPLIT_NO_EMPTY);
$cutString = '';
for($i = 0; $i < $maxLength; $i++) {
if(!empty($words[$i])) {
$cutString .= $words[$i].' ';
}
}
$cutString = trim($cutString);
if(count($words) > $maxLength && $moreChar) {
$cutString .= $moreChar;
}
} else {
$curString = trim($cutString);
if($curString == '') {
return '';
} elseif($maxLength >= (MB_SAFE ? mb_strlen($curString) : strlen($curString))) {
return $curString;
}
preg_match_all('/&[^;]+;|./', $curString, $match);
if(is_array($match[0]) && count($match[0]) > $maxLength) {
$match[0] = array_slice($match[0], 0, $maxLength);
$cutString = trim(implode('', $match[0]));
$cutString .= $moreChar;
}
}
/*
if($sanitize !== NULL) {
$cutString = sanitize($cutString, array(), array(), array('img', 'br', 'hr', 'input'), true);
}
*/
return $cutString;
}
function headerAvoidPageCaching() {
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") ." GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Cache-Control: post-check=0, pre-check=0", FALSE);
}
function getFileInformation($fileID) {
if(empty($fileID)) return false;
$f = '';
if(is_array($fileID)) {
if(count($fileID) == 0) return false;
$x = 0;
foreach($fileID as $value) {
if($x) {
$f .= ' OR ';
}
$f .= 'f_id='.intval($value);
$x++;
}
} elseif(intval($fileID)) {
$f = 'f_id='.intval($fileID);
} else {
return false;
}
$sql = "SELECT * FROM ".DB_PREPEND."phpwcms_file WHERE f_public=1 AND f_aktiv=1 AND f_kid=1 AND f_trash=0 AND (".$f.")";
return _dbQuery($sql);
}
function getJavaScriptSourceLink($src='', $prefix=' ') {
return ($src) ? $prefix.'' : '';
}
function convertStringToArray($string='', $seperator=',', $mode='UNIQUE', $rmvDblWSp=true) {
// clean up a seperator seperated string and return as array
if(trim($string) == '') return array();
// replace all duplicate white chars by single space
if($rmvDblWSp) $string = preg_replace('/\s\s+/', ' ', $string);
$string = explode($seperator, $string);
$string = array_map('trim', $string);
$string = array_diff($string, array('',NULL,false));
if($mode=='UNIQUE') {
$string = array_unique($string);
}
return $string;
}
function decode_entities($text) {
$text = @html_entity_decode($text, ENT_QUOTES, PHPWCMS_CHARSET);
if(strpos($text, '&') === false) return $text;
$text = preg_replace_callback('/([0-9a-f]+);/i', 'convertHexNumericToChar', $text);
$text = preg_replace_callback('/([0-9]+);/', 'convertNumericToChar', $text);
return $text;
}
function convertHexNumericToChar($matches) {
return convertDecChar(hexdec($matches[1]));
}
function convertNumericToChar($matches) {
return convertDecChar($matches[1]);
}
function convertDecChar($decChar) {
if($decChar < 128) {
return chr($decChar);
} elseif($decChar < 2048) {
return chr(($decChar>>6)+192).chr(($decChar&63)+128);
} elseif($decChar < 65536) {
return chr(($decChar>>12)+224).chr((($decChar>>6)&63)+128).chr(($decChar&63)+128);
} elseif($decChar < 2097152) {
return chr($decChar>>18+240).chr((($decChar>>12)&63)+128).chr(($decChar>>6)&63+128).chr($decChar&63+128);
}
return $decChar;
}
function is_html($string='') {
$length_1 = strlen($string);
$length_2 = strlen(strip_tags($string));
if($length_1 != $length_2) {
return true;
}
$length_2 = strlen(decode_entities($string));
if($length_1 != $length_2) {
return true;
}
return false;
}
function stripped_cache_content($page='') {
// clean up html page
$page = preg_replace('@@si', '', $page);
$page = str_replace('><', '> <', $page);
$page = strip_tags($page);
$page = decode_entities($page);
$page = preg_replace('/\s+/s', ' ', $page);
return $page;
}
function optimizeForSearch() {
// used to build a string optimized for search
$numargs = func_num_args();
$text = '';
if($numargs) {
for ($i = 0; $i < $numargs; $i++) {
$text .= ' ' . func_get_arg($i);
}
$text = stripped_cache_content($text);
$text = cleanUpSpecialHtmlEntities($text);
$text = decode_entities($text);
$text = str_replace(array('!', '"', "'", '.', '#', ';', '~', '+', '*', '%', '&', '$', '§', ':', '@', ',', '|'), ' ', $text);
$text = preg_replace('/\[.*?\]/', '', $text);
$text = preg_replace('/\{.*?\}/', '', $text);
$text = strtoupper($text);
$text = implode(' ', convertStringToArray($text, ' ', 'UNIQUE', false) );
}
return $text;
}
function return_bytes_shorten($val, $round=2, $return_bytes=0) {
$last = strtolower($val{strlen(trim($val))-1});
if(empty($return_bytes)) {
$space = '';
$byte = '';
} else {
$space = $return_bytes;
$byte = 'B';
}
if($last == 'k' || $last == 'm' || $last == 'g' || $last == 't') {
$val = trim($val);
if($byte) $val .= $space.'Byte';
return $val;
}
$val = ceil($val);
if($val >= (1024 * 1024 * 1024 * 1024)) {
//T
$val = round($val / (1024 * 1024 * 1024 * 1024), $round);
$val .= $space.'T'.$byte;
} elseif($val >= (1024 * 1024 * 1024)) {
//G
$val = round($val / (1024 * 1024 * 1024), $round);
$val .= $space.'G'.$byte;
} elseif($val >= (1024 * 1024)) {
//M
$val = round($val / (1024 * 1024), $round);
$val .= $space.'M'.$byte;
} elseif($val >= 1024) {
//K
$val = round($val / 1024, $round);
$val .= $space.'K'.$byte;
} elseif($val < 1024) {
//Byte but as 0.xxx KB
$val = round($val / 1024, $round+1);
$val .= $space.'K'.$byte;
}
return $val;
}
function return_bytes($val) {
// taken from: http://de3.php.net/manual/en/function.ini-get.php
$val = trim($val);
$last = strtolower($val{strlen($val)-1});
$val = floatval($val);
switch($last) {
case 't': $val *= 1024;
case 'g': $val *= 1024;
case 'm': $val *= 1024;
case 'k': $val *= 1024;
}
return ceil($val);
}
function return_upload_errormsg($value) {
$err = '';
switch ($value) {
case 0:
break;
case 1:
$err = "The uploaded file exceeds the upload_max_filesize directive (".@ini_get("upload_max_filesize").") in php.ini.";
break;
case 2:
$err = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
break;
case 3:
$err = "The uploaded file was only partially uploaded.";
break;
case 4:
$err = "No file was uploaded.";
break;
case 6:
$err = "Missing a temporary folder.";
break;
case 7:
$err = "Failed to write file to disk";
break;
default:
$err = "Unknown file upload error";
}
return $err;
}
function csvFileToArray($csvfile, $delimiter=';', $heading=false, $enclosure='"', $linelength=1000) {
//import CSV file and convert to array
if(!is_file($csvfile)) return false;
$first = 0;
$datas = array();
$phpver = version_compare('4.3.0', phpversion(), '<');
if($phpver) {
$oldini = ini_get('auto_detect_line_endings');
@ini_set('auto_detect_line_endings', '1');
}
$handle = fopen($csvfile, 'rb');
while( ($data = fgetcsv($handle, $linelength, $delimiter, $enclosure)) !== false ) {
// continue in case there is header row
if($heading && !$first) {
foreach($data as $key => $value) {
$value = trim($value);
$datas[0][$key] = $value ? $value : 'Column'.$key;
}
$first++;
continue;
}
if(trim(implode('', $data)) == '') {
continue;
}
$datas[$first] = $data;
$first++;
}
fclose($handle);
if ($phpver) {
@ini_set('auto_detect_line_endings', $oldini);
}
return $datas;
}
function shortHash($string='', $_Hash_function='md5') {
return rtrim( base64_encode( pack('H*', $_Hash_function( $string ) ) ), '=' );
}
function replaceGlobalRT($string='') {
$string = str_replace(array('{SITE}', '{PHPWCMS_URL}'), PHPWCMS_URL, $string);
$string = str_replace('{PHPWCMS_TEMPLATE}', TEMPLATE_PATH, $string);
$string = str_replace('{IP}', getRemoteIP(), $string);
//$string = preg_replace_callback('/\{(DATE|GMDATE):(.*?)\}/', 'formatRTDate', $string);
$string = renderRTDate($string);
return $string;
}
function renderRTDate($string='') {
return preg_replace_callback('/\{(DATE|GMDATE):(.*?)\}/', 'formatRTDate', $string);
}
function formatRTDate($matches) {
// very cool function to render date or gmdate
// - {DATE:DATE_FORMAT}, {GMDATE:DATE_FORMAT},
// - {DATE:DATE_FORMAT SET:TIMESTAMP}, {GMDATE:DATE_FORMAT SET:TIMESTAMP}
$type = strtolower($matches[1]);
$matches = explode(' SET:', $matches[2]);
if(empty($matches[1])) {
return $type($matches[0]);
}
$matches[1] = trim($matches[1]);
if(is_numeric($matches[1])) {
$matches[1] = intval($matches[1]);
return $type($matches[0], $matches[1]);
}
return $type($matches[0], strtotime($matches[1]));
}
function makeCharsetConversion($string='', $in_charset='utf-8', $out_charset='utf-8', $entityEncode=false) {
global $phpwcms;
$in_charset = strtolower($in_charset);
$out_charset = strtolower($out_charset);
if(empty($string) || $in_charset == $out_charset || empty($in_charset) || empty($out_charset)) {
return $string;
}
$phpCharsetSuppport = returnCorrectCharset($in_charset);
if($phpCharsetSuppport) {
$string = doHtmlEntityPHPCleanUp($string, $phpCharsetSuppport);
}
if($entityEncode) {
$convertInOut = $in_charset.$out_charset.'EntitiesOn';
$entityEncode = true;
} else {
$convertInOut = $in_charset.$out_charset.'EntitiesOff';
$entityEncode = false;
}
if(!isset($phpwcms['convert_charsets'])) {
$phpwcms['convert_charsets'] = array();
}
if(!isset($phpwcms['convert_charsets'][$convertInOut])) {
require_once (PHPWCMS_ROOT.'/include/inc_ext/ConvertCharset/ConvertCharset.class.php');
$phpwcms['convert_charsets'][$convertInOut] = new ConvertCharset($in_charset, $out_charset, $entityEncode);
}
$NewEncoding =& $phpwcms['convert_charsets'][$convertInOut];
return $NewEncoding->Convert($string);
}
function doHtmlEntityPHPCleanUp($string, $charset) {
$string = html_entities($string);
return decode_entities($string);
}
function returnCorrectCharset($in_charset='') {
$in_charset = strtolower($in_charset);
switch($in_charset) {
case 'iso-8859-1':
case 'iso8859-1': $in_charset = 'iso-8859-1';
break;
case 'iso-8859-15':
case 'iso8859-15': $in_charset = 'iso-8859-15';
break;
case 'utf-8': $in_charset = 'utf-8';
break;
case 'cp866':
case 'ibm866':
case '866': $in_charset = version_compare(phpversion(), '4.3.2', '<') ? false : 'cp866';
break;
case 'cp1251':
case 'windows-1251':
case 'win-1251':
case '1251': $in_charset = version_compare(phpversion(), '4.3.2', '<') ? false : 'windows-1251';
break;
case 'cp1252':
case 'windows-1252':
case 'win-1252':
case '1252': $in_charset = 'windows-1252';
break;
case 'koi8-r':
case 'koi8-ru':
case 'koi8r': $in_charset = version_compare(phpversion(), '4.3.2', '<') ? false : 'koi8-r';
break;
case 'big5':
case '950': $in_charset = 'big5';
break;
case 'gb2312':
case '936': $in_charset = 'gb2312';
break;
case 'big5-hkscs': $in_charset = 'big5-hkscs';
break;
case 'shift_jis':
case 'sjis':
case '932': $in_charset = 'shift_jis';
break;
case 'euc-jp':
case 'eucjp': $in_charset = 'euc-jp';
break;
default: $in_charset = false;
}
return $in_charset;
}
function returnSubdirListAsArray($dir='') {
// browse a given path and return all sub directories
if(empty($dir) || !is_dir($dir)) {
return false;
}
$subdir = array();
$ph = opendir($dir);
while($pf = readdir($ph)) {
if(is_dir($dir.'/'.$pf) && strpos($pf, '.') !== 0) { //$pf != '.' && $pf != '..' &&
$subdir[] = $pf;
}
}
closedir($ph);
return $subdir;
}
function returnFileListAsArray($dir='', $extfilter='') {
// browse a given path and return all contained files
if(empty($dir) || !is_dir($dir)) {
return false;
}
$files = array();
$ph = opendir($dir);
$extfilter = strtolower(trim($extfilter));
$extfilter = $extfilter ? convertStringToArray($extfilter) : array();
$dofilter = count($extfilter) ? true : false;
while($pf = readdir($ph)) {
if(is_file($dir.'/'.$pf) && strpos($pf, '.') !== 0) { //$pf != '.' && $pf != '..' &&
$ext = which_ext($pf);
if($dofilter) {
if(!in_array($ext, $extfilter)) {
continue;
}
}
$files[$pf] = array( 'filename' => $pf,
'filesize' => filesize($dir.'/'.$pf),
'filetime' => filemtime($dir.'/'.$pf),
'ext' => $ext
);
}
}
closedir($ph);
return $files;
}
function parse_ini_str($Str, $ProcessSections=true, $SplitInNameValue=false) {
/*
for parsing a string formatted like INI file
[Files]
x=File1
y=File2
*/
$Section = NULL;
$Data = array();
if ($Temp = strtok($Str,"\r\n")) {
do {
switch ($Temp{0}) {
case ';':
case '#': break;
case '[': if (!$ProcessSections) break;
$Pos = strpos($Temp,'[');
$Section = substr($Temp,$Pos+1,strpos($Temp,']',$Pos)-1);
if($Section) $Data[$Section] = array();
break;
default: $Pos = strpos($Temp,'=');
if ($Pos === FALSE) break;
if(!$SplitInNameValue) {
$key = trim(substr($Temp,0,$Pos));
$val = trim(substr($Temp,$Pos+1),' "');
if ($ProcessSections && $Section) {
$Data[$Section][$key] = $val;
} else {
$Data[$key] = $val;
}
} else {
$Value = array();
$Value["NAME"] = trim(substr($Temp,0,$Pos));
$Value["VALUE"] = trim(substr($Temp,$Pos+1),' "');
if ($ProcessSections && $Section) {
$Data[$Section][] = $Value;
} else {
$Data[] = $Value;
}
}
break;
}
} while ($Temp = strtok("\r\n"));
}
return $Data;
}
function getCookieDomain() {
$domain = parse_url(PHPWCMS_URL);
$domain = strtolower($domain['host']);
if(strpos($domain, 'www') === 0) {
$domain = substr($domain, 3);
}
return $domain;
}
function _mkdir($target) {
// taken from WordPress
if (file_exists($target)) { // from php.net/mkdir user contributed notes
return (!@is_dir($target)) ? false : true;
}
umask(0);
if(@mkdir($target)) { // Attempting to create the directory may clutter up our display.
$stat = @stat(dirname($target));
$dir_perms = $stat['mode'] & 0007777; // Get the permission bits.
@chmod($target, $dir_perms);
return true;
} elseif(is_dir(dirname($target))) {
return false;
}
if (_mkdir(dirname($target))) { // If the above failed, attempt to create the parent node, then try again.
return _mkdir($target);
}
return false;
}
function saveUploadedFile($file, $target, $exttype='', $imgtype='', $rename=0, $maxsize=0) {
// imgtype can be all exif_imagetype supported by your PHP install
// see http://www.php.net/exif_imagetype
$file_status = array(
'status' => false, 'error' => '', 'name' => '',
'tmp_name' => '', 'size' => 0, 'path' => '',
'ext' => '', 'rename' => '', 'maxsize' => intval($maxsize),
'error_num' => 0, 'type' => '' );
if(!isset($_FILES[$file]) || !is_uploaded_file($_FILES[$file]['tmp_name'])) {
$file_status['error'] = 'Upload not defined';
return $file_status;
}
$file_status['name'] = trim($_FILES[$file]['name']);
$file_status['ext'] = which_ext($file_status['name']);
$file_status['tmp_name'] = $_FILES[$file]['tmp_name'];
$file_status['size'] = $_FILES[$file]['size'];
$file_status['type'] = empty($_FILES[$file]['type']) ? '' : $_FILES[$file]['type'];
$file_status['path'] = $target;
$file_status['rename'] = $file_status['name'];
$file_status['maxsize'] = empty($file_status['maxsize']) ? $GLOBALS['phpwcms']['file_maxsize'] : $file_status['maxsize'];
if(intval($file_status['size']) > $file_status['maxsize']) {
$file_status['error'] = 'File is too large';
$file_status['error_num'] = 400;
return $file_status;
}
if(empty($target)) {
$file_status['error'] = 'Target directory not defined';
$file_status['error_num'] = 412;
return $file_status;
}
if(!@_mkdir($target)) {
$file_status['error'] = 'The target directory "'.$target.'" can not be found or generated';
$file_status['error_num'] = 412;
return $file_status;
}
if($_FILES[$file]['error']) {
$file_status['error'] = $_FILES[$file]['error'];
$file_status['error_num'] = 0;
return $file_status;
}
if($imgtype) {
$imgtype = convertStringToArray(strtolower($imgtype));
if(count($imgtype)) {
$data = @getimagesize($_FILES[$file]['tmp_name']);
$exif_imagetype = array(
1=>'gif', 2=>'jpeg', 2=>'jpg', 3=>'png', 4=>'swf', 5=>'psd',
6=>'bmp', 7=>'tif', 8=>'tiff', 9=>'jpc', 10=>'jp2', 11=>'jpx',
12=>'jb2', 13=>'swc', 14=>'iff', 15=>'wbmp', 16=>'xbm' );
if(!$data && !$exttype) {
$file_status['error'] = 'Format'.($file_status['ext'] ? ' *.'.$file_status['ext'] : '').' not supported (';
$allowed = array();
foreach($imgtype as $value) {
$allowed[] = '*.'.$exif_imagetype[$value];
}
$file_status['error'] .= implode(', ', $allowed).')';
$file_status['error_num'] = 415;
@unlink($_FILES[$file]['tmp_name']);
return $file_status;
} elseif($data) {
if(empty($exif_imagetype[$data[2]]) || !in_array($data[2], $imgtype)) {
$file_status['error'] = 'File type ('.$data[2].') is not supported for this upload ('.implode(', ', $imgtype).' only)';
$file_status['error_num'] = 415;
@unlink($_FILES[$file]['tmp_name']);
return $file_status;
}
$file_status['image'] = $data;
$exttype = '';
}
}
}
if($exttype) {
$exttype = convertStringToArray(strtolower($exttype));
if(!in_array($file_status['ext'], $exttype)) {
$file_status['error'] = 'File type *.'.$file_status['ext'].' is not supported for this upload (*.'.implode(', *.', $exttype).' only)';
$file_status['error_num'] = 415;
@unlink($_FILES[$file]['tmp_name']);
return $file_status;
}
}
if(!is_writable($target)) {
$file_status['error'] = 'Target directory '.str_replace(PHPWCMS_ROOT, '', $target).' is not writable';
$file_status['error_num'] = 412;
@unlink($_FILES[$file]['tmp_name']);
return $file_status;
}
$rename = convertStringToArray($rename);
if(count($rename)) {
$_temp_name = cut_ext($file_status['rename']);
foreach($rename as $value) {
switch($value) {
case 1: $_temp_name = str_replace(array(':','/',"\\",' '), array('-','-','-','_'), remove_accents($_temp_name) );
$_temp_name = preg_replace('/[^0-9a-z_\-\.]/i', '', $_temp_name);
break;
case 2: $_temp_name = time().'_'.$_temp_name;
break;
case 3: $_temp_name = date('Ymd-His').'_'.$_temp_name;
break;
case 4: $_temp_name = date('Ymd').'_'.$_temp_name;
break;
case 5: $_temp_name = generic_string(6).'_'.$_temp_name;
break;
case 6: $_temp_name = md5( $_temp_name . ( $file_status['ext'] ? '.' . $file_status['ext'] : '' ) );
break;
case 7: $_temp_name = shortHash( $_temp_name . ( $file_status['ext'] ? '.' . $file_status['ext'] : '' ) );
break;
}
}
$file_status['rename'] = $_temp_name . ( $file_status['ext'] ? '.' . $file_status['ext'] : '' );
}
@umask(0);
if(!@move_uploaded_file($_FILES[$file]['tmp_name'], $target.$file_status['rename'])) {
if(!copy($_FILES[$file]['tmp_name'], $target.$file_status['rename'])) {
$file_status['error'] = 'Saving uploaded file '.html_entities($file_status['name']).' to '.html_entities(str_replace(PHPWCMS_ROOT, '', $target.$file_status['rename'])).' failed';
$file_status['error_num'] = 412;
@unlink($_FILES[$file]['tmp_name']);
return $file_status;
}
}
@chmod($target.$file_status['rename'], 0644);
$file_status['status'] = true;
return $file_status;
}
function get_alnum_dashes($string, $remove_accents = false, $replace_space='-') {
if($remove_accents) {
$string = remove_accents($string);
}
$string = str_replace(' ', $replace_space, $string);
return preg_replace('/[^a-z0-9\-_]/i', '', $string);
}
// Thanks to: http://quickwired.com/smallprojects/php_xss_filter_function.php
function xss_clean($val) {
// remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
// this prevents some character re-spacing such as
*/
function plaintext_htmlencode($text='', $encode_function='html_specialchars') {
$text = trim($text);
if($text) {
$text = '[p]' . preg_replace('/\s{0,}\n\s{0,}\n\s{0,}/s', '[/p][p]', $text) . '[/p]';
$text = preg_replace('/\s{0,}\n\s{0,}/s', '[br]', $text);
$text = $encode_function($text);
$text = str_replace(array('[/p][p]', '[p]', '[/p]', '[br]'), array("
\n"), $text);
$text = render_bbcode_basics($text);
}
return $text;
}
/**
* Convert line break to
*/
function br_htmlencode($text='', $encode_function='html_specialchars') {
if($text) {
$text = $encode_function($text);
$text = nl2br($text);
}
return $text;
}
/**
* Render simple BBCode
**/
function render_bbcode_basics($text='', $mode='basic') {
if($text === '') {
return $text;
}
$text = render_bbcode_url($text);
if($mode == 'basic') {
$search = array('[i]', '[/i]', '[u]', '[/u]', '[s]', '[/s]', '[b]', '[/b]', '[em]', '[/em]', '[br]');
$replace = array('', '', '', '', '', '', '', '', '', '', '
');
return str_replace($search, $replace, $text);
}
$search = array();
$replace = array();
$search[0] = '/\[i\](.*?)\[\/i\]/is'; $replace[0] = '$1';
$search[1] = '/\[u\](.*?)\[\/u\]/is'; $replace[1] = '$1';
$search[2] = '/\[s\](.*?)\[\/s\]/is'; $replace[2] = '$1';
$search[3] = '/\[b\](.*?)\[\/b\]/is'; $replace[3] = '$1';
$search[4] = '/\[br\]/i'; $replace[4] = '
';
$search[5] = '/\[em\](.*?)\[\/em\]/is'; $replace[5] = '$1';
$search[6] = '/\[code\](.*?)\[\/code\]/is'; $replace[6] = '$1
';
$search[7] = '/\[cite\](.*?)\[\/cite\]/is'; $replace[7] = '$1';
$search[8] = '/\[li\](.*?)\[\/li\]/is'; $replace[8] = '$1
';
$search[12] = '/\[ol\](.*?)\[\/ol\]/is'; $replace[12] = '$1
';
$search[13] = '/\[dl\](.*?)\[\/dl\]/is'; $replace[13] = '$1
';
$search[14] = '/\[h1\](.*?)\[\/h1\]/is'; $replace[14] = '$1
';
$search[15] = '/\[h2\](.*?)\[\/h2\]/is'; $replace[15] = '$1
';
$search[16] = '/\[h3\](.*?)\[\/h3\]/is'; $replace[16] = '$1
';
$search[17] = '/\[h4\](.*?)\[\/h4\]/is'; $replace[17] = '$1
';
$search[18] = '/\[h5\](.*?)\[\/h5\]/is'; $replace[18] = '$1
';
$search[19] = '/\[h6\](.*?)\[\/h6\]/is'; $replace[19] = '$1
';
$search[20] = '/\[blockquote\](.*?)\[\/blockquote\]/is';
$replace[20] = '$1
';
return preg_replace($search, $replace, $text);
}
function render_bbcode_url($text) {
if($text === '') {
return $text;
}
$text = preg_replace_callback( array('/\[url=([^ ]+)(.*)\](.*)\[\/url\]/', '/\[a=([^ ]+)(.*)\](.*)\[\/a\]/'), 'get_bbcode_ahref', $text );
return preg_replace_callback( '/\[(http|https|ftp):\/\/([^ ]+)(.*)\]/', 'get_link_ahref', $text );
}
function get_bbcode_ahref($match) {
$href = empty($match[1]) ? '#' : xss_clean($match[1]);
$target = trim($match[2]) == '' ? '' : ' target="'.trim($match[2]).'"';
$text = empty($match[3]) ? $href : $match[3];
return ''.$text.'';
}
function get_link_ahref($match) {
$href = empty($match[2]) ? '#' : xss_clean($match[2]);
$text = empty($match[3]) ? $href : trim($match[3]);
return ''.$text.'';
}
/**
* Convert short file size (100M) to bytes
*/
function getBytes($size) {
if(is_numeric($size)) {
return $size;
} elseif($size) {
$_unit = array(
'B' => 1,
'K' => 1024,
'M' => 1048576,
'G' => 1073741824,
'T' => 1099511627776,
'KB' => 1024,
'MB' => 1048576,
'GB' => 1073741824,
'TB' => 1099511627776,
'BYTE' => 1,
'KILOBYTE' => 1024,
'MEGABYTE' => 1048576,
'GIGABYTE' => 1073741824,
'TERABYTE' => 1099511627776
);
$size = trim($size);
foreach($_unit as $key => $value) {
if( preg_match('/.*?'.$key.'$/i', $size) ) {
$num = trim( preg_replace('/(.*?)'.$key.'$/i', '$1', $size) );
return ceil($num * $value);
}
}
}
return $size == false ? 0 : floatval($size);
}
/**
* Try to calculate the memory necessary to
* handle the image in RAM to avoid
* errors based on memory limit.
*/
function getRealImageSize(& $imginfo) {
$size = 0;
// check image width and height
if(!empty($imginfo[0]) && !empty($imginfo[1])) {
$size = $imginfo[0] * $imginfo[1];
}
// handle possible alpha channel for PNG and TIF
$alpha = ($imginfo[2] == 3 || $imginfo[2] == 7 || $imginfo[2] == 6) ? 1 : 0;
if($size && !empty($imginfo['channels'])) {
// channel - in general this is 3 (RGB) or 4 (CMYK)
$size = $size * ( $imginfo['channels'] + $alpha );
} elseif($size && !empty($imginfo['bits'])) {
// bits - general value is 8Bit, but can be higher too
$size = $size * ( log($imginfo['bits'], 2) + $alpha );
} elseif($size) {
// use a default of 4 like for CMYK
// should meet general usage
$size = $size * ( 4 + $alpha );
}
return $size;
}
function is_intval($str) {
return (bool)preg_match( '/^[\-+]?[0-9]+$/', $str );
}
function attribute_name_clean($name='') {
$name = trim(remove_accents($name));
$name = str_replace(
array(' ','/','\\','#','+',':','.'),
array('_','-', '-','_','-','-','-'),
$name
);
$name = preg_replace('/[^a-zA-Z0-9\-_]/', '', $name);
$name = preg_replace('/^\d+/', '', $name);
return $name;
}
/**
* Try alternative way to test for bool value
*
* @param mixed
* @param bool
*/
function boolval($BOOL, $STRICT=false) {
if(is_string($BOOL)) {
$BOOL = strtoupper($BOOL);
}
// no strict test, check only against false bool
if( !$STRICT && in_array($BOOL, array(false, 0, NULL, 'FALSE', 'NO', 'N', 'OFF', '0'), true) ) {
return false;
// strict, check against true bool
} elseif($STRICT && in_array($BOOL, array(true, 1, 'TRUE', 'YES', 'Y', 'ON', '1'), true) ) {
return true;
}
// let PHP decide
return $BOOL ? true : false;
}
?>