use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
+use Friendica\Util\Strings;
class Update
{
* @brief Function to check if the Database structure needs an update.
*
* @param boolean $via_worker boolean Is the check run via the worker?
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function check($via_worker)
{
+ if (!DBA::connected()) {
+ return;
+ }
+
$build = Config::get('system', 'build');
if (empty($build)) {
/**
* Automatic database updates
*
- * @param bool $force Force the Update-Check even if the lock is set
- * @param bool $verbose Run the Update-Check verbose
+ * @param bool $force Force the Update-Check even if the lock is set
+ * @param bool $verbose Run the Update-Check verbose
* @param bool $sendMail Sends a Mail to the administrator in case of success/failure
*
* @return string Empty string if the update is successful, error messages otherwise
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function run($force = false, $verbose = false, $sendMail = true)
{
if ($stored < $current) {
Config::load('database');
+ Logger::log('Update from \'' . $stored . '\' to \'' . $current . '\' - starting', Logger::DEBUG);
+
// Compare the current structure with the defined structure
// If the Lock is acquired, never release it automatically to avoid double updates
if (Lock::acquire('dbupdate', 120, Cache::INFINITE)) {
$retval
);
}
+ Logger::log('ERROR: Update from \'' . $stored . '\' to \'' . $current . '\' - failed: ' - $retval, Logger::ALL);
Lock::release('dbupdate');
return $retval;
} else {
Config::set('database', 'last_successful_update', $current);
Config::set('database', 'last_successful_update_time', time());
+ Logger::log('Update from \'' . $stored . '\' to \'' . $current . '\' - finished', Logger::DEBUG);
}
// run the update_nnnn functions in update.php
}
}
+ Logger::log('Update from \'' . $stored . '\' to \'' . $current . '\' - successful', Logger::DEBUG);
if ($sendMail) {
self::updateSuccessfull($stored, $current);
}
Lock::release('dbupdate');
}
}
+ } elseif ($force) {
+ DBStructure::update($verbose, true);
}
return '';
/**
* Executes a specific update function
*
- * @param int $x the DB version number of the function
+ * @param int $x the DB version number of the function
* @param string $prefix the prefix of the function (update, pre_update)
*
* @return bool true, if the update function worked
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function runUpdateFunction($x, $prefix)
{
$funcname = $prefix . '_' . $x;
+ Logger::log('Update function \'' . $funcname . '\' - start', Logger::DEBUG);
+
if (function_exists($funcname)) {
// There could be a lot of processes running or about to run.
// We want exactly one process to run the update command.
$x,
L10n::t('Update %s failed. See error logs.', $x)
);
+ Logger::log('ERROR: Update function \'' . $funcname . '\' - failed: ' . $retval, Logger::ALL);
Lock::release('dbupdate_function');
return false;
} else {
}
Lock::release('dbupdate_function');
+ Logger::log('Update function \'' . $funcname . '\' - finished', Logger::DEBUG);
return true;
}
}
/**
* send the email and do what is needed to do on update fails
*
- * @param int $update_id number of failed update
- * @param string $error_message error message
+ * @param int $update_id number of failed update
+ * @param string $error_message error message
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
private static function updateFailed($update_id, $error_message) {
//send the administrators an e-mail
$lang = (($admin['language'])?$admin['language']:'en');
L10n::pushLang($lang);
- $preamble = deindent(L10n::t("
+ $preamble = Strings::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
$lang = (($admin['language']) ? $admin['language'] : 'en');
L10n::pushLang($lang);
- $preamble = deindent(L10n::t("
+ $preamble = Strings::deindent(L10n::t("
The friendica database was successfully updated from %s to %s.",
$from_build, $to_build));