Fix di alcuni bug (#117)

Risoluzione di alcuni malfunzionamenti durante l'installazione causati da codice non aggiornato.
This commit is contained in:
Thomas Zilio 2018-01-17 15:47:00 +01:00
parent f370632c28
commit 3d99799264
2 changed files with 70 additions and 33 deletions

View File

@ -50,14 +50,13 @@ if (post('db_host') !== null) {
$results = $dbo->fetchArray('SHOW GRANTS FOR CURRENT_USER');
foreach ($results as $result) {
$privileges = current($result);
if (
str_contains($result, $find) &&
(
str_contains($result, ' ON `'.$db_name.'`.*') ||
str_contains($result, ' ON *.*')
)
str_contains($privileges, ' ON `'.$db_name.'`.*') ||
str_contains($privileges, ' ON *.*')
) {
$pieces = explode(', ', explode(' ON ', str_replace('GRANT ', '', current($result)))[0]);
$pieces = explode(', ', explode(' ON ', str_replace('GRANT ', '', $privileges))[0]);
if (in_array('ALL', $pieces) || in_array('ALL PRIVILEGES', $pieces)) {
break;

View File

@ -20,35 +20,12 @@ class Update
$database_ready = $database->isConnected() && $database->fetchNum("SHOW TABLES LIKE 'updates'");
// Individuazione di tutti gli aggiornamenti fisicamente presenti
$results = [];
// Aggiornamenti del gestionale
$core = (array) glob(DOCROOT.'/update/*.{php,sql}', GLOB_BRACE);
foreach ($core as $value) {
$infos = pathinfo($value);
$value = str_replace('_', '.', $infos['filename']);
if (self::isVersion($value)) {
$results[] = $value;
}
}
$core = self::getCoreUpdates();
// Aggiornamenti dei moduli
$modules = (array) glob(DOCROOT.'/modules/*/update/*.{php,sql}', GLOB_BRACE);
foreach ($modules as $value) {
$infos = pathinfo($value);
$modules = self::getModulesUpdates();
$module = end(explode('/', dirname($infos['dirname'])));
$value = str_replace('_', '.', $infos['filename']);
if (self::isVersion($value)) {
$results[] = $module.'_'.$value;
}
}
$results = array_unique($results);
asort($results);
$results = array_merge($core, $modules);
// Individuazione di tutti gli aggiornamenti inseriti
$updates = ($database_ready) ? $database->fetchArray('SELECT * FROM `updates`') : [];
@ -89,6 +66,61 @@ class Update
}
}
/**
* Restituisce l'elenco degli aggiornamento del gestionale presenti nella cartella <b>update<b>.
*
* @return array
*/
protected static function getCoreUpdates()
{
$results = [];
// Aggiornamenti del gestionale
$core = (array) glob(DOCROOT.'/update/*.{php,sql}', GLOB_BRACE);
foreach ($core as $value) {
$infos = pathinfo($value);
$value = str_replace('_', '.', $infos['filename']);
if (self::isVersion($value)) {
$results[] = $value;
}
}
$results = array_unique($results);
asort($results);
return $results;
}
/**
* Restituisce l'elenco degli aggiornamento dei moduli, presenti nella cartella <b>update<b> dei singoli moduli.
*
* @return array
*/
protected static function getModulesUpdates()
{
$results = [];
// Aggiornamenti dei moduli
$modules = (array) glob(DOCROOT.'/modules/*/update/*.{php,sql}', GLOB_BRACE);
foreach ($modules as $value) {
$infos = pathinfo($value);
$module = end(explode('/', dirname($infos['dirname'])));
$value = str_replace('_', '.', $infos['filename']);
if (self::isVersion($value)) {
$results[] = $module.'_'.$value;
}
}
$results = array_unique($results);
asort($results);
return $results;
}
/**
* Restituisce l'elenco degli aggiornamento incompleti o non ancora effettuati.
*
@ -205,7 +237,13 @@ class Update
$result = self::getFile('VERSION');
if (empty($result)) {
$result = self::getDatabaseVersion();
$database = Database::getConnection();
if ($database->isInstalled()) {
$result = self::getDatabaseVersion();
} else {
$result = end(self::getCoreUpdates());
}
}
return $result;