wpml-st-slug-translation-ui-factory.php
1.21 KB
<?php
class WPML_ST_Slug_Translation_UI_Factory {
const POST = 'post';
const TAX = 'taxonomy';
const TEMPLATE_PATH = 'templates/slug-translation';
public function create( $type ) {
global $sitepress;
$sync_settings_factory = new WPML_Element_Sync_Settings_Factory();
$records_factory = new WPML_Slug_Translation_Records_Factory();
if ( WPML_Slug_Translation_Factory::POST === $type ) {
$settings = new WPML_ST_Post_Slug_Translation_Settings( $sitepress );
} elseif ( WPML_Slug_Translation_Factory::TAX === $type ) {
$settings = new WPML_ST_Tax_Slug_Translation_Settings();
} else {
throw new Exception( 'Unknown element type.' );
}
$records = $records_factory->create( $type );
$sync = $sync_settings_factory->create( $type );
$template_loader = new WPML_Twig_Template_Loader( array( WPML_ST_PATH . '/' . self::TEMPLATE_PATH ) );
$template_service = $template_loader->get_template();
$lang_selector = new WPML_Simple_Language_Selector( $sitepress );
$model = new WPML_ST_Element_Slug_Translation_UI_Model( $sitepress, $settings, $records, $sync, $lang_selector );
return new WPML_ST_Element_Slug_Translation_UI( $model, $template_service );
}
}