<?php
/******************************************************************************
* Allgemeine String-Funktionen
*
* Copyright : (c) 2004 - 2011 The Admidio Team
* Homepage : http://www.admidio.org
* License : GNU Public License 2 http://www.gnu.org/licenses/gpl-2.0.html
*
*****************************************************************************/
// da die Multibyte-Funktionen nicht bei allen Installationen zur Verfuegung
// stehen, wird hier eine Fallunterscheidung gemacht
// WICHTIG: wird die Multibyte-Funktion nicht genutzt, funktioniert die Umwandlung von Umlauten nicht !!!
function admStrToLower($string)
{
if(function_exists('mb_strtolower'))
{
return mb_strtolower($string, 'UTF-8');
}
else
{
return strtolower($string);
}
}
// da die Multibyte-Funktionen nicht bei allen Installationen zur Verfuegung
// stehen, wird hier eine Fallunterscheidung gemacht
// WICHTIG: wird die Multibyte-Funktion nicht genutzt, funktioniert die Umwandlung von Umlauten nicht !!!
function admStrToUpper($string)
{
if(function_exists('mb_strtolower'))
{
return mb_strtoupper($string, 'UTF-8');
}
else
{
return strtoupper($string);
}
}
// da die Multibyte-Funktionen nicht bei allen Installationen zur Verfuegung
// stehen, wird hier eine Fallunterscheidung gemacht
// WICHTIG: wird die Multibyte-Funktion nicht genutzt, funktioniert die Umwandlung von Umlauten nicht !!!
function admEncodeMimeheader($string)
{
if(function_exists('mb_encode_mimeheader'))
{
mb_internal_encoding('UTF-8');
return mb_encode_mimeheader(stripslashes($string), 'UTF-8', 'Q');
}
else
{
return utf8_decode(stripslashes($string));
}
}
// entfernt Html-, PHP-Codes und Spaces am Anfang und Ende
// eines Strings oder aller Elemente eines Arrays
function strStripTags($srcString)
{
if(is_array($srcString))
{
// Funktion fuer jedes Arrayelement aufrufen
$srcString = array_map('strStripTags', $srcString);
}
else
{
// Spaces vorne und hinten entfernen
$srcString = trim($srcString);
// HTML und PHP Tags entfernen
$srcString = strip_tags($srcString);
}
return $srcString;
}
// fuegt Quotes einem mittels addslashes() gequoteten Array und String hinzu
function strAddSlashesDeep($value)
{
if(is_array($value))
{
$value = array_map('strAddSlashesDeep', $value);
}
else
{
$value = addslashes($value);
}
return $value;
}
// Entfernt Quotes aus einem mittels addslashes() gequoteten Array und String
function strStripSlashesDeep($value)
{
if(is_array($value))
{
$value = array_map('strStripSlashesDeep', $value);
}
else
{
$value = stripslashes($value);
}
return $value;
}
// ermittelt den vorherigen oder nächsten Buchstaben im Alphabet
// mode = 0 -> naechster Buchstabe
// mode = 1 -> vorheriger Buchstabe
//
// Bsp.: g -> h g -> f
function strNextLetter($letter, $mode = 0)
{
$ascii = ord($letter);
$aSmall = ord('a');
$zSmall = ord('z');
$aBig = ord('A');
$zBig = ord('Z');
if ($ascii == $aSmall || $ascii == $zSmall || $ascii == $aBig || $ascii == $zBig)
{
if (($ascii == $aSmall || $ascii == $aBig) && $mode == 0)
{
$ascii++;
}
if (($ascii == $zSmall || $ascii == $zBig) && $mode == 1)
{
$ascii--;
}
}
else
{
if ($mode == 1)
{
$ascii--;
}
else
{
$ascii++;
}
}
return chr($ascii);
}
// prueft den uebergebenen String auf gueltige Zeichen
// checkType kann folgende Werte haben: 'email' 'file' 'noSpecialChar' 'url'
function strValidCharacters($string, $checkType)
{
if(strlen(trim($string)) > 0)
{
switch($checkType)
{
case 'email':
$validChars = 'abcdefghijklmnopqrstuvwxyz0123456789áà âåäæÄÄÄçéèÄêÅÅñóòôöõøÅúùûüÃ.-_@';
break;
case 'file':
$validChars = 'abcdefghijklmnopqrstuvwxyz0123456789áà âåäæÄÄÄçéèÄêÅÅñóòôöõøÅúùûüÃ$&!?.-_+ ';
break;
case 'noSpecialChar':
$validChars = 'abcdefghijklmnopqrstuvwxyz0123456789.-_+@';
break;
case 'url':
$validChars = 'abcdefghijklmnopqrstuvwxyz0123456789áà âåäæÄÄÄçéèÄêÅÅñóòôöõøÅúùûüÃ.-_:/#?=';
break;
}
// nur gueltige Zeichen zulassen
$countValidChars = strspn(admStrToLower($string), $validChars);
if($countValidChars == strlen($string))
{
if($checkType == 'email')
{
// Aufbau der E-Mail-Adresse pruefen
return preg_match('/^[^@]+@[^@]+\.[^@]{2,}$/', trim($string));
}
return true;
}
}
return false;
}
// prueft, ob der Dateiname gueltig ist
// check_ext = true : prueft, ob die Dateiextension fuer den Downloadbereich gueltig ist
// Rueckgabe 0 : Dateiname ist gueltig
// -1 : kein Dateinamen uebergeben
// -2 : ungueltige Zeichen
// -3 : keine gueltige Dateiextension
function isValidFileName($file_name, $check_ext = false)
{
// If the filename was not empty
if(strlen(trim($file_name)) > 0)
{
// Dateiname darf nur gueltige Zeichen beinhalten
if(strValidCharacters($file_name, 'file')
&& strpos($file_name, '..') === false
&& substr($file_name, 0, 1) != '.')
{
if($check_ext)
{
// auf gueltige Endungen pruefen
$arr_invalid_ext = array('php', 'php3', 'php4', 'php5', 'html', 'htm', 'htaccess', 'htpasswd', 'pl',
'js', 'vbs', 'asp', 'cgi', 'ssi');
$file_ext = substr($file_name, strrpos($file_name, '.')+1);
if(in_array(strtolower($file_ext), $arr_invalid_ext))
{
return -3;
}
}
return 0;
}
else
{
return -2;
}
}
else
{
return -1;
}
}
?>