Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/language-switcher/slots/class-wpml-ls-slot-factory.php
2023-09-12 21:41:04 +02:00

94 lines
2.1 KiB
PHP

<?php
class WPML_LS_Slot_Factory {
/**
* @param array|WPML_LS_Slot $args
*
* @return WPML_LS_Slot
*/
public function get_slot( $args ) {
if ( is_array( $args ) ) {
$args['slot_group'] = isset( $args['slot_group'] ) ? $args['slot_group'] : null;
$args['slot_slug'] = isset( $args['slot_slug'] ) ? $args['slot_slug'] : null;
$slot = new WPML_LS_Slot( $args );
switch ( $args['slot_group'] ) {
case 'menus':
$slot = new WPML_LS_Menu_Slot( $args );
break;
case 'sidebars':
$slot = new WPML_LS_Sidebar_Slot( $args );
break;
case 'statics':
switch ( $args['slot_slug'] ) {
case 'footer':
$slot = new WPML_LS_Footer_Slot( $args );
break;
case 'post_translations':
$slot = new WPML_LS_Post_Translations_Slot( $args );
break;
case 'shortcode_actions':
$slot = new WPML_LS_Shortcode_Actions_Slot( $args );
break;
}
break;
}
} else {
$slot = $args;
}
return $slot;
}
/**
* @param string $slot_group
*
* @return array
*/
public function get_default_slot_arguments( $slot_group ) {
$args = array(
'slot_group' => $slot_group,
'display_link_for_current_lang' => 1,
'display_names_in_native_lang' => 1,
'display_names_in_current_lang' => 1,
);
if ( $slot_group === 'menus' ) {
$args['template'] = $this->get_core_templates( 'menu-item' );
$args['is_hierarchical'] = 1;
} elseif ( $slot_group === 'sidebars' ) {
$args['template'] = $this->get_core_templates( 'dropdown' );
}
return $args;
}
/**
* @param string $slot_group
*
* @return WPML_LS_Slot
*/
public function get_default_slot( $slot_group ) {
$slot_args = $this->get_default_slot_arguments( $slot_group );
return $this->get_slot( $slot_args );
}
/**
* @param string $slug
*
* @return string|null
*/
public function get_core_templates( $slug ) {
$parameters = WPML_Language_Switcher::parameters();
$templates = isset( $parameters['core_templates'] ) ? $parameters['core_templates'] : array();
return isset( $templates[ $slug ] ) ? $templates[ $slug ] : null;
}
}