2019-04-15 22:19:32 +03:00
< ? php
2019-12-03 21:57:53 +03:00
2019-04-15 22:19:32 +03:00
declare ( strict_types = 1 );
2019-12-03 21:57:53 +03:00
2019-04-15 22:19:32 +03:00
/**
* @ copyright Copyright ( c ) 2019 , Roeland Jago Douma < roeland @ famdouma . nl >
*
2020-04-29 12:57:22 +03:00
* @ author Christoph Wurst < christoph @ winzerhof - wurst . at >
2019-12-03 21:57:53 +03:00
* @ author Joas Schilling < coding @ schilljs . com >
2020-12-02 12:07:34 +03:00
* @ author Morris Jobke < hey @ morrisjobke . de >
2019-04-15 22:19:32 +03:00
* @ author Roeland Jago Douma < roeland @ famdouma . nl >
*
* @ 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
2019-12-03 21:57:53 +03:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2019-04-15 22:19:32 +03:00
*
*/
namespace OC\Core\Notification ;
2020-12-02 22:13:33 +03:00
use OCP\IURLGenerator ;
2019-04-15 22:19:32 +03:00
use OCP\L10N\IFactory ;
use OCP\Notification\INotification ;
use OCP\Notification\INotifier ;
2020-12-02 12:07:34 +03:00
class CoreNotifier implements INotifier {
2019-04-15 22:19:32 +03:00
/** @var IFactory */
private $l10nFactory ;
2020-12-02 22:13:33 +03:00
/** @var IURLGenerator */
private $url ;
2019-04-15 22:19:32 +03:00
2020-12-02 22:13:33 +03:00
public function __construct ( IFactory $factory , IURLGenerator $url ) {
2019-04-15 22:19:32 +03:00
$this -> l10nFactory = $factory ;
2020-12-02 22:13:33 +03:00
$this -> url = $url ;
2019-04-15 22:19:32 +03:00
}
2019-04-30 13:08:22 +03:00
/**
* Identifier of the notifier , only use [ a - z0 - 9_ ]
*
* @ return string
* @ since 17.0 . 0
*/
public function getID () : string {
return 'core' ;
}
/**
* Human readable name describing the notifier
*
* @ return string
* @ since 17.0 . 0
*/
public function getName () : string {
return $this -> l10nFactory -> get ( 'core' ) -> t ( 'Nextcloud Server' );
}
public function prepare ( INotification $notification , string $languageCode ) : INotification {
2020-04-10 15:19:56 +03:00
if ( $notification -> getApp () !== 'core' ) {
2019-04-15 22:19:32 +03:00
throw new \InvalidArgumentException ();
}
$l = $this -> l10nFactory -> get ( 'core' , $languageCode );
if ( $notification -> getSubject () === 'repair_exposing_links' ) {
$notification -> setParsedSubject ( $l -> t ( 'Some of your link shares have been removed' ));
$notification -> setParsedMessage ( $l -> t ( 'Due to a security bug we had to remove some of your link shares. Please see the link for more information.' ));
$notification -> setLink ( 'https://nextcloud.com/security/advisory/?id=NC-SA-2019-003' );
return $notification ;
}
2020-12-02 12:07:34 +03:00
if ( $notification -> getSubject () === 'user_limit_reached' ) {
$notification -> setParsedSubject ( $l -> t ( 'The user limit of this instance is reached.' ));
$notification -> setParsedMessage ( $l -> t ( 'Add a subscription key to increase the user limit of this instance. For more information have a look at the Enterprise subscription page.' ));
$notification -> setLink ( 'https://nextcloud.com/enterprise/order/' );
2020-12-02 22:13:33 +03:00
$notification -> setIcon ( $this -> url -> getAbsoluteURL ( $this -> url -> imagePath ( 'core' , 'places/contacts.svg' )));
2020-12-02 12:07:34 +03:00
return $notification ;
}
2019-04-15 22:19:32 +03:00
throw new \InvalidArgumentException ( 'Invalid subject' );
}
}