| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Changes; |
|
|
| use Piwik\Container\StaticContainer; |
| use Piwik\Date; |
| use Piwik\Plugins\UsersManager\Model as UsersModel; |
|
|
| |
| |
| |
| class UserChanges |
| { |
| private $user; |
| private $changesModel; |
|
|
| |
| |
| |
| public function __construct(array $user) |
| { |
| $this->user = $user; |
| $this->changesModel = StaticContainer::get(\Piwik\Changes\Model::class); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function getNewChangesStatus(): int |
| { |
| return $this->changesModel->doChangesExist($this->getIdchangeLastViewed()); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function getNewChangesCount(): int |
| { |
| return $this->changesModel->getNewChangesCount($this->getIdchangeLastViewed()); |
| } |
|
|
| |
| |
| |
| private function getIdchangeLastViewed(): ?int |
| { |
| return (isset($this->user['idchange_last_viewed']) ? intval($this->user['idchange_last_viewed']) : null); |
| } |
|
|
| |
| |
| |
| |
| |
| public function shownRecently(): bool |
| { |
| $lastShown = (isset($this->user['ts_changes_shown']) ? $this->user['ts_changes_shown'] : null); |
| if (!$lastShown) { |
| return false; |
| } |
| |
| return ((Date::factory('now')->getTimestamp() - Date::factory($lastShown)->getTimestamp()) < 86400); |
| } |
|
|
| |
| |
| |
| |
| |
| public function getChanges(): array |
| { |
| $usersModel = new UsersModel(); |
| $usersModel->updateUserFields($this->user['login'], ['ts_changes_shown' => Date::now()->getDatetime()]); |
|
|
| return $this->changesModel->getChangeItems(); |
| } |
|
|
| |
| |
| |
| |
| |
| public function markChangesAsRead(): void |
| { |
| $changes = $this->changesModel->getChangeItems(); |
|
|
| $maxId = null; |
| foreach ($changes as $k => $change) { |
| if ($maxId < $change['idchange']) { |
| $maxId = $change['idchange']; |
| } |
| } |
|
|
| if ($maxId) { |
| $usersModel = new UsersModel(); |
| $usersModel->updateUserFields($this->user['login'], ['idchange_last_viewed' => $maxId]); |
| } |
| } |
| } |
|
|