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
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\Locale\Deployed;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\Filesystem;
use Magento\Framework\Locale\AvailableLocalesInterface;
use Magento\Framework\View\Design\Theme\FlyweightFactory;
use Magento\Framework\View\DesignInterface;
/**
* Returns array of deployed locale codes for the theme.
*/
class Codes implements AvailableLocalesInterface
{
/**
* Works with file system.
*
* @var Filesystem
*/
private $fileSystem;
/**
* Factory for creating objects that implements \Magento\Framework\View\Design\ThemeInterface.
*
* @var FlyweightFactory
*/
private $flyweightFactory;
/**
* @param FlyweightFactory $flyweightFactory factory for creating objects
* that implements \Magento\Framework\View\Design\ThemeInterface
* @param Filesystem $fileSystem works with file system
*/
public function __construct(
FlyweightFactory $flyweightFactory,
Filesystem $fileSystem
) {
$this->fileSystem = $fileSystem;
$this->flyweightFactory = $flyweightFactory;
}
/**
* {@inheritdoc}
*
* If theme or file directory for theme static content does not exist then return an empty array.
*/
public function getList($code, $area = DesignInterface::DEFAULT_AREA)
{
try {
$theme = $this->flyweightFactory->create($code, $area);
$reader = $this->fileSystem->getDirectoryRead(DirectoryList::STATIC_VIEW);
$dirs = $reader->read($theme->getFullPath());
} catch (\Exception $e) {
return [];
}
return array_map('basename', $dirs);
}
}