2011-04-13 23:14:30 -04:00
< ? php
2017-11-29 12:17:12 -05:00
/**
* @ file mod / crepair . php
*/
2018-07-19 22:15:21 -04:00
2017-04-30 00:07:00 -04:00
use Friendica\App ;
2017-11-06 21:22:52 -05:00
use Friendica\Core\Config ;
2018-01-21 13:33:59 -05:00
use Friendica\Core\L10n ;
2018-10-29 17:20:46 -04:00
use Friendica\Core\Logger ;
2018-08-11 16:40:44 -04:00
use Friendica\Core\Protocol ;
2018-10-31 10:35:50 -04:00
use Friendica\Core\Renderer ;
2018-07-20 08:19:26 -04:00
use Friendica\Database\DBA ;
2018-10-13 05:23:52 -04:00
use Friendica\Model ;
2018-10-14 14:03:22 -04:00
use Friendica\Module ;
2018-11-08 11:28:29 -05:00
use Friendica\Util\Strings ;
2011-04-13 23:14:30 -04:00
2018-01-01 16:27:01 -05:00
function crepair_init ( App $a )
{
if ( ! local_user ()) {
2011-11-09 22:30:14 -05:00
return ;
2016-12-20 05:56:34 -05:00
}
2011-11-09 22:30:14 -05:00
2018-01-12 23:41:18 -05:00
$contact = null ;
2018-01-01 16:27:01 -05:00
if (( $a -> argc == 2 ) && intval ( $a -> argv [ 1 ])) {
2018-07-20 08:19:26 -04:00
$contact = DBA :: selectFirst ( 'contact' , [], [ 'uid' => local_user (), 'id' => $a -> argv [ 1 ]]);
2011-11-09 22:30:14 -05:00
}
2018-11-30 09:06:22 -05:00
if ( empty ( $a -> page [ 'aside' ])) {
2011-11-09 22:30:14 -05:00
$a -> page [ 'aside' ] = '' ;
2018-01-01 16:27:01 -05:00
}
2011-11-09 22:30:14 -05:00
2018-07-21 08:46:04 -04:00
if ( DBA :: isResult ( $contact )) {
2018-01-12 23:41:18 -05:00
$a -> data [ 'contact' ] = $contact ;
2018-10-14 15:14:32 -04:00
Model\Profile :: load ( $a , " " , 0 , Model\Contact :: getDetailsByURL ( $contact [ " url " ]));
2014-01-05 10:10:02 -05:00
}
2011-11-09 22:30:14 -05:00
}
2018-01-01 16:27:01 -05:00
function crepair_post ( App $a )
{
if ( ! local_user ()) {
2011-04-13 23:14:30 -04:00
return ;
2016-12-20 05:56:34 -05:00
}
2011-04-13 23:14:30 -04:00
$cid = (( $a -> argc > 1 ) ? intval ( $a -> argv [ 1 ]) : 0 );
2018-01-12 23:41:18 -05:00
$contact = null ;
2018-01-01 16:27:01 -05:00
if ( $cid ) {
2018-07-20 08:19:26 -04:00
$contact = DBA :: selectFirst ( 'contact' , [], [ 'id' => $cid , 'uid' => local_user ()]);
2011-04-13 23:14:30 -04:00
}
2018-07-21 08:46:04 -04:00
if ( ! DBA :: isResult ( $contact )) {
2011-04-13 23:14:30 -04:00
return ;
2016-12-20 04:10:33 -05:00
}
2011-04-13 23:14:30 -04:00
2018-01-01 16:27:01 -05:00
$name = defaults ( $_POST , 'name' , $contact [ 'name' ]);
$nick = defaults ( $_POST , 'nick' , '' );
$url = defaults ( $_POST , 'url' , '' );
$request = defaults ( $_POST , 'request' , '' );
$confirm = defaults ( $_POST , 'confirm' , '' );
$notify = defaults ( $_POST , 'notify' , '' );
$poll = defaults ( $_POST , 'poll' , '' );
$attag = defaults ( $_POST , 'attag' , '' );
$photo = defaults ( $_POST , 'photo' , '' );
$remote_self = defaults ( $_POST , 'remote_self' , false );
2018-11-08 11:28:29 -05:00
$nurl = Strings :: normaliseLink ( $url );
2011-04-13 23:14:30 -04:00
2014-09-11 17:37:55 -04:00
$r = q ( " UPDATE `contact` SET `name` = '%s', `nick` = '%s', `url` = '%s', `nurl` = '%s', `request` = '%s', `confirm` = '%s', `notify` = '%s', `poll` = '%s', `attag` = '%s' , `remote_self` = %d
2014-03-11 18:52:32 -04:00
WHERE `id` = % d AND `uid` = % d " ,
2018-07-21 09:10:13 -04:00
DBA :: escape ( $name ),
DBA :: escape ( $nick ),
DBA :: escape ( $url ),
DBA :: escape ( $nurl ),
DBA :: escape ( $request ),
DBA :: escape ( $confirm ),
DBA :: escape ( $notify ),
DBA :: escape ( $poll ),
DBA :: escape ( $attag ),
2014-01-05 10:10:02 -05:00
intval ( $remote_self ),
2011-04-13 23:14:30 -04:00
intval ( $contact [ 'id' ]),
local_user ()
);
2017-11-29 12:17:12 -05:00
if ( $photo ) {
2018-10-29 17:20:46 -04:00
Logger :: log ( 'mod-crepair: updating photo from ' . $photo );
2011-10-05 23:01:42 -04:00
2018-10-13 05:23:52 -04:00
Model\Contact :: updateAvatar ( $photo , local_user (), $contact [ 'id' ]);
2011-10-05 23:01:42 -04:00
}
2017-11-29 12:17:12 -05:00
if ( $r ) {
2018-01-21 13:33:59 -05:00
info ( L10n :: t ( 'Contact settings applied.' ) . EOL );
2017-11-29 12:17:12 -05:00
} else {
2018-01-21 13:33:59 -05:00
notice ( L10n :: t ( 'Contact update failed.' ) . EOL );
2017-11-29 12:17:12 -05:00
}
2011-10-05 23:01:42 -04:00
2011-04-13 23:14:30 -04:00
return ;
}
2018-01-01 16:27:01 -05:00
function crepair_content ( App $a )
{
if ( ! local_user ()) {
2018-01-21 13:33:59 -05:00
notice ( L10n :: t ( 'Permission denied.' ) . EOL );
2011-04-13 23:14:30 -04:00
return ;
}
$cid = (( $a -> argc > 1 ) ? intval ( $a -> argv [ 1 ]) : 0 );
2018-08-25 09:48:00 -04:00
$contact = null ;
2018-01-01 16:27:01 -05:00
if ( $cid ) {
2018-07-20 08:19:26 -04:00
$contact = DBA :: selectFirst ( 'contact' , [], [ 'id' => $cid , 'uid' => local_user ()]);
2011-04-13 23:14:30 -04:00
}
2018-07-21 08:46:04 -04:00
if ( ! DBA :: isResult ( $contact )) {
2018-01-21 13:33:59 -05:00
notice ( L10n :: t ( 'Contact not found.' ) . EOL );
2011-04-13 23:14:30 -04:00
return ;
}
2018-01-21 13:33:59 -05:00
$warning = L10n :: t ( '<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working.' );
$info = L10n :: t ( 'Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.' );
2011-04-13 23:14:30 -04:00
2018-10-18 07:48:34 -04:00
$returnaddr = " contact/ $cid " ;
2012-01-12 21:54:35 -05:00
2018-01-01 16:27:01 -05:00
$allow_remote_self = Config :: get ( 'system' , 'allow_users_remote_self' );
2014-09-06 11:22:59 -04:00
// Disable remote self for everything except feeds.
// There is an issue when you repeat an item from maybe twitter and you got comments from friendica and twitter
// Problem is, you couldn't reply to both networks.
2018-08-11 16:40:44 -04:00
if ( ! in_array ( $contact [ 'network' ], [ Protocol :: FEED , Protocol :: DFRN , Protocol :: DIASPORA , Protocol :: TWITTER ])) {
2014-09-06 11:22:59 -04:00
$allow_remote_self = false ;
2018-01-01 16:27:01 -05:00
}
2014-09-06 11:22:59 -04:00
2018-08-11 16:40:44 -04:00
if ( $contact [ 'network' ] == Protocol :: FEED ) {
2018-01-21 13:33:59 -05:00
$remote_self_options = [ '0' => L10n :: t ( 'No mirroring' ), '1' => L10n :: t ( 'Mirror as forwarded posting' ), '2' => L10n :: t ( 'Mirror as my own posting' )];
2018-01-01 16:27:01 -05:00
} else {
2018-01-21 13:33:59 -05:00
$remote_self_options = [ '0' => L10n :: t ( 'No mirroring' ), '2' => L10n :: t ( 'Mirror as my own posting' )];
2018-01-01 16:27:01 -05:00
}
2014-10-22 02:30:16 -04:00
2018-10-13 16:36:44 -04:00
$update_profile = in_array ( $contact [ 'network' ], [ Protocol :: ACTIVITYPUB , Protocol :: DFRN , Protocol :: DIASPORA , Protocol :: OSTATUS ]);
2015-04-11 17:51:47 -04:00
2018-10-14 14:03:22 -04:00
$tab_str = Module\Contact :: getTabsHTML ( $a , $contact , 5 );
2015-11-29 17:22:05 -05:00
2018-10-31 10:44:06 -04:00
$tpl = Renderer :: getMarkupTemplate ( 'crepair.tpl' );
2018-10-31 10:35:50 -04:00
$o = Renderer :: replaceMacros ( $tpl , [
2018-01-01 16:27:01 -05:00
'$tab_str' => $tab_str ,
'$warning' => $warning ,
'$info' => $info ,
'$returnaddr' => $returnaddr ,
2018-01-21 13:33:59 -05:00
'$return' => L10n :: t ( 'Return to contact editor' ),
2018-01-01 16:27:01 -05:00
'$update_profile' => $update_profile ,
2018-01-21 13:33:59 -05:00
'$udprofilenow' => L10n :: t ( 'Refetch contact data' ),
2018-01-01 16:27:01 -05:00
'$contact_id' => $contact [ 'id' ],
2018-01-21 13:33:59 -05:00
'$lbl_submit' => L10n :: t ( 'Submit' ),
'$label_remote_self' => L10n :: t ( 'Remote Self' ),
2014-09-06 11:22:59 -04:00
'$allow_remote_self' => $allow_remote_self ,
2018-01-15 08:05:12 -05:00
'$remote_self' => [ 'remote_self' ,
2018-01-21 13:33:59 -05:00
L10n :: t ( 'Mirror postings from this contact' ),
2018-01-01 16:27:01 -05:00
$contact [ 'remote_self' ],
2018-01-21 13:33:59 -05:00
L10n :: t ( 'Mark this contact as remote_self, this will cause friendica to repost new entries from this contact.' ),
2018-01-01 16:27:01 -05:00
$remote_self_options
2018-01-15 08:05:12 -05:00
],
2018-12-25 11:37:32 -05:00
'$name' => [ 'name' , L10n :: t ( 'Name' ) , $contact [ 'name' ]],
'$nick' => [ 'nick' , L10n :: t ( 'Account Nickname' ), $contact [ 'nick' ]],
2018-01-21 13:33:59 -05:00
'$attag' => [ 'attag' , L10n :: t ( '@Tagname - overrides Name/Nickname' ), $contact [ 'attag' ]],
'$url' => [ 'url' , L10n :: t ( 'Account URL' ), $contact [ 'url' ]],
'$request' => [ 'request' , L10n :: t ( 'Friend Request URL' ), $contact [ 'request' ]],
'confirm' => [ 'confirm' , L10n :: t ( 'Friend Confirm URL' ), $contact [ 'confirm' ]],
'notify' => [ 'notify' , L10n :: t ( 'Notification Endpoint URL' ), $contact [ 'notify' ]],
'poll' => [ 'poll' , L10n :: t ( 'Poll/Feed URL' ), $contact [ 'poll' ]],
'photo' => [ 'photo' , L10n :: t ( 'New photo from this URL' ), '' ],
2018-01-15 08:05:12 -05:00
]);
2011-04-13 23:14:30 -04:00
return $o ;
2011-05-23 05:39:57 -04:00
}