2019-05-04 07:42:26 -04:00
< ? php
2020-02-09 09:45:36 -05:00
/**
2023-01-01 09:36:24 -05:00
* @ copyright Copyright ( C ) 2010 - 2023 , the Friendica project
2020-02-09 09:45:36 -05:00
*
* @ 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 />.
*
*/
2019-05-04 07:42:26 -04:00
namespace Friendica\Module ;
use Friendica\BaseModule ;
2021-03-09 10:36:10 -05:00
use Friendica\Core\Renderer ;
2019-05-04 07:42:26 -04:00
use Friendica\Core\System ;
2019-12-15 16:34:11 -05:00
use Friendica\DI ;
2019-05-04 10:22:47 -04:00
use Friendica\Network\HTTPException ;
2019-05-04 07:42:26 -04:00
use Friendica\Util\Strings ;
/**
* Shows the maintenance reason
* or redirects to the alternate location
*/
class Maintenance extends BaseModule
{
2021-11-20 09:38:03 -05:00
protected function content ( array $request = []) : string
2019-05-04 07:42:26 -04:00
{
2023-01-18 21:01:07 -05:00
$reason = DI :: config () -> get ( 'system' , 'maintenance_reason' ) ? ? '' ;
2019-05-04 07:42:26 -04:00
if (( substr ( Strings :: normaliseLink ( $reason ), 0 , 7 ) === 'http://' ) ||
( substr ( Strings :: normaliseLink ( $reason ), 0 , 8 ) === 'https://' )) {
System :: externalRedirect ( $reason , 307 );
}
2019-05-04 10:22:47 -04:00
$exception = new HTTPException\ServiceUnavailableException ( $reason );
2021-03-09 10:36:10 -05:00
2022-06-23 05:39:45 -04:00
header ( $_SERVER [ 'SERVER_PROTOCOL' ] . ' ' . $exception -> getCode () . ' ' . DI :: l10n () -> t ( 'System down for maintenance' ));
2021-03-09 10:36:10 -05:00
$tpl = Renderer :: getMarkupTemplate ( 'exception.tpl' );
return Renderer :: replaceMacros ( $tpl , [
'$title' => DI :: l10n () -> t ( 'System down for maintenance' ),
'$message' => DI :: l10n () -> t ( 'This Friendica node is currently in maintenance mode, either automatically because it is self-updating or manually by the node administrator. This condition should be temporary, please come back in a few minutes.' ),
2021-03-10 12:20:02 -05:00
'$thrown' => $reason ,
2021-03-09 10:36:10 -05:00
'$stack_trace' => '' ,
'$trace' => '' ,
]);
2019-05-04 07:42:26 -04:00
}
}