Skip to content
Code-Schnipsel Gruppen Projekte
EventHandler.php 3,04 KiB
Newer Older
<?php

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

namespace QUI\Cron;

use QUI;

/**
 * Cron Main Events
 *
Henning Leutz's avatar
Henning Leutz committed
 * @author www.pcsg.de (Henning Leutz)
Henning Leutz's avatar
Henning Leutz committed
class EventHandler
     *
     * @param QUI\Package\Package $Package
    public static function onPackageSetup(QUI\Package\Package $Package)
        if ($Package->getName() === 'quiqqer/cron') {
            self::checkCronTable();
        }
    }

    /**
     * Checks if the table cron is correct
     *
     * @return void
     */
    protected static function checkCronTable()
    {
        $categoryColumn = QUI::getDataBase()->table()->getColumn('cron', 'title');

        if ($categoryColumn['Type'] === 'varchar(1000)') {
            return;
        }

        $Stmnt = QUI::getDataBase()->getPDO()->prepare("ALTER TABLE cron MODIFY `title` VARCHAR(1000)");
        $Stmnt->execute();
    }

    /**
     * event : on admin header loaded
     */
Henning Leutz's avatar
Henning Leutz committed
    public static function onAdminLoad()
Henning Leutz's avatar
Henning Leutz committed
        if (!defined('ADMIN')) {
Henning Leutz's avatar
Henning Leutz committed
        if (!ADMIN) {
            return;
        }

        $User = QUI::getUserBySession();

Henning Leutz's avatar
Henning Leutz committed
        if (!$User->isSU()) {
Henning Leutz's avatar
Henning Leutz committed
        $Package = QUI::getPackageManager()->getInstalledPackage('quiqqer/cron');
        $Config  = $Package->getConfig();

        // send admin info
Henning Leutz's avatar
Henning Leutz committed
        if (!$Config->get('settings', 'showAdminMessageIfCronNotRun')) {
        // check last cron execution
        $CronManager = new Manager();
        $result      = $CronManager->getHistoryList(array(
            'page'    => 1,
            'perPage' => 1
        ));

Henning Leutz's avatar
Henning Leutz committed
        if (!isset($result[0])) {
            self::sendAdminInfoCronError();
            return;
        }

Henning Leutz's avatar
Henning Leutz committed
        $date = strtotime($result[0]['lastexec']);

        // in 24h no cron??
Henning Leutz's avatar
Henning Leutz committed
        if (time() - 86400 > $date) {
            self::sendAdminInfoCronError();
        }
    }

    /**
     * event : on admin loaded -> footer output
     */
Henning Leutz's avatar
Henning Leutz committed
    public static function adminLoadFooter()
Henning Leutz's avatar
Henning Leutz committed
        $Package = QUI::getPackageManager()->getInstalledPackage('quiqqer/cron');
        $Config  = $Package->getConfig();

        // execute cron ?
Henning Leutz's avatar
Henning Leutz committed
        if ($Config->get('settings', 'executeOnAdminLogin')) {
            echo '
            <script>window.addEvent("load", function()
            {
                require(["Ajax"], function(QUIAjax)
                {
                    QUIAjax.post("package_quiqqer_cron_ajax_execute", function()
                    {

                    }, {
                        "package" : "quiqqer/cron"
                    });
                });
            });
            </script>';
        }
    }

    /**
     * send a message to the user, maybe an error in the crons exist
     * last 24h was no cron sended
     */
Henning Leutz's avatar
Henning Leutz committed
    public static function sendAdminInfoCronError()
    {
        QUI::getMessagesHandler()->sendAttention(
            QUI::getUserBySession(),
Henning Leutz's avatar
Henning Leutz committed
            QUI::getLocale()->get('quiqqer/cron', 'message.cron.admin.info.24h')