mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			148 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
// MYSQL Check - FIXME
 | 
						|
// 1 UNKNOWN
 | 
						|
 | 
						|
/* 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.
 | 
						|
 */
 | 
						|
 | 
						|
if (!isset($debug))
 | 
						|
{
 | 
						|
  # Not called from within discovery, let's load up the necessary stuff.
 | 
						|
 | 
						|
  include("includes/defaults.inc.php");
 | 
						|
  include("config.php");
 | 
						|
  include("includes/definitions.inc.php");
 | 
						|
  include("includes/functions.php");
 | 
						|
 | 
						|
  $options = getopt("d");
 | 
						|
  if (isset($options['d']))
 | 
						|
  {
 | 
						|
    $debug = TRUE;
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    $debug = FALSE;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
$insert = 0;
 | 
						|
 | 
						|
if ($db_rev = @dbFetchCell("SELECT version FROM `dbSchema` ORDER BY version DESC LIMIT 1")) {} else
 | 
						|
{
 | 
						|
  $db_rev = 0;
 | 
						|
  $insert = 1;
 | 
						|
}
 | 
						|
 | 
						|
# 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;
 | 
						|
 | 
						|
  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; }
 | 
						|
 | 
						|
  $insert = 1;
 | 
						|
}
 | 
						|
 | 
						|
$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"); }
 | 
						|
          if ($line[0] != "#")
 | 
						|
          {
 | 
						|
            $update = mysql_query($line);
 | 
						|
            if (!$update)
 | 
						|
            {
 | 
						|
              $err++;
 | 
						|
              if ($debug) { echo(mysql_error() . "\n"); }
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
      if ($db_rev < 5)
 | 
						|
      {
 | 
						|
        echo(" done.\n");
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        echo(" done ($err errors).\n");
 | 
						|
      }
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      echo(" Could not open file!\n");
 | 
						|
    }
 | 
						|
 | 
						|
    $updating++;
 | 
						|
    $db_rev = $filename;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
if ($updating)
 | 
						|
{
 | 
						|
  if ($insert)
 | 
						|
  {
 | 
						|
    dbInsert(array('version' => $db_rev), 'dbSchema');
 | 
						|
  } else {
 | 
						|
    dbUpdate(array('version' => $db_rev), 'dbSchema');
 | 
						|
  }
 | 
						|
  echo "-- Done\n";
 | 
						|
}
 | 
						|
 | 
						|
?>
 |