chg: [user:periodicNotification] Dev cont.

pull/8575/head
Sami Mokaddem 2022-08-29 12:06:42 +02:00
parent 8db8cbd398
commit 279f33bc4a
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
3 changed files with 35 additions and 0 deletions

View File

@ -2806,6 +2806,12 @@ class UsersController extends AppController
$this->set('user', $user);
}
public function viewPeriodicSummary(int $user_id, string $period)
{
$summary = $this->User->generatePeriodicSummary($user_id, $period);
$this->set('summary', $summary);
}
private function __canChangePassword()
{
return $this->ACL->canUserAccess($this->Auth->user(), 'users', 'change_pw');

View File

@ -1698,4 +1698,31 @@ class User extends AppModel
}
return !empty($success);
}
/**
* Undocumented function
*
* @param int $user_id
* @param string $period
* @return string
* @throws NotFoundException
* @throws InvalidArgumentException
*/
public function generatePeriodicSummary(int $user_id, string $period): string
{
$existingUser = $this->find('first', [
'recursive' => -1,
'conditions' => ['User.id' => $user_id],
]);
if (empty($existingUser)) {
throw new NotFoundException(__('Invalid user ID.'));
}
$allowed_periods = array_map(function($period) {
return substr($period, strlen('notification_'));
}, self::PERIODIC_NOTIFICATIONS);
if (!in_array($period, $allowed_periods)) {
throw new InvalidArgumentException(__('Invalid period. Must be one of %s', JsonTool::encode(self::PERIODIC_NOTIFICATIONS)));
}
}
}

View File

@ -0,0 +1,2 @@
<?php
debug($summary);