1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\UsersManager\TokenNotifications;
use Piwik\Date;
use Piwik\Plugins\UsersManager\Model as UserModel;
abstract class TokenNotificationProvider implements TokenNotificationProviderInterface
{
/** @var UserModel */
protected $userModel;
/** @var string */
protected $today;
public function __construct()
{
$this->userModel = new UserModel();
$this->today = Date::factory('now')->getDatetime();
}
abstract protected function getPeriodThreshold(): ?string;
abstract protected function getTokensToNotify(string $periodThreshold): array;
abstract protected function createNotification(string $login, array $tokens): TokenNotification;
public function getTokenNotificationsForDispatch(): array
{
$periodThreshold = $this->getPeriodThreshold();
if (null === $periodThreshold) {
return [];
}
$tokensToNotify = $this->getTokensToNotify($periodThreshold);
$tokensToNotifyPerUser = [];
foreach ($tokensToNotify as $t) {
$tokensToNotifyPerUser[$t['login']][] = $t;
}
$notifications = [];
foreach ($tokensToNotifyPerUser as $login => $tokens) {
$notifications[] = $this->createNotification($login, $tokens);
}
return $notifications;
}
}
|