Completed
Push — master ( 844367...ab725b )
by Aimeos
02:57
created

Support::setLocale()   A

Complexity

Conditions 2
Paths 4

Size

Total Lines 19
Code Lines 10

Duplication

Lines 19
Ratio 100 %

Importance

Changes 0
Metric Value
dl 19
loc 19
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 10
nc 4
nop 2
1
<?php
2
3
/**
4
 * @license MIT, http://opensource.org/licenses/MIT
5
 * @copyright Aimeos (aimeos.org), 2015-2016
6
 * @package laravel
7
 * @subpackage Base
8
 */
9
10
namespace Aimeos\Shop\Base;
11
12
13
use Illuminate\Support\Facades\Input;
14
use Illuminate\Support\Facades\Route;
15
16
17
/**
18
 * Service providing the supporting functionality
19
 *
20
 * @package laravel
21
 * @subpackage Base
22
 */
23
class Support
24
{
25
	/**
26
	 * @var \Aimeos\MShop\Context\Item\Iface
27
	 */
28
	private $context;
29
30
31
	/**
32
	 * Initializes the object
33
	 *
34
	 * @param \Aimeos\Shop\Base\Context $context Context provider
35
	 * @param \Aimeos\Shop\Base\Locale $locale Locale provider
36
	 */
37
	public function __construct( \Aimeos\Shop\Base\Context $context, \Aimeos\Shop\Base\Locale $locale )
38
	{
39
		$site = ( Route::current() ? Route::input( 'site', Input::get( 'site', 'default' ) ) : 'default' );
40
41
		$this->context = $context->get( false );
42
		$this->context->setLocale( $locale->getBackend( $this->context, $site ) );
43
	}
44
45
46
	/**
47
	 * Checks if the user with the given ID is in the specified group
48
	 *
49
	 * @param string $userid Unique user ID
50
	 * @param string|array $groupcodes Unique user/customer group codes that are allowed
51
	 * @return boolean True if user is part of the group, false if not
52
	 */
53
	public function checkGroup( $userid, $groupcodes )
54
	{
55
		$manager = \Aimeos\MShop\Factory::createManager( $this->context, 'customer/group' );
56
57
		$search = $manager->createSearch();
58
		$search->setConditions( $search->compare( '==', 'customer.group.code', (array) $groupcodes ) );
59
		$groupItems = $manager->searchItems( $search );
60
61
62
		$manager = \Aimeos\MShop\Factory::createManager( $this->context, 'customer/lists' );
63
64
		$search = $manager->createSearch();
65
		$expr = array(
66
			$search->compare( '==', 'customer.lists.parentid', $userid ),
67
			$search->compare( '==', 'customer.lists.refid', array_keys( $groupItems ) ),
68
			$search->compare( '==', 'customer.lists.domain', 'customer/group' ),
69
		);
70
		$search->setConditions( $search->combine( '&&', $expr ) );
71
		$search->setSlice( 0, 1 );
72
73
		return (bool) count( $manager->searchItems( $search ) );
74
	}
75
76
77
	public function getGroups()
78
	{
79
		$list = array();
80
		$manager = \Aimeos\MShop\Factory::createManager( $this->context, 'customer/group' );
81
82
		$search = $manager->createSearch();
83
		$search->setConditions( $search->compare( '==', 'customer.group.id', $this->context->getGroupIds() ) );
84
85
		foreach( $manager->searchItems( $search ) as $item ) {
86
			$list[] = $item->getCode();
87
		}
88
89
		return $list;
90
	}
91
}