2020-11-16 11:29:36 +03:00
|
|
|
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
|
|
|
|
|
|
|
/* ----------------------------------------------------------------------------
|
2022-01-18 15:05:42 +03:00
|
|
|
* Easy!Appointments - Online Appointment Scheduler
|
2020-11-16 11:29:36 +03:00
|
|
|
*
|
|
|
|
* @package EasyAppointments
|
|
|
|
* @author A.Tselegidis <alextselegidis@gmail.com>
|
2021-12-18 19:43:45 +03:00
|
|
|
* @copyright Copyright (c) Alex Tselegidis
|
2020-11-16 11:29:36 +03:00
|
|
|
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
|
|
|
|
* @link https://easyappointments.org
|
|
|
|
* @since v1.4.0
|
|
|
|
* ---------------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
2023-03-13 09:42:06 +03:00
|
|
|
* Easy!Appointments controller.
|
2020-11-16 11:29:36 +03:00
|
|
|
*
|
2021-10-29 14:04:26 +03:00
|
|
|
* @property EA_Benchmark $benchmark
|
|
|
|
* @property EA_Cache $cache
|
|
|
|
* @property EA_Calendar $calendar
|
|
|
|
* @property EA_Config $config
|
|
|
|
* @property EA_DB_forge $dbforge
|
|
|
|
* @property EA_DB_query_builder $db
|
|
|
|
* @property EA_DB_utility $dbutil
|
|
|
|
* @property EA_Email $email
|
|
|
|
* @property EA_Encrypt $encrypt
|
|
|
|
* @property EA_Encryption $encryption
|
|
|
|
* @property EA_Exceptions $exceptions
|
|
|
|
* @property EA_Hooks $hooks
|
2021-10-29 13:54:49 +03:00
|
|
|
* @property EA_Input $input
|
2021-10-29 14:04:26 +03:00
|
|
|
* @property EA_Lang $lang
|
|
|
|
* @property EA_Loader $load
|
|
|
|
* @property EA_Log $log
|
|
|
|
* @property EA_Migration $migration
|
|
|
|
* @property EA_Output $output
|
|
|
|
* @property EA_Profiler $profiler
|
|
|
|
* @property EA_Router $router
|
|
|
|
* @property EA_Security $security
|
|
|
|
* @property EA_Session $session
|
|
|
|
* @property EA_Upload $upload
|
|
|
|
* @property EA_URI $uri
|
2020-12-04 13:58:31 +03:00
|
|
|
*
|
2020-11-16 11:29:36 +03:00
|
|
|
* @property Admins_model $admins_model
|
|
|
|
* @property Appointments_model $appointments_model
|
2023-10-26 05:54:13 +03:00
|
|
|
* @property Service_categories_model $service_categories_model
|
2020-11-16 11:29:36 +03:00
|
|
|
* @property Consents_model $consents_model
|
|
|
|
* @property Customers_model $customers_model
|
|
|
|
* @property Providers_model $providers_model
|
|
|
|
* @property Roles_model $roles_model
|
|
|
|
* @property Secretaries_model $secretaries_model
|
|
|
|
* @property Services_model $services_model
|
|
|
|
* @property Settings_model $settings_model
|
2021-11-06 16:56:12 +03:00
|
|
|
* @property Unavailabilities_model $unavailabilities_model
|
2021-10-27 11:06:58 +03:00
|
|
|
* @property Users_model $users_model
|
2022-06-19 20:05:45 +03:00
|
|
|
* @property Webhooks_model $webhooks_model
|
2023-11-03 20:25:23 +03:00
|
|
|
* @property Blocked_periods_model $blocked_periods_model
|
2020-11-16 11:29:36 +03:00
|
|
|
*
|
2021-10-28 14:29:15 +03:00
|
|
|
* @property Accounts $accounts
|
2021-11-02 12:45:05 +03:00
|
|
|
* @property Api $api
|
2020-11-16 11:29:36 +03:00
|
|
|
* @property Availability $availability
|
2021-11-06 18:11:44 +03:00
|
|
|
* @property Email_messages $email_messages
|
2022-02-23 16:54:41 +03:00
|
|
|
* @property Captcha_builder $captcha_builder
|
2020-11-16 11:29:36 +03:00
|
|
|
* @property Google_Sync $google_sync
|
2024-05-12 15:24:58 +03:00
|
|
|
* @property Caldav_Sync $caldav_sync
|
2020-11-16 11:29:36 +03:00
|
|
|
* @property Ics_file $ics_file
|
2021-10-29 11:44:01 +03:00
|
|
|
* @property Instance $instance
|
2020-11-16 11:29:36 +03:00
|
|
|
* @property Notifications $notifications
|
2022-05-27 10:24:01 +03:00
|
|
|
* @property Permissions $permissions
|
2020-11-16 11:29:36 +03:00
|
|
|
* @property Synchronization $synchronization
|
|
|
|
* @property Timezones $timezones
|
2022-06-19 20:05:45 +03:00
|
|
|
* @property Webhooks_client $webhooks_client
|
2020-11-16 11:29:36 +03:00
|
|
|
*/
|
2023-11-29 12:24:09 +03:00
|
|
|
class EA_Controller extends CI_Controller
|
|
|
|
{
|
2020-12-02 21:04:06 +03:00
|
|
|
/**
|
|
|
|
* EA_Controller constructor.
|
|
|
|
*/
|
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
parent::__construct();
|
|
|
|
|
2023-03-13 09:42:06 +03:00
|
|
|
$this->load->library('accounts');
|
|
|
|
|
|
|
|
$this->ensure_user_exists();
|
|
|
|
|
2020-12-02 21:04:06 +03:00
|
|
|
$this->configure_language();
|
2023-03-13 09:42:06 +03:00
|
|
|
|
2023-01-26 11:17:45 +03:00
|
|
|
$this->load_common_html_vars();
|
2023-03-13 09:42:06 +03:00
|
|
|
|
2021-12-17 12:53:08 +03:00
|
|
|
$this->load_common_script_vars();
|
2023-03-13 09:42:06 +03:00
|
|
|
|
2022-02-23 16:54:41 +03:00
|
|
|
rate_limit($this->input->ip_address());
|
2020-12-02 21:04:06 +03:00
|
|
|
}
|
|
|
|
|
2023-11-29 12:24:09 +03:00
|
|
|
private function ensure_user_exists()
|
|
|
|
{
|
|
|
|
$user_id = session('user_id');
|
|
|
|
|
|
|
|
if (!$user_id) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!$this->accounts->does_account_exist($user_id)) {
|
|
|
|
session_destroy();
|
|
|
|
|
|
|
|
abort(403, 'Forbidden');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-12-02 21:04:06 +03:00
|
|
|
/**
|
2020-12-08 14:22:46 +03:00
|
|
|
* Configure the language.
|
2020-12-02 21:04:06 +03:00
|
|
|
*/
|
|
|
|
private function configure_language()
|
|
|
|
{
|
2021-10-28 14:29:15 +03:00
|
|
|
$session_language = session('language');
|
|
|
|
|
2023-11-29 12:24:09 +03:00
|
|
|
if ($session_language) {
|
|
|
|
$language_codes = config('language_codes');
|
|
|
|
|
2023-07-03 11:27:23 +03:00
|
|
|
config([
|
|
|
|
'language' => $session_language,
|
2023-12-22 13:35:41 +03:00
|
|
|
'language_code' => array_search($session_language, $language_codes) ?: 'en',
|
2023-07-03 11:27:23 +03:00
|
|
|
]);
|
2020-12-02 21:04:06 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
$this->lang->load('translations');
|
|
|
|
}
|
2021-12-14 09:59:11 +03:00
|
|
|
|
2023-01-26 11:17:45 +03:00
|
|
|
/**
|
|
|
|
* Load common script vars for all requests.
|
|
|
|
*/
|
|
|
|
private function load_common_html_vars()
|
|
|
|
{
|
|
|
|
html_vars([
|
|
|
|
'base_url' => config('base_url'),
|
|
|
|
'index_page' => config('index_page'),
|
|
|
|
'available_languages' => config('available_languages'),
|
|
|
|
'language' => $this->lang->language,
|
2023-12-22 13:35:41 +03:00
|
|
|
'csrf_token' => $this->security->get_csrf_hash(),
|
2023-01-26 11:17:45 +03:00
|
|
|
]);
|
|
|
|
}
|
2023-03-13 09:42:06 +03:00
|
|
|
|
2021-12-14 09:59:11 +03:00
|
|
|
/**
|
2023-03-13 09:42:06 +03:00
|
|
|
* Load common script vars for all requests.
|
2021-12-14 09:59:11 +03:00
|
|
|
*/
|
2021-12-17 12:53:08 +03:00
|
|
|
private function load_common_script_vars()
|
2021-12-14 09:59:11 +03:00
|
|
|
{
|
2021-12-17 12:53:08 +03:00
|
|
|
script_vars([
|
2021-12-14 09:59:11 +03:00
|
|
|
'base_url' => config('base_url'),
|
|
|
|
'index_page' => config('index_page'),
|
2022-01-18 09:20:04 +03:00
|
|
|
'available_languages' => config('available_languages'),
|
2021-12-16 10:45:55 +03:00
|
|
|
'csrf_token' => $this->security->get_csrf_hash(),
|
2023-07-17 08:50:55 +03:00
|
|
|
'language' => config('language'),
|
2023-12-22 13:35:41 +03:00
|
|
|
'language_code' => config('language_code'),
|
2021-12-14 09:59:11 +03:00
|
|
|
]);
|
|
|
|
}
|
2020-11-16 11:29:36 +03:00
|
|
|
}
|