567 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			567 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<pre><?php
 | 
						|
 | 
						|
set_time_limit(300);
 | 
						|
$downloadnew = FALSE;
 | 
						|
$dir = ''; // Put DIR here
 | 
						|
 | 
						|
// Database credentials.
 | 
						|
$host = '';
 | 
						|
$user = '';
 | 
						|
$password = '';
 | 
						|
$database = '';
 | 
						|
 | 
						|
// Output filename.
 | 
						|
$filename = '../www/SMfuncs.js';
 | 
						|
 | 
						|
// Start defines
 | 
						|
$funcs = Array();
 | 
						|
$filefunclist = Array();
 | 
						|
$tableinfo = Array();
 | 
						|
$consts = Array();
 | 
						|
$version = "";
 | 
						|
$thebasedir = dirname(__FILE__);
 | 
						|
$defines = Array();
 | 
						|
$javascript = "var SMfunctions=new Array()\nvar SMconstant=new Array()\nvar SMfiles=new Array()\nvar SMfiledata=new Array()\n";
 | 
						|
 | 
						|
function GetFunctionType($str){
 | 
						|
	switch (strtolower($str)) {
 | 
						|
		case "native": return 1; break;
 | 
						|
		case "stock": return 2; break;
 | 
						|
		case "forward": return 3; break;
 | 
						|
    	case "functag": return 4; break;
 | 
						|
	}
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 | 
						|
function PrepareJava($string){
 | 
						|
	return addslashes(str_replace("\n","",nl2br($string)));	
 | 
						|
}
 | 
						|
 | 
						|
function DecodeTheFile($file){
 | 
						|
	global $funcs, $conts;
 | 
						|
	$thelines = file($file);
 | 
						|
	$thelines[] = "/**";
 | 
						|
	
 | 
						|
	$basename = basename($file);
 | 
						|
	$linescount = count($thelines) - 1;
 | 
						|
	
 | 
						|
	$lines = Array();
 | 
						|
	$isanotherone = false;
 | 
						|
	
 | 
						|
	foreach ($thelines as $line_num => $lin) {
 | 
						|
	 	$line = trim($lin);
 | 
						|
	 	
 | 
						|
	 	if($line == "")	continue;
 | 
						|
	 	
 | 
						|
	 	if(substr($line,0,7) == "#define")
 | 
						|
	 		AddDefine(substr($line,8));
 | 
						|
	 	
 | 
						|
	 	if(($line == "/**" && !$isanotherone) || $linescount == $line_num){
 | 
						|
	 	 	if(isset($lines[1])){
 | 
						|
		 		$temp = explode(" ",$lines[1][0]);	 		
 | 
						|
		 		$type = GetFunctionType($temp[0]);
 | 
						|
		 	 	if($type > 0){
 | 
						|
					MakeFunction($lines, implode("", $lines[1]) ,$type,$basename);
 | 
						|
				}else
 | 
						|
					MakeConstant($lines,$basename);
 | 
						|
			}
 | 
						|
	 	 
 | 
						|
			$lines = Array();
 | 
						|
			$isanotherone = false;
 | 
						|
			$commented = true;	 	 	
 | 
						|
	 	}
 | 
						|
	
 | 
						|
		if($line == "{")
 | 
						|
			$isanotherone = true;
 | 
						|
		elseif($line{0} == "}")
 | 
						|
			$isanotherone = false;
 | 
						|
			
 | 
						|
		if($commented){
 | 
						|
			$lines[0][] = $line;
 | 
						|
		} else {
 | 
						|
			$lines[1][] = $lin;
 | 
						|
		}
 | 
						|
		
 | 
						|
		if($line == "*/" && !$isanotherone)
 | 
						|
		 	$commented = false;	 
 | 
						|
	}
 | 
						|
	return implode("",$thelines);
 | 
						|
}
 | 
						|
 | 
						|
function AddDefine($str){
 | 
						|
 	if($str{0} == "_")
 | 
						|
 		return;
 | 
						|
 	global $defines;
 | 
						|
 	
 | 
						|
 	//Sryl, Preg match is just not working out, too much iregularitires
 | 
						|
 	//The * will bug the preg_match
 | 
						|
 	/*$str = str_replace("*","",$str);
 | 
						|
	$pattern = '/([$A-Z|8|_^]+)\b([^.*]+)([	| |	]\/)/';
 | 
						|
	
 | 
						|
	if(!preg_match($pattern, $str, $matches,PREG_OFFSET_CAPTURE)){
 | 
						|
		echo $str . "\n";
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	
 | 
						|
	$new = substr($str , $matches[2][1] + strlen($matches[2][0]) );
 | 
						|
	if(strlen($new) > 0){
 | 
						|
		$new = str_replace(
 | 
						|
			Array ("/**", "<" , "","/"),
 | 
						|
			Array ("", "" , "",""),
 | 
						|
			$new	
 | 
						|
		);
 | 
						|
	} 
 | 
						|
	*/
 | 
						|
	$stage = 0;
 | 
						|
	$stageinfo = Array('','','');
 | 
						|
 | 
						|
	$strlen = strlen($str);
 | 
						|
	for($i=0; $i < $strlen; $i++){	 
 | 
						|
	 	if(trim($str{$i}) == "" && $stage == 0){
 | 
						|
			$stage++;
 | 
						|
	 		continue; 		
 | 
						|
	 	}
 | 
						|
	 	
 | 
						|
	 	if($str{$i} == "/"){
 | 
						|
			if(substr($str,$i,3) == "/**"){
 | 
						|
			 	$stage++;
 | 
						|
				$i += 3;
 | 
						|
				continue;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		
 | 
						|
		if($str{$i} == "*"){
 | 
						|
			if(substr($str,$i,2) == '*/'){
 | 
						|
			 	break;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		$stageinfo[$stage] .= $str{$i};
 | 
						|
	}
 | 
						|
	
 | 
						|
	foreach($stageinfo as $i => $a)
 | 
						|
		$stageinfo[$i] = trim($a);
 | 
						|
	
 | 
						|
	if($stageinfo[1] != ""){
 | 
						|
		$defines[] = Array (
 | 
						|
			'variable' => $stageinfo[0],
 | 
						|
			'value' => wordwrap(trim($stageinfo[1]) , 35, " " , true ),
 | 
						|
			'comment' => isset($stageinfo[2]) ? trim($stageinfo[2]) : "",
 | 
						|
		);
 | 
						|
	}
 | 
						|
	
 | 
						|
		
 | 
						|
	if($stageinfo[0] == "SOURCEMOD_VERSION"){
 | 
						|
		global $version;
 | 
						|
		$version = str_replace('"',"",$stageinfo[1]);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function MakeConstant($lines,$file){
 | 
						|
 	global $consts;
 | 
						|
 	
 | 
						|
 	$info = Array();
 | 
						|
 	$content = Array();
 | 
						|
 	
 | 
						|
	foreach($lines[0] as $line){
 | 
						|
		if(substr($line,0,1) != "*") continue;
 | 
						|
		$thesub = trim(substr($line,2));
 | 
						|
		if($thesub == "") continue;
 | 
						|
		
 | 
						|
		$info[] = $thesub;		
 | 
						|
	}
 | 
						|
	
 | 
						|
	$theinfo = str_replace("@section","", implode("\n",$info));
 | 
						|
	
 | 
						|
	if(strpos($theinfo,"All rights reserved.")){
 | 
						|
		$theinfo = "<i>Unclassified</i>";
 | 
						|
		$newline = Array();
 | 
						|
		
 | 
						|
		foreach($lines[1] as $lin){
 | 
						|
			$line = trim($lin);
 | 
						|
			if(substr($line,0,7) == "#define" && $line{8} != "_")
 | 
						|
				$newline[] = $line . "\n";
 | 
						|
		}
 | 
						|
		if(count($newline) == 0)
 | 
						|
			return;
 | 
						|
		
 | 
						|
		$lines[1] = $newline;		
 | 
						|
	}
 | 
						|
	
 | 
						|
	$consts[] = Array(
 | 
						|
		'info' => $theinfo,
 | 
						|
		'content' => trim(implode('',$lines[1])),
 | 
						|
		'file' => $file,
 | 
						|
	);
 | 
						|
}
 | 
						|
 | 
						|
function MakeFunction($lines,$function,$type,$file){ 
 | 
						|
 	global $funcs;
 | 
						|
 	
 | 
						|
 	$description = Array();
 | 
						|
 	$funcinput = Array();
 | 
						|
 	$return = Array();
 | 
						|
 	$onerror = Array();
 | 
						|
 	$notes = Array();
 | 
						|
 	$depreached = 0;
 | 
						|
 	
 | 
						|
 	$infostarted = false;
 | 
						|
 	$lastone = 0;
 | 
						|
 	
 | 
						|
 	
 | 
						|
	foreach($lines[0] as $line){
 | 
						|
		if(substr($line,0,1) != "*") continue;
 | 
						|
		$thesub = trim(substr($line,2));
 | 
						|
		if($thesub == "") continue;
 | 
						|
	
 | 
						|
		
 | 
						|
		if ($thesub{0} == "@")
 | 
						|
			$infostarted = true;
 | 
						|
			
 | 
						|
		if(!$infostarted){
 | 
						|
			$description[] =  $thesub;
 | 
						|
		}
 | 
						|
 | 
						|
		if ($infostarted && $thesub{0} != "@"){
 | 
						|
			switch ($lastone) {
 | 
						|
				case 0:
 | 
						|
	//				if(!isset($funcinput[ count($funcinput) - 1 ]))
 | 
						|
	//					echo $file . "\n" . $function . "\n\n";
 | 
						|
					$funcinput[ count($funcinput) - 1 ] .= " " . $thesub; 
 | 
						|
					break;
 | 
						|
				case 1: $return[ count($return) - 1 ] .= " " . $thesub; break;
 | 
						|
				case 2: $onerror[ count($onerror) - 1 ]  .= " " . $thesub; break;
 | 
						|
				case 3: $notes[ count($notes) - 1 ] .= " " . $thesub; break;
 | 
						|
				case 4: $description[ count($description) - 1 ] .= " " . $thesub; break;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		
 | 
						|
		if(!$infostarted)
 | 
						|
			$continue;
 | 
						|
		
 | 
						|
		if(substr($thesub, 0, 7) == "@return"){
 | 
						|
			$return[] = trim(substr($thesub, 7));
 | 
						|
			$lastone = 1;
 | 
						|
		} elseif(substr($thesub, 0, 11) == "@deprecated"){
 | 
						|
			$depreached = 1;
 | 
						|
		} elseif(substr($thesub, 0, 6) == "@error"){
 | 
						|
			$onerror[] = trim(substr($thesub, 6));
 | 
						|
			$lastone = 2;
 | 
						|
		} elseif(substr($thesub, 0, 9) == "@noreturn"){
 | 
						|
			$return[] = 0;
 | 
						|
		} elseif(substr($thesub, 0, 5) == "@note"){
 | 
						|
		 	$notes[] = substr($thesub, 5);
 | 
						|
		 	$lastone = 3;
 | 
						|
		} elseif(substr($thesub, 0, 6) == "@param") {
 | 
						|
			$funcinput[] = substr($thesub, 6);
 | 
						|
			$lastone = 0;				
 | 
						|
		} elseif(substr($thesub, 0, 6) == "@brief") {
 | 
						|
			$description[] = substr($thesub, 6);
 | 
						|
			$lastone = 4;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	
 | 
						|
	/*$fullcommand = str_replace(
 | 
						|
		Array("Float:","Handle:","Action:","bool:","any:","GroupId:","Function:","ReplySource:","QueryCookie:"),
 | 
						|
		Array("","","","","","","","",""),
 | 
						|
		$function);*/
 | 
						|
	
 | 
						|
	$temp = explode("(",$function);
 | 
						|
	$func = $temp[0];
 | 
						|
	if(strpos($func, " ") !== false){
 | 
						|
	 	$func = trim(substr( $func , strpos($func , " ") ));
 | 
						|
	}
 | 
						|
	
 | 
						|
	if(strpos($function, "{") !== false){
 | 
						|
	 	$function = trim(substr( $function, 0, strpos($function, "{") ));
 | 
						|
	}
 | 
						|
		
 | 
						|
	$thestrpos = strpos($func,":");
 | 
						|
	if($thestrpos !== false){
 | 
						|
		$func = substr($func ,$thestrpos + 1);	
 | 
						|
	}
 | 
						|
 | 
						|
	$funcs[] = Array(
 | 
						|
		'description' => implode("\n",$description),
 | 
						|
	 	'input' => implode("\n",$funcinput),
 | 
						|
	 	'function' => $func,
 | 
						|
	 	'fullfunc' => trim($function),
 | 
						|
	 	'return' => implode("\n",$return),
 | 
						|
	 	'onerror' => implode("\n",$onerror),
 | 
						|
	 	'notes' => implode("\n",$notes),
 | 
						|
	 	'file' => $file,
 | 
						|
	 	'typeof' => $type,
 | 
						|
	 	'depreached' => $depreached
 | 
						|
	); 	
 | 
						|
}
 | 
						|
 | 
						|
function db_query($query){
 | 
						|
	$q = mysql_query($query);
 | 
						|
	if(!$q){
 | 
						|
		echo "\n" . mysql_error() . "\n" . $query . "<hr>";
 | 
						|
	}
 | 
						|
	return $q;
 | 
						|
}
 | 
						|
 | 
						|
function GetFileAddr(){
 | 
						|
	$lines = file("http://www.sourcemod.net/builds.php");
 | 
						|
	
 | 
						|
	foreach ($lines as $line_num => $lin) {
 | 
						|
		if(substr($lin, 0, 13) == "<li><a href='"){
 | 
						|
		 	$explode = explode("<a href='", $lin);
 | 
						|
		 	foreach($explode as $a){
 | 
						|
				if(strpos($a, ".zip")){
 | 
						|
					$b = explode("'>", $a);
 | 
						|
					return $b[0];
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function DownloadNew(){
 | 
						|
 	global $thebasedir;
 | 
						|
	copy( GetFileAddr() ,'build.zip');
 | 
						|
	
 | 
						|
	$zip = new ZipArchive;
 | 
						|
	if ($zip->open('build.zip') === TRUE) {
 | 
						|
	    $zip->extractTo($thebasedir . "/build/" );
 | 
						|
	    $zip->close();
 | 
						|
	} else {
 | 
						|
		exit( 'Failed to zip' );
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function full_rmdir( $dir ){
 | 
						|
	if ( !is_writable( $dir ) ){
 | 
						|
		if ( !@chmod( $dir, 0777 ) ){
 | 
						|
                return FALSE;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	$d = dir( $dir );
 | 
						|
	while ( FALSE !== ( $entry = $d->read() ) ){
 | 
						|
		if ( $entry == '.' || $entry == '..' ){
 | 
						|
			continue;
 | 
						|
		}
 | 
						|
		$entry = $dir . '/' . $entry;
 | 
						|
		if ( is_dir( $entry ) ){
 | 
						|
			if ( !$this->full_rmdir( $entry ) ){
 | 
						|
				return FALSE;
 | 
						|
			}
 | 
						|
			continue;
 | 
						|
		}
 | 
						|
		if ( !@unlink( $entry ) ){
 | 
						|
			$d->close();
 | 
						|
			return FALSE;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	$d->close();
 | 
						|
	return rmdir( $dir );
 | 
						|
}
 | 
						|
 | 
						|
function FindFileID($file){
 | 
						|
	global $tableinfo;
 | 
						|
	foreach($tableinfo['sm_smfiles'] as $fname => $id)
 | 
						|
		if($file == $fname)
 | 
						|
			return $id;
 | 
						|
	return -1;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function FindUnusedid($arrayname){
 | 
						|
	global $tableinfo;
 | 
						|
//	if(!isset($tableinfo[ $arrayname ]))
 | 
						|
//		return 0;
 | 
						|
	
 | 
						|
	$tempinfo = array_flip($tableinfo[ $arrayname ]);
 | 
						|
	$i = 0;
 | 
						|
	//Hope this works!!
 | 
						|
	while( TRUE ){
 | 
						|
		if(!isset($tempinfo[ $i ]))
 | 
						|
			return $i;
 | 
						|
		$i++;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
if($downloadnew)
 | 
						|
	DownloadNew();
 | 
						|
if(strlen(trim($dir)) == 0)
 | 
						|
	$dir = $thebasedir . '/build/addons/sourcemod/scripting/include';
 | 
						|
$files = Array();
 | 
						|
 | 
						|
if(!($dir_handle = opendir($dir))){
 | 
						|
    exit('Could not open ' . $dir);
 | 
						|
}
 | 
						|
   
 | 
						|
while($file = readdir($dir_handle)){
 | 
						|
	if($file == "." || $file == "..") continue;
 | 
						|
	
 | 
						|
	if(substr($file, -4, 4) == ".inc"){
 | 
						|
	 	$filedir = $dir . "/" .  $file;
 | 
						|
		
 | 
						|
//		if($file == "version.inc"){
 | 
						|
//			GetVersion($filedir);
 | 
						|
//		} else {
 | 
						|
			$files[] = Array(
 | 
						|
				'Addr' => $filedir,
 | 
						|
				'name' => $file,
 | 
						|
//				'fcount' => 0,
 | 
						|
//				'ccount' => 0,
 | 
						|
				'content' => DecodeTheFile($filedir),
 | 
						|
			);
 | 
						|
//		}		
 | 
						|
	}
 | 
						|
}
 | 
						|
closedir($dir_handle);
 | 
						|
 | 
						|
$link = mysql_connect($host, $user, $password)
 | 
						|
    or die('Could not connect: ' . mysql_error());
 | 
						|
mysql_select_db($database) or die('Could not select database');
 | 
						|
 | 
						|
 | 
						|
db_query("TRUNCATE TABLE `sm_smconst`");
 | 
						|
db_query("TRUNCATE TABLE `sm_smfilescon`");
 | 
						|
db_query("TRUNCATE TABLE `sm_smdefine`"); 
 | 
						|
db_query("UPDATE sm_smfunctions SET depreached = 2 WHERE typeof <> 4");
 | 
						|
 | 
						|
//db_query("TRUNCATE TABLE `smfiles`");
 | 
						|
//db_query("TRUNCATE TABLE `smfunctions`");
 | 
						|
 | 
						|
$tables = Array (
 | 
						|
	'sm_smfiles' => Array ('filename','id'),
 | 
						|
	'sm_smfunctions' => Array ('func','id'),
 | 
						|
);
 | 
						|
 | 
						|
foreach ($tables as $name => $table){
 | 
						|
	$result = db_query('SELECT ' . $table[0] . ',' . $table[1] . ' FROM ' . $name);
 | 
						|
	
 | 
						|
	$tableinfo[$name] = Array();
 | 
						|
	
 | 
						|
	while ($line = mysql_fetch_array($result, MYSQL_NUM)) {
 | 
						|
		$tableinfo[$name][$line[0]] = $line[1];
 | 
						|
	}
 | 
						|
	
 | 
						|
	mysql_free_result($result);
 | 
						|
}
 | 
						|
 | 
						|
foreach($files as $file){
 | 
						|
	$onlyname = str_replace('.inc','',$file['name']);
 | 
						|
	
 | 
						|
	if(!isset($tableinfo['sm_smfiles'][ $file['name'] ])){
 | 
						|
		//0 is a ID, so count will make it just right...
 | 
						|
		$tableinfo['sm_smfiles'][ $file['name'] ] = FindUnusedid('sm_smfiles');
 | 
						|
		db_query('INSERT INTO sm_smfiles(id,name,filename) VALUES ('. $tableinfo['sm_smfiles'][ $file['name'] ] .',"'.$onlyname.'","'.$file['name'].'")');
 | 
						|
	}
 | 
						|
	
 | 
						|
	db_query('INSERT INTO `sm_smfilescon` VALUES ('. $tableinfo['sm_smfiles'][ $file['name'] ] .',\''.  addslashes( $file['content'] ) .'\')');
 | 
						|
 | 
						|
	$javascript .= 'SMfiles['. $tableinfo['sm_smfiles'][ $file['name'] ] .'] = "'. $onlyname .'"' . "\n";
 | 
						|
	
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
foreach($funcs as $go){
 | 
						|
 	$gop = str_replace('"', '\"', $go );
 | 
						|
 	
 | 
						|
 	$fid = FindFileID($gop['file']); 
 | 
						|
 	
 | 
						|
 	$javacontent = PrepareJava($gop['description'] );
 | 
						|
 | 
						|
 	if(isset($tableinfo['sm_smfunctions'][ $gop['function'] ])){
 | 
						|
		$sql = 'UPDATE sm_smfunctions
 | 
						|
			SET fullfunc = "'.$gop['fullfunc'].'",
 | 
						|
			description = "'.$gop['description'].'",
 | 
						|
			`treturn` = "'.$gop['return'].'",
 | 
						|
			`onerror` = "'.$gop['onerror'].'",
 | 
						|
			`funcinput` = "'.$gop['input'].'",
 | 
						|
			inc = '.$fid.',
 | 
						|
			incname = "'.$gop['file'].'",
 | 
						|
			typeof ='.$gop['typeof'].',
 | 
						|
			depreached = '.$gop['depreached'].'
 | 
						|
			WHERE id = '. $tableinfo['sm_smfunctions'][ $gop['function'] ] .'';
 | 
						|
	} else {
 | 
						|
		$tableinfo['sm_smfunctions'][ $gop['function'] ] =  FindUnusedid('sm_smfunctions');
 | 
						|
	 	$sql = 'INSERT INTO sm_smfunctions(id,func,fullfunc,description,`treturn`,`onerror`,`funcinput`,inc,incname,typeof,version) VALUES
 | 
						|
		('. $tableinfo['sm_smfunctions'][ $gop['function'] ] .',
 | 
						|
		"'.$gop['function'].'",
 | 
						|
		"'.$gop['fullfunc'].'",
 | 
						|
		"'.$javacontent.'",
 | 
						|
		"'.$gop['return'].'",
 | 
						|
		"'.$gop['onerror'].'",
 | 
						|
		"'.$gop['input'].'",
 | 
						|
		'.$fid.',
 | 
						|
		"'.$gop['file'].'",
 | 
						|
		'.$gop['typeof'].', 
 | 
						|
		\''.$version.'\'
 | 
						|
		)';
 | 
						|
	}
 | 
						|
	
 | 
						|
	$javascript .= 'SMfunctions['. $tableinfo['sm_smfunctions'][ $gop['function'] ] .'] = Array ("'.$gop['function'].'","'.$javacontent.'");' . "\n";
 | 
						|
	
 | 
						|
	$filefunclist[$fid][] = $tableinfo['sm_smfunctions'][ $gop['function'] ];
 | 
						|
	
 | 
						|
	$query = db_query($sql);	
 | 
						|
}
 | 
						|
 | 
						|
foreach($consts as $go){
 | 
						|
 	$gop = str_replace('"', '\"', $go );
 | 
						|
 	$fid = FindFileID($gop['file']);
 | 
						|
 
 | 
						|
 	$sql = 'INSERT INTO sm_smconst(fileid,descrip,`fulltext`) VALUES
 | 
						|
	('.$fid.',
 | 
						|
	"'.$gop['info'].'",
 | 
						|
	"'.$gop['content'].'"
 | 
						|
	)';
 | 
						|
	
 | 
						|
	$query = db_query($sql);	
 | 
						|
}
 | 
						|
 | 
						|
foreach($filefunclist as $id => $go){
 | 
						|
	$javascript .= 'SMfiledata['. $id .'] = Array ('. implode(",",$go) .');' . "\n";
 | 
						|
}
 | 
						|
 | 
						|
foreach($defines as $id => $go){
 | 
						|
	$gop = str_replace('"', '\"', $go );
 | 
						|
 	$sql = 'INSERT INTO `sm_smdefine` (`id`,`variable` ,`value` ,`comment`) VALUES ('.$id.',"'.$gop['variable'].'", "'.$gop['value'].'", "'.$gop['comment'].'")';
 | 
						|
 	$javascript .= 'SMconstant['.$id.'] = Array ("'. PrepareJava($gop['variable']) .'","'. PrepareJava($gop['value']) .'","'. PrepareJava($gop['comment']) .'");' . "\n";
 | 
						|
 	db_query($sql);
 | 
						|
}
 | 
						|
 | 
						|
db_query('UPDATE `sm_sminfo` SET infob = "'.$version.'" WHERE master = "version"');
 | 
						|
 | 
						|
foreach($tableinfo['sm_smfiles'] as $fid){
 | 
						|
	db_query('UPDATE sm_smfiles SET
 | 
						|
`fcount` = (SELECT COUNT(*) FROM sm_smfunctions WHERE inc = '.$fid.'),
 | 
						|
`ccount` = (SELECT COUNT(*) FROM sm_smconst WHERE fileid = '.$fid.')
 | 
						|
WHERE id = '.$fid.'');
 | 
						|
}
 | 
						|
 | 
						|
$res = mysql_query("SELECT id FROM sm_smfunctions WHERE depreached = 2");
 | 
						|
while (($row = mysql_fetch_array($res)) !== FALSE)
 | 
						|
{
 | 
						|
	db_query("DELETE FROM sm_smposts WHERE func = " . $row[0]);
 | 
						|
	db_query("DELETE FROM sm_smfunctions WHERE id = " . $row[0]);
 | 
						|
}
 | 
						|
 | 
						|
mysql_free_result($res);
 | 
						|
 | 
						|
mysql_close($link);
 | 
						|
 | 
						|
//$filename = "SMfuncs.js";
 | 
						|
if (!$handle = fopen($filename, 'w')) {
 | 
						|
	echo "Cannot open file ($filename)";
 | 
						|
	exit;
 | 
						|
}
 | 
						|
 | 
						|
echo $javascript;
 | 
						|
 | 
						|
    // Write $somecontent to our opened file.
 | 
						|
if (fwrite($handle, $javascript) === FALSE) {
 | 
						|
	echo "Cannot write to file ($filename)";
 | 
						|
	exit;
 | 
						|
}
 | 
						|
 | 
						|
fclose($handle);
 | 
						|
 | 
						|
?>
 |