first commit
This commit is contained in:
@@ -0,0 +1,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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user