2021-10-02 11:44:47 -04:00
< ? php
/**
2022-01-02 02:27:47 -05:00
* @ copyright Copyright ( C ) 2010 - 2022 , the Friendica project
2021-10-02 11:44:47 -04:00
*
2022-01-06 18:13:00 -05:00
* @ license GNU AGPL version 3 or any later version
2021-10-02 11:44:47 -04: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 .
*
* 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\Module\Contact ;
2021-11-20 09:38:03 -05:00
use Friendica\App ;
2021-10-02 11:44:47 -04:00
use Friendica\BaseModule ;
use Friendica\Content\Nav ;
2021-11-19 14:18:48 -05:00
use Friendica\Core\L10n ;
2021-10-02 11:44:47 -04:00
use Friendica\Core\Protocol ;
use Friendica\Core\Renderer ;
2022-10-19 00:35:37 -04:00
use Friendica\Core\Session ;
2021-11-19 14:18:48 -05:00
use Friendica\Database\Database ;
2022-10-17 14:55:22 -04:00
use Friendica\DI ;
2021-10-02 11:44:47 -04:00
use Friendica\Model ;
use Friendica\Module\Contact ;
2021-11-21 14:06:36 -05:00
use Friendica\Module\Response ;
2021-10-02 11:44:47 -04:00
use Friendica\Module\Security\Login ;
use Friendica\Network\HTTPException ;
2021-11-20 09:38:03 -05:00
use Friendica\Util\Profiler ;
use Psr\Log\LoggerInterface ;
2021-10-02 11:44:47 -04:00
class Revoke extends BaseModule
{
2021-10-16 21:09:49 -04:00
/**
* User - specific contact ( uid != 0 ) array
* @ var array
*/
2021-11-19 14:18:48 -05:00
protected $contact ;
/** @var Database */
protected $dba ;
2021-11-20 09:38:03 -05:00
2021-11-21 14:06:36 -05:00
public function __construct ( L10n $l10n , App\BaseURL $baseUrl , App\Arguments $args , LoggerInterface $logger , Profiler $profiler , Database $dba , Response $response , array $server , array $parameters = [])
2021-11-19 07:23:23 -05:00
{
2021-11-21 14:06:36 -05:00
parent :: __construct ( $l10n , $baseUrl , $args , $logger , $profiler , $response , $server , $parameters );
2021-11-19 14:18:48 -05:00
$this -> dba = $dba ;
2022-10-19 00:35:37 -04:00
if ( ! Session :: getLocalUser ()) {
2021-10-02 11:44:47 -04:00
return ;
}
2022-10-19 00:35:37 -04:00
$data = Model\Contact :: getPublicAndUserContactID ( $this -> parameters [ 'id' ], Session :: getLocalUser ());
2021-11-19 14:18:48 -05:00
if ( ! $this -> dba -> isResult ( $data )) {
throw new HTTPException\NotFoundException ( $this -> t ( 'Unknown contact.' ));
2021-10-02 11:44:47 -04:00
}
if ( empty ( $data [ 'user' ])) {
throw new HTTPException\ForbiddenException ();
}
2021-11-19 14:18:48 -05:00
$this -> contact = Model\Contact :: getById ( $data [ 'user' ]);
2021-10-02 11:44:47 -04:00
2021-11-19 14:18:48 -05:00
if ( $this -> contact [ 'deleted' ]) {
throw new HTTPException\NotFoundException ( $this -> t ( 'Contact is deleted.' ));
2021-10-02 11:44:47 -04:00
}
2021-11-19 14:18:48 -05:00
if ( ! empty ( $this -> contact [ 'network' ]) && $this -> contact [ 'network' ] == Protocol :: PHANTOM ) {
throw new HTTPException\NotFoundException ( $this -> t ( 'Contact is being deleted.' ));
2021-10-02 11:44:47 -04:00
}
}
2021-11-28 07:44:42 -05:00
protected function post ( array $request = [])
2021-10-02 11:44:47 -04:00
{
2022-10-19 00:35:37 -04:00
if ( ! Session :: getLocalUser ()) {
2021-10-02 11:44:47 -04:00
throw new HTTPException\UnauthorizedException ();
}
2021-11-14 17:19:25 -05:00
self :: checkFormSecurityTokenRedirectOnError ( 'contact/' . $this -> parameters [ 'id' ], 'contact_revoke' );
2021-10-02 11:44:47 -04:00
2021-10-16 21:09:49 -04:00
Model\Contact :: revokeFollow ( $this -> contact );
2022-10-17 14:55:22 -04:00
DI :: sysmsg () -> addNotice ( $this -> t ( 'Follow was successfully revoked.' ));
2021-10-02 11:44:47 -04:00
2021-11-19 14:18:48 -05:00
$this -> baseUrl -> redirect ( 'contact/' . $this -> parameters [ 'id' ]);
2021-10-02 11:44:47 -04:00
}
2021-11-20 09:38:03 -05:00
protected function content ( array $request = []) : string
2021-10-02 11:44:47 -04:00
{
2022-10-19 00:35:37 -04:00
if ( ! Session :: getLocalUser ()) {
2021-10-02 11:44:47 -04:00
return Login :: form ( $_SERVER [ 'REQUEST_URI' ]);
}
Nav :: setSelected ( 'contact' );
return Renderer :: replaceMacros ( Renderer :: getMarkupTemplate ( 'contact_drop_confirm.tpl' ), [
'$l10n' => [
2021-11-19 14:18:48 -05:00
'header' => $this -> t ( 'Revoke Follow' ),
'message' => $this -> t ( 'Do you really want to revoke this contact\'s follow? This cannot be undone and they will have to manually follow you back again.' ),
'confirm' => $this -> t ( 'Yes' ),
'cancel' => $this -> t ( 'Cancel' ),
2021-10-02 11:44:47 -04:00
],
2021-11-19 14:18:48 -05:00
'$contact' => Contact :: getContactTemplateVars ( $this -> contact ),
2021-10-02 11:44:47 -04:00
'$method' => 'post' ,
2021-11-19 14:18:48 -05:00
'$confirm_url' => $this -> args -> getCommand (),
2021-10-02 11:44:47 -04:00
'$confirm_name' => 'form_security_token' ,
'$confirm_value' => BaseModule :: getFormSecurityToken ( 'contact_revoke' ),
]);
}
}