Skip to content
Code-Schnipsel Gruppen Projekte
Console.php 4,06 KiB
Newer Older
<?php

/**
 * This file contains QUI\Cron\Console
 */

namespace QUI\Cron;

/**
 * Cron Console Manager
 *
 * @author www.namerobot.com (Henning Leutz)
 */

class Console extends \QUI\System\Console\Tool
{
    /**
     * Konstruktor
     */
    public function __construct()
    {
        $this->setName('package:cron')
             ->setDescription('Cron Manager');
    }

    /**
     * (non-PHPdoc)
Henning Leutz's avatar
Henning Leutz committed
     *
     * @see \QUI\System\Console\Tool::execute()
     */
    public function execute()
    {
Henning Leutz's avatar
Henning Leutz committed
        $run = $this->getArgument('--run');
        $list = $this->getArgument('--list');
        $listall = $this->getArgument('--list-all');

Henning Leutz's avatar
Henning Leutz committed
        if ($run) {
            $this->run();
Henning Leutz's avatar
Henning Leutz committed

Henning Leutz's avatar
Henning Leutz committed
        if ($list) {
            $this->listCrons();
Henning Leutz's avatar
Henning Leutz committed

Henning Leutz's avatar
Henning Leutz committed
        if ($listall) {
            $this->listAllCrons();
Henning Leutz's avatar
Henning Leutz committed

Henning Leutz's avatar
Henning Leutz committed
        $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()
    {
Henning Leutz's avatar
Henning Leutz committed
        $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");
Henning Leutz's avatar
Henning Leutz committed
        $this->writeLn('');
Henning Leutz's avatar
Henning Leutz committed
        $this->writeLn('Command: ');
Henning Leutz's avatar
Henning Leutz committed
        switch ($command) {
Henning Leutz's avatar
Henning Leutz committed
            // run all crons
            case 'run':
                $this->run();
                $this->commandRead();
Henning Leutz's avatar
Henning Leutz committed
                break;
Henning Leutz's avatar
Henning Leutz committed
            // list all inserted crons
            case 'list':
                $this->listCrons();
                $this->commandRead();
Henning Leutz's avatar
Henning Leutz committed
                break;
Henning Leutz's avatar
Henning Leutz committed

            // list all inserted crons
            case 'list-all':
                $this->listAllCrons();
                $this->commandRead();
Henning Leutz's avatar
Henning Leutz committed
                break;
Henning Leutz's avatar
Henning Leutz committed
                $this->writeLn('Command not found, please type another command',
                    'red');
                $this->commandRead();
        }
    }

    /**
     * Execute all upcoming crons
     */
    public function run()
    {
Henning Leutz's avatar
Henning Leutz committed
        $Manager = new Manager();
Henning Leutz's avatar
Henning Leutz committed
        $this->writeLn('');
        $this->write('Execute all upcoming crons ...');
        $Manager->execute();

        $this->write('finish');
Henning Leutz's avatar
Henning Leutz committed
        $this->writeLn('');
Henning Leutz's avatar
Henning Leutz committed

    /**
     * List all active crons
     */
    public function listCrons()
    {
Henning Leutz's avatar
Henning Leutz committed
        $Manager = new Manager();
Henning Leutz's avatar
Henning Leutz committed
        $list = $Manager->getList();
Henning Leutz's avatar
Henning Leutz committed
        $this->writeLn('Cron list:');
        $this->writeLn('=======================================================');
        $this->writeLn('');
Henning Leutz's avatar
Henning Leutz committed
        foreach ($list as $entry) {
            if ($entry['active'] != 1) {
Henning Leutz's avatar
Henning Leutz committed
            $time = $entry['min'].' '.$entry['hour'].' '.$entry['day'].' '
                .$entry['month'];
Henning Leutz's avatar
Henning Leutz committed
            $exec = $entry['exec'];

Henning Leutz's avatar
Henning Leutz committed
            $this->writeLn('ID: '.$entry['id']);
            $this->writeLn($time."\t".$exec, 'green');
Henning Leutz's avatar
Henning Leutz committed

            $this->resetColor();
Henning Leutz's avatar
Henning Leutz committed
            $this->writeLn('');
Henning Leutz's avatar
Henning Leutz committed
        $this->writeLn('=======================================================');
        $this->writeLn('');
Henning Leutz's avatar
Henning Leutz committed
    }

    /**
     * List all inserted Crons
     */
    public function listAllCrons()
    {
Henning Leutz's avatar
Henning Leutz committed
        $Manager = new Manager();
Henning Leutz's avatar
Henning Leutz committed
        $list = $Manager->getList();
Henning Leutz's avatar
Henning Leutz committed
        $this->writeLn('Cron list:');
        $this->writeLn('=======================================================');
        $this->writeLn('');
Henning Leutz's avatar
Henning Leutz committed
        foreach ($list as $entry) {
            $time = $entry['min'].' '.$entry['hour'].' '.$entry['day'].' '
                .$entry['month'];
Henning Leutz's avatar
Henning Leutz committed
            $exec = $entry['exec'];

Henning Leutz's avatar
Henning Leutz committed
            $this->writeLn('ID: '.$entry['id']);
            $this->writeLn($time."\t".$exec, 'green');
Henning Leutz's avatar
Henning Leutz committed

            $this->resetColor();
Henning Leutz's avatar
Henning Leutz committed
            $this->writeLn('');
Henning Leutz's avatar
Henning Leutz committed
        $this->writeLn('=======================================================');
        $this->writeLn('');