94 lines
2.1 KiB
PHP
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;
|
|
}
|
|
}
|