This commit is contained in:
193
application/controllers/Console.php
Normal file
193
application/controllers/Console.php
Normal file
@@ -0,0 +1,193 @@
|
||||
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Easy!Appointments - Online Appointment Scheduler
|
||||
*
|
||||
* @package EasyAppointments
|
||||
* @author A.Tselegidis <alextselegidis@gmail.com>
|
||||
* @copyright Copyright (c) Alex Tselegidis
|
||||
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
|
||||
* @link https://easyappointments.org
|
||||
* @since v1.3.2
|
||||
* ---------------------------------------------------------------------------- */
|
||||
|
||||
use Jsvrcek\ICS\Exception\CalendarEventException;
|
||||
|
||||
require_once __DIR__ . '/Google.php';
|
||||
require_once __DIR__ . '/Caldav.php';
|
||||
|
||||
/**
|
||||
* Console controller.
|
||||
*
|
||||
* Handles all the Console related operations.
|
||||
*/
|
||||
class Console extends EA_Controller
|
||||
{
|
||||
/**
|
||||
* Console constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
if (!is_cli()) {
|
||||
exit('No direct script access allowed');
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->load->dbutil();
|
||||
|
||||
$this->load->library('instance');
|
||||
|
||||
$this->load->model('admins_model');
|
||||
$this->load->model('customers_model');
|
||||
$this->load->model('providers_model');
|
||||
$this->load->model('services_model');
|
||||
$this->load->model('settings_model');
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a console installation.
|
||||
*
|
||||
* Use this method to install Easy!Appointments directly from the terminal.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* php index.php console install
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function install(): void
|
||||
{
|
||||
$this->instance->migrate('fresh');
|
||||
|
||||
$password = $this->instance->seed();
|
||||
|
||||
response(
|
||||
PHP_EOL . '⇾ Installation completed, login with "administrator" / "' . $password . '".' . PHP_EOL . PHP_EOL,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrate the database to the latest state.
|
||||
*
|
||||
* Use this method to upgrade an Easy!Appointments instance to the latest database state.
|
||||
*
|
||||
* Notice:
|
||||
*
|
||||
* Do not use this method to install the app as it will not seed the database with the initial entries (admin,
|
||||
* provider, service, settings etc.).
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* php index.php console migrate
|
||||
*
|
||||
* php index.php console migrate fresh
|
||||
*
|
||||
* @param string $type
|
||||
*/
|
||||
public function migrate(string $type = ''): void
|
||||
{
|
||||
$this->instance->migrate($type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Seed the database with test data.
|
||||
*
|
||||
* Use this method to add test data to your database
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* php index.php console seed
|
||||
* @throws Exception
|
||||
*/
|
||||
public function seed(): void
|
||||
{
|
||||
$this->instance->seed();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a database backup file.
|
||||
*
|
||||
* Use this method to back up your Easy!Appointments data.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* php index.php console backup
|
||||
*
|
||||
* php index.php console backup /path/to/backup/folder
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function backup(): void
|
||||
{
|
||||
$this->instance->backup($GLOBALS['argv'][3] ?? null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger the synchronization of all provider calendars with Google Calendar.
|
||||
*
|
||||
* Use this method in a cronjob to automatically sync events between Easy!Appointments and Google Calendar.
|
||||
*
|
||||
* Notice:
|
||||
*
|
||||
* Google syncing must first be enabled for each individual provider from inside the backend calendar page.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* php index.php console sync
|
||||
*
|
||||
* @throws CalendarEventException
|
||||
* @throws Exception
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function sync(): void
|
||||
{
|
||||
$providers = $this->providers_model->get();
|
||||
|
||||
foreach ($providers as $provider) {
|
||||
if (filter_var($provider['settings']['google_sync'], FILTER_VALIDATE_BOOLEAN)) {
|
||||
Google::sync((string) $provider['id']);
|
||||
}
|
||||
|
||||
if (filter_var($provider['settings']['caldav_sync'], FILTER_VALIDATE_BOOLEAN)) {
|
||||
Caldav::sync((string) $provider['id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show help information about the console capabilities.
|
||||
*
|
||||
* Use this method to see the available commands.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* php index.php console help
|
||||
*/
|
||||
public function help(): void
|
||||
{
|
||||
$help = [
|
||||
'',
|
||||
'Easy!Appointments ' . config('version'),
|
||||
'',
|
||||
'Usage:',
|
||||
'',
|
||||
'⇾ php index.php console [command] [arguments]',
|
||||
'',
|
||||
'Commands:',
|
||||
'',
|
||||
'⇾ php index.php console migrate',
|
||||
'⇾ php index.php console migrate fresh',
|
||||
'⇾ php index.php console migrate up',
|
||||
'⇾ php index.php console migrate down',
|
||||
'⇾ php index.php console seed',
|
||||
'⇾ php index.php console install',
|
||||
'⇾ php index.php console backup',
|
||||
'⇾ php index.php console sync',
|
||||
'',
|
||||
'',
|
||||
];
|
||||
|
||||
response(implode(PHP_EOL, $help));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user