2020-01-31 18:20:50 -05:00
< ? php
2020-02-09 09:45:36 -05:00
/**
* @ 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 />.
*
*/
2020-01-31 18:20:50 -05:00
namespace Friendica\Module\Contact ;
use Friendica\BaseModule ;
use Friendica\Core\Protocol ;
use Friendica\Core\Renderer ;
use Friendica\Core\Session ;
use Friendica\DI ;
use Friendica\Model ;
use Friendica\Module\Contact ;
use Friendica\Network\HTTPException\BadRequestException ;
use Friendica\Network\HTTPException\ForbiddenException ;
use Friendica\Util\Strings ;
/**
2020-01-31 18:37:11 -05:00
* GUI for advanced contact details manipulation
2020-01-31 18:20:50 -05:00
*/
2020-01-31 18:37:11 -05:00
class Advanced extends BaseModule
2020-01-31 18:20:50 -05:00
{
public static function init ( array $parameters = [])
{
if ( ! Session :: isAuthenticated ()) {
throw new ForbiddenException ( DI :: l10n () -> t ( 'Permission denied.' ));
}
}
public static function post ( array $parameters = [])
{
2020-01-31 18:37:11 -05:00
$cid = $parameters [ 'id' ];
2020-01-31 18:20:50 -05:00
$contact = Model\Contact :: selectFirst ([], [ 'id' => $cid , 'uid' => local_user ()]);
if ( empty ( $contact )) {
throw new BadRequestException ( DI :: l10n () -> t ( 'Contact not found.' ));
}
$name = ( $_POST [ 'name' ] ? ? '' ) ? : $contact [ 'name' ];
$nick = $_POST [ 'nick' ] ? ? '' ;
$url = $_POST [ 'url' ] ? ? '' ;
$alias = $_POST [ 'alias' ] ? ? '' ;
$request = $_POST [ 'request' ] ? ? '' ;
$confirm = $_POST [ 'confirm' ] ? ? '' ;
$notify = $_POST [ 'notify' ] ? ? '' ;
$poll = $_POST [ 'poll' ] ? ? '' ;
$attag = $_POST [ 'attag' ] ? ? '' ;
$photo = $_POST [ 'photo' ] ? ? '' ;
$nurl = Strings :: normaliseLink ( $url );
$r = DI :: dba () -> update (
'contact' ,
[
'name' => $name ,
'nick' => $nick ,
'url' => $url ,
'nurl' => $nurl ,
'alias' => $alias ,
'request' => $request ,
'confirm' => $confirm ,
'notify' => $notify ,
'poll' => $poll ,
'attag' => $attag ,
],
[ 'id' => $contact [ 'id' ], 'uid' => local_user ()]
);
if ( $photo ) {
DI :: logger () -> notice ( 'Updating photo.' , [ 'photo' => $photo ]);
2020-07-25 07:48:52 -04:00
Model\Contact :: updateAvatar ( $contact [ 'id' ], $photo , true );
2020-01-31 18:20:50 -05:00
}
2020-07-23 02:11:21 -04:00
if ( ! $r ) {
2020-07-23 02:25:01 -04:00
notice ( DI :: l10n () -> t ( 'Contact update failed.' ));
2020-01-31 18:20:50 -05:00
}
return ;
}
public static function content ( array $parameters = [])
{
2020-01-31 18:37:11 -05:00
$cid = $parameters [ 'id' ];
2020-01-31 18:20:50 -05:00
$contact = Model\Contact :: selectFirst ([], [ 'id' => $cid , 'uid' => local_user ()]);
if ( empty ( $contact )) {
throw new BadRequestException ( DI :: l10n () -> t ( 'Contact not found.' ));
}
2020-07-15 13:06:48 -04:00
Model\Profile :: load ( DI :: app (), " " , Model\Contact :: getByURL ( $contact [ " url " ], false ));
2020-01-31 18:20:50 -05:00
$warning = DI :: l10n () -> t ( '<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working.' );
$info = DI :: l10n () -> t ( 'Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.' );
$returnaddr = " contact/ $cid " ;
2020-10-10 06:06:34 -04:00
// This data is fetched automatically for most networks.
// Editing does only makes sense for mail and feed contacts.
if ( ! in_array ( $contact [ 'network' ], [ Protocol :: FEED , Protocol :: MAIL ])) {
$readonly = 'readonly' ;
} else {
$readonly = '' ;
}
2020-08-06 22:49:21 -04:00
$tab_str = Contact :: getTabsHTML ( $contact , Contact :: TAB_ADVANCED );
2020-01-31 18:20:50 -05:00
2020-01-31 18:37:11 -05:00
$tpl = Renderer :: getMarkupTemplate ( 'contact/advanced.tpl' );
2020-01-31 18:20:50 -05:00
return Renderer :: replaceMacros ( $tpl , [
'$tab_str' => $tab_str ,
'$warning' => $warning ,
'$info' => $info ,
'$returnaddr' => $returnaddr ,
'$return' => DI :: l10n () -> t ( 'Return to contact editor' ),
'$contact_id' => $contact [ 'id' ],
'$lbl_submit' => DI :: l10n () -> t ( 'Submit' ),
2020-10-10 06:06:34 -04:00
'$name' => [ 'name' , DI :: l10n () -> t ( 'Name' ), $contact [ 'name' ], '' , '' , $readonly ],
'$nick' => [ 'nick' , DI :: l10n () -> t ( 'Account Nickname' ), $contact [ 'nick' ], '' , '' , $readonly ],
2020-01-31 18:20:50 -05:00
'$attag' => [ 'attag' , DI :: l10n () -> t ( '@Tagname - overrides Name/Nickname' ), $contact [ 'attag' ]],
2020-10-10 06:06:34 -04:00
'$url' => [ 'url' , DI :: l10n () -> t ( 'Account URL' ), $contact [ 'url' ], '' , '' , $readonly ],
'$alias' => [ 'alias' , DI :: l10n () -> t ( 'Account URL Alias' ), $contact [ 'alias' ], '' , '' , $readonly ],
'$request' => [ 'request' , DI :: l10n () -> t ( 'Friend Request URL' ), $contact [ 'request' ], '' , '' , $readonly ],
'confirm' => [ 'confirm' , DI :: l10n () -> t ( 'Friend Confirm URL' ), $contact [ 'confirm' ], '' , '' , $readonly ],
'notify' => [ 'notify' , DI :: l10n () -> t ( 'Notification Endpoint URL' ), $contact [ 'notify' ], '' , '' , $readonly ],
'poll' => [ 'poll' , DI :: l10n () -> t ( 'Poll/Feed URL' ), $contact [ 'poll' ], '' , '' , $readonly ],
'photo' => [ 'photo' , DI :: l10n () -> t ( 'New photo from this URL' ), '' , '' , '' , $readonly ],
2020-01-31 18:20:50 -05:00
]);
}
}