Fix di alcuni bug (#117)
Risoluzione di alcuni malfunzionamenti durante l'installazione causati da codice non aggiornato.
This commit is contained in:
parent
f370632c28
commit
3d99799264
|
@ -50,14 +50,13 @@ if (post('db_host') !== null) {
|
||||||
|
|
||||||
$results = $dbo->fetchArray('SHOW GRANTS FOR CURRENT_USER');
|
$results = $dbo->fetchArray('SHOW GRANTS FOR CURRENT_USER');
|
||||||
foreach ($results as $result) {
|
foreach ($results as $result) {
|
||||||
|
$privileges = current($result);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
str_contains($result, $find) &&
|
str_contains($privileges, ' ON `'.$db_name.'`.*') ||
|
||||||
(
|
str_contains($privileges, ' ON *.*')
|
||||||
str_contains($result, ' ON `'.$db_name.'`.*') ||
|
|
||||||
str_contains($result, ' 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)) {
|
if (in_array('ALL', $pieces) || in_array('ALL PRIVILEGES', $pieces)) {
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -20,35 +20,12 @@ class Update
|
||||||
$database_ready = $database->isConnected() && $database->fetchNum("SHOW TABLES LIKE 'updates'");
|
$database_ready = $database->isConnected() && $database->fetchNum("SHOW TABLES LIKE 'updates'");
|
||||||
|
|
||||||
// Individuazione di tutti gli aggiornamenti fisicamente presenti
|
// Individuazione di tutti gli aggiornamenti fisicamente presenti
|
||||||
$results = [];
|
|
||||||
|
|
||||||
// Aggiornamenti del gestionale
|
// Aggiornamenti del gestionale
|
||||||
$core = (array) glob(DOCROOT.'/update/*.{php,sql}', GLOB_BRACE);
|
$core = self::getCoreUpdates();
|
||||||
foreach ($core as $value) {
|
|
||||||
$infos = pathinfo($value);
|
|
||||||
$value = str_replace('_', '.', $infos['filename']);
|
|
||||||
|
|
||||||
if (self::isVersion($value)) {
|
|
||||||
$results[] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Aggiornamenti dei moduli
|
// Aggiornamenti dei moduli
|
||||||
$modules = (array) glob(DOCROOT.'/modules/*/update/*.{php,sql}', GLOB_BRACE);
|
$modules = self::getModulesUpdates();
|
||||||
foreach ($modules as $value) {
|
|
||||||
$infos = pathinfo($value);
|
|
||||||
|
|
||||||
$module = end(explode('/', dirname($infos['dirname'])));
|
$results = array_merge($core, $modules);
|
||||||
|
|
||||||
$value = str_replace('_', '.', $infos['filename']);
|
|
||||||
|
|
||||||
if (self::isVersion($value)) {
|
|
||||||
$results[] = $module.'_'.$value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$results = array_unique($results);
|
|
||||||
asort($results);
|
|
||||||
|
|
||||||
// Individuazione di tutti gli aggiornamenti inseriti
|
// Individuazione di tutti gli aggiornamenti inseriti
|
||||||
$updates = ($database_ready) ? $database->fetchArray('SELECT * FROM `updates`') : [];
|
$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.
|
* Restituisce l'elenco degli aggiornamento incompleti o non ancora effettuati.
|
||||||
*
|
*
|
||||||
|
@ -205,7 +237,13 @@ class Update
|
||||||
$result = self::getFile('VERSION');
|
$result = self::getFile('VERSION');
|
||||||
|
|
||||||
if (empty($result)) {
|
if (empty($result)) {
|
||||||
|
$database = Database::getConnection();
|
||||||
|
|
||||||
|
if ($database->isInstalled()) {
|
||||||
$result = self::getDatabaseVersion();
|
$result = self::getDatabaseVersion();
|
||||||
|
} else {
|
||||||
|
$result = end(self::getCoreUpdates());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
|
|
Loading…
Reference in New Issue