Newer
Older
<?php
/**
* This file contains QUI\Cron\Console
*/
namespace QUI\Cron;
/**
* Cron Console Manager
*
*/
class Console extends QUI\System\Console\Tool
{
/**
* Konstruktor
*/
public function __construct()
{
$this->setName('package:cron')
->setDescription('Cron Manager');
}
/**
* (non-PHPdoc)
* @see \QUI\System\Console\Tool::execute()
*/
public function execute()
{
$run = $this->getArgument('--run');
$list = $this->getArgument('--list');
$listall = $this->getArgument('--list-all');
$runCron = $this->getArgument('--cron');
$this->listCrons();
return;
}
if ($runCron) {
$this->runCron($runCron);
$this->writeLn('Welcome to the Cron Manager');
$this->writeLn('Which Command would you execute?');
$this->writeLn('');
$this->commandRead();
}
/**
* Read the command from the command line
*/
public function commandRead()
{
$this->writeLn('Available Commands: ');
$this->writeLn("- run\t\trun all active crons");
$this->writeLn("- list\t\tlist all active crons");
$this->writeLn("- list-all\tlist all crons");
$this->writeLn("- cron\trun a specific cron");
$command = $this->readInput();
case 'run':
$this->run();
$this->commandRead();
// list all inserted crons
case 'list':
$this->listCrons();
$this->commandRead();
// list all inserted crons
case 'list-all':
$this->listAllCrons();
$this->commandRead();
case 'cron':
$this->write("Please enter the Cron-ID: ");
$cronId = $this->readInput();
try {
$this->runCron($cronId);
} catch (QUI\Exception $Exception) {
$this->writeLn($Exception->getMessage(), 'red');
$this->resetColor();
$this->writeLn('');
}
$this->commandRead();
break;
default:
$this->writeLn(
'Command not found, please type another command',
'red'
);
$this->commandRead();
}
}
/**
* Execute all upcoming crons
*/
public function run()
{
$this->write('Execute all upcoming crons ...');
$Manager->execute();
$this->write('finish');
}
/**
* List all active crons
*/
public function listCrons()
{
$list = $Manager->getList();
$this->writeLn('Cron list:');
$this->writeLn('=======================================================');
$this->writeLn('');
$time = $entry['min']
. ' ' . $entry['hour']
. ' ' . $entry['day']
. ' ' . $entry['month'];
$this->writeLn('ID: ' . $entry['id']);
$this->writeLn($time . "\t" . $exec, 'green');
$this->writeLn('=======================================================');
$this->writeLn('');
}
/**
* List all inserted Crons
*/
public function listAllCrons()
{
$list = $Manager->getList();
$this->writeLn('Cron list:');
$this->writeLn('=======================================================');
$this->writeLn('');
$time = $entry['min']
. ' ' . $entry['hour']
. ' ' . $entry['day']
. ' ' . $entry['month'];
$this->writeLn('ID: ' . $entry['id']);
$this->writeLn($time . "\t" . $exec, 'green');
$this->writeLn('=======================================================');
$this->writeLn('');
/**
* Run a specific cron
*
* @param Boolean|Integer $cronId - ID of the cron
* @throws QUI\Exception
*/
public function runCron($cronId = false)
{
$Manager = new Manager();
$cron = $Manager->getCronById($cronId);
if (!$cron) {
throw new QUI\Exception('Cron not found');
}
$this->writeLn('Execute Cron: ' . $cronId. ' '. $cron['title']);
$Manager->executeCron($cronId);
$this->writeLn('=======================================================');
$this->writeLn('');
}