Repository.php
1.67 KB
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
<?php
namespace WPML\BlockEditor\Blocks\LanguageSwitcher;
use WPML\BlockEditor\Blocks\LanguageSwitcher\Model\LanguageItem;
use WPML\BlockEditor\Blocks\LanguageSwitcher\Model\LanguageSwitcher;
use WPML\FP\Obj;
class Repository {
/** @var \WPML_LS_Model_Build */
private $languageSwitcherModelBuilder;
public function __construct(
\SitePress $sitepress,
\WPML_LS_Dependencies_Factory $dependencies = null
) {
$dependencies = $dependencies ?: new \WPML_LS_Dependencies_Factory( $sitepress, \WPML_Language_Switcher::parameters() );
$this->languageSwitcherModelBuilder = new \WPML_LS_Model_Build( $dependencies->settings(), $sitepress, 'wpml-ls-' );
}
/**
* @return LanguageSwitcher
*/
public function getCurrentLanguageSwitcher( ) {
$model = $this->languageSwitcherModelBuilder->get( new \WPML_LS_Slot( [
'display_link_for_current_lang' => true,
'display_names_in_native_lang' => true,
'display_names_in_current_lang' => true,
'display_flags' => true,
]) );
$languages = $model[ 'languages' ];
$currentLanguageCode = $model[ 'current_language_code' ];
$languageItems = [];
foreach( $languages as $language ) {
$languageItems[] = $this->buildLanguageItem( $language );
}
return new LanguageSwitcher( $currentLanguageCode, $languageItems );
}
private function buildLanguageItem( array $language ) {
return new LanguageItem(
Obj::propOr( '', 'display_name', $language ),
Obj::propOr( '', 'native_name', $language ),
Obj::propOr( '', 'code', $language ),
Obj::propOr( '', 'url', $language ),
Obj::propOr( '', 'flag_url', $language ),
Obj::propOr( '', 'flag_title', $language ),
Obj::propOr( '', 'flag_alt', $language )
);
}
}