93 lines
2.0 KiB
PHP
93 lines
2.0 KiB
PHP
<?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();
|
|
}
|
|
}
|