easyappointments/application/controllers/Console.php

185 lines
4.7 KiB
PHP
Raw Normal View History

<?php defined('BASEPATH') or exit('No direct script access allowed');
/* ----------------------------------------------------------------------------
2022-01-18 15:05:42 +03:00
* Easy!Appointments - Online Appointment Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
2021-12-18 19:43:45 +03:00
* @copyright Copyright (c) Alex Tselegidis
2020-11-14 22:36:25 +03:00
* @license https://opensource.org/licenses/GPL-3.0 - GPLv3
* @link https://easyappointments.org
* @since v1.3.2
* ---------------------------------------------------------------------------- */
2020-12-04 13:49:57 +03:00
require_once __DIR__ . '/Google.php';
/**
2021-11-06 18:21:27 +03:00
* 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');
2020-12-04 13:49:57 +03:00
$this->load->model('admins_model');
$this->load->model('customers_model');
$this->load->model('providers_model');
2020-12-04 13:49:57 +03:00
$this->load->model('services_model');
$this->load->model('settings_model');
}
2020-12-09 15:17:45 +03:00
/**
* Perform a console installation.
*
* Use this method to install Easy!Appointments directly from the terminal.
*
* Usage:
*
* php index.php console install
2024-04-26 17:36:14 +03:00
*
* @throws Exception
2020-12-09 15:17:45 +03:00
*/
2024-04-26 17:36:14 +03:00
public function install(): void
2020-12-09 15:17:45 +03:00
{
$this->instance->migrate('fresh');
$password = $this->instance->seed();
response(
PHP_EOL . '⇾ Installation completed, login with "administrator" / "' . $password . '".' . PHP_EOL . PHP_EOL,
);
2020-12-09 15:17:45 +03:00
}
/**
* 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,
2024-04-26 17:36:14 +03:00
* provider, service, settings etc.).
*
* Usage:
*
* php index.php console migrate
2020-12-02 23:21:35 +03:00
*
2020-12-04 13:49:57 +03:00
* php index.php console migrate fresh
*
2020-12-02 23:21:35 +03:00
* @param string $type
*/
2024-04-26 17:36:14 +03:00
public function migrate(string $type = ''): void
{
$this->instance->migrate($type);
}
2020-12-04 13:49:57 +03:00
/**
* Seed the database with test data.
*
* Use this method to add test data to your database
*
* Usage:
*
* php index.php console seed
2024-04-26 17:36:14 +03:00
* @throws Exception
2020-12-04 13:49:57 +03:00
*/
2024-04-26 17:36:14 +03:00
public function seed(): void
2020-12-04 13:49:57 +03:00
{
$this->instance->seed();
2020-12-04 13:49:57 +03:00
}
/**
* 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
*/
2024-04-26 17:36:14 +03:00
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
*/
2024-04-26 17:36:14 +03:00
public function sync(): void
{
$providers = $this->providers_model->get();
foreach ($providers as $provider) {
if (!filter_var($provider['settings']['google_sync'], FILTER_VALIDATE_BOOLEAN)) {
continue;
}
Google::sync((string) $provider['id']);
}
}
2020-12-05 12:03:12 +03:00
/**
* Show help information about the console capabilities.
*
* Use this method to see the available commands.
*
* Usage:
*
* php index.php console help
*/
2024-04-26 17:36:14 +03:00
public function help(): void
2020-12-05 12:03:12 +03:00
{
$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',
2020-12-05 12:03:12 +03:00
'⇾ php index.php console seed',
'⇾ php index.php console install',
'⇾ php index.php console backup',
'⇾ php index.php console sync',
'',
'',
2020-12-05 12:03:12 +03:00
];
response(implode(PHP_EOL, $help));
2020-12-05 12:03:12 +03:00
}
}