Skip to content
Code-Schnipsel Gruppen Projekte
EventHandler.php 2,89 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?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
    
        /**
         * event: onPackageSetup
         */
        public static function onPackageSetup()
        {
            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(
    
    Henning Leutz's avatar
    Henning Leutz committed
                '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')