Removed the deprecated engine directory from the project (including tests and the composer autoloading configuration)

This commit is contained in:
Alex Tselegidis 2021-11-06 16:15:12 +01:00
parent 3cd1e19066
commit e65c178e8f
56 changed files with 0 additions and 3082 deletions

View file

@ -26,14 +26,6 @@
"services" "services"
], ],
"minimum-stability": "stable", "minimum-stability": "stable",
"autoload": {
"psr-4": {
"EA\\Engine\\": [
"engine/",
"tests/engine/"
]
}
},
"require": { "require": {
"php": ">=7.3", "php": ">=7.3",
"ext-curl": "*", "ext-curl": "*",

View file

@ -1,62 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use CI_Controller;
use EA\Engine\Types\NonEmptyText;
use EA_Controller;
/**
* API v1 Authorization Class
*
* This class will handle the authorization procedure of the API.
*
* @deprecated
*/
class Authorization {
/**
* Framework Instance
*
* @var EA_Controller
*/
protected $CI;
/**
* Class Constructor
*
* @param CI_Controller $CI
*/
public function __construct(EA_Controller $CI)
{
$this->CI = $CI;
}
/**
* Perform Basic Authentication
*
* @param NonEmptyText $username Admin Username
* @param NonEmptyText $password Admin Password
*
* @throws \RuntimeException
*/
public function basic(NonEmptyText $username, NonEmptyText $password)
{
$this->CI->load->library('accounts');
if ( ! $this->CI->accounts->check_login($username->get(), $password->get()))
{
throw new \RuntimeException('The provided credentials do not match any admin user!', 401, 'Unauthorized');
}
}
}

View file

@ -1,58 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
/**
* API v1 Exception Class
*
* This exception variation will hold the information needed for exception handling in the API.
*
* @deprecated
*/
class Exception extends \Exception {
/**
* Header Description
*
* e.g. 'Unauthorized'
*
* @var string
*/
protected $header;
/**
* Class Constructor
*
* @link http://php.net/manual/en/class.exception.php
*
* @param string $message
* @param int $code
* @param string $header
* @param \Exception|null $previous
*/
public function __construct($message = NULL, $code = 500, $header = '', \Exception $previous = NULL)
{
parent::__construct($message, $code, $previous);
$this->header = $header;
}
/**
* Get the header string.
*
* @return string
*/
public function get_header()
{
return $this->header;
}
}

View file

@ -1,155 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Admins Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Admins implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'id' => array_key_exists('id', $response) ? (int)$response['id'] : NULL,
'firstName' => $response['first_name'],
'lastName' => $response['last_name'],
'email' => $response['email'],
'mobile' => $response['mobile_number'],
'phone' => $response['phone_number'],
'address' => $response['address'],
'city' => $response['city'],
'state' => $response['state'],
'zip' => $response['zip_code'],
'notes' => $response['notes'],
'timezone' => $response['timezone'],
'settings' => [
'username' => $response['settings']['username'],
'notifications' => filter_var($response['settings']['notifications'], FILTER_VALIDATE_BOOLEAN),
'calendarView' => $response['settings']['calendar_view']
]
];
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decoded_request = $base ?: [];
if (array_key_exists('id', $request))
{
$decoded_request['id'] = $request['id'];
}
if (array_key_exists('firstName', $request))
{
$decoded_request['first_name'] = $request['firstName'];
}
if (array_key_exists('lastName', $request))
{
$decoded_request['last_name'] = $request['lastName'];
}
if (array_key_exists('email', $request))
{
$decoded_request['email'] = $request['email'];
}
if (array_key_exists('mobile', $request))
{
$decoded_request['mobile_number'] = $request['mobile'];
}
if (array_key_exists('phone', $request))
{
$decoded_request['phone_number'] = $request['phone'];
}
if (array_key_exists('address', $request))
{
$decoded_request['address'] = $request['address'];
}
if (array_key_exists('city', $request))
{
$decoded_request['city'] = $request['city'];
}
if (array_key_exists('state', $request))
{
$decoded_request['state'] = $request['state'];
}
if (array_key_exists('zip', $request))
{
$decoded_request['zip_code'] = $request['zip'];
}
if (array_key_exists('notes', $request))
{
$decoded_request['notes'] = $request['notes'];
}
if (array_key_exists('timezone', $request))
{
$decoded_request['timezone'] = $request['timezone'];
}
if (array_key_exists('settings', $request))
{
if (empty($decoded_request['settings']))
{
$decoded_request['settings'] = [];
}
if (array_key_exists('username', $request['settings']))
{
$decoded_request['settings']['username'] = $request['settings']['username'];
}
if (array_key_exists('password', $request['settings']))
{
$decoded_request['settings']['password'] = $request['settings']['password'];
}
if (array_key_exists('notifications', $request['settings']))
{
$decoded_request['settings']['notifications'] = filter_var($request['settings']['notifications'],
FILTER_VALIDATE_BOOLEAN);
}
if (array_key_exists('calendarView', $request['settings']))
{
$decoded_request['settings']['calendar_view'] = $request['settings']['calendarView'];
}
}
$request = $decoded_request;
}
}

View file

@ -1,138 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Appointments Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Appointments implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'id' => array_key_exists('id', $response) ? (int)$response['id'] : NULL,
'book' => $response['book_datetime'],
'start' => $response['start_datetime'],
'end' => $response['end_datetime'],
'hash' => $response['hash'],
'location' => $response['location'],
'notes' => $response['notes'],
'customerId' => $response['id_users_customer'] !== NULL ? (int)$response['id_users_customer'] : NULL,
'providerId' => $response['id_users_provider'] !== NULL ? (int)$response['id_users_provider'] : NULL,
'serviceId' => $response['id_services'] !== NULL ? (int)$response['id_services'] : NULL,
'googleCalendarId' => $response['id_google_calendar'] !== NULL ? (int)$response['id_google_calendar'] : NULL
];
if (isset($response['provider']))
{
$provider_parser = new Providers();
$provider_parser->encode($response['provider']);
$encoded_response['provider'] = $response['provider'];
}
if (isset($response['customer']))
{
$customer_parser = new Customers();
$customer_parser->encode($response['customer']);
$encoded_response['customer'] = $response['customer'];
}
if (isset($response['service']))
{
$service_parser = new Services();
$service_parser->encode($response['service']);
$encoded_response['service'] = $response['service'];
}
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decoded_request = $base ?: [];
if (array_key_exists('id', $request))
{
$decoded_request['id'] = $request['id'];
}
if (array_key_exists('book', $request))
{
$decoded_request['book_datetime'] = $request['book'];
}
if (array_key_exists('start', $request))
{
$decoded_request['start_datetime'] = $request['start'];
}
if (array_key_exists('end', $request))
{
$decoded_request['end_datetime'] = $request['end'];
}
if (array_key_exists('hash', $request))
{
$decoded_request['hash'] = $request['hash'];
}
if (array_key_exists('location', $request))
{
$decoded_request['location'] = $request['location'];
}
if (array_key_exists('notes', $request))
{
$decoded_request['notes'] = $request['notes'];
}
if (array_key_exists('customerId', $request))
{
$decoded_request['id_users_customer'] = $request['customerId'];
}
if (array_key_exists('providerId', $request))
{
$decoded_request['id_users_provider'] = $request['providerId'];
}
if (array_key_exists('serviceId', $request))
{
$decoded_request['id_services'] = $request['serviceId'];
}
if (array_key_exists('googleCalendarId', $request))
{
$decoded_request['id_google_calendar'] = $request['googleCalendarId'];
}
$decoded_request['is_unavailable'] = FALSE;
$request = $decoded_request;
}
}

View file

@ -1,67 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Categories Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Categories implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'id' => array_key_exists('id', $response) ? (int)$response['id'] : NULL,
'name' => $response['name'],
'description' => array_key_exists('description', $response) ? $response['description'] : NULL
];
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decoded_request = $base ?: [];
if (array_key_exists('id', $request))
{
$decoded_request['id'] = $request['id'];
}
if (array_key_exists('name', $request))
{
$decoded_request['name'] = $request['name'];
}
if (array_key_exists('description', $request))
{
$decoded_request['description'] = $request['description'];
}
$request = $decoded_request;
}
}

View file

@ -1,103 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Customers Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Customers implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'id' => array_key_exists('id', $response) ? (int)$response['id'] : NULL,
'firstName' => $response['first_name'],
'lastName' => $response['last_name'],
'email' => $response['email'],
'phone' => $response['phone_number'],
'address' => $response['address'],
'city' => $response['city'],
'zip' => $response['zip_code'],
'notes' => $response['notes']
];
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decoded_request = $base ?: [];
if ( array_key_exists('id', $request))
{
$decoded_request['id'] = $request['id'];
}
if ( array_key_exists('firstName', $request))
{
$decoded_request['first_name'] = $request['firstName'];
}
if ( array_key_exists('lastName', $request))
{
$decoded_request['last_name'] = $request['lastName'];
}
if ( array_key_exists('email', $request))
{
$decoded_request['email'] = $request['email'];
}
if ( array_key_exists('phone', $request))
{
$decoded_request['phone_number'] = $request['phone'];
}
if ( array_key_exists('address', $request))
{
$decoded_request['address'] = $request['address'];
}
if ( array_key_exists('city', $request))
{
$decoded_request['city'] = $request['city'];
}
if ( array_key_exists('zip', $request))
{
$decoded_request['zip_code'] = $request['zip'];
}
if ( array_key_exists('notes', $request))
{
$decoded_request['notes'] = $request['notes'];
}
$request = $decoded_request;
}
}

View file

@ -1,38 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Parsers Interface
*
* Every parser needs the "encode" and "decode" methods.
*
* @deprecated
*/
interface ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response);
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL);
}

View file

@ -1,226 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Providers Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Providers implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'id' => array_key_exists('id', $response) ? (int)$response['id'] : NULL,
'firstName' => $response['first_name'],
'lastName' => $response['last_name'],
'email' => $response['email'],
'mobile' => $response['mobile_number'],
'phone' => $response['phone_number'],
'address' => $response['address'],
'city' => $response['city'],
'state' => $response['state'],
'zip' => $response['zip_code'],
'notes' => $response['notes'],
'timezone' => $response['timezone'],
];
if (array_key_exists('services', $response))
{
$encoded_response['services'] = $response['services'];
}
if (array_key_exists('settings', $response))
{
$encoded_response['settings'] = [
'username' => $response['settings']['username'],
'notifications' => filter_var($response['settings']['notifications'], FILTER_VALIDATE_BOOLEAN),
'calendarView' => $response['settings']['calendar_view'],
'googleSync' => array_key_exists('google_sync', $response['settings'])
? filter_var($response['settings']['google_sync'], FILTER_VALIDATE_BOOLEAN)
: NULL,
'googleCalendar' => array_key_exists('google_calendar', $response['settings'])
? $response['settings']['google_calendar']
: NULL,
'googleToken' => array_key_exists('google_token', $response['settings'])
? $response['settings']['google_token']
: NULL,
'syncFutureDays' => array_key_exists('sync_future_days', $response['settings'])
? (int)$response['settings']['sync_future_days']
: NULL,
'syncPastDays' => array_key_exists('sync_past_days', $response['settings'])
? (int)$response['settings']['sync_past_days']
: NULL,
'workingPlan' => array_key_exists('working_plan', $response['settings'])
? json_decode($response['settings']['working_plan'], TRUE)
: NULL,
'workingPlanExceptions' => array_key_exists('working_plan_exceptions', $response['settings'])
? json_decode($response['settings']['working_plan_exceptions'], TRUE)
: NULL,
];
}
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decoded_request = $base ?: [];
if (array_key_exists('id', $request))
{
$decoded_request['id'] = $request['id'];
}
if (array_key_exists('firstName', $request))
{
$decoded_request['first_name'] = $request['firstName'];
}
if (array_key_exists('lastName', $request))
{
$decoded_request['last_name'] = $request['lastName'];
}
if (array_key_exists('email', $request))
{
$decoded_request['email'] = $request['email'];
}
if (array_key_exists('mobile', $request))
{
$decoded_request['mobile_number'] = $request['mobile'];
}
if (array_key_exists('phone', $request))
{
$decoded_request['phone_number'] = $request['phone'];
}
if (array_key_exists('address', $request))
{
$decoded_request['address'] = $request['address'];
}
if (array_key_exists('city', $request))
{
$decoded_request['city'] = $request['city'];
}
if (array_key_exists('state', $request))
{
$decoded_request['state'] = $request['state'];
}
if (array_key_exists('zip', $request))
{
$decoded_request['zip_code'] = $request['zip'];
}
if (array_key_exists('notes', $request))
{
$decoded_request['notes'] = $request['notes'];
}
if (array_key_exists('timezone', $request))
{
$decoded_request['timezone'] = $request['timezone'];
}
if (array_key_exists('services', $request))
{
$decoded_request['services'] = $request['services'];
}
if (array_key_exists('settings', $request))
{
if (empty($decoded_request['settings']))
{
$decoded_request['settings'] = [];
}
if (array_key_exists('username', $request['settings']))
{
$decoded_request['settings']['username'] = $request['settings']['username'];
}
if (array_key_exists('password', $request['settings']))
{
$decoded_request['settings']['password'] = $request['settings']['password'];
}
if (array_key_exists('calendarView', $request['settings']))
{
$decoded_request['settings']['calendar_view'] = $request['settings']['calendarView'];
}
if (array_key_exists('notifications', $request['settings']))
{
$decoded_request['settings']['notifications'] = filter_var($request['settings']['notifications'],
FILTER_VALIDATE_BOOLEAN);
}
if (array_key_exists('googleSync', $request['settings']))
{
$decoded_request['settings']['google_sync'] = filter_var($request['settings']['googleSync'],
FILTER_VALIDATE_BOOLEAN);
}
if (array_key_exists('googleCalendar', $request['settings']))
{
$decoded_request['settings']['google_calendar'] = $request['settings']['googleCalendar'];
}
if (array_key_exists('googleToken', $request['settings']))
{
$decoded_request['settings']['google_token'] = $request['settings']['googleToken'];
}
if (array_key_exists('syncFutureDays', $request['settings']))
{
$decoded_request['settings']['sync_future_days'] = $request['settings']['syncFutureDays'];
}
if (array_key_exists('syncPastDays', $request['settings']))
{
$decoded_request['settings']['sync_past_days'] = $request['settings']['syncPastDays'];
}
if (array_key_exists('workingPlan', $request['settings']))
{
$decoded_request['settings']['working_plan'] = json_encode($request['settings']['workingPlan']);
}
if (array_key_exists('workingPlanExceptions', $request['settings']))
{
$decoded_request['settings']['working_plan_exceptions'] = json_encode($request['settings']['workingPlanExceptions']);
}
}
$request = $decoded_request;
}
}

View file

@ -1,161 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Secretaries Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Secretaries implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'id' => array_key_exists('id', $response) ? (int)$response['id'] : NULL,
'firstName' => $response['first_name'],
'lastName' => $response['last_name'],
'email' => $response['email'],
'mobile' => $response['mobile_number'],
'phone' => $response['phone_number'],
'address' => $response['address'],
'city' => $response['city'],
'state' => $response['state'],
'zip' => $response['zip_code'],
'notes' => $response['notes'],
'providers' => $response['providers'],
'timezone' => $response['timezone'],
'settings' => [
'username' => $response['settings']['username'],
'notifications' => filter_var($response['settings']['notifications'], FILTER_VALIDATE_BOOLEAN),
'calendarView' => $response['settings']['calendar_view']
]
];
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decoded_request = $base ?: [];
if (array_key_exists('id', $request))
{
$decoded_request['id'] = $request['id'];
}
if (array_key_exists('firstName', $request))
{
$decoded_request['first_name'] = $request['firstName'];
}
if (array_key_exists('lastName', $request))
{
$decoded_request['last_name'] = $request['lastName'];
}
if (array_key_exists('email', $request))
{
$decoded_request['email'] = $request['email'];
}
if (array_key_exists('mobile', $request))
{
$decoded_request['mobile_number'] = $request['mobile'];
}
if (array_key_exists('phone', $request))
{
$decoded_request['phone_number'] = $request['phone'];
}
if (array_key_exists('address', $request))
{
$decoded_request['address'] = $request['address'];
}
if (array_key_exists('city', $request))
{
$decoded_request['city'] = $request['city'];
}
if (array_key_exists('state', $request))
{
$decoded_request['state'] = $request['state'];
}
if (array_key_exists('zip', $request))
{
$decoded_request['zip_code'] = $request['zip'];
}
if (array_key_exists('notes', $request))
{
$decoded_request['notes'] = $request['notes'];
}
if (array_key_exists('timezone', $request))
{
$decoded_request['timezone'] = $request['timezone'];
}
if (array_key_exists('providers', $request))
{
$decoded_request['providers'] = $request['providers'];
}
if (array_key_exists('settings', $request))
{
if (empty($decoded_request['settings']))
{
$decoded_request['settings'] = [];
}
if (array_key_exists('username', $request['settings']))
{
$decoded_request['settings']['username'] = $request['settings']['username'];
}
if (array_key_exists('password', $request['settings']))
{
$decoded_request['settings']['password'] = $request['settings']['password'];
}
if (array_key_exists('notifications', $request['settings']))
{
$decoded_request['settings']['notifications'] = filter_var($request['settings']['notifications'],
FILTER_VALIDATE_BOOLEAN);
}
if (array_key_exists('calendarView', $request['settings']))
{
$decoded_request['settings']['calendar_view'] = $request['settings']['calendarView'];
}
}
$request = $decoded_request;
}
}

View file

@ -1,109 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Services Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Services implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'id' => array_key_exists('id', $response) ? (int)$response['id'] : NULL,
'name' => $response['name'],
'duration' => (int)$response['duration'],
'price' => (float)$response['price'],
'currency' => $response['currency'],
'description' => $response['description'],
'location' => $response['location'],
'availabilitiesType' => $response['availabilities_type'],
'attendantsNumber' => (int)$response['attendants_number'],
'categoryId' => $response['id_service_categories'] !== NULL ? (int)$response['id_service_categories'] : NULL
];
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decoded_request = $base ?: [];
if (array_key_exists('id', $request))
{
$decoded_request['id'] = $request['id'];
}
if (array_key_exists('name', $request))
{
$decoded_request['name'] = $request['name'];
}
if (array_key_exists('duration', $request))
{
$decoded_request['duration'] = $request['duration'];
}
if (array_key_exists('price', $request))
{
$decoded_request['price'] = $request['price'];
}
if (array_key_exists('currency', $request))
{
$decoded_request['currency'] = $request['currency'];
}
if (array_key_exists('description', $request))
{
$decoded_request['description'] = $request['description'];
}
if (array_key_exists('location', $request))
{
$decoded_request['location'] = $request['location'];
}
if (array_key_exists('availabilitiesType', $request))
{
$decoded_request['availabilities_type'] = $request['availabilitiesType'];
}
if (array_key_exists('attendantsNumber', $request))
{
$decoded_request['attendants_number'] = $request['attendantsNumber'];
}
if (array_key_exists('categoryId', $request))
{
$decoded_request['id_service_categories'] = $request['categoryId'];
}
$request = $decoded_request;
}
}

View file

@ -1,61 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Settings Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Settings implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'name' => $response['name'],
'value' => $response['value']
];
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decoded_request = $base ?: [];
if (array_key_exists('name', $request))
{
$decoded_request['name'] = $request['name'];
}
if (array_key_exists('value', $request))
{
$decoded_request['value'] = $request['value'];
}
$request = $decoded_request;
}
}

View file

@ -1,97 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Parsers;
/**
* Unavailabilities Parser
*
* This class will handle the encoding and decoding from the API requests.
*
* @deprecated
*/
class Unavailabilities implements ParsersInterface {
/**
* Encode Response Array
*
* @param array &$response The response to be encoded.
*/
public function encode(array &$response)
{
$encoded_response = [
'id' => array_key_exists('id', $response) ? (int)$response['id'] : NULL,
'book' => $response['book_datetime'],
'start' => $response['start_datetime'],
'end' => $response['end_datetime'],
'notes' => $response['notes'],
'providerId' => array_key_exists('id_users_provider', $response)
? (int)$response['id_users_provider']
: NULL,
'googleCalendarId' => array_key_exists('id_google_calendar', $response)
? (int)$response['id_google_calendar']
: NULL
];
$response = $encoded_response;
}
/**
* Decode Request
*
* @param array &$request The request to be decoded.
* @param array $base Optional (null), if provided it will be used as a base array.
*/
public function decode(array &$request, array $base = NULL)
{
$decodedRequest = $base ?: [];
if (array_key_exists('id', $request))
{
$decodedRequest['id'] = $request['id'];
}
if (array_key_exists('book', $request))
{
$decodedRequest['book_datetime'] = $request['book'];
}
if (array_key_exists('start', $request))
{
$decodedRequest['start_datetime'] = $request['start'];
}
if (array_key_exists('end', $request))
{
$decodedRequest['end_datetime'] = $request['end'];
}
if (array_key_exists('notes', $request))
{
$decodedRequest['notes'] = $request['notes'];
}
if (array_key_exists('providerId', $request))
{
$decodedRequest['id_users_provider'] = $request['providerId'];
}
if (array_key_exists('googleCalendarId', $request))
{
$decodedRequest['id_google_calendar'] = $request['googleCalendarId'];
}
$decodedRequest['is_unavailable'] = TRUE;
$request = $decodedRequest;
}
}

View file

@ -1,36 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Processors;
/**
* Filter Processor
*
* This class will handle custom filters upon the response array. In some specific cases it might be
* easier to apply some custom filtering in order to get the required results.
*
* @todo Implement this processor class.
*
* @deprecated
*/
class Filter implements ProcessorsInterface {
/**
* Process Response Array
*
* @param array &$response The response array to be processed.
*/
public static function process(array &$response)
{
// Not implemented yet.
}
}

View file

@ -1,67 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Processors;
/**
* Minimize Processor
*
* This processor will check for the "fields" GET parameters and provide only the required fields in
* every response entry. This might come in handy when the client needs specific information and not
* the whole objects.
*
* Make sure that the response parameter is a sequential array and not a single entry by the time this
* processor is executed.
*
* @deprecated
*/
class Minimize implements ProcessorsInterface {
/**
* Process Response Array
*
* Example:
* http://ea-installation.com/api/v1/appointments?fields=id,book,start,end
*
*
* @param array &$response The response array to be processed.
*/
public static function process(array &$response)
{
if ( ! isset($_GET['fields']) || empty($response))
{
return;
}
$fields = explode(',', $_GET['fields']);
$temporary_response = [];
foreach ($response as &$entry)
{
$temporary_entry = [];
foreach ($fields as $field)
{
$field = trim($field);
if (isset($entry[$field]))
{
$temporary_entry[$field] = $entry[$field];
}
}
$temporary_response[] = $temporary_entry;
}
$response = $temporary_response;
}
}

View file

@ -1,51 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Processors;
/**
* Paginate Processor
*
* This class will handle the pagination GET parameters ("page", "length"). The "page" parameter
* is required in order for the pagination to work. The "length" is optional and the default value
* is 20 entries per page.
*
* Make sure that the response parameter is a sequential array and not a single entry by the time this
* processor is executed.
*
* @deprecated
*/
class Paginate implements ProcessorsInterface {
/**
* Process Response Array
*
* Example:
* http://example.org/api/v1/appointments?page=3&length=30
*
* @param array &$response The response array to be processed.
*/
public static function process(array &$response)
{
if ( ! isset($_GET['page']) || empty($response))
{
return;
}
$page = (int)$_GET['page'];
$length = isset($_GET['length']) ? (int)$_GET['length'] : 20;
$chunks = array_chunk($response, $length);
$response = isset($chunks[$page - 1]) ? $chunks[$page - 1] : [];
}
}

View file

@ -1,25 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Processors;
/**
* Interface ProcessorsInterface
*
* @deprecated
*
* @package EA\Engine\Api\V1\Processors
*/
interface ProcessorsInterface {
public static function process(array &$response);
}

View file

@ -1,79 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Processors;
/**
* Search Processor
*
* This class will search the response with the "q" GET parameter and only provide the entries
* that match the keyword. Make sure that the response parameter is a sequential array and not
* a single entry by the time this processor is executed.
*
* @deprecated
*/
class Search implements ProcessorsInterface {
/**
* Process Response Array
*
* @param array &$response The response array to be processed.
*/
public static function process(array &$response)
{
if ( ! isset($_GET['q']) || empty($response))
{
return;
}
$searched_response = [];
$keyword = (string)$_GET['q'];
foreach ($response as $entry)
{
if (self::recursive_array_search($entry, $keyword) !== FALSE)
{
$searched_response[] = $entry;
}
}
$response = $searched_response;
}
/**
* Recursive Array Search
*
* @param array $haystack Array to search in.
* @param string $needle Keyword to be searched.
*
* @return int|bool Returns the index of the search occurrence or false it nothing was found.
*/
protected static function recursive_array_search(array $haystack, $needle)
{
foreach ($haystack as $key => $value)
{
$currentKey = $key;
if (is_array($value) && self::recursive_array_search($value, $needle) !== FALSE)
{
return $currentKey;
}
if (is_string($value) && stripos($value, $needle) !== FALSE)
{
return $currentKey;
}
}
return FALSE;
}
}

View file

@ -1,99 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1\Processors;
/**
* Sort Processor
*
* This class will sort the response array with the provided GET parameters. Make sure that the
* response parameter is a sequential array and not a single entry by the time this processor is
* executed.
*
* @deprecated
*/
class Sort implements ProcessorsInterface {
/**
* Supports up to 3 columns for sorting.
*
* Example:
* http://ea-installation.com/api/v1/appointments?sort=-start,+notes,-hash
*
* @param array &$response The response array to be processed.
*/
public static function process(array &$response)
{
if ( ! isset($_GET['sort']) || empty($response))
{
return;
}
$sort = explode(',', (string)$_GET['sort']);
$sort_direction1 = substr($sort[0], 0, 1) === '-' ? SORT_DESC : SORT_ASC;
if (isset($sort[1]))
{
$sort_direction2 = substr($sort[1], 0, 1) === '-' ? SORT_DESC : SORT_ASC;
}
else
{
$sort_direction2 = NULL;
}
if (isset($sort[2]))
{
$sort_direction3 = substr($sort[2], 0, 1) === '-' ? SORT_DESC : SORT_ASC;
}
else
{
$sort_direction3 = NULL;
}
foreach ($response as $index => $entry)
{
$sort_order1[$index] = $entry[substr($sort[0], 1)];
if ($sort_direction2)
{
$sort_order2[$index] = $entry[substr($sort[1], 1)];
}
if ($sort_direction3)
{
$sort_order3[$index] = $entry[substr($sort[2], 1)];
}
}
$arguments = [
&$sort_order1,
&$sort_direction1
];
if ($sort_direction2)
{
$arguments[] = $sort_order2;
$arguments[] = $sort_direction2;
}
if ($sort_direction3)
{
$arguments[] = $sort_order3;
$arguments[] = $sort_direction3;
}
$arguments[] = &$response;
call_user_func_array('array_multisort', $arguments);
}
}

View file

@ -1,34 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
/**
* Request Class
*
* This class handles the common request handling before the data are manipulated and
* returned back with the Response class.
*
* @deprecated
*/
class Request {
/**
* Get request body as an associative array.
*
* @return array
*/
public function get_body()
{
return json_decode(file_get_contents('php://input'), TRUE);
}
}

View file

@ -1,154 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use EA\Engine\Types\NonEmptyText;
/**
* API v1 Response
*
* Use chain-calls of the class methods to easily manipulate the provided response array. This class will
* use directly the provided GET parameters for easier manipulation.
*
* Example:
* $parser = new \EA\Engine\Api\V1\Parsers\Appointments;
* $response = new \EA\Engine\Api\V1\Response($data);
* $response->format($parser)->search()->sort()->paginate()->minimize()->output();
*
* @deprecated
*/
class Response {
/**
* Contains the response information.
*
* @var array
*/
protected $response;
/**
* Class Constructor
*
* @param array $response Provide unfiltered data to be processed as an array.
*/
public function __construct(array $response)
{
$this->response = $response;
}
/**
* Encode the response entries to the API compatible structure.
*
* @param Parsers\ParsersInterface $parser Provide the corresponding parser class.
*
* @return \EA\Engine\Api\V1\Response
*/
public function encode(Parsers\ParsersInterface $parser)
{
foreach ($this->response as &$entry)
{
$parser->encode($entry);
}
return $this;
}
/**
* Perform a response search.
*
* @return \EA\Engine\Api\V1\Response
*/
public function search()
{
Processors\Search::process($this->response);
return $this;
}
/**
* Perform a response sort.
*
* @return \EA\Engine\Api\V1\Response
*/
public function sort()
{
Processors\Sort::process($this->response);
return $this;
}
/**
* Perform a response paginate.
*
* @return \EA\Engine\Api\V1\Response
*/
public function paginate()
{
Processors\Paginate::process($this->response);
return $this;
}
/**
* Perform a response minimize.
*
* @return \EA\Engine\Api\V1\Response
*/
public function minimize()
{
Processors\Minimize::process($this->response);
return $this;
}
/**
* Return a single entry instead of an array of entries.
*
* This is useful whenever the client requests only a single entry. Make sure that you call this method
* right before the output() in order to avoid side-effects with the other processor methods of this class.
*
* @param int $id Provide the ID value of the request UI and if is not null the response will be
* converted into an associative array.
*
* @return \EA\Engine\Api\V1\Response
*/
public function singleEntry($id)
{
if ($id !== NULL)
{
$this->response = array_shift($this->response);
}
return $this;
}
/**
* Output the response as a JSON with the provided status header.
*
* @param \EA\Engine\Types\NonEmptyText $status Optional (null), if provided it must contain the status
* header value. Default string: '200 OK'.
*
* @return \EA\Engine\Api\V1\Response
*/
public function output(NonEmptyText $status = NULL)
{
$header = $status ? $status->get() : '200 OK';
header('HTTP/1.0 ' . $header);
header('Content-Type: application/json');
echo json_encode($this->response, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
return $this;
}
}

View file

@ -1,334 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Notifications;
use DateTime;
use DateTimeZone;
use EA\Engine\Types\Email as EmailAddress;
use EA\Engine\Types\NonEmptyText;
use EA\Engine\Types\Text;
use EA\Engine\Types\Url;
use EA_Controller;
use Exception;
use PHPMailer\PHPMailer\PHPMailer;
use RuntimeException;
/**
* Email Notifications Class
*
* This library handles all the notification email deliveries on the system.
*
* Important: The email configuration settings are located at: /application/config/email.php
*
* @deprecated
*/
class Email {
/**
* Framework Instance
*
* @var EA_Controller
*/
protected $CI;
/**
* Contains email configuration.
*
* @var array
*/
protected $config;
/**
* Class Constructor
*
* @param \CI_Controller $CI
* @param array $config Contains the email configuration to be used.
*/
public function __construct(\CI_Controller $CI, array $config)
{
$this->CI = $CI;
$this->config = $config;
}
/**
* Send an email with the appointment details.
*
* This email template also needs an email title and an email text in order to complete
* the appointment details.
*
* @param array $appointment Contains the appointment data.
* @param array $provider Contains the provider data.
* @param array $service Contains the service data.
* @param array $customer Contains the customer data.
* @param array $settings Contains settings of the company. At the time the "company_name", "company_link" and
* "company_email" values are required in the array.
* @param \EA\Engine\Types\Text $title The email title may vary depending the receiver.
* @param \EA\Engine\Types\Text $message The email message may vary depending the receiver.
* @param \EA\Engine\Types\Url $appointment_link_address This link is going to enable the receiver to make changes
* to the appointment record.
* @param \EA\Engine\Types\Email $recipient_email The recipient email address.
* @param \EA\Engine\Types\Text $ics_stream Stream contents of the ICS file.
* @param string|null $timezone Custom timezone for the notification.
*
* @throws \PHPMailer\PHPMailer\Exception
*/
public function send_appointment_details(
array $appointment,
array $provider,
array $service,
array $customer,
array $settings,
Text $title,
Text $message,
Url $appointment_link_address,
EmailAddress $recipient_email,
Text $ics_stream,
$timezone = NULL
)
{
$timezones = $this->CI->timezones->to_array();
switch ($settings['date_format'])
{
case 'DMY':
$date_format = 'd/m/Y';
break;
case 'MDY':
$date_format = 'm/d/Y';
break;
case 'YMD':
$date_format = 'Y/m/d';
break;
default:
throw new Exception('Invalid date_format value: ' . $settings['date_format']);
}
switch ($settings['time_format'])
{
case 'military':
$time_format = 'H:i';
break;
case 'regular':
$time_format = 'g:i a';
break;
default:
throw new Exception('Invalid time_format value: ' . $settings['time_format']);
}
$appointment_timezone = new DateTimeZone($provider['timezone']);
$appointment_start = new DateTime($appointment['start_datetime'], $appointment_timezone);
$appointment_end = new DateTime($appointment['end_datetime'], $appointment_timezone);
if ($timezone && $timezone !== $provider['timezone'])
{
$appointment_timezone = new DateTimeZone($timezone);
$appointment_start->setTimezone($appointment_timezone);
$appointment_end->setTimezone($appointment_timezone);
}
$html = $this->CI->load->view('emails/appointment_details', [
'email_title' => $title->get(),
'email_message' => $message->get(),
'appointment_service' => $service['name'],
'appointment_provider' => $provider['first_name'] . ' ' . $provider['last_name'],
'appointment_start_date' => $appointment_start->format($date_format . ' ' . $time_format),
'appointment_end_date' => $appointment_end->format($date_format . ' ' . $time_format),
'appointment_timezone' => $timezones[empty($timezone) ? $provider['timezone'] : $timezone],
'appointment_link' => $appointment_link_address->get(),
'company_link' => $settings['company_link'],
'company_name' => $settings['company_name'],
'customer_name' => $customer['first_name'] . ' ' . $customer['last_name'],
'customer_email' => $customer['email'],
'customer_phone' => $customer['phone_number'],
'customer_address' => $customer['address'],
], TRUE);
$mailer = $this->create_mailer();
$mailer->From = $settings['company_email'];
$mailer->FromName = $settings['company_name'];
$mailer->AddAddress($recipient_email->get());
$mailer->Subject = $title->get();
$mailer->Body = $html;
$mailer->addStringAttachment($ics_stream->get(), 'invitation.ics');
if ( ! $mailer->Send())
{
throw new RuntimeException('Email could not been sent. Mailer Error (Line ' . __LINE__ . '): '
. $mailer->ErrorInfo);
}
}
/**
* Send an email notification to both provider and customer on appointment removal.
*
* Whenever an appointment is cancelled or removed, both the provider and customer
* need to be informed. This method sends the same email twice.
*
* <strong>IMPORTANT!</strong> This method's arguments should be taken
* from database before the appointment record is deleted.
*
* @param array $appointment The record data of the removed appointment.
* @param array $provider The record data of the appointment provider.
* @param array $service The record data of the appointment service.
* @param array $customer The record data of the appointment customer.
* @param array $settings Some settings that are required for this function. As of now this array must contain
* the following values: "company_link", "company_name", "company_email".
* @param \EA\Engine\Types\Email $recipient_email The email address of the email recipient.
* @param \EA\Engine\Types\Text $reason The reason why the appointment is deleted.
* @param string|null $timezone Custom timezone.
*
* @throws \PHPMailer\PHPMailer\Exception
*/
public function send_delete_appointment(
array $appointment,
array $provider,
array $service,
array $customer,
array $settings,
EmailAddress $recipient_email,
Text $reason,
$timezone = NULL
)
{
$timezones = $this->CI->timezones->to_array();
switch ($settings['date_format'])
{
case 'DMY':
$date_format = 'd/m/Y';
break;
case 'MDY':
$date_format = 'm/d/Y';
break;
case 'YMD':
$date_format = 'Y/m/d';
break;
default:
throw new Exception('Invalid date_format value: ' . $settings['date_format']);
}
switch ($settings['time_format'])
{
case 'military':
$time_format = 'H:i';
break;
case 'regular':
$time_format = 'g:i a';
break;
default:
throw new Exception('Invalid time_format value: ' . $settings['time_format']);
}
$appointment_timezone = new DateTimeZone($provider['timezone']);
$appointment_start = new DateTime($appointment['start_datetime'], $appointment_timezone);
if ($timezone && $timezone !== $provider['timezone'])
{
$appointment_timezone = new DateTimeZone($timezone);
$appointment_start->setTimezone($appointment_timezone);
}
$html = $this->CI->load->view('emails/delete_appointment', [
'appointment_service' => $service['name'],
'appointment_provider' => $provider['first_name'] . ' ' . $provider['last_name'],
'appointment_date' => $appointment_start->format($date_format . ' ' . $time_format),
'appointment_duration' => $service['duration'] . ' ' . lang('minutes'),
'appointment_timezone' => $timezones[empty($timezone) ? $provider['timezone'] : $timezone],
'company_link' => $settings['company_link'],
'company_name' => $settings['company_name'],
'customer_name' => $customer['first_name'] . ' ' . $customer['last_name'],
'customer_email' => $customer['email'],
'customer_phone' => $customer['phone_number'],
'customer_address' => $customer['address'],
'reason' => $reason->get(),
], TRUE);
$mailer = $this->create_mailer();
// Send email to recipient.
$mailer->From = $settings['company_email'];
$mailer->FromName = $settings['company_name'];
$mailer->AddAddress($recipient_email->get()); // "Name" argument crushes the phpmailer class.
$mailer->Subject = lang('appointment_cancelled_title');
$mailer->Body = $html;
if ( ! $mailer->Send())
{
throw new RuntimeException('Email could not been sent. Mailer Error (Line ' . __LINE__ . '): '
. $mailer->ErrorInfo);
}
}
/**
* This method sends an email with the new password of a user.
*
* @param \EA\Engine\Types\NonEmptyText $password Contains the new password.
* @param \EA\Engine\Types\Email $recipientEmail The receiver's email address.
* @param array $settings The company settings to be included in the email.
*
* @throws \PHPMailer\PHPMailer\Exception
*/
public function send_password(NonEmptyText $password, EmailAddress $recipientEmail, array $settings)
{
$html = $this->CI->load->view('emails/new_password', [
'email_title' => lang('new_account_password'),
'email_message' => str_replace('$password', '<strong>' . $password->get() . '</strong>', lang('new_password_is')),
'company_name' => $settings['company_name'],
'company_email' => $settings['company_email'],
'company_link' => $settings['company_link'],
], TRUE);
$mailer = $this->create_mailer();
$mailer->From = $settings['company_email'];
$mailer->FromName = $settings['company_name'];
$mailer->AddAddress($recipientEmail->get()); // "Name" argument crushes the phpmailer class.
$mailer->Subject = lang('new_account_password');
$mailer->Body = $html;
if ( ! $mailer->Send())
{
throw new RuntimeException('Email could not been sent. Mailer Error (Line ' . __LINE__ . '): '
. $mailer->ErrorInfo);
}
}
/**
* Create PHP Mailer Instance
*
* @return PHPMailer
*/
protected function create_mailer()
{
$mailer = new PHPMailer();
if ($this->config['protocol'] === 'smtp')
{
$mailer->isSMTP();
$mailer->SMTPDebug = $this->config['smtp_debug'];
$mailer->Host = $this->config['smtp_host'];
$mailer->SMTPAuth = $this->config['smtp_auth'];
$mailer->Username = $this->config['smtp_user'];
$mailer->Password = $this->config['smtp_pass'];
$mailer->SMTPSecure = $this->config['smtp_crypto'];
$mailer->Port = $this->config['smtp_port'];
$mailer->Sender = $settings['company_email'];
$mailer->SetFrom($settings['company_email'], $settings['company_name'], FALSE);
}
$mailer->IsHTML($this->config['mailtype'] === 'html');
$mailer->CharSet = $this->config['charset'];
return $mailer;
}
}

View file

@ -1,32 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Class Boolean
*
* @deprecated
*
* @package EA\Engine\Types
*/
class Boolean extends Type {
/**
* @param mixed $value
* @return bool
*/
protected function validate($value)
{
return is_bool($value);
}
}

View file

@ -1,33 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Class Decimal
*
* @deprecated
*
* @package EA\Engine\Types
*/
class Decimal extends Type {
/**
* @param mixed $value
* @return bool
*/
protected function validate($value)
{
return is_float($value);
}
}

View file

@ -1,32 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Class Email
*
* @deprecated
*
* @package EA\Engine\Types
*/
class Email extends NonEmptyText {
/**
* @param mixed $value
* @return bool
*/
protected function validate($value)
{
return parent::validate($value) && filter_var($value, FILTER_VALIDATE_EMAIL);
}
}

View file

@ -1,32 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Class Integer
*
* @deprecated
*
* @package EA\Engine\Types
*/
class Integer extends Type {
/**
* @param mixed $value
* @return bool
*/
protected function validate($value)
{
return is_numeric($value) && ! is_float($value);
}
}

View file

@ -1,32 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Class NonEmptyText
*
* @deprecated
*
* @package EA\Engine\Types
*/
class NonEmptyText extends Text {
/**
* @param mixed $value
* @return bool
*/
protected function validate($value)
{
return parent::validate($value) && $value !== '';
}
}

View file

@ -1,32 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Class Text
*
* @deprecated
*
* @package EA\Engine\Types
*/
class Text extends Type {
/**
* @param mixed $value
* @return bool
*/
protected function validate($value)
{
return is_string($value);
}
}

View file

@ -1,57 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Abstract Type Class
*
* @deprecated
*
* This class needs to be extended by the type classes which must implement the validation logic.
*/
abstract class Type {
/**
* Class Constructor
*
* @param mixed $value The type value to be validated.
*/
public function __construct($value)
{
if ( ! $this->validate($value))
{
throw new \InvalidArgumentException(__CLASS__ . ': Invalid argument value provided (' . $value . ')');
}
$this->value = $value;
}
/**
* Get the type value.
*
* @return mixed
*/
public function get()
{
return $this->value;
}
/**
* Implement the validation logic in the children classes.
*
* @param mixed $value The value to be validated.
*
* @return bool Returns whether the value is valid or not.
*/
abstract protected function validate($value);
}

View file

@ -1,32 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Class UnsignedInteger
*
* @deprecated
*
* @package EA\Engine\Types
*/
class UnsignedInteger extends Integer {
/**
* @param mixed $value
* @return bool
*/
protected function validate($value)
{
return parent::validate($value) && $value > -1;
}
}

View file

@ -1,32 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
/**
* Class Url
*
* @deprecated
*
* @package EA\Engine\Types
*/
class Url extends NonEmptyText {
/**
* @param mixed $value
* @return bool
*/
protected function validate($value)
{
return parent::validate($value) && filter_var($value, FILTER_VALIDATE_URL);
}
}

View file

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

View file

@ -1,29 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use EA\Engine\Types\NonEmptyText;
use PHPUnit\Framework\TestCase;
class AuthorizationTest extends TestCase {
public function testBasicMethodPerformsBasicAuthentication()
{
$this->markTestIncomplete();
}
public function testBasicMethodReturnsForbiddenResponse()
{
$this->markTestIncomplete();
}
}

View file

@ -1,23 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use PHPUnit\Framework\TestCase;
class FilterTest extends TestCase {
public function test()
{
$this->markTestIncomplete();
}
}

View file

@ -1,23 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use PHPUnit\Framework\TestCase;
class MinimizeTest extends TestCase {
public function test()
{
$this->markTestIncomplete();
}
}

View file

@ -1,23 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use PHPUnit\Framework\TestCase;
class PaginationTest extends TestCase {
public function test()
{
$this->markTestIncomplete();
}
}

View file

@ -1,23 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use PHPUnit\Framework\TestCase;
class ResponseTest extends TestCase {
public function test()
{
$this->markTestIncomplete();
}
}

View file

@ -1,23 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use PHPUnit\Framework\TestCase;
class SearchTest extends TestCase {
public function test()
{
$this->markTestIncomplete();
}
}

View file

@ -1,23 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Api\V1;
use PHPUnit\Framework\TestCase;
class SortTest extends TestCase {
public function test()
{
$this->markTestIncomplete();
}
}

View file

@ -1,17 +0,0 @@
{
"id": 143,
"firstname": "Chris",
"lastname": "Doe",
"email": "chris@doe.com",
"mobile": "012345679-0",
"phone": "0123456789-1",
"address": "Some Str. 123",
"city": "Some City",
"state": "Some City",
"zip": "12345",
"notes": "Test admin notes.",
"settings": {
"username": "chrisdoe",
"notifications": true
}
}

View file

@ -1,12 +0,0 @@
{
"id": 1,
"book": "2016-07-08 12:57:00",
"start": "2016-07-08 18:00:00",
"end": "2016-07-08 18:30:00",
"hash": "asdf809a8sdf987a9d8f7",
"notes": "These are some test notes.",
"customerId": 56,
"providerId": 4,
"serviceId": 7,
"googleCalendarId": 134
}

View file

@ -1,5 +0,0 @@
{
"id": 5,
"name": "Test Category",
"description": "This category includes test services"
}

View file

@ -1,11 +0,0 @@
{
"id": 97,
"firstname": "John",
"lastname": "Doe",
"email": "john@doe.com",
"phone": "0123456789",
"address": "Some Str. 123",
"city": "Some City",
"zip": "12345",
"notes": "Test customer notes."
}

View file

@ -1,72 +0,0 @@
{
"id": 143,
"firstname": "Chloe",
"lastname": "Doe",
"email": "chloe@doe.com",
"mobile": "012345679-0",
"phone": "0123456789-1",
"address": "Some Str. 123",
"city": "Some City",
"state": "Some State",
"zip": "12345",
"notes": "Test provider notes.",
"services": [
1,
5,
9
],
"settings": {
"username": "chloedoe",
"notifications": true,
"googleSync": true,
"googleCalendar": "calendar-id",
"googleToken": "23897dfasdf7a98gas98d9",
"syncFutureDays": 10,
"syncPastDays": 10,
"workingPlan": {
"monday": {
"start": "09:00",
"end": "18:00",
"breaks": [
{
"start": "14:30",
"end": "15:00"
}
]
},
"tuesday": {
"start": "09:00",
"end": "18:00",
"breaks": [
{
"start": "14:30",
"end": "15:00"
}
]
},
"wednesday": null,
"thursday": {
"start": "09:00",
"end": "18:00",
"breaks": [
{
"start": "14:30",
"end": "15:00"
}
]
},
"friday": {
"start": "09:00",
"end": "18:00",
"breaks": [
{
"start": "14:30",
"end": "15:00"
}
]
},
"saturday": null,
"sunday": null
}
}
}

View file

@ -1,20 +0,0 @@
{
"id": 143,
"firstname": "Chris",
"lastname": "Doe",
"email": "chris@doe.com",
"mobile": "012345679-0",
"phone": "0123456789-1",
"address": "Some Str. 123",
"city": "Some City",
"zip": "12345",
"notes": "Test secretary notes.",
"providers": [
53,
17
],
"settings": {
"username": "chrisdoe",
"notifications": true
}
}

View file

@ -1,9 +0,0 @@
{
"id": 74,
"name": "Male Haircut",
"duration": 60,
"price": 10.00,
"currency": "Euro",
"description": "Male haircut trends.",
"categoryId": null
}

View file

@ -1,4 +0,0 @@
{
"name": "book_advance_timeout",
"value": "100"
}

View file

@ -1,9 +0,0 @@
{
"id": 1,
"book": "2016-07-08 12:57:00",
"start": "2016-07-08 18:00:00",
"end": "2016-07-08 18:30:00",
"notes": "These are some test notes.",
"providerId": 4,
"googleCalendarId": 474
}

View file

@ -1,30 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
use PHPUnit\Framework\TestCase;
class BooleanTest extends TestCase {
public function testBoolType()
{
$type = new Boolean(TRUE);
$this->assertEquals(TRUE, $type->get());
}
public function testBoolTypeThrowsExceptionWithInvalidValue()
{
$this->expectException(\InvalidArgumentException::class);
new Boolean(NULL);
}
}

View file

@ -1,30 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
use PHPUnit\Framework\TestCase;
class DecimalTest extends TestCase {
public function testFloatType()
{
$type = new Decimal(100.00);
$this->assertEquals(100.00, $type->get());
}
public function testFloatTypeThrowsExceptionWithInvalidValue()
{
$this->expectException(\InvalidArgumentException::class);
new Decimal(NULL);
}
}

View file

@ -1,36 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
use PHPUnit\Framework\TestCase;
class EmailTest extends TestCase {
public function testEmailType()
{
$type = new Email('john@doe.com');
$this->assertEquals('john@doe.com', $type->get());
}
public function testEmailTypeThrowsExceptionWithInvalidEmail()
{
$this->expectException(\InvalidArgumentException::class);
new Email('abcdef');
}
public function testEmailTypeThrowsExceptionWithInvalidValue()
{
$this->expectException(\InvalidArgumentException::class);
new Email(NULL);
}
}

View file

@ -1,36 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
use PHPUnit\Framework\TestCase;
class IntegerTest extends TestCase {
public function testIntType()
{
$type = new Integer(1);
$this->assertEquals(1, $type->get());
}
public function testIntTypeThrowsExceptionWithFloat()
{
$this->expectException(\InvalidArgumentException::class);
new Integer(100.00);
}
public function testIntTypeThrowsExceptionWithWithString()
{
$this->expectException(\InvalidArgumentException::class);
new Integer('invalid');
}
}

View file

@ -1,36 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
use PHPUnit\Framework\TestCase;
class NonEmptyTextTest extends TestCase {
public function testNonEmptyStringType()
{
$type = new NonEmptyText('Hello!');
$this->assertEquals('Hello!', $type->get());
}
public function testNonEmptyStringTypeThrowsExceptionWithEmptyString()
{
$this->expectException(\InvalidArgumentException::class);
new NonEmptyText('');
}
public function testNonEmptyStringTypeThrowsExceptionWithInvalidValue()
{
$this->expectException(\InvalidArgumentException::class);
new NonEmptyText(NULL);
}
}

View file

@ -1,30 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
use PHPUnit\Framework\TestCase;
class TextTest extends TestCase {
public function testStringType()
{
$type = new Text('Hello!');
$this->assertEquals('Hello!', $type->get());
}
public function testStringTypeThrowsExceptionWithInvalidValue()
{
$this->expectException(\InvalidArgumentException::class);
new Text(NULL);
}
}

View file

@ -1,36 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
use PHPUnit\Framework\TestCase;
class UnsignedIntegerTest extends TestCase {
public function testUnsignedIntType()
{
$type = new UnsignedInteger(1);
$this->assertEquals(1, $type->get());
}
public function testUnsignedIntTypeThrowsExceptionWithNegative()
{
$this->expectException(\InvalidArgumentException::class);
new UnsignedInteger(-1);
}
public function testUnsignedIntTypeThrowsExceptionWithWithString()
{
$this->expectException(\InvalidArgumentException::class);
new UnsignedInteger('invalid');
}
}

View file

@ -1,36 +0,0 @@
<?php
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2020, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.2.0
* ---------------------------------------------------------------------------- */
namespace EA\Engine\Types;
use PHPUnit\Framework\TestCase;
class UrlTest extends TestCase {
public function testUrlType()
{
$type = new Url('http://localhost');
$this->assertEquals('http://localhost', $type->get());
}
public function testUrlTypeThrowsExceptionWithInvalidUrl()
{
$this->expectException(\InvalidArgumentException::class);
new Url('abcdef');
}
public function testUrlTypeThrowsExceptionWithInvalidValue()
{
$this->expectException(\InvalidArgumentException::class);
new Url(NULL);
}
}