define ("DEBUG_WARNING", 1);
define ("DEBUG_ERROR", 2);
define ("DEBUG_COMPILER", 3);
define ("DEBUG_SEVERE", 4);
define ("DEBUG_FATAL", 4);
require_once __DIR__.'/../classes/URL.php';
require_once __DIR__.'/BBCodes.php';
function urlsafe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
function urlsafe_b64decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4)
$data .= substr('====', $mod4);
return base64_decode($data);
}
/**
* Riporta se l'utente loggato nel cms appartiene ad un determinato gruppo
* @param string $gname Il nome del gruppo da controllare
* @return boolean True se l'utente loggato è l'amministratore
*/
function cmsuser_in_group($gname){
//admindebugmsg($_SESSION['adminusergroups']);
//debugmsg($_SESSION['adminusergroups']);
if (isset($_SESSION['adminusergroups']))foreach ($_SESSION['adminusergroups'] as $g){
if ($g['name']==$gname){
//debugmsg($gname);
return true;
}
}
return false;
}
/**
* Riporta se l'array è di tipo associativo
* @param mixed $arr L'array da controllare
* @return boolean True se l'array $arr è associativo
*/
function is_assoc ($arr) {
if (!$arr){
return false;
}
return array_keys($arr) !== range(0, count($arr) - 1);
}
/**
* Riporta se l'utente è loggato nel cms
* @return boolean True se l'utente è loggato nel backoffice
*/
function is_adminuser(){
//debugmsg ($_SESSION['adminuser']);
return $_SESSION['adminuser']['id'];
}
/**
* Riporta se l'utente è l'amministratore del cms
* @return boolean True se l'utente loggato è l'amministratore
*/
function is_admin(){
return cmsuser_in_group ('administrators');
}
/**
* Riporta se l'utente NON è l'amministratore
* @return boolean True se l'utente loggato è l'amministratore
*/
function is_notadmin(){
return !is_admin();
}
/**
* Visualizza un messaggio racchiuso in un box di warning (solo se loggato nel backoffice come amministratore)
* @param string $level Il livello di warning (una costante): può essere DEBUG_WARNING (default), DEBUG_ERROR
*/
function admindebugmsg($message,$level=DEBUG_WARNING, $title=''){
if (is_admin()){
debugmsg($message, $level, $title, +1);
}
}
/**
* Visualizza un messaggio racchiuso in un box di warning (solo se loggato nel backoffice come amministratore)
* @param string $level Il livello di warning (una costante): può essere DEBUG_WARNING (default), DEBUG_ERROR
*/
function admindebugmsgplain($message,$level=DEBUG_WARNING, $title=''){
if (is_admin()){
header ('Content-Type: text/plain');
debugmsg($message, $level, $title);
}
}
/**
* Visualizza un messaggio racchiuso in un box di warning (solo se loggato nel backoffice come amministratore)
* @param string $level Il livello di warning (una costante): può essere DEBUG_WARNING (default), DEBUG_ERROR
*/
function loggeddebugmsg($message,$level=DEBUG_WARNING, $title=''){
global $debug;
if (is_adminuser()){
debugmsg($message, $level, $title);
}
}
/**
* Visualizza un alert javascript con messaggio (solo se amministratore)
* @param string $message Il messaggio da visualizzare
*/
function admindebugmsgjs($message){
global $debug;
if (is_admin())
debugmsgjs($message);
}
/**
* Visualizza un alert javascript con messaggio
* @param string $message Il messaggio da visualizzare
*/
function debugmsgjs($message){
if (is_array($message) || is_object($message))
$message = print_r($message, true);
?>
}
/**
* Visualizza un messagio all'interno di una dialog box creata con jquery
* @param string $message Il messaggio da visualizzare
* @param string $title Il titolo (opzionale) della dialogbox (default: "Message")
*/
function dialogmsg($message, $title="Message"){
$id="dialogmessage_".uniqid();
?>
}
/**
* Ritorna il content type attualmente selezionato
* @return string Il content type nell'header
*/
function getContentType(){
$hdr=headers_list();
foreach ($hdr as $h){
$h=explode(':',strtolower($h));
if (trim($h[0])=='content-type')
return explode(';',trim($h[1]));
}
}
function var_dump_ret($mixed = null) {
ob_start();
var_dump($mixed);
$content = str_replace(array("\n","\r"),'',ob_get_contents());
ob_end_clean();
return $content;
}
/**
* Visualizza un messaggio racchiuso in un box di warning
* @param string $message Il messaggio da visualizzare
* @param string $level Il livello di warning (una costante): può essere DEBUG_WARNING (default), DEBUG_ERROR
*/
function debugmsg($message,$level=DEBUG_WARNING, $title='', $debug_offset = 0){
global $debug;
if (!is_numeric($level)){
$title = $level;
$level = DEBUG_WARNING;
}
$ct = getContentType();
$plain = in_array($ct[0], array('text/plain'));
$dbg = debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, 4);
// print_r ($dbg); die;
if (is_array($message) || is_object($message)){
$message = print_r($message, true);
}else
if (is_bool($message)) {
$message = $message?'{true}':'{false}';
}else
if (is_null($message)) {
$message = '{NULL}';
}else
if (empty($message)) {
$message = '{empty string}';
}else
if (is_int($message)) {
$message = "(int) $message";
}else
if (is_float($message)) {
$message = "(float) $message";
}else
;
$styles=array(DEBUG_WARNING=>'highlight',DEBUG_ERROR=>'error',DEBUG_COMPILER=>'error',DEBUG_SEVERE=>'error');
if (!$plain){
?>
}?>
:
echo htmlentities($message);
switch ($level){
case DEBUG_ERROR:
//print_r(debug_backtrace ());
$backtrace=debug_backtrace ();
echo "
";
foreach ($backtrace as $line){
if ($skippedfirst){
echo "- File:$line[file]
Line:$line[line]
Function:$line[function](";
echo implode ('","',$line['args']);
echo "); ";
}
$skippedfirst=true;
}
echo "
";
die();
case DEBUG_SEVERE:
die();
}
?>
}else{
if (is_array($message)||is_object($message))
print_r($message);
else
echo $message;
switch ($level){
case DEBUG_ERROR:
//print_r(debug_backtrace ());
$backtrace=debug_backtrace ();
echo "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
foreach ($backtrace as $line){
if ($skippedfirst){
echo "
File: $line[file]
Line: $line[line]
Function: $line[function] (\"";
echo implode ('","',$line['args']);
echo "\");\n--";
}
$skippedfirst=true;
}
echo "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
die();
case DEBUG_SEVERE:
die();
}
echo "\n";
}
}
function error_handler ($errno , $errstr , $errfile,$errline, $errcontext = null ){
debugmsg ("PHP ERROR: #$errno $errstr \nFile:\t$errfile\nLine:\t $errline", DEBUG_COMPILER);
}
set_error_handler("error_handler", E_ALL ^ E_NOTICE ^ E_WARNING);
//set_error_handler(error_handler, E_ALL);
function urlencode2($s){
$s=str_replace('?','',$s);
$s=str_replace('&','_',$s);
$s=str_replace('!','',$s);
$s=str_replace('-','_',$s);
$s=str_replace(' ','_',$s);
$s=str_replace('"','',$s);
$s=str_replace('à','a',$s);
$s=str_replace('ù','o',$s);
$s=str_replace('ò','o',$s);
$s=str_replace('ì','i',$s);
$s=str_replace('è','e',$s);
$s=str_replace('é','e',$s);
$s=str_replace('^','_',$s);
return $s;
}
function seturlparam($u, $url=null){
return URL::seturlparam($u, $url);
}
function geturlparam(){
return URL::geturlparam();
}
/**
* Come addslashes solo che controlla get_magic_quotes_gpc per vedere se lo slashing viene aggiunto automaticamente. Se fosse automatico non aggiunge gli slash (già aggiunti automaticamente da php), altrimenti usa la normale addslashes
* @param string $s Il valore da 'slasshare'
* @return string Il valore slasshizzato
*/
function _addslashes($s){
// return (get_magic_quotes_gpc()?$s:addslashes($s));
return addslashes($s);
}
/**
* Come addslashesarray solo che controlla se l'input è un'array, nel caso riporta tutto l'array slashizzato
* @param string $s Il valore da 'slasshare'
* @return string Il valore slasshizzato
*/
function addslashesarray($s){
foreach ($s as &$item)
$item=addslashes($item);
return $s;
}
/**
* Come stripslashes solo che controlla get_magic_quotes_gpc per vedere se lo slashing viene aggiunto automaticamente. Se fosse automatico non aggiunge gli slash (già aggiunti automaticamente da php), altrimenti usa la normale addslashes
* @param string $s Il valore da 'deslasshare'
* @return string Il valore deslasshizzato
*/
function _stripslashes($s){
// if (!get_magic_quotes_gpc())return $s;
if (is_array($s))
foreach ($s as &$ss)
$ss=_stripslashes($ss);
else
$s=stripslashes($s);
return $s;
}
/**
* Riporta il valore di una variabile di environment
* @param string $key Il nome (univoco) della variabile
* @param array $vars Un eventuale array associativo con le varibili impostate
* @param mixed $default Il valore di default da tornare nel caso in cui la variabile non esista
* @return string Il valore della variabile
*/
function _env ($key, $vars=null, $default=null){
global $system;
return $system->variable($key, $default, $vars);
}
/**
* Riporta se la variabile di environment esiste oppure no.
* @param string $key Il nome (univoco) della variabile
* @return boolean True se la variabile esiste
*/
function _envexists ($key){
global $system;
return $system->variable_exists ($key);
}
/**
* Imposta una variabile di environment
* @param string $key Il nome (univoco) della variabile
* @param string $value Il valore che assumerà la variabile
*/
function _envset ($key, $value){
global $system;
return $system->variable_set ($key, $value);
}
/**
* Converte tutte le occorrenze di una variabile nel suo contenuto, la conversione è ricorsiva: il valore di una variabile può a sua volta contenere variabili
* @param string $s Il testo da convertire
* @return string Il testo convertito
*/
// avrei voluto implementarla con la preg_replace_callback ma le function callback in linea funzionano solo da php >=5.3
function convert_vartags($s, &$vars=null){
global $system;
return $system->convert_vartags($s, $vars);
}
function html2txt($s){
$s=str_replace('',"\n",$s);
$s=str_replace('
',"\n",$s);
$s=str_replace('
',"\n=========================================\n",$s);
$s=str_replace('',"\t*",$s);
$s=str_replace('',"\n",$s);
$s=strip_tags ($s);
return $s;
}
/**
* Ritorna l'id della pagina in base al suo nome
* @param string $pagename il nome della pagina
* @return integer ID della pagina. null=pagina non trovata
*/
function page_byname($pagename){
return SiteDB::$self->getresult0 ("select id from pages where title='".addslashes($pagename)."'");
}
/**
* forma un url per aprire la pagina richiesta (se url_rewrite è attivo usa gli url parlanti, altrimenti usa index.php?pageid=...
* @param string $pagename il nome della pagina
* @return string URL della pagina
*/
function page_geturl($pagename){
if (_env('mod_rewrite'))
return "$pagename.html";
else{
$pageid=page_byname($pagename);
$pageid=$pageid?$pageid:page_byname(_env('notfound_page'));
return "?page=$pageid";
}
}
/**
* La pagina è su filesystem?
* @param string $pagename il nome della pagina
* @return string L'evenuale nome di file della pagina su filesystem
*/
function page_getfilesystem($pagename){
// prova localizzata
$fname="pages/$pagename.$GLOBALS[lang].php";
if (file_exists($fname))
return $fname;
// prova semplice
$fname="pages/$pagename.php";
if (file_exists($fname))
return $fname;
return false;
}
/**
* Tronca un testo fino alla massima lunghezza specificata e aggiunge puntini se l'accorciamento ha avuto effetto
* @param string $s il testo da accorciare
* @param int $max il numero massimo di caratteri possibili
* @return string Il testo accorciato
*/
function accorcia ($s, $max){
if (strlen($s)>$max)
return substr($s, 0,$max)."...";
else
return $s;
}
function wordWrapIgnoreHTML($string, $length = 45, $wrapString = "\n") {
$wrapped = '';
$word = '';
$html = false;
$string = (string) $string;
for($i=0;$i') {
$html = false;
$wrapped .= $char;
}
/** If this is inside HTML -> append to the wrapped string */
elseif($html) {
$wrapped .= $char;
}
/** Whitespace characted / new line */
elseif($char === ' ' || $char === "\t" || $char === "\n") {
$wrapped .= $word.$char;
$word = '';
}
/** Check chars */
else{
$word .= $char;
if(strlen($wrapped) > $length) {
return $wrapped.'...';
/*
$wrapped .= $word.$wrapString;
$word = '';
*/
}
}
}
if($word !== ''){
$wrapped .= $word;
}
return $wrapped;
}
/**
* Elimina il codice BBCODE ( [tag value]text[/tag] )
* @param string $s il testo da accorciare
* @param int $max il numero massimo di caratteri possibili
* @return string Il testo accorciato
*/
function strip_bbcode ($s){
$s=@preg_replace("/\[(\w+)(\s)(.*)\](.*)\[\/(\w+)\]/Usi", '$4', $s);
return $s;
}
/**
* Tronca un testo fino alla massima lunghezza specificata considerando le parole intere, aggiunge puntini se l'accorciamento ha avuto effetto
* @param string $s il testo da accorciare
* @param int $max il numero massimo di caratteri possibili
* @return string Il testo accorciato
*/
function accorcia_wrap ($s, $max){
$s=wordwrap($s,$max, "\n");
$s=explode("\n", $s);
$wrapped=count($s)>1;
return $s[0].($wrapped?' ...':'');
/*
$s=html_entity_decode($s);
if (mb_strlen($s)>$max)
return substr($s, 0,$max)."...";
else
return $s;
*/
}
/**
* Combina (OR) due stringhe binarie
* @param string $bin1 La prima stringa binaria
* @param string $bin2 La seconda stringa binaria
* @return string Il risultato della combinazione. Il risultato viene paddato a sinitra con zeri fino ad arrivare a 64 caratteri
*/
function bin_combine($bin1, $bin2){
$bin1=str_pad($bin1,64,'0',STR_PAD_LEFT);
$bin2=str_pad($bin2,64,'0',STR_PAD_LEFT);
for ($i=0;$i<64;$i++){
if ($bin2[$i]=='1')
$bin1[$i]='1';
}
return $bin1;
}
function binarystring_and($bin1, $bin2){
$bin1=str_pad($bin1,64,'0',STR_PAD_LEFT);
$bin2=str_pad($bin2,64,'0',STR_PAD_LEFT);
for($i=0;$i<64;$i++)
if ($bin1[$i]!='1' || $bin2[$i]!='1')
return false;
return true;
}
function binarystring_hasbit($bin, $bit){
$bin=str_pad($bin,64,'0',STR_PAD_LEFT);
$bit=str_pad($bit,64,'0',STR_PAD_LEFT);
for($i=0;$i<64;$i++)
if ($bit[$i]=='1' && $bin[$i]!='1')
return false;
return true;
}
/* condizioni predefinite per i moduli delle pagine */
function condition_alwayshidden(){
return false;
}
function condition_false(){
return false;
}
function condition_true(){
return true;
}
function condition_islogged(){
return isset($_SESSION['user']);
}
function condition_isloggedoff(){
return !isset($_SESSION['user']);
}
function cookiesbanner_viewed(){
$_SESSION['cookieswarning']=true;
return true;
}
function pagecondition_false(){
return false;
}
function pagecondition_true(){
return true;
}
Parse error: syntax error, unexpected end of file, expecting case (T_CASE) or default (T_DEFAULT) or '}' in /var/www/clients/client1/web2/web/admin/includes/system.php on line 938