Ejemplo n.º 1
0
 static function updateDatabaseStruct($defs)
 {
     if (file_exists(RYAPP_PATH . 'database.versions')) {
         $versions = unserialize(file_get_contents(RYAPP_PATH . 'database.versions'));
     } else {
         $versions = array();
     }
     $c = "Updating DB Structure...\n";
     foreach ($defs as $dbname => $tables) {
         $db = new ServerDatabase(RYAPI_WEBDB_HOST, RYAPI_WEBDB_LOGIN, RYAPI_WEBDB_PASS, $dbname);
         $db->query("SET NAMES utf8");
         $c .= "\n\tSelected DB '{$dbname}'\n";
         foreach ($tables as $table => $sql) {
             $version = count($sql);
             if (array_key_exists($table, $versions)) {
                 $diff = $version - $versions[$table];
             } else {
                 $versions[$table] = 0;
                 $diff = $version;
             }
             $c .= "\t\tTable '{$table}' need v{$version} (current v" . strval($versions[$table] . ') => ');
             if ($diff > 0) {
                 $sql_to_run = array_slice($sql, $versions[$table], $diff);
                 foreach ($sql_to_run as $sql_run) {
                     if ($sql_run) {
                         $c .= "Run sql... ";
                         $result = $db->query($sql_run);
                     } else {
                         $c .= "KO!!!";
                     }
                 }
                 if ($result) {
                     $c .= "OK";
                     $versions[$table] = $version;
                 }
             } else {
                 $c .= "OK";
             }
             $c .= "\n";
         }
         $c .= "\n";
         $db->close();
     }
     file_put_contents(RYAPP_PATH . 'database.versions', serialize($versions));
     return '<pre>' . $c . '<pre>';
 }