Skip to content
Code-Schnipsel Gruppen Projekte
QuiqqerCrons.php 4,74 KiB
Newer Older
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
     */
Henning Leutz's avatar
Henning Leutz committed
    public static function clearTempFolder()
Henning Leutz's avatar
Henning Leutz committed
        $Temp = QUI::getTemp();

    /**
     * Clear complete cache
     */
Henning Leutz's avatar
Henning Leutz committed
    public static function clearCache()
Henning Leutz's avatar
Henning Leutz committed
        QUI\Cache\Manager::clearAll();
    }

    /**
     * Purge the cache
     */
Henning Leutz's avatar
Henning Leutz committed
    public 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
     */
Henning Leutz's avatar
Henning Leutz committed
    public static function clearAdminMediaCache()
        QUI\Utils\System\File::unlink(VAR_DIR . 'cache/admin/media/');
    /**
     * delete all unwanted / unneeded sessions
     */
    public static function clearSessions()
    {
        // clear nativ session storage
        $sessionDir = VAR_DIR . 'sessions/';

        if (!is_dir($sessionDir)) {
            return;
        }

        $sessionFiles = QUI\Utils\System\File::readDir($sessionDir);
        $maxtime      = 1400;

        if (QUI::conf('session', 'max_life_time')) {
            $maxtime = (int)QUI::conf('session', 'max_life_time');
        }

        foreach ($sessionFiles as $sessionFile) {
            $fmtime = filemtime($sessionDir . $sessionFile);

            if ($fmtime + $maxtime < time()) {
                unlink($sessionDir . $sessionFile);
            }
        }
    }

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
     */
Henning Leutz's avatar
Henning Leutz committed
    public static function realeaseDate($params, $CronManager)
Henning Leutz's avatar
Henning Leutz committed
    {
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();
        $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(
            'Folgende Seiten wurden deaktiviert: ' . implode(',', $deactivate)
Henning Leutz's avatar
Henning Leutz committed
        );

Henning Leutz's avatar
Henning Leutz committed
        QUI\System\Log::addInfo(
            'Folgende Seiten wurden aktiviert: ' . implode(',', $activate)
Henning Leutz's avatar
Henning Leutz committed
        );
    }
Henning Leutz's avatar
Henning Leutz committed

    /**
     * Send the mail queue
     *
     * @param array $params
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
    public static function mailQueue($params, $CronManager)
Henning Leutz's avatar
Henning Leutz committed
    {
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();
        }
    }
Henning Leutz's avatar
Henning Leutz committed
}