2021-10-14 04:19:40 -04:00
< ? php
/**
* @ copyright 2017 Christoph Wurst < christoph @ winzerhof - wurst . at >
*
* @ author Christoph Wurst < christoph @ winzerhof - wurst . at >
*
* @ 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 < http :// www . gnu . org / licenses />.
*
*/
namespace OC\Contacts\ContactsMenu\Providers ;
2022-03-10 21:11:28 -05:00
use OC\Profile\ProfileManager ;
2021-10-14 04:19:40 -04:00
use OCP\Contacts\ContactsMenu\IActionFactory ;
use OCP\Contacts\ContactsMenu\IEntry ;
use OCP\Contacts\ContactsMenu\IProvider ;
use OCP\IURLGenerator ;
use OCP\IUserManager ;
use OCP\L10N\IFactory as IL10NFactory ;
class ProfileProvider implements IProvider {
/** @var IActionFactory */
private $actionFactory ;
2022-03-10 21:11:28 -05:00
/** @var ProfileManager */
private $profileManager ;
2021-10-14 04:19:40 -04:00
/** @var IL10NFactory */
private $l10nFactory ;
/** @var IURLGenerator */
private $urlGenerator ;
/** @var IUserManager */
private $userManager ;
/**
* @ param IActionFactory $actionFactory
2022-03-10 21:11:28 -05:00
* @ param ProfileManager $profileManager
2021-10-14 04:19:40 -04:00
* @ param IL10NFactory $l10nFactory
* @ param IURLGenerator $urlGenerator
* @ param IUserManager $userManager
*/
public function __construct (
IActionFactory $actionFactory ,
2022-03-10 21:11:28 -05:00
ProfileManager $profileManager ,
2021-10-14 04:19:40 -04:00
IL10NFactory $l10nFactory ,
IURLGenerator $urlGenerator ,
IUserManager $userManager
) {
$this -> actionFactory = $actionFactory ;
2022-03-10 21:11:28 -05:00
$this -> profileManager = $profileManager ;
2021-10-14 04:19:40 -04:00
$this -> l10nFactory = $l10nFactory ;
$this -> urlGenerator = $urlGenerator ;
$this -> userManager = $userManager ;
}
/**
* @ param IEntry $entry
*/
public function process ( IEntry $entry ) {
$targetUserId = $entry -> getProperty ( 'UID' );
$targetUser = $this -> userManager -> get ( $targetUserId );
if ( ! empty ( $targetUser )) {
2022-03-10 21:11:28 -05:00
if ( $this -> profileManager -> isProfileEnabled ( $targetUser )) {
2021-10-14 04:19:40 -04:00
$iconUrl = $this -> urlGenerator -> getAbsoluteURL ( $this -> urlGenerator -> imagePath ( 'core' , 'actions/profile.svg' ));
2021-11-25 21:00:40 -05:00
$profileActionText = $this -> l10nFactory -> get ( 'lib' ) -> t ( 'View profile' );
2021-10-14 04:19:40 -04:00
$profileUrl = $this -> urlGenerator -> linkToRouteAbsolute ( 'core.ProfilePage.index' , [ 'targetUserId' => $targetUserId ]);
2021-10-20 08:43:45 -04:00
$action = $this -> actionFactory -> newLinkAction ( $iconUrl , $profileActionText , $profileUrl , 'profile' );
2021-10-14 04:19:40 -04:00
// Set highest priority (by descending order), other actions have the default priority 10 as defined in lib/private/Contacts/ContactsMenu/Actions/LinkAction.php
$action -> setPriority ( 20 );
$entry -> addAction ( $action );
}
}
}
}