. /** * @copyright 2022 onwards Vitaly Potenko * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace mod_adaptivequiz\local\report\users_attempts\user_preferences; use mod_adaptivequiz\local\report\users_attempts\filter\filter_options; final class filter_user_preferences { /** * @var int $users */ private $users; /** * @var int $includeinactiveenrolments */ private $includeinactiveenrolments; private function __construct(int $users, int $includeinactiveenrolments) { $this->users = filter_options::users_option_exists($users) ? $users : filter_options::users_option_default(); $this->includeinactiveenrolments = in_array($includeinactiveenrolments, [0, 1]) ? $includeinactiveenrolments : filter_options::INCLUDE_INACTIVE_ENROLMENTS_DEFAULT; } public function users(): int { return $this->users; } public function include_inactive_enrolments(): int { return $this->includeinactiveenrolments; } public function as_array(): array { return ['users' => $this->users, 'includeinactiveenrolments' => $this->includeinactiveenrolments]; } public static function from_array(array $filter): self { return new self( array_key_exists('users', $filter) ? $filter['users'] : filter_options::users_option_default(), array_key_exists('includeinactiveenrolments', $filter) ? $filter['includeinactiveenrolments'] : filter_options::INCLUDE_INACTIVE_ENROLMENTS_DEFAULT ); } }