Skip to content

Commit b337d67

Browse files
committed
magento enqueue
1 parent e2fd688 commit b337d67

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?php
2+
use Enqueue\AmqpExt\AmqpContext;
3+
use Enqueue\Stomp\StompContext;
4+
use Enqueue\Fs\FsContext;
5+
use Enqueue\Sqs\SqsContext;
6+
use Enqueue\Redis\RedisContext;
7+
use Enqueue\Dbal\DbalContext;
8+
9+
class Enqueue_Enqueue_Model_Config_Field_Transportdefault extends Mage_Core_Model_Config_Data
10+
{
11+
/**
12+
* {@inheritdoc}
13+
*/
14+
protected function _beforeSave()
15+
{
16+
$return = parent::_beforeSave();
17+
18+
$transport = $this->getValue();
19+
20+
$data = [
21+
'rabbitmq_amqp' => [
22+
'name' => 'RabbitMQ AMQP',
23+
'package' => 'enqueue/amqp-ext',
24+
'class' => AmqpContext::class,
25+
],
26+
'amqp' => [
27+
'name' => 'AMQP',
28+
'package' => 'enqueue/amqp-ext',
29+
'class' => AmqpContext::class,
30+
],
31+
'rabbitmq_stomp' => [
32+
'name' => 'RabbitMQ STOMP',
33+
'package' => 'enqueue/stomp',
34+
'class' => StompContext::class,
35+
],
36+
'stomp' => [
37+
'name' => 'STOMP',
38+
'package' => 'enqueue/stomp',
39+
'class' => StompContext::class,
40+
],
41+
'fs' => [
42+
'name' => 'Filesystem',
43+
'package' => 'enqueue/fs',
44+
'class' => FsContext::class,
45+
],
46+
'sqs' => [
47+
'name' => 'Amazon AWS SQS',
48+
'package' => 'enqueue/sqs',
49+
'class' => SqsContext::class,
50+
],
51+
'redis' => [
52+
'name' => 'Redis',
53+
'package' => 'enqueue/redis',
54+
'class' => RedisContext::class,
55+
],
56+
'dbal' => [
57+
'name' => 'Doctrine DBAL',
58+
'package' => 'enqueue/dbal',
59+
'class' => DbalContext::class,
60+
],
61+
];
62+
63+
if (false == isset($data[$transport])) {
64+
throw new \LogicException(sprintf('Unknown transport: "%s"', $transport));
65+
}
66+
67+
if (false == $this->isClassExists($data[$transport]['class'])) {
68+
Mage::throwException(sprintf('%s transport requires package "%s". Please install it via composer. #> php composer.php require %s',
69+
$data[$transport]['name'], $data[$transport]['package'], $data[$transport]['package']
70+
));
71+
}
72+
73+
return $return;
74+
}
75+
76+
/**
77+
* @param string $class
78+
*
79+
* @return bool
80+
*/
81+
private function isClassExists($class)
82+
{
83+
try {
84+
return class_exists($class);
85+
} catch (\Exception $e) { // in dev mode error handler throws exception
86+
return false;
87+
}
88+
}
89+
}

src/Enqueue/Enqueue/etc/system.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<default translate="label">
2929
<label>Default</label>
3030
<frontend_type>select</frontend_type>
31+
<backend_model>enqueue/config_field_transportdefault</backend_model>
3132
<source_model>enqueue/config_source_transport</source_model>
3233
<sort_order>1</sort_order>
3334
<show_in_default>1</show_in_default>

0 commit comments

Comments
 (0)