SectionFactory.php
2.04 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
namespace WPML\TM\Menu\TranslationServices;
use WPML\LIB\WP\Http;
use WPML\TM\Geolocalization;
use function WPML\Container\make;
use function WPML\FP\partial;
use function WPML\FP\partialRight;
class SectionFactory implements \IWPML_TM_Admin_Section_Factory {
/**
* @return Section
*/
public function create() {
global $sitepress;
return new Section(
$sitepress,
$this->site_key_exists() ?
$this->createServicesListRenderer() :
partial( NoSiteKeyTemplate::class . '::render', $this->getTemplateRenderer() )
);
}
/**
* @return bool|string
*/
private function site_key_exists() {
$site_key = false;
if ( class_exists( 'WP_Installer' ) ) {
$repository_id = 'wpml';
$site_key = \WP_Installer()->get_site_key( $repository_id );
}
return $site_key;
}
/**
* @param \WPML_Twig_Template_Loader $twig_loader
* @param \WPML_TP_Client $tp_client
*
* @return callable
*/
private function createServicesListRenderer() {
/**
* Section: "Partner services", "Other services" and "Translation Management Services"
*/
$getServicesTabs = partial(
ServicesRetriever::class . '::get',
$this->getTpApiServices(),
Geolocalization::getCountryByIp( Http::post() ),
partialRight(
[ ServiceMapper::class, 'map' ],
[ ActiveServiceRepository::class, 'getId' ]
)
);
return partial(
MainLayoutTemplate::class . '::render',
$this->getTemplateRenderer(),
ActiveServiceTemplateFactory::createRenderer(),
\TranslationProxy::has_preferred_translation_service(),
$getServicesTabs
);
}
/**
* @return callable
*/
private function getTemplateRenderer() {
$template = make(
\WPML_Twig_Template_Loader::class,
[
':paths' => [
WPML_TM_PATH . '/templates/menus/translation-services/',
WPML_PLUGIN_PATH . '/templates/pagination/',
],
]
)->get_template();
return [ $template, 'show' ];
}
/**
* @return \WPML_TP_API_Services
*/
private function getTpApiServices() {
return make( \WPML_TP_Client_Factory::class )->create()->services();
}
}