| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-13 17:43:58 +00:00
										 |  |  | // MYSQL Check - FIXME
 | 
					
						
							|  |  |  | // 1 UNKNOWN
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  | /* Observium Network Management and Monitoring System | 
					
						
							|  |  |  |  * Copyright (C) 2006-2012, Observium Developers - http://www.observium.org | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * See COPYING for more details. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-16 23:18:49 +00:00
										 |  |  | if (!isset($debug)) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   # Not called from within discovery, let's load up the necessary stuff.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-10 14:45:34 +00:00
										 |  |  |   include("includes/defaults.inc.php"); | 
					
						
							| 
									
										
										
										
											2012-02-16 23:18:49 +00:00
										 |  |  |   include("config.php"); | 
					
						
							| 
									
										
										
										
											2012-05-10 14:45:34 +00:00
										 |  |  |   include("includes/definitions.inc.php"); | 
					
						
							| 
									
										
										
										
											2012-02-16 23:18:49 +00:00
										 |  |  |   include("includes/functions.php"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   $options = getopt("d"); | 
					
						
							|  |  |  |   if (isset($options['d'])) | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     $debug = TRUE; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     $debug = FALSE; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 18:41:53 +00:00
										 |  |  | $insert = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-05 21:39:07 +00:00
										 |  |  | if ($db_rev = @dbFetchCell("SELECT version FROM `dbSchema` ORDER BY version DESC LIMIT 1")) {} else | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  | { | 
					
						
							|  |  |  |   $db_rev = 0; | 
					
						
							| 
									
										
										
										
											2012-02-19 18:41:53 +00:00
										 |  |  |   $insert = 1; | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # For transition from old system
 | 
					
						
							|  |  |  | if ($old_rev = @dbFetchCell("SELECT revision FROM `dbSchema`")) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   echo "-- Transitioning from old revision-based schema to database version system\n"; | 
					
						
							|  |  |  |   $db_rev = 6; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-05 10:00:31 +00:00
										 |  |  |   if ($old_rev <= 1000) { $db_rev = 1; } | 
					
						
							|  |  |  |   if ($old_rev <= 1435) { $db_rev = 2; } | 
					
						
							|  |  |  |   if ($old_rev <= 2245) { $db_rev = 3; } | 
					
						
							|  |  |  |   if ($old_rev <= 2804) { $db_rev = 4; } | 
					
						
							|  |  |  |   if ($old_rev <= 2827) { $db_rev = 5; } | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-19 17:14:57 +00:00
										 |  |  |   $insert = 1; | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $updating = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $include_dir_regexp = "/\.sql$/"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ($handle = opendir($config['install_dir'] . '/sql-schema')) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   while (false !== ($file = readdir($handle))) | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     if (filetype($config['install_dir'] . '/sql-schema/' . $file) == 'file' && preg_match($include_dir_regexp, $file)) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       $filelist[] = $file; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   closedir($handle); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | asort($filelist); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | foreach ($filelist as $file) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   list($filename,$extension) = explode('.',$file,2); | 
					
						
							|  |  |  |   if ($filename > $db_rev) | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     if (!$updating) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       echo "-- Updating database schema\n"; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     echo sprintf("%03d",$db_rev) . " -> " . sprintf("%03d",$filename) . " ..."; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $err = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if ($fd = @fopen($config['install_dir'] . '/sql-schema/' . $file,'r')) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       $data = fread($fd,4096); | 
					
						
							|  |  |  |       while (!feof($fd)) | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         $data .= fread($fd,4096); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       foreach (explode("\n", $data) as $line) | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         if (trim($line)) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           if ($debug) { echo("$line \n"); } | 
					
						
							| 
									
										
										
										
											2012-02-19 18:41:53 +00:00
										 |  |  |           if ($line[0] != "#") | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2012-02-19 18:41:53 +00:00
										 |  |  |             $update = mysql_query($line); | 
					
						
							|  |  |  |             if (!$update) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |               $err++; | 
					
						
							|  |  |  |               if ($debug) { echo(mysql_error() . "\n"); } | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-08 10:25:22 +00:00
										 |  |  |       if ($db_rev < 5) | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         echo(" done.\n"); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       else | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         echo(" done ($err errors).\n"); | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2012-03-08 10:25:22 +00:00
										 |  |  |       echo(" Could not open file!\n"); | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $updating++; | 
					
						
							|  |  |  |     $db_rev = $filename; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ($updating) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2012-02-19 17:14:57 +00:00
										 |  |  |   if ($insert) | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     dbInsert(array('version' => $db_rev), 'dbSchema'); | 
					
						
							|  |  |  |   } else { | 
					
						
							|  |  |  |     dbUpdate(array('version' => $db_rev), 'dbSchema'); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2012-02-16 12:19:40 +00:00
										 |  |  |   echo "-- Done\n"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-17 00:19:18 +00:00
										 |  |  | ?>
 |