Merge branch 'hotfix'

This commit is contained in:
alext 2018-04-25 13:57:08 +02:00
commit ae77d72458
178 changed files with 728 additions and 519 deletions

View file

@ -39,6 +39,6 @@ class Config {
}
```
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*
[Back](readme.md)

View file

@ -54,6 +54,6 @@ You get this warning because PHP is not configured with a timezone setting. This
`date_default_timezone_set('America/Los_Angeles'); // Use your own timezone string.`
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*
[Back](readme.md)

View file

@ -20,6 +20,6 @@ You are more than welcome to help with the translation progress of the user inte
It would be much appreciated if you would take 5 minutes of your time to fill this small form on your experience with Easy!Appointments. User feedback is very important and will help with the future planning of the project. Fill the [E!A Feedback Form](https://docs.google.com/forms/d/15dw1jl7lUgw4q-XXMn13Gx_e8zJxAiyWYMOdqtZqIHU/viewform).
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*
[Back](readme.md)

View file

@ -49,6 +49,6 @@ Google Developers https://developers.google.com/google-apps/calendar
E!A Support Group https://groups.google.com/forum/#!forum/easy-appointments
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*
[Back](readme.md)

View file

@ -29,6 +29,6 @@ Finally just add a link in your website that points to your Easy!Appointments in
Happy Bookin'!
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*
[Back](readme.md)

View file

@ -14,6 +14,6 @@ Easy!Appointments is based upon CodeIgniter (PHP Framework) and it uses its buil
Follow these steps in order to add or adjust your translations and modify the message of the user interface of Easy!Appointments. If you want contribute to the translation process of Easy!Appointments please read the [Get Involved](https://github.com/alextselegidis/easyappointments/wiki/Get-Involved!) wiki page for more information. Please share your translations with the user community.
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*
[Back](readme.md)

View file

@ -10,4 +10,4 @@ Welcome to the documentation pages of Easy!Appointments. Navigate through the av
- [Docker](docker.md)
- [FAQ](faq.md)
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*

View file

@ -443,6 +443,6 @@ fastcgi_param PHP_AUTH_PW $http_authorization;
[[Source]](http://serverfault.com/a/520943)
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*
[Back](readme.md)

View file

@ -16,6 +16,6 @@ Version v1.2 introduces two new folders in the root directory of the project, th
Many core files were changed in v1.1 and it would be better if you replace all the Easy!Appointments files of version 1.0 with the new ones. Use the data of the old `configuration.php` file in the new `config.php` and open the `http://url-to-ea-installation/index.php/backend/update` as already mentioned. Your new version should work just fine!
*This document applies to Easy!Appointments v1.3.0.*
*This document applies to Easy!Appointments v1.3.1.*
[Back](readme.md)

8
package-lock.json generated
View file

@ -1090,7 +1090,7 @@
"integrity": "sha1-C5tiseaX1S05wRGK+eTkEeUEVZA=",
"requires": {
"jquery": "3.2.1",
"moment": "2.19.1"
"moment": "2.21.0"
},
"dependencies": {
"jquery": {
@ -2177,9 +2177,9 @@
}
},
"moment": {
"version": "2.19.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.19.1.tgz",
"integrity": "sha1-VtoaLRy/AdOLfhr8McELz6GSkWc="
"version": "2.21.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz",
"integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ=="
},
"ms": {
"version": "2.0.0",

View file

@ -36,6 +36,7 @@
"fullcalendar": "^3.6.1",
"jquery": "^3.0.0",
"jquery-ui": "^1.12.0",
"moment": "^2.21.0",
"qtip2": "^3.0.3",
"sticky-table-headers": "^0.1.19"
}

View file

@ -3,7 +3,7 @@
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.5/phpunit.xsd"
backupGlobals="true"
backupStaticAttributes="false"
bootstrap="bootstrap.php"
bootstrap="test/php/bootstrap.php"
cacheTokens="false"
colors="false"
convertErrorsToExceptions="true"
@ -25,7 +25,7 @@
verbose="false">
<filter>
<whitelist>
<directory suffix=".php">../src/engine</directory>
<directory suffix=".php">src/engine</directory>
</whitelist>
</filter>

View file

@ -1,52 +0,0 @@
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
INSERT INTO `ea_roles` (`id`, `name`, `slug`, `is_admin`, `appointments`, `customers`, `services`, `users`, `system_settings`, `user_settings`) VALUES
(1, 'Administrator', 'admin', 1, 15, 15, 15, 15, 15, 15),
(2, 'Provider', 'provider', 0, 15, 15, 0, 0, 0, 15),
(3, 'Customer', 'customer', 0, 0, 0, 0, 0, 0, 0),
(4, 'Secretary', 'secretary', 0, 15, 15, 0, 0, 0, 15);
INSERT INTO `ea_secretaries_providers` (`id_users_secretary`, `id_users_provider`) VALUES
(87, 85);
INSERT INTO `ea_services` (`id`, `name`, `duration`, `price`, `currency`, `description`, `availabilities_type`, `attendants_number`, `id_service_categories`) VALUES
(13, 'Test Service', 30, '50.00', 'Euro', 'This is a test service automatically inserted by the installer.', 'flexible', 1, NULL);
INSERT INTO `ea_services_providers` (`id_users`, `id_services`) VALUES
(85, 13);
INSERT INTO `ea_service_categories` (`id`, `name`, `description`) VALUES
(24, 'Test Category', 'This is a test service category.');
INSERT INTO `ea_settings` (`id`, `name`, `value`) VALUES
(16, 'company_working_plan', '{"monday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"tuesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"wednesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"thursday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"friday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"saturday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"sunday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]}}'),
(17, 'book_advance_timeout', '30'),
(18, 'google_analytics_code', ''),
(19, 'customer_notifications', '1'),
(20, 'date_format', 'DMY'),
(21, 'require_captcha', '0'),
(22, 'company_name', 'JD & Co'),
(23, 'company_email', 'john@doe12345.com'),
(24, 'company_link', 'http://doe12345.com');
INSERT INTO `ea_users` (`id`, `first_name`, `last_name`, `email`, `mobile_number`, `phone_number`, `address`, `city`, `state`, `zip_code`, `notes`, `id_roles`) VALUES
(84, 'John', 'Doe', 'john@doe12345.com', '123123123', '123123123', 'Some Str 123', 'Some City', 'Some State', '12345', 'This is a test administrator.', 1),
(85, 'Jane', 'Doe', 'jane@doe12345.com', '0123456789', '0123456789', 'Some Str 123', 'Some City', 'Some State', '12345', 'This is a test provider', 2),
(86, 'Chris', 'Doe', 'chris@doe12345.com', NULL, '123123123', 'Some Str 123', 'Some City', NULL, '12345', 'This is a test customer.', 3),
(87, 'Chloe', 'Doe', 'chloe@doe12345.com', '123123123', '123123123', 'Some Str 123', 'Some City', 'Some State', '12345', 'This is a test secretary.', 4);
INSERT INTO `ea_user_settings` (`id_users`, `username`, `password`, `salt`, `working_plan`, `notifications`, `google_sync`, `google_token`, `google_calendar`, `sync_past_days`, `sync_future_days`, `calendar_view`) VALUES
(84, 'administrator', 'c1871d3852f8b78503c5e4f585f3979d0580b4d0339533ae5b55abbe3dba7a4b', '703006e3a7c61db01c943eda81b50ac4ca567e1e61fd677b6a8b431c8bd95eeb', NULL, 0, 0, NULL, NULL, 5, 5, 'default'),
(85, 'jane@doe12345.com', '29cc4447507f0ea740a5d666944e997059b02cc0a968fa3f29eb5574cc1df2e7', 'f7b509c4b37f734ed1c3c65466b62843979bf4a354c3c3a1ab4752f9399df95c', '{"monday":{"start":"09:00","end":"18:00","breaks":[{"start":"14:30","end":"15:00"}]},"tuesday":{"start":"09:00","end":"18:00","breaks":[{"start":"14:30","end":"15:00"}]},"wednesday":{"start":"09:00","end":"18:00","breaks":[{"start":"14:30","end":"15:00"}]},"thursday":{"start":"09:00","end":"18:00","breaks":[{"start":"14:30","end":"15:00"}]},"friday":{"start":"09:00","end":"18:00","breaks":[{"start":"14:30","end":"15:00"}]},"saturday":null,"sunday":null}', 0, 0, NULL, NULL, 5, 5, 'default'),
(87, 'chloe@doe12345.com', '2ad09a6c7b100048a48c380290206c35d953ed224c706d6f61d2198a9413c115', '8701d60910fb5994d4700f8057cebb16e94326d397241c7baac7c9b9c61012e6', NULL, 0, 0, NULL, NULL, 5, 5, 'default');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View file

@ -1,186 +0,0 @@
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT = @@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS = @@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION = @@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
CREATE TABLE `ea_appointments` (
`id` INT(11) AUTO_INCREMENT NOT NULL,
`book_datetime` DATETIME DEFAULT NULL,
`start_datetime` DATETIME DEFAULT NULL,
`end_datetime` DATETIME DEFAULT NULL,
`notes` TEXT,
`hash` TEXT,
`is_unavailable` TINYINT(4) DEFAULT '0',
`id_users_provider` INT(11) DEFAULT NULL,
`id_users_customer` INT(11) DEFAULT NULL,
`id_services` INT(11) DEFAULT NULL,
`id_google_calendar` TEXT,
PRIMARY KEY (`id`),
KEY `id_users_customer` (`id_users_customer`),
KEY `id_services` (`id_services`),
KEY `id_users_provider` (`id_users_provider`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_migrations` (
`version` INT(11) NOT NULL
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_roles` (
`id` INT(11) AUTO_INCREMENT NOT NULL,
`name` VARCHAR(256) DEFAULT NULL,
`slug` VARCHAR(256) DEFAULT NULL,
`is_admin` TINYINT(4) DEFAULT NULL,
`appointments` INT(11) DEFAULT NULL,
`customers` INT(11) DEFAULT NULL,
`services` INT(11) DEFAULT NULL,
`users` INT(11) DEFAULT NULL,
`system_settings` INT(11) DEFAULT NULL,
`user_settings` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_secretaries_providers` (
`id_users_secretary` INT(11) NOT NULL,
`id_users_provider` INT(11) NOT NULL,
PRIMARY KEY (`id_users_secretary`, `id_users_provider`),
KEY `fk_ea_secretaries_providers_1` (`id_users_secretary`),
KEY `fk_ea_secretaries_providers_2` (`id_users_provider`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_services` (
`id` INT(11) AUTO_INCREMENT NOT NULL,
`name` VARCHAR(256) DEFAULT NULL,
`duration` INT(11) DEFAULT NULL,
`price` DECIMAL(10, 2) DEFAULT NULL,
`currency` VARCHAR(32) DEFAULT NULL,
`description` TEXT,
`availabilities_type` VARCHAR(32) DEFAULT 'flexible',
`attendants_number` INT(11) DEFAULT '1',
`id_service_categories` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id_service_categories` (`id_service_categories`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_services_providers` (
`id_users` INT(11) NOT NULL,
`id_services` INT(11) NOT NULL,
PRIMARY KEY (`id_users`, `id_services`),
KEY `id_services` (`id_services`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_service_categories` (
`id` INT(11) AUTO_INCREMENT NOT NULL,
`name` VARCHAR(256) DEFAULT NULL,
`description` TEXT,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_settings` (
`id` INT(11) AUTO_INCREMENT NOT NULL,
`name` VARCHAR(512) DEFAULT NULL,
`value` TEXT,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_users` (
`id` INT(11) AUTO_INCREMENT NOT NULL,
`first_name` VARCHAR(256) DEFAULT NULL,
`last_name` VARCHAR(512) DEFAULT NULL,
`email` VARCHAR(512) DEFAULT NULL,
`mobile_number` VARCHAR(128) DEFAULT NULL,
`phone_number` VARCHAR(128) DEFAULT NULL,
`address` VARCHAR(256) DEFAULT NULL,
`city` VARCHAR(256) DEFAULT NULL,
`state` VARCHAR(128) DEFAULT NULL,
`zip_code` VARCHAR(64) DEFAULT NULL,
`notes` TEXT,
`id_roles` INT(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_roles` (`id_roles`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
CREATE TABLE `ea_user_settings` (
`id_users` INT(11) NOT NULL,
`username` VARCHAR(256) DEFAULT NULL,
`password` VARCHAR(512) DEFAULT NULL,
`salt` VARCHAR(512) DEFAULT NULL,
`working_plan` TEXT,
`notifications` TINYINT(4) DEFAULT '0',
`google_sync` TINYINT(4) DEFAULT '0',
`google_token` TEXT,
`google_calendar` VARCHAR(128) DEFAULT NULL,
`sync_past_days` INT(11) DEFAULT '5',
`sync_future_days` INT(11) DEFAULT '5',
`calendar_view` VARCHAR(32) DEFAULT 'default',
PRIMARY KEY (`id_users`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
ALTER TABLE `ea_appointments`
ADD CONSTRAINT `ea_appointments_ea_users_customer` FOREIGN KEY (`id_users_customer`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_appointments_ea_services` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_appointments_ea_users_provider` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE `ea_secretaries_providers`
ADD CONSTRAINT `ea_secretaries_ea_users_secretary` FOREIGN KEY (`id_users_secretary`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_secretaries_ea_users_provider` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE `ea_services`
ADD CONSTRAINT `ea_services_ea_service_categories` FOREIGN KEY (`id_service_categories`) REFERENCES `ea_service_categories` (`id`)
ON DELETE SET NULL
ON UPDATE CASCADE;
ALTER TABLE `ea_services_providers`
ADD CONSTRAINT `ea_services_providers_ea_users_provider` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_services_providers_ea_services` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE `ea_users`
ADD CONSTRAINT `ea_users_ea_roles` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE `ea_user_settings`
ADD CONSTRAINT `ea_user_settings_ea_users` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
/*!40101 SET CHARACTER_SET_CLIENT = @OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS = @OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION = @OLD_COLLATION_CONNECTION */;

View file

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 7 KiB

View file

@ -8,7 +8,7 @@
| Declare some of the global config values of Easy!Appointments.
|
*/
$config['version'] = '1.3.0'; // This must be changed manually.
$config['version'] = '1.3.1'; // This must be changed manually.
$config['release_label'] = ''; // Leave empty for no title or add Alpha, Beta etc ...
$config['google_sync_feature'] = Config::GOOGLE_SYNC_FEATURE;
@ -273,7 +273,7 @@ $config['cache_path'] = __DIR__ . '/../../storage/cache/';
| new release.
|
*/
$config['cache_busting_token'] = '9G7D4';
$config['cache_busting_token'] = '93GE1';
/*
|--------------------------------------------------------------------------

View file

@ -75,6 +75,9 @@ define('DATE_FORMAT_DMY', 'DMY');
define('DATE_FORMAT_MDY', 'MDY');
define('DATE_FORMAT_YMD', 'YMD');
define('TIME_FORMAT_REGULAR', 'regular');
define('TIME_FORMAT_MILITARY', 'military');
define('MIN_PASSWORD_LENGTH', 7);
define('ANY_PROVIDER', 'any-provider');

View file

@ -37,7 +37,7 @@ $config['migration_table'] = 'ea_migrations';
| be upgraded / downgraded to.
|
*/
$config['migration_version'] = 9; // current
$config['migration_version'] = 11; // current
/*

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0
@ -75,6 +75,7 @@ class Appointments extends CI_Controller {
$available_providers = $this->providers_model->get_available_providers();
$company_name = $this->settings_model->get_setting('company_name');
$date_format = $this->settings_model->get_setting('date_format');
$time_format = $this->settings_model->get_setting('time_format');
// Remove the data that are not needed inside the $available_providers array.
foreach ($available_providers as $index => $provider)
@ -132,6 +133,7 @@ class Appointments extends CI_Controller {
'company_name' => $company_name,
'manage_mode' => $manage_mode,
'date_format' => $date_format,
'time_format' => $time_format,
'appointment_data' => $appointment,
'provider_data' => $provider,
'customer_data' => $customer
@ -180,7 +182,8 @@ class Appointments extends CI_Controller {
'company_name' => $this->settings_model->get_setting('company_name'),
'company_email' => $this->settings_model->get_setting('company_email'),
'company_link' => $this->settings_model->get_setting('company_link'),
'date_format' => $this->settings_model->get_setting('date_format')
'date_format' => $this->settings_model->get_setting('date_format'),
'time_format' => $this->settings_model->get_setting('time_format')
];
// :: DELETE APPOINTMENT RECORD FROM THE DATABASE.
@ -470,7 +473,8 @@ class Appointments extends CI_Controller {
'company_name' => $this->settings_model->get_setting('company_name'),
'company_link' => $this->settings_model->get_setting('company_link'),
'company_email' => $this->settings_model->get_setting('company_email'),
'date_format' => $this->settings_model->get_setting('date_format')
'date_format' => $this->settings_model->get_setting('date_format'),
'time_format' => $this->settings_model->get_setting('time_format')
];
// :: SYNCHRONIZE APPOINTMENT WITH PROVIDER'S GOOGLE CALENDAR
@ -605,12 +609,34 @@ class Appointments extends CI_Controller {
$selected_date = new DateTime($selected_date_string);
$number_of_days_in_month = (int)$selected_date->format('t');
$unavailable_dates = [];
$manage_mode = filter_var($this->input->get('manage_mode'), FILTER_VALIDATE_BOOLEAN);
$exclude_appointments = ($_REQUEST['manage_mode'] === 'true')
? [$_REQUEST['appointment_id']]
: [];
// Handle the "Any Provider" case.
if ($provider_id === ANY_PROVIDER)
{
$provider_id = $this->_search_any_provider($service_id, $selected_date_string);
if ($provider_id === null) {
$current_date = new DateTime($selected_date_string);
$current_date->add(new DateInterval('P1D'));
do
{
$provider_id = $this->_search_any_provider($service_id, $current_date->format('Y-m-d H:i:s'));
if ($provider_id)
{
break;
}
$current_date->add(new DateInterval('P1D'));
} while ((int)$current_date->format('d') <= $number_of_days_in_month);
}
if ($provider_id === NULL)
{
// No provider is available in the selected date.
@ -649,10 +675,10 @@ class Appointments extends CI_Controller {
$empty_periods = $this->_get_provider_available_time_periods($provider_id,
$service_id,
$current_date->format('Y-m-d'));
$current_date->format('Y-m-d'), $exclude_appointments);
$available_hours = $this->_calculate_available_hours($empty_periods, $current_date->format('Y-m-d'),
$service['duration'], FALSE, $service['availabilities_type']);
$service['duration'], $manage_mode, $service['availabilities_type']);
if ($service['attendants_number'] > 1)
{
@ -867,6 +893,11 @@ class Appointments extends CI_Controller {
$remove_current_period = TRUE;
}
if ($break_start == $period_start && $break_end == $period_end)
{
$remove_current_period = TRUE;
}
if ($remove_current_period)
{
unset($periods[$key]);

7
src/application/controllers/Backend.php Normal file → Executable file
View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0
@ -69,6 +69,7 @@ class Backend extends CI_Controller {
$view['active_menu'] = PRIV_APPOINTMENTS;
$view['book_advance_timeout'] = $this->settings_model->get_setting('book_advance_timeout');
$view['date_format'] = $this->settings_model->get_setting('date_format');
$view['time_format'] = $this->settings_model->get_setting('time_format');
$view['company_name'] = $this->settings_model->get_setting('company_name');
$view['available_providers'] = $this->providers_model->get_available_providers();
$view['available_services'] = $this->services_model->get_available_services();
@ -130,6 +131,7 @@ class Backend extends CI_Controller {
$view['active_menu'] = PRIV_CUSTOMERS;
$view['company_name'] = $this->settings_model->get_setting('company_name');
$view['date_format'] = $this->settings_model->get_setting('date_format');
$view['time_format'] = $this->settings_model->get_setting('time_format');
$view['customers'] = $this->customers_model->get_batch();
$view['available_providers'] = $this->providers_model->get_available_providers();
$view['available_services'] = $this->services_model->get_available_services();
@ -167,6 +169,7 @@ class Backend extends CI_Controller {
$view['active_menu'] = PRIV_SERVICES;
$view['company_name'] = $this->settings_model->get_setting('company_name');
$view['date_format'] = $this->settings_model->get_setting('date_format');
$view['time_format'] = $this->settings_model->get_setting('time_format');
$view['services'] = $this->services_model->get_batch();
$view['categories'] = $this->services_model->get_all_categories();
$this->set_user_data($view);
@ -203,6 +206,7 @@ class Backend extends CI_Controller {
$view['active_menu'] = PRIV_USERS;
$view['company_name'] = $this->settings_model->get_setting('company_name');
$view['date_format'] = $this->settings_model->get_setting('date_format');
$view['time_format'] = $this->settings_model->get_setting('time_format');
$view['admins'] = $this->admins_model->get_batch();
$view['providers'] = $this->providers_model->get_batch();
$view['secretaries'] = $this->secretaries_model->get_batch();
@ -242,6 +246,7 @@ class Backend extends CI_Controller {
$view['active_menu'] = PRIV_SYSTEM_SETTINGS;
$view['company_name'] = $this->settings_model->get_setting('company_name');
$view['date_format'] = $this->settings_model->get_setting('date_format');
$view['time_format'] = $this->settings_model->get_setting('time_format');
$view['role_slug'] = $this->session->userdata('role_slug');
$view['system_settings'] = $this->settings_model->get_settings();
$view['user_settings'] = $this->user_model->get_settings($user_id);

8
src/application/controllers/Backend_api.php Normal file → Executable file
View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0
@ -311,7 +311,8 @@ class Backend_api extends CI_Controller {
'company_name' => $this->settings_model->get_setting('company_name'),
'company_link' => $this->settings_model->get_setting('company_link'),
'company_email' => $this->settings_model->get_setting('company_email'),
'date_format' => $this->settings_model->get_setting('date_format')
'date_format' => $this->settings_model->get_setting('date_format'),
'time_format' => $this->settings_model->get_setting('time_format')
];
// :: SYNC APPOINTMENT CHANGES WITH GOOGLE CALENDAR
@ -461,7 +462,8 @@ class Backend_api extends CI_Controller {
'company_name' => $this->settings_model->get_setting('company_name'),
'company_email' => $this->settings_model->get_setting('company_email'),
'company_link' => $this->settings_model->get_setting('company_link'),
'date_format' => $this->settings_model->get_setting('date_format')
'date_format' => $this->settings_model->get_setting('date_format'),
'time_format' => $this->settings_model->get_setting('time_format')
];
// :: DELETE APPOINTMENT RECORD FROM DATABASE

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.1.0
@ -93,7 +93,7 @@ class Installation extends CI_Controller {
// Insert admin
$this->load->model('admins_model');
$admin = json_decode($this->input->post('admin'), TRUE);
$admin = $this->input->post('admin');
$admin['settings']['username'] = $admin['username'];
$admin['settings']['password'] = $admin['password'];
$admin['settings']['calendar_view'] = CALENDAR_VIEW_DEFAULT;
@ -108,7 +108,7 @@ class Installation extends CI_Controller {
// Save company settings
$this->load->model('settings_model');
$company = json_decode($this->input->post('company'), TRUE);
$company = $this->input->post('company');
$this->settings_model->set_setting('company_name', $company['company_name']);
$this->settings_model->set_setting('company_email', $company['company_email']);
$this->settings_model->set_setting('company_link', $company['company_link']);

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
@ -50,8 +50,16 @@ class Appointments extends API_V1_Controller {
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : NULL;
$appointments = $this->appointments_model->get_batch($condition, array_key_exists('aggregates', $_GET));
$conditions = [
'is_unavailable' => FALSE
];
if ($id !== NULL)
{
$conditions['id'] = $id;
}
$appointments = $this->appointments_model->get_batch($conditions, array_key_exists('aggregates', $_GET));
if ($id !== NULL && count($appointments) === 0)
{

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.3.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.3.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.1.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.1.0

2
src/application/language/arabic/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'اشعارات الزبون';
$lang['customer_notifications_hint'] = 'سيتم تلقي اشعارات للزبون عند تغيّر موعد الحجز أو عند تحديثه';
$lang['date_format'] = 'صيغة التاريخ';
$lang['date_format_hint'] = 'تغيير صيغة وعرض التاريخ (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'ليتم تضمينه في صفحة الحجز Google Analytics ID أضف معرّف';
$lang['availabilities_type'] = 'نوع التوفر أو الإتاحة';
$lang['flexible'] = 'مرن';

View file

@ -274,6 +274,8 @@ $lang['customer_notifications_hint'] = 'Дефинира дали клиентъ
$lang['customer_notifications'] = 'Клиентски Известия';
$lang['date_format'] = 'Формат на Дата';
$lang['date_format_hint'] = 'Промяна на дормат за показ на дата (D - дата, M - месец, Y - година).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Добавете Google Analytics ID за да бъде включена статистика в страницата за запазване на час.';
$lang['availabilities_type'] = 'Типове на работен период.';
$lang['flexible'] = 'Гъвкав';

2
src/application/language/chinese/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

2
src/application/language/danish/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

2
src/application/language/dutch/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Klant mededelingen';
$lang['customer_notifications_hint'] = 'Kies of de klant een bevestiging krijgt per email als er de afspraak wordt aangepast.';
$lang['date_format'] = 'Datum formaat';
$lang['date_format_hint'] = 'Verander het datum formaat (D - dag, M - maand, Y - jaar).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Voeg je Google Analytics ID toe om deze te gebruiken op je boekings pagina.';
$lang['availabilities_type'] = 'Beschikbaarheidstype';
$lang['flexible'] = 'Flexibel';

2
src/application/language/english/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

2
src/application/language/finnish/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Asiakas ilmoitukset';
$lang['customer_notifications_hint'] = 'Jos aktivoitu, asiakkaalle lähetetään ilmoitus jos varattuun aikaan tulee muutoksia.';
$lang['date_format'] = 'Päiväyksen muoto';
$lang['date_format_hint'] = 'Vaihda päiväyksen esitysmuoto (D - Päivä, M - Kuukausi, Y - Vuosi).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Lisää Google Analytics ID varaussivulle.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

4
src/application/language/french/translations_lang.php Normal file → Executable file
View file

@ -34,7 +34,7 @@ $lang['reason'] = 'Motif';
$lang['appointment_removed_from_schedule'] = 'Le rendez-vous suivant a été supprimé de l\'agenda.';
$lang['appointment_details_was_sent_to_you'] = 'Un email reprennant les détails de votre rendez-vous vient de vous être envoyé';
$lang['add_to_google_calendar'] = 'Ajouter à Google Calendar';
$lang['appointment_booked'] = 'Votre rendez-vous a été confimé avec succès !';
$lang['appointment_booked'] = 'Votre rendez-vous a été confirmé avec succès !';
$lang['thank_you_for_appointment'] = 'Merci de votre prise de rendez-vous avec nous. Vous trouvez ci-joint les détails de votre rendez-vous. Si nécessaire, faites les changements souhaités en cliquant sur le lien du rendez-vous.';
$lang['appointment_details_title'] = 'Détails du rendez-vous';
$lang['customer_details_title'] = 'Vos informations';
@ -272,6 +272,8 @@ $lang['customer_notifications'] = 'Notifications aux clients';
$lang['customer_notifications_hint'] = 'Définit si les clients reçoivent des notifications par email chaque fois qu\'il y a un changement d\'horaire de l\'un de leurs rendez-vous.';
$lang['date_format'] = 'Format des Dates';
$lang['date_format_hint'] = 'Change le format d\'affichage des dates (D - Jour, M - Mois, Y - Année).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Renseignez l\'ID Google Analytics à utiliser dans la page des réservations.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

2
src/application/language/german/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Kunden Benachrichtigungen';
$lang['customer_notifications_hint'] = 'Stellen Sie ein, ob die Kunden eine E-Mail-Benachrichtigungen erhalten, jedes mal es gibt ein neue änderung auf ein Termin.';
$lang['date_format'] = 'Datumsformat';
$lang['date_format_hint'] = 'Ändern Sie das Datumsanzeigeformat (D - Datum, M - Monat, Y - Jahr).';
$lang['time_format'] = 'Zeitformat';
$lang['time_format_hint'] = 'Ändern Sie das Zeitanzeigeformat (H - Stunden, M - Minuten).';
$lang['google_analytics_code_hint'] = 'Fügen Sie Ihre Google Analytics-ID hinzu, das auf der Buchungsseite enthalten wird.';
$lang['availabilities_type'] = 'Verfügungstyp';
$lang['flexible'] = 'Flexibel';

2
src/application/language/greek/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Ειδοποιήσεις Πελατών';
$lang['customer_notifications_hint'] = 'Ορίζει αν οι πελάτες θα λαμβάνουν ειδοποιήσεις μέσω email κάθε φορά που θα υπαχει μια αλλαγή σε κάποιο από τα ραντεβού τους.';
$lang['date_format'] = 'Μορφή Ημερομηνίας';
$lang['date_format_hint'] = 'Αλλάξτε την μορφή ημερομηνίας (D - Ημέρα, M - Μήνας, Y - Χρόνος).';
$lang['time_format'] = 'Μορφή Ώρας';
$lang['time_format_hint'] = 'Αλλάξτε την μορφή ώρας (H - Ώρα, M - Λεπτά).';
$lang['google_analytics_code_hint'] = 'Προσθέστε τον Google Analytics ID σας το οποίο θα συμπεριληφθεί στην σελίδα κράτησης.';
$lang['availabilities_type'] = 'Τύπος Διαθεσιμοτήτων';
$lang['flexible'] = 'Ευέλικτος';

2
src/application/language/hindi/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

2
src/application/language/italian/translations_lang.php Normal file → Executable file
View file

@ -280,6 +280,8 @@ $lang['customer_notifications'] = 'Notifiche cliente';
$lang['customer_notifications_hint'] = 'Definisce se il cliente riceverà notifiche email ogni volta che c\'è un cambiamento di programma su uno dei suoi appuntamenti.';
$lang['date_format'] = 'Formato data';
$lang['date_format_hint'] = 'Cambia il formato di visualizzazione della data (D - Giorno, M - Mese, Y - Anno).';
$lang['time_format'] = 'Formato orario';
$lang['time_format_hint'] = 'Cambia il formato di visualizzazione dell\'orario. (H - Ore, M - Minuti)';
$lang['google_analytics_code_hint'] = 'Aggiunti il tuo ID di Google Analytics per includerlo nella pagina di prenotazione.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

2
src/application/language/polish/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Notificações de Clientes';
$lang['customer_notifications_hint'] = 'Define se o cliente receberá ou não, notificações por email sempre que um de seus agendamentos sejam alterados de horário.';
$lang['date_format'] = 'Formato da Data';
$lang['date_format_hint'] = 'Altera o formato de visualização da Data (D - Data, M - Mes, Y - Ano).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Adicione o seu ID do Google Analytics para ser incluido na pagina de agendamentos.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = 'Time Format';
$lang['time_format_hint'] = 'Change the time display format (H - Hours, M - Minutes).';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -280,6 +280,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

2
src/application/language/russian/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

2
src/application/language/slovak/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Upozornenia zákazníka';
$lang['customer_notifications_hint'] = 'Určuje, či zákazník dostane e-mailové upozornenia vždy, keď nastane zmena plánu na jednej z jeho rezervácií.';
$lang['date_format'] = 'Formát dátumu';
$lang['date_format_hint'] = 'Zmeňte formát zobrazenia dátumu (D - Dátum, M - Mesiac, Y - Rok).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['google_analytics_code_hint'] = 'Pridajte svoje ID služby Google Analytics, aby ste bola zahrnutá do stránky rezervácie.';
$lang['availabilities_type'] = 'Typ dostupnosti';
$lang['flexible'] = 'Flexibilný';

2
src/application/language/spanish/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Notificaciones de Clientes';
$lang['customer_notifications_hint'] = 'Define si su cliente recibirá notificaciones de correo cada vez que una agenda cambia o alguna de sus citas.';
$lang['date_format'] = 'Formato de Fecha';
$lang['date_format_hint'] = 'Cambia el formato de fecha para mostrar (D - Día, M - Mes, Y - Año).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['google_analytics_code_hint'] = 'Agrega tu ID de Google Analytics para ser incluido en la página de reservas.';
$lang['availabilities_type'] = 'Tipos disponibles';
$lang['flexible'] = 'Flexible';

2
src/application/language/turkish/translations_lang.php Normal file → Executable file
View file

@ -274,6 +274,8 @@ $lang['customer_notifications'] = 'Customer Notifications';
$lang['customer_notifications_hint'] = 'Defines whether the customer will receive email notifications whenever there is a schedule change on one of his appointments.';
$lang['date_format'] = 'Date Format';
$lang['date_format_hint'] = 'Change the date display format (D - Date, M - Month, Y - Year).';
$lang['time_format'] = '';
$lang['time_format_hint'] = '';
$lang['google_analytics_code_hint'] = 'Add your Google Analytics ID to be included in the booking page.';
$lang['availabilities_type'] = 'Availabilities Type';
$lang['flexible'] = 'Flexible';

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.3.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.1.0
@ -15,12 +15,21 @@ class Migration_Add_google_analytics_setting extends CI_Migration {
public function up()
{
$this->load->model('settings_model');
$this->settings_model->set_setting('google_analytics_code', '');
try
{
$this->settings_model->get_setting('google_analytics_code');
}
catch (Exception $exception)
{
$this->settings_model->set_setting('google_analytics_code', '');
}
}
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('google_analytics_code');
}
}

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.1.0
@ -15,12 +15,21 @@ class Migration_Add_customer_notifications_setting extends CI_Migration {
public function up()
{
$this->load->model('settings_model');
$this->settings_model->set_setting('customer_notifications', '1');
try
{
$this->settings_model->get_setting('customer_notifications');
}
catch (Exception $exception)
{
$this->settings_model->set_setting('customer_notifications', '1');
}
}
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('customer_notifications');
}
}

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.1.0
@ -15,12 +15,21 @@ class Migration_Add_date_format_setting extends CI_Migration {
public function up()
{
$this->load->model('settings_model');
$this->settings_model->set_setting('date_format', DATE_FORMAT_DMY);
try
{
$this->settings_model->get_setting('date_format');
}
catch (Exception $exception)
{
$this->settings_model->set_setting('date_format', DATE_FORMAT_DMY);
}
}
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('date_format');
}
}

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.1.0
@ -15,12 +15,21 @@ class Migration_Add_require_captcha_setting extends CI_Migration {
public function up()
{
$this->load->model('settings_model');
$this->settings_model->set_setting('require_captcha', '1');
try
{
$this->settings_model->get_setting('require_captcha');
}
catch (Exception $exception)
{
$this->settings_model->set_setting('require_captcha', '1');
}
}
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('require_captcha');
}
}

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
@ -14,11 +14,8 @@
class Migration_Add_calendar_view_setting extends CI_Migration {
public function up()
{
$this->load->dbforge();
$fields = $this->db->list_fields('ea_user_settings');
if (!in_array('calendar_view', $fields, true)) {
if ( ! $this->db->field_exists('calendar_view', 'ea_user_settings'))
{
$fields = [
'calendar_view' => [
'type' => 'VARCHAR',
@ -26,16 +23,18 @@ class Migration_Add_calendar_view_setting extends CI_Migration {
'default' => 'default'
]
];
$this->dbforge->add_column('ea_user_settings', $fields);
$this->db->update('ea_user_settings', ['calendar_view' => 'default']);
}
}
public function down()
{
$this->load->dbforge();
$this->dbforge->drop_column('ea_user_settings', 'calendar_view');
if ($this->db->field_exists('calendar_view', 'ea_user_settings'))
{
$this->dbforge->drop_column('ea_user_settings', 'calendar_view_calendar');
}
}
}

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
@ -14,7 +14,8 @@
class Migration_Add_service_availabilities_type extends CI_Migration {
public function up()
{
if (!$this->db->field_exists('availabilities_type', 'ea_services')) {
if ( ! $this->db->field_exists('availabilities_type', 'ea_services'))
{
$fields = [
'availabilities_type' => [
'type' => 'VARCHAR',
@ -23,16 +24,17 @@ class Migration_Add_service_availabilities_type extends CI_Migration {
'after' => 'description'
]
];
$this->dbforge->add_column('ea_services', $fields);
$this->db->update('ea_services', ['availabilities_type' => 'flexible']);
}
}
public function down()
{
if ($this->db->field_exists('availabilities_type', 'ea_services')) {
if ($this->db->field_exists('availabilities_type', 'ea_services'))
{
$this->dbforge->drop_column('ea_services', 'availabilities_type');
}
}

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
@ -14,7 +14,8 @@
class Migration_Add_service_attendants_number extends CI_Migration {
public function up()
{
if (!$this->db->field_exists('attendants_number', 'ea_services')) {
if ( ! $this->db->field_exists('attendants_number', 'ea_services'))
{
$fields = [
'attendants_number' => [
'type' => 'INT',
@ -23,16 +24,17 @@ class Migration_Add_service_attendants_number extends CI_Migration {
'after' => 'availabilities_type'
]
];
$this->dbforge->add_column('ea_services', $fields);
$this->db->update('ea_services', ['attendants_number' => '1']);
}
}
public function down()
{
if (!$this->db->field_exists('attendants_number', 'ea_services')) {
if ($this->db->field_exists('attendants_number', 'ea_services'))
{
$this->dbforge->drop_column('ea_services', 'attendants_number');
}
}

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.3.0
@ -14,6 +14,18 @@
class Migration_Change_column_types extends CI_Migration {
public function up()
{
// Drop table constraints.
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ibfk_2');
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ibfk_3');
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ibfk_4');
$this->db->query('ALTER TABLE ea_secretaries_providers DROP FOREIGN KEY fk_ea_secretaries_providers_1');
$this->db->query('ALTER TABLE ea_secretaries_providers DROP FOREIGN KEY fk_ea_secretaries_providers_2');
$this->db->query('ALTER TABLE ea_services_providers DROP FOREIGN KEY ea_services_providers_ibfk_1');
$this->db->query('ALTER TABLE ea_services_providers DROP FOREIGN KEY ea_services_providers_ibfk_2');
$this->db->query('ALTER TABLE ea_services DROP FOREIGN KEY ea_services_ibfk_1');
$this->db->query('ALTER TABLE ea_users DROP FOREIGN KEY ea_users_ibfk_1');
$this->db->query('ALTER TABLE ea_user_settings DROP FOREIGN KEY ea_user_settings_ibfk_1');
// Appointments
$fields = [
'id' => [
@ -97,7 +109,7 @@ class Migration_Change_column_types extends CI_Migration {
]
];
$this->dbforge->modify_column('ea_roles', $fields);
$this->dbforge->modify_column('ea_secretaries_providers', $fields);
// Services
$fields = [
@ -165,7 +177,7 @@ class Migration_Change_column_types extends CI_Migration {
'auto_increment' => TRUE
],
'id_roles' => [
'name' => 'id',
'name' => 'id_roles',
'type' => 'int',
'constraint' => '11'
]
@ -183,10 +195,65 @@ class Migration_Change_column_types extends CI_Migration {
];
$this->dbforge->modify_column('ea_user_settings', $fields);
// Add table constraints again.
$this->db->query('ALTER TABLE `ea_appointments`
ADD CONSTRAINT `ea_appointments_ea_users_customer` FOREIGN KEY (`id_users_customer`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_appointments_ea_services` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_appointments_ea_users_provider` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_secretaries_providers`
ADD CONSTRAINT `ea_secretaries_ea_users_secretary` FOREIGN KEY (`id_users_secretary`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_secretaries_ea_users_provider` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_services`
ADD CONSTRAINT `ea_services_ea_service_categories` FOREIGN KEY (`id_service_categories`) REFERENCES `ea_service_categories` (`id`)
ON DELETE SET NULL
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_services_providers`
ADD CONSTRAINT `ea_services_providers_ea_users_provider` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_services_providers_ea_services` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_users`
ADD CONSTRAINT `ea_users_ea_roles` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_user_settings`
ADD CONSTRAINT `ea_user_settings_ea_users` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
}
public function down()
{
// Drop table constraints.
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ea_services');
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ea_users_customer');
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ea_users_provider');
$this->db->query('ALTER TABLE ea_secretaries_providers DROP FOREIGN KEY ea_secretaries_ea_users_secretary');
$this->db->query('ALTER TABLE ea_secretaries_providers DROP FOREIGN KEY ea_secretaries_ea_users_provider');
$this->db->query('ALTER TABLE ea_services_providers DROP FOREIGN KEY ea_services_providers_ea_users_provider');
$this->db->query('ALTER TABLE ea_services_providers DROP FOREIGN KEY ea_services_providers_ea_services');
$this->db->query('ALTER TABLE ea_services DROP FOREIGN KEY ea_services_ea_service_categories');
$this->db->query('ALTER TABLE ea_users DROP FOREIGN KEY ea_users_ea_roles');
$this->db->query('ALTER TABLE ea_user_settings DROP FOREIGN KEY ea_user_settings_ea_users');
// Appointments
$fields = [
'id' => [
@ -356,5 +423,28 @@ class Migration_Change_column_types extends CI_Migration {
];
$this->dbforge->modify_column('ea_user_settings', $fields);
// Add database constraints.
$this->db->query('ALTER TABLE `ea_appointments`
ADD CONSTRAINT `ea_appointments_ibfk_2` FOREIGN KEY (`id_users_customer`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `ea_appointments_ibfk_3` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `ea_appointments_ibfk_4` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_secretaries_providers`
ADD CONSTRAINT `fk_ea_secretaries_providers_1` FOREIGN KEY (`id_users_secretary`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `fk_ea_secretaries_providers_2` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_services`
ADD CONSTRAINT `ea_services_ibfk_1` FOREIGN KEY (`id_service_categories`) REFERENCES `ea_service_categories` (`id`) ON DELETE SET NULL ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_services_providers`
ADD CONSTRAINT `ea_services_providers_ibfk_1` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `ea_services_providers_ibfk_2` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_users`
ADD CONSTRAINT `ea_users_ibfk_1` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_user_settings`
ADD CONSTRAINT `ea_user_settings_ibfk_1` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE');
}
}

View file

@ -0,0 +1,35 @@
<?php defined('BASEPATH') OR exit('No direct script access allowed');
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.3.0
* ---------------------------------------------------------------------------- */
class Migration_Add_time_format_setting extends CI_Migration {
public function up()
{
$this->load->model('settings_model');
try
{
$this->settings_model->get_setting('time_format');
}
catch (Exception $exception)
{
$this->settings_model->set_setting('time_format', 'regular');
}
}
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('time_format');
}
}

View file

@ -0,0 +1,130 @@
<?php defined('BASEPATH') OR exit('No direct script access allowed');
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.3.0
* ---------------------------------------------------------------------------- */
class Migration_Remove_prefix_from_fkey_constraints extends CI_Migration {
public function up()
{
// Drop table constraints.
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ea_services');
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ea_users_customer');
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY ea_appointments_ea_users_provider');
$this->db->query('ALTER TABLE ea_secretaries_providers DROP FOREIGN KEY ea_secretaries_ea_users_secretary');
$this->db->query('ALTER TABLE ea_secretaries_providers DROP FOREIGN KEY ea_secretaries_ea_users_provider');
$this->db->query('ALTER TABLE ea_services_providers DROP FOREIGN KEY ea_services_providers_ea_users_provider');
$this->db->query('ALTER TABLE ea_services_providers DROP FOREIGN KEY ea_services_providers_ea_services');
$this->db->query('ALTER TABLE ea_services DROP FOREIGN KEY ea_services_ea_service_categories');
$this->db->query('ALTER TABLE ea_users DROP FOREIGN KEY ea_users_ea_roles');
$this->db->query('ALTER TABLE ea_user_settings DROP FOREIGN KEY ea_user_settings_ea_users');
// Add table constraints again without the "ea" prefix.
$this->db->query('ALTER TABLE `ea_appointments`
ADD CONSTRAINT `appointments_users_customer` FOREIGN KEY (`id_users_customer`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `appointments_services` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `appointments_users_provider` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_secretaries_providers`
ADD CONSTRAINT `secretaries_users_secretary` FOREIGN KEY (`id_users_secretary`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `secretaries_users_provider` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_services`
ADD CONSTRAINT `services_service_categories` FOREIGN KEY (`id_service_categories`) REFERENCES `ea_service_categories` (`id`)
ON DELETE SET NULL
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_services_providers`
ADD CONSTRAINT `services_providers_users_provider` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `services_providers_services` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_users`
ADD CONSTRAINT `users_roles` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_user_settings`
ADD CONSTRAINT `user_settings_users` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
}
public function down()
{
// Drop table constraints.
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY appointments_services');
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY appointments_users_customer');
$this->db->query('ALTER TABLE ea_appointments DROP FOREIGN KEY appointments_users_provider');
$this->db->query('ALTER TABLE ea_secretaries_providers DROP FOREIGN KEY secretaries_users_secretary');
$this->db->query('ALTER TABLE ea_secretaries_providers DROP FOREIGN KEY secretaries_users_provider');
$this->db->query('ALTER TABLE ea_services_providers DROP FOREIGN KEY services_providers_users_provider');
$this->db->query('ALTER TABLE ea_services_providers DROP FOREIGN KEY services_providers_services');
$this->db->query('ALTER TABLE ea_services DROP FOREIGN KEY services_service_categories');
$this->db->query('ALTER TABLE ea_users DROP FOREIGN KEY users_roles');
$this->db->query('ALTER TABLE ea_user_settings DROP FOREIGN KEY user_settings_users');
// Add table constraints again.
$this->db->query('ALTER TABLE `ea_appointments`
ADD CONSTRAINT `ea_appointments_ea_users_customer` FOREIGN KEY (`id_users_customer`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_appointments_ea_services` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_appointments_ea_users_provider` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_secretaries_providers`
ADD CONSTRAINT `ea_secretaries_ea_users_secretary` FOREIGN KEY (`id_users_secretary`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_secretaries_ea_users_provider` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_services`
ADD CONSTRAINT `ea_services_ea_service_categories` FOREIGN KEY (`id_service_categories`) REFERENCES `ea_service_categories` (`id`)
ON DELETE SET NULL
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_services_providers`
ADD CONSTRAINT `ea_services_providers_ea_users_provider` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `ea_services_providers_ea_services` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_users`
ADD CONSTRAINT `ea_users_ea_roles` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
$this->db->query('ALTER TABLE `ea_user_settings`
ADD CONSTRAINT `ea_user_settings_ea_users` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE');
}
}

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -5,7 +5,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

1
src/application/views/appointments/book.php Normal file → Executable file
View file

@ -327,6 +327,7 @@
baseUrl : <?= json_encode(config('base_url')) ?>,
manageMode : <?= $manage_mode ? 'true' : 'false' ?>,
dateFormat : <?= json_encode($date_format) ?>,
timeFormat : <?= json_encode($time_format) ?>,
appointmentData : <?= json_encode($appointment_data) ?>,
providerData : <?= json_encode($provider_data) ?>,
customerData : <?= json_encode($customer_data) ?>,

1
src/application/views/backend/calendar.php Normal file → Executable file
View file

@ -19,6 +19,7 @@
'baseUrl' : <?= json_encode($base_url) ?>,
'bookAdvanceTimeout' : <?= $book_advance_timeout ?>,
'dateFormat' : <?= json_encode($date_format) ?>,
'timeFormat' : <?= json_encode($time_format) ?>,
'editAppointment' : <?= json_encode($edit_appointment) ?>,
'customers' : <?= json_encode($customers) ?>,
'secretaryProviders' : <?= json_encode($secretary_providers) ?>,

1
src/application/views/backend/customers.php Normal file → Executable file
View file

@ -7,6 +7,7 @@
availableProviders : <?= json_encode($available_providers) ?>,
availableServices : <?= json_encode($available_services) ?>,
dateFormat : <?= json_encode($date_format) ?>,
timeFormat : <?= json_encode($time_format) ?>,
baseUrl : <?= json_encode($base_url) ?>,
customers : <?= json_encode($customers) ?>,
user : {

1
src/application/views/backend/services.php Normal file → Executable file
View file

@ -6,6 +6,7 @@
csrfToken : <?= json_encode($this->security->get_csrf_hash()) ?>,
baseUrl : <?= json_encode($base_url) ?>,
dateFormat : <?= json_encode($date_format) ?>,
timeFormat : <?= json_encode($time_format) ?>,
services : <?= json_encode($services) ?>,
categories : <?= json_encode($categories) ?>,
user : {

13
src/application/views/backend/settings.php Normal file → Executable file
View file

@ -9,6 +9,7 @@
'csrfToken' : <?= json_encode($this->security->get_csrf_hash()) ?>,
'baseUrl' : <?= json_encode($base_url) ?>,
'dateFormat' : <?= json_encode($date_format) ?>,
'timeFormat' : <?= json_encode($time_format) ?>,
'userSlug' : <?= json_encode($role_slug) ?>,
'settings' : {
'system' : <?= json_encode($system_settings) ?>,
@ -117,6 +118,18 @@
<?= lang('date_format_hint') ?>
</span>
</div>
<div class="form-group">
<label for="time-format">
<?= lang('time_format') ?>
</label>
<select class="form-control" id="time-format" data-field="time_format">
<option value="<?= TIME_FORMAT_REGULAR ?>">H:MM AM/PM</option>
<option value="<?= TIME_FORMAT_MILITARY ?>">HH:MM</option>
</select>
<span class="help-block">
<?= lang('time_format_hint') ?>
</span>
</div>
<div class="form-group">
<label><?= lang('customer_notifications') ?></label>
<br>

1
src/application/views/backend/users.php Normal file → Executable file
View file

@ -10,6 +10,7 @@
csrfToken : <?= json_encode($this->security->get_csrf_hash()) ?>,
baseUrl : <?= json_encode($base_url) ?>,
dateFormat : <?= json_encode($date_format) ?>,
timeFormat : <?= json_encode($time_format) ?>,
admins : <?= json_encode($admins) ?>,
providers : <?= json_encode($providers) ?>,
secretaries : <?= json_encode($secretaries) ?>,

View file

@ -3,7 +3,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -3,7 +3,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

View file

@ -3,7 +3,7 @@
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2017, Alex Tselegidis
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.0.0

Some files were not shown because too many files have changed in this diff Show more