2015-05-22 11:43:20 +00:00
< ? php
$msd_path = realpath ( dirname ( __FILE__ ) . '/../' ) . '/' ;
if ( ! defined ( 'MSD_PATH' )) define ( 'MSD_PATH' , $msd_path );
if ( file_exists ( MSD_PATH . 'inc/runtime.php' )) include ( MSD_PATH . 'inc/runtime.php' );
else
die ( 'Couldn\'t read runtime.php!' );
if ( ! defined ( 'MSD_VERSION' )) die ( 'No direct access.' );
// places all Page Parameters in hidden-fields (needed fpr backup and restore in PHP)
function get_page_parameter ( $parameter , $ziel = 'dump' )
{
$page_parameter = '<form action="' . $ziel . '.php" method="POST" name="' . $ziel . '">' . " \n " ;
foreach ( $parameter as $key => $val )
{
if ( is_array ( $val ))
{
foreach ( $val as $key2 => $val2 )
{
$page_parameter .= '<input type="hidden" name="' . $key . '[' . $key2 . ']' . '" value="' . $val2 . '">' . " \n " ;
}
}
else
$page_parameter .= '<input type="hidden" name="' . $key . '" value="' . $val . '">' . " \n " ;
}
$page_parameter .= '</form>' ;
return $page_parameter ;
}
function mu_sort ( $array , $key_sort )
{
$key_sorta = explode ( ',' , $key_sort );
$keys = array_keys ( $array [ 0 ]);
$n = 0 ;
for ( $m = 0 ; $m < count ( $key_sorta ); $m ++ )
{
$nkeys [ $m ] = trim ( $key_sorta [ $m ]);
}
$n += count ( $key_sorta );
for ( $i = 0 ; $i < count ( $keys ); $i ++ )
{
if ( ! in_array ( $keys [ $i ], $key_sorta ))
{
$nkeys [ $n ] = $keys [ $i ];
$n += " 1 " ;
}
}
for ( $u = 0 ; $u < count ( $array ); $u ++ )
{
$arr = $array [ $u ];
for ( $s = 0 ; $s < count ( $nkeys ); $s ++ )
{
$k = $nkeys [ $s ];
if ( isset ( $array [ $u ][ $k ])) $output [ $u ][ $k ] = $array [ $u ][ $k ];
}
}
// wenn die Sortierung nicht ab- sondern aufsteigend sein soll, muss sort() benutzt werden
sort ( $output ); // Sort=Aufsteigend -> oder rsort=absteigend
return $output ;
}
function FillMultiDBArrays ()
{
global $config , $databases ;
// Nur füllen wenn überhaupt Datenbanken gefunden wurden
if (( isset ( $databases [ 'Name' ])) && ( count ( $databases [ 'Name' ]) > 0 ))
{
$databases [ 'multi' ] = Array ();
$databases [ 'multi_praefix' ] = Array ();
if ( ! isset ( $databases [ 'db_selected_index' ])) $databases [ 'db_selected_index' ] = 0 ;
if ( ! isset ( $databases [ 'db_actual' ]) && isset ( $databases [ 'Name' ])) $databases [ 'db_actual' ] = $databases [ 'Name' ][ $databases [ 'db_selected_index' ]];
if ( ! isset ( $databases [ 'multisetting' ])) $databases [ 'multisetting' ] = '' ;
// if($config['multi_dump']==1)
// {
if ( $databases [ 'multisetting' ] == '' )
{
//$databases['multi'][0]=$databases['db_actual'];
//$databases['multi_praefix'][0]=(isset($databases['praefix'][0])) ? $databases['praefix'][0] : '';
}
else
{
$databases [ 'multi' ] = explode ( ';' , $databases [ 'multisetting' ]);
$flipped = array_flip ( $databases [ 'Name' ]);
for ( $i = 0 ; $i < count ( $databases [ 'multi' ]); $i ++ )
{
if ( isset ( $flipped [ $databases [ 'multi' ][ $i ]]))
{
$ind = $flipped [ $databases [ 'multi' ][ $i ]];
$databases [ 'multi_praefix' ][ $i ] = ( isset ( $databases [ 'praefix' ][ $ind ])) ? $databases [ 'praefix' ][ $ind ] : '' ;
}
}
}
// }
/*
else
{
$databases [ 'multi' ][ 0 ] = ( isset ( $databases [ 'db_actual' ])) ? $databases [ 'db_actual' ] : '' ;
$databases [ 'multi_praefix' ][ 0 ] = ( isset ( $databases [ 'praefix' ])) ? $databases [ 'praefix' ][ $databases [ 'db_selected_index' ]] : '' ;
}
*/
}
}
function DBDetailInfo ( $index )
{
global $databases , $config ;
$databases [ 'Detailinfo' ][ 'tables' ] = $databases [ 'Detailinfo' ][ 'records' ] = $databases [ 'Detailinfo' ][ 'size' ] = 0 ;
MSD_mysql_connect ();
if ( isset ( $databases [ 'Name' ][ $index ]))
{
2016-02-01 19:02:15 +00:00
(( bool ) mysqli_query ( $GLOBALS [ " ___mysqli_ston " ], " USE " . $databases [ 'Name' ][ $index ]));
2015-05-22 11:43:20 +00:00
$databases [ 'Detailinfo' ][ 'Name' ] = $databases [ 'Name' ][ $index ];
2016-02-01 19:02:15 +00:00
$res =@ mysqli_query ( $GLOBALS [ " ___mysqli_ston " ], 'SHOW TABLE STATUS FROM `' . $databases [ 'Name' ][ $index ] . '`' );
if ( $res ) $databases [ 'Detailinfo' ][ 'tables' ] = mysqli_num_rows ( $res );
2015-05-22 11:43:20 +00:00
if ( $databases [ 'Detailinfo' ][ 'tables' ] > 0 )
{
$s1 = $s2 = 0 ;
2016-02-01 19:02:15 +00:00
while ( $row = mysqli_fetch_array ( $res , MYSQLI_ASSOC ))
2015-05-22 11:43:20 +00:00
{
$s1 += $row [ 'Rows' ];
$s2 += $row [ 'Data_length' ] + $row [ 'Index_length' ];
}
$databases [ 'Detailinfo' ][ 'records' ] = $s1 ;
$databases [ 'Detailinfo' ][ 'size' ] = $s2 ;
}
}
}
function Stringformat ( $s , $count )
{
if ( $count >= strlen ( $s )) return str_repeat ( " 0 " , $count - strlen ( $s )) . $s ;
else
return $s ;
}
function getmicrotime ()
{
list ( $usec , $sec ) = explode ( " " , microtime ());
return (( float ) $usec + ( float ) $sec );
}
function MD_FreeDiskSpace ()
{
global $lang ;
$dfs =@ diskfreespace ( " ../ " );
return ( $dfs ) ? byte_output ( $dfs ) : $lang [ 'L_NOTAVAIL' ];
}
function WriteDynamicText ( $txt , $object )
{
return '<script language="JavaScript">WP("' . addslashes ( $txt ) . ',' . $object . '");</script>' ;
}
function byte_output ( $bytes , $precision = 2 , $names = Array ())
{
if ( ! is_numeric ( $bytes ) || $bytes < 0 )
{
return false ;
}
for ( $level = 0 ; $bytes >= 1024 ; $level ++ )
{
$bytes /= 1024 ;
}
switch ( $level )
{
case 0 :
$suffix = ( isset ( $names [ 0 ])) ? $names [ 0 ] : '<span class="explain" title="Bytes">B</span>' ;
break ;
case 1 :
$suffix = ( isset ( $names [ 1 ])) ? $names [ 1 ] : '<span class="explain" title="KiloBytes">KB</span>' ;
break ;
case 2 :
$suffix = ( isset ( $names [ 2 ])) ? $names [ 2 ] : '<span class="explain" title="MegaBytes">MB</span>' ;
break ;
case 3 :
$suffix = ( isset ( $names [ 3 ])) ? $names [ 3 ] : '<span class="explain" title="GigaBytes">GB</span>' ;
break ;
case 4 :
$suffix = ( isset ( $names [ 4 ])) ? $names [ 4 ] : '<span class="explain" title="TeraBytes">TB</span>' ;
break ;
case 5 :
$suffix = ( isset ( $names [ 4 ])) ? $names [ 4 ] : '<span class="explain" title="PetaBytes">PB</span>' ;
break ;
case 6 :
$suffix = ( isset ( $names [ 4 ])) ? $names [ 4 ] : '<span class="explain" title="ExaBytes">EB</span>' ;
break ;
case 7 :
$suffix = ( isset ( $names [ 4 ])) ? $names [ 4 ] : '<span class="explain" title="YottaBytes">ZB</span>' ;
break ;
default :
$suffix = ( isset ( $names [ $level ])) ? $names [ $level ] : '' ;
break ;
}
return sprintf ( " %01. " . $precision . " f " , round ( $bytes , $precision )) . ' ' . $suffix ;
}
function ExtractDBname ( $s )
{
$sp = explode ( '_' , $s );
$anz = count ( $sp ) - 1 ;
$r = 0 ;
if ( $anz > 4 )
{
$df = 5 ; //Datumsfelder
if ( $sp [ $anz - 1 ] == 'part' ) $df += 2 ;
if ( $sp [ $anz - 3 ] == 'crondump' || $sp [ $anz - 1 ] == 'crondump' ) $df += 2 ;
$anz = $anz - $df ; //Datum weg
for ( $i = 0 ; $i <= $anz ; $i ++ )
{
$r += strlen ( $sp [ $i ]) + 1 ;
}
return substr ( $s , 0 , $r - 1 );
}
else
{
//Fremdformat
return substr ( $s , 0 , strpos ( $s , '.' ));
}
}
function ExtractBUT ( $s )
{
$i = strpos ( strtolower ( $s ), " part " );
if ( $i > 0 ) $s = substr ( $s , 0 , $i - 1 );
$i = strpos ( strtolower ( $s ), " crondump " );
if ( $i > 0 ) $s = substr ( $s , 0 , $i - 1 );
$i = strpos ( strtolower ( $s ), " .sql " );
if ( $i > 0 ) $s = substr ( $s , 0 , $i );
$sp = explode ( " _ " , $s );
$anz = count ( $sp ) - 1 ;
if ( strtolower ( $sp [ $anz ]) == 'perl' ) $anz -- ;
if ( $anz > 4 )
{
return $sp [ $anz - 2 ] . " . " . $sp [ $anz - 3 ] . " . " . $sp [ $anz - 4 ] . " " . $sp [ $anz - 1 ] . " : " . $sp [ $anz ];
}
else
{
//Fremdformat
return " " ;
}
}
function WriteLog ( $aktion )
{
global $config , $lang ;
$log = date ( 'd.m.Y H:i:s' ) . ' ' . htmlspecialchars ( $aktion ) . " \n " ;
$logfile = ( $config [ 'logcompression' ] == 1 ) ? $config [ 'files' ][ 'log' ] . '.gz' : $config [ 'files' ][ 'log' ];
if ( @ filesize ( $logfile ) + strlen ( $log ) > $config [ 'log_maxsize' ]) @ unlink ( $logfile );
//Datei öffnen und schreiben
if ( $config [ 'logcompression' ] == 1 )
{
$fp =@ gzopen ( $logfile , 'a' );
if ( $fp )
{
@ gzwrite ( $fp , $log ) . '<br>' ;
@ gzclose ( $fp );
}
else
echo '<p class="warnung">' . $lang [ 'L_LOGFILENOTWRITABLE' ] . ' (' . $logfile . ')</p>' ;
}
else
{
$fp =@ fopen ( $logfile , " ab " );
if ( $fp )
{
@ fwrite ( $fp , $log );
@ fclose ( $fp );
}
else
echo '<p class="warnung">' . $lang [ 'L_LOGFILENOTWRITABLE' ] . ' (' . $logfile . ')</p>' ;
}
}
function ErrorLog ( $dest , $db , $sql , $error , $art = 1 )
{
//$art=0 -> Fehlermeldung
//$art=1 -> Hinweis
global $config ;
if ( strlen ( $sql ) > 100 ) $sql = substr ( $sql , 0 , 100 ) . " ... (snip) " ;
//Error-Zeile generieren
$errormsg = date ( 'd.m.Y H:i:s' ) . ': ' ;
$errormsg .= ( $dest == 'RESTORE' ) ? ' Restore of db `' . $db . '`|:|' : ' Dump of db `' . $db . '`|:|' ;
if ( $art == 0 )
{
$errormsg .= '<font color="red">Error-Message: ' . $error . '</font>|:|' ;
}
else
{
$errormsg .= '<font color="green">Notice: ' . $error . '</font>|:|' ;
}
if ( $sql > '' ) $errormsg .= 'SQL: ' . $sql . " \n " ;
//Datei öffnen und schreiben
if ( $config [ 'logcompression' ] == 1 )
{
$fp =@ gzopen ( $config [ 'paths' ][ 'log' ] . 'error.log.gz' , 'ab' );
if ( $fp )
{
@ gzwrite ( $fp ,( $errormsg ));
@ gzclose ( $fp );
}
}
else
{
$fp =@ fopen ( $config [ 'paths' ][ 'log' ] . 'error.log' , 'ab' );
if ( $fp )
{
@ fwrite ( $fp ,( $errormsg ));
@ fclose ( $fp );
}
}
}
function DirectoryWarnings ( $path = " " )
{
global $config , $lang ;
$warn = '' ;
if ( ! is_writable ( $config [ 'paths' ][ 'work' ])) $warn .= sprintf ( $lang [ 'L_WRONG_RIGHTS' ], $config [ 'paths' ][ 'work' ], '0777' );
if ( ! is_writable ( $config [ 'paths' ][ 'config' ])) $warn .= sprintf ( $lang [ 'L_WRONG_RIGHTS' ], $config [ 'paths' ][ 'config' ], '0777' );
if ( ! is_writable ( $config [ 'paths' ][ 'backup' ])) $warn .= sprintf ( $lang [ 'L_WRONG_RIGHTS' ], $config [ 'paths' ][ 'backup' ], '0777' );
if ( ! is_writable ( $config [ 'paths' ][ 'log' ])) $warn .= sprintf ( $lang [ 'L_WRONG_RIGHTS' ], $config [ 'paths' ][ 'log' ], '0777' );
if ( $warn != '' ) $warn = '<span class="warnung"><strong>' . $warn . '</strong></span>' ;
return $warn ;
}
function TestWorkDir ()
{
global $config ;
$ret = SetFileRechte ( $config [ 'paths' ][ 'work' ]);
if ( $ret === true ) $ret = SetFileRechte ( $config [ 'paths' ][ 'backup' ]);
if ( $ret === true ) $ret = SetFileRechte ( $config [ 'paths' ][ 'log' ]);
if ( $ret === true ) $ret = SetFileRechte ( $config [ 'paths' ][ 'config' ]);
if ( $ret === true )
{
if ( ! file_exists ( $config [ 'files' ][ 'parameter' ])) SetDefault ( true );
if ( ! file_exists ( $config [ 'files' ][ 'log' ])) DeleteLog ();
}
return $ret ;
}
function SetFileRechte ( $file , $is_dir = 1 , $perm = 0777 )
{
global $lang ;
$ret = true ;
if ( $is_dir == 1 )
{
if ( substr ( $file , - 1 ) != " / " ) $file .= " / " ;
}
clearstatcache ();
// erst pruefen, ob Datei oder Verzeichnis existiert
if ( ! file_exists ( $file ))
{
// Wenn es sich um ein Verzeichnis handelt -> anlegen
if ( $is_dir == 1 )
{
$ret =@ mkdir ( $file , $perm );
if ( ! $ret === true )
{
// Hat nicht geklappt -> Rueckmeldung
$ret = sprintf ( $lang [ 'L_CANT_CREATE_DIR' ], $file );
}
}
}
// wenn bisher alles ok ist -> Rechte setzen - egal ob Datei oder Verzeichnis
if ( $ret === true )
{
$ret =@ chmod ( $file , $perm );
if ( ! $ret === true ) $ret = sprintf ( $lang [ 'L_WRONG_RIGHTS' ], $file , decoct ( $perm ));
}
return $ret ;
}
function SelectDB ( $index )
{
global $databases ;
if ( is_string ( $index )) {
// name given
$dbNames = array_flip ( $databases [ 'Name' ]);
if ( array_key_exists ( $index , $dbNames )) {
$index = $dbNames [ $index ];
}
}
if ( isset ( $databases [ 'Name' ][ $index ]))
{
$databases [ 'db_actual' ] = $databases [ 'Name' ][ $index ];
if ( isset ( $databases [ 'praefix' ][ $index ])) $databases [ 'praefix' ][ $databases [ 'db_selected_index' ]] = $databases [ 'praefix' ][ $index ];
else
$databases [ 'praefix' ][ $databases [ 'db_selected_index' ]] = '' ;
if ( isset ( $databases [ 'db_selected_index' ])) $databases [ 'db_selected_index' ] = $index ;
else
$databases [ 'db_selected_index' ] = 0 ;
}
else
{
// keine DB vorhanden
$databases [ 'praefix' ][ $databases [ 'db_selected_index' ]] = '' ;
$databases [ 'db_selected_index' ] = 0 ;
$databases [ 'db_actual' ] = '' ;
}
}
function EmptyDB ( $dbn )
{
global $config ;
$t_sql = array ();
2016-02-01 19:02:15 +00:00
@ mysqli_query ( $GLOBALS [ " ___mysqli_ston " ], 'SET FOREIGN_KEY_CHECKS=0' );
$res = mysqli_query ( $config [ 'dbconnection' ], 'SHOW TABLE STATUS FROM `' . $dbn . '`' ) or die ( 'EmptyDB: ' . (( is_object ( $GLOBALS [ " ___mysqli_ston " ])) ? mysqli_error ( $GLOBALS [ " ___mysqli_ston " ]) : (( $___mysqli_res = mysqli_connect_error ()) ? $___mysqli_res : false )));
WHILE ( $row = mysqli_fetch_array ( $res , MYSQLI_ASSOC ))
2015-05-22 11:43:20 +00:00
{
if ( substr ( strtoupper ( $row [ 'Comment' ]), 0 , 4 ) == 'VIEW' )
{
$t_sql [] = 'DROP VIEW `' . $dbn . '`.`' . $row [ 'Name' ] . '`' ;
}
else
{
$t_sql [] = 'DROP TABLE `' . $dbn . '`.`' . $row [ 'Name' ] . '`' ;
}
}
if ( sizeof ( $t_sql ) > 0 )
{
for ( $i = 0 ; $i < count ( $t_sql ); $i ++ )
{
2016-02-01 19:02:15 +00:00
$res = mysqli_query ( $GLOBALS [ " ___mysqli_ston " ], $t_sql [ $i ]) or die ( 'EmptyDB-Error: ' . (( is_object ( $GLOBALS [ " ___mysqli_ston " ])) ? mysqli_error ( $GLOBALS [ " ___mysqli_ston " ]) : (( $___mysqli_res = mysqli_connect_error ()) ? $___mysqli_res : false )));
2015-05-22 11:43:20 +00:00
}
}
2016-02-01 19:02:15 +00:00
@ mysqli_query ( $GLOBALS [ " ___mysqli_ston " ], 'SET FOREIGN_KEY_CHECKS=1' );
2015-05-22 11:43:20 +00:00
}
function AutoDelete ()
{
global $del_files , $config , $lang , $out ;
$out = '' ;
if ( $config [ 'max_backup_files' ] > 0 )
{
//Files einlesen
$dh = opendir ( $config [ 'paths' ][ 'backup' ]);
$dbbackups = array ();
$files = array ();
// Build assoc Array $db=>$timestamp=>$filenames
while ( false !== ( $filename = readdir ( $dh )))
{
if ( $filename != '.' && $filename != '..' &&! is_dir ( $config [ 'paths' ][ 'backup' ] . $filename ))
{
//statuszeile auslesen
if ( substr ( $filename , - 2 ) == 'gz' )
{
$fp = gzopen ( $config [ 'paths' ][ 'backup' ] . $filename , 'r' );
$sline = gzgets ( $fp , 40960 );
gzclose ( $fp );
}
else
{
$fp = fopen ( $config [ 'paths' ][ 'backup' ] . $filename , 'r' );
$sline = fgets ( $fp , 500 );
fclose ( $fp );
}
$statusline = ReadStatusline ( $sline );
if ( $statusline [ 'dbname' ] != 'unknown' )
{
$tabellenanzahl = ( $statusline [ 'tables' ] ==- 1 ) ? '' : $statusline [ 'tables' ];
$eintraege = ( $statusline [ 'records' ] ==- 1 ) ? '' : $statusline [ 'records' ];
$part = ( $statusline [ 'part' ] == 'MP_0' || $statusline [ 'part' ] = '' ) ? 0 : substr ( $statusline [ 'part' ], 3 );
$db_name = $statusline [ 'dbname' ];
$datum = substr ( $filename , strlen ( $db_name ) + 1 );
$timestamp = substr ( $datum , 0 , 16 );
if ( ! isset ( $files [ $db_name ])) $files [ $db_name ] = array ();
if ( ! isset ( $files [ $db_name ][ $timestamp ])) $files [ $db_name ][ $timestamp ] = array ();
$files [ $db_name ][ $timestamp ][] = $filename ;
}
}
}
$out = '' ; // stores output messages
// Backups pro DB und Timestamp ermitteln
foreach ( $files as $db => $val )
{
//echo "<br>DB ".$db." hat ".sizeof($val)." Backups.";
if ( sizeof ( $val ) > $config [ 'max_backup_files' ])
{
$db_files = $val ;
krsort ( $db_files , SORT_STRING );
//now latest backupfiles are on top -> delete all files with greater index
$i = 0 ;
foreach ( $db_files as $timestamp => $filenames )
{
if ( $i >= $config [ 'max_backup_files' ])
{
// Backup too old -> delete files
foreach ( $filenames as $f )
{
if ( $out == '' ) $out .= $lang [ 'L_FM_AUTODEL1' ] . '<br>' ;
if ( @ unlink ( './' . $config [ 'paths' ][ 'backup' ] . $f ))
{
$out .= '<span class="nomargin">' . sprintf ( $lang [ 'L_DELETE_FILE_SUCCESS' ], $f ) . '</span><br>' ;
}
else
{
$out .= $lang [ 'L_ERROR' ] . ': <span class="error nomargin">' . sprintf ( $lang [ 'L_DELETE_FILE_ERROR' ], $f ) . '</span><br>' ;
}
}
}
$i ++ ;
}
}
}
}
return $out ;
}
function DeleteFile ( $files , $function = 'max' )
{
global $config , $lang ;
$delfile = explode ( " | " , $files );
$r = '<p class="error">' . $lang [ 'L_FM_AUTODEL1' ] . '<br>' ;
$r .= $delfile [ 3 ] . " <br> " ;
$part = $delfile [ 2 ];
if ( $part > 0 )
{
for ( $i = $part ; $i > 0 ; $i -- )
{
$delete =@ unlink ( $config [ 'paths' ][ 'backup' ] . $delfile [ 3 ]);
if ( $delete ) WriteLog ( " autodeleted ( $function ) ' $delfile[3] '. " );
}
}
else
{
WriteLog ( " autodeleted ( $function ) ' $delfile[3] '. " );
unlink ( $config [ 'paths' ][ 'backup' ] . $delfile [ 3 ]);
}
$r .= '</p>' ;
return $r ;
}
function ReadStatusline ( $line )
{
/* AUFBAU der Statuszeile :
-- Status : tabellenzahl : datensätze : Multipart : Datenbankname : script : scriptversion : Kommentar : MySQLVersion : Backupflags : SQLBefore : SQLAfter : Charset : EXTINFO
Aufbau Backupflags ( 1 Zeichen pro Flag , 0 oder 1 , 2 = unbekannt )
( complete inserts )( extended inserts )( ignore inserts )( delayed inserts )( downgrade )( lock tables )( optimize tables )
*/
global $lang ;
$statusline = Array ();
if (( substr ( $line , 0 , 8 ) != " # Status " && substr ( $line , 0 , 9 ) != " -- Status " ) || substr ( $line , 0 , 10 ) == '-- StatusC' )
{
//Fremdfile
$statusline [ 'tables' ] =- 1 ;
$statusline [ 'records' ] =- 1 ;
$statusline [ 'part' ] = 'MP_0' ;
$statusline [ 'dbname' ] = 'unknown' ;
$statusline [ 'script' ] = '' ;
$statusline [ 'scriptversion' ] = '' ;
$statusline [ 'comment' ] = '' ;
$statusline [ 'mysqlversion' ] = 'unknown' ;
$statusline [ 'flags' ] = '2222222' ;
$statusline [ 'sqlbefore' ] = '' ;
$statusline [ 'sqlafter' ] = '' ;
$statusline [ 'charset' ] = '?' ;
}
else
{
// MySQLDumper-File - Informationen extrahieren
$s = explode ( ':' , $line );
if ( count ( $s ) < 12 )
{
//fehlenden Elemente auffüllen
$c = count ( $s );
array_pop ( $s );
for ( $i = $c - 1 ; $i < 12 ; $i ++ )
{
$s [] = '' ;
}
}
$statusline [ 'tables' ] = $s [ 1 ];
$statusline [ 'records' ] = $s [ 2 ];
$statusline [ 'part' ] = ( $s [ 3 ] == '' || $s [ 3 ] == 'MP_0' ) ? 'MP_0' : $s [ 3 ];
$statusline [ 'dbname' ] = $s [ 4 ];
$statusline [ 'script' ] = $s [ 5 ];
$statusline [ 'scriptversion' ] = $s [ 6 ];
$statusline [ 'comment' ] = $s [ 7 ];
$statusline [ 'mysqlversion' ] = $s [ 8 ];
$statusline [ 'flags' ] = $s [ 9 ];
$statusline [ 'sqlbefore' ] = $s [ 10 ];
$statusline [ 'sqlafter' ] = $s [ 11 ];
if (( isset ( $s [ 12 ])) && trim ( $s [ 12 ]) != 'EXTINFO' ) $statusline [ 'charset' ] = $s [ 12 ];
else
$statusline [ 'charset' ] = '?' ;
}
//flags zerlegen
if ( strlen ( $statusline [ 'flags' ]) < 6 ) $statusline [ 'flags' ] = " 2222222 " ;
$statusline [ 'complete_inserts' ] = substr ( $statusline [ 'flags' ], 0 , 1 );
$statusline [ 'extended_inserts' ] = substr ( $statusline [ 'flags' ], 1 , 1 );
$statusline [ 'ignore_inserts' ] = substr ( $statusline [ 'flags' ], 2 , 1 );
$statusline [ 'delayed_inserts' ] = substr ( $statusline [ 'flags' ], 3 , 1 );
$statusline [ 'downgrade' ] = substr ( $statusline [ 'flags' ], 4 , 1 );
$statusline [ 'lock_tables' ] = substr ( $statusline [ 'flags' ], 5 , 1 );
$statusline [ 'optimize_tables' ] = substr ( $statusline [ 'flags' ], 6 , 1 );
return $statusline ;
}
function NextPart ( $s , $first = 0 , $keep_suffix = false )
{
$nf = explode ( '_' , $s );
$i = array_search ( 'part' , $nf ) + 1 ;
$p = substr ( $nf [ $i ], 0 , strpos ( $nf [ $i ], '.' ));
$ext = substr ( $nf [ $i ], strlen ( $p ));
if ( $first == 1 )
{
$nf [ $i ] = '1' . $ext ;
}
else
{
$nf [ $i ] =++ $p . $ext ;
}
$filename = implode ( '_' , $nf );
return $filename ;
}
function zeit_format ( $t )
{
global $lang ;
$tt_m = floor ( $t / 60 );
$tt_s = $t - ( $tt_m * 60 );
if ( $tt_m < 1 ) return floor ( $tt_s ) . ' ' . $lang [ 'L_SECONDS' ];
else if ( $tt_m == 1 ) return '1 ' . $lang [ 'L_MINUTE' ] . ' ' . floor ( $tt_s ) . ' ' . $lang [ 'L_SECONDS' ];
else return $tt_m . ' ' . $lang [ 'L_MINUTES' ] . ' ' . floor ( $tt_s ) . ' ' . $lang [ 'L_SECONDS' ];
}
function TesteFTP ( $i )
{
global $lang , $config ;
if ( ! isset ( $config [ 'ftp_timeout' ][ $i ])) $config [ 'ftp_timeout' ][ $i ] = 30 ;
$s = '' ;
if ( $config [ 'ftp_port' ][ $i ] == '' || $config [ 'ftp_port' ][ $i ] == 0 ) $config [ 'ftp_port' ][ $i ] = 21 ;
$pass =- 1 ;
if ( ! extension_loaded ( " ftp " ))
{
$s = '<br><span class="error">' . $lang [ 'L_NOFTPPOSSIBLE' ] . '</span>' ;
}
else
$pass = 0 ;
if ( $pass == 0 )
{
if ( $config [ 'ftp_server' ][ $i ] == '' || $config [ 'ftp_user' ][ $i ] == '' )
{
$s = '<br><span class="error">' . $lang [ 'L_WRONGCONNECTIONPARS' ] . '</span>' ;
}
else
$pass = 1 ;
}
if ( $pass == 1 )
{
$s = $lang [ 'L_CONNECT_TO' ] . ' `' . $config [ 'ftp_server' ][ $i ] . '` Port ' . $config [ 'ftp_port' ][ $i ];
if ( $config [ 'ftp_useSSL' ][ $i ] == 0 )
{
$conn_id =@ ftp_connect ( $config [ 'ftp_server' ][ $i ], $config [ 'ftp_port' ][ $i ], $config [ 'ftp_timeout' ][ $i ]);
}
else
{
$conn_id =@ ftp_ssl_connect ( $config [ 'ftp_server' ][ $i ], $config [ 'ftp_port' ][ $i ], $config [ 'ftp_timeout' ][ $i ]);
}
if ( $conn_id ) $login_result =@ ftp_login ( $conn_id , $config [ 'ftp_user' ][ $i ], $config [ 'ftp_pass' ][ $i ]);
if ( ! $conn_id || ( ! $login_result ))
{
$s .= '<br><span class="error">' . $lang [ 'L_CONN_NOT_POSSIBLE' ] . '</span>' ;
}
else
{
$pass = 2 ;
if ( $config [ 'ftp_mode' ][ $i ] == 1 ) ftp_pasv ( $conn_id , true );
}
}
if ( $pass == 2 )
{
$s .= '<br><strong>Login ok</strong><br>' . $lang [ 'L_CHANGEDIR' ] . ' `' . $config [ 'ftp_dir' ][ $i ] . '` ' ;
$dirc =@ ftp_chdir ( $conn_id , $config [ 'ftp_dir' ][ $i ]);
if ( ! $dirc )
{
$s .= '<br><span class="error">' . $lang [ 'L_CHANGEDIRERROR' ] . '</span>' ;
}
else
{
$pass = 3 ;
$s .= '<span class="success">' . $lang [ 'L_OK' ] . '</span>' ;
}
@ ftp_close ( $conn_id );
}
if ( $pass == 3 ) $s .= '<br><strong>' . $lang [ 'L_FTP_OK' ] . '</strong>' ;
return $s ;
}
function Realpfad ( $p )
{
global $config ;
$dir = dirname ( __FILE__ );
$dir = str_replace ( 'inc' , '' , $dir );
$dir = str_replace ( '\\' , '/' , $dir );
$dir = str_replace ( '//' , '/' , $dir );
if ( substr ( $dir , - 1 ) != '/' ) $dir .= '/' ;
return $dir ;
}
// liest die Dateiliste aller vorhanden Konfigurationsfiles
function get_config_filelist ()
{
global $config ;
$default = $config [ 'config_file' ];
clearstatcache ();
$dh = opendir ( $config [ 'paths' ][ 'config' ]);
$r = " " ;
while ( false !== ( $filename = readdir ( $dh )))
{
if ( $filename != " . " && $filename != " .. " &&! is_dir ( $config [ 'paths' ][ 'config' ] . $filename ) && substr ( $filename , - 9 ) == " .conf.php " )
{
$f = substr ( $filename , 0 , strlen ( $filename ) - 9 );
$r .= '<option value="' . $f . '" ' ;
if ( $f == $default ) $r .= ' selected' ;
$r .= '> ' . $f . ' </option>' . " \n " ;
}
}
return $r ;
}
function GetThemes ()
{
global $config ;
$default = $config [ 'theme' ];
$dh = opendir ( $config [ 'paths' ][ 'root' ] . " css/ " );
$r = " " ;
while ( false !== ( $filename = readdir ( $dh )))
{
if ( $filename != " . " && $filename != " .. " && is_dir ( $config [ 'paths' ][ 'root' ] . " css/ " . $filename ) && substr ( $filename , 0 , 1 ) != '.' && substr ( $filename , 0 , 1 ) != '_' )
{
$r .= '<option value="' . $filename . '" ' ;
if ( $filename == $default ) $r .= ' SELECTED' ;
$r .= '> ' . $filename . ' </option>' . " \n " ;
}
}
return $r ;
}
function GetLanguageCombo ( $k = " op " , $class = " " , $name = " " , $start = " " , $end = " " )
{
global $config , $lang ;
$default = $config [ 'language' ];
$dh = opendir ( $config [ 'paths' ][ 'root' ] . " language/ " );
$r = " " ;
$lang_files = array ();
while ( false !== ( $filename = readdir ( $dh )))
{
if ( $filename != " . " && $filename != '.svn' && $filename != " .. " && $filename != " flags " && is_dir ( $config [ 'paths' ][ 'root' ] . " language/ " . $filename ))
{
$lang_files [ $lang [ $filename ]] = $filename ;
}
}
ksort ( $lang_files );
$i = 1 ;
foreach ( $lang_files as $filename )
{
if ( $k == " op " )
{
$r .= $start . '<option value="' . $filename . '" ' ;
if ( $filename == $default ) $r .= ' SELECTED' ;
$r .= ' class="' . $class . '"> ' . $lang [ $filename ] . ' </option>' . $end . " \n " ;
}
elseif ( $k == " radio " )
{
$r .= $start . '<input type="radio" class="' . $class . '" name="' . $name . '" id="l' . $i . '" value="' . $filename . '" ' ;
$r .= (( $filename == $default ) ? " checked " : " " );
$r .= ' onclick="show_tooldivs(\'' . $filename . '\');">' ;
$r .= '<label for="l' . $i . '">' ;
$r .= ' <img src="language/flags/' . $filename . '.gif" alt="" width="25" height="15" border="0">' ;
$r .= ' ' . $lang [ $filename ] . '</label>' . $end . " \n " ;
}
$i ++ ;
}
return $r ;
}
// detect language subdirs and add them to the global definition of $lang
function GetLanguageArray ()
{
global $config , $lang ;
$dh = opendir ( $config [ 'paths' ][ 'root' ] . " language/ " );
unset ( $lang [ 'languages' ]);
$lang [ 'languages' ] = array ();
while ( false !== ( $filename = readdir ( $dh )))
{
if ( $filename != " . " && $filename != '.svn' && $filename != " .. " && $filename != " flags " && is_dir ( $config [ 'paths' ][ 'root' ] . " language/ " . $filename ))
{
$lang [ 'languages' ][] = $filename ;
}
}
}
function headline ( $title , $mainframe = 1 )
{
global $config , $lang ;
$s = '' ;
if ( $config [ 'interface_server_caption' ] == 1 )
{
if ( $config [ 'interface_server_caption_position' ] == $mainframe )
{
$s .= '<div id="server' . $mainframe . '">' . $lang [ 'L_SERVER' ] . ': <a class="server" href="' . getServerProtocol () . $_SERVER [ 'SERVER_NAME' ] . '" target="_blank" title="' . $_SERVER [ 'SERVER_NAME' ] . '">' . $_SERVER [ 'SERVER_NAME' ] . '</a></div>' ;
}
}
if ( $mainframe == 1 )
{
$s .= '<div id="pagetitle">' . $title . '</div>' ;
$s .= '<div id="content">' ;
}
return $s ;
}
function PicCache ( $rpath = './' )
{
global $BrowserIcon , $config ;
$t = '<div style="display:none">' ;
$dh = opendir ( $config [ 'files' ][ 'iconpath' ]);
while ( false !== ( $filename = readdir ( $dh )))
{
if ( $filename != " . " && $filename != " .. " &&! is_dir ( $config [ 'files' ][ 'iconpath' ] . $filename ))
{
$t .= '<img src="' . $config [ 'files' ][ 'iconpath' ] . $filename . '" width="16" height="16" alt="">' . " \n " ;
}
}
$t .= '</div>' ;
return $t ;
}
function MSDHeader ( $kind = 0 )
{
global $config ;
header ( 'Pragma: no-cache' );
header ( " Cache-Control: no-cache, must-revalidate " ); // HTTP/1.1
header ( " Expires: -1 " ); // Datum in der Vergangenheit
header ( 'Content-Type: text/html; charset=UTF-8' );
//kind 0=main 1=menu
$r = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">' . " \n <html> \n <head> \n " ;
$r .= '<META HTTP-EQUIV="Pragma" CONTENT="no-cache">' . " \n " ;
$r .= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . " \n " ;
$r .= '<title>MySqlDumper</title>' . " \n " ;
$r .= '<link rel="stylesheet" type="text/css" href="css/' . $config [ 'theme' ] . '/style.css">' . " \n " ;
$r .= '<script language="JavaScript" src="js/script.js" type="text/javascript"></script>' . " \n " ;
$r .= " </head> \n <body " . (( $kind == 1 ) ? ' class="menu-frame"' : ' class="content"' ) . '>' ;
return $r ;
}
function MSDFooter ( $rfoot = '' , $enddiv = 1 )
{
/*
global $config , $databases , $dump , $restore , $lang ;
if ( isset ( $config [ 'homepage' ]))
{
$f = ' < p id = " footer " > Autor : < a href = " http://www.mysqldumper.de " target = " _blank " >
Daniel Schlichtholz </ a > | Infoboard :
< a href = " '. $config['homepage'] .' " target = " _blank " > '.$config[' homepage '].' </ a ></ p > ' ;
}
else
*/
$f = '' ;
if ( $enddiv == 1 ) $f .= '</div>' ;
$f .= $rfoot . '</body></html>' ;
return $f ;
}
function save_bracket ( $str )
{
// Wenn Klammer zu am Ende steht, diese behalten
$str = trim ( $str );
if ( substr ( $str , - 1 ) == ')' ) $str = ')' ;
else
$str = '' ;
return $str ;
}
function DownGrade ( $s , $show = true )
{
$tmp = explode ( " , " , $s );
//echo "<pre>";print_r($tmp);echo "</pre>";
for ( $i = 0 ; $i < count ( $tmp ); $i ++ )
{
$t = strtolower ( $tmp [ $i ]);
if ( strpos ( $t , " collate " ))
{
$tmp2 = explode ( " " , $tmp [ $i ]);
for ( $j = 0 ; $j < count ( $tmp2 ); $j ++ )
{
if ( strtolower ( $tmp2 [ $j ]) == " collate " )
{
$tmp2 [ $j ] = " " ;
$tmp2 [ $j + 1 ] = save_bracket ( $tmp2 [ $j + 1 ]);
$j ++ ;
}
}
$tmp [ $i ] = implode ( " " , $tmp2 );
}
if ( strpos ( $t , " engine= " ))
{
$tmp2 = explode ( " " , $tmp [ $i ]);
for ( $j = 0 ; $j < count ( $tmp2 ); $j ++ )
{
if ( substr ( strtoupper ( $tmp2 [ $j ]), 0 , 7 ) == " ENGINE= " ) $tmp2 [ $j ] = " TYPE= " . substr ( $tmp2 [ $j ], 7 , strlen ( $tmp2 [ $j ]) - 7 );
if ( substr ( strtoupper ( $tmp2 [ $j ]), 0 , 8 ) == " CHARSET= " )
{
$tmp2 [ $j ] = " " ;
$tmp2 [ $j - 1 ] = save_bracket ( $tmp2 [ $j - 1 ]);
}
if ( substr ( strtoupper ( $tmp2 [ $j ]), 0 , 8 ) == " COLLATE= " )
{
$tmp2 [ $j ] = save_bracket ( $tmp2 [ $j ]);
$tmp2 [ $j - 1 ] = " " ;
}
}
$tmp [ $i ] = implode ( " " , $tmp2 );
}
// character Set sprache entfernen
if ( strpos ( $t , " character set " ))
{
$tmp2 = explode ( " " , $tmp [ $i ]);
$end = false ;
for ( $j = 0 ; $j < count ( $tmp2 ); $j ++ )
{
if ( strtolower ( $tmp2 [ $j ]) == " character " )
{
$tmp2 [ $j ] = '' ;
$tmp2 [ $j + 1 ] = save_bracket ( $tmp2 [ $j + 1 ]);
$tmp2 [ $j + 2 ] = save_bracket ( $tmp2 [ $j + 2 ]);
}
}
$tmp [ $i ] = implode ( " " , $tmp2 );
}
if ( strpos ( $t , " timestamp " ))
{
$tmp2 = explode ( " " , $tmp [ $i ]);
$end = false ;
for ( $j = 0 ; $j < count ( $tmp2 ); $j ++ )
{
if ( $end ) $tmp2 [ $j ] = " " ;
if ( strtolower ( $tmp2 [ $j ]) == " timestamp " )
{
$tmp2 [ $j ] = " TIMESTAMP(14) " ;
$end = true ;
}
}
$tmp [ $i ] = implode ( " " , $tmp2 );
}
}
$t = implode ( " , " , $tmp );
if ( substr ( rtrim ( $t ), - 1 ) != " ; " ) $t = rtrim ( $t ) . " ; " ;
return $t ;
}
function MySQL_Ticks ( $s )
{
$klammerstart = $lastklammerstart = $end = 0 ;
$inner_s_start = strpos ( $s , '(' );
$inner_s_end = strrpos ( $s , ')' );
$inner_s = substr ( $s , $inner_s_start + 1 , $inner_s_end - ( 1 + $inner_s_start ));
$pieces = explode ( ',' , $inner_s );
for ( $i = 0 ; $i < count ( $pieces ); $i ++ )
{
$r = trim ( $pieces [ $i ]);
$klammerstart += substr_count ( $r , " ( " ) - substr_count ( $r , " ) " );
if ( $i == count ( $pieces ) - 1 ) $klammerstart += 1 ;
if ( substr ( strtoupper ( $r ), 0 , 4 ) == " KEY " || substr ( strtoupper ( $r ), 0 , 7 ) == " UNIQUE " || substr ( strtoupper ( $r ), 0 , 12 ) == " PRIMARY KEY " || substr ( strtoupper ( $r ), 0 , 13 ) == " FULLTEXT KEY " )
{
//nur ein Key
$end = 1 ;
}
else
{
if ( substr ( $r , 0 , 1 ) != '`' && substr ( $r , 0 , 1 ) != '\'' && $klammerstart == 0 && $end == 0 && $lastklammerstart == 0 )
{
$pos = strpos ( $r , ' ' );
$r = '`' . substr ( $r , 0 , $pos ) . '`' . substr ( $r , $pos );
}
}
$pieces [ $i ] = $r ;
$lastklammerstart = $klammerstart ;
}
$back = substr ( $s , 0 , $inner_s_start + 1 ) . implode ( ',' , $pieces ) . ');' ;
return $back ;
}
/**
* Convert all array elements to UTF - 8
*
* @ param $array
* @ return array
*/
function convert_to_utf8 ( $obj )
{
global $config ;
$ret = $obj ;
// wenn die Verbindung zur Datenbank nicht auf utf8 steht, dann muessen die Rückgaben in utf8 gewandelt werden,
// da die Webseite utf8-kodiert ist
if ( ! isset ( $config [ 'mysql_can_change_encoding' ])) get_sql_encodings ();
if ( $config [ 'mysql_can_change_encoding' ] == false && $config [ 'mysql_standard_character_set' ] != 'utf8' )
{
if ( is_array ( $obj ))
{
foreach ( $obj as $key => $val )
{
//echo "<br> Wandle " . $val . " nach ";
$obj [ $key ] = utf8_encode ( $val );
//echo $obj[$key];
}
}
if ( is_string ( $obj )) $obj = utf8_encode ( $obj );
$ret = $obj ;
}
return $ret ;
}
/**
* Convert all array elements to Latin1
*
* @ param $array
* @ return array
*/
function convert_to_latin1 ( $obj )
{
global $config ;
$ret = $obj ;
// wenn die Verbindung zur Datenbank nicht auf utf8 steht, dann muessen die Rückgaben in utf8 gewandelt werden,
// da die Webseite utf8-kodiert ist
if ( $config [ 'mysql_can_change_encoding' ] == false && $config [ 'mysql_standard_character_set' ] != 'utf8' )
{
if ( is_array ( $obj ))
{
foreach ( $obj as $key => $val )
{
$obj [ $key ] = utf8_decode ( $val );
}
}
if ( is_string ( $obj )) $obj = utf8_decode ( $obj );
$ret = $obj ;
}
return $ret ;
}
// returns the index of the selected val in an optionlist
function get_index ( $arr , $selected )
{
$ret = false ; // return false if not found
foreach ( $arr as $key => $val )
{
if ( strtolower ( substr ( $val , 0 , strlen ( $selected ))) == strtolower ( $selected ))
{
$ret = $key ;
break ;
}
}
return $ret ;
}
/**
* Check if config is readable
*
* @ param $file
* @ return boolean
*/
function read_config ( $file = false )
{
global $config , $databases ;
$ret = false ;
if ( ! $file ) $file = $config [ 'config_file' ];
// protect from including external files
$search = array ( ':' , 'http' , 'ftp' , ' ' );
$replace = array ( '' , '' , '' , '' );
$file = str_replace ( $search , $replace , $file );
if ( is_readable ( $config [ 'paths' ][ 'config' ] . $file . '.php' ))
{
// to prevent modern server from caching the new configuration we need to evaluate it this way
clearstatcache ();
$f = implode ( '' , file ( $config [ 'paths' ][ 'config' ] . $file . '.php' ));
$f = str_replace ( '<?php' , '' , $f );
$f = str_replace ( '?>' , '' , $f );
eval ( $f );
$config [ 'config_file' ] = $file ;
$_SESSION [ 'config_file' ] = $config [ 'config_file' ];
$ret = true ;
}
return $ret ;
}
/**
* Get all work configurations from / work / config directory
*
* @ return array
*/
function get_config_filenames ()
{
global $config ;
$configs = array ();
$dh = opendir ( $config [ 'paths' ][ 'config' ] . " / " );
while ( false !== ( $filename = readdir ( $dh )))
{
if ( substr ( $filename , - 4 ) == '.php' && substr ( $filename , - 9 ) != '.conf.php' && $filename != 'dbs_manual.php' )
{
$configs [] = substr ( $filename , 0 , - 4 );
}
}
return $configs ;
}
function table_output ( $text , $val , $small = false , $colspan = 1 )
{
$ret = '<tr>' ;
$ret .= '<td nowrap="nowrap"' ;
if ( $colspan > 1 ) $ret .= ' colspan="' . $colspan . '"' ;
$ret .= '>' . $text ;
if ( $colspan == 1 ) $ret .= ': ' ;
else
$ret .= ' ' ;
if ( $colspan == 1 ) $ret .= '</td><td nowrap="nowrap">' ;
if ( $small ) $ret .= '<span class="small">' . $val . '</span></td></tr>' ;
else
$ret .= '<strong>' . $val . '</strong></td></tr>' ;
return $ret ;
}
/**
* Receive all possible MySQL character sets and save standard to $config [ 'mysql_standard_charset' ]
*/
function get_sql_encodings ()
{
global $config ;
unset ( $config [ 'mysql_possible_character_sets' ]);
if ( ! isset ( $config [ 'dbconnection' ])) MSD_mysql_connect ();
$erg = false ;
$config [ 'mysql_standard_character_set' ] = '' ;
$config [ 'mysql_possible_character_sets' ] = array ();
if ( ! defined ( 'MSD_MYSQL_VERSION' )) GetMySQLVersion ();
$v = explode ( '.' , MSD_MYSQL_VERSION );
$config [ 'mysql_can_change_encoding' ] = false ;
if (( $v [ 0 ] <= 4 && $v [ 1 ] < 1 ) || $v [ 0 ] <= 3 )
{
// MySQL < 4.1
$config [ 'mysql_can_change_encoding' ] = false ;
$sqlt = 'SHOW VARIABLES LIKE \'character_set%\'' ;
2016-02-01 19:02:15 +00:00
$res = MSD_query ( $sqlt ) or die ( SQLError ( $sqlt ,(( is_object ( $GLOBALS [ " ___mysqli_ston " ])) ? mysqli_error ( $GLOBALS [ " ___mysqli_ston " ]) : (( $___mysqli_res = mysqli_connect_error ()) ? $___mysqli_res : false ))));
2015-05-22 11:43:20 +00:00
if ( $res )
{
2016-02-01 19:02:15 +00:00
WHILE ( $row = mysqli_fetch_row ( $res ))
2015-05-22 11:43:20 +00:00
{
if ( $row [ 0 ] == 'character_set' )
{
$config [ 'mysql_standard_character_set' ] = $row [ 1 ];
if ( $v [ 0 ] == 3 ) $config [ 'mysql_possible_character_sets' ][ 0 ] = $row [ 1 ];
}
if ( $row [ 0 ] == 'character_sets' && $v [ 0 ] > 3 )
{
$config [ 'mysql_possible_character_sets' ] = explode ( ' ' , $row [ 1 ]);
sort ( $config [ 'mysql_possible_character_sets' ]);
}
}
}
}
else
{
// MySQL-Version >= 4.1
$config [ 'mysql_can_change_encoding' ] = true ;
$sqlt = 'SHOW CHARACTER SET' ;
2016-02-01 19:02:15 +00:00
$res = MSD_query ( $sqlt ) or die ( SQLError ( $sqlt ,(( is_object ( $GLOBALS [ " ___mysqli_ston " ])) ? mysqli_error ( $GLOBALS [ " ___mysqli_ston " ]) : (( $___mysqli_res = mysqli_connect_error ()) ? $___mysqli_res : false ))));
2015-05-22 11:43:20 +00:00
if ( $res )
{
2016-02-01 19:02:15 +00:00
WHILE ( $row = mysqli_fetch_row ( $res ))
2015-05-22 11:43:20 +00:00
{
$config [ 'mysql_possible_character_sets' ][] = $row [ 0 ] . ' - ' . $row [ 1 ];
}
sort ( $config [ 'mysql_possible_character_sets' ]);
}
$sqlt = 'SHOW VARIABLES LIKE \'character_set_connection\'' ;
2016-02-01 19:02:15 +00:00
$res = MSD_query ( $sqlt ) or die ( SQLError ( $sqlt ,(( is_object ( $GLOBALS [ " ___mysqli_ston " ])) ? mysqli_error ( $GLOBALS [ " ___mysqli_ston " ]) : (( $___mysqli_res = mysqli_connect_error ()) ? $___mysqli_res : false ))));
2015-05-22 11:43:20 +00:00
if ( $res )
{
2016-02-01 19:02:15 +00:00
WHILE ( $row = mysqli_fetch_row ( $res ))
2015-05-22 11:43:20 +00:00
{
$config [ 'mysql_standard_character_set' ] = $row [ 1 ];
}
}
}
}
/**
* Un - quotes a quoted string / array
*
* @ param $value
* @ return string / array
*/
function stripslashes_deep ( $value )
{
$value = is_array ( $value ) ? array_map ( 'stripslashes_deep' , $value ) : stripslashes ( $value );
return $value ;
}
/**
* Remove whitespaces before and after an string or array
*
* @ param $value
* @ return string / array
*/
function trim_deep ( $value )
{
$value = is_array ( $value ) ? array_map ( 'trim_deep' , $value ) : trim ( $value );
return $value ;
}
/**
* load external source from given URL and save content locally
*
* loads content from an external URL and saves it locally in $path with the name $local_file
* return false on failure or true on success
*
* @ param $url
* @ param $file
* @ param local_file
* @ param $path
* @ return boolean
*/
function fetchFileFromURL ( $url , $file , $local_path = './data/' , $local_file )
{
$data = fetchFileDataFromURL ( $url . $file );
if ( $data )
{
$d = fopen ( $local_path . $local_file , " wb " );
$ret = fwrite ( $d , $data );
fclose ( $d );
return $ret ;
}
return false ;
}
/**
* Loads data from an external source via HTTP - socket
*
* Loads data from an external source $url given as URL
* and returns the content as a binary string or an empty string on failure
*
* @ param $url
* @ return string file data
*/
function fetchFileDataFromURL ( $url )
{
$url_parsed = parse_url ( $url );
$in = '' ;
$host = $url_parsed [ 'host' ];
$port = isset ( $url_parsed [ 'port' ]) ? intval ( $url_parsed [ 'port' ]) : 80 ;
if ( $port == 0 ) $port = 80 ;
$path = $url_parsed [ 'path' ];
if ( isset ( $url_parsed [ 'query' ]) && $url_parsed [ 'query' ] != '' ) $path .= '?' . $url_parsed [ 'query' ];
$fp = fsockopen ( $host , $port , $errno , $errstr , 3 );
if ( $fp )
{
$out = " GET $path HTTP/1.1 \r \n Host: $host\r\n " ;
$out .= " Connection: close \r \n \r \n " ;
fwrite ( $fp , $out );
$body = false ;
while ( ! feof ( $fp ))
{
$s = fgets ( $fp , 1024 );
if ( $body ) $in .= $s ;
if ( $s == " \r \n " ) $body = true ;
}
fclose ( $fp );
}
return $in ;
}
?>