Resolve various PHP inspection issues

This commit is contained in:
Alex Tselegidis 2023-03-13 09:06:18 +01:00
parent 08b14b665e
commit 2b552c4535
42 changed files with 240 additions and 258 deletions

View file

@ -131,7 +131,6 @@ class Booking extends EA_Controller {
$display_login_button = setting('display_login_button'); $display_login_button = setting('display_login_button');
$display_delete_personal_information = setting('display_delete_personal_information'); $display_delete_personal_information = setting('display_delete_personal_information');
$book_advance_timeout = setting('book_advance_timeout'); $book_advance_timeout = setting('book_advance_timeout');
$future_booking_limit = setting('future_booking_limit');
$theme = request('theme', setting('theme', 'default')); $theme = request('theme', setting('theme', 'default'));
if (empty($theme) || ! file_exists(__DIR__ . '/../../assets/css/themes/' . $theme . '.min.css')) if (empty($theme) || ! file_exists(__DIR__ . '/../../assets/css/themes/' . $theme . '.min.css'))
@ -286,7 +285,7 @@ class Booking extends EA_Controller {
* *
* @param string $appointment_hash * @param string $appointment_hash
*/ */
public function reschedule($appointment_hash) public function reschedule(string $appointment_hash)
{ {
html_vars(['appointment_hash' => $appointment_hash]); html_vars(['appointment_hash' => $appointment_hash]);
@ -311,7 +310,7 @@ class Booking extends EA_Controller {
if (empty($provider_id)) if (empty($provider_id))
{ {
json_response([]); json_response();
return; return;
} }
@ -397,7 +396,7 @@ class Booking extends EA_Controller {
// Check if the provider is available for the requested date. // Check if the provider is available for the requested date.
$available_hours = $this->availability->get_available_hours($date, $service, $provider); $available_hours = $this->availability->get_available_hours($date, $service, $provider);
if (count($available_hours) > $max_hours_count && (empty($hour) || in_array($hour, $available_hours, FALSE))) if (count($available_hours) > $max_hours_count && (empty($hour) || in_array($hour, $available_hours)))
{ {
$provider_id = $provider['id']; $provider_id = $provider['id'];
@ -567,7 +566,7 @@ class Booking extends EA_Controller {
'time_format' => setting('time_format') 'time_format' => setting('time_format')
]; ];
$this->synchronization->sync_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode); $this->synchronization->sync_appointment_saved($appointment, $service, $provider, $customer, $settings);
$this->notifications->notify_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode); $this->notifications->notify_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode);
@ -596,7 +595,7 @@ class Booking extends EA_Controller {
* Use this method just before the customer confirms the appointment registration. If the selected date was reserved * Use this method just before the customer confirms the appointment registration. If the selected date was reserved
* in the meanwhile, the customer must be prompted to select another time. * in the meanwhile, the customer must be prompted to select another time.
* *
* @return int Returns the ID of the provider that is available for the appointment. * @return int|null Returns the ID of the provider that is available for the appointment.
* *
* @throws Exception * @throws Exception
*/ */

View file

@ -36,6 +36,8 @@ class Booking_confirmation extends EA_Controller {
/** /**
* Display the appointment registration success page. * Display the appointment registration success page.
*
* @throws Exception
*/ */
public function of() public function of()
{ {

View file

@ -227,7 +227,7 @@ class Calendar extends EA_Controller {
? can('add', PRIV_APPOINTMENTS) ? can('add', PRIV_APPOINTMENTS)
: can('edit', PRIV_APPOINTMENTS); : can('edit', PRIV_APPOINTMENTS);
if ($required_permissions == FALSE) if ( ! $required_permissions)
{ {
throw new RuntimeException('You do not have the required permissions for this task.'); throw new RuntimeException('You do not have the required permissions for this task.');
} }
@ -279,7 +279,7 @@ class Calendar extends EA_Controller {
'time_format' => setting('time_format') 'time_format' => setting('time_format')
]; ];
$this->synchronization->sync_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode); $this->synchronization->sync_appointment_saved($appointment, $service, $provider, $customer, $settings);
$this->notifications->notify_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode); $this->notifications->notify_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode);
@ -411,7 +411,7 @@ class Calendar extends EA_Controller {
$this->unavailabilities_model->delete($unavailability_id); $this->unavailabilities_model->delete($unavailability_id);
$this->synchronization->sync_appointment_deleted($unavailability, $provider); $this->synchronization->sync_unavailability_deleted($unavailability, $provider);
$this->webhooks_client->trigger(WEBHOOK_UNAVAILABILITY_DELETE, $unavailability); $this->webhooks_client->trigger(WEBHOOK_UNAVAILABILITY_DELETE, $unavailability);

View file

@ -39,8 +39,6 @@ class Google extends EA_Controller {
* This method will completely sync the appointments of a provider with his Google Calendar account. The sync period * This method will completely sync the appointments of a provider with his Google Calendar account. The sync period
* needs to be relatively small, because a lot of API calls might be necessary and this will lead to consuming the * needs to be relatively small, because a lot of API calls might be necessary and this will lead to consuming the
* Google limit for the Calendar API usage. * Google limit for the Calendar API usage.
*
* @param string $provider_id Provider record to be synced.
*/ */
public static function sync(string $provider_id = NULL) public static function sync(string $provider_id = NULL)
{ {
@ -166,7 +164,7 @@ class Google extends EA_Controller {
} }
} }
catch (Throwable $e) catch (Throwable)
{ {
// Appointment not found on Google Calendar, delete from Easy!Appointments. // Appointment not found on Google Calendar, delete from Easy!Appointments.
$CI->appointments_model->delete($appointment['id']); $CI->appointments_model->delete($appointment['id']);
@ -285,7 +283,10 @@ class Google extends EA_Controller {
* *
* IMPORTANT: Because it is necessary to authorize the application using the web server flow (see official * IMPORTANT: Because it is necessary to authorize the application using the web server flow (see official
* documentation of OAuth), every Easy!Appointments installation should use its own calendar api key. So in every * documentation of OAuth), every Easy!Appointments installation should use its own calendar api key. So in every
* api console account, the "http://path-to-Easy!Appointments/google/oauth_callback" should be included in an allowed redirect URL. * api console account, the "http://path-to-Easy!Appointments/google/oauth_callback" should be included in an
* allowed redirect URL.
*
* @throws Exception
*/ */
public function oauth_callback() public function oauth_callback()
{ {
@ -431,7 +432,7 @@ class Google extends EA_Controller {
$this->providers_model->set_setting($provider_id, 'google_sync', FALSE); $this->providers_model->set_setting($provider_id, 'google_sync', FALSE);
$this->providers_model->set_setting($provider_id, 'google_token', NULL); $this->providers_model->set_setting($provider_id, 'google_token');
$this->appointments_model->clear_google_sync_ids($provider_id); $this->appointments_model->clear_google_sync_ids($provider_id);

View file

@ -42,7 +42,7 @@ class Installation extends EA_Controller {
{ {
if (is_app_installed()) if (is_app_installed())
{ {
redirect(''); redirect();
return; return;
} }

View file

@ -334,7 +334,7 @@ class Appointments_api_v1 extends EA_Controller {
'time_format' => setting('time_format') 'time_format' => setting('time_format')
]; ];
$this->synchronization->sync_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode); $this->synchronization->sync_appointment_saved($appointment, $service, $provider, $customer, $settings);
$this->notifications->notify_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode); $this->notifications->notify_appointment_saved($appointment, $service, $provider, $customer, $settings, $manage_mode);
} }

View file

@ -43,7 +43,7 @@ class EA_Model extends CI_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = []; protected array $casts = [];
/** /**
* EA_Model constructor. * EA_Model constructor.

View file

@ -22,18 +22,18 @@
* *
* @return string Returns the final asset URL. * @return string Returns the final asset URL.
*/ */
function asset_url($uri = '', $protocol = NULL) function asset_url(string $uri = '', string $protocol = NULL): string
{ {
$debug = config('debug'); $debug = config('debug');
$cache_busting_token = ! $debug ? '?' . config('cache_busting_token') : ''; $cache_busting_token = ! $debug ? '?' . config('cache_busting_token') : '';
if (strpos(basename($uri), '.js') !== FALSE && strpos(basename($uri), '.min.js') === FALSE && ! $debug) if (str_contains(basename($uri), '.js') && ! str_contains(basename($uri), '.min.js') && ! $debug)
{ {
$uri = str_replace('.js', '.min.js', $uri); $uri = str_replace('.js', '.min.js', $uri);
} }
if (strpos(basename($uri), '.css') !== FALSE && strpos(basename($uri), '.min.css') === FALSE && ! $debug) if (str_contains(basename($uri), '.css') && ! str_contains(basename($uri), '.min.css') && ! $debug)
{ {
$uri = str_replace('.css', '.min.css', $uri); $uri = str_replace('.css', '.min.css', $uri);
} }

View file

@ -25,13 +25,13 @@
* config(['version' => '1.0.0']); * config(['version' => '1.0.0']);
* *
* @param array|string $key Configuration key. * @param array|string $key Configuration key.
* @param mixed $default Default value in case the requested config has no value. * @param mixed|null $default Default value in case the requested config has no value.
* *
* @return mixed|NULL Returns the requested value or NULL if you assign a new configuration value. * @return mixed|NULL Returns the requested value or NULL if you assign a new configuration value.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
function config($key, $default = NULL) function config(array|string $key, mixed $default = NULL): mixed
{ {
/** @var EA_Controller $CI */ /** @var EA_Controller $CI */
$CI = &get_instance(); $CI = &get_instance();
@ -71,14 +71,14 @@ if ( ! function_exists('script_vars'))
* *
* script_vars(['version' => '1.0.0']); * script_vars(['version' => '1.0.0']);
* *
* @param array|string $key Configuration key. * @param array|string|null $key Configuration key.
* @param mixed $default Default value in case the requested config has no value. * @param mixed|null $default Default value in case the requested config has no value.
* *
* @return mixed|NULL Returns the requested value or NULL if you assign a new configuration value. * @return mixed|NULL Returns the requested value or NULL if you assign a new configuration value.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
function script_vars($key = NULL, $default = NULL) function script_vars(array|string $key = NULL, mixed $default = NULL): mixed
{ {
$script_vars = config('script_vars', []); $script_vars = config('script_vars', []);
@ -120,14 +120,14 @@ if ( ! function_exists('html_vars'))
* *
* html_vars(['title' => 'Test Title']); * html_vars(['title' => 'Test Title']);
* *
* @param array|string $key Variable key. * @param array|string|null $key Variable key.
* @param mixed $default Default value in case the requested variable has no value. * @param mixed|null $default Default value in case the requested variable has no value.
* *
* @return mixed|NULL Returns the requested value or NULL if you assign a new configuration value. * @return mixed|NULL Returns the requested value or NULL if you assign a new configuration value.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
function html_vars($key = NULL, $default = NULL) function html_vars(array|string $key = NULL, mixed $default = NULL): mixed
{ {
$html_vars = config('html_vars', []); $html_vars = config('html_vars', []);
@ -169,14 +169,14 @@ if ( ! function_exists('vars'))
* *
* vars(['version' => '1.0.0']); * vars(['version' => '1.0.0']);
* *
* @param array|string $key Configuration key. * @param array|string|null $key Configuration key.
* @param mixed $default Default value in case the requested config has no value. * @param mixed|null $default Default value in case the requested config has no value.
* *
* @return mixed|NULL Returns the requested value or NULL if you assign a new configuration value. * @return mixed|NULL Returns the requested value or NULL if you assign a new configuration value.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
function vars($key = NULL, $default = NULL) function vars(array|string $key = NULL, mixed $default = NULL): mixed
{ {
return html_vars($key) ?? script_vars($key) ?? $default; return html_vars($key) ?? script_vars($key) ?? $default;
} }

View file

@ -1,4 +1,6 @@
<?php defined('BASEPATH') or exit('No direct script access allowed'); <?php use JetBrains\PhpStorm\NoReturn;
defined('BASEPATH') or exit('No direct script access allowed');
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler * Easy!Appointments - Online Appointment Scheduler
@ -22,7 +24,7 @@ if ( ! function_exists('dd'))
* *
* @param mixed ...$vars * @param mixed ...$vars
*/ */
function dd(...$vars) #[NoReturn] function dd(...$vars): void
{ {
var_dump($vars); var_dump($vars);

View file

@ -21,13 +21,13 @@ if ( ! function_exists('env'))
* $debug = env('debug', FALSE); * $debug = env('debug', FALSE);
* *
* @param string $key Environment key. * @param string $key Environment key.
* @param mixed $default Default value in case the requested variable has no value. * @param mixed|null $default Default value in case the requested variable has no value.
* *
* @return mixed * @return mixed
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
function env(string $key, $default = NULL) function env(string $key, mixed $default = NULL): mixed
{ {
if (empty($key)) if (empty($key))
{ {

View file

@ -48,9 +48,9 @@ if ( ! function_exists('component'))
* @param array $vars Additional parameters for the component. * @param array $vars Additional parameters for the component.
* @param bool $return Whether to return the HTML or echo it directly. * @param bool $return Whether to return the HTML or echo it directly.
* *
* @return string Return the HTML if the $return argument is TRUE or NULL. * @return mixed Return the HTML if the $return argument is TRUE or NULL.
*/ */
function component(string $component, array $vars = [], bool $return = FALSE) function component(string $component, array $vars = [], bool $return = FALSE): mixed
{ {
/** @var EA_Controller $CI */ /** @var EA_Controller $CI */
$CI = get_instance(); $CI = get_instance();
@ -66,7 +66,7 @@ if ( ! function_exists('extend'))
* *
* @param $layout * @param $layout
*/ */
function extend($layout) function extend($layout): void
{ {
config([ config([
'layout' => [ 'layout' => [
@ -99,7 +99,7 @@ if ( ! function_exists('section'))
* *
* @param string $name * @param string $name
*/ */
function section(string $name) function section(string $name): void
{ {
$layout = config('layout'); $layout = config('layout');
@ -148,7 +148,7 @@ if ( ! function_exists('end_section'))
* *
* @param string $name * @param string $name
*/ */
function end_section(string $name) function end_section(string $name): void
{ {
$layout = config('layout'); $layout = config('layout');
@ -170,7 +170,7 @@ if ( ! function_exists('slot'))
* *
* @param string $name * @param string $name
*/ */
function slot(string $name) function slot(string $name): void
{ {
$layout = config('layout'); $layout = config('layout');

View file

@ -21,7 +21,7 @@
* *
* @return bool Returns whether E!A is installed or not. * @return bool Returns whether E!A is installed or not.
*/ */
function is_app_installed() function is_app_installed(): bool
{ {
$CI =& get_instance(); $CI =& get_instance();

View file

@ -26,8 +26,9 @@ if ( ! function_exists('rate_limit'))
* @param int $max_requests Number of allowed requests, defaults to 100. * @param int $max_requests Number of allowed requests, defaults to 100.
* @param int $duration In seconds, defaults to 2 minutes. * @param int $duration In seconds, defaults to 2 minutes.
*/ */
function rate_limit(string $ip, int $max_requests = 100, int $duration = 120) function rate_limit(string $ip, int $max_requests = 100, int $duration = 120): void
{ {
/** @var EA_Controller $CI */
$CI =& get_instance(); $CI =& get_instance();
$rate_limiting = $CI->config->item('rate_limiting'); $rate_limiting = $CI->config->item('rate_limiting');

View file

@ -18,9 +18,9 @@ if ( ! function_exists('route_api_resource'))
* *
* @param array $route Route config. * @param array $route Route config.
* @param string $resource Resource name. * @param string $resource Resource name.
* @param string|null $prefix URL prefix (e.g. api/v1/). * @param string $prefix URL prefix (e.g. api/v1/).
*/ */
function route_api_resource(array &$route, string $resource, string $prefix = '') function route_api_resource(array &$route, string $resource, string $prefix = ''): void
{ {
$route[$prefix . $resource]['post'] = 'api/v1/' . $resource . '_api_v1/store'; $route[$prefix . $resource]['post'] = 'api/v1/' . $resource . '_api_v1/store';
$route[$prefix . $resource . '/(:num)']['put'] = 'api/v1/' . $resource . '_api_v1/update/$1'; $route[$prefix . $resource . '/(:num)']['put'] = 'api/v1/' . $resource . '_api_v1/update/$1';

View file

@ -26,14 +26,14 @@ if ( ! function_exists('session'))
* *
* session(['logged_in' => FALSE]); * session(['logged_in' => FALSE]);
* *
* @param array|string $key Session item key. * @param array|string|null $key Session item key.
* @param mixed $default Default value in case the requested session item has no value. * @param mixed|null $default Default value in case the requested session item has no value.
* *
* @return mixed|NULL Returns the requested value or NULL if you assign a new session value. * @return mixed|NULL Returns the requested value or NULL if you assign a new session value.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
function session($key = NULL, $default = NULL) function session(array|string $key = NULL, mixed $default = NULL): mixed
{ {
/** @var EA_Controller $CI */ /** @var EA_Controller $CI */
$CI = &get_instance(); $CI = &get_instance();

View file

@ -26,14 +26,14 @@ if ( ! function_exists('setting'))
* *
* setting(['company_name' => 'ACME Inc']); * setting(['company_name' => 'ACME Inc']);
* *
* @param array|string $key Setting key. * @param array|string|null $key Setting key.
* @param mixed $default Default value in case the requested setting has no value. * @param mixed|null $default Default value in case the requested setting has no value.
* *
* @return mixed|NULL Returns the requested value or NULL if you assign a new setting value. * @return mixed|NULL Returns the requested value or NULL if you assign a new setting value.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
*/ */
function setting($key = NULL, $default = NULL) function setting(array|string $key = NULL, mixed $default = NULL): mixed
{ {
/** @var EA_Controller $CI */ /** @var EA_Controller $CI */
$CI = &get_instance(); $CI = &get_instance();

View file

@ -21,9 +21,9 @@
*/ */
class Accounts { class Accounts {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Accounts constructor. * Accounts constructor.
@ -45,6 +45,7 @@ class Accounts {
* @param string $password Password (non-hashed). * @param string $password Password (non-hashed).
* *
* @return array|null Returns an associative array with the PHP session data or NULL on failure. * @return array|null Returns an associative array with the PHP session data or NULL on failure.
* @throws Exception
*/ */
public function check_login(string $username, string $password): ?array public function check_login(string $username, string $password): ?array
{ {
@ -112,9 +113,9 @@ class Accounts {
* @param string $username Username. * @param string $username Username.
* @param string $email Email. * @param string $email Email.
* *
* @return string|bool Returns the new password on success or FALSE on failure. * @return string Returns the new password on success or FALSE on failure.
* *
* @throws RuntimeException * @throws Exception
*/ */
public function regenerate_password(string $username, string $email): string public function regenerate_password(string $username, string $email): string
{ {

View file

@ -1,4 +1,6 @@
<?php defined('BASEPATH') or exit('No direct script access allowed'); <?php use JetBrains\PhpStorm\NoReturn;
defined('BASEPATH') or exit('No direct script access allowed');
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
* Easy!Appointments - Online Appointment Scheduler * Easy!Appointments - Online Appointment Scheduler
@ -21,19 +23,19 @@
*/ */
class Api { class Api {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* @var int * @var int
*/ */
protected $default_length = 20; protected int $default_length = 20;
/** /**
* @var EA_Model * @var EA_Model
*/ */
protected $model; protected EA_Model $model;
/** /**
* Api constructor. * Api constructor.
@ -50,7 +52,7 @@ class Api {
* *
* @param string $model * @param string $model
*/ */
public function model(string $model) public function model(string $model): void
{ {
$this->CI->load->model($model); $this->CI->load->model($model);
@ -60,7 +62,7 @@ class Api {
/** /**
* Authorize the API request (Basic Auth or Bearer Token supported). * Authorize the API request (Basic Auth or Bearer Token supported).
*/ */
public function auth() public function auth(): void
{ {
try try
{ {
@ -84,7 +86,7 @@ class Api {
throw new RuntimeException('The provided credentials do not match any admin user!', 401, 'Unauthorized'); throw new RuntimeException('The provided credentials do not match any admin user!', 401, 'Unauthorized');
} }
} }
catch (Throwable $e) catch (Throwable)
{ {
$this->request_authentication(); $this->request_authentication();
} }
@ -93,7 +95,7 @@ class Api {
/** /**
* Returns the bearer token value. * Returns the bearer token value.
* *
* @return string * @return string|null
*/ */
protected function get_bearer_token(): ?string protected function get_bearer_token(): ?string
{ {
@ -153,7 +155,7 @@ class Api {
/** /**
* Sets request authentication headers. * Sets request authentication headers.
*/ */
public function request_authentication() #[NoReturn] public function request_authentication(): void
{ {
header('WWW-Authenticate: Basic realm="Easy!Appointments"'); header('WWW-Authenticate: Basic realm="Easy!Appointments"');
header('HTTP/1.0 401 Unauthorized'); header('HTTP/1.0 401 Unauthorized');

View file

@ -21,9 +21,9 @@
*/ */
class Availability { class Availability {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Availability constructor. * Availability constructor.
@ -126,7 +126,7 @@ class Availability {
$date_working_plan = $working_plan[$working_day] ?? NULL; $date_working_plan = $working_plan[$working_day] ?? NULL;
// Search if the $date is an custom availability period added outside the normal working plan. // Search if the $date is a custom availability period added outside the normal working plan.
if (isset($working_plan_exceptions[$date])) if (isset($working_plan_exceptions[$date]))
{ {
$date_working_plan = $working_plan_exceptions[$date]; $date_working_plan = $working_plan_exceptions[$date];
@ -145,7 +145,7 @@ class Availability {
$day_end = new DateTime($date_working_plan['end']); $day_end = new DateTime($date_working_plan['end']);
// Split the working plan to available time periods that do not contain the breaks in them. // Split the working plan to available time periods that do not contain the breaks in them.
foreach ($date_working_plan['breaks'] as $index => $break) foreach ($date_working_plan['breaks'] as $break)
{ {
$break_start = new DateTime($break['start']); $break_start = new DateTime($break['start']);
$break_end = new DateTime($break['end']); $break_end = new DateTime($break['end']);
@ -373,7 +373,7 @@ class Availability {
$date_working_plan = $working_plan[$working_day] ?? NULL; $date_working_plan = $working_plan[$working_day] ?? NULL;
// Search if the $date is an custom availability period added outside the normal working plan. // Search if the $date is a custom availability period added outside the normal working plan.
if (isset($working_plan_exceptions[$date])) if (isset($working_plan_exceptions[$date]))
{ {
$date_working_plan = $working_plan_exceptions[$date]; $date_working_plan = $working_plan_exceptions[$date];
@ -505,7 +505,6 @@ class Availability {
{ {
// break contains period // break contains period
$period['start'] = $break_end; $period['start'] = $break_end;
continue;
} }
} }
} }
@ -620,7 +619,7 @@ class Availability {
* @param array $available_hours * @param array $available_hours
* @param array $provider * @param array $provider
* *
* @return array|mixed * @return array
* *
* @throws Exception * @throws Exception
*/ */

View file

@ -20,9 +20,9 @@
*/ */
class Email_messages { class Email_messages {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Email_messages constructor. * Email_messages constructor.

View file

@ -22,19 +22,19 @@ use Google\Service\Calendar\Events;
*/ */
class Google_sync { class Google_sync {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* @var Google_Client * @var Google_Client
*/ */
protected $client; protected Google_Client $client;
/** /**
* @var Google_Service_Calendar * @var Google_Service_Calendar
*/ */
protected $service; protected Google_Service_Calendar $service;
/** /**
* Google_sync constructor. * Google_sync constructor.
@ -57,7 +57,7 @@ class Google_sync {
/** /**
* Initialize the client, so that existing execution errors are not passed from one provider to another. * Initialize the client, so that existing execution errors are not passed from one provider to another.
*/ */
public function initialize_clients() public function initialize_clients(): void
{ {
$http = new GuzzleHttp\Client([ $http = new GuzzleHttp\Client([
'verify' => FALSE 'verify' => FALSE
@ -126,7 +126,7 @@ class Google_sync {
* @param string $refresh_token The provider's refresh token. This value is stored in the database and used every * @param string $refresh_token The provider's refresh token. This value is stored in the database and used every
* time we need to make actions to his Google Calendar account. * time we need to make actions to his Google Calendar account.
*/ */
public function refresh_token(string $refresh_token) public function refresh_token(string $refresh_token): void
{ {
$this->initialize_clients(); $this->initialize_clients();
@ -247,7 +247,7 @@ class Google_sync {
* @param array $provider Provider data. * @param array $provider Provider data.
* @param string $google_event_id The Google Calendar event ID to be removed. * @param string $google_event_id The Google Calendar event ID to be removed.
*/ */
public function delete_appointment(array $provider, string $google_event_id) public function delete_appointment(array $provider, string $google_event_id): void
{ {
$this->service->events->delete($provider['settings']['google_calendar'], $google_event_id); $this->service->events->delete($provider['settings']['google_calendar'], $google_event_id);
} }
@ -318,7 +318,7 @@ class Google_sync {
* @param array $provider Provider data. * @param array $provider Provider data.
* @param string $google_event_id Google Calendar event ID to be removed. * @param string $google_event_id Google Calendar event ID to be removed.
*/ */
public function delete_unavailability(array $provider, string $google_event_id) public function delete_unavailability(array $provider, string $google_event_id): void
{ {
$this->service->events->delete($provider['settings']['google_calendar'], $google_event_id); $this->service->events->delete($provider['settings']['google_calendar'], $google_event_id);
} }

View file

@ -33,9 +33,9 @@ use Jsvrcek\ICS\Utility\Formatter;
*/ */
class Ics_file { class Ics_file {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Availability constructor. * Availability constructor.

View file

@ -22,9 +22,9 @@ require_once __DIR__ . '/../core/EA_Migration.php';
*/ */
class Instance { class Instance {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Installation constructor. * Installation constructor.
@ -47,7 +47,7 @@ class Instance {
* *
* @param string $type Provide "fresh" to revert previous migrations and start from the beginning or "up"/"down" to step. * @param string $type Provide "fresh" to revert previous migrations and start from the beginning or "up"/"down" to step.
*/ */
public function migrate(string $type = '') public function migrate(string $type = ''): void
{ {
$current_version = $this->CI->migration->current_version(); $current_version = $this->CI->migration->current_version();
@ -166,7 +166,7 @@ class Instance {
* *
* @throws Exception * @throws Exception
*/ */
public function backup(string $path = NULL) public function backup(string $path = NULL): void
{ {
$path = $path ?? APPPATH . '/../storage/backups'; $path = $path ?? APPPATH . '/../storage/backups';

View file

@ -20,9 +20,9 @@
*/ */
class Notifications { class Notifications {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Notifications constructor. * Notifications constructor.

View file

@ -21,9 +21,9 @@
*/ */
class Permissions { class Permissions {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Permissions constructor. * Permissions constructor.
@ -65,12 +65,12 @@ class Permissions {
return TRUE; return TRUE;
} }
if ($role_slug === DB_SLUG_PROVIDER && $limit_customer_access) if ($role_slug === DB_SLUG_PROVIDER)
{ {
return $this->CI->appointments_model->query()->where(['id_users_provider' => $user_id, 'id_users_customer' => $customer_id])->get()->num_rows() > 0; return $this->CI->appointments_model->query()->where(['id_users_provider' => $user_id, 'id_users_customer' => $customer_id])->get()->num_rows() > 0;
} }
if ($role_slug === DB_SLUG_SECRETARY && $limit_customer_access) if ($role_slug === DB_SLUG_SECRETARY)
{ {
$secretary = $this->CI->secretaries_model->find($user_id); $secretary = $this->CI->secretaries_model->find($user_id);

View file

@ -20,9 +20,9 @@
*/ */
class Synchronization { class Synchronization {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Synchronization constructor. * Synchronization constructor.
@ -45,9 +45,8 @@ class Synchronization {
* @param array $provider Provider record. * @param array $provider Provider record.
* @param array $customer Customer record. * @param array $customer Customer record.
* @param array $settings Required settings for the notification content. * @param array $settings Required settings for the notification content.
* @param bool|false $manage_mode True if the appointment is being edited.
*/ */
public function sync_appointment_saved(array $appointment, array $service, array $provider, array $customer, array $settings, bool $manage_mode = FALSE) public function sync_appointment_saved(array $appointment, array $service, array $provider, array $customer, array $settings): void
{ {
try try
{ {
@ -103,7 +102,7 @@ class Synchronization {
* @param array $appointment Appointment record. * @param array $appointment Appointment record.
* @param array $provider Provider record. * @param array $provider Provider record.
*/ */
public function sync_appointment_deleted(array $appointment, array $provider) public function sync_appointment_deleted(array $appointment, array $provider): void
{ {
try try
{ {
@ -137,7 +136,7 @@ class Synchronization {
* @param array $unavailability Unavailability record. * @param array $unavailability Unavailability record.
* @param array $provider Provider record. * @param array $provider Provider record.
*/ */
public function sync_unavailability_saved(array $unavailability, array $provider) public function sync_unavailability_saved(array $unavailability, array $provider): void
{ {
try try
{ {
@ -181,7 +180,7 @@ class Synchronization {
* @param array $unavailability Unavailability record. * @param array $unavailability Unavailability record.
* @param array $provider Provider record. * @param array $provider Provider record.
*/ */
public function sync_unavailability_deleted(array $unavailability, array $provider) public function sync_unavailability_deleted(array $unavailability, array $provider): void
{ {
try try
{ {
@ -213,9 +212,9 @@ class Synchronization {
* *
* @throws Exception * @throws Exception
*/ */
public function remove_appointment_on_provider_change($appointment_id) public function remove_appointment_on_provider_change($appointment_id): void
{ {
$existing_appointment = $this->CI->appointments_model->get_row($appointment_id); $existing_appointment = $this->CI->appointments_model->find($appointment_id);
$existing_google_id = $existing_appointment['id_google_calendar']; $existing_google_id = $existing_appointment['id_google_calendar'];
@ -223,7 +222,7 @@ class Synchronization {
if ( ! empty($existing_google_id) && (int)$existing_provider_id !== (int)$existing_appointment['id_users_provider']) if ( ! empty($existing_google_id) && (int)$existing_provider_id !== (int)$existing_appointment['id_users_provider'])
{ {
$existing_provider = $this->CI->providers_model->get_row($existing_provider_id); $existing_provider = $this->CI->providers_model->find($existing_provider_id);
if ($existing_provider['settings']['google_sync']) if ($existing_provider['settings']['google_sync'])
{ {

View file

@ -20,19 +20,19 @@
*/ */
class Timezones { class Timezones {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* @var string * @var string
*/ */
protected $default = 'UTC'; protected string $default = 'UTC';
/** /**
* @var array * @var array
*/ */
protected $timezones = [ protected array $timezones = [
'UTC' => [ 'UTC' => [
'UTC' => 'UTC' 'UTC' => 'UTC'
], ],
@ -517,31 +517,17 @@ class Timezones {
* *
* @return array * @return array
*/ */
public function to_grouped_array() public function to_grouped_array(): array
{ {
return $this->timezones; return $this->timezones;
} }
/**
* Returns the session timezone or the default timezone as a fallback.
*
* @return string
*/
public function get_session_timezone(): string
{
$default_timezone = $this->get_default_timezone();
$timezone = session('timezone');
return $timezone ?? $default_timezone;
}
/** /**
* Get the default timezone value of the current system. * Get the default timezone value of the current system.
* *
* @return string * @return string
*/ */
public function get_default_timezone() public function get_default_timezone(): string
{ {
return 'UTC'; return 'UTC';
} }
@ -557,7 +543,7 @@ class Timezones {
* *
* @throws Exception * @throws Exception
*/ */
public function convert($value, $from_timezone, $to_timezone) public function convert(string $value, string $from_timezone, string $to_timezone): string
{ {
if ( ! $to_timezone || $from_timezone === $to_timezone) if ( ! $to_timezone || $from_timezone === $to_timezone)
{ {
@ -582,11 +568,11 @@ class Timezones {
* *
* @return string|null * @return string|null
*/ */
public function get_timezone_name($value) public function get_timezone_name(string $value): ?string
{ {
$timezones = $this->to_array(); $timezones = $this->to_array();
return isset($timezones[$value]) ? $timezones[$value] : NULL; return $timezones[$value] ?? NULL;
} }
/** /**
@ -594,7 +580,7 @@ class Timezones {
* *
* @return array * @return array
*/ */
public function to_array() public function to_array(): array
{ {
return array_merge(...array_values($this->timezones)); return array_merge(...array_values($this->timezones));
} }

View file

@ -22,9 +22,9 @@ use GuzzleHttp\Client;
*/ */
class Webhooks_client { class Webhooks_client {
/** /**
* @var EA_Controller * @var EA_Controller|CI_Controller
*/ */
protected $CI; protected EA_Controller|CI_Controller $CI;
/** /**
* Webhook client constructor. * Webhook client constructor.
@ -56,7 +56,7 @@ class Webhooks_client {
foreach ($webhooks as $webhook) foreach ($webhooks as $webhook)
{ {
if (strpos($webhook['actions'], $action) !== FALSE) if (str_contains($webhook['actions'], $action))
{ {
$this->call($webhook, $action, $payload); $this->call($webhook, $action, $payload);
} }
@ -70,7 +70,7 @@ class Webhooks_client {
* @param string $action * @param string $action
* @param array $payload * @param array $payload
*/ */
private function call(array $webhook, string $action, array $payload) private function call(array $webhook, string $action, array $payload): void
{ {
try try
{ {

View file

@ -22,7 +22,7 @@ class Admins_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'id_roles' => 'integer', 'id_roles' => 'integer',
]; ];
@ -30,7 +30,7 @@ class Admins_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'firstName' => 'first_name', 'firstName' => 'first_name',
'lastName' => 'last_name', 'lastName' => 'last_name',
@ -55,6 +55,7 @@ class Admins_model extends EA_Model {
* @return int Returns the admin ID. * @return int Returns the admin ID.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
* @throws Exception
*/ */
public function save(array $admin): int public function save(array $admin): int
{ {
@ -153,7 +154,7 @@ class Admins_model extends EA_Model {
->where('roles.slug', DB_SLUG_ADMIN) ->where('roles.slug', DB_SLUG_ADMIN)
->where('users.email', $admin['email']) ->where('users.email', $admin['email'])
->where('users.id !=', $admin_id) ->where('users.id !=', $admin_id)
->where('users.delete_datetime', NULL) ->where('users.delete_datetime')
->get() ->get()
->num_rows(); ->num_rows();
@ -194,7 +195,7 @@ class Admins_model extends EA_Model {
* *
* @return int Returns the admin ID. * @return int Returns the admin ID.
* *
* @throws RuntimeException * @throws RuntimeException|Exception
*/ */
protected function insert(array $admin): int protected function insert(array $admin): int
{ {
@ -231,6 +232,7 @@ class Admins_model extends EA_Model {
* @return int Returns the admin ID. * @return int Returns the admin ID.
* *
* @throws RuntimeException * @throws RuntimeException
* @throws Exception
*/ */
protected function update(array $admin): int protected function update(array $admin): int
{ {
@ -378,7 +380,7 @@ class Admins_model extends EA_Model {
/** /**
* Get all admins that match the provided criteria. * Get all admins that match the provided criteria.
* *
* @param array|string $where Where conditions. * @param array|string|null $where Where conditions.
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -386,7 +388,7 @@ class Admins_model extends EA_Model {
* *
* @return array Returns an array of admins. * @return array Returns an array of admins.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
$role_id = $this->get_admin_role_id(); $role_id = $this->get_admin_role_id();
@ -474,9 +476,9 @@ class Admins_model extends EA_Model {
* *
* @param int $admin_id Admin ID. * @param int $admin_id Admin ID.
* @param string $name Setting name. * @param string $name Setting name.
* @param mixed $value Setting value. * @param mixed|null $value Setting value.
*/ */
public function set_setting(int $admin_id, string $name, $value = NULL) public function set_setting(int $admin_id, string $name, mixed $value = NULL)
{ {
if ( ! $this->db->update('user_settings', [$name => $value], ['id_users' => $admin_id])) if ( ! $this->db->update('user_settings', [$name => $value], ['id_users' => $admin_id]))
{ {

View file

@ -20,7 +20,7 @@ class Appointments_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'is_unavailability' => 'boolean', 'is_unavailability' => 'boolean',
'id_users_provider' => 'integer', 'id_users_provider' => 'integer',
@ -31,7 +31,7 @@ class Appointments_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'book' => 'book_datetime', 'book' => 'book_datetime',
'start' => 'start_datetime', 'start' => 'start_datetime',
@ -306,7 +306,7 @@ class Appointments_model extends EA_Model {
/** /**
* Get all appointments that match the provided criteria. * Get all appointments that match the provided criteria.
* *
* @param array|string $where Where conditions. * @param array|string|null $where Where conditions.
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -314,7 +314,7 @@ class Appointments_model extends EA_Model {
* *
* @return array Returns an array of appointments. * @return array Returns an array of appointments.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {

View file

@ -22,14 +22,14 @@ class Categories_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
]; ];
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'name' => 'name', 'name' => 'name',
'description' => 'description', 'description' => 'description',
@ -225,7 +225,7 @@ class Categories_model extends EA_Model {
/** /**
* Get all services that match the provided criteria. * Get all services that match the provided criteria.
* *
* @param array|string $where Where conditions * @param array|string|null $where Where conditions
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -233,7 +233,7 @@ class Categories_model extends EA_Model {
* *
* @return array Returns an array of service categories. * @return array Returns an array of service categories.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {

View file

@ -22,7 +22,7 @@ class Consents_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
]; ];
@ -130,7 +130,7 @@ class Consents_model extends EA_Model {
} }
else else
{ {
return $this->db->update('consents', ['delete_datetime' => date('Y-m-d H:i:s')], ['id' => $consent_id]); $this->db->update('consents', ['delete_datetime' => date('Y-m-d H:i:s')], ['id' => $consent_id]);
} }
} }
@ -207,7 +207,7 @@ class Consents_model extends EA_Model {
/** /**
* Get all consents that match the provided criteria. * Get all consents that match the provided criteria.
* *
* @param array|string $where Where conditions. * @param array|string|null $where Where conditions.
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -215,7 +215,7 @@ class Consents_model extends EA_Model {
* *
* @return array Returns an array of consents. * @return array Returns an array of consents.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {

View file

@ -22,7 +22,7 @@ class Customers_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'id_roles' => 'integer', 'id_roles' => 'integer',
]; ];
@ -30,7 +30,7 @@ class Customers_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'firstName' => 'first_name', 'firstName' => 'first_name',
'lastName' => 'last_name', 'lastName' => 'last_name',
@ -133,7 +133,7 @@ class Customers_model extends EA_Model {
->select() ->select()
->from('users') ->from('users')
->join('roles', 'roles.id = users.id_roles', 'inner') ->join('roles', 'roles.id = users.id_roles', 'inner')
->where('users.delete_datetime', NULL) ->where('users.delete_datetime')
->where('roles.slug', DB_SLUG_CUSTOMER) ->where('roles.slug', DB_SLUG_CUSTOMER)
->where('users.email', $customer['email']) ->where('users.email', $customer['email'])
->where('users.id !=', $customer_id) ->where('users.id !=', $customer_id)
@ -285,7 +285,7 @@ class Customers_model extends EA_Model {
/** /**
* Get all customers that match the provided criteria. * Get all customers that match the provided criteria.
* *
* @param array|string $where Where conditions. * @param array|string|null $where Where conditions.
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -293,7 +293,7 @@ class Customers_model extends EA_Model {
* *
* @return array Returns an array of customers. * @return array Returns an array of customers.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
$role_id = $this->get_customer_role_id(); $role_id = $this->get_customer_role_id();
@ -361,7 +361,7 @@ class Customers_model extends EA_Model {
->from('users') ->from('users')
->join('roles', 'roles.id = users.id_roles', 'inner') ->join('roles', 'roles.id = users.id_roles', 'inner')
->where('users.email', $customer['email']) ->where('users.email', $customer['email'])
->where('users.delete_datetime', NULL) ->where('users.delete_datetime')
->where('roles.slug', DB_SLUG_CUSTOMER) ->where('roles.slug', DB_SLUG_CUSTOMER)
->get() ->get()
->num_rows(); ->num_rows();
@ -391,7 +391,7 @@ class Customers_model extends EA_Model {
->from('users') ->from('users')
->join('roles', 'roles.id = users.id_roles', 'inner') ->join('roles', 'roles.id = users.id_roles', 'inner')
->where('users.email', $customer['email']) ->where('users.email', $customer['email'])
->where('users.delete_datetime', NULL) ->where('users.delete_datetime')
->where('roles.slug', DB_SLUG_CUSTOMER) ->where('roles.slug', DB_SLUG_CUSTOMER)
->get() ->get()
->row_array(); ->row_array();

View file

@ -22,7 +22,7 @@ class Providers_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'is_private' => 'boolean', 'is_private' => 'boolean',
'id_roles' => 'integer', 'id_roles' => 'integer',
@ -31,7 +31,7 @@ class Providers_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'firstName' => 'first_name', 'firstName' => 'first_name',
'lastName' => 'last_name', 'lastName' => 'last_name',
@ -57,6 +57,7 @@ class Providers_model extends EA_Model {
* @return int Returns the provider ID. * @return int Returns the provider ID.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
* @throws Exception
*/ */
public function save(array $provider): int public function save(array $provider): int
{ {
@ -168,7 +169,7 @@ class Providers_model extends EA_Model {
->where('roles.slug', DB_SLUG_PROVIDER) ->where('roles.slug', DB_SLUG_PROVIDER)
->where('users.email', $provider['email']) ->where('users.email', $provider['email'])
->where('users.id !=', $provider_id) ->where('users.id !=', $provider_id)
->where('users.delete_datetime', NULL) ->where('users.delete_datetime')
->get() ->get()
->num_rows(); ->num_rows();
@ -209,7 +210,7 @@ class Providers_model extends EA_Model {
* *
* @return int Returns the provider ID. * @return int Returns the provider ID.
* *
* @throws RuntimeException * @throws RuntimeException|Exception
*/ */
protected function insert(array $provider): int protected function insert(array $provider): int
{ {
@ -248,7 +249,7 @@ class Providers_model extends EA_Model {
* *
* @return int Returns the provider ID. * @return int Returns the provider ID.
* *
* @throws RuntimeException * @throws RuntimeException|Exception
*/ */
protected function update(array $provider): int protected function update(array $provider): int
{ {
@ -398,7 +399,7 @@ class Providers_model extends EA_Model {
/** /**
* Get all providers that match the provided criteria. * Get all providers that match the provided criteria.
* *
* @param array|string $where Where conditions * @param array|string|null $where Where conditions
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -406,7 +407,7 @@ class Providers_model extends EA_Model {
* *
* @return array Returns an array of providers. * @return array Returns an array of providers.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
$role_id = $this->get_provider_role_id(); $role_id = $this->get_provider_role_id();
@ -519,9 +520,9 @@ class Providers_model extends EA_Model {
* *
* @param int $provider_id Provider ID. * @param int $provider_id Provider ID.
* @param string $name Setting name. * @param string $name Setting name.
* @param mixed $value Setting value. * @param mixed|null $value Setting value.
*/ */
public function set_setting(int $provider_id, string $name, $value = NULL) public function set_setting(int $provider_id, string $name, mixed $value = NULL)
{ {
if ( ! $this->db->update('user_settings', [$name => $value], ['id_users' => $provider_id])) if ( ! $this->db->update('user_settings', [$name => $value], ['id_users' => $provider_id]))
{ {
@ -579,6 +580,7 @@ class Providers_model extends EA_Model {
* @param array $working_plan_exception Associative array with the working plan exception data. * @param array $working_plan_exception Associative array with the working plan exception data.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
* @throws Exception
*/ */
public function save_working_plan_exception(int $provider_id, string $date, array $working_plan_exception) public function save_working_plan_exception(int $provider_id, string $date, array $working_plan_exception)
{ {
@ -793,22 +795,18 @@ class Providers_model extends EA_Model {
foreach ($resources as $resource) foreach ($resources as $resource)
{ {
switch ($resource) $provider['services'] = match ($resource)
{ {
case 'services': 'services' => $this
$provider['services'] = $this
->db ->db
->select('services.*') ->select('services.*')
->from('services') ->from('services')
->join('services_providers', 'services_providers.id_services = services.id', 'inner') ->join('services_providers', 'services_providers.id_services = services.id', 'inner')
->where('id_users', $provider['id']) ->where('id_users', $provider['id'])
->get() ->get()
->result_array(); ->result_array(),
break; default => throw new InvalidArgumentException('The requested provider relation is not supported: ' . $resource),
};
default:
throw new InvalidArgumentException('The requested provider relation is not supported: ' . $resource);
}
} }
} }

View file

@ -22,7 +22,7 @@ class Roles_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'is_admin' => 'boolean', 'is_admin' => 'boolean',
'appointments' => 'integer', 'appointments' => 'integer',
@ -223,7 +223,7 @@ class Roles_model extends EA_Model {
/** /**
* Get all roles that match the provided criteria. * Get all roles that match the provided criteria.
* *
* @param array|string $where Where conditions * @param array|string|null $where Where conditions
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -231,7 +231,7 @@ class Roles_model extends EA_Model {
* *
* @return array Returns an array of roles. * @return array Returns an array of roles.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {

View file

@ -22,7 +22,7 @@ class Secretaries_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'id_roles' => 'integer', 'id_roles' => 'integer',
]; ];
@ -30,7 +30,7 @@ class Secretaries_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'firstName' => 'first_name', 'firstName' => 'first_name',
'lastName' => 'last_name', 'lastName' => 'last_name',
@ -55,6 +55,7 @@ class Secretaries_model extends EA_Model {
* @return int Returns the secretary ID. * @return int Returns the secretary ID.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
* @throws Exception
*/ */
public function save(array $secretary): int public function save(array $secretary): int
{ {
@ -166,7 +167,7 @@ class Secretaries_model extends EA_Model {
->where('roles.slug', DB_SLUG_SECRETARY) ->where('roles.slug', DB_SLUG_SECRETARY)
->where('users.email', $secretary['email']) ->where('users.email', $secretary['email'])
->where('users.id !=', $secretary_id) ->where('users.id !=', $secretary_id)
->where('users.delete_datetime', NULL) ->where('users.delete_datetime')
->get() ->get()
->num_rows(); ->num_rows();
@ -207,7 +208,7 @@ class Secretaries_model extends EA_Model {
* *
* @return int Returns the secretary ID. * @return int Returns the secretary ID.
* *
* @throws RuntimeException * @throws RuntimeException|Exception
*/ */
protected function insert(array $secretary): int protected function insert(array $secretary): int
{ {
@ -247,7 +248,7 @@ class Secretaries_model extends EA_Model {
* *
* @return int Returns the secretary ID. * @return int Returns the secretary ID.
* *
* @throws RuntimeException * @throws RuntimeException|Exception
*/ */
protected function update(array $secretary): int protected function update(array $secretary): int
{ {
@ -393,7 +394,7 @@ class Secretaries_model extends EA_Model {
/** /**
* Get all secretaries that match the provided criteria. * Get all secretaries that match the provided criteria.
* *
* @param array|string $where Where conditions * @param array|string|null $where Where conditions
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -401,7 +402,7 @@ class Secretaries_model extends EA_Model {
* *
* @return array Returns an array of secretaries. * @return array Returns an array of secretaries.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
$role_id = $this->get_secretary_role_id(); $role_id = $this->get_secretary_role_id();
@ -496,9 +497,9 @@ class Secretaries_model extends EA_Model {
* *
* @param int $secretary_id Secretary ID. * @param int $secretary_id Secretary ID.
* @param string $name Setting name. * @param string $name Setting name.
* @param mixed $value Setting value. * @param mixed|null $value Setting value.
*/ */
public function set_setting(int $secretary_id, string $name, $value = NULL) public function set_setting(int $secretary_id, string $name, mixed $value = NULL)
{ {
if ( ! $this->db->update('user_settings', [$name => $value], ['id_users' => $secretary_id])) if ( ! $this->db->update('user_settings', [$name => $value], ['id_users' => $secretary_id]))
{ {
@ -644,22 +645,18 @@ class Secretaries_model extends EA_Model {
foreach ($resources as $resource) foreach ($resources as $resource)
{ {
switch ($resource) $secretary['providers'] = match ($resource)
{ {
case 'providers': 'providers' => $this
$secretary['providers'] = $this
->db ->db
->select('users.*') ->select('users.*')
->from('users') ->from('users')
->join('secretaries_providers', 'secretaries_providers.id_users_provider = users.id', 'inner') ->join('secretaries_providers', 'secretaries_providers.id_users_provider = users.id', 'inner')
->where('id_users_secretary', $secretary['id']) ->where('id_users_secretary', $secretary['id'])
->get() ->get()
->result_array(); ->result_array(),
break; default => throw new InvalidArgumentException('The requested secretary relation is not supported: ' . $resource),
};
default:
throw new InvalidArgumentException('The requested secretary relation is not supported: ' . $resource);
}
} }
} }

View file

@ -22,7 +22,7 @@ class Services_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'price' => 'float', 'price' => 'float',
'attendants_number' => 'integer', 'attendants_number' => 'integer',
@ -33,7 +33,7 @@ class Services_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'name' => 'name', 'name' => 'name',
'duration' => 'duration', 'duration' => 'duration',
@ -281,7 +281,7 @@ class Services_model extends EA_Model {
/** /**
* Get all services that match the provided criteria. * Get all services that match the provided criteria.
* *
* @param array|string $where Where conditions * @param array|string|null $where Where conditions
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -289,7 +289,7 @@ class Services_model extends EA_Model {
* *
* @return array Returns an array of services. * @return array Returns an array of services.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {
@ -417,20 +417,16 @@ class Services_model extends EA_Model {
foreach ($resources as $resource) foreach ($resources as $resource)
{ {
switch ($resource) $service['category'] = match ($resource)
{ {
case 'category': 'category' => $this
$service['category'] = $this
->db ->db
->get_where('categories', [ ->get_where('categories', [
'id' => $service['id_categories'] ?? $service['categoryId'] ?? NULL 'id' => $service['id_categories'] ?? $service['categoryId'] ?? NULL
]) ])
->row_array(); ->row_array(),
break; default => throw new InvalidArgumentException('The requested appointment relation is not supported: ' . $resource),
};
default:
throw new InvalidArgumentException('The requested appointment relation is not supported: ' . $resource);
}
} }
} }

View file

@ -22,14 +22,14 @@ class Settings_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
]; ];
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'name' => 'name', 'name' => 'name',
'value' => 'value', 'value' => 'value',
]; ];
@ -224,7 +224,7 @@ class Settings_model extends EA_Model {
/** /**
* Get all settings that match the provided criteria. * Get all settings that match the provided criteria.
* *
* @param array|string $where Where conditions * @param array|string|null $where Where conditions
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -232,7 +232,7 @@ class Settings_model extends EA_Model {
* *
* @return array Returns an array of settings. * @return array Returns an array of settings.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {

View file

@ -20,7 +20,7 @@ class Unavailabilities_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'is_unavailability' => 'boolean', 'is_unavailability' => 'boolean',
'id_users_provider' => 'integer', 'id_users_provider' => 'integer',
@ -31,7 +31,7 @@ class Unavailabilities_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'book' => 'book_datetime', 'book' => 'book_datetime',
'start' => 'start_datetime', 'start' => 'start_datetime',
@ -275,7 +275,7 @@ class Unavailabilities_model extends EA_Model {
/** /**
* Get all unavailabilities that match the provided criteria. * Get all unavailabilities that match the provided criteria.
* *
* @param array|string $where Where conditions. * @param array|string|null $where Where conditions.
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -283,7 +283,7 @@ class Unavailabilities_model extends EA_Model {
* *
* @return array Returns an array of unavailabilities. * @return array Returns an array of unavailabilities.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {
@ -386,20 +386,16 @@ class Unavailabilities_model extends EA_Model {
foreach ($resources as $resource) foreach ($resources as $resource)
{ {
switch ($resource) $unavailability['provider'] = match ($resource)
{ {
case 'provider': 'provider' => $this
$unavailability['provider'] = $this
->db ->db
->get_where('users', [ ->get_where('users', [
'id' => $unavailability['id_users_provider'] ?? $unavailability['providerId'] ?? NULL 'id' => $unavailability['id_users_provider'] ?? $unavailability['providerId'] ?? NULL
]) ])
->row_array(); ->row_array(),
break; default => throw new InvalidArgumentException('The requested unavailability relation is not supported: ' . $resource),
};
default:
throw new InvalidArgumentException('The requested unavailability relation is not supported: ' . $resource);
}
} }
} }

View file

@ -22,7 +22,7 @@ class Users_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'id_roles' => 'integer', 'id_roles' => 'integer',
]; ];
@ -30,7 +30,7 @@ class Users_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'firstName' => 'first_name', 'firstName' => 'first_name',
'lastName' => 'last_name', 'lastName' => 'last_name',
@ -55,6 +55,7 @@ class Users_model extends EA_Model {
* @return int Returns the user ID. * @return int Returns the user ID.
* *
* @throws InvalidArgumentException * @throws InvalidArgumentException
* @throws Exception
*/ */
public function save(array $user): int public function save(array $user): int
{ {
@ -109,7 +110,7 @@ class Users_model extends EA_Model {
* *
* @return int Returns the user ID. * @return int Returns the user ID.
* *
* @throws RuntimeException * @throws RuntimeException|Exception
*/ */
protected function insert(array $user): int protected function insert(array $user): int
{ {
@ -140,7 +141,7 @@ class Users_model extends EA_Model {
* *
* @return int Returns the user ID. * @return int Returns the user ID.
* *
* @throws RuntimeException * @throws RuntimeException|Exception
*/ */
protected function update(array $user): int protected function update(array $user): int
{ {
@ -274,7 +275,7 @@ class Users_model extends EA_Model {
/** /**
* Get all users that match the provided criteria. * Get all users that match the provided criteria.
* *
* @param array|string $where Where conditions * @param array|string|null $where Where conditions
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -282,7 +283,7 @@ class Users_model extends EA_Model {
* *
* @return array Returns an array of users. * @return array Returns an array of users.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {

View file

@ -22,7 +22,7 @@ class Webhooks_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $casts = [ protected array $casts = [
'id' => 'integer', 'id' => 'integer',
'is_active' => 'boolean', 'is_active' => 'boolean',
'is_ssl_verified' => 'boolean', 'is_ssl_verified' => 'boolean',
@ -31,7 +31,7 @@ class Webhooks_model extends EA_Model {
/** /**
* @var array * @var array
*/ */
protected $api_resource = [ protected array $api_resource = [
'id' => 'id', 'id' => 'id',
'name' => 'name', 'name' => 'name',
'url' => 'url', 'url' => 'url',
@ -222,7 +222,7 @@ class Webhooks_model extends EA_Model {
/** /**
* Get all webhooks that match the provided criteria. * Get all webhooks that match the provided criteria.
* *
* @param array|string $where Where conditions. * @param array|string|null $where Where conditions.
* @param int|null $limit Record limit. * @param int|null $limit Record limit.
* @param int|null $offset Record offset. * @param int|null $offset Record offset.
* @param string|null $order_by Order by. * @param string|null $order_by Order by.
@ -230,7 +230,7 @@ class Webhooks_model extends EA_Model {
* *
* @return array Returns an array of webhooks. * @return array Returns an array of webhooks.
*/ */
public function get($where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array public function get(array|string $where = NULL, int $limit = NULL, int $offset = NULL, string $order_by = NULL, bool $with_trashed = FALSE): array
{ {
if ($where !== NULL) if ($where !== NULL)
{ {