]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Update.php
Merge pull request #9039 from MrPetovan/task/frio-accent-scheme
[friendica.git] / src / Core / Update.php
index 5a151b8380916311b057c04d1c65a9a6e3140e34..827029d50e184a52a5f93468cb0409d8242f657d 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/**
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Core;
 
@@ -108,7 +127,7 @@ class Update
 
                                        // run the pre_update_nnnn functions in update.php
                                        for ($x = $stored + 1; $x <= $current; $x++) {
-                                               $r = self::runUpdateFunction($x, 'pre_update');
+                                               $r = self::runUpdateFunction($x, 'pre_update', $sendMail);
                                                if (!$r) {
                                                        DI::config()->set('system', 'update', Update::FAILED);
                                                        DI::lock()->release('dbupdate');
@@ -137,7 +156,7 @@ class Update
 
                                        // run the update_nnnn functions in update.php
                                        for ($x = $stored + 1; $x <= $current; $x++) {
-                                               $r = self::runUpdateFunction($x, 'update');
+                                               $r = self::runUpdateFunction($x, 'update', $sendMail);
                                                if (!$r) {
                                                        DI::config()->set('system', 'update', Update::FAILED);
                                                        DI::lock()->release('dbupdate');
@@ -162,13 +181,14 @@ class Update
        /**
         * Executes a specific update function
         *
-        * @param int    $x      the DB version number of the function
-        * @param string $prefix the prefix of the function (update, pre_update)
-        *
+        * @param int    $x        the DB version number of the function
+        * @param string $prefix   the prefix of the function (update, pre_update)
+        * @param bool   $sendMail whether to send emails on success/failure
+
         * @return bool true, if the update function worked
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function runUpdateFunction($x, $prefix)
+       public static function runUpdateFunction($x, $prefix, bool $sendMail = true)
        {
                $funcname = $prefix . '_' . $x;
 
@@ -188,11 +208,13 @@ class Update
                                $retval = $funcname();
 
                                if ($retval) {
-                                       //send the administrator an e-mail
-                                       self::updateFailed(
-                                               $x,
-                                               DI::l10n()->t('Update %s failed. See error logs.', $x)
-                                       );
+                                       if ($sendMail) {
+                                               //send the administrator an e-mail
+                                               self::updateFailed(
+                                                       $x,
+                                                       DI::l10n()->t('Update %s failed. See error logs.', $x)
+                                               );
+                                       }
                                        Logger::error('Update function ERROR.', ['function' => $funcname, 'retval' => $retval]);
                                        DI::lock()->release('dbupdate_function');
                                        return false;
@@ -252,7 +274,7 @@ class Update
                        }
                        $sent[] = $admin['email'];
 
-                       $lang = (($admin['language'])?$admin['language']:'en');
+                       $lang = $admin['language'] ?? 'en';
                        $l10n = DI::l10n()->withLang($lang);
 
                        $preamble = Strings::deindent($l10n->t("
@@ -261,17 +283,15 @@ class Update
                                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'],
-                                       'subject'  => $l10n->t('[Friendica Notify] Database update'),
-                                       'preamble' => $preamble,
-                                       'body'     => $body,
-                                       'language' => $lang]
-                       );
+                       $body     = $l10n->t("The error message is\n[pre]%s[/pre]", $error_message);
+
+                       $email = DI::emailer()
+                               ->newSystemMail()
+                               ->withMessage($l10n->t('[Friendica Notify] Database update'), $preamble, $body)
+                               ->forUser($admin)
+                               ->withRecipient($admin['email'])
+                               ->build();
+                       DI::emailer()->send($email);
                }
 
                //try the logger
@@ -301,15 +321,13 @@ class Update
                                        The friendica database was successfully updated from %s to %s.",
                                        $from_build, $to_build));
 
-                               notification([
-                                               'uid' => $admin['uid'],
-                                               'type' => SYSTEM_EMAIL,
-                                               'to_email' => $admin['email'],
-                                               'subject'  => DI::l10n()->t('[Friendica Notify] Database update'),
-                                               'preamble' => $preamble,
-                                               'body' => $preamble,
-                                               'language' => $lang]
-                               );
+                               $email = DI::emailer()
+                                       ->newSystemMail()
+                                       ->withMessage($l10n->t('[Friendica Notify] Database update'), $preamble)
+                                       ->forUser($admin)
+                                       ->withRecipient($admin['email'])
+                                       ->build();
+                               DI::emailer()->send($email);
                        }
                }