1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<?php /** * WPSEO plugin file. * * @package WPSEO\Admin\Options\Tabs */
/** * Class WPSEO_Option_Tabs. */ class WPSEO_Option_Tabs {
/** * Tabs base. * * @var string */ private $base;
/** * The tabs in this group. * * @var array */ private $tabs = array();
/** * Name of the active tab. * * @var string */ private $active_tab = '';
/** * WPSEO_Option_Tabs constructor. * * @codeCoverageIgnore * * @param string $base Base of the tabs. * @param string $active_tab Currently active tab. */ public function __construct( $base, $active_tab = '' ) { $this->base = sanitize_title( $base );
$tab = filter_input( INPUT_GET, 'tab' ); $this->active_tab = empty( $tab ) ? $active_tab : $tab; }
/** * Get the base. * * @return string */ public function get_base() { return $this->base; }
/** * Add a tab. * * @param WPSEO_Option_Tab $tab Tab to add. * * @return $this */ public function add_tab( WPSEO_Option_Tab $tab ) { $this->tabs[] = $tab;
return $this; }
/** * Get active tab. * * @return null|WPSEO_Option_Tab Get the active tab. */ public function get_active_tab() { if ( empty( $this->active_tab ) ) { return null; }
$active_tabs = array_filter( $this->tabs, array( $this, 'is_active_tab' ) ); if ( ! empty( $active_tabs ) ) { $active_tabs = array_values( $active_tabs ); if ( count( $active_tabs ) === 1 ) { return $active_tabs[0]; } }
return null; }
/** * Is the tab the active tab. * * @param WPSEO_Option_Tab $tab Tab to check for active tab. * * @return bool */ public function is_active_tab( WPSEO_Option_Tab $tab ) { return ( $tab->get_name() === $this->active_tab ); }
/** * Get all tabs. * * @return WPSEO_Option_Tab[] */ public function get_tabs() { return $this->tabs; }
/** * Display the tabs. * * @param Yoast_Form $yform Yoast Form needed in the views. */ public function display( Yoast_Form $yform ) { $formatter = new WPSEO_Option_Tabs_Formatter(); $formatter->run( $this, $yform ); } }
|