Skip to content
Code-Schnipsel Gruppen Projekte
QuiqqerCrons.php 3,99 KiB
Newer Older
  • Learn to ignore specific revisions
  • Henning Leutz's avatar
    Henning Leutz committed
     * This File contains QUI\Cron\QuiqqerCrons
    
    Henning Leutz's avatar
    Henning Leutz committed
    use QUI;
    
    
    /**
     * Cron Manager
     *
     * @author www.pcsg.de (Henning Leutz)
     */
    class QuiqqerCrons
    {
        /**
         * Clear the temp folder
         */
        static function clearTempFolder()
        {
    
    Henning Leutz's avatar
    Henning Leutz committed
            $Temp = QUI::getTemp();
    
    
        /**
         * Clear complete cache
         */
        static function clearCache()
        {
    
    Henning Leutz's avatar
    Henning Leutz committed
            QUI\Cache\Manager::clearAll();
    
        }
    
        /**
         * Purge the cache
         */
        static function purgeCache()
        {
    
    Henning Leutz's avatar
    Henning Leutz committed
            QUI\Cache\Manager::purge();
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
        /**
         * Clear the media cache of the administration
         */
        static function clearAdminMediaCache()
        {
            QUI\Utils\System\File::unlink(VAR_DIR.'cache/admin/media/');
        }
    
    
    Henning Leutz's avatar
    Henning Leutz committed
        /**
    
    Henning Leutz's avatar
    Henning Leutz committed
         * Check project sites release dates
         * Activate or deactivate sites
    
    Henning Leutz's avatar
    Henning Leutz committed
         *
    
    Henning Leutz's avatar
    Henning Leutz committed
         * @param Array             $params - Cron Parameter
    
    Henning Leutz's avatar
    Henning Leutz committed
         * @param \QUI\Cron\Manager $CronManager
    
    Henning Leutz's avatar
    Henning Leutz committed
         *
    
    Henning Leutz's avatar
    Henning Leutz committed
         * @throws QUI\Exception
    
    Henning Leutz's avatar
    Henning Leutz committed
         */
        static function realeaseDate($params, $CronManager)
        {
    
    Henning Leutz's avatar
    Henning Leutz committed
            if (!isset($params['project'])) {
                throw new QUI\Exception('Need a project parameter to search release dates');
    
    Henning Leutz's avatar
    Henning Leutz committed
            }
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            if (!isset($params['lang'])) {
                throw new QUI\Exception('Need a lang parameter to search release dates');
    
    Henning Leutz's avatar
    Henning Leutz committed
            }
    
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            $Project = QUI::getProject($params['project'], $params['lang']);
            $now = date('Y-m-d H:i:s');
    
    Henning Leutz's avatar
    Henning Leutz committed
    
            // search sites with release dates
    
    Henning Leutz's avatar
    Henning Leutz committed
            $PDO = QUI::getDataBase()->getPDO();
    
    Henning Leutz's avatar
    Henning Leutz committed
    
            $deactivate = array();
    
    Henning Leutz's avatar
    Henning Leutz committed
            $activate = array();
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
            /**
             * deactivate sites
             */
            $Statment = $PDO->prepare("
                SELECT id
                FROM {$Project->getAttribute('db_table')}
                WHERE active = 1 AND
                      release_from != :empty AND
                      release_to != :empty AND
    
                      (release_from > :date OR release_to < :date)
                ;
            ");
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            $Statment->bindValue(':date', $now, \PDO::PARAM_STR);
            $Statment->bindValue(':empty', '0000-00-00 00:00:00', \PDO::PARAM_STR);
    
    Henning Leutz's avatar
    Henning Leutz committed
            $Statment->execute();
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            $result = $Statment->fetchAll(\PDO::FETCH_ASSOC);
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            foreach ($result as $entry) {
                try {
                    $Site = $Project->get((int)$entry['id']);
    
    Henning Leutz's avatar
    Henning Leutz committed
                    $Site->deactivate();
    
                    $deactivate[] = (int)$entry['id'];
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                } catch (QUI\Exception $Exception) {
                    QUI\System\Log::writeException($Exception);
    
    Henning Leutz's avatar
    Henning Leutz committed
                }
            }
    
    
            /**
             * activate sites
             */
            $Statment = $PDO->prepare("
                SELECT id
                FROM {$Project->getAttribute('db_table')}
                WHERE active = 0 AND
                      release_from != :empty AND
                      release_to != :empty AND
    
                      release_to >= :date AND
                      release_from <= :date
                ;
            ");
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            $Statment->bindValue(':date', $now, \PDO::PARAM_STR);
            $Statment->bindValue(':empty', '0000-00-00 00:00:00', \PDO::PARAM_STR);
    
    Henning Leutz's avatar
    Henning Leutz committed
            $Statment->execute();
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            $result = $Statment->fetchAll(\PDO::FETCH_ASSOC);
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            foreach ($result as $entry) {
                try {
                    $Site = $Project->get((int)$entry['id']);
    
    Henning Leutz's avatar
    Henning Leutz committed
                    $Site->activate();
    
                    $activate[] = (int)$entry['id'];
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                } catch (QUI\Exception $Exception) {
                    QUI\System\Log::writeException($Exception);
    
    Henning Leutz's avatar
    Henning Leutz committed
                }
            }
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            QUI\System\Log::addInfo(
    
    Henning Leutz's avatar
    Henning Leutz committed
                'Folgende Seiten wurden deaktiviert: '.implode(',', $deactivate)
    
    Henning Leutz's avatar
    Henning Leutz committed
            );
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            QUI\System\Log::addInfo(
    
    Henning Leutz's avatar
    Henning Leutz committed
                'Folgende Seiten wurden aktiviert: '.implode(',', $activate)
    
    Henning Leutz's avatar
    Henning Leutz committed
            );
        }
    
    Henning Leutz's avatar
    Henning Leutz committed
    
        /**
         * Send the mail queue
         *
    
    Henning Leutz's avatar
    Henning Leutz committed
         * @param array             $params
    
    Henning Leutz's avatar
    Henning Leutz committed
         * @param \QUI\Cron\Manager $CronManager
    
    Henning Leutz's avatar
    Henning Leutz committed
         */
        static function mailQueue($params, $CronManager)
        {
    
    Henning Leutz's avatar
    Henning Leutz committed
            $MailQueue = new QUI\Mail\Queue();
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            if ($MailQueue->count()) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                $MailQueue->send();
            }
        }