181 lines
4.6 KiB
PHP
181 lines
4.6 KiB
PHP
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
||
|
||
/* ----------------------------------------------------------------------------
|
||
* IFLRandevu - İzmir Fen Lisesi Randevu Portalı
|
||
*
|
||
* @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));
|
||
}
|
||
}
|