]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Update.php
Avoid memory issue in exception
[friendica.git] / src / Core / Update.php
index 13968833576bdc4910dc8210fa6541f86a002354..5df0675cdaeb46cd7520468d693e79f349b034c2 100644 (file)
@@ -4,6 +4,7 @@ namespace Friendica\Core;
 
 use Friendica\Database\DBA;
 use Friendica\Database\DBStructure;
+use Friendica\Util\Strings;
 
 class Update
 {
@@ -13,10 +14,16 @@ class Update
        /**
         * @brief Function to check if the Database structure needs an update.
         *
+        * @param string $basePath The base path of this application
         * @param boolean $via_worker boolean Is the check run via the worker?
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function check($via_worker)
+       public static function check($basePath, $via_worker)
        {
+               if (!DBA::connected()) {
+                       return;
+               }
+
                $build = Config::get('system', 'build');
 
                if (empty($build)) {
@@ -32,7 +39,7 @@ class Update
                if ($build < DB_UPDATE_VERSION) {
                        // When we cannot execute the database update via the worker, we will do it directly
                        if (!Worker::add(PRIORITY_CRITICAL, 'DBUpdate') && $via_worker) {
-                               self::run();
+                               self::run($basePath);
                        }
                }
        }
@@ -40,13 +47,15 @@ class Update
        /**
         * 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 $sendMail Sends a Mail to the administrator in case of success/failure
+        * @param string $basePath The base path of this application
+        * @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)
+       public static function run($basePath, $force = false, $verbose = false, $sendMail = true)
        {
                // In force mode, we release the dbupdate lock first
                // Necessary in case of an stuck update
@@ -84,7 +93,7 @@ class Update
                                        }
 
                                        // update the structure in one call
-                                       $retval = DBStructure::update($verbose, true);
+                                       $retval = DBStructure::update($basePath, $verbose, true);
                                        if ($retval) {
                                                if ($sendMail) {
                                                        self::updateFailed(
@@ -117,6 +126,8 @@ class Update
                                        Lock::release('dbupdate');
                                }
                        }
+               } elseif ($force) {
+                       DBStructure::update($basePath, $verbose, true);
                }
 
                return '';
@@ -125,10 +136,11 @@ class Update
        /**
         * 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)
        {
@@ -188,8 +200,9 @@ class Update
        /**
         * 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
@@ -209,7 +222,7 @@ class Update
                        $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
@@ -244,7 +257,7 @@ class Update
                                $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));