2019-05-04 13:42:26 +02:00
< ? php
2020-02-09 15:45:36 +01:00
/**
2021-03-29 08:40:20 +02:00
* @ copyright Copyright ( C ) 2010 - 2021 , the Friendica project
2020-02-09 15:45:36 +01: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 13:42:26 +02:00
namespace Friendica\Module ;
use Friendica\BaseModule ;
2021-03-09 16:36:10 +01:00
use Friendica\Core\Renderer ;
2019-05-04 13:42:26 +02:00
use Friendica\Core\System ;
2019-12-15 22:34:11 +01:00
use Friendica\DI ;
2019-05-04 16:22:47 +02:00
use Friendica\Network\HTTPException ;
2019-05-04 13:42:26 +02:00
use Friendica\Util\Strings ;
/**
* Shows the maintenance reason
* or redirects to the alternate location
*/
class Maintenance extends BaseModule
{
2021-11-14 23:13:47 +01:00
public function content () : string
2019-05-04 13:42:26 +02:00
{
2019-12-15 23:44:33 +01:00
$reason = DI :: config () -> get ( 'system' , 'maintenance_reason' );
2019-05-04 13:42:26 +02:00
if (( substr ( Strings :: normaliseLink ( $reason ), 0 , 7 ) === 'http://' ) ||
( substr ( Strings :: normaliseLink ( $reason ), 0 , 8 ) === 'https://' )) {
System :: externalRedirect ( $reason , 307 );
}
2019-05-04 16:22:47 +02:00
$exception = new HTTPException\ServiceUnavailableException ( $reason );
2021-03-09 16:36:10 +01:00
header ( $_SERVER [ " SERVER_PROTOCOL " ] . ' ' . $exception -> getCode () . ' ' . DI :: l10n () -> t ( 'System down for maintenance' ));
$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 18:20:02 +01:00
'$thrown' => $reason ,
2021-03-09 16:36:10 +01:00
'$stack_trace' => '' ,
'$trace' => '' ,
]);
2019-05-04 13:42:26 +02:00
}
}