2020-01-22 17:18:14 -05:00
< ? php
namespace Friendica\Module\Notifications ;
use Friendica\Content\ContactSelector ;
use Friendica\Content\Nav ;
use Friendica\Core\Protocol ;
use Friendica\Core\Renderer ;
use Friendica\Database\DBA ;
use Friendica\DI ;
use Friendica\Module\BaseNotifications ;
2020-01-24 20:01:49 -05:00
use Friendica\Object\Notification\Introduction ;
2020-01-22 17:18:14 -05:00
2020-01-22 17:31:00 -05:00
/**
* Prints notifications about introduction
*/
2020-01-22 17:18:14 -05:00
class Introductions extends BaseNotifications
{
/**
* @ inheritDoc
*/
2020-01-24 12:32:38 -05:00
public static function getNotifications ()
2020-01-22 17:18:14 -05:00
{
$id = ( int ) DI :: args () -> get ( 2 , 0 );
$all = DI :: args () -> get ( 2 ) == 'all' ;
2020-01-24 20:01:49 -05:00
$notifications = [
2020-01-25 14:00:58 -05:00
'ident' => 'introductions' ,
2020-01-26 14:30:24 -05:00
'notifications' => DI :: notificationIntro () -> getList ( $all , self :: $firstItemNum , self :: ITEMS_PER_PAGE , $id ),
2020-01-24 20:01:49 -05:00
];
2020-01-22 17:18:14 -05:00
return [
2020-01-24 12:32:38 -05:00
'header' => DI :: l10n () -> t ( 'Notifications' ),
'notifications' => $notifications ,
2020-01-22 17:18:14 -05:00
];
}
public static function content ( array $parameters = [])
{
Nav :: setSelected ( 'introductions' );
$all = DI :: args () -> get ( 2 ) == 'all' ;
2020-01-24 12:32:38 -05:00
$notificationContent = [];
$notificationNoContent = '' ;
2020-01-22 17:18:14 -05:00
2020-01-24 12:32:38 -05:00
$notificationResult = self :: getNotifications ();
$notifications = $notificationResult [ 'notifications' ] ? ? [];
$notificationHeader = $notificationResult [ 'header' ] ? ? '' ;
2020-01-22 17:18:14 -05:00
2020-01-24 12:32:38 -05:00
$notificationSuggestions = Renderer :: getMarkupTemplate ( 'notifications/suggestions.tpl' );
$notificationTemplate = Renderer :: getMarkupTemplate ( 'notifications/intros.tpl' );
2020-01-22 17:18:14 -05:00
// The link to switch between ignored and normal connection requests
2020-01-24 12:32:38 -05:00
$notificationShowLink = [
2020-01-22 17:18:14 -05:00
'href' => ( ! $all ? 'notifications/intros/all' : 'notifications/intros' ),
2020-01-24 20:01:49 -05:00
'text' => ( ! $all ? DI :: l10n () -> t ( 'Show Ignored Requests' ) : DI :: l10n () -> t ( 'Hide Ignored Requests' )),
2020-01-22 17:18:14 -05:00
];
// Loop through all introduction notifications.This creates an array with the output html for each
// introduction
2020-01-24 20:01:49 -05:00
/** @var Introduction $notification */
2020-01-24 12:32:38 -05:00
foreach ( $notifications [ 'notifications' ] as $notification ) {
2020-01-22 17:18:14 -05:00
// There are two kind of introduction. Contacts suggested by other contacts and normal connection requests.
// We have to distinguish between these two because they use different data.
2020-01-25 14:00:58 -05:00
switch ( $notification -> getLabel ()) {
2020-01-22 17:18:14 -05:00
case 'friend_suggestion' :
2020-01-24 12:32:38 -05:00
$notificationContent [] = Renderer :: replaceMacros ( $notificationSuggestions , [
2020-01-25 14:00:58 -05:00
'$type' => $notification -> getLabel (),
'$str_notification_type' => DI :: l10n () -> t ( 'Notification type:' ),
'$str_type' => $notification -> getType (),
'$intro_id' => $notification -> getIntroId (),
'$lbl_madeby' => DI :: l10n () -> t ( 'Suggested by:' ),
'$madeby' => $notification -> getMadeBy (),
'$madeby_url' => $notification -> getMadeByUrl (),
'$madeby_zrl' => $notification -> getMadeByZrl (),
'$madeby_addr' => $notification -> getMadeByAddr (),
'$contact_id' => $notification -> getContactId (),
'$photo' => $notification -> getPhoto (),
'$fullname' => $notification -> getName (),
'$url' => $notification -> getUrl (),
'$zrl' => $notification -> getZrl (),
'$lbl_url' => DI :: l10n () -> t ( 'Profile URL' ),
'$addr' => $notification -> getAddr (),
'$hidden' => [ 'hidden' , DI :: l10n () -> t ( 'Hide this contact from others' ), $notification -> isHidden (), '' ],
'$knowyou' => $notification -> getKnowYou (),
'$approve' => DI :: l10n () -> t ( 'Approve' ),
'$note' => $notification -> getNote (),
'$request' => $notification -> getRequest (),
'$ignore' => DI :: l10n () -> t ( 'Ignore' ),
'$discard' => DI :: l10n () -> t ( 'Discard' ),
2020-01-22 17:18:14 -05:00
]);
break ;
// Normal connection requests
default :
2020-01-24 20:01:49 -05:00
if ( $notification -> getNetwork () === Protocol :: DFRN ) {
2020-01-22 17:18:14 -05:00
$lbl_knowyou = DI :: l10n () -> t ( 'Claims to be known to you: ' );
2020-02-05 21:42:53 -05:00
$knowyou = ( $notification -> getKnowYou () ? DI :: l10n () -> t ( 'Yes' ) : DI :: l10n () -> t ( 'No' ));
2020-02-05 16:40:35 -05:00
} else {
$lbl_knowyou = '' ;
$knowyou = '' ;
2020-01-22 17:18:14 -05:00
}
2020-02-05 11:14:04 -05:00
$helptext = DI :: l10n () -> t ( 'Shall your connection be bidirectional or not?' );
$helptext2 = DI :: l10n () -> t ( 'Accepting %s as a friend allows %s to subscribe to your posts, and you will also receive updates from them in your news feed.' , $notification -> getName (), $notification -> getName ());
$helptext3 = DI :: l10n () -> t ( 'Accepting %s as a subscriber allows them to subscribe to your posts, but you will not receive updates from them in your news feed.' , $notification -> getName ());
$friend = [ 'duplex' , DI :: l10n () -> t ( 'Friend' ), '1' , $helptext2 , true ];
$follower = [ 'duplex' , DI :: l10n () -> t ( 'Subscriber' ), '0' , $helptext3 , false ];
2020-01-22 17:18:14 -05:00
2020-01-24 20:01:49 -05:00
$contact = DBA :: selectFirst ( 'contact' , [ 'network' , 'protocol' ], [ 'id' => $notification -> getContactId ()]);
2020-01-22 17:18:14 -05:00
if (( $contact [ 'network' ] != Protocol :: DFRN ) || ( $contact [ 'protocol' ] == Protocol :: ACTIVITYPUB )) {
$action = 'follow_confirm' ;
} else {
$action = 'dfrn_confirm' ;
}
2020-01-25 14:00:58 -05:00
$header = $notification -> getName ();
2020-01-22 17:18:14 -05:00
2020-01-25 14:00:58 -05:00
if ( $notification -> getAddr () != '' ) {
$header .= ' <' . $notification -> getAddr () . '>' ;
2020-01-22 17:18:14 -05:00
}
2020-01-24 20:01:49 -05:00
$header .= ' (' . ContactSelector :: networkToName ( $notification -> getNetwork (), $notification -> getUrl ()) . ')' ;
2020-01-22 17:18:14 -05:00
2020-01-24 20:01:49 -05:00
if ( $notification -> getNetwork () != Protocol :: DIASPORA ) {
2020-01-22 17:18:14 -05:00
$discard = DI :: l10n () -> t ( 'Discard' );
} else {
$discard = '' ;
}
2020-01-24 12:32:38 -05:00
$notificationContent [] = Renderer :: replaceMacros ( $notificationTemplate , [
2020-01-25 14:00:58 -05:00
'$type' => $notification -> getLabel (),
'$header' => $header ,
'$str_notification_type' => DI :: l10n () -> t ( 'Notification type:' ),
'$str_type' => $notification -> getType (),
'$dfrn_id' => $notification -> getDfrnId (),
'$uid' => $notification -> getUid (),
'$intro_id' => $notification -> getIntroId (),
'$contact_id' => $notification -> getContactId (),
'$photo' => $notification -> getPhoto (),
'$fullname' => $notification -> getName (),
'$location' => $notification -> getLocation (),
'$lbl_location' => DI :: l10n () -> t ( 'Location:' ),
'$about' => $notification -> getAbout (),
'$lbl_about' => DI :: l10n () -> t ( 'About:' ),
'$keywords' => $notification -> getKeywords (),
'$lbl_keywords' => DI :: l10n () -> t ( 'Tags:' ),
'$gender' => $notification -> getGender (),
'$lbl_gender' => DI :: l10n () -> t ( 'Gender:' ),
'$hidden' => [ 'hidden' , DI :: l10n () -> t ( 'Hide this contact from others' ), $notification -> isHidden (), '' ],
2020-02-05 11:14:04 -05:00
'$lbl_connection_type' => $helptext ,
'$friend' => $friend ,
'$follower' => $follower ,
2020-01-25 14:00:58 -05:00
'$url' => $notification -> getUrl (),
'$zrl' => $notification -> getZrl (),
'$lbl_url' => DI :: l10n () -> t ( 'Profile URL' ),
'$addr' => $notification -> getAddr (),
'$lbl_knowyou' => $lbl_knowyou ,
'$lbl_network' => DI :: l10n () -> t ( 'Network:' ),
'$network' => ContactSelector :: networkToName ( $notification -> getNetwork (), $notification -> getUrl ()),
'$knowyou' => $knowyou ,
'$approve' => DI :: l10n () -> t ( 'Approve' ),
'$note' => $notification -> getNote (),
'$ignore' => DI :: l10n () -> t ( 'Ignore' ),
'$discard' => $discard ,
'$action' => $action ,
2020-01-22 17:18:14 -05:00
]);
break ;
}
}
2020-01-24 12:32:38 -05:00
if ( count ( $notifications [ 'notifications' ]) == 0 ) {
2020-01-22 17:18:14 -05:00
info ( DI :: l10n () -> t ( 'No introductions.' ) . EOL );
2020-01-24 12:32:38 -05:00
$notificationNoContent = DI :: l10n () -> t ( 'No more %s notifications.' , $notifications [ 'ident' ]);
2020-01-22 17:18:14 -05:00
}
2020-01-24 12:32:38 -05:00
return self :: printContent ( $notificationHeader , $notificationContent , $notificationNoContent , $notificationShowLink );
2020-01-22 17:18:14 -05:00
}
}