shyim
10/4/2016 - 12:09 PM

Simple Cron in Shopware 5.2 Pluginsystem

Simple Cron in Shopware 5.2 Pluginsystem

<?php

namespace ShyimCron;

use Shopware\Components\Plugin;
use Shopware\Components\Plugin\Context\InstallContext;
use Shopware\Components\Plugin\Context\UninstallContext;

class ShyimCron extends Plugin {
    public static function getSubscribedEvents()
    {
        return [
            'Shopware_CronJob_MyCoolCron' => 'MyCoolCronRun'
        ];
    }

    public function install(InstallContext $context)
    {
        $this->addCron();
    }

    public function uninstall(UninstallContext $context)
    {
        $this->removeCron();
    }

    public function addCron()
    {
        $connection = $this->container->get('dbal_connection');
        $connection->insert(
            's_crontab',
            [
                'name'             => 'MyCoolCron',
                'action'           => 'MyCoolCron',
                'next'             => new \DateTime(),
                'start'            => null,
                '`interval`'       => '100',
                'active'           => 1,
                'end'              => new \DateTime(),
                'pluginID'         => null
            ],
            [
                'next' => 'datetime',
                'end'  => 'datetime',
            ]
        );
    }

    public function removeCron()
    {
        $this->container->get('dbal_connection')->executeQuery('DELETE FROM s_crontab WHERE `name` = ?', [
            'MyCoolCron'
        ]);
    }

    public function MyCoolCronRun(\Shopware_Components_Cron_CronJob $job)
    {
        return 'Yes its running!';
    }
}