Completed
Push — master ( 5dae99...50db85 )
by Aimeos
11:13
created

Context::addMailer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
3
/**
4
 * @license LGPLv3, http://www.gnu.org/copyleft/lgpl.html
5
 * @copyright Aimeos (aimeos.org), 2015-2016
6
 * @package flow
7
 * @subpackage Base
8
 */
9
10
11
namespace Aimeos\Shop\Base;
12
13
use Neos\Flow\Annotations as Flow;
14
15
16
/**
17
 * Class providing the context object
18
 *
19
 * @package flow
20
 * @subpackage Base
21
 * @Flow\Scope("singleton")
22
 */
23
class Context
24
{
25
	/**
26
	 * @var \Aimeos\MShop\Context\Item\Iface
27
	 */
28
	private static $context;
29
30
	/**
31
	 * @var array
32
	 */
33
	private $settings;
34
35
	/**
36
	 * @var \Neos\Cache\Frontend\StringFrontend
37
	 */
38
	private $cache;
39
40
	/**
41
	 * @var \Aimeos\Shop\Base\Aimeos
42
	 * @Flow\Inject
43
	 */
44
	protected $aimeos;
45
46
	/**
47
	 * @var \Aimeos\Shop\Base\Config
48
	 * @Flow\Inject
49
	 */
50
	protected $config;
51
52
	/**
53
	 * @var \Aimeos\Shop\Base\I18n
54
	 * @Flow\Inject
55
	 */
56
	protected $i18n;
57
58
	/**
59
	 * @var \Aimeos\Shop\Base\Locale
60
	 * @Flow\Inject
61
	 */
62
	protected $locale;
63
64
	/**
65
	 * @var \Neos\SwiftMailer\MailerInterface
66
	 * @Flow\Inject
67
	 */
68
	protected $mailer;
69
70
	/**
71
	 * @var \Neos\Flow\Session\SessionInterface
72
	 * @Flow\Inject(lazy = FALSE)
73
	 */
74
	protected $session;
75
76
77
	/**
78
	 * Returns the current context.
79
	 *
80
	 * @param \Neos\Flow\Mvc\RequestInterface|null $request Request object
81
	 * @return \Aimeos\MShop\Context\Item\Iface
82
	 */
83
	public function get( \Neos\Flow\Mvc\RequestInterface $request = null, $type = 'frontend' )
84
	{
85
		$config = $this->config->get( $type );
86
87
		if( self::$context === null )
88
		{
89
			$context = new \Aimeos\MShop\Context\Item\Standard();
90
			$context->setConfig( $config );
91
92
			$this->addDataBaseManager( $context );
93
			$this->addFilesystemManager( $context );
94
			$this->addMessageQueueManager( $context );
95
			$this->addLogger( $context );
96
			$this->addCache( $context );
97
			$this->addMailer( $context);
98
99
			self::$context = $context;
100
		}
101
102
		$context = self::$context;
103
		$context->setConfig( $config );
104
105
		if( $request !== null )
106
		{
107
			$localeItem = $this->locale->get( $context, $request );
108
			$context->setI18n( $this->i18n->get( array( $localeItem->getLanguageId() ) ) );
109
			$context->setLocale( $localeItem );
110
		}
111
112
		$this->addSession( $context );
113
		$this->addUser( $context, $request );
114
115
		return $context;
116
	}
117
118
119
	/**
120
	 * Adds the cache object to the context
121
	 *
122
	 * @param \Aimeos\MShop\Context\Item\Iface $context Context object including config
123
	 * @return \Aimeos\MShop\Context\Item\Iface Modified context object
124
	 */
125
	protected function addCache( \Aimeos\MShop\Context\Item\Iface $context )
126
	{
127
		$config = $context->getConfig();
128
129
		switch( $config->get( 'flow/cache/name', 'Flow' ) )
130
		{
131
			case 'None':
132
				$config->set( 'client/html/basket/cache/enable', false );
133
				return $context->setCache( \Aimeos\MW\Cache\Factory::createManager( 'None', array(), null ) );
134
135
			case 'Flow':
136
				return $context->setCache( new \Aimeos\MAdmin\Cache\Proxy\Flow( $context, $this->cache ) );
137
138
			default:
139
				return $context->setCache( new \Aimeos\MAdmin\Cache\Proxy\Standard( $context ) );
140
		}
141
	}
142
143
144
	/**
145
	 * Adds the database manager object to the context
146
	 *
147
	 * @param \Aimeos\MShop\Context\Item\Iface $context Context object
148
	 * @return \Aimeos\MShop\Context\Item\Iface Modified context object
149
	 */
150
	protected function addDatabaseManager( \Aimeos\MShop\Context\Item\Iface $context )
151
	{
152
		$dbm = new \Aimeos\MW\DB\Manager\DBAL( $context->getConfig() );
153
		$context->setDatabaseManager( $dbm );
154
155
		return $context;
156
	}
157
158
159
	/**
160
	 * Adds the filesystem manager object to the context
161
	 *
162
	 * @param \Aimeos\MShop\Context\Item\Iface $context Context object
163
	 * @return \Aimeos\MShop\Context\Item\Iface Modified context object
164
	 */
165
	protected function addFilesystemManager( \Aimeos\MShop\Context\Item\Iface $context )
166
	{
167
		$fs = new \Aimeos\MW\Filesystem\Manager\Standard( $context->getConfig() );
168
		$context->setFilesystemManager( $fs );
169
170
		return $context;
171
	}
172
173
174
	/**
175
	 * Adds the logger object to the context
176
	 *
177
	 * @param \Aimeos\MShop\Context\Item\Iface $context Context object
178
	 * @return \Aimeos\MShop\Context\Item\Iface Modified context object
179
	 */
180
	protected function addLogger( \Aimeos\MShop\Context\Item\Iface $context )
181
	{
182
		$logger = \Aimeos\MAdmin\Log\Manager\Factory::createManager( $context );
183
		$context->setLogger( $logger );
184
185
		return $context;
186
	}
187
188
189
190
	/**
191
	 * Adds the mailer object to the context
192
	 *
193
	 * @param \Aimeos\MShop\Context\Item\Iface $context Context object
194
	 * @return \Aimeos\MShop\Context\Item\Iface Modified context object
195
	 */
196
	protected function addMailer( \Aimeos\MShop\Context\Item\Iface $context )
197
	{
198
		$mail = new \Aimeos\MW\Mail\Swift( $this->mailer );
199
		$context->setMail( $mail );
200
201
		return $context;
202
	}
203
204
205
	/**
206
	 * Adds the message queue manager object to the context
207
	 *
208
	 * @param \Aimeos\MShop\Context\Item\Iface $context Context object
209
	 * @return \Aimeos\MShop\Context\Item\Iface Modified context object
210
	 */
211
	protected function addMessageQueueManager( \Aimeos\MShop\Context\Item\Iface $context )
212
	{
213
		$mq = new \Aimeos\MW\MQueue\Manager\Standard( $context->getConfig() );
214
		$context->setMessageQueueManager( $mq );
215
216
		return $context;
217
	}
218
219
220
	/**
221
	 * Adds the session object to the context
222
	 *
223
	 * @param \Aimeos\MShop\Context\Item\Iface $context Context object
224
	 * @return \Aimeos\MShop\Context\Item\Iface Modified context object
225
	 */
226
	protected function addSession( \Aimeos\MShop\Context\Item\Iface $context )
227
	{
228
		$session = new \Aimeos\MW\Session\Flow( $this->session );
229
		$context->setSession( $session );
230
231
		return $context;
232
	}
233
234
235
	/**
236
	 * Adds the user ID and name if available
237
	 *
238
	 * @param \Aimeos\MShop\Context\Item\Iface $context Context object
239
	 * @param \Neos\Flow\Mvc\RequestInterface|null $request Request object
240
	 */
241
	protected function addUser( \Aimeos\MShop\Context\Item\Iface $context \Neos\Flow\Mvc\RequestInterface $request = null )
0 ignored issues
show
Bug introduced by
This code did not parse for me. Apparently, there is an error somewhere around this line:

Syntax error, unexpected T_NS_SEPARATOR, expecting ')'
Loading history...
242
	{
243
		if( $request instanceof \Neos\Flow\Mvc\ActionRequest ) {
244
			$context->setEditor( $request->getHttpRequest()->getClientIpAddress() );
245
		}
246
	}
247
248
249
	/**
250
	 * Inject the settings
251
	 *
252
	 * @param array $settings
253
	 * @return void
254
	 */
255
	public function injectSettings( array $settings )
256
	{
257
		$this->settings = $settings;
258
	}
259
260
261
	/**
262
	 * Sets the Aimeos shop cache
263
	 *
264
	 * @param \Neos\Cache\Frontend\StringFrontend $cache Cache for shop data
265
	 * @return void
266
	 */
267
	public function setCache( \Neos\Cache\Frontend\StringFrontend $cache )
268
	{
269
		$this->cache = $cache;
270
	}
271
}
272