0) { $SQL_ARRAY=file($sf); } } function WriteSQL() { global $SQL_ARRAY,$config; $sf=$config['paths']['config'].'sql_statements'; $str=""; for($i=0;$i0) { $s=$nl.$nl.''.$nl.$nl; } return $s; } function Table_ComboBox() { global $db,$config,$lang,$nl; $tabellen = mysql_query("SHOW TABLES FROM `$db`",$config['dbconnection']); $num_tables = mysql_num_rows($tabellen); $s=$nl.$nl.''.$nl.$nl; return $s; } function TableComboBox($default='') { global $db,$config,$lang,$nl; $tabellen = mysql_list_tables($db,$config['dbconnection']); $num_tables = mysql_num_rows($tabellen); $s=''.$nl; for($i=0;$i<$num_tables;$i++) { $t=mysql_tablename($tabellen,$i); $s.=''.$nl; } return $s; } function DB_Exists($db) { global $config; if(!isset($config['dbconnection'])) MSD_mysql_connect(); $erg=false; $dbs=mysql_list_dbs($config['dbconnection']); while ($row = mysql_fetch_object($dbs)) { if(strtolower($row->Database)==strtolower($db)) { $erg=true;break; } } return $erg; } function Table_Exists($db,$table) { global $config; if(!isset($config['dbconnection'])) MSD_mysql_connect(); $erg=false; $sqlt="SHOW TABLES FROM `$db`"; $res=MSD_query($sqlt) or die(SQLError($sqlt,mysql_error())); if($res) { $row = mysql_fetch_row($res); if(strtolower($row[0])==strtolower($table)) { $erg=true; } } else die("ERROR"); return $erg; } function DB_Empty($dbn) { $r="DROP DATABASE `$dbn`;\nCREATE DATABASE `$dbn`;"; MSD_DoSQL($r); } function sqlReturnsRecords($sql) { global $mysql_SQLhasRecords; $s=explode(' ',$sql); return in_array(strtoupper($s[0]),$mysql_SQLhasRecords) ? 1:0; } function getCountSQLStatements($sql) { $z=0; $l=strlen($sql); $inQuotes=false; for($i=0;$i<$l;$i++) { if($sql[$i]=="'" || $sql[$i]=='"') $inQuotes=!$inQuotes; if($sql[$i]==';' && $inQuotes==false) $z++; } return $z; } function splitSQLStatements2Array($sql) { $z=0;$sqlArr=array();$tmp=''; $sql=str_replace("\n",'',$sql); $l=strlen($sql); $inQuotes=false; for($i=0;$i<$l;$i++) { $tmp.=$sql[$i]; if($sql[$i]=="'" || $sql[$i]=='"') $inQuotes=!$inQuotes; if($sql[$i]==';' && $inQuotes==false) { $z++; $sqlArr[]=$tmp; $tmp=''; } } if(trim($tmp)!='') $sqlArr[]=$tmp; return $sqlArr; } function DB_Copy($source,$destination,$drop_source=0,$insert_data=1) { global $config; if(!isset($config['dbconnection'])) MSD_mysql_connect(); $SQL_Array=$t=""; if(!DB_Exists($destination)) $SQL_Array.="CREATE DATABASE `$destination` ;\n"; $SQL_Array.="USE `$destination` ;\n"; $tabellen = mysql_list_tables($source,$config['dbconnection']); $num_tables = mysql_num_rows($tabellen); for($i=0;$i<$num_tables;$i++) { $table=mysql_tablename($tabellen,$i); $sqlt="SHOW CREATE TABLE `$source`.`$table`"; $res=MSD_query($sqlt) or die(SQLError($sqlt,mysql_error())); $row=mysql_fetch_row($res); $c=$row[1]; if(substr($c,-1)==";") $c=substr($c,0,strlen($c)-1); $SQL_Array.=($insert_data==1) ? "$c SELECT * FROM `$source`.`$table` ;\n" : "$c ;\n"; } if($drop_source==1) $SQL_Array.="DROP DATABASE `$source` ;"; mysql_select_db($destination); MSD_DoSQL($SQL_Array); } function Table_Copy($source,$destination,$insert_data,$destinationdb="") { global $config; if(!isset($config['dbconnection'])) MSD_mysql_connect(); $SQL_Array=$t=""; $sqlc="SHOW CREATE TABLE $source"; $res=MSD_query($sqlc) or die(SQLError($sqlc,mysql_error())); $row=mysql_fetch_row($res); $c=$row[1]; $a1=strpos($c,"`"); $a2=strpos($c,"`",$a1+1); $c=substr($c,0,$a1+1).$destination.substr($c,$a2); if(substr($c,-1)==";") $c=substr($c,0,strlen($c)-1); $SQL_Array.=($insert_data==1) ? "$c SELECT * FROM $source ;\n" : "$c ;\n"; //echo "
$SQL_Array
"; MSD_DoSQL($SQL_Array); } function MSD_DoSQL($sqlcommands,$limit="") { global $config,$out,$numrowsabs,$numrows,$num_befehle,$time_used,$sql; if(!isset($sql['parser']['sql_commands'])) $sql['parser']['sql_commands']=0; if(!isset($sql['parser']['sql_errors'])) $sql['parser']['sql_errors']=0; $sql['parser']['time_used']=getmicrotime(); if(!isset($config['dbconnection'])) MSD_mysql_connect(); $out=$sqlcommand=""; $allSQL=splitSQLStatements2Array($sqlcommands); #explode(';',preg_replace('/\r\n|\n/', '', $sqlcommands)); $sql_queries=count($allSQL); if(!isset($allSQL[$sql_queries-1])) $sql_queries--; if($sql_queries==1) { SQLParser($allSQL[0]); $sql['parser']['sql_commands']++; $out.=Stringformat(($sql['parser']['sql_commands']),4).": ". $allSQL[0]."\n"; $result =MSD_query($allSQL[0]) or die(SQLError($allSQL[0],mysql_error())); } else { for($i=0;$i<$sql_queries; $i++) { $allSQL[$i]=trim(rtrim($allSQL[$i])); if($allSQL[$i]!="") { $sqlcommand.=$allSQL[$i]; $sqlcommand=SQLParser($sqlcommand); //echo "$i: ".htmlentities($sqlcommand)."
"; if($sql['parser']['start']==0 && $sql['parser']['end']==0 && $sqlcommand!="") { //sql complete $sql['parser']['sql_commands']++; $out.=Stringformat(($sql['parser']['sql_commands']),4).": ". $sqlcommand."\n"; $result =MSD_query($sqlcommand) or die(SQLError($sqlcommand,mysql_error())); $sqlcommand=""; } } } } $sql['parser']['time_used']=getmicrotime()-$sql['parser']['time_used']; } function SQLParser($command,$debug=0) { global $sql; $sql['parser']['start']=$sql['parser']['end']=0; $sql['parser']['sqlparts']=0; if(!isset($sql['parser']['drop'])) $sql['parser']['drop']=0; if(!isset($sql['parser']['create'])) $sql['parser']['create']=0; if(!isset($sql['parser']['insert'])) $sql['parser']['insert']=0; if(!isset($sql['parser']['update'])) $sql['parser']['update']=0; if(!isset($sql['parser']['comment'])) $sql['parser']['comment']=0; $Backslash=chr(92); $s=rtrim(trim(($command))); //Was ist das für eine Anfrage ? if(substr($s,0,1)=="#" || substr($s,0,2)=="--") { $sql['parser']['comment']++; $s=""; } elseif(strtoupper(substr($s,0,5))=="DROP ") { $sql['parser']['drop']++; } elseif(strtoupper(substr($s,0,7))=="CREATE ") { //Hier nur die Anzahl der Klammern zählen $sql['parser']['start']=1; $kl1=substr_count($s,"("); $kl2=substr_count($s,")"); if($kl2-$kl1==0) { $sql['parser']['start']=0; $sql['parser']['create']++; } } elseif(strtoupper(substr($s,0,7))=="INSERT " || strtoupper(substr($s,0,7))=="UPDATE ") { if(strtoupper(substr($s,0,7))=="INSERT ") $sql['parser']['insert']++; else $sql['parser']['update']++; $i=strpos(strtoupper($s)," VALUES")+7; $st=substr($s,$i); $i=strpos($st,"(")+1; $st=substr($st,$i); $st=substr($st,0,strlen($st)-2); $tb=explode(",",$st); for ($i=0;$i2) { $sql['parser']['end']=1; } elseif (($B_Delimiter % 2)==1 && strlen($v)>2) { //ist mit `'` maskiert $sql['parser']['end']=0; } elseif(($B_Esc % 2)==1) { //ist mit Backslash maskiert $sql['parser']['end']=0; } else { $sql['parser']['end']=1; } } } if($debug==1) echo "".$sql['parser']['start']."/".$sql['parser']['end']." Feld $i: ".htmlspecialchars($tb[$i])."- ".$sql['parser']['sqlparts']." ($B_Ticks / $B_Esc)
"; if($sql['parser']['start']==1 && $sql['parser']['end']==1) { $sql['parser']['sqlparts']++; $sql['parser']['start']=$sql['parser']['end']=0; } } } return $s; } function SQLOutput($sqlcommand,$meldung="") { global $sql,$lang; $s= '
'.$lang['sql_output'].'
'; // if($meldung!="") $s.='

'.$meldung.'

'; if($meldung!="") $s.=$meldung; if(isset($sql['parser']['sql_commands'])) { $s.=''.$sql['parser']['sql_commands'].'
'.$lang['sql_commands_in'].round($sql['parser']['time_used'],4).$lang['sql_commands_in2'].'

'; $s.=$lang['sql_out1'].''.$sql['parser']['drop'].' DROP-, '; $s.=''.$sql['parser']['create'].' CREATE-, '; $s.=''.$sql['parser']['insert'].' INSERT-, '; $s.=''.$sql['parser']['update'].' UPDATE-'.$lang['sql_out2'].'
'; $s.=$lang['sql_out3'].''.$sql['parser']['comment'].' '.$lang['sql_out4'].'
'; if($sql['parser']['sql_commands']<5000) $s.='
'.Highlight_SQL($sqlcommand).'
'; else $s.=$lang['sql_out5'].""; } elseif($sqlcommand!="")$s.='
'.$lang['sql_output'].'
'.Highlight_SQL($sqlcommand).'
'; return $s.''; } function GetCreateTable($db,$tabelle) { global $config; if(!isset($config['dbconnection'])) MSD_mysql_connect(); $res=mysql_query("SHOW CREATE TABLE `$db`.`$tabelle`"); if($res) { $row=mysql_fetch_array($res); return $row['Create Table']; } else return mysql_error(); } function KindSQL($sql) { if (preg_match('@^((-- |#)[^\n]*\n|/\*.*?\*/)*(DROP|CREATE)[[:space:]]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@im', $sql)) { return 2; } elseif (preg_match('@^((-- |#)[^\n]*\n|/\*.*?\*/)*(DROP|CREATE)[[:space:]]+(IF EXISTS[[:space:]]+)?(TABLE|DATABASE)[[:space:]]+(.+)@im', $sql)) { return 1; } } function GetPostParams() { global $db,$dbid,$tablename,$context,$limitstart,$order,$orderdir,$sql; $db=$_POST['db']; $dbid=$_POST['dbid']; $tablename=$_POST['tablename']; $context=$_POST['context']; $limitstart=$_POST['limitstart']; $order=$_POST['order']; $orderdir=$_POST['orderdir']; $sql['sql_statement']=(isset($_POST['sql_statement'])) ? stripslashes(urldecode($_POST['sql_statement'])) : "SELECT * FROM `$tablename`"; } function ComboCommandDump($when,$index) { global $SQL_ARRAY,$nl,$databases,$lang; if(count($SQL_ARRAY)==0) { $r=''.$lang['sql_befehle'].''; if($when==0) $r.=''; else $r.=''; } else { if($when==0) { $r=''; $csql=$databases['command_after_dump'][$index]; } $r.=''; if(count($SQL_ARRAY)>0) { for($i=0;$i'.SQL_Name($i).''.$nl; } } $r.=''; } return $r; } function EngineCombo($default="") { global $config; if(!$config['dbconnection']) MSD_mysql_connect(); $r=''; if(!MSD_NEW_VERSION) { //BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM $r.=''; $r.=''; $r.=''; $r.=''; $r.=''; $r.=''; $r.=''; } else { $res=mysql_query("SHOW ENGINES"); $num = mysql_num_rows($res); for($i=0;$i<$num;$i++) { $row=mysql_fetch_array($res); $r.=''; } } return $r; } function CharsetCombo($default="") { global $config; if(!MSD_NEW_VERSION) { return ""; } else { if(!isset($config['dbconnection'])) MSD_mysql_connect(); $res=mysql_query("SHOW Charset"); $num = mysql_num_rows($res); $r=''; $charsets=array(); for($i=0;$i<$num;$i++) { $charsets[]=mysql_fetch_array($res); } if (is_array($charsets)) { $charsets=mu_sort($charsets,'Charset'); foreach ($charsets as $row) { $r.=''; } } return $r; } } function GetCollationArray() { global $config; if(!isset($config['dbconnection'])) MSD_mysql_connect(); $res=mysql_query("SHOW Collation"); $num = mysql_num_rows($res); $r=Array(); for($i=0;$i<$num;$i++) { $row=mysql_fetch_array($res); $r[$i]['Collation']=$row['Collation']; $r[$i]['Charset']=$row['Charset']; $r[$i]['Id']=$row['Id']; $r[$i]['Default']=$row['Default']; $r[$i]['Compiled']=$row['Compiled']; $r[$i]['Sortlen']=$row['Sortlen']; } return $r; } function CollationCombo($default="",$withcharset=0) { if(!MSD_NEW_VERSION) { return ""; } else { $r=GetCollationArray(); sort($r); $s=""; $s=''; $group=""; for($i=0;$i0) $s.=''; $s.=''; } $s.=''; } return $s.''; } } function AttributeCombo($default="") { $s=''; $s.=''; $s.=''; return $s; } function simple_bbcode_conversion($a) { global $config; $tag_start='
'; $tag_end='
'; //replacements $a=nl2br($a); $a=preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si","$2",$a); $a=preg_replace("/\[urltargetself=(.*?)\](.*?)\[\/urltargetself\]/si","$2",$a); $a=preg_replace("/\[url\](.*?)\[\/url\]/si","$1",$a); $a=preg_replace("/\[ed2k=\+(.*?)\](.*?)\[\/ed2k\]/si","$2",$a); $a=preg_replace("/\[ed2k=(.*?)\](.*?)\[\/ed2k\]/si","$2",$a); $a=preg_replace("/\[center\](.*?)\[\/center\]/si", "
$1
", $a); $a=preg_replace("/\[size=([1-2]?[0-9])\](.*?)\[\/size\]/si", "$2", $a); $a=preg_replace("/\[size=([1-2]?[0-9]):(.*?)\](.*?)\[\/size(.*?)\]/si", "$3", $a); $a=preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/si", "$2", $a); $a=preg_replace("/\[color=(.*?)\](.*?)\[\/color\]/si", "$2", $a); $a=preg_replace("/\[color=(.*?):(.*?)\](.*?)\[\/color(.*?)\]/si", "$3", $a); $a=preg_replace("/\[img\](.*?)\[\/img\]/si", "", $a); $a=preg_replace("/\[b\](.*?)\[\/b\]/si", "$1", $a); $a=preg_replace("/\[b(.*?)\](.*?)\[\/b(.*?)\]/si", "$2", $a); $a=preg_replace("/\[u\](.*?)\[\/u\]/si", "$1", $a); $a=preg_replace("/\[u(.*?)\](.*?)\[\/u(.*?)\]/si", "$2", $a); $a=preg_replace("/\[i\](.*?)\[\/i\]/si", "$1", $a); $a=preg_replace("/\[i(.*?)\](.*?)\[\/i(.*?)\]/si", "$2", $a); $a=preg_replace("/\[quote\](.*?)\[\/quote\]/si", "

$1

", $a); $a=preg_replace("/\[quote:(.*?)\](.*?)\[\/quote(.*?)\]/si", "

$2

", $a); $a=preg_replace("/\[code:(.*?)\](.*?)\[\/code(.*?)\]/si", "

$2

", $a); $a=preg_replace("/\[hide\](.*?)\[\/hide\]/si", "
$1
", $a); $a=preg_replace("/[[:space:]]http:\/\/(.*?)[[:space:]]/si","$1",$a); return $tag_start.$a.$tag_end; } function ExtractTablename($q) { $offset=0; if (strlen($q)>100) $q=substr(0,100,$q); $p=strtoupper($q); $i=strpos($p,"FROM")+5; $p=substr($p,$i); if(substr($p,0,1)=="("){ $offset=2; echo "$offset
"; } if(strpos($p," ",$offset)) { $j=strpos($p," ",$offset); $p=substr($p,$offset,$j); } $t=substr($q,$i+$offset,strlen($p)-$offset); if(substr($t,-1)==",") { //Achtung, keine eindeutige Tabelle $t=''; } if(substr($t,0,1)=="`" && substr($t,-1)=="`") $t=substr($t,1,strlen($t)-2); return $t; } function ExtractTablenameFromSQL($q) { global $databases; $table=''; if (strlen($q)>100) $q=substr(0,100,$q); $p=strtoupper($q); $first=substr($p,0,strpos($p," ")); switch($first) { case "SHOW": $table=''; break; case "SELECT": $p=substr($q,strpos($p,"FROM")+5); $p=explode(" ",$p); $t=$p[0]; if(strpos($t,".")) $t=substr($t, strpos($t,".")+1); $table=str_replace("`","",$t); break; case "DROP": case "INSERT": case "UPDATE": break; default: $table=$first; } // So, dann wollen wir doch mal nachsehen, ob es die ermittelte Tabelle ueberhaupt gibt if (Table_Exists($databases['db_actual'],$table)) return $table; else return ""; } function GetOptionsCombo($arr,$default) { global $feldtypen,$feldattribute,$feldnull,$feldextras,$feldkeys,$feldrowformat; $r=""; foreach ($arr as $s) { $r.=''."\n"; } return $r; } function make_options($arr,$selected) { $r=''; foreach ($arr as $key=>$val) { $r.='