X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDatabase%2FDBStructure.php;h=92666edb89b78c42cfa3bb80bf48e701cb99ef91;hb=5a3991d4f7bc929c1087d9275716fc1c8cc299a6;hp=f9335da8edb7e08640a8f0567571a75aaeaae5c2;hpb=19ffc0510b71096442de0456c805543378dd42d6;p=friendica.git diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php index f9335da8ed..92666edb89 100644 --- a/src/Database/DBStructure.php +++ b/src/Database/DBStructure.php @@ -8,6 +8,7 @@ use Exception; use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\Core\L10n; +use Friendica\Core\Logger; use Friendica\Util\DateTimeFormat; require_once 'boot.php'; @@ -22,8 +23,12 @@ require_once 'include/text.php'; */ class DBStructure { + const UPDATE_NOT_CHECKED = 0; // Database check wasn't executed before + const UPDATE_SUCCESSFUL = 1; // Database check was successful + const UPDATE_FAILED = 2; // Database check failed + /** - * Database structure definition loaded from config/dbstructure.php + * Database structure definition loaded from config/dbstructure.config.php * * @var array */ @@ -52,58 +57,6 @@ class DBStructure } } - /* - * send the email and do what is needed to do on update fails - * - * @param update_id (int) number of failed update - * @param error_message (str) error message - */ - public static function updateFail($update_id, $error_message) { - $a = get_app(); - - //send the administrators an e-mail - $admin_mail_list = "'".implode("','", array_map(['Friendica\Database\DBA', 'escape'], explode(",", str_replace(" ", "", Config::get('config', 'admin_email')))))."'"; - $adminlist = q("SELECT uid, language, email FROM user WHERE email IN (%s)", - $admin_mail_list - ); - - // No valid result? - if (!DBA::isResult($adminlist)) { - logger(sprintf('Cannot notify administrators about update_id=%d, error_message=%s', $update_id, $error_message), LOGGER_INFO); - - // Don't continue - return; - } - - // every admin could had different language - foreach ($adminlist as $admin) { - $lang = (($admin['language'])?$admin['language']:'en'); - L10n::pushLang($lang); - - $preamble = deindent(L10n::t(" - The friendica developers released update %s recently, - but when I tried to install it, something went terribly wrong. - This needs to be fixed soon and I can't do it alone. Please contact a - friendica developer if you can not help me on your own. My database might be invalid.", - $update_id)); - $body = L10n::t("The error message is\n[pre]%s[/pre]", $error_message); - - notification([ - 'uid' => $admin['uid'], - 'type' => SYSTEM_EMAIL, - 'to_email' => $admin['email'], - 'preamble' => $preamble, - 'body' => $body, - 'language' => $lang] - ); - L10n::popLang(); - } - - //try the logger - logger("CRITICAL: Database structure update failed: ".$error_message); - } - - private static function tableStructure($table) { $structures = q("DESCRIBE `%s`", $table); @@ -173,7 +126,7 @@ class DBStructure } public static function printStructure() { - $database = self::definition(); + $database = self::definition(false); echo "-- ------------------------------------------\n"; echo "-- ".FRIENDICA_PLATFORM." ".FRIENDICA_VERSION." (".FRIENDICA_CODENAME,")\n"; @@ -221,7 +174,7 @@ class DBStructure $errors = ''; - logger('updating structure', LOGGER_DEBUG); + Logger::log('updating structure', Logger::DEBUG); // Get the current structure $database = []; @@ -234,7 +187,7 @@ class DBStructure foreach ($tables AS $table) { $table = current($table); - logger(sprintf('updating structure for table %s ...', $table), LOGGER_DEBUG); + Logger::log(sprintf('updating structure for table %s ...', $table), Logger::DEBUG); $database[$table] = self::tableStructure($table); } } @@ -376,8 +329,9 @@ class DBStructure } if (isset($database[$name]["table_status"]["Comment"])) { - if ($database[$name]["table_status"]["Comment"] != $structure['comment']) { - $sql2 = "COMMENT = '".DBA::escape($structure['comment'])."'"; + $structurecomment = defaults($structure, "comment", ""); + if ($database[$name]["table_status"]["Comment"] != $structurecomment) { + $sql2 = "COMMENT = '".DBA::escape($structurecomment)."'"; if ($sql3 == "") { $sql3 = "ALTER" . $ignore . " TABLE `".$temp_name."` ".$sql2; @@ -534,9 +488,9 @@ class DBStructure Config::set('system', 'maintenance_reason', ''); if ($errors) { - Config::set('system', 'dbupdate', DB_UPDATE_FAILED); + Config::set('system', 'dbupdate', self::UPDATE_FAILED); } else { - Config::set('system', 'dbupdate', DB_UPDATE_SUCCESSFUL); + Config::set('system', 'dbupdate', self::UPDATE_SUCCESSFUL); } } @@ -584,7 +538,7 @@ class DBStructure $primary_keys = []; foreach ($structure["fields"] AS $fieldname => $field) { $sql_rows[] = "`".DBA::escape($fieldname)."` ".self::FieldCommand($field); - if (x($field,'primary') && $field['primary']!='') { + if (!empty($field['primary'])) { $primary_keys[] = $fieldname; } } @@ -829,28 +783,29 @@ class DBStructure } /** - * Loads the database structure definition from the config/dbstructure.php file. + * Loads the database structure definition from the config/dbstructure.config.php file. * On first pass, defines DB_UPDATE_VERSION constant. * - * @see config/dbstructure.php + * @see config/dbstructure.config.php + * @param boolean $with_addons_structure Whether to tack on addons additional tables * @return array * @throws Exception */ - public static function definition() + public static function definition($with_addons_structure = true) { if (!self::$definition) { $a = \Friendica\BaseObject::getApp(); - $filename = $a->getBasePath() . '/config/dbstructure.php'; + $filename = $a->getBasePath() . '/config/dbstructure.config.php'; if (!is_readable($filename)) { - throw new Exception('Missing database structure config file config/dbstructure.php'); + throw new Exception('Missing database structure config file config/dbstructure.config.php'); } $definition = require $filename; if (!$definition) { - throw new Exception('Corrupted database structure config file config/dbstructure.php'); + throw new Exception('Corrupted database structure config file config/dbstructure.config.php'); } self::$definition = $definition; @@ -858,7 +813,9 @@ class DBStructure $definition = self::$definition; } - Hook::callAll('dbstructure_definition', $definition); + if ($with_addons_structure) { + Hook::callAll('dbstructure_definition', $definition); + } return $definition; }