options-helper.php
3.87 KB
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
namespace Yoast\WP\SEO\Helpers;
use WPSEO_Option_Social;
use WPSEO_Option_Titles;
use WPSEO_Options;
/**
* A helper object for options.
*/
class Options_Helper {
/**
* Retrieves a single field from any option for the SEO plugin. Keys are always unique.
*
* @codeCoverageIgnore We have to write test when this method contains own code.
*
* @param string $key The key it should return.
* @param mixed $default_value The default value that should be returned if the key isn't set.
*
* @return mixed|null Returns value if found, $default_value if not.
*/
public function get( $key, $default_value = null ) {
return WPSEO_Options::get( $key, $default_value );
}
/**
* Sets a single field to the options.
*
* @param string $key The key to set.
* @param mixed $value The value to set.
*
* @return mixed|null Returns value if found.
*/
public function set( $key, $value ) {
return WPSEO_Options::set( $key, $value );
}
/**
* Get a specific default value for an option.
*
* @param string $option_name The option for which you want to retrieve a default.
* @param string $key The key within the option who's default you want.
*
* @return mixed The default value.
*/
public function get_default( $option_name, $key ) {
return WPSEO_Options::get_default( $option_name, $key );
}
/**
* Retrieves the title separator.
*
* @return string The title separator.
*/
public function get_title_separator() {
$default = $this->get_default( 'wpseo_titles', 'separator' );
// Get the titles option and the separator options.
$separator = $this->get( 'separator' );
$seperator_options = $this->get_separator_options();
// This should always be set, but just to be sure.
if ( isset( $seperator_options[ $separator ] ) ) {
// Set the new replacement.
$replacement = $seperator_options[ $separator ];
}
elseif ( isset( $seperator_options[ $default ] ) ) {
$replacement = $seperator_options[ $default ];
}
else {
$replacement = \reset( $seperator_options );
}
/**
* Filter: 'wpseo_replacements_filter_sep' - Allow customization of the separator character(s).
*
* @api string $replacement The current separator.
*/
return \apply_filters( 'wpseo_replacements_filter_sep', $replacement );
}
/**
* Retrieves a default value from the option titles.
*
* @param string $option_titles_key The key of the option title you wish to get.
*
* @return string The option title.
*/
public function get_title_default( $option_titles_key ) {
$default_titles = $this->get_title_defaults();
if ( ! empty( $default_titles[ $option_titles_key ] ) ) {
return $default_titles[ $option_titles_key ];
}
return '';
}
/**
* Retrieves the default option titles.
*
* @codeCoverageIgnore We have to write test when this method contains own code.
*
* @return array The title defaults.
*/
protected function get_title_defaults() {
return WPSEO_Option_Titles::get_instance()->get_defaults();
}
/**
* Get the available separator options.
*
* @return array
*/
protected function get_separator_options() {
return WPSEO_Option_Titles::get_instance()->get_separator_options();
}
/**
* Checks whether a social URL is valid, with empty strings being valid social URLs.
*
* @param string $url The url to be checked.
*
* @return bool Whether the URL is valid.
*/
public function is_social_url_valid( $url ) {
return $url === '' || WPSEO_Option_Social::get_instance()->validate_social_url( $url );
}
/**
* Checks whether a twitter id is valid, with empty strings being valid twitter id.
*
* @param string $twitter_id The twitter id to be checked.
*
* @return bool Whether the twitter id is valid.
*/
public function is_twitter_id_valid( $twitter_id ) {
return empty( $twitter_id ) || WPSEO_Option_Social::get_instance()->validate_twitter_id( $twitter_id, false );
}
}