iflrandevu/application/controllers/Console.php
2023-09-12 17:00:30 +03:00

182 lines
4.6 KiB
PHP

<?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
* ---------------------------------------------------------------------------- */
require_once __DIR__ . '/Google.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
*/
public function install()
{
$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 = '')
{
$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
*/
public function seed()
{
$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()
{
$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
*/
public function sync()
{
$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']);
}
}
/**
* Show help information about the console capabilities.
*
* Use this method to see the available commands.
*
* Usage:
*
* php index.php console help
*/
public function help()
{
$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));
}
}