2018-07-08 07:59:58 +02:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* UpdateTrait.php
|
2020-01-28 08:46:01 +01:00
|
|
|
* Copyright (c) 2019 james@firefly-iii.org
|
2018-07-08 07:59:58 +02:00
|
|
|
*
|
2019-10-02 06:37:26 +02:00
|
|
|
* This file is part of Firefly III (https://github.com/firefly-iii).
|
2018-07-08 07:59:58 +02:00
|
|
|
*
|
2019-10-02 06:37:26 +02:00
|
|
|
* 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.
|
2018-07-08 07:59:58 +02:00
|
|
|
*
|
2019-10-02 06:37:26 +02:00
|
|
|
* This program is distributed in the hope that it will be useful,
|
2018-07-08 07:59:58 +02:00
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2019-10-02 06:37:26 +02:00
|
|
|
* GNU Affero General Public License for more details.
|
2018-07-08 07:59:58 +02:00
|
|
|
*
|
2019-10-02 06:37:26 +02:00
|
|
|
* 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/>.
|
2018-07-08 07:59:58 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace FireflyIII\Helpers\Update;
|
|
|
|
|
|
|
|
use Carbon\Carbon;
|
|
|
|
use FireflyIII\Exceptions\FireflyException;
|
2019-10-26 14:42:51 +02:00
|
|
|
use FireflyIII\Services\FireflyIIIOrg\Update\UpdateRequestInterface;
|
2018-07-08 07:59:58 +02:00
|
|
|
use Log;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Trait UpdateTrait
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
trait UpdateTrait
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Get object for the latest release from GitHub.
|
|
|
|
*
|
2019-10-26 14:42:51 +02:00
|
|
|
* @return array
|
|
|
|
* @throws FireflyException
|
2018-07-08 07:59:58 +02:00
|
|
|
*/
|
2019-10-26 14:42:51 +02:00
|
|
|
public function getLatestRelease(): array
|
2018-07-08 07:59:58 +02:00
|
|
|
{
|
2018-08-17 21:51:15 +02:00
|
|
|
Log::debug('Now in getLatestRelease()');
|
2019-10-26 14:42:51 +02:00
|
|
|
/** @var UpdateRequestInterface $checker */
|
|
|
|
$checker = app(UpdateRequestInterface::class);
|
|
|
|
$channel = app('fireflyconfig')->get('update_channel', 'stable')->data;
|
2019-02-10 07:59:11 +01:00
|
|
|
|
2019-10-26 14:42:51 +02:00
|
|
|
return $checker->getVersion($channel);
|
2018-07-08 07:59:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Parses the version check result in a human readable sentence.
|
|
|
|
*
|
2019-10-30 20:02:38 +01:00
|
|
|
* @param int $versionCheck
|
|
|
|
* @param array $information
|
2018-07-08 07:59:58 +02:00
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
2019-10-26 14:42:51 +02:00
|
|
|
public function parseResult(int $versionCheck, array $information): string
|
2018-07-08 07:59:58 +02:00
|
|
|
{
|
2018-08-17 21:51:15 +02:00
|
|
|
Log::debug(sprintf('Now in parseResult(%d)', $versionCheck));
|
2019-02-10 07:59:11 +01:00
|
|
|
$current = (string)config('firefly.version');
|
|
|
|
$return = '';
|
|
|
|
$triggered = false;
|
2019-10-26 14:42:51 +02:00
|
|
|
if (-1 === $versionCheck) {
|
|
|
|
$triggered = true;
|
|
|
|
$monthAndDayFormat = (string)trans('config.month_and_day');
|
|
|
|
$carbon = Carbon::createFromFormat('Y-m-d', $information['date']);
|
|
|
|
$return = (string)trans(
|
|
|
|
'firefly.update_new_version_alert',
|
|
|
|
[
|
|
|
|
'your_version' => $current,
|
|
|
|
'new_version' => $information['version'],
|
|
|
|
'date' => $carbon->formatLocalized($monthAndDayFormat),
|
|
|
|
]
|
|
|
|
);
|
2019-10-30 20:02:38 +01:00
|
|
|
// append warning if beta or alpha.
|
|
|
|
$isBeta = $information['is_beta'] ?? false;
|
|
|
|
if (true === $isBeta) {
|
|
|
|
$return = sprintf('%s %s', $return, trans('firefly.update_version_beta'));
|
|
|
|
}
|
|
|
|
|
|
|
|
$isAlpha = $information['is_alpha'] ?? false;
|
|
|
|
if (true === $isAlpha) {
|
|
|
|
$return = sprintf('%s %s', $return, trans('firefly.update_version_alpha'));
|
|
|
|
}
|
2018-07-08 07:59:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if (0 === $versionCheck) {
|
2019-02-10 07:59:11 +01:00
|
|
|
$triggered = true;
|
2018-08-17 21:51:15 +02:00
|
|
|
Log::debug('User is running current version.');
|
2018-07-08 07:59:58 +02:00
|
|
|
// you are running the current version!
|
|
|
|
$return = (string)trans('firefly.update_current_version_alert', ['version' => $current]);
|
|
|
|
}
|
2019-10-26 14:42:51 +02:00
|
|
|
if (1 === $versionCheck) {
|
2019-02-10 07:59:11 +01:00
|
|
|
$triggered = true;
|
2018-08-17 21:51:15 +02:00
|
|
|
Log::debug('User is running NEWER version.');
|
2018-07-08 07:59:58 +02:00
|
|
|
// you are running a newer version!
|
2019-10-26 14:42:51 +02:00
|
|
|
$return = (string)trans('firefly.update_newer_version_alert', ['your_version' => $current, 'new_version' => $information['version']]);
|
2018-07-08 07:59:58 +02:00
|
|
|
}
|
2019-02-10 07:59:11 +01:00
|
|
|
if (false === $triggered) {
|
|
|
|
Log::debug('No option was triggered.');
|
|
|
|
$return = (string)trans('firefly.update_check_error');
|
|
|
|
}
|
|
|
|
|
2018-07-08 07:59:58 +02:00
|
|
|
return $return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Compare version and store result.
|
|
|
|
*
|
2019-10-26 14:42:51 +02:00
|
|
|
* @param array $information
|
2018-07-08 07:59:58 +02:00
|
|
|
*
|
|
|
|
* @return int
|
|
|
|
*/
|
2019-10-26 14:42:51 +02:00
|
|
|
public function versionCheck(array $information): int
|
2018-07-08 07:59:58 +02:00
|
|
|
{
|
2018-08-17 21:51:15 +02:00
|
|
|
Log::debug('Now in versionCheck()');
|
2018-07-08 07:59:58 +02:00
|
|
|
$current = (string)config('firefly.version');
|
2019-10-26 14:42:51 +02:00
|
|
|
$check = version_compare($current, $information['version']);
|
|
|
|
Log::debug(sprintf('Comparing %s with %s, result is %s', $current, $information['version'], $check), $information);
|
2018-07-08 07:59:58 +02:00
|
|
|
|
|
|
|
return $check;
|
|
|
|
}
|
2018-07-22 20:32:02 +02:00
|
|
|
}
|