Skip to content
Snippets Groups Projects
Commit 449a353f authored by efalcy's avatar efalcy
Browse files

dev #14278 : add script to update cosmogramme from server

parent da92f27f
Branches
Tags
4 merge requests!258Dev/13872 Orphee Allow Hold Available Items,!180Master,!175Master,!174Dev#1278 Autoupdate Cosmogramme Script
......@@ -54,7 +54,7 @@ require_once($basePath.'/../storm_init.php');
require_once("classe_sql.php");
require_once("fonctions/sql.php");
xdebug_break();
// Lire la config
chdir($cosmo_path->getBasePath());
$cfg=lireConfig($cfgfile);
......
<?php
$basePath = dirname(realpath(__FILE__));
require_once 'classes/classe_cosmopaths.php';
$cosmo_path = new CosmoPaths();
define('BASE_URL', $cosmo_path->getBaseUrl());
require_once($basePath.'/../storm_init.php');
$sql = Zend_Registry::get('sql');
$patch_level = Class_CosmoVar::find("patch_level");
function versionForFile($file) {
return (int)substr($file, -7, 3);
}
function extensionForFile($file) {
return substr($file, -4);
}
// Recup des patches a executer
$path = realpath(dirname(__FILE__)).'/../sql/patch/';
$handle = @opendir($path);
if (!$handle)
echo('Impossible d\'ouvrir le dossier : '.$path);
$scripts = [];
while (false !== ($fic = readdir($handle))) {
if (!in_array(extensionForFile($fic), ['.sql', '.php']))
continue;
$numero = versionForFile($fic);
if ($numero > $patch_level->getValeur())
$scripts[] = $path . $fic;
}
sort($scripts);
closedir($handle);
foreach($scripts as $script) {
$num_patch = versionForFile($script);
echo('Execution patch n° ' . $num_patch );
switch(extensionForFile($script)) {
case '.php':
runPhpUpgrade($script);break;
case '.sql':
runSqlUpgrade($script, $sql);break;
}
// Ecrire le patch dans la base
$patch_level->setValeur($num_patch)->save();
}
echo('Mise à niveau de la base effectuée avec succès');
exit;
function runSqlUpgrade($script, $sql) {
$num_instruction = 0;
$data = file($script);
$instructions = [];
$contents = implode(' ', $data);
if (false !== strpos($contents, 'CREATE FUNCTION'))
$instructions[] = $contents;
else {
$instruction = '';
foreach($data as $ligne) {
$ligne = trim($ligne);
if (!$ligne or substr($ligne,0,2)=="--") continue;
$instruction.=$ligne.' ';
if(substr($ligne,-1)!=";")
continue;
$instructions[] = $instruction;
$instruction = '';
}
}
foreach($instructions as $instruction) {
echo($instruction."\n");
flush();
// Executer
$num_instruction++;
$sql->execute($instruction);
}
}
function runPhpUpgrade($script) {
set_error_handler(
function($no, $message, $file, $line, $context) {
echo('Erreur :'.$message
. " \nfile : " . $file
. " \nline : " . $line
);
die(255);
});
try {
include $script;
} catch (Exception $e) {
echo("Code : ".$e->getCode()."\n");
echo("Erreur :".$e->getMessage());
exit;
}
}
?>
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment