Autoformatted php files based on CodeIgniter style guide.

This commit is contained in:
alext 2017-09-15 13:36:37 +02:00
parent c8991a5858
commit fcb4b9d5cf
167 changed files with 5063 additions and 3716 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -20,16 +23,19 @@ class Backend extends CI_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->library('session');
// Set user's selected language.
if ($this->session->userdata('language')) {
$this->config->set_item('language', $this->session->userdata('language'));
$this->lang->load('translations', $this->session->userdata('language'));
} else {
$this->lang->load('translations', $this->config->item('language')); // default
// Set user's selected language.
if ($this->session->userdata('language'))
{
$this->config->set_item('language', $this->session->userdata('language'));
$this->lang->load('translations', $this->session->userdata('language'));
} else
{
$this->lang->load('translations', $this->config->item('language')); // default
}
}
@ -42,10 +48,12 @@ class Backend extends CI_Controller {
*
* @param string $appointment_hash Appointment edit dialog will appear when the page loads (default '').
*/
public function index($appointment_hash = '') {
public function index($appointment_hash = '')
{
$this->session->set_userdata('dest_url', site_url('backend'));
if (!$this->_has_privileges(PRIV_APPOINTMENTS)) {
if ( ! $this->_has_privileges(PRIV_APPOINTMENTS))
{
return;
}
@ -71,20 +79,24 @@ class Backend extends CI_Controller {
$view['calendar_view'] = $user['settings']['calendar_view'];
$this->set_user_data($view);
if ($this->session->userdata('role_slug') === DB_SLUG_SECRETARY) {
if ($this->session->userdata('role_slug') === DB_SLUG_SECRETARY)
{
$secretary = $this->secretaries_model->get_row($this->session->userdata('user_id'));
$view['secretary_providers'] = $secretary['providers'];
} else {
$view['secretary_providers'] = array();
} else
{
$view['secretary_providers'] = [];
}
$results = $this->appointments_model->get_batch(array('hash' => $appointment_hash));
$results = $this->appointments_model->get_batch(['hash' => $appointment_hash]);
if ($appointment_hash !== '' && count($results) > 0) {
if ($appointment_hash !== '' && count($results) > 0)
{
$appointment = $results[0];
$appointment['customer'] = $this->customers_model->get_row($appointment['id_users_customer']);
$view['edit_appointment'] = $appointment; // This will display the appointment edit dialog on page load.
} else {
} else
{
$view['edit_appointment'] = NULL;
}
@ -98,12 +110,14 @@ class Backend extends CI_Controller {
*
* In this page the user can manage all the customer records of the system.
*/
public function customers() {
public function customers()
{
$this->session->set_userdata('dest_url', site_url('backend/customers'));
if (!$this->_has_privileges(PRIV_CUSTOMERS)) {
return;
}
if ( ! $this->_has_privileges(PRIV_CUSTOMERS))
{
return;
}
$this->load->model('providers_model');
$this->load->model('customers_model');
@ -134,10 +148,12 @@ class Backend extends CI_Controller {
*
* NOTICE: The services that each provider is able to service is managed from the backend services page.
*/
public function services() {
public function services()
{
$this->session->set_userdata('dest_url', site_url('backend/services'));
if (!$this->_has_privileges(PRIV_SERVICES)) {
if ( ! $this->_has_privileges(PRIV_SERVICES))
{
return;
}
@ -166,10 +182,12 @@ class Backend extends CI_Controller {
* In this page the admin user will be able to manage the system users. By this, we mean the provider, secretary and
* admin users. This is also the page where the admin defines which service can each provider provide.
*/
public function users() {
public function users()
{
$this->session->set_userdata('dest_url', site_url('backend/users'));
if (!$this->_has_privileges(PRIV_USERS)) {
if ( ! $this->_has_privileges(PRIV_USERS))
{
return;
}
@ -204,10 +222,12 @@ class Backend extends CI_Controller {
* be able to make change to the current Easy!Appointment installation (core settings like company name, book
* timeout etc).
*/
public function settings() {
public function settings()
{
$this->session->set_userdata('dest_url', site_url('backend/settings'));
if (!$this->_has_privileges(PRIV_SYSTEM_SETTINGS, FALSE)
&& !$this->_has_privileges(PRIV_USER_SETTINGS)) {
if ( ! $this->_has_privileges(PRIV_SYSTEM_SETTINGS, FALSE)
&& ! $this->_has_privileges(PRIV_USER_SETTINGS))
{
return;
}
@ -250,11 +270,14 @@ class Backend extends CI_Controller {
* logged in then he will be prompted to log in. If he hasn't the required privileges then an info message will be
* displayed.
*/
protected function _has_privileges($page, $redirect = TRUE) {
protected function _has_privileges($page, $redirect = TRUE)
{
// Check if user is logged in.
$user_id = $this->session->userdata('user_id');
if ($user_id == FALSE) { // User not logged in, display the login view.
if ($redirect) {
if ($user_id == FALSE)
{ // User not logged in, display the login view.
if ($redirect)
{
header('Location: ' . site_url('user/login'));
}
return FALSE;
@ -262,9 +285,11 @@ class Backend extends CI_Controller {
// Check if the user has the required privileges for viewing the selected page.
$role_slug = $this->session->userdata('role_slug');
$role_priv = $this->db->get_where('ea_roles', array('slug' => $role_slug))->row_array();
if ($role_priv[$page] < PRIV_VIEW) { // User does not have the permission to view the page.
if ($redirect) {
$role_priv = $this->db->get_where('ea_roles', ['slug' => $role_slug])->row_array();
if ($role_priv[$page] < PRIV_VIEW)
{ // User does not have the permission to view the page.
if ($redirect)
{
header('Location: ' . site_url('user/no_privileges'));
}
return FALSE;
@ -282,22 +307,29 @@ class Backend extends CI_Controller {
* This method can be used either by loading the page in the browser or by an ajax request. But it will answer with
* JSON encoded data.
*/
public function update() {
try {
if (!$this->_has_privileges(PRIV_SYSTEM_SETTINGS, TRUE))
public function update()
{
try
{
if ( ! $this->_has_privileges(PRIV_SYSTEM_SETTINGS, TRUE))
{
throw new Exception('You do not have the required privileges for this task!');
}
$this->load->library('migration');
if (!$this->migration->current())
if ( ! $this->migration->current())
{
throw new Exception($this->migration->error_string());
}
echo json_encode(AJAX_SUCCESS);
} catch(Exception $exc) {
echo json_encode(array(
'exceptions' => array(exceptionToJavaScript($exc))
));
} catch (Exception $exc)
{
echo json_encode([
'exceptions' => [exceptionToJavaScript($exc)]
]);
}
}
@ -306,7 +338,8 @@ class Backend extends CI_Controller {
*
* @param array $view Contains the view data.
*/
protected function set_user_data(&$view) {
protected function set_user_data(&$view)
{
$this->load->model('roles_model');
// Get privileges

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -20,7 +23,8 @@ class Captcha extends CI_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->library('session');
}
@ -28,7 +32,8 @@ class Captcha extends CI_Controller {
/**
* Make a request to this method to get a captcha image.
*/
public function index() {
public function index()
{
header('Content-type: image/jpeg');
$builder = new Gregwar\Captcha\CaptchaBuilder;
$builder->build();

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -17,35 +20,40 @@
* @package Controllers
*/
class Errors extends CI_Controller {
/**
* Class Constructor
*/
public function __construct() {
parent::__construct();
/**
* Class Constructor
*/
public function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->library('session');
// Set user's selected language.
if ($this->session->userdata('language')) {
$this->config->set_item('language', $this->session->userdata('language'));
$this->lang->load('translations', $this->session->userdata('language'));
} else {
$this->lang->load('translations', $this->config->item('language')); // default
}
}
// Set user's selected language.
if ($this->session->userdata('language'))
{
$this->config->set_item('language', $this->session->userdata('language'));
$this->lang->load('translations', $this->session->userdata('language'));
} else
{
$this->lang->load('translations', $this->config->item('language')); // default
}
}
/**
* Display the 404 error page.
*/
public function index() {
public function index()
{
$this->e404();
}
/**
* Display the 404 error page.
*/
public function error404() {
$this->load->helper('google_analytics');
public function error404()
{
$this->load->helper('google_analytics');
$this->load->model('settings_model');
$view['company_name'] = $this->settings_model->get_setting('company_name');
$this->load->view('general/error404', $view);

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -19,11 +22,12 @@
* @package Controllers
*/
class Google extends CI_Controller {
/**
* Class Constructor
*/
public function __construct() {
parent::__construct();
/**
* Class Constructor
*/
public function __construct()
{
parent::__construct();
$this->load->library('session');
}
@ -35,9 +39,10 @@ class Google extends CI_Controller {
*
* @param int $provider_id The provider id, for whom the sync authorization is made.
*/
public function oauth($provider_id) {
// Store the provider id for use on the callback function.
$_SESSION['oauth_provider_id'] = $provider_id;
public function oauth($provider_id)
{
// Store the provider id for use on the callback function.
$_SESSION['oauth_provider_id'] = $provider_id;
// Redirect browser to google user content page.
$this->load->library('Google_sync');
@ -55,23 +60,28 @@ class Google extends CI_Controller {
* documentation of OAuth), every Easy!Appointments installation should use its own calendar api key. So in every
* api console account, the "http://path-to-e!a/google/oauth_callback" should be included in an allowed redirect URL.
*/
public function oauth_callback() {
if (isset($_GET['code'])) {
public function oauth_callback()
{
if (isset($_GET['code']))
{
$this->load->library('Google_sync');
$token = $this->google_sync->authenticate($_GET['code']);
// Store the token into the database for future reference.
if (isset($_SESSION['oauth_provider_id'])) {
// Store the token into the database for future reference.
if (isset($_SESSION['oauth_provider_id']))
{
$this->load->model('providers_model');
$this->providers_model->set_setting('google_sync', TRUE, $_SESSION['oauth_provider_id']);
$this->providers_model->set_setting('google_token', $token, $_SESSION['oauth_provider_id']);
$this->providers_model->set_setting('google_calendar', 'primary', $_SESSION['oauth_provider_id']);
} else {
} else
{
echo '<h1>Sync provider id not specified!</h1>';
}
} else {
} else
{
echo '<h1>Authorization Failed!</h1>';
}
}
}
/**
@ -83,16 +93,20 @@ class Google extends CI_Controller {
*
* @param int $provider_id Provider record to be synced.
*/
public function sync($provider_id = NULL) {
try {
public function sync($provider_id = NULL)
{
try
{
// The user must be logged in.
$this->load->library('session');
if ($this->session->userdata('user_id') == FALSE) {
if ($this->session->userdata('user_id') == FALSE)
{
return;
}
if ($provider_id === NULL) {
if ($provider_id === NULL)
{
throw new Exception('Provider id not specified.');
}
@ -107,7 +121,8 @@ class Google extends CI_Controller {
// Check whether the selected provider has google sync enabled.
$google_sync = $this->providers_model->get_setting('google_sync', $provider['id']);
if (!$google_sync) {
if ( ! $google_sync)
{
throw new Exception('The selected provider has not the google synchronization setting enabled.');
}
@ -121,42 +136,49 @@ class Google extends CI_Controller {
$start = strtotime('-' . $sync_past_days . ' days', strtotime(date('Y-m-d')));
$end = strtotime('+' . $sync_future_days . ' days', strtotime(date('Y-m-d')));
$where_clause = array(
$where_clause = [
'start_datetime >=' => date('Y-m-d H:i:s', $start),
'end_datetime <=' => date('Y-m-d H:i:s', $end),
'id_users_provider' => $provider['id']
);
];
$appointments = $this->appointments_model->get_batch($where_clause);
$company_settings = array(
$company_settings = [
'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')
);
];
// Sync each appointment with Google Calendar by following the project's sync protocol (see documentation).
foreach($appointments as $appointment) {
if ($appointment['is_unavailable'] == FALSE) {
foreach ($appointments as $appointment)
{
if ($appointment['is_unavailable'] == FALSE)
{
$service = $this->services_model->get_row($appointment['id_services']);
$customer = $this->customers_model->get_row($appointment['id_users_customer']);
} else {
} else
{
$service = NULL;
$customer = NULL;
}
// If current appointment not synced yet, add to gcal.
if ($appointment['id_google_calendar'] == NULL) {
if ($appointment['id_google_calendar'] == NULL)
{
$google_event = $this->google_sync->add_appointment($appointment, $provider,
$service, $customer, $company_settings);
$service, $customer, $company_settings);
$appointment['id_google_calendar'] = $google_event->id;
$this->appointments_model->add($appointment); // Save gcal id
} else {
} else
{
// Appointment is synced with google calendar.
try {
try
{
$google_event = $this->google_sync->get_event($provider, $appointment['id_google_calendar']);
if ($google_event->status == 'cancelled') {
if ($google_event->status == 'cancelled')
{
throw new Exception('Event is cancelled, remove the record from Easy!Appointments.');
}
@ -167,17 +189,20 @@ class Google extends CI_Controller {
$event_start = strtotime($google_event->getStart()->getDateTime());
$event_end = strtotime($google_event->getEnd()->getDateTime());
if ($appt_start != $event_start || $appt_end != $event_end) {
if ($appt_start != $event_start || $appt_end != $event_end)
{
$is_different = TRUE;
}
if ($is_different) {
if ($is_different)
{
$appointment['start_datetime'] = date('Y-m-d H:i:s', $event_start);
$appointment['end_datetime'] = date('Y-m-d H:i:s', $event_end);
$this->appointments_model->add($appointment);
}
} catch(Exception $exc) {
} catch (Exception $exc)
{
// Appointment not found on gcal, delete from e!a.
$this->appointments_model->delete($appointment['id']);
$appointment['id_google_calendar'] = NULL;
@ -189,11 +214,13 @@ class Google extends CI_Controller {
$google_calendar = $provider['settings']['google_calendar'];
$events = $this->google_sync->get_sync_events($google_calendar, $start, $end);
foreach($events->getItems() as $event) {
$results = $this->appointments_model->get_batch(array('id_google_calendar' => $event->getId()));
if (count($results) == 0) {
foreach ($events->getItems() as $event)
{
$results = $this->appointments_model->get_batch(['id_google_calendar' => $event->getId()]);
if (count($results) == 0)
{
// Record doesn't exist in E!A, so add the event now.
$appointment = array(
$appointment = [
'start_datetime' => date('Y-m-d H:i:s', strtotime($event->start->getDateTime())),
'end_datetime' => date('Y-m-d H:i:s', strtotime($event->end->getDateTime())),
'is_unavailable' => TRUE,
@ -202,17 +229,18 @@ class Google extends CI_Controller {
'id_google_calendar' => $event->getId(),
'id_users_customer' => NULL,
'id_services' => NULL,
);
];
$this->appointments_model->add($appointment);
}
}
echo json_encode(AJAX_SUCCESS);
} catch(Exception $exc) {
echo json_encode(array(
'exceptions' => array(exceptionToJavaScript($exc))
));
} catch (Exception $exc)
{
echo json_encode([
'exceptions' => [exceptionToJavaScript($exc)]
]);
}
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -22,16 +25,19 @@ class Installation extends CI_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->helper('installation');
$this->load->library('session');
// Set user's selected language.
if ($this->session->userdata('language')) {
if ($this->session->userdata('language'))
{
$this->config->set_item('language', $this->session->userdata('language'));
$this->lang->load('translations', $this->session->userdata('language'));
} else {
} else
{
$this->lang->load('translations', $this->config->item('language')); // default
}
}
@ -39,15 +45,17 @@ class Installation extends CI_Controller {
/**
* Display the installation page.
*/
public function index() {
if (is_ea_installed()) {
public function index()
{
if (is_ea_installed())
{
redirect('appointments/index');
return;
}
$this->load->view('general/installation', array(
$this->load->view('general/installation', [
'base_url' => $this->config->item('base_url')
));
]);
}
/**
@ -58,9 +66,12 @@ class Installation extends CI_Controller {
* - array $_POST['admin'] Contains the initial admin user data. The App needs at least one admin user to work.
* - array $_POST['company'] Contains the basic company data.
*/
public function ajax_install() {
try {
if (is_ea_installed()) {
public function ajax_install()
{
try
{
if (is_ea_installed())
{
return;
}
@ -68,7 +79,8 @@ class Installation extends CI_Controller {
$file_contents = file_get_contents(dirname(BASEPATH) . '/assets/sql/structure.sql');
$sql_queries = explode(';', $file_contents);
array_pop($sql_queries);
foreach($sql_queries as $query) {
foreach ($sql_queries as $query)
{
$this->db->query($query);
}
@ -76,13 +88,14 @@ class Installation extends CI_Controller {
$file_contents = file_get_contents(dirname(BASEPATH) . '/assets/sql/data.sql');
$sql_queries = explode(';', $file_contents);
array_pop($sql_queries);
foreach($sql_queries as $query) {
foreach ($sql_queries as $query)
{
$this->db->query($query);
}
// Insert admin
$this->load->model('admins_model');
$admin = json_decode($_POST['admin'], true);
$admin = json_decode($_POST['admin'], TRUE);
$admin['settings']['username'] = $admin['username'];
$admin['settings']['password'] = $admin['password'];
$admin['settings']['calendar_view'] = CALENDAR_VIEW_DEFAULT;
@ -97,7 +110,7 @@ class Installation extends CI_Controller {
// Save company settings
$this->load->model('settings_model');
$company = json_decode($_POST['company'], true);
$company = json_decode($_POST['company'], TRUE);
$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']);
@ -114,10 +127,11 @@ class Installation extends CI_Controller {
echo json_encode(AJAX_SUCCESS);
} catch (Exception $exc) {
echo json_encode(array(
'exceptions' => array(exceptionToJavaScript($exc))
));
} catch (Exception $exc)
{
echo json_encode([
'exceptions' => [exceptionToJavaScript($exc)]
]);
}
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -23,16 +26,19 @@ class User extends CI_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->library('session');
// Set user's selected language.
if ($this->session->userdata('language')) {
$this->config->set_item('language', $this->session->userdata('language'));
$this->lang->load('translations', $this->session->userdata('language'));
} else {
$this->lang->load('translations', $this->config->item('language')); // default
if ($this->session->userdata('language'))
{
$this->config->set_item('language', $this->session->userdata('language'));
$this->lang->load('translations', $this->session->userdata('language'));
} else
{
$this->lang->load('translations', $this->config->item('language')); // default
}
}
@ -41,20 +47,23 @@ class User extends CI_Controller {
*
* The default method will redirect the browser to the user/login URL.
*/
public function index() {
public function index()
{
header('Location: ' . site_url('user/login'));
}
/**
* Display the login page.
*/
public function login() {
public function login()
{
$this->load->model('settings_model');
$view['base_url'] = $this->config->item('base_url');
$view['dest_url'] = $this->session->userdata('dest_url');
if (!$view['dest_url']) {
if ( ! $view['dest_url'])
{
$view['dest_url'] = site_url('backend');
}
@ -65,7 +74,8 @@ class User extends CI_Controller {
/**
* Display the logout page.
*/
public function logout() {
public function logout()
{
$this->load->model('settings_model');
$this->session->unset_userdata('user_id');
@ -82,7 +92,8 @@ class User extends CI_Controller {
/**
* Display the "forgot password" page.
*/
public function forgot_password() {
public function forgot_password()
{
$this->load->model('settings_model');
$view['base_url'] = $this->config->item('base_url');
$view['company_name'] = $this->settings_model->get_setting('company_name');
@ -92,7 +103,8 @@ class User extends CI_Controller {
/**
* Display the "not authorized" page.
*/
public function no_privileges() {
public function no_privileges()
{
$this->load->model('settings_model');
$view['base_url'] = $this->config->item('base_url');
$view['company_name'] = $this->settings_model->get_setting('company_name');
@ -108,26 +120,32 @@ class User extends CI_Controller {
* - 'role_slug'
* - 'dest_url'
*/
public function ajax_check_login() {
try {
if (!isset($_POST['username']) || !isset($_POST['password'])) {
public function ajax_check_login()
{
try
{
if ( ! isset($_POST['username']) || ! isset($_POST['password']))
{
throw new Exception('Invalid credentials given!');
}
$this->load->model('user_model');
$user_data = $this->user_model->check_login($_POST['username'], $_POST['password']);
if ($user_data) {
if ($user_data)
{
$this->session->set_userdata($user_data); // Save data on user's session.
echo json_encode(AJAX_SUCCESS);
} else {
} else
{
echo json_encode(AJAX_FAILURE);
}
} catch(Exception $exc) {
echo json_encode(array(
'exceptions' => array(exceptionToJavaScript($exc))
));
} catch (Exception $exc)
{
echo json_encode([
'exceptions' => [exceptionToJavaScript($exc)]
]);
}
}
@ -140,11 +158,14 @@ class User extends CI_Controller {
* - string $_POST['username'] Username to be validated.
* - string $_POST['email'] Email to be validated.
*/
public function ajax_forgot_password() {
try {
if (!isset($_POST['username']) || !isset($_POST['email'])) {
public function ajax_forgot_password()
{
try
{
if ( ! isset($_POST['username']) || ! isset($_POST['email']))
{
throw new Exception('You must enter a valid username and email address in '
. 'order to get a new password!');
. 'order to get a new password!');
}
$this->load->model('user_model');
@ -152,23 +173,25 @@ class User extends CI_Controller {
$new_password = $this->user_model->regenerate_password($_POST['username'], $_POST['email']);
if ($new_password != FALSE) {
$this->config->load('email');
if ($new_password != FALSE)
{
$this->config->load('email');
$email = new \EA\Engine\Notifications\Email($this, $this->config->config);
$company_settings = array(
$company_settings = [
'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')
);
];
$email->sendPassword(new NonEmptyText($new_password), new Email($_POST['email']), $company_settings);
}
echo ($new_password != FALSE) ? json_encode(AJAX_SUCCESS) : json_encode(AJAX_FAILURE);
} catch(Exception $exc) {
echo json_encode(array(
'exceptions' => array(exceptionToJavaScript($exc))
));
} catch (Exception $exc)
{
echo json_encode([
'exceptions' => [exceptionToJavaScript($exc)]
]);
}
}
}

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -14,7 +17,7 @@
use \EA\Engine\Types\NonEmptyText;
/**
* API V1 Controller
* API V1 Controller
*
* Parent controller class for the API v1 resources. Extend this class instead of the CI_Controller
* and call the parent constructor.
@ -24,37 +27,42 @@ use \EA\Engine\Types\NonEmptyText;
*/
class API_V1_Controller extends CI_Controller {
/**
* Class Constructor
* Class Constructor
*
* This constructor will handle the common operations of each API call.
* This constructor will handle the common operations of each API call.
*
* Important: Do not forget to call the this constructor from the child classes.
*
* Notice: At the time being only the basic authentication is supported. Make sure
* Notice: At the time being only the basic authentication is supported. Make sure
* that you use the API through SSL/TLS for security.
*/
public function __construct() {
if (!isset($_SERVER['PHP_AUTH_USER'])) {
public function __construct()
{
if ( ! isset($_SERVER['PHP_AUTH_USER']))
{
$this->_requestAuthentication();
return;
return;
}
parent::__construct();
try {
try
{
$username = new NonEmptyText($_SERVER['PHP_AUTH_USER']);
$password = new NonEmptyText($_SERVER['PHP_AUTH_PW']);
$authorization = new \EA\Engine\Api\V1\Authorization($this);
$authorization->basic($username, $password);
} catch(\Exception $exception) {
exit($this->_handleException($exception));
$authorization = new \EA\Engine\Api\V1\Authorization($this);
$authorization->basic($username, $password);
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* Sets request authentication headers.
*/
protected function _requestAuthentication() {
protected function _requestAuthentication()
{
header('WWW-Authenticate: Basic realm="Easy!Appointments"');
header('HTTP/1.0 401 Unauthorized');
exit('You are not authorized to use the API.');
@ -64,31 +72,33 @@ class API_V1_Controller extends CI_Controller {
* Outputs the required headers and messages for exception handling.
*
* Call this method from catch blocks of child controller callbacks.
*
*
* @param \Exception $exception Thrown exception to be outputted.
*/
protected function _handleException(\Exception $exception) {
protected function _handleException(\Exception $exception)
{
$error = [
'code' => $exception->getCode() ?: 500,
'message'=> $exception->getMessage(),
];
'message' => $exception->getMessage(),
];
$header = $exception instanceof \EA\Engine\Api\V1\Exception
? $exception->getCode() . ' ' . $exception->getHeader()
$header = $exception instanceof \EA\Engine\Api\V1\Exception
? $exception->getCode() . ' ' . $exception->getHeader()
: '500 Internal Server Error';
header('HTTP/1.0 ' . $header);
header('Content-Type: application/json');
echo json_encode($error, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
echo json_encode($error, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
}
/**
* Throw an API exception stating that the requested record was not found.
*
* Throw an API exception stating that the requested record was not found.
*
* @throws \EA\Engine\Api\V1\Exception
*/
protected function _throwRecordNotFound() {
throw new \EA\Engine\Api\V1\Exception('The requested record was not found!', 404, 'Not Found');
protected function _throwRecordNotFound()
{
throw new \EA\Engine\Api\V1\Exception('The requested record was not found!', 404, 'Not Found');
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,7 +29,7 @@ use \EA\Engine\Types\NonEmptyText;
class Admins extends API_V1_Controller {
/**
* Admins Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Admins
*/
protected $parser;
@ -34,37 +37,42 @@ class Admins extends API_V1_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('admins_model');
$this->load->model('admins_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Admins;
}
/**
* GET API Method
*
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
*/
public function get($id = null) {
try {
$condition = $id !== null ? 'id = ' . $id : null;
$admins = $this->admins_model->get_batch($condition);
public function get($id = NULL)
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : NULL;
$admins = $this->admins_model->get_batch($condition);
if ($id !== null && count($admins) === 0) {
if ($id !== NULL && count($admins) === 0)
{
$this->_throwRecordNotFound();
}
$response = new Response($admins);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
@ -72,75 +80,86 @@ class Admins extends API_V1_Controller {
/**
* POST API Method
*/
public function post() {
try {
public function post()
{
try
{
// Insert the admin to the database.
$request = new Request();
$admin = $request->getBody();
$this->parser->decode($admin);
if (isset($admin['id'])) {
$request = new Request();
$admin = $request->getBody();
$this->parser->decode($admin);
if (isset($admin['id']))
{
unset($admin['id']);
}
$id = $this->admins_model->add($admin);
// Fetch the new object from the database and return it to the client.
$batch = $this->admins_model->get_batch('id = ' . $id);
$response = new Response($batch);
$batch = $this->admins_model->get_batch('id = ' . $id);
$response = new Response($batch);
$status = new NonEmptyText('201 Created');
$response->encode($this->parser)->singleEntry(true)->output($status);
} catch (\Exception $exception) {
$response->encode($this->parser)->singleEntry(TRUE)->output($status);
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* PUT API Method
* PUT API Method
*
* @param int $id The record ID to be updated.
*/
public function put($id) {
try {
public function put($id)
{
try
{
// Update the admin record.
$batch = $this->admins_model->get_batch('id = ' . $id);
$batch = $this->admins_model->get_batch('id = ' . $id);
if ($id !== null && count($batch) === 0) {
if ($id !== NULL && count($batch) === 0)
{
$this->_throwRecordNotFound();
}
$request = new Request();
$updatedAdmin = $request->getBody();
$request = new Request();
$updatedAdmin = $request->getBody();
$baseAdmin = $batch[0];
$this->parser->decode($updatedAdmin, $baseAdmin);
$updatedAdmin['id'] = $id;
$this->parser->decode($updatedAdmin, $baseAdmin);
$updatedAdmin['id'] = $id;
$id = $this->admins_model->add($updatedAdmin);
// Fetch the updated object from the database and return it to the client.
$batch = $this->admins_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception) {
$batch = $this->admins_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param int $id The record ID to be deleted.
*/
public function delete($id) {
try {
public function delete($id)
{
try
{
$this->admins_model->delete($id);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,122 +29,138 @@ use \EA\Engine\Types\NonEmptyText;
class Appointments extends API_V1_Controller {
/**
* Appointments Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Appointments
*/
protected $parser;
protected $parser;
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('appointments_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Appointments;
}
/**
* GET API Method
*
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
*/
public function get($id = null) {
try {
$condition = $id !== null ? 'id = ' . $id : null;
$appointments = $this->appointments_model->get_batch($condition);
public function get($id = NULL)
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : NULL;
$appointments = $this->appointments_model->get_batch($condition);
if ($id !== null && count($appointments) === 0) {
if ($id !== NULL && count($appointments) === 0)
{
$this->_throwRecordNotFound();
}
$response = new Response($appointments);
$response = new Response($appointments);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* POST API Method
* POST API Method
*/
public function post() {
try {
public function post()
{
try
{
// Insert the appointment to the database.
$request = new Request();
$request = new Request();
$appointment = $request->getBody();
$this->parser->decode($appointment);
$this->parser->decode($appointment);
if (isset($appointment['id'])) {
if (isset($appointment['id']))
{
unset($appointment['id']);
}
$id = $this->appointments_model->add($appointment);
// Fetch the new object from the database and return it to the client.
$batch = $this->appointments_model->get_batch('id = ' . $id);
$response = new Response($batch);
$batch = $this->appointments_model->get_batch('id = ' . $id);
$response = new Response($batch);
$status = new NonEmptyText('201 Created');
$response->encode($this->parser)->singleEntry(true)->output($status);
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
$response->encode($this->parser)->singleEntry(TRUE)->output($status);
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* PUT API Method
* PUT API Method
*
* @param int $id The record ID to be updated.
*/
public function put($id) {
try {
public function put($id)
{
try
{
// Update the appointment record.
$batch = $this->appointments_model->get_batch('id = ' . $id);
$batch = $this->appointments_model->get_batch('id = ' . $id);
if ($id !== null && count($batch) === 0) {
if ($id !== NULL && count($batch) === 0)
{
$this->_throwRecordNotFound();
}
$request = new Request();
$updatedAppointment = $request->getBody();
$request = new Request();
$updatedAppointment = $request->getBody();
$baseAppointment = $batch[0];
$this->parser->decode($updatedAppointment, $baseAppointment);
$updatedAppointment['id'] = $id;
$this->parser->decode($updatedAppointment, $baseAppointment);
$updatedAppointment['id'] = $id;
$id = $this->appointments_model->add($updatedAppointment);
// Fetch the updated object from the database and return it to the client.
$batch = $this->appointments_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
$batch = $this->appointments_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param int $id The record ID to be deleted.
*/
public function delete($id) {
try {
public function delete($id)
{
try
{
$this->appointments_model->delete($id);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,7 +29,8 @@ class Availabilities extends API_V1_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('appointments_model');
$this->load->model('providers_model');
@ -40,26 +44,31 @@ class Availabilities extends API_V1_Controller {
* Provide the "providerId", "serviceId" and "date" GET parameters to get the availabilities for a specific date.
* If no "date" was provided then the current date will be used.
*/
public function get() {
try {
public function get()
{
try
{
$providerId = new UnsignedInteger($this->input->get('providerId'));
$serviceId = new UnsignedInteger($this->input->get('serviceId'));
if ($this->input->get('date')) {
if ($this->input->get('date'))
{
$date = new DateTime($this->input->get('date'));
} else {
} else
{
$date = new DateTime();
}
$service = $this->services_model->get_row($serviceId->get());
$emptyPeriods = $this->_getProviderAvailableTimePeriods($providerId->get(),
$date->format('Y-m-d'), []);
$date->format('Y-m-d'), []);
$availableHours = $this->_calculateAvailableHours($emptyPeriods,
$date->format('Y-m-d'), $service['duration'], false, $service['availabilities_type']);
$date->format('Y-m-d'), $service['duration'], FALSE, $service['availabilities_type']);
if ($service['attendants_number'] > 1) {
if ($service['attendants_number'] > 1)
{
$this->_getMultipleAttendantsHours($availableHours, $service['attendants_number'], $service['id'],
$date->format('Y-m-d'));
}
@ -68,7 +77,8 @@ class Availabilities extends API_V1_Controller {
->set_content_type('application/json')
->set_output(json_encode($availableHours));
} catch(\Exception $exception) {
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
@ -88,25 +98,31 @@ class Availabilities extends API_V1_Controller {
*
* @return array Returns an array with the available time periods of the provider.
*/
protected function _getProviderAvailableTimePeriods($provider_id, $selected_date,
$exclude_appointments = array()) {
protected function _getProviderAvailableTimePeriods(
$provider_id,
$selected_date,
$exclude_appointments = []
) {
$this->load->model('appointments_model');
$this->load->model('providers_model');
// Get the provider's working plan and reserved appointments.
$working_plan = json_decode($this->providers_model->get_setting('working_plan', $provider_id), TRUE);
$where_clause = array(
$where_clause = [
'id_users_provider' => $provider_id
);
];
$reserved_appointments = $this->appointments_model->get_batch($where_clause);
// Sometimes it might be necessary to not take into account some appointment records
// in order to display what the providers' available time periods would be without them.
foreach ($exclude_appointments as $excluded_id) {
foreach ($reserved_appointments as $index => $reserved) {
if ($reserved['id'] == $excluded_id) {
foreach ($exclude_appointments as $excluded_id)
{
foreach ($reserved_appointments as $index => $reserved)
{
if ($reserved['id'] == $excluded_id)
{
unset($reserved_appointments[$index]);
}
}
@ -116,60 +132,70 @@ class Availabilities extends API_V1_Controller {
// a break (if exist). After that every reserved appointment is considered to be
// a taken space in the plan.
$selected_date_working_plan = $working_plan[strtolower(date('l', strtotime($selected_date)))];
$available_periods_with_breaks = array();
$available_periods_with_breaks = [];
if (isset($selected_date_working_plan['breaks'])) {
if (isset($selected_date_working_plan['breaks']))
{
$start = new DateTime($selected_date_working_plan['start']);
$end = new DateTime($selected_date_working_plan['end']);
$available_periods_with_breaks[] = array(
$available_periods_with_breaks[] = [
'start' => $selected_date_working_plan['start'],
'end' => $selected_date_working_plan['end']
);
];
// Split the working plan to available time periods that do not contain the breaks in them.
foreach ($selected_date_working_plan['breaks'] as $index => $break) {
foreach ($selected_date_working_plan['breaks'] as $index => $break)
{
$break_start = new DateTime($break['start']);
$break_end = new DateTime($break['end']);
if ($break_start < $start) {
if ($break_start < $start)
{
$break_start = $start;
}
if ($break_end > $end) {
if ($break_end > $end)
{
$break_end = $end;
}
if ($break_start >= $break_end) {
if ($break_start >= $break_end)
{
continue;
}
foreach ($available_periods_with_breaks as $key => $open_period) {
foreach ($available_periods_with_breaks as $key => $open_period)
{
$s = new DateTime($open_period['start']);
$e = new DateTime($open_period['end']);
if ($s < $break_end && $break_start < $e) { // check for overlap
if ($s < $break_end && $break_start < $e)
{ // check for overlap
$changed = FALSE;
if ($s < $break_start) {
if ($s < $break_start)
{
$open_start = $s;
$open_end = $break_start;
$available_periods_with_breaks[] = array(
$available_periods_with_breaks[] = [
'start' => $open_start->format("H:i"),
'end' => $open_end->format("H:i")
);
];
$changed = TRUE;
}
if ($break_end < $e) {
if ($break_end < $e)
{
$open_start = $break_end;
$open_end = $e;
$available_periods_with_breaks[] = array(
$available_periods_with_breaks[] = [
'start' => $open_start->format("H:i"),
'end' => $open_end->format("H:i")
);
];
$changed = TRUE;
}
if ($changed) {
if ($changed)
{
unset($available_periods_with_breaks[$key]);
}
}
@ -180,41 +206,64 @@ class Availabilities extends API_V1_Controller {
// Break the empty periods with the reserved appointments.
$available_periods_with_appointments = $available_periods_with_breaks;
foreach($reserved_appointments as $appointment) {
foreach($available_periods_with_appointments as $index => &$period) {
foreach ($reserved_appointments as $appointment)
{
foreach ($available_periods_with_appointments as $index => &$period)
{
$a_start = strtotime($appointment['start_datetime']);
$a_end = strtotime($appointment['end_datetime']);
$p_start = strtotime($selected_date . ' ' . $period['start']);
$p_end = strtotime($selected_date . ' ' .$period['end']);
$a_end = strtotime($appointment['end_datetime']);
$p_start = strtotime($selected_date . ' ' . $period['start']);
$p_end = strtotime($selected_date . ' ' . $period['end']);
if ($a_start <= $p_start && $a_end <= $p_end && $a_end <= $p_start) {
if ($a_start <= $p_start && $a_end <= $p_end && $a_end <= $p_start)
{
// The appointment does not belong in this time period, so we
// will not change anything.
} else if ($a_start <= $p_start && $a_end <= $p_end && $a_end >= $p_start) {
// The appointment starts before the period and finishes somewhere inside.
// We will need to break this period and leave the available part.
$period['start'] = date('H:i', $a_end);
} else if ($a_start >= $p_start && $a_end <= $p_end) {
// The appointment is inside the time period, so we will split the period
// into two new others.
unset($available_periods_with_appointments[$index]);
$available_periods_with_appointments[] = array(
'start' => date('H:i', $p_start),
'end' => date('H:i', $a_start)
);
$available_periods_with_appointments[] = array(
'start' => date('H:i', $a_end),
'end' => date('H:i', $p_end)
);
} else if ($a_start >= $p_start && $a_end >= $p_start && $a_start <= $p_end) {
// The appointment starts in the period and finishes out of it. We will
// need to remove the time that is taken from the appointment.
$period['end'] = date('H:i', $a_start);
} else if ($a_start >= $p_start && $a_end >= $p_end && $a_start >= $p_end) {
// The appointment does not belong in the period so do not change anything.
} else if ($a_start <= $p_start && $a_end >= $p_end && $a_start <= $p_end) {
// The appointment is bigger than the period, so this period needs to be removed.
unset($available_periods_with_appointments[$index]);
} else
{
if ($a_start <= $p_start && $a_end <= $p_end && $a_end >= $p_start)
{
// The appointment starts before the period and finishes somewhere inside.
// We will need to break this period and leave the available part.
$period['start'] = date('H:i', $a_end);
} else
{
if ($a_start >= $p_start && $a_end <= $p_end)
{
// The appointment is inside the time period, so we will split the period
// into two new others.
unset($available_periods_with_appointments[$index]);
$available_periods_with_appointments[] = [
'start' => date('H:i', $p_start),
'end' => date('H:i', $a_start)
];
$available_periods_with_appointments[] = [
'start' => date('H:i', $a_end),
'end' => date('H:i', $p_end)
];
} else
{
if ($a_start >= $p_start && $a_end >= $p_start && $a_start <= $p_end)
{
// The appointment starts in the period and finishes out of it. We will
// need to remove the time that is taken from the appointment.
$period['end'] = date('H:i', $a_start);
} else
{
if ($a_start >= $p_start && $a_end >= $p_end && $a_start >= $p_end)
{
// The appointment does not belong in the period so do not change anything.
} else
{
if ($a_start <= $p_start && $a_end >= $p_end && $a_start <= $p_end)
{
// The appointment is bigger than the period, so this period needs to be removed.
unset($available_periods_with_appointments[$index]);
}
}
}
}
}
}
}
}
@ -238,13 +287,19 @@ class Availabilities extends API_V1_Controller {
*
* @return array Returns an array with the available hours for the appointment.
*/
protected function _calculateAvailableHours(array $empty_periods, $selected_date, $service_duration,
$manage_mode = FALSE, $availabilities_type = 'flexible') {
protected function _calculateAvailableHours(
array $empty_periods,
$selected_date,
$service_duration,
$manage_mode = FALSE,
$availabilities_type = 'flexible'
) {
$this->load->model('settings_model');
$available_hours = array();
$available_hours = [];
foreach ($empty_periods as $period) {
foreach ($empty_periods as $period)
{
$start_hour = new DateTime($selected_date . ' ' . $period['start']);
$end_hour = new DateTime($selected_date . ' ' . $period['end']);
$interval = $availabilities_type === AVAILABILITIES_TYPE_FIXED ? (int)$service_duration : 15;
@ -252,7 +307,8 @@ class Availabilities extends API_V1_Controller {
$current_hour = $start_hour;
$diff = $current_hour->diff($end_hour);
while (($diff->h * 60 + $diff->i) >= intval($service_duration)) {
while (($diff->h * 60 + $diff->i) >= intval($service_duration))
{
$available_hours[] = $current_hour->format('H:i');
$current_hour->add(new DateInterval('PT' . $interval . 'M'));
$diff = $current_hour->diff($end_hour);
@ -262,20 +318,23 @@ class Availabilities extends API_V1_Controller {
// If the selected date is today, remove past hours. It is important include the timeout before
// booking that is set in the back-office the system. Normally we might want the customer to book
// an appointment that is at least half or one hour from now. The setting is stored in minutes.
if (date('m/d/Y', strtotime($selected_date)) === date('m/d/Y')) {
if (date('m/d/Y', strtotime($selected_date)) === date('m/d/Y'))
{
$book_advance_timeout = $this->settings_model->get_setting('book_advance_timeout');
foreach($available_hours as $index => $value) {
foreach ($available_hours as $index => $value)
{
$available_hour = strtotime($value);
$current_hour = strtotime('+' . $book_advance_timeout . ' minutes', strtotime('now'));
if ($available_hour <= $current_hour) {
if ($available_hour <= $current_hour)
{
unset($available_hours[$index]);
}
}
}
$available_hours = array_values($available_hours);
sort($available_hours, SORT_STRING );
sort($available_hours, SORT_STRING);
$available_hours = array_values($available_hours);
return $available_hours;
@ -291,25 +350,31 @@ class Availabilities extends API_V1_Controller {
* @param int $service_id Selected service ID.
* @param string $selected_date The selected appointment date.
*/
protected function _getMultipleAttendantsHours(&$available_hours, $attendants_number, $service_id,
$selected_date) {
protected function _getMultipleAttendantsHours(
&$available_hours,
$attendants_number,
$service_id,
$selected_date
) {
$this->load->model('appointments_model');
$appointments = $this->appointments_model->get_batch(
'id_services = ' . $this->db->escape($service_id) . ' AND DATE(start_datetime) = DATE('
. $this->db->escape(date('Y-m-d', strtotime($selected_date))) . ')');
foreach($appointments as $appointment) {
foreach ($appointments as $appointment)
{
$hour = date('H:i', strtotime($appointment['start_datetime']));
$current_attendants_number = $this->appointments_model->appointment_count_for_hour($service_id,
$selected_date, $hour);
if ($current_attendants_number < $attendants_number && !in_array($hour, $available_hours)) {
$selected_date, $hour);
if ($current_attendants_number < $attendants_number && ! in_array($hour, $available_hours))
{
$available_hours[] = $hour;
}
}
$available_hours = array_values($available_hours);
sort($available_hours, SORT_STRING );
$available_hours = array_values($available_hours);
sort($available_hours, SORT_STRING);
$available_hours = array_values($available_hours);
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,45 +29,50 @@ use \EA\Engine\Types\NonEmptyText;
class Categories extends API_V1_Controller {
/**
* Categories Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Categories
*/
protected $parser;
protected $parser;
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('services_model');
$this->load->model('services_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Categories;
}
/**
* GET API Method
*
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
*/
public function get($id = null) {
try {
$condition = $id !== null ? 'id = ' . $id : '';
$categories = $this->services_model->get_all_categories($condition);
public function get($id = NULL)
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : '';
$categories = $this->services_model->get_all_categories($condition);
if ($id !== null && count($categories) === 0) {
if ($id !== NULL && count($categories) === 0)
{
$this->_throwRecordNotFound();
}
$response = new Response($categories);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
@ -72,75 +80,86 @@ class Categories extends API_V1_Controller {
/**
* POST API Method
*/
public function post() {
try {
public function post()
{
try
{
// Insert the category to the database.
$request = new Request();
$category = $request->getBody();
$this->parser->decode($category);
if (isset($category['id'])) {
$request = new Request();
$category = $request->getBody();
$this->parser->decode($category);
if (isset($category['id']))
{
unset($category['id']);
}
$id = $this->services_model->add_category($category);
// Fetch the new object from the database and return it to the client.
$batch = $this->services_model->get_all_categories('id = ' . $id);
$response = new Response($batch);
$batch = $this->services_model->get_all_categories('id = ' . $id);
$response = new Response($batch);
$status = new NonEmptyText('201 Created');
$response->encode($this->parser)->singleEntry(true)->output($status);
} catch (\Exception $exception) {
$response->encode($this->parser)->singleEntry(TRUE)->output($status);
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* PUT API Method
* PUT API Method
*
* @param int $id The record ID to be updated.
* @param int $id The record ID to be updated.
*/
public function put($id) {
try {
public function put($id)
{
try
{
// Update the category record.
$batch = $this->services_model->get_all_categories('id = ' . $id);
$batch = $this->services_model->get_all_categories('id = ' . $id);
if ($id !== null && count($batch) === 0) {
if ($id !== NULL && count($batch) === 0)
{
$this->_throwRecordNotFound();
}
$request = new Request();
$updatedCategory = $request->getBody();
$request = new Request();
$updatedCategory = $request->getBody();
$baseCategory = $batch[0];
$this->parser->decode($updatedCategory, $baseCategory);
$updatedCategory['id'] = $id;
$this->parser->decode($updatedCategory, $baseCategory);
$updatedCategory['id'] = $id;
$id = $this->services_model->add_category($updatedCategory);
// Fetch the updated object from the database and return it to the client.
$batch = $this->services_model->get_all_categories('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception) {
$batch = $this->services_model->get_all_categories('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param int $id The record ID to be deleted.
* @param int $id The record ID to be deleted.
*/
public function delete($id) {
try {
public function delete($id)
{
try
{
$result = $this->services_model->delete_category($id);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,7 +29,7 @@ use \EA\Engine\Types\NonEmptyText;
class Customers extends API_V1_Controller {
/**
* Customers Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Customers
*/
protected $parser;
@ -34,113 +37,129 @@ class Customers extends API_V1_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('customers_model');
$this->load->model('customers_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Customers;
}
/**
* GET API Method
*
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
*/
public function get($id = null) {
try {
$condition = $id !== null ? 'id = ' . $id : null;
$customers = $this->customers_model->get_batch($condition);
public function get($id = NULL)
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : NULL;
$customers = $this->customers_model->get_batch($condition);
if ($id !== null && count($customers) === 0) {
if ($id !== NULL && count($customers) === 0)
{
$this->_throwRecordNotFound();
}
$response = new Response($customers);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* POST API Method
* POST API Method
*/
public function post() {
try {
public function post()
{
try
{
// Insert the customer to the database.
$request = new Request();
$customer = $request->getBody();
$this->parser->decode($customer);
if (isset($customer['id'])) {
$request = new Request();
$customer = $request->getBody();
$this->parser->decode($customer);
if (isset($customer['id']))
{
unset($customer['id']);
}
$id = $this->customers_model->add($customer);
// Fetch the new object from the database and return it to the client.
$batch = $this->customers_model->get_batch('id = ' . $id);
$response = new Response($batch);
$batch = $this->customers_model->get_batch('id = ' . $id);
$response = new Response($batch);
$status = new NonEmptyText('201 Created');
$response->encode($this->parser)->singleEntry(true)->output($status);
} catch (\Exception $exception) {
$response->encode($this->parser)->singleEntry(TRUE)->output($status);
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* PUT API Method
* PUT API Method
*
* @param int $id The record ID to be updated.
*/
public function put($id) {
try {
public function put($id)
{
try
{
// Update the customer record.
$batch = $this->customers_model->get_batch('id = ' . $id);
$batch = $this->customers_model->get_batch('id = ' . $id);
if ($id !== null && count($batch) === 0) {
if ($id !== NULL && count($batch) === 0)
{
$this->_throwRecordNotFound();
}
$request = new Request();
$updatedCustomer = $request->getBody();
$request = new Request();
$updatedCustomer = $request->getBody();
$baseCustomer = $batch[0];
$this->parser->decode($updatedCustomer, $baseCustomer);
$updatedCustomer['id'] = $id;
$this->parser->decode($updatedCustomer, $baseCustomer);
$updatedCustomer['id'] = $id;
$id = $this->customers_model->add($updatedCustomer);
// Fetch the updated object from the database and return it to the client.
$batch = $this->customers_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception) {
$batch = $this->customers_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param int $id The record ID to be deleted.
*/
public function delete($id) {
try {
public function delete($id)
{
try
{
$result = $this->customers_model->delete($id);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,7 +29,7 @@ use \EA\Engine\Types\NonEmptyText;
class Providers extends API_V1_Controller {
/**
* Providers Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Providers
*/
protected $parser;
@ -34,113 +37,129 @@ class Providers extends API_V1_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('providers_model');
$this->load->model('providers_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Providers;
}
/**
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
*/
public function get($id = null) {
try {
$condition = $id !== null ? 'id = ' . $id : null;
$providers = $this->providers_model->get_batch($condition);
public function get($id = NULL)
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : NULL;
$providers = $this->providers_model->get_batch($condition);
if ($id !== null && count($providers) === 0) {
if ($id !== NULL && count($providers) === 0)
{
$this->_throwRecordNotFound();
}
$response = new Response($providers);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* POST API Method
* POST API Method
*/
public function post() {
try {
public function post()
{
try
{
// Insert the provider to the database.
$request = new Request();
$provider = $request->getBody();
$this->parser->decode($provider);
if (isset($provider['id'])) {
$request = new Request();
$provider = $request->getBody();
$this->parser->decode($provider);
if (isset($provider['id']))
{
unset($provider['id']);
}
$id = $this->providers_model->add($provider);
// Fetch the new object from the database and return it to the client.
$batch = $this->providers_model->get_batch('id = ' . $id);
$response = new Response($batch);
$batch = $this->providers_model->get_batch('id = ' . $id);
$response = new Response($batch);
$status = new NonEmptyText('201 Created');
$response->encode($this->parser)->singleEntry(true)->output($status);
} catch (\Exception $exception) {
$response->encode($this->parser)->singleEntry(TRUE)->output($status);
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* PUT API Method
* PUT API Method
*
* @param int $id The record ID to be updated.
* @param int $id The record ID to be updated.
*/
public function put($id) {
try {
public function put($id)
{
try
{
// Update the provider record.
$batch = $this->providers_model->get_batch('id = ' . $id);
$batch = $this->providers_model->get_batch('id = ' . $id);
if ($id !== null && count($batch) === 0) {
if ($id !== NULL && count($batch) === 0)
{
$this->_throwRecordNotFound();
}
$request = new Request();
$updatedProvider = $request->getBody();
$request = new Request();
$updatedProvider = $request->getBody();
$baseProvider = $batch[0];
$this->parser->decode($updatedProvider, $baseProvider);
$updatedProvider['id'] = $id;
$this->parser->decode($updatedProvider, $baseProvider);
$updatedProvider['id'] = $id;
$id = $this->providers_model->add($updatedProvider);
// Fetch the updated object from the database and return it to the client.
$batch = $this->providers_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception) {
$batch = $this->providers_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param int $id The record ID to be deleted.
* @param int $id The record ID to be deleted.
*/
public function delete($id) {
try {
public function delete($id)
{
try
{
$result = $this->providers_model->delete($id);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,7 +29,7 @@ use \EA\Engine\Types\NonEmptyText;
class Secretaries extends API_V1_Controller {
/**
* Secretaries Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Secretaries
*/
protected $parser;
@ -34,113 +37,129 @@ class Secretaries extends API_V1_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('secretaries_model');
$this->load->model('secretaries_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Secretaries;
}
/**
* GET API Method
*
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
*/
public function get($id = null) {
try {
$condition = $id !== null ? 'id = ' . $id : null;
$secretaries = $this->secretaries_model->get_batch($condition);
public function get($id = NULL)
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : NULL;
$secretaries = $this->secretaries_model->get_batch($condition);
if ($id !== null && count($secretaries) === 0) {
if ($id !== NULL && count($secretaries) === 0)
{
$this->_throwRecordNotFound();
}
$response = new Response($secretaries);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* POST API Method
* POST API Method
*/
public function post() {
try {
public function post()
{
try
{
// Insert the secretary to the database.
$request = new Request();
$secretary = $request->getBody();
$this->parser->decode($secretary);
if (isset($secretary['id'])) {
$request = new Request();
$secretary = $request->getBody();
$this->parser->decode($secretary);
if (isset($secretary['id']))
{
unset($secretary['id']);
}
$id = $this->secretaries_model->add($secretary);
// Fetch the new object from the database and return it to the client.
$batch = $this->secretaries_model->get_batch('id = ' . $id);
$response = new Response($batch);
$batch = $this->secretaries_model->get_batch('id = ' . $id);
$response = new Response($batch);
$status = new NonEmptyText('201 Created');
$response->encode($this->parser)->singleEntry(true)->output($status);
} catch (\Exception $exception) {
$response->encode($this->parser)->singleEntry(TRUE)->output($status);
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* PUT API Method
* PUT API Method
*
* @param int $id The record ID to be updated.
*/
public function put($id) {
try {
public function put($id)
{
try
{
// Update the secretary record.
$batch = $this->secretaries_model->get_batch('id = ' . $id);
$batch = $this->secretaries_model->get_batch('id = ' . $id);
if ($id !== null && count($batch) === 0) {
if ($id !== NULL && count($batch) === 0)
{
$this->_throwRecordNotFound();
}
$request = new Request();
$updatedSecretary = $request->getBody();
$request = new Request();
$updatedSecretary = $request->getBody();
$baseSecretary = $batch[0];
$this->parser->decode($updatedSecretary, $baseSecretary);
$updatedSecretary['id'] = $id;
$this->parser->decode($updatedSecretary, $baseSecretary);
$updatedSecretary['id'] = $id;
$id = $this->secretaries_model->add($updatedSecretary);
// Fetch the updated object from the database and return it to the client.
$batch = $this->secretaries_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception) {
$batch = $this->secretaries_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param int $id The record ID to be deleted.
* @param int $id The record ID to be deleted.
*/
public function delete($id) {
try {
public function delete($id)
{
try
{
$result = $this->secretaries_model->delete($id);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,121 +29,137 @@ use \EA\Engine\Types\NonEmptyText;
class Services extends API_V1_Controller {
/**
* Services Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Services
*/
protected $parser;
protected $parser;
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('services_model');
$this->load->model('services_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Services;
}
/**
* GET API Method
*
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
*/
public function get($id = null) {
try {
$condition = $id !== null ? 'id = ' . $id : null;
$services = $this->services_model->get_batch($condition);
public function get($id = NULL)
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : NULL;
$services = $this->services_model->get_batch($condition);
if ($id !== null && count($services) === 0) {
if ($id !== NULL && count($services) === 0)
{
$this->_throwRecordNotFound();
}
$response = new Response($services);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* POST API Method
* POST API Method
*/
public function post() {
try {
public function post()
{
try
{
// Insert the service to the database.
$request = new Request();
$service = $request->getBody();
$this->parser->decode($service);
if (isset($service['id'])) {
$request = new Request();
$service = $request->getBody();
$this->parser->decode($service);
if (isset($service['id']))
{
unset($service['id']);
}
$id = $this->services_model->add($service);
// Fetch the new object from the database and return it to the client.
$batch = $this->services_model->get_batch('id = ' . $id);
$response = new Response($batch);
$batch = $this->services_model->get_batch('id = ' . $id);
$response = new Response($batch);
$status = new NonEmptyText('201 Created');
$response->encode($this->parser)->singleEntry(true)->output($status);
} catch (\Exception $exception) {
$response->encode($this->parser)->singleEntry(TRUE)->output($status);
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* PUT API Method
* PUT API Method
*
* @param int $id The record ID to be updated.
*/
public function put($id) {
try {
public function put($id)
{
try
{
// Update the service record.
$batch = $this->services_model->get_batch('id = ' . $id);
$batch = $this->services_model->get_batch('id = ' . $id);
if ($id !== null && count($batch) === 0) {
if ($id !== NULL && count($batch) === 0)
{
$this->_throwRecordNotFound();
}
$request = new Request();
$updatedService = $request->getBody();
$request = new Request();
$updatedService = $request->getBody();
$baseService = $batch[0];
$this->parser->decode($updatedService, $baseService);
$updatedService['id'] = $id;
$this->parser->decode($updatedService, $baseService);
$updatedService['id'] = $id;
$id = $this->services_model->add($updatedService);
// Fetch the updated object from the database and return it to the client.
$batch = $this->services_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception) {
$batch = $this->services_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param int $id The record ID to be deleted.
*/
public function delete($id) {
try {
public function delete($id)
{
try
{
$result = $this->services_model->delete($id);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch (\Exception $exception) {
} catch (\Exception $exception)
{
$this->_handleException($exception);
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -25,40 +28,47 @@ use \EA\Engine\Api\V1\Request;
class Settings extends API_V1_Controller {
/**
* Settings Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Settings
*/
protected $parser;
protected $parser;
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('settings_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Settings;
}
/**
* GET API Method
*
* GET API Method
*
* @param string $name Optional (null), the setting name to be returned.
*/
public function get($name = null) {
try {
$settings = $this->settings_model->get_settings();
public function get($name = NULL)
{
try
{
$settings = $this->settings_model->get_settings();
if ($name !== null) {
$setting = null;
if ($name !== NULL)
{
$setting = NULL;
foreach ($settings as $entry) {
if ($entry['name'] === $name) {
foreach ($settings as $entry)
{
if ($entry['name'] === $name)
{
$setting = $entry;
break;
}
}
if (empty($setting)) {
if (empty($setting))
{
$this->_throwRecordNotFound();
}
@ -66,65 +76,72 @@ class Settings extends API_V1_Controller {
$settings = [
$setting
];
}
];
}
$response = new Response($settings);
$response = new Response($settings);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($name)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($name)
->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* PUT API Method
* PUT API Method
*
* @param string $name The setting name to be inserted/updated.
*/
public function put($name) {
try {
$request = new Request();
$value = $request->getBody()['value'];
$this->settings_model->set_setting($name, $value);
public function put($name)
{
try
{
$request = new Request();
$value = $request->getBody()['value'];
$this->settings_model->set_setting($name, $value);
// Fetch the updated object from the database and return it to the client.
$response = new Response([
[
'name' => $name,
'value' => $value
]
]);
$response->encode($this->parser)->singleEntry($name)->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
]);
$response->encode($this->parser)->singleEntry($name)->output();
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param string $name The setting name to be deleted.
* @param string $name The setting name to be deleted.
*/
public function delete($name) {
try {
public function delete($name)
{
try
{
$result = $this->settings_model->remove_setting($name);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -26,7 +29,7 @@ use \EA\Engine\Types\NonEmptyText;
class Unavailabilities extends API_V1_Controller {
/**
* Unavailabilities Resource Parser
*
*
* @var \EA\Engine\Api\V1\Parsers\Unavailabilities
*/
protected $parser;
@ -34,114 +37,130 @@ class Unavailabilities extends API_V1_Controller {
/**
* Class Constructor
*/
public function __construct() {
public function __construct()
{
parent::__construct();
$this->load->model('appointments_model');
$this->parser = new \EA\Engine\Api\V1\Parsers\Unavailabilities;
}
/**
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
* GET API Method
*
* @param int $id Optional (null), the record ID to be returned.
*/
public function get($id = null) {
try {
$condition = $id !== null ? 'id = ' . $id : 'is_unavailable = 1';
$unavailabilities = $this->appointments_model->get_batch($condition);
public function get($id = NULL)
{
try
{
$condition = $id !== NULL ? 'id = ' . $id : 'is_unavailable = 1';
$unavailabilities = $this->appointments_model->get_batch($condition);
if ($id !== null && count($unavailabilities) === 0) {
if ($id !== NULL && count($unavailabilities) === 0)
{
$this->_throwRecordNotFound();
}
$response = new Response($unavailabilities);
$response = new Response($unavailabilities);
$response->encode($this->parser)
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
->search()
->sort()
->paginate()
->minimize()
->singleEntry($id)
->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* POST API Method
*/
public function post() {
try {
public function post()
{
try
{
// Insert the appointment to the database.
$request = new Request();
$request = new Request();
$unavailability = $request->getBody();
$this->parser->decode($unavailability);
$this->parser->decode($unavailability);
if (isset($unavailability['id'])) {
if (isset($unavailability['id']))
{
unset($unavailability['id']);
}
$id = $this->appointments_model->add_unavailable($unavailability);
// Fetch the new object from the database and return it to the client.
$batch = $this->appointments_model->get_batch('id = ' . $id);
$response = new Response($batch);
$batch = $this->appointments_model->get_batch('id = ' . $id);
$response = new Response($batch);
$status = new NonEmptyText('201 Created');
$response->encode($this->parser)->singleEntry(true)->output($status);
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
$response->encode($this->parser)->singleEntry(TRUE)->output($status);
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* PUT API Method
* PUT API Method
*
* @param int $id The record ID to be updated.
* @param int $id The record ID to be updated.
*/
public function put($id) {
try {
public function put($id)
{
try
{
// Update the appointment record.
$batch = $this->appointments_model->get_batch('id = ' . $id);
$batch = $this->appointments_model->get_batch('id = ' . $id);
if ($id !== null && count($batch) === 0) {
if ($id !== NULL && count($batch) === 0)
{
$this->_throwRecordNotFound();
}
$request = new Request();
$updatedUnavailability = $request->getBody();
$request = new Request();
$updatedUnavailability = $request->getBody();
$baseUnavailability = $batch[0];
$this->parser->decode($updatedUnavailability, $baseUnavailability);
$updatedUnavailability['id'] = $id;
$this->parser->decode($updatedUnavailability, $baseUnavailability);
$updatedUnavailability['id'] = $id;
$id = $this->appointments_model->add_unavailable($updatedUnavailability);
// Fetch the updated object from the database and return it to the client.
$batch = $this->appointments_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
$batch = $this->appointments_model->get_batch('id = ' . $id);
$response = new Response($batch);
$response->encode($this->parser)->singleEntry($id)->output();
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
/**
* DELETE API Method
* DELETE API Method
*
* @param int $id The record ID to be deleted.
*/
public function delete($id) {
try {
public function delete($id)
{
try
{
$result = $this->appointments_model->delete_unavailable($id);
$response = new Response([
'code' => 200,
'code' => 200,
'message' => 'Record was deleted successfully!'
]);
$response->output();
} catch(\Exception $exception) {
exit($this->_handleException($exception));
}
} catch (\Exception $exception)
{
exit($this->_handleException($exception));
}
}
}

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -14,22 +17,26 @@
/**
* Database Exception Class
*/
class DatabaseException extends Exception {}
class DatabaseException extends Exception {
}
/**
* Validation Exception Class
*/
class ValidationException extends Exception {}
class ValidationException extends Exception {
}
/**
* Notification Exception Class
*/
class NotificationException extends Exception {}
class NotificationException extends Exception {
}
/**
* Sync Exception Class
*/
class SyncException extends Exception {}
class SyncException extends Exception {
}
/**
* Print an exception to an HTML text.
@ -43,14 +50,15 @@ class SyncException extends Exception {}
* @param Exception $exc The exception to be displayed.
* @return string Returns the html markup of the exception.
*/
function exceptionToHtml($exc) {
function exceptionToHtml($exc)
{
return
'<div class="accordion" id="error-accordion">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse"
data-parent="#error-accordion" href="#error-technical">' .
$exc->getMessage() . '
$exc->getMessage() . '
</a>
</div>
<div id="error-technical" class="accordion-body collapse">
@ -71,13 +79,14 @@ function exceptionToHtml($exc) {
* @param Exception $exception The given exception object.
* @return string Returns the json encoded object of the exception.
*/
function exceptionToJavaScript($exception) {
return json_encode(array(
function exceptionToJavaScript($exception)
{
return json_encode([
'code' => $exception->getCode(),
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'message' => $exception->getMessage(),
'previous' => $exception->getPrevious(),
'trace' => $exception->getTraceAsString()
));
]);
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -20,7 +23,8 @@
*
* @link http://stackoverflow.com/a/8105844/1718162 [SOURCE]
*/
function validate_mysql_datetime($datetime) {
function validate_mysql_datetime($datetime)
{
$dt = DateTime::createFromFormat('Y-m-d H:i:s', $datetime);
return ($dt) ? TRUE : FALSE;
}

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -21,17 +24,21 @@
* @return string date in RFC3339
* @author Boris Korobkov
*/
function date3339($timestamp=0) {
function date3339($timestamp = 0)
{
if (!$timestamp) {
if ( ! $timestamp)
{
$timestamp = time();
}
$date = date('Y-m-d\TH:i:s', $timestamp);
$matches = array();
if (preg_match('/^([\-+])(\d{2})(\d{2})$/', date('O', $timestamp), $matches)) {
$date .= $matches[1].$matches[2].':'.$matches[3];
} else {
$matches = [];
if (preg_match('/^([\-+])(\d{2})(\d{2})$/', date('O', $timestamp), $matches))
{
$date .= $matches[1] . $matches[2] . ':' . $matches[3];
} else
{
$date .= 'Z';
}
return $date;
@ -48,11 +55,13 @@ function date3339($timestamp=0) {
* @param string $password Given string password.
* @return string Returns the hash string of the given password.
*/
function hash_password($salt, $password) {
function hash_password($salt, $password)
{
$half = (int)(strlen($salt) / 2);
$hash = hash('sha256', substr($salt, 0, $half ) . $password . substr($salt, $half));
$hash = hash('sha256', substr($salt, 0, $half) . $password . substr($salt, $half));
for ($i = 0; $i < 100000; $i++) {
for ($i = 0; $i < 100000; $i++)
{
$hash = hash('sha256', $hash);
}
@ -67,9 +76,10 @@ function hash_password($salt, $password) {
*
* @return string Returns a salt string.
*/
function generate_salt() {
function generate_salt()
{
$max_length = 100;
$salt = hash('sha256', (uniqid(rand(), true)));
$salt = hash('sha256', (uniqid(rand(), TRUE)));
return substr($salt, 0, $max_length);
}
@ -80,10 +90,12 @@ function generate_salt() {
* @return string Returns the randomly generated string.
* @link http://stackoverflow.com/a/4356295/1718162
*/
function generate_random_string($length = 10) {
function generate_random_string($length = 10)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$random_string = '';
for ($i = 0; $i < $length; $i++) {
for ($i = 0; $i < $length; $i++)
{
$random_string .= $characters[rand(0, strlen($characters) - 1)];
}
return $random_string;

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -18,14 +21,16 @@
* script. It will check whether the code is set in the database and print it, otherwise nothing
* will be outputted. This eliminates the need for extra checking before outputting.
*/
function google_analytics_script() {
function google_analytics_script()
{
$ci =& get_instance();
$ci->load->model('settings_model');
$google_analytics_code = $ci->settings_model->get_setting('google_analytics_code');
if ($google_analytics_code !== '') {
if ($google_analytics_code !== '')
{
echo '
<script>
(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -23,7 +26,8 @@
*
* @return bool Returns whether E!A is installed or not.
*/
function is_ea_installed() {
function is_ea_installed()
{
$ci =& get_instance();
return $ci->db->table_exists('ea_users');
}
@ -33,17 +37,18 @@ function is_ea_installed() {
*
* @return array
*/
function get_sample_service() {
return array(
function get_sample_service()
{
return [
'name' => 'Test Service',
'duration' => 30,
'price' => 50.0,
'currency' => 'Euro',
'description' => 'This is a test service automatically inserted by the installer.',
'availabilities_type' => 'flexible',
'availabilities_type' => 'flexible',
'attendants_number' => 1,
'id_service_categories' => NULL
);
];
}
/**
@ -51,14 +56,15 @@ function get_sample_service() {
*
* @return array
*/
function get_sample_provider() {
return array(
function get_sample_provider()
{
return [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john@doe.com',
'phone_number' => '0123456789',
'services' => array(),
'settings' => array(
'services' => [],
'settings' => [
'username' => 'johndoe',
'password' => '59fe9d073a9c3c606a7e01e402dca4b49b6aa517bd0fdf940c46cb13a7b63dd0',
'salt' => 'dc5570debc71fc1fe94b1b0aee444fcde5b8cb83d62a6a2b736ead6557d7a2e1',
@ -68,6 +74,6 @@ function get_sample_provider() {
'sync_past_days' => 5,
'sync_future_days' => 5,
'calendar_view' => CALENDAR_VIEW_DEFAULT
)
);
]
];
}

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Филтър';
$lang['clear'] = 'Изчистване';
$lang['uncategorized'] = 'Некатегоризирани';
$lang['username_already_exists'] = 'Потребителското име вече е заето.';
$lang['password_length_notice'] = 'Паролата трябва да бъде с минимална дължина от $number символа.';
$lang['password_length_notice'] = 'Паролата трябва да бъде с минимална дължина от $number символа.';
$lang['general_settings'] = 'Общи настройки';
$lang['personal_information'] = 'Лична информация';
$lang['system_login'] = 'Вход в системата';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/chinese/migration_lang.php */
/* Location: ./system/language/chinese/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = '过滤';
$lang['clear'] = '清除';
$lang['uncategorized'] = '无分类';
$lang['username_already_exists'] = '用户名已经存在.';
$lang['password_length_notice'] = '密码长度必须$number 位数.';
$lang['password_length_notice'] = '密码长度必须$number 位数.';
$lang['general_settings'] = '一般设置';
$lang['personal_information'] = '个人信息';
$lang['system_login'] = '登录系统';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/danish/migration_lang.php */
/* Location: ./system/language/danish/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Filter';
$lang['clear'] = 'Ryd';
$lang['uncategorized'] = 'ikke kategoriseret ';
$lang['username_already_exists'] = 'Brugernavnet eksistere allerede';
$lang['password_length_notice'] = 'Password skal være på mindst $number karakter langt.';
$lang['password_length_notice'] = 'Password skal være på mindst $number karakter langt.';
$lang['general_settings'] = 'Generelle indstillinger';
$lang['personal_information'] = 'Personale informationer';
$lang['system_login'] = 'System login';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/dutch/migration_lang.php */
/* Location: ./system/language/dutch/migration_lang.php */

View file

@ -1,270 +1,270 @@
<?php
// Dutch
$lang['page_title'] ='Boek afspraak met';
$lang['step_one_title'] ='Kies een dienst en een medewerker';
$lang['select_service'] ='Kies een dienst';
$lang['select_provider'] ='Kies een medewerker';
$lang['duration'] ='Duur:';
$lang['minutes'] ='minuten';
$lang['price'] ='Prijs:';
$lang['back'] ='Vorige';
$lang['step_two_title'] ='Selecteer een datum en tijd';
$lang['no_available_hours'] ='Het is momenteel niet mogelijk een afspraak te maken op die datum. Kies een andere datum.';
$lang['appointment_hour_missing'] ='Kies een tijd voordat u verder gaat!';
$lang['step_three_title'] ='Vul uw informatie in';
$lang['first_name'] ='Voornaam';
$lang['last_name'] ='Achternaam';
$lang['email'] ='E-mail';
$lang['phone_number'] ='Telefoonnummer';
$lang['address'] ='Adres';
$lang['city'] ='Plaats';
$lang['zip_code'] ='Postcode';
$lang['notes'] ='Opmerkingen';
$lang['fields_are_required'] ='Velden met een * zijn verplicht!';
$lang['step_four_title'] ='Afspraak bevestigen';
$lang['confirm'] ='Bevestigen';
$lang['update'] ='Update';
$lang['cancel_appointment_hint'] ='Druk op de knop "Annuleren" om uw afspraak te verwijderen van de agenda van dit bedrijf.';
$lang['cancel'] ='Annuleren';
$lang['appointment_registered'] ='Uw afspraak is succesvol geboekt!';
$lang['cancel_appointment_title'] ='Afspraak annuleren';
$lang['appointment_cancelled'] ='Uw afspraak is met succes geannuleerd!';
$lang['appointment_cancelled_title'] ='Afspraak geannuleerd';
$lang['reason'] ='Reden';
$lang['appointment_removed_from_schedule'] ='De volgende afspraak is verwijderd van de agenda van dit bedrijf.';
$lang['appointment_details_was_sent_to_you'] ='Een e-mail met de details van de afspraak is naar u verzonden.';
$lang['add_to_google_calendar'] ='Voeg toe aan Google Agenda!';
$lang['appointment_booked'] ='Uw afspraak is met succes geboekt!';
$lang['thank_you_for_appointment'] ='Bedankt voor het maken van een afspraak met ons! Hieronder vindt u de details van de afspraak. Breng eventuele wijzigingen aan door te klikken op de afspraak link.';
$lang['appointment_details_title'] ='Uw afspraak';
$lang['customer_details_title'] ='Klantgegevens';
$lang['service'] ='Dienst';
$lang['provider'] ='Medewerker';
$lang['customer'] ='Klant';
$lang['start'] ='Begin';
$lang['end'] ='Einde';
$lang['name'] ='Naam';
$lang['phone'] ='Telefoon';
$lang['address'] ='Adres';
$lang['appointment_link_title'] ='Afspraak link';
$lang['success'] ='Succes!';
$lang['appointment_added_to_google_calendar'] ='Uw afspraak is toegevoegd aan het Google Agenda-account.';
$lang['view_appointment_in_google_calendar'] ='Klik hier om uw afspraak in Google Agenda bekijken.';
$lang['appointment_added_to_your_plan'] ='Een nieuwe afspraak is toegevoegd aan uw agenda.';
$lang['appointment_link_description'] ='U kunt wijzigingen aanbrengen door te klikken op onderstaande link van de afspraak.';
$lang['appointment_not_found'] ='Afspraak niet gevonden!';
$lang['appointment_does_not_exist_in_db'] ='De door u opgevraagde afspraak bestaat niet meer in de database van het systeem.';
$lang['display_calendar'] ='Kalender';
$lang['calendar'] ='Kalender';
$lang['users'] ='Gebruikers';
$lang['settings'] ='Instellingen';
$lang['log_out'] ='Afmelden';
$lang['synchronize'] ='Synchroniseren';
$lang['enable_sync'] ='Synchronisatie inschakelen';
$lang['disable_sync'] ='Synchronisatie uitschakelen';
$lang['reload'] ='Herladen';
$lang['appointment'] ='Afspraak';
$lang['unavailable'] ='Niet beschikbaar';
$lang['week'] ='Week';
$lang['month'] ='Maand';
$lang['today'] ='Vandaag';
$lang['not_working'] ='Niet beschikbaar';
$lang['break'] ='Pauze';
$lang['add'] ='Toevoegen';
$lang['edit'] ='Bewerk';
$lang['hello'] ='Hallo';
$lang['all_day'] ='Hele dag';
$lang['manage_appointment_record_hint'] ='Beheer alle afspraken van de beschikbare medewerkers en diensten.';
$lang['select_filter_item_hint'] ='Selecteer een medewerkers of een dienst en bekijk de afspraken op de kalender.';
$lang['enable_appointment_sync_hint'] ='Schakel synchronisatie met het Google Agenda account van de aanbieder in.';
$lang['manage_customers_hint'] ='Beheer van geregistreerde klanten en hun historie.';
$lang['manage_services_hint'] ='Beheer beschikbare diensten en categorieën van het systeem.';
$lang['manage_users_hint'] ='Beheer de backend gebruikers.';
$lang['settings_hint'] ='Beheer het systeem en gebruikersinstellingen.';
$lang['log_out_hint'] ='Log uit.';
$lang['unavailable_periods_hint'] ='Er kunnen geen nieuwe afspraken geaccepteerd worden als de medewerker niet beschikbaar is.';
$lang['new_appointment_hint'] ='Een nieuwe afspraak maken en opslaan in de database.';
$lang['reload_appointments_hint'] ='Herlaad de afspraken.';
$lang['trigger_google_sync_hint'] ='Start het Google Agenda synchronisatieproces.';
$lang['appointment_updated'] ='Afspraak succesvol bijgewerkt!';
$lang['undo'] ='Ongedaan maken';
$lang['cancel'] ='Annuleren';
$lang['appointment_details_changed'] ='Afspraakgegevens veranderd.';
$lang['appointment_changes_saved'] ='De wijzigingen in de afspraak zijn succesvol opgeslagen!';
$lang['save'] ='Opslaan';
$lang['new'] ='Nieuw';
$lang['select'] ='Selecteren';
$lang['hide'] ='Verbergen';
$lang['type_to_filter_customers'] ='Typ om klanten te zoeken.';
$lang['clear_fields_add_existing_customer_hint'] ='Maak alle velden leeg en voer een nieuwe klant in.';
$lang['pick_existing_customer_hint'] ='Kies een bestaande klant.';
$lang['new_appointment_title'] ='Nieuwe afspraak';
$lang['edit_appointment_title'] ='Afspraak bewerken';
$lang['delete_appointment_title'] ='Afspraak verwijderen';
$lang['write_appointment_removal_reason'] ='Neemt u alstublieft even de tijd om de reden van annulering door te geven:';
$lang['appointment_saved'] ='Afspraak succesvol opgeslagen!';
$lang['new_unavailable_title'] ='Nieuwe periode waarop men niet beschikbaar is';
$lang['edit_unavailable_title'] ='Bewerk beschikbare periode';
$lang['unavailable_saved'] ='Onbeschikbaar periode succesvol opgeslagen!';
$lang['start_date_before_end_error'] ='De startdatum is later dan de einddatum!';
$lang['invalid_email'] ='Ongeldig e-mailadres!';
$lang['customers'] ='Klanten';
$lang['details'] ='Details';
$lang['no_records_found'] ='Geen records gevonden';
$lang['services'] ='Diensten';
$lang['duration_minutes'] ='Duur (minuten)';
$lang['currency'] ='Valuta';
$lang['category'] ='Categorie';
$lang['no_category'] ='Geen categorie';
$lang['description'] ='Beschrijving';
$lang['categories'] ='Categorieën';
$lang['admins'] ='Beheerders';
$lang['providers'] ='Medewerkers';
$lang['secretaries'] ='Secretarissen';
$lang['mobile_number'] ='Mobiel nummer';
$lang['state'] ='Provincie/land';
$lang['username'] ='Gebruikersnaam';
$lang['password'] ='Wachtwoord';
$lang['retype_password'] ='Geef nogmaals het wachtwoord';
$lang['receive_notifications'] ='Meldingen ontvangen';
$lang['passwords_mismatch'] ='De wachtwoorden zijn niet gelijk!';
$lang['admin_saved'] ='Beheerder succesvol opgeslagen!';
$lang['provider_saved'] ='Medewerker succesvol opgeslagen!';
$lang['secretary_saved'] ='Secretaris succesvol opgeslagen!';
$lang['admin_deleted'] ='Beheerder succesvol verwijderd!';
$lang['provider_deleted'] ='Medewerker succesvol verwijderd!';
$lang['secretary_deleted'] ='Secretaris succesvol verwijderd!';
$lang['service_saved'] ='Dienst succesvol opgeslagen!';
$lang['service_category_saved'] ='Dienstencategorie succesvol opgeslagen!';
$lang['service_deleted'] ='Dienst succesvol verwijderd!';
$lang['service_category_deleted'] ='Dienstencategorie succesvol verwijderd!';
$lang['customer_saved'] ='Klant succesvol opgeslagen!';
$lang['customer_deleted'] ='Klant succesvol verwijderd!';
$lang['current_view'] ='Huidige weergave';
$lang['working_plan'] ='Werkagenda';
$lang['reset_plan'] ='Reset agenda';
$lang['monday'] ='Maandag';
$lang['tuesday'] ='Dinsdag';
$lang['wednesday'] ='Woensdag';
$lang['thursday'] ='Donderdag';
$lang['friday'] ='Vrijdag';
$lang['saturday'] ='Zaterdag';
$lang['sunday'] ='Zondag';
$lang['breaks'] ='Pauzes';
$lang['add_breaks_during_each_day'] ='Voeg voor iedere dag de pauzes toe. Tijdens de pauzes kunnen er geen afspraken worden gepland.';
$lang['day'] ='Dag';
$lang['page_title'] = 'Boek afspraak met';
$lang['step_one_title'] = 'Kies een dienst en een medewerker';
$lang['select_service'] = 'Kies een dienst';
$lang['select_provider'] = 'Kies een medewerker';
$lang['duration'] = 'Duur:';
$lang['minutes'] = 'minuten';
$lang['price'] = 'Prijs:';
$lang['back'] = 'Vorige';
$lang['step_two_title'] = 'Selecteer een datum en tijd';
$lang['no_available_hours'] = 'Het is momenteel niet mogelijk een afspraak te maken op die datum. Kies een andere datum.';
$lang['appointment_hour_missing'] = 'Kies een tijd voordat u verder gaat!';
$lang['step_three_title'] = 'Vul uw informatie in';
$lang['first_name'] = 'Voornaam';
$lang['last_name'] = 'Achternaam';
$lang['email'] = 'E-mail';
$lang['phone_number'] = 'Telefoonnummer';
$lang['address'] = 'Adres';
$lang['city'] = 'Plaats';
$lang['zip_code'] = 'Postcode';
$lang['notes'] = 'Opmerkingen';
$lang['fields_are_required'] = 'Velden met een * zijn verplicht!';
$lang['step_four_title'] = 'Afspraak bevestigen';
$lang['confirm'] = 'Bevestigen';
$lang['update'] = 'Update';
$lang['cancel_appointment_hint'] = 'Druk op de knop "Annuleren" om uw afspraak te verwijderen van de agenda van dit bedrijf.';
$lang['cancel'] = 'Annuleren';
$lang['appointment_registered'] = 'Uw afspraak is succesvol geboekt!';
$lang['cancel_appointment_title'] = 'Afspraak annuleren';
$lang['appointment_cancelled'] = 'Uw afspraak is met succes geannuleerd!';
$lang['appointment_cancelled_title'] = 'Afspraak geannuleerd';
$lang['reason'] = 'Reden';
$lang['appointment_removed_from_schedule'] = 'De volgende afspraak is verwijderd van de agenda van dit bedrijf.';
$lang['appointment_details_was_sent_to_you'] = 'Een e-mail met de details van de afspraak is naar u verzonden.';
$lang['add_to_google_calendar'] = 'Voeg toe aan Google Agenda!';
$lang['appointment_booked'] = 'Uw afspraak is met succes geboekt!';
$lang['thank_you_for_appointment'] = 'Bedankt voor het maken van een afspraak met ons! Hieronder vindt u de details van de afspraak. Breng eventuele wijzigingen aan door te klikken op de afspraak link.';
$lang['appointment_details_title'] = 'Uw afspraak';
$lang['customer_details_title'] = 'Klantgegevens';
$lang['service'] = 'Dienst';
$lang['provider'] = 'Medewerker';
$lang['customer'] = 'Klant';
$lang['start'] = 'Begin';
$lang['end'] = 'Einde';
$lang['name'] = 'Naam';
$lang['phone'] = 'Telefoon';
$lang['address'] = 'Adres';
$lang['appointment_link_title'] = 'Afspraak link';
$lang['success'] = 'Succes!';
$lang['appointment_added_to_google_calendar'] = 'Uw afspraak is toegevoegd aan het Google Agenda-account.';
$lang['view_appointment_in_google_calendar'] = 'Klik hier om uw afspraak in Google Agenda bekijken.';
$lang['appointment_added_to_your_plan'] = 'Een nieuwe afspraak is toegevoegd aan uw agenda.';
$lang['appointment_link_description'] = 'U kunt wijzigingen aanbrengen door te klikken op onderstaande link van de afspraak.';
$lang['appointment_not_found'] = 'Afspraak niet gevonden!';
$lang['appointment_does_not_exist_in_db'] = 'De door u opgevraagde afspraak bestaat niet meer in de database van het systeem.';
$lang['display_calendar'] = 'Kalender';
$lang['calendar'] = 'Kalender';
$lang['users'] = 'Gebruikers';
$lang['settings'] = 'Instellingen';
$lang['log_out'] = 'Afmelden';
$lang['synchronize'] = 'Synchroniseren';
$lang['enable_sync'] = 'Synchronisatie inschakelen';
$lang['disable_sync'] = 'Synchronisatie uitschakelen';
$lang['reload'] = 'Herladen';
$lang['appointment'] = 'Afspraak';
$lang['unavailable'] = 'Niet beschikbaar';
$lang['week'] = 'Week';
$lang['month'] = 'Maand';
$lang['today'] = 'Vandaag';
$lang['not_working'] = 'Niet beschikbaar';
$lang['break'] = 'Pauze';
$lang['add'] = 'Toevoegen';
$lang['edit'] = 'Bewerk';
$lang['hello'] = 'Hallo';
$lang['all_day'] = 'Hele dag';
$lang['manage_appointment_record_hint'] = 'Beheer alle afspraken van de beschikbare medewerkers en diensten.';
$lang['select_filter_item_hint'] = 'Selecteer een medewerkers of een dienst en bekijk de afspraken op de kalender.';
$lang['enable_appointment_sync_hint'] = 'Schakel synchronisatie met het Google Agenda account van de aanbieder in.';
$lang['manage_customers_hint'] = 'Beheer van geregistreerde klanten en hun historie.';
$lang['manage_services_hint'] = 'Beheer beschikbare diensten en categorieën van het systeem.';
$lang['manage_users_hint'] = 'Beheer de backend gebruikers.';
$lang['settings_hint'] = 'Beheer het systeem en gebruikersinstellingen.';
$lang['log_out_hint'] = 'Log uit.';
$lang['unavailable_periods_hint'] = 'Er kunnen geen nieuwe afspraken geaccepteerd worden als de medewerker niet beschikbaar is.';
$lang['new_appointment_hint'] = 'Een nieuwe afspraak maken en opslaan in de database.';
$lang['reload_appointments_hint'] = 'Herlaad de afspraken.';
$lang['trigger_google_sync_hint'] = 'Start het Google Agenda synchronisatieproces.';
$lang['appointment_updated'] = 'Afspraak succesvol bijgewerkt!';
$lang['undo'] = 'Ongedaan maken';
$lang['cancel'] = 'Annuleren';
$lang['appointment_details_changed'] = 'Afspraakgegevens veranderd.';
$lang['appointment_changes_saved'] = 'De wijzigingen in de afspraak zijn succesvol opgeslagen!';
$lang['save'] = 'Opslaan';
$lang['new'] = 'Nieuw';
$lang['select'] = 'Selecteren';
$lang['hide'] = 'Verbergen';
$lang['type_to_filter_customers'] = 'Typ om klanten te zoeken.';
$lang['clear_fields_add_existing_customer_hint'] = 'Maak alle velden leeg en voer een nieuwe klant in.';
$lang['pick_existing_customer_hint'] = 'Kies een bestaande klant.';
$lang['new_appointment_title'] = 'Nieuwe afspraak';
$lang['edit_appointment_title'] = 'Afspraak bewerken';
$lang['delete_appointment_title'] = 'Afspraak verwijderen';
$lang['write_appointment_removal_reason'] = 'Neemt u alstublieft even de tijd om de reden van annulering door te geven:';
$lang['appointment_saved'] = 'Afspraak succesvol opgeslagen!';
$lang['new_unavailable_title'] = 'Nieuwe periode waarop men niet beschikbaar is';
$lang['edit_unavailable_title'] = 'Bewerk beschikbare periode';
$lang['unavailable_saved'] = 'Onbeschikbaar periode succesvol opgeslagen!';
$lang['start_date_before_end_error'] = 'De startdatum is later dan de einddatum!';
$lang['invalid_email'] = 'Ongeldig e-mailadres!';
$lang['customers'] = 'Klanten';
$lang['details'] = 'Details';
$lang['no_records_found'] = 'Geen records gevonden';
$lang['services'] = 'Diensten';
$lang['duration_minutes'] = 'Duur (minuten)';
$lang['currency'] = 'Valuta';
$lang['category'] = 'Categorie';
$lang['no_category'] = 'Geen categorie';
$lang['description'] = 'Beschrijving';
$lang['categories'] = 'Categorieën';
$lang['admins'] = 'Beheerders';
$lang['providers'] = 'Medewerkers';
$lang['secretaries'] = 'Secretarissen';
$lang['mobile_number'] = 'Mobiel nummer';
$lang['state'] = 'Provincie/land';
$lang['username'] = 'Gebruikersnaam';
$lang['password'] = 'Wachtwoord';
$lang['retype_password'] = 'Geef nogmaals het wachtwoord';
$lang['receive_notifications'] = 'Meldingen ontvangen';
$lang['passwords_mismatch'] = 'De wachtwoorden zijn niet gelijk!';
$lang['admin_saved'] = 'Beheerder succesvol opgeslagen!';
$lang['provider_saved'] = 'Medewerker succesvol opgeslagen!';
$lang['secretary_saved'] = 'Secretaris succesvol opgeslagen!';
$lang['admin_deleted'] = 'Beheerder succesvol verwijderd!';
$lang['provider_deleted'] = 'Medewerker succesvol verwijderd!';
$lang['secretary_deleted'] = 'Secretaris succesvol verwijderd!';
$lang['service_saved'] = 'Dienst succesvol opgeslagen!';
$lang['service_category_saved'] = 'Dienstencategorie succesvol opgeslagen!';
$lang['service_deleted'] = 'Dienst succesvol verwijderd!';
$lang['service_category_deleted'] = 'Dienstencategorie succesvol verwijderd!';
$lang['customer_saved'] = 'Klant succesvol opgeslagen!';
$lang['customer_deleted'] = 'Klant succesvol verwijderd!';
$lang['current_view'] = 'Huidige weergave';
$lang['working_plan'] = 'Werkagenda';
$lang['reset_plan'] = 'Reset agenda';
$lang['monday'] = 'Maandag';
$lang['tuesday'] = 'Dinsdag';
$lang['wednesday'] = 'Woensdag';
$lang['thursday'] = 'Donderdag';
$lang['friday'] = 'Vrijdag';
$lang['saturday'] = 'Zaterdag';
$lang['sunday'] = 'Zondag';
$lang['breaks'] = 'Pauzes';
$lang['add_breaks_during_each_day'] = 'Voeg voor iedere dag de pauzes toe. Tijdens de pauzes kunnen er geen afspraken worden gepland.';
$lang['day'] = 'Dag';
$lang['days'] = 'Dagen';
$lang['actions'] ='Acties';
$lang['reset_working_plan_hint'] ='Reset de werkagenda naar de standaardwaarden.';
$lang['company_name'] ='Bedrijfsnaam';
$lang['company_name_hint'] ='Bedrijfsnaam zal overal worden weergegeven op het systeem (vereist).';
$lang['company_email'] ='E-mail van het bedrijf';
$lang['company_email_hint'] ='Dit is het e-mailadres van het bedrijf. Het zal worden gebruikt als afzender- en antwoordadres van de systeemmails (vereist).';
$lang['company_link'] ='Link naar het bedrijf';
$lang['company_link_hint'] ='De link naar het bedrijf moet verwijzen naar de officiële website van het bedrijf (verplicht).';
$lang['go_to_booking_page'] ='Ga naar de boekingspagina';
$lang['settings_saved'] ='Instellingen succesvol opgeslagen!';
$lang['general'] ='Algemeen';
$lang['business_logic'] ='Bedrijfsinstellingen';
$lang['current_user'] ='Huidige gebruiker';
$lang['about_ea'] ='Over E!A';
$lang['edit_working_plan_hint'] ='Geef hier de dagen en uren in waarop klanten afspraken kunnen plannen (bijv. openingstijden). U kunt afspraken aanpassen naar tijden die normaal niet kunnen worden gekozen, maar klanten kunnen dit niet via het normale formulier. Deze tijden worden standaard gebruikt voor alle medewerkers, maar deze instellingen kunnen ook per medewerker worden gewijzigd bij de persoonlijke gegevens. Daarna kunnen ook pauzes worden gekozen.';
$lang['edit_breaks_hint'] ='Voeg voor elke dag pauzes toe. Deze pauzes worden standaard gebruikt voor alle medewerkers.';
$lang['book_advance_timeout'] ='Voor-boek-tijd vooruitboeken';
$lang['book_advance_timeout_hint'] ='Definieer de tijd (in minuten) voordat klanten afspraken met het bedrijf kunnen boeken of herindelen.';
$lang['timeout_minutes'] ='Voor-boek-tijd (minuten)';
$lang['about_ea_info'] ='Easy! Afspraken is een zeer flexibele web applicatie waarmee klanten afspraken met u kunnen boeken via het web. Bovendien biedt het de mogelijkheid om uw gegevens te synchroniseren met Google Agenda, zodat u ze kunt gebruiken met andere diensten.';
$lang['current_version'] ='Huidige versie';
$lang['support'] ='Ondersteuning';
$lang['about_ea_support'] ='Als u problemen ondervindt bij het gebruik van Easy! Afspraken kunt u zoeken in de officiële Google-discussiegroep voor antwoorden. U moet misschien ook een nieuw onderwerp op de pagina Google Code creëren om de ontwikkeling van de applicatie te helpen.';
$lang['official_website'] ='Officiële Website';
$lang['google_plus_community'] ='Google+ Community';
$lang['support_group'] ='Support Group';
$lang['project_issues'] ='Project issues';
$lang['license'] ='Licentie';
$lang['about_ea_license'] ='Easy! Afspraken is gelicenseerd onder de gplv3 licentie. Door het gebruik van de code van Easy Afspraken op welke manier dan ook gaat u akkoord met de in de volgende url beschreven voorwaarden:';
$lang['logout_success'] ='U bent succesvol uitgelogd! Gebruik een van de volgende knoppen om te navigeren naar een andere pagina.';
$lang['book_appointment_title'] ='Boek afspraak';
$lang['backend_section'] ='Beheerdersysteem (backend)';
$lang['you_need_to_login'] ='Welkom! U moet inloggen om backend te bekijken.';
$lang['enter_username_here'] ='Vul hier uw gebruikersnaam in…';
$lang['enter_password_here'] ='Vul hier je wachtwoord in…';
$lang['login'] ='Login';
$lang['forgot_your_password'] ='Wachtwoord vergeten?';
$lang['login_failed'] ='Inloggen is mislukt, voer de juiste gegevens in en probeer het opnieuw.';
$lang['type_username_and_email_for_new_password'] ='Typ uw gebruikersnaam en uw e-mailadres in om een nieuw wachtwoord per mail te krijgen.';
$lang['enter_email_here'] ='Vul hier uw e-mail in…';
$lang['regenerate_password'] ='Wachtwoord genereren';
$lang['go_to_login'] ='Ga terug naar de login pagina';
$lang['new_password_sent_with_email'] ='Uw nieuwe wachtwoord is per mail naar u verzonden.';
$lang['new_account_password'] ='Nieuw wachtwoord voor uw account';
$lang['new_password_is'] ='Uw nieuwe wachtwoord is $password. Bewaar deze e-mail indien nodig. U kunt dit wachtwoord wijzigen door een nieuwe aan te maken op de pagina met instellingen.';
$lang['delete_record_prompt'] ='Weet u zeker dat u dit record wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.';
$lang['delete_admin'] ='Verwijder Beheerder';
$lang['delete_customer'] ='Verwijder Klant';
$lang['delete_service'] ='Dienst verwijderen';
$lang['delete_category'] ='Dienstcategorie Verwijderen';
$lang['delete_provider'] ='Verwijder medewerker';
$lang['delete_secretary'] ='Verwijder secretaris';
$lang['delete_appointment'] ='Afspraak verwijderen';
$lang['delete_unavailable'] ='Verwijder een niet beschikbare periode';
$lang['delete'] ='Verwijder';
$lang['unexpected_issues'] ='Onverwachte problemen';
$lang['unexpected_issues_message'] ='De bewerking kan niet worden voltooid als gevolg van onverwachte problemen.';
$lang['close'] ='Sluit';
$lang['page_not_found'] ='Pagina niet gevonden';
$lang['page_not_found_message'] ='Helaas bestaat de door u opgevraagde pagina niet. Controleer aub de locatie in uw browser of ga naar een andere locatie met behulp van de onderstaande knoppen.';
$lang['error'] ='Fout';
$lang['no_privileges'] ='Geen rechten';
$lang['no_privileges_message'] ='Je hebt niet de benodigde rechten om deze pagina te bekijken. Navigeer naar een andere sectie.';
$lang['backend_calendar'] ='Backend Kalender';
$lang['start_date_time'] ='Start datum/tijd';
$lang['end_date_time'] ='Eind datum/tijd';
$lang['licensed_under'] ='Gelicenseerd onder';
$lang['unexpected_issues_occurred'] ='Onverwachte problemen opgetreden!';
$lang['service_communication_error'] ='Er is een server communicatiefout opgetreden, probeer het opnieuw.';
$lang['no_privileges_edit_appointments'] ='U heeft niet de benodigde rechten om afspraken te bewerken.';
$lang['unavailable_updated'] ='Niet beschikbare periode succesvol bijgewerkt!';
$lang['appointments'] ='Afspraken';
$lang['unexpected_warnings'] ='Onverwachte waarschuwingen';
$lang['unexpected_warnings_message'] ='De operatie is voltooid, maar enkele waarschuwingen zijn opgetreden.';
$lang['filter'] ='Filter';
$lang['clear'] ='Legen';
$lang['uncategorized'] ='Geen categorie';
$lang['username_already_exists'] ='Deze gebruikersnaam is reeds in gebruik.';
$lang['password_length_notice'] ='Een wachtwoord moet ten minste $number tekens lang zijn.';
$lang['general_settings'] ='Algemene instellingen';
$lang['personal_information'] ='Persoonlijke informatie';
$lang['system_login'] ='Systeem Login';
$lang['user_settings_are_invalid'] ='De gebruikersinstellingen zijn ongeldig! Controleer uw instellingen en probeer het opnieuw.';
$lang['add_break'] ='Pauze toevoegen';
$lang['january'] ='Januari';
$lang['february'] ='Februari';
$lang['march'] ='Maart';
$lang['april'] ='April';
$lang['may'] ='Mei';
$lang['june'] ='Juni';
$lang['july'] ='Juli';
$lang['august'] ='Augustus';
$lang['september'] ='September';
$lang['october'] ='Oktober';
$lang['november'] ='November';
$lang['december'] ='December';
$lang['previous'] ='Vorige';
$lang['next'] ='Volgende';
$lang['now'] ='Nu';
$lang['select_time'] ='Selecteer een tijd';
$lang['time'] ='Tijd';
$lang['hour'] ='Uur';
$lang['minute'] ='Minuut';
$lang['google_sync_completed'] ='Google synchronisatie is voltooid!';
$lang['google_sync_failed'] ='Google synchronisatie is mislukt: kan geen verbinding maken met de server.';
$lang['select_google_calendar'] ='Selecteer Google Agenda';
$lang['select_google_calendar_prompt'] ='Selecteer de agenda waarme uw afspraken wilt synchroniseren. Als u geen specifieke kalender selecteert zal de standaard worden gebruikt.';
$lang['google_calendar_selected'] ='Google Agenda is met succes geselecteerd!';
$lang['oops_something_went_wrong'] ='Oeps! Er is iets misgegaan!';
$lang['could_not_add_to_google_calendar'] ='Uw afspraak kon niet toegevoegd worden aan het Google Agenda-account.';
$lang['ea_update_success'] ='Easy!Appointments is succesvol bijgewerkt!';
$lang['actions'] = 'Acties';
$lang['reset_working_plan_hint'] = 'Reset de werkagenda naar de standaardwaarden.';
$lang['company_name'] = 'Bedrijfsnaam';
$lang['company_name_hint'] = 'Bedrijfsnaam zal overal worden weergegeven op het systeem (vereist).';
$lang['company_email'] = 'E-mail van het bedrijf';
$lang['company_email_hint'] = 'Dit is het e-mailadres van het bedrijf. Het zal worden gebruikt als afzender- en antwoordadres van de systeemmails (vereist).';
$lang['company_link'] = 'Link naar het bedrijf';
$lang['company_link_hint'] = 'De link naar het bedrijf moet verwijzen naar de officiële website van het bedrijf (verplicht).';
$lang['go_to_booking_page'] = 'Ga naar de boekingspagina';
$lang['settings_saved'] = 'Instellingen succesvol opgeslagen!';
$lang['general'] = 'Algemeen';
$lang['business_logic'] = 'Bedrijfsinstellingen';
$lang['current_user'] = 'Huidige gebruiker';
$lang['about_ea'] = 'Over E!A';
$lang['edit_working_plan_hint'] = 'Geef hier de dagen en uren in waarop klanten afspraken kunnen plannen (bijv. openingstijden). U kunt afspraken aanpassen naar tijden die normaal niet kunnen worden gekozen, maar klanten kunnen dit niet via het normale formulier. Deze tijden worden standaard gebruikt voor alle medewerkers, maar deze instellingen kunnen ook per medewerker worden gewijzigd bij de persoonlijke gegevens. Daarna kunnen ook pauzes worden gekozen.';
$lang['edit_breaks_hint'] = 'Voeg voor elke dag pauzes toe. Deze pauzes worden standaard gebruikt voor alle medewerkers.';
$lang['book_advance_timeout'] = 'Voor-boek-tijd vooruitboeken';
$lang['book_advance_timeout_hint'] = 'Definieer de tijd (in minuten) voordat klanten afspraken met het bedrijf kunnen boeken of herindelen.';
$lang['timeout_minutes'] = 'Voor-boek-tijd (minuten)';
$lang['about_ea_info'] = 'Easy! Afspraken is een zeer flexibele web applicatie waarmee klanten afspraken met u kunnen boeken via het web. Bovendien biedt het de mogelijkheid om uw gegevens te synchroniseren met Google Agenda, zodat u ze kunt gebruiken met andere diensten.';
$lang['current_version'] = 'Huidige versie';
$lang['support'] = 'Ondersteuning';
$lang['about_ea_support'] = 'Als u problemen ondervindt bij het gebruik van Easy! Afspraken kunt u zoeken in de officiële Google-discussiegroep voor antwoorden. U moet misschien ook een nieuw onderwerp op de pagina Google Code creëren om de ontwikkeling van de applicatie te helpen.';
$lang['official_website'] = 'Officiële Website';
$lang['google_plus_community'] = 'Google+ Community';
$lang['support_group'] = 'Support Group';
$lang['project_issues'] = 'Project issues';
$lang['license'] = 'Licentie';
$lang['about_ea_license'] = 'Easy! Afspraken is gelicenseerd onder de gplv3 licentie. Door het gebruik van de code van Easy Afspraken op welke manier dan ook gaat u akkoord met de in de volgende url beschreven voorwaarden:';
$lang['logout_success'] = 'U bent succesvol uitgelogd! Gebruik een van de volgende knoppen om te navigeren naar een andere pagina.';
$lang['book_appointment_title'] = 'Boek afspraak';
$lang['backend_section'] = 'Beheerdersysteem (backend)';
$lang['you_need_to_login'] = 'Welkom! U moet inloggen om backend te bekijken.';
$lang['enter_username_here'] = 'Vul hier uw gebruikersnaam in…';
$lang['enter_password_here'] = 'Vul hier je wachtwoord in…';
$lang['login'] = 'Login';
$lang['forgot_your_password'] = 'Wachtwoord vergeten?';
$lang['login_failed'] = 'Inloggen is mislukt, voer de juiste gegevens in en probeer het opnieuw.';
$lang['type_username_and_email_for_new_password'] = 'Typ uw gebruikersnaam en uw e-mailadres in om een nieuw wachtwoord per mail te krijgen.';
$lang['enter_email_here'] = 'Vul hier uw e-mail in…';
$lang['regenerate_password'] = 'Wachtwoord genereren';
$lang['go_to_login'] = 'Ga terug naar de login pagina';
$lang['new_password_sent_with_email'] = 'Uw nieuwe wachtwoord is per mail naar u verzonden.';
$lang['new_account_password'] = 'Nieuw wachtwoord voor uw account';
$lang['new_password_is'] = 'Uw nieuwe wachtwoord is $password. Bewaar deze e-mail indien nodig. U kunt dit wachtwoord wijzigen door een nieuwe aan te maken op de pagina met instellingen.';
$lang['delete_record_prompt'] = 'Weet u zeker dat u dit record wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.';
$lang['delete_admin'] = 'Verwijder Beheerder';
$lang['delete_customer'] = 'Verwijder Klant';
$lang['delete_service'] = 'Dienst verwijderen';
$lang['delete_category'] = 'Dienstcategorie Verwijderen';
$lang['delete_provider'] = 'Verwijder medewerker';
$lang['delete_secretary'] = 'Verwijder secretaris';
$lang['delete_appointment'] = 'Afspraak verwijderen';
$lang['delete_unavailable'] = 'Verwijder een niet beschikbare periode';
$lang['delete'] = 'Verwijder';
$lang['unexpected_issues'] = 'Onverwachte problemen';
$lang['unexpected_issues_message'] = 'De bewerking kan niet worden voltooid als gevolg van onverwachte problemen.';
$lang['close'] = 'Sluit';
$lang['page_not_found'] = 'Pagina niet gevonden';
$lang['page_not_found_message'] = 'Helaas bestaat de door u opgevraagde pagina niet. Controleer aub de locatie in uw browser of ga naar een andere locatie met behulp van de onderstaande knoppen.';
$lang['error'] = 'Fout';
$lang['no_privileges'] = 'Geen rechten';
$lang['no_privileges_message'] = 'Je hebt niet de benodigde rechten om deze pagina te bekijken. Navigeer naar een andere sectie.';
$lang['backend_calendar'] = 'Backend Kalender';
$lang['start_date_time'] = 'Start datum/tijd';
$lang['end_date_time'] = 'Eind datum/tijd';
$lang['licensed_under'] = 'Gelicenseerd onder';
$lang['unexpected_issues_occurred'] = 'Onverwachte problemen opgetreden!';
$lang['service_communication_error'] = 'Er is een server communicatiefout opgetreden, probeer het opnieuw.';
$lang['no_privileges_edit_appointments'] = 'U heeft niet de benodigde rechten om afspraken te bewerken.';
$lang['unavailable_updated'] = 'Niet beschikbare periode succesvol bijgewerkt!';
$lang['appointments'] = 'Afspraken';
$lang['unexpected_warnings'] = 'Onverwachte waarschuwingen';
$lang['unexpected_warnings_message'] = 'De operatie is voltooid, maar enkele waarschuwingen zijn opgetreden.';
$lang['filter'] = 'Filter';
$lang['clear'] = 'Legen';
$lang['uncategorized'] = 'Geen categorie';
$lang['username_already_exists'] = 'Deze gebruikersnaam is reeds in gebruik.';
$lang['password_length_notice'] = 'Een wachtwoord moet ten minste $number tekens lang zijn.';
$lang['general_settings'] = 'Algemene instellingen';
$lang['personal_information'] = 'Persoonlijke informatie';
$lang['system_login'] = 'Systeem Login';
$lang['user_settings_are_invalid'] = 'De gebruikersinstellingen zijn ongeldig! Controleer uw instellingen en probeer het opnieuw.';
$lang['add_break'] = 'Pauze toevoegen';
$lang['january'] = 'Januari';
$lang['february'] = 'Februari';
$lang['march'] = 'Maart';
$lang['april'] = 'April';
$lang['may'] = 'Mei';
$lang['june'] = 'Juni';
$lang['july'] = 'Juli';
$lang['august'] = 'Augustus';
$lang['september'] = 'September';
$lang['october'] = 'Oktober';
$lang['november'] = 'November';
$lang['december'] = 'December';
$lang['previous'] = 'Vorige';
$lang['next'] = 'Volgende';
$lang['now'] = 'Nu';
$lang['select_time'] = 'Selecteer een tijd';
$lang['time'] = 'Tijd';
$lang['hour'] = 'Uur';
$lang['minute'] = 'Minuut';
$lang['google_sync_completed'] = 'Google synchronisatie is voltooid!';
$lang['google_sync_failed'] = 'Google synchronisatie is mislukt: kan geen verbinding maken met de server.';
$lang['select_google_calendar'] = 'Selecteer Google Agenda';
$lang['select_google_calendar_prompt'] = 'Selecteer de agenda waarme uw afspraken wilt synchroniseren. Als u geen specifieke kalender selecteert zal de standaard worden gebruikt.';
$lang['google_calendar_selected'] = 'Google Agenda is met succes geselecteerd!';
$lang['oops_something_went_wrong'] = 'Oeps! Er is iets misgegaan!';
$lang['could_not_add_to_google_calendar'] = 'Uw afspraak kon niet toegevoegd worden aan het Google Agenda-account.';
$lang['ea_update_success'] = 'Easy!Appointments is succesvol bijgewerkt!';
$lang['require_captcha'] = 'CAPTCHA vereist!';
$lang['require_captcha_hint'] = 'Indien ingeschakeld moeten de klanten een willekeurige tekenreeks invullen om een afspraak te bevestigen.';
$lang['captcha_is_wrong'] = 'CAPTCHA verificatie is mislukt, probeer het a.u.b.nogmaals.';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Filter';
$lang['clear'] = 'Clear';
$lang['uncategorized'] = 'Uncategorized';
$lang['username_already_exists'] = 'Username already exists.';
$lang['password_length_notice'] = 'Password must be at least $number characters long.';
$lang['password_length_notice'] = 'Password must be at least $number characters long.';
$lang['general_settings'] = 'General Settings';
$lang['personal_information'] = 'Personal Information';
$lang['system_login'] = 'System Login';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/finnish/migration_lang.php */
/* Location: ./system/language/finnish/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Suodata';
$lang['clear'] = 'Tyhjennä';
$lang['uncategorized'] = 'Luokittelematon';
$lang['username_already_exists'] = 'Käyttäjätunnus on jo olemassa.';
$lang['password_length_notice'] = 'Salasanan minimipituus on $number merkkiä.';
$lang['password_length_notice'] = 'Salasanan minimipituus on $number merkkiä.';
$lang['general_settings'] = 'Yleiset asetukset';
$lang['personal_information'] = 'Henkilökohtaiset tiedot';
$lang['system_login'] = 'Järjestelmän kirjautuminen';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/english/migration_lang.php */
/* Location: ./system/language/english/migration_lang.php */

View file

@ -230,7 +230,7 @@ $lang['filter'] = 'Filtrer';
$lang['clear'] = 'Effacer';
$lang['uncategorized'] = 'Non catégorisé';
$lang['username_already_exists'] = 'Ce nom d\'utilisateur existe déjà.';
$lang['password_length_notice'] = 'Le mot de passe doit avoir au moins $number caractères de long.';
$lang['password_length_notice'] = 'Le mot de passe doit avoir au moins $number caractères de long.';
$lang['general_settings'] = 'Paramètres généraux';
$lang['personal_information'] = 'Informations personnelles';
$lang['system_login'] = 'Connexion système';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/german/migration_lang.php */
/* Location: ./system/language/german/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Filtern';
$lang['clear'] = 'Deaktivieren';
$lang['uncategorized'] = 'Nicht Zugeordnet';
$lang['username_already_exists'] = 'Benutzername ist bereits vorhanden.';
$lang['password_length_notice'] = 'Das Passwort muss mindestens $number Zeichen lang sein.';
$lang['password_length_notice'] = 'Das Passwort muss mindestens $number Zeichen lang sein.';
$lang['general_settings'] = 'Allgemeine Einstellungen';
$lang['personal_information'] = 'Persönliche Informationen';
$lang['system_login'] = 'System Login';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/greek/migration_lang.php */
/* Location: ./system/language/greek/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Φιλτράρισμα';
$lang['clear'] = 'Καθαρισμός';
$lang['uncategorized'] = 'Χωρίς Κατηγορία';
$lang['username_already_exists'] = 'Το όνομα χρήστη υπάρχει ήδη.';
$lang['password_length_notice'] = 'Ο κωδικός θα πρέπει να είναι τουλάχιστον $number χαρακτήρες.';
$lang['password_length_notice'] = 'Ο κωδικός θα πρέπει να είναι τουλάχιστον $number χαρακτήρες.';
$lang['general_settings'] = 'Γενικές Ρυθμίσεις';
$lang['personal_information'] = 'Προσωπικές Πληροφορίες';
$lang['system_login'] = 'Σύνδεση Στο Σύστημα';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/english/migration_lang.php */
/* Location: ./system/language/english/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'फ़िल्टर';
$lang['clear'] = 'स्पष्ट';
$lang['uncategorized'] = 'अवर्गीकृत';
$lang['username_already_exists'] = 'यूज़रनेम पहले से मौजूद है.';
$lang['password_length_notice'] = 'पासवर्ड कम से कम $number वर्ण लंबा होना चाहिए.';
$lang['password_length_notice'] = 'पासवर्ड कम से कम $number वर्ण लंबा होना चाहिए.';
$lang['general_settings'] = 'सामान्य सेटिंग्स';
$lang['personal_information'] = 'व्यक्तिगत जानकारी';
$lang['system_login'] = 'सिस्टम लॉगिन';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/hungarian/migration_lang.php */
/* Location: ./system/language/hungarian/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Szűrés';
$lang['clear'] = 'Töröl';
$lang['uncategorized'] = 'Nem kategorizált';
$lang['username_already_exists'] = 'A felhasználónév már létezik!';
$lang['password_length_notice'] = 'A jelszónak legalább $number karakter hosszú kell legyen.';
$lang['password_length_notice'] = 'A jelszónak legalább $number karakter hosszú kell legyen.';
$lang['general_settings'] = 'Általános beállítások';
$lang['personal_information'] = 'Személyes adatok';
$lang['system_login'] = 'Bejelentkezés a rendszerbe';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,12 +1,12 @@
<?php
$lang['migration_none_found'] = "Nessun migration trovato.";
$lang['migration_not_found'] = "Questo migration non può essere trovato.";
$lang['migration_multiple_version'] = "Ci sono più migrations con lo stesso numero di versione: %d.";
$lang['migration_class_doesnt_exist'] = "La migration class \"%s\" non può essere trovata.";
$lang['migration_missing_up_method'] = "La migration class \"%s\" non dispone del metodo 'up'.";
$lang['migration_missing_down_method'] = "La migration class \"%s\" non dispone del metodo 'down'.";
$lang['migration_invalid_filename'] = "Il migration \"%s\" ha un filename non valido.";
$lang['migration_none_found'] = "Nessun migration trovato.";
$lang['migration_not_found'] = "Questo migration non può essere trovato.";
$lang['migration_multiple_version'] = "Ci sono più migrations con lo stesso numero di versione: %d.";
$lang['migration_class_doesnt_exist'] = "La migration class \"%s\" non può essere trovata.";
$lang['migration_missing_up_method'] = "La migration class \"%s\" non dispone del metodo 'up'.";
$lang['migration_missing_down_method'] = "La migration class \"%s\" non dispone del metodo 'down'.";
$lang['migration_invalid_filename'] = "Il migration \"%s\" ha un filename non valido.";
/* End of file migration_lang.php */

View file

@ -238,7 +238,7 @@ $lang['filter'] = 'Filtra';
$lang['clear'] = 'Pulisci';
$lang['uncategorized'] = 'Senza categoria';
$lang['username_already_exists'] = 'Username già in uso.';
$lang['password_length_notice'] = 'La password deve essere lunga almeno $number caratteri.';
$lang['password_length_notice'] = 'La password deve essere lunga almeno $number caratteri.';
$lang['general_settings'] = 'Impostazioni generali';
$lang['personal_information'] = 'Informazioni personali';
$lang['system_login'] = 'Login di sistema';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/japanese/migration_lang.php */
/* Location: ./system/language/japanese/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = '絞込';
$lang['clear'] = 'クリア';
$lang['uncategorized'] = 'カテゴリー無い';
$lang['username_already_exists'] = 'そのユーザー名はすでに使用されています。';
$lang['password_length_notice'] = 'パスワードは 少なくとも $number 文字にしてください。';
$lang['password_length_notice'] = 'パスワードは 少なくとも $number 文字にしてください。';
$lang['general_settings'] = '一般設定';
$lang['personal_information'] = '個人設定';
$lang['system_login'] = 'システム ログイン';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/luxembourgish/migration_lang.php */
/* Location: ./system/language/luxembourgish/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Filteren';
$lang['clear'] = 'Deaktivéieren';
$lang['uncategorized'] = 'Net Zougeuerdnet';
$lang['username_already_exists'] = 'Dee Benotzernumm gëtt et ewell.';
$lang['password_length_notice'] = 'D\'Passwuert muss mindestens $number Zeeche laang sinn.';
$lang['password_length_notice'] = 'D\'Passwuert muss mindestens $number Zeeche laang sinn.';
$lang['general_settings'] = 'Allgemeng Astellungen';
$lang['personal_information'] = 'Perséinlich Informatiounen';
$lang['system_login'] = 'System Login';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/polish/migration_lang.php */
/* Location: ./system/language/polish/migration_lang.php */

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/portuguese-br/migration_lang.php */
/* Location: ./system/language/portuguese-br/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Filtrar';
$lang['clear'] = 'Limpar';
$lang['uncategorized'] = 'Sem Categoria';
$lang['username_already_exists'] = 'O Nome de usuário já existe.';
$lang['password_length_notice'] = 'A senha deve ter pelo menos $number caracteres.';
$lang['password_length_notice'] = 'A senha deve ter pelo menos $number caracteres.';
$lang['general_settings'] = 'Definições Gerais';
$lang['personal_information'] = 'Informações Pessoais';
$lang['system_login'] = 'Sistema de Acesso';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/portuguese/migration_lang.php */
/* Location: ./system/language/portuguese/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Filtrar';
$lang['clear'] = 'Limpar';
$lang['uncategorized'] = 'Sem Categoria';
$lang['username_already_exists'] = 'Nome de utilizador já existe.';
$lang['password_length_notice'] = 'A senha deve ter pelo menos $number caracteres.';
$lang['password_length_notice'] = 'A senha deve ter pelo menos $number caracteres.';
$lang['general_settings'] = 'Definições Gerais';
$lang['personal_information'] = 'Informações Pessoais';
$lang['system_login'] = 'Sistema de Acesso';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/romanian/migration_lang.php */
/* Location: ./system/language/romanian/migration_lang.php */

View file

@ -238,7 +238,7 @@ $lang['filter'] = 'Filtru';
$lang['clear'] = 'Elimina';
$lang['uncategorized'] = 'Necategorizat';
$lang['username_already_exists'] = 'Numele utilizator exista deja.';
$lang['password_length_notice'] = 'Parola trebuie sa aibe $number caractere.';
$lang['password_length_notice'] = 'Parola trebuie sa aibe $number caractere.';
$lang['general_settings'] = 'Setari generale';
$lang['personal_information'] = 'Informatii personale';
$lang['system_login'] = 'Login în sistem';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/russian/migration_lang.php */
/* Location: ./system/language/russian/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Фильтр';
$lang['clear'] = 'Очистить';
$lang['uncategorized'] = 'Несортировано';
$lang['username_already_exists'] = 'Такой логин уже зарегистрирован.';
$lang['password_length_notice'] = 'Пароль должен состоять не менее чем из $number символов.';
$lang['password_length_notice'] = 'Пароль должен состоять не менее чем из $number символов.';
$lang['general_settings'] = 'Общие настройки';
$lang['personal_information'] = 'Персональная информация';
$lang['system_login'] = 'Системный логин';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/slovak/migration_lang.php */
/* Location: ./system/language/slovak/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Filter';
$lang['clear'] = 'Vyčistiť';
$lang['uncategorized'] = 'Nezaradené';
$lang['username_already_exists'] = 'Užívateľské meno už existuje.';
$lang['password_length_notice'] = 'Heslo musí mať minimálne $number znakov.';
$lang['password_length_notice'] = 'Heslo musí mať minimálne $number znakov.';
$lang['general_settings'] = 'Všeobecné Nastavenie';
$lang['personal_information'] = 'Osobné Informácie';
$lang['system_login'] = 'Prihlásenie sa do systému';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/spanish/migration_lang.php */
/* Location: ./system/language/spanish/migration_lang.php */

View file

@ -9,7 +9,7 @@ $lang['minutes'] = 'Minutos';
$lang['price'] = 'Precio';
$lang['back'] = 'Atr&aacute;s';
$lang['step_two_title'] = 'Seleccione fecha y hora de cita';
$lang['no_available_hours'] ='No hay horarios disponibles para una cita en la fecha seleccionada. Por favor, elija otra fecha.';
$lang['no_available_hours'] = 'No hay horarios disponibles para una cita en la fecha seleccionada. Por favor, elija otra fecha.';
$lang['appointment_hour_missing'] = 'Por favor, seleccione un horario para la cita antes de continuar.';
$lang['step_three_title'] = 'Ingrese su informaci&oacute;n';
$lang['first_name'] = 'Nombre';
@ -35,7 +35,7 @@ $lang['appointment_removed_from_schedule'] = 'Se elimin&oacute; esta cita de la
$lang['appointment_details_was_sent_to_you'] = 'Se le ha enviado un correo electr&oacute;nico con los detalles de la cita.';
$lang['add_to_google_calendar'] = 'Agregar a Google Calendar';
$lang['appointment_booked'] = 'Su cita ha sido agendada exitosamente';
$lang['thank_you_for_appointment'] ='Gracias por utilizar nuestro servicio para agendar su cita. Debajo encontrar&aacute; los detalles de su cita. Haga clic en la cita para realizar cambios.';
$lang['thank_you_for_appointment'] = 'Gracias por utilizar nuestro servicio para agendar su cita. Debajo encontrar&aacute; los detalles de su cita. Haga clic en la cita para realizar cambios.';
$lang['appointment_details_title'] = 'Detalles de la cita';
$lang['customer_details_title'] = 'Detalles del cliente';
$lang['service'] = 'Servicio';
@ -151,7 +151,7 @@ $lang['friday'] = 'Viernes';
$lang['saturday'] = 'Sabado';
$lang['sunday'] = 'Domingo';
$lang['breaks'] = 'Periodos de descanso';
$lang['add_breaks_during_each_day'] ='Agregar periodos de descanso para cada d&iacute;a. Durante los periodos de descanso los proveedores no podr&aacute;n aceptar ninguna cita.';
$lang['add_breaks_during_each_day'] = 'Agregar periodos de descanso para cada d&iacute;a. Durante los periodos de descanso los proveedores no podr&aacute;n aceptar ninguna cita.';
$lang['day'] = 'D&iacute;a';
$lang['days'] = 'Days';
$lang['actions'] = 'Acciones';
@ -159,7 +159,7 @@ $lang['reset_working_plan_hint'] = 'Restaurar el esquema del horario laboral a l
$lang['company_name'] = 'Nombre de la empresa';
$lang['company_name_hint'] = 'El nombre de la empresa aparecer&aacute; en todo el sistema (obligatorio).';
$lang['company_email'] = 'Direcci&oacute;n de E-mail de la empresa';
$lang['company_email_hint'] ='Esta ser&aacute; la direcci&oacute;n de E-mail de la empresa. Ser&aacute; utilizada como la direcci&oacute;n para enviar E-mails del sistema y recibir respuestas (obligatorio).';
$lang['company_email_hint'] = 'Esta ser&aacute; la direcci&oacute;n de E-mail de la empresa. Ser&aacute; utilizada como la direcci&oacute;n para enviar E-mails del sistema y recibir respuestas (obligatorio).';
$lang['company_link'] = 'Enlace de la empresa';
$lang['company_link_hint'] = 'El enlace de la empresa debe dirigir al sitio web oficial de la empresa (obligatorio).';
$lang['go_to_booking_page'] = 'Ir a la p&aacute;gina para agendar';
@ -168,25 +168,25 @@ $lang['general'] = 'General';
$lang['business_logic'] = 'L&oacute;gica del negocio';
$lang['current_user'] = 'Usuario actual';
$lang['about_ea'] = 'Acerca de E!A';
$lang['edit_working_plan_hint'] ='Marque abajo los d&iacute;as y horarios en que su empresa aceptar&aacute; citas. Ser&aacute; posible agendar citas fuera del horario de trabajo, pero los clientes no podr&aacute;n agendar citas ellos mismos en esos horarios. Este ser&aacute; el esquema del horario laboral por defecto para todos los nuevos proveedores registrados, pero podr&aacute; cambiar el esquema de cada proveedor editando su registro. Luego se podr&aacute; agregar periodos de descanso.';
$lang['edit_breaks_hint'] ='Agrgar los periodos de descanso de trabajo en cada d&iacute;a. Se aplicar&aacute;n estos periodos de descanso para todos los nuevos proveedores.';
$lang['edit_working_plan_hint'] = 'Marque abajo los d&iacute;as y horarios en que su empresa aceptar&aacute; citas. Ser&aacute; posible agendar citas fuera del horario de trabajo, pero los clientes no podr&aacute;n agendar citas ellos mismos en esos horarios. Este ser&aacute; el esquema del horario laboral por defecto para todos los nuevos proveedores registrados, pero podr&aacute; cambiar el esquema de cada proveedor editando su registro. Luego se podr&aacute; agregar periodos de descanso.';
$lang['edit_breaks_hint'] = 'Agrgar los periodos de descanso de trabajo en cada d&iacute;a. Se aplicar&aacute;n estos periodos de descanso para todos los nuevos proveedores.';
$lang['book_advance_timeout'] = 'Agendar tiempos muertos';
$lang['book_advance_timeout_hint'] = 'Defina el tiempo muerto (en minutos) antes que de los clientes puedan agendar o reorganizar citas con la empresa.';
$lang['timeout_minutes'] = 'Tiempo muerto (en minutos)';
$lang['about_ea_info'] ='Easy!Appointments es un aplicativo web completamente personalizable que le permitir&aacute; a sus clientes agendar citas con Usted a trav&eacute;s internet. Adem&aacute;s, le permitir&aacute; sincronizar sus datos con Google Calendar, para poder utilizarlos con otros servicios.';
$lang['about_ea_info'] = 'Easy!Appointments es un aplicativo web completamente personalizable que le permitir&aacute; a sus clientes agendar citas con Usted a trav&eacute;s internet. Adem&aacute;s, le permitir&aacute; sincronizar sus datos con Google Calendar, para poder utilizarlos con otros servicios.';
$lang['current_version'] = 'Versi&oacute;n actual';
$lang['support'] = 'Soporte';
$lang['about_ea_support'] ='El grupo oficial de respuestas de Google Groups se encuentra a su disposici&oacute;n, en caso de que encuentre alg&uacute;n inconveniente con Easy!Appointments. Tambi&eacute;n podr&aacute; informar incidentes en la p&aacute;gina de Google Code y as&iacute; ayudar en el proceso de desarrollo de la herramienta.';
$lang['about_ea_support'] = 'El grupo oficial de respuestas de Google Groups se encuentra a su disposici&oacute;n, en caso de que encuentre alg&uacute;n inconveniente con Easy!Appointments. Tambi&eacute;n podr&aacute; informar incidentes en la p&aacute;gina de Google Code y as&iacute; ayudar en el proceso de desarrollo de la herramienta.';
$lang['official_website'] = 'Sitio web oficial';
$lang['google_plus_community'] = 'Comunidad en Google+';
$lang['support_group'] = 'Grupo de soporte';
$lang['project_issues'] = 'Incidentes del proyecto';
$lang['license'] = 'Licencia';
$lang['about_ea_license'] ='Easy!Appointments se encuentra bajo licencia GPLv3. Todo tipo de uso del c&oacute;digo de Easy!Appointments presume la aceptaci&oacute;n de los t&eacute;rminos desciptos en la siguiente direcci&oacute;n web:';
$lang['logout_success'] ='Usted ha cerrado su sesi&oacute;n exitosamente. Haga clic en uno de los siguientes botones para navegar hacia otra p&aacute;gina.';
$lang['about_ea_license'] = 'Easy!Appointments se encuentra bajo licencia GPLv3. Todo tipo de uso del c&oacute;digo de Easy!Appointments presume la aceptaci&oacute;n de los t&eacute;rminos desciptos en la siguiente direcci&oacute;n web:';
$lang['logout_success'] = 'Usted ha cerrado su sesi&oacute;n exitosamente. Haga clic en uno de los siguientes botones para navegar hacia otra p&aacute;gina.';
$lang['book_appointment_title'] = 'Agendar cita';
$lang['backend_section'] = 'Secci&oacute;n de gesti&oacute;n interna';
$lang['you_need_to_login'] ='&#161Bienvenido! Usted deber&aacute; iniciar sesi&oacute;n para ver las p&aacute;ginas de gesti&oacute;n interna.';
$lang['you_need_to_login'] = '&#161Bienvenido! Usted deber&aacute; iniciar sesi&oacute;n para ver las p&aacute;ginas de gesti&oacute;n interna.';
$lang['enter_username_here'] = 'Ingrese su nombre de usuario aqu&iacute;...';
$lang['enter_password_here'] = 'Ingrese su nombre de usuario aqu&iacute;...';
$lang['login'] = 'Iniciar sesi&oacute;n';
@ -198,8 +198,8 @@ $lang['regenerate_password'] = 'Regenerar contrase&ntilde;a';
$lang['go_to_login'] = 'Regresar a la p&aacute;gina de inicio de sesi&oacute;n';
$lang['new_password_sent_with_email'] = 'Se le ha enviado un correo electr&oacute;nico con su nueva contrase&ntilde;a.';
$lang['new_account_password'] = 'Nueva contrase&ntilde;a para iniciar sesi&oacute;n';
$lang['new_password_is'] ='Su nueva contrase&ntilde;a para iniciar sesi&oacute;n es $password. Por favor, guarde este correo electr&oacute;nico en caso de que necesite recuperar su contrase&ntilde;a nuevamente. Tambi&eacute;n puede reemplazar esta contrase&ntilde;a por una de su preferncia en la p&aacute;gina de Configuraci&oacute;n';
$lang['delete_record_prompt'] ='&#191Est&aacute; seguro de que quiere eliminar este registro? Esta acci&oacute;n no se podr&aacute; deshacer.';
$lang['new_password_is'] = 'Su nueva contrase&ntilde;a para iniciar sesi&oacute;n es $password. Por favor, guarde este correo electr&oacute;nico en caso de que necesite recuperar su contrase&ntilde;a nuevamente. Tambi&eacute;n puede reemplazar esta contrase&ntilde;a por una de su preferncia en la p&aacute;gina de Configuraci&oacute;n';
$lang['delete_record_prompt'] = '&#191Est&aacute; seguro de que quiere eliminar este registro? Esta acci&oacute;n no se podr&aacute; deshacer.';
$lang['delete_admin'] = 'Eliminar Administrador';
$lang['delete_customer'] = 'Eliminar Cliente';
$lang['delete_service'] = 'Eliminar Servicio';
@ -213,10 +213,10 @@ $lang['unexpected_issues'] = 'Problema inesperado';
$lang['unexpected_issues_message'] = 'La operaci&oacute;n no se pudo completar debido a un problema inesperado.';
$lang['close'] = 'Cerrar';
$lang['page_not_found'] = 'No se encontr&oacute; la p&aacute;gina';
$lang['page_not_found_message'] ='Lamentablemente, la p&aacute;gina que Usted solicit&oacute; no existe. Por favor, verifique la direcci&oacute;n web de su navegador o utilice los botones de abajo para navegar hacia otra ubicaci&oacute;n.';
$lang['page_not_found_message'] = 'Lamentablemente, la p&aacute;gina que Usted solicit&oacute; no existe. Por favor, verifique la direcci&oacute;n web de su navegador o utilice los botones de abajo para navegar hacia otra ubicaci&oacute;n.';
$lang['error'] = 'Error';
$lang['no_privileges'] = 'Sin permisos';
$lang['no_privileges_message'] ='Usted no posee los permisos necesarios para ver esta p&aacute;gina. Por favor, navegue hacia otra secci&oacute;n.';
$lang['no_privileges_message'] = 'Usted no posee los permisos necesarios para ver esta p&aacute;gina. Por favor, navegue hacia otra secci&oacute;n.';
$lang['backend_calendar'] = 'Calendario de gesti&oacute;n interna';
$lang['start_date_time'] = 'Fecha y hora de inicio';
$lang['end_date_time'] = 'Fecha y hora final';
@ -232,11 +232,11 @@ $lang['filter'] = 'Filtro';
$lang['clear'] = 'Limpiar';
$lang['uncategorized'] = 'Sin categor&iacute;a';
$lang['username_already_exists'] = 'El nombre de usuario ya est&aacute; en uso.';
$lang['password_length_notice'] = 'La contrase&ntilde;a debe tener al menos $number caracteres de largo.';
$lang['password_length_notice'] = 'La contrase&ntilde;a debe tener al menos $number caracteres de largo.';
$lang['general_settings'] = 'Configuraci&oacute;n general';
$lang['personal_information'] = 'Informaci&oacute;n personal';
$lang['system_login'] = 'Iniciar sesi&oacute;n en el sistema';
$lang['user_settings_are_invalid'] ='La configuraci&oacute;n de usuario es inv&aacute;lida. Por favor, verifique la configuraci&oacute;n e int&eacute;ntelo nuevamente.';
$lang['user_settings_are_invalid'] = 'La configuraci&oacute;n de usuario es inv&aacute;lida. Por favor, verifique la configuraci&oacute;n e int&eacute;ntelo nuevamente.';
$lang['add_break'] = 'Agregar un periodo de descanso';
$lang['january'] = 'Enero';
$lang['february'] = 'Febrero';
@ -258,11 +258,11 @@ $lang['time'] = 'Hora';
$lang['hour'] = 'Hora';
$lang['minute'] = 'Minuto';
$lang['google_sync_completed'] = 'Se complet&oacute; la sincronizaci&oacute;n con Google exitosamente';
$lang['google_sync_failed'] ='La sincronizaci&oacute;n con Google fall&oacute;: No se pudo establecer una conexi&oacute;n con el servidor.';
$lang['google_sync_failed'] = 'La sincronizaci&oacute;n con Google fall&oacute;: No se pudo establecer una conexi&oacute;n con el servidor.';
$lang['select_google_calendar'] = 'Seleccionar un calendario de Google Calendar';
$lang['select_google_calendar_prompt'] ='Seleccione el calendario con el que desea sincronizar sus citas. Si no desea seleccionar un calendario en particular, se utilizar&aacute; el calendario por defecto.';
$lang['select_google_calendar_prompt'] = 'Seleccione el calendario con el que desea sincronizar sus citas. Si no desea seleccionar un calendario en particular, se utilizar&aacute; el calendario por defecto.';
$lang['google_calendar_selected'] = 'Se ha seleccionado el calendario de Google Calendar exitosamente';
$lang['oops_something_went_wrong'] ='&#161Ups! &#161Algo ha salido mal!';
$lang['oops_something_went_wrong'] = '&#161Ups! &#161Algo ha salido mal!';
$lang['could_not_add_to_google_calendar'] = 'No se ha podido agregar la cita a su cuenta de Google Calendar.';
$lang['ea_update_success'] = 'Easy!Appointments ha sido actualizado exitosamente';
$lang['require_captcha'] = 'Requiere CAPTCHA';

View file

@ -1,10 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
</html>

View file

@ -1,13 +1,13 @@
<?php
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
$lang['migration_none_found'] = "No migrations were found.";
$lang['migration_not_found'] = "This migration could not be found.";
$lang['migration_multiple_version'] = "This are multiple migrations with the same version number: %d.";
$lang['migration_class_doesnt_exist'] = "The migration class \"%s\" could not be found.";
$lang['migration_missing_up_method'] = "The migration class \"%s\" is missing an 'up' method.";
$lang['migration_missing_down_method'] = "The migration class \"%s\" is missing an 'down' method.";
$lang['migration_invalid_filename'] = "Migration \"%s\" has an invalid filename.";
/* End of file migration_lang.php */
/* Location: ./system/language/turkish/migration_lang.php */
/* Location: ./system/language/turkish/migration_lang.php */

View file

@ -232,7 +232,7 @@ $lang['filter'] = 'Filtrele';
$lang['clear'] = 'Temizle';
$lang['uncategorized'] = 'Kategorisiz';
$lang['username_already_exists'] = 'Kullanıcı zaten var.';
$lang['password_length_notice'] = 'Şifre en az $number karakter uzunluğunda olmalı.';
$lang['password_length_notice'] = 'Şifre en az $number karakter uzunluğunda olmalı.';
$lang['general_settings'] = 'Genel Ayarlar';
$lang['personal_information'] = 'Kişisel Bilgiler';
$lang['system_login'] = 'Sistem Girişi';

View file

@ -1,4 +1,7 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH'))
{
exit('No direct script access allowed');
}
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
@ -52,14 +55,15 @@ class Google_Sync {
* This method initializes the Google client class and the Calendar service
* class so that they can be used by the other methods.
*/
public function __construct() {
public function __construct()
{
$this->CI =& get_instance();
$this->CI->load->library('session');
// Initialize google client and calendar service.
$this->client = new Google_Client();
$this->client->setUseObjects(true);
$this->client->setUseObjects(TRUE);
$this->client->setApplicationName(Config::GOOGLE_PRODUCT_NAME);
$this->client->setClientId(Config::GOOGLE_CLIENT_ID);
@ -76,10 +80,11 @@ class Google_Sync {
* This url must be used to redirect the user to the Google user consent page,
* where the user grants access to his data for the Easy!Appointments app.
*/
public function get_auth_url() {
// "max_auth_age" is needed because the user needs to always log in
// and not use an existing session.
return $this->client->createAuthUrl() . '&max_auth_age=0';
public function get_auth_url()
{
// "max_auth_age" is needed because the user needs to always log in
// and not use an existing session.
return $this->client->createAuthUrl() . '&max_auth_age=0';
}
/**
@ -92,7 +97,8 @@ class Google_Sync {
*
* @see Google Controller
*/
public function authenticate($auth_code) {
public function authenticate($auth_code)
{
$this->client->authenticate($auth_code);
return $this->client->getAccessToken();
}
@ -110,8 +116,9 @@ class Google_Sync {
* stored in the database and used every time we need to make actions to his
* Google Caledar account.
*/
public function refresh_token($refresh_token) {
$this->client->refreshToken($refresh_token);
public function refresh_token($refresh_token)
{
$this->client->refreshToken($refresh_token);
}
/**
@ -132,7 +139,8 @@ class Google_Sync {
*
* @return Google_Event Returns the Google_Event class object.
*/
public function add_appointment($appointment, $provider, $service, $customer, $company_settings) {
public function add_appointment($appointment, $provider, $service, $customer, $company_settings)
{
$this->CI->load->helper('general');
$event = new Google_Event();
@ -147,18 +155,19 @@ class Google_Sync {
$end->setDateTime(date3339(strtotime($appointment['end_datetime'])));
$event->setEnd($end);
$event->attendees = array();
$event->attendees = [];
$event_provider = new Google_EventAttendee();
$event_provider->setDisplayName($provider['first_name'] . ' '
. $provider['last_name']);
. $provider['last_name']);
$event_provider->setEmail($provider['email']);
$event->attendees[] = $event_provider;
if ($customer != NULL) {
if ($customer != NULL)
{
$event_customer = new Google_EventAttendee();
$event_customer->setDisplayName($customer['first_name'] . ' '
. $customer['last_name']);
. $customer['last_name']);
$event_customer->setEmail($customer['email']);
$event->attendees[] = $event_customer;
}
@ -185,10 +194,12 @@ class Google_Sync {
*
* @return Google_Event Returns the Google_Event class object.
*/
public function update_appointment($appointment, $provider, $service, $customer, $company_settings) {
public function update_appointment($appointment, $provider, $service, $customer, $company_settings)
{
$this->CI->load->helper('general');
$event = $this->service->events->get($provider['settings']['google_calendar'], $appointment['id_google_calendar']);
$event = $this->service->events->get($provider['settings']['google_calendar'],
$appointment['id_google_calendar']);
$event->setSummary($service['name']);
$event->setLocation($company_settings['company_name']);
@ -201,24 +212,25 @@ class Google_Sync {
$end->setDateTime(date3339(strtotime($appointment['end_datetime'])));
$event->setEnd($end);
$event->attendees = array();
$event->attendees = [];
$event_provider = new Google_EventAttendee();
$event_provider->setDisplayName($provider['first_name'] . ' '
. $provider['last_name']);
. $provider['last_name']);
$event_provider->setEmail($provider['email']);
$event->attendees[] = $event_provider;
if ($customer != NULL) {
if ($customer != NULL)
{
$event_customer = new Google_EventAttendee();
$event_customer->setDisplayName($customer['first_name'] . ' '
. $customer['last_name']);
. $customer['last_name']);
$event_customer->setEmail($customer['email']);
$event->attendees[] = $event_customer;
}
$updated_event = $this->service->events->update($provider['settings']['google_calendar'],
$event->getId(), $event);
$event->getId(), $event);
return $updated_event;
}
@ -230,10 +242,13 @@ class Google_Sync {
* @param string $google_event_id The Google Calendar event id to
* be deleted.
*/
public function delete_appointment($provider, $google_event_id) {
try {
public function delete_appointment($provider, $google_event_id)
{
try
{
$this->service->events->delete($provider['settings']['google_calendar'], $google_event_id);
} catch (Exception $ex) {
} catch (Exception $ex)
{
// Event was not found on Google Calendar.
}
}
@ -246,7 +261,8 @@ class Google_Sync {
*
* @return Google_Event Returns the google event's object.
*/
public function add_unavailable($provider, $unavailable) {
public function add_unavailable($provider, $unavailable)
{
$this->CI->load->helper('general');
$event = new Google_Event();
@ -276,10 +292,12 @@ class Google_Sync {
*
* @return Google_Event Returns the Google_Event object.
*/
public function update_unavailable($provider, $unavailable) {
public function update_unavailable($provider, $unavailable)
{
$this->CI->load->helper('general');
$event = $this->service->events->get($provider['settings']['google_calendar'], $unavailable['id_google_calendar']);
$event = $this->service->events->get($provider['settings']['google_calendar'],
$unavailable['id_google_calendar']);
$event->setDescription($unavailable['notes']);
$start = new Google_EventDateTime();
@ -291,7 +309,7 @@ class Google_Sync {
$event->setEnd($end);
$updated_event = $this->service->events->update($provider['settings']['google_calendar'],
$event->getId(), $event);
$event->getId(), $event);
return $updated_event;
}
@ -302,10 +320,13 @@ class Google_Sync {
* @param array $provider Contains the provider record data.
* @param string $google_event_id Google Calendar event id to be deleted.
*/
public function delete_unavailable($provider, $google_event_id) {
try {
public function delete_unavailable($provider, $google_event_id)
{
try
{
$this->service->events->delete($provider['settings']['google_calendar'], $google_event_id);
} catch (Exception $ex) {
} catch (Exception $ex)
{
// Event was not found on Google Calendar.
}
}
@ -318,7 +339,8 @@ class Google_Sync {
*
* @return Google_Event Returns the google event object.
*/
public function get_event($provider, $google_event_id) {
public function get_event($provider, $google_event_id)
{
return $this->service->events->get($provider['settings']['google_calendar'], $google_event_id);
}
@ -332,13 +354,14 @@ class Google_Sync {
* @return object Returns an array with Google_Event objects that belong on the given
* sync period (start, end).
*/
public function get_sync_events($google_calendar, $start, $end) {
public function get_sync_events($google_calendar, $start, $end)
{
$this->CI->load->helper('general');
$params = array(
$params = [
'timeMin' => date3339($start),
'timeMax' => date3339($end)
);
];
return $this->service->events->listEvents($google_calendar, $params);
}
@ -353,19 +376,22 @@ class Google_Sync {
*
* @return array Returns an array with the available calendars.
*/
public function get_google_calendars() {
public function get_google_calendars()
{
$calendarList = $this->service->calendarList->listCalendarList();
$calendars = array();
foreach ($calendarList->items as $google_calendar) {
if ($google_calendar->getAccessRole() === 'reader') {
$calendars = [];
foreach ($calendarList->items as $google_calendar)
{
if ($google_calendar->getAccessRole() === 'reader')
{
continue;
}
$calendars[] = array(
$calendars[] = [
'id' => $google_calendar->id,
'summary' => $google_calendar->summary
);
];
}
return $calendars;
return $calendars;
}
}

View file

@ -13,22 +13,26 @@
class Migration_Specific_calendar_sync extends CI_Migration {
public function up() {
if (!$this->db->field_exists('google_calendar', 'ea_user_settings')) {
$fields = array(
'google_calendar' => array(
public function up()
{
if ( ! $this->db->field_exists('google_calendar', 'ea_user_settings'))
{
$fields = [
'google_calendar' => [
'type' => 'VARCHAR',
'constraint' => '128',
'null' => TRUE
)
);
]
];
$this->dbforge->add_column('ea_user_settings', $fields);
}
}
}
public function down() {
if ($this->db->field_exists('google_calendar', 'ea_user_settings')) {
$this->dbforge->drop_column('ea_user_settings', 'google_calendar');
public function down()
{
if ($this->db->field_exists('google_calendar', 'ea_user_settings'))
{
$this->dbforge->drop_column('ea_user_settings', 'google_calendar');
}
}
}
}

View file

@ -12,12 +12,14 @@
* ---------------------------------------------------------------------------- */
class Migration_Add_google_analytics_setting extends CI_Migration {
public function up() {
public function up()
{
$this->load->model('settings_model');
$this->settings_model->set_setting('google_analytics_code', '');
}
public function down() {
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('google_analytics_code');
}

View file

@ -12,12 +12,14 @@
* ---------------------------------------------------------------------------- */
class Migration_Add_customer_notifications_setting extends CI_Migration {
public function up() {
public function up()
{
$this->load->model('settings_model');
$this->settings_model->set_setting('customer_notifications', '1');
}
public function down() {
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('customer_notifications');
}

View file

@ -12,12 +12,14 @@
* ---------------------------------------------------------------------------- */
class Migration_Add_date_format_setting extends CI_Migration {
public function up() {
public function up()
{
$this->load->model('settings_model');
$this->settings_model->set_setting('date_format', DATE_FORMAT_DMY);
}
public function down() {
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('date_format');
}

View file

@ -12,12 +12,14 @@
* ---------------------------------------------------------------------------- */
class Migration_Add_require_captcha_setting extends CI_Migration {
public function up() {
public function up()
{
$this->load->model('settings_model');
$this->settings_model->set_setting('require_captcha', '1');
}
public function down() {
public function down()
{
$this->load->model('settings_model');
$this->settings_model->remove_setting('require_captcha');
}

View file

@ -12,23 +12,25 @@
* ---------------------------------------------------------------------------- */
class Migration_Add_calendar_view_setting extends CI_Migration {
public function up() {
public function up()
{
$this->load->dbforge();
$fields = [
'calendar_view' => [
'calendar_view' => [
'type' => 'VARCHAR',
'constraint' => '32',
'constraint' => '32',
'default' => 'default'
]
];
];
$this->dbforge->add_column('ea_user_settings', $fields);
$this->dbforge->add_column('ea_user_settings', $fields);
$this->db->update('ea_user_settings', ['calendar_view' => 'default']);
}
public function down() {
public function down()
{
$this->load->dbforge();
$this->dbforge->drop_column('ea_user_settings', 'calendar_view');
}

View file

@ -12,24 +12,26 @@
* ---------------------------------------------------------------------------- */
class Migration_Add_service_availabilities_type extends CI_Migration {
public function up() {
public function up()
{
$this->load->dbforge();
$fields = [
'availabilities_type' => [
'availabilities_type' => [
'type' => 'VARCHAR',
'constraint' => '32',
'constraint' => '32',
'default' => 'flexible',
'after' => 'description'
]
];
];
$this->dbforge->add_column('ea_services', $fields);
$this->dbforge->add_column('ea_services', $fields);
$this->db->update('ea_services', ['availabilities_type' => 'flexible']);
}
public function down() {
public function down()
{
$this->load->dbforge();
$this->dbforge->drop_column('ea_services', 'availabilities_type');
}

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