1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
<?php
namespace BEdita\Core\Filesystem\Thumbnail;
use BEdita\Core\Filesystem\Thumbnail;
use BEdita\Core\Filesystem\ThumbnailGenerator;
use BEdita\Core\Model\Entity\Stream;
use Cake\ORM\TableRegistry;
class AsyncGenerator extends ThumbnailGenerator
{
protected $_defaultConfig = [
'baseGenerator' => 'default',
'service' => 'thumbnail',
'max_attempts' => 2,
];
protected function getBaseGenerator()
{
return Thumbnail::getGenerator($this->getConfig('baseGenerator'));
}
public function getUrl(Stream $stream, array $options = [])
{
return $this->getBaseGenerator()->getUrl($stream, $options);
}
public function generate(Stream $stream, array $options = [])
{
$table = TableRegistry::getTableLocator()->get('AsyncJobs');
$asyncJob = $table->newEntity([]);
$asyncJob->service = $this->getConfig('service');
$asyncJob->max_attempts = $this->getConfig('max_attempts');
if ($this->getConfig('priority') !== null) {
$asyncJob->priority = $this->getConfig('priority');
}
$asyncJob->payload = [
'uuid' => $stream->uuid,
'generator' => $this->getConfig('baseGenerator'),
'options' => $options,
];
$table->saveOrFail($asyncJob);
return false;
}
public function exists(Stream $stream, array $options = [])
{
return $this->getBaseGenerator()->exists($stream, $options);
}
public function delete(Stream $stream)
{
}
}