1+ <?php
2+ /**
3+ * Plugin Name: The Events Calendar Extension: Relabeler
4+ * Description: Adds option to WP Admin > Events > Display for altering labels. For example, you can change the word "Events" to a different word such as "Gigs".
5+ * Version: 1.0.1
6+ * Extension Class: Tribe__Extension__Relabeler
7+ * Author: Modern Tribe, Inc.
8+ * Author URI: http://m.tri.be/1971
9+ * License: GPLv2 or later
10+ * License URI: https://www.gnu.org/licenses/gpl-2.0.html
11+ */
12+
13+ // Do not load directly.
14+ if ( ! defined ( 'ABSPATH ' ) ) {
15+ die ( '-1 ' );
16+ }
17+
18+ // Do not load unless Tribe Common is fully loaded.
19+ if ( ! class_exists ( 'Tribe__Extension ' ) ) {
20+ return ;
21+ }
22+
23+ /**
24+ * Extension main class, class begins loading on init() function.
25+ */
26+ class Tribe__Extension__Relabeler extends Tribe__Extension {
27+
28+ /**
29+ * Caches labels that are retrieved from the database.
30+ *
31+ * @var array {
32+ * @type $option_name string Full text for the altered label
33+ * }
34+ */
35+ protected $ label_cache = array ();
36+
37+ /**
38+ * Setup the Extension's properties.
39+ *
40+ * This always executes even if the required plugins are not present.
41+ */
42+ public function construct () {
43+ $ this ->add_required_plugin ( 'Tribe__Events__Main ' );
44+ $ this ->set_url ( 'https://theeventscalendar.com/extensions/extensions/change-labels-events-venues-organizers/ ' );
45+ $ this ->set_version ( '1.0.1 ' );
46+ }
47+
48+ /**
49+ * Extension initialization and hooks.
50+ */
51+ public function init () {
52+ // Settings area.
53+ if ( ! class_exists ( 'Tribe__Extension__Settings_Helper ' ) ) {
54+ require_once dirname ( __FILE__ ) . '/src/Tribe/Settings_Helper.php ' ;
55+ }
56+ add_action ( 'admin_init ' , array ( $ this , 'add_settings ' ) );
57+
58+ // Events.
59+ add_filter ( 'tribe_event_label_singular ' , array ( $ this , 'get_event_single ' ) );
60+ add_filter ( 'tribe_event_label_singular_lowercase ' , array ( $ this , 'get_event_single_lowercase ' ) );
61+ add_filter ( 'tribe_event_label_plural ' , array ( $ this , 'get_event_plural ' ) );
62+ add_filter ( 'tribe_event_label_plural_lowercase ' , array ( $ this , 'get_event_plural_lowercase ' ) );
63+
64+ // Venues.
65+ add_filter ( 'tribe_venue_label_singular ' , array ( $ this , 'get_venue_single ' ) );
66+ add_filter ( 'tribe_venue_label_singular_lowercase ' , array ( $ this , 'get_venue_single_lowercase ' ) );
67+ add_filter ( 'tribe_venue_label_plural ' , array ( $ this , 'get_venue_plural ' ) );
68+ add_filter ( 'tribe_venue_label_plural_lowercase ' , array ( $ this , 'get_venue_plural_lowercase ' ) );
69+
70+ // Organizers.
71+ add_filter ( 'tribe_organizer_label_singular ' , array ( $ this , 'get_organizer_single ' ) );
72+ add_filter ( 'tribe_organizer_label_singular_lowercase ' , array ( $ this , 'get_organizer_single_lowercase ' ) );
73+ add_filter ( 'tribe_organizer_label_plural ' , array ( $ this , 'get_organizer_plural ' ) );
74+ add_filter ( 'tribe_organizer_label_plural_lowercase ' , array ( $ this , 'get_organizer_plural_lowercase ' ) );
75+ }
76+
77+ /**
78+ * Adds settings options
79+ */
80+ public function add_settings () {
81+ $ setting_helper = new Tribe__Settings_Helper ();
82+
83+ $ fields = array (
84+ 'labels_heading ' => array (
85+ 'type ' => 'html ' ,
86+ 'html ' => '<h3> ' . esc_html__ ( 'Labels ' , 'tribe-extension ' ) . '</h3> ' ,
87+ ),
88+ 'labels_helper_text ' => array (
89+ 'type ' => 'html ' ,
90+ 'html ' => '<p> ' . esc_html__ ( 'The following fields allow you to change the default labels. Inputting something other than the default will change that word everywhere it appears. ' , 'tribe-extension ' ) . '</p> ' ,
91+ ),
92+ 'label_event_single ' => array (
93+ 'type ' => 'text ' ,
94+ 'label ' => esc_html__ ( 'Events ' , 'the-events-calendar ' ),
95+ 'default ' => esc_attr__ ( 'Events ' , 'the-events-calendar ' ),
96+ 'tooltip ' => esc_html__ ( 'Singular label for Events. ' , 'tribe-extension ' ),
97+ 'validation_type ' => 'html ' ,
98+ ),
99+ 'label_event_single_lowercase ' => array (
100+ 'type ' => 'text ' ,
101+ 'label ' => esc_html__ ( 'event ' , 'the-events-calendar ' ),
102+ 'default ' => esc_attr__ ( 'event ' , 'the-events-calendar ' ),
103+ 'tooltip ' => sprintf (
104+ esc_html__ ( 'Lowercase singular label for Events. You might wish to also modify the "Events URL Slug" found in the %s events settings tab. ' , 'tribe-extension ' ),
105+ $ this ->general_settings_tab_link ()
106+ ),
107+ 'validation_type ' => 'html ' ,
108+ ),
109+ 'label_event_plural ' => array (
110+ 'type ' => 'text ' ,
111+ 'label ' => esc_html__ ( 'Events ' , 'the-events-calendar ' ),
112+ 'default ' => esc_attr__ ( 'Events ' , 'the-events-calendar ' ),
113+ 'tooltip ' => esc_html__ ( 'Plural label for Events. ' , 'tribe-extension ' ),
114+ 'validation_type ' => 'html ' ,
115+ ),
116+ 'label_event_plural_lowercase ' => array (
117+ 'type ' => 'text ' ,
118+ 'label ' => esc_html__ ( 'events ' , 'the-events-calendar ' ),
119+ 'default ' => esc_attr__ ( 'events ' , 'the-events-calendar ' ),
120+ 'tooltip ' => sprintf (
121+ esc_html__ ( 'Lowercase plural label for Events. You might wish to also modify the "Single Event URL Slug" found in the %s events settings tab. ' ,'tribe-extension ' ),
122+ $ this ->general_settings_tab_link ()
123+ ),
124+ 'validation_type ' => 'html ' ,
125+ ),
126+ 'label_venue_single ' => array (
127+ 'type ' => 'text ' ,
128+ 'label ' => esc_html__ ( 'Venue ' , 'the-events-calendar ' ),
129+ 'default ' => esc_attr__ ( 'Venue ' , 'the-events-calendar ' ),
130+ 'tooltip ' => esc_html__ ( 'Singular label for Venues. ' , 'tribe-extension ' ),
131+ 'validation_type ' => 'html ' ,
132+ ),
133+ 'label_venue_single_lowercase ' => array (
134+ 'type ' => 'text ' ,
135+ 'label ' => esc_html__ ( 'venue ' , 'the-events-calendar ' ),
136+ 'default ' => esc_attr__ ( 'venue ' , 'the-events-calendar ' ),
137+ 'tooltip ' => esc_html__ ( 'Lowercase singular label for Venues. ' , 'tribe-extension ' ),
138+ 'validation_type ' => 'html ' ,
139+ ),
140+ 'label_venue_plural ' => array (
141+ 'type ' => 'text ' ,
142+ 'label ' => esc_html__ ( 'Venues ' , 'the-events-calendar ' ),
143+ 'default ' => esc_attr__ ( 'Venues ' , 'the-events-calendar ' ),
144+ 'tooltip ' => esc_html__ ( 'Plural label for Venues. ' , 'tribe-extension ' ),
145+ 'validation_type ' => 'html ' ,
146+ ),
147+ 'label_venue_plural_lowercase ' => array (
148+ 'type ' => 'text ' ,
149+ 'label ' => esc_html__ ( 'venues ' , 'the-events-calendar ' ),
150+ 'default ' => esc_attr__ ( 'venues ' , 'the-events-calendar ' ),
151+ 'tooltip ' => esc_html__ ( 'Lowercase plural label for Venues. ' , 'tribe-extension ' ),
152+ 'validation_type ' => 'html ' ,
153+ ),
154+ 'label_organizer_single ' => array (
155+ 'type ' => 'text ' ,
156+ 'label ' => esc_html__ ( 'Organizer ' , 'the-events-calendar ' ),
157+ 'default ' => esc_attr__ ( 'Organizer ' , 'the-events-calendar ' ),
158+ 'tooltip ' => esc_html__ ( 'Singular label for Organizers. ' , 'tribe-extension ' ),
159+ 'validation_type ' => 'html ' ,
160+ ),
161+ 'label_organizer_single_lowercase ' => array (
162+ 'type ' => 'text ' ,
163+ 'label ' => esc_html__ ( 'organizer ' , 'the-events-calendar ' ),
164+ 'default ' => esc_attr__ ( 'organizer ' , 'the-events-calendar ' ),
165+ 'tooltip ' => esc_html__ ( 'Lowercase singular label for Organizers. ' , 'tribe-extension ' ),
166+ 'validation_type ' => 'html ' ,
167+ ),
168+ 'label_organizer_plural ' => array (
169+ 'type ' => 'text ' ,
170+ 'label ' => esc_html__ ( 'Organizers ' , 'the-events-calendar ' ),
171+ 'default ' => esc_attr__ ( 'Organizers ' , 'the-events-calendar ' ),
172+ 'tooltip ' => esc_html__ ( 'Plural label for Organizers. ' , 'tribe-extension ' ),
173+ 'validation_type ' => 'html ' ,
174+ ),
175+ 'label_organizer_plural_lowercase ' => array (
176+ 'type ' => 'text ' ,
177+ 'label ' => esc_html__ ( 'organizers ' , 'the-events-calendar ' ),
178+ 'default ' => esc_attr__ ( 'organizers ' , 'the-events-calendar ' ),
179+ 'tooltip ' => esc_html__ ( 'Lowercase plural label for Organizers. ' , 'tribe-extension ' ),
180+ 'validation_type ' => 'html ' ,
181+ ),
182+ );
183+
184+ $ setting_helper ->add_fields (
185+ $ fields ,
186+ 'display ' ,
187+ 'tribeEventsDateFormatSettingsTitle ' ,
188+ true
189+ );
190+ }
191+
192+ /**
193+ * Get an HTML link to the General settings tab
194+ *
195+ * @return string HTML link element to the general settings tab
196+ */
197+ protected function general_settings_tab_link () {
198+ $ url = Tribe__Settings::instance ()->get_url ( array ( 'tab ' => 'general ' ) );
199+
200+ return sprintf (
201+ '<a href="%2$s">%1$s</a> ' ,
202+ esc_html__ ( 'General ' , 'tribe-extension ' ),
203+ esc_url ( $ url )
204+ );
205+ }
206+
207+ /**
208+ * Gets the label from the database and caches it
209+ *
210+ * @param $key string Option key for the label.
211+ * @param $default string Value to return if none set.
212+ *
213+ * @return string|null
214+ */
215+ public function get_label ( $ key , $ default = null ) {
216+ if ( ! isset ( $ this ->label_cache [ $ key ] ) ) {
217+ $ this ->label_cache [ $ key ] = tribe_get_option ( $ key , $ default );
218+ }
219+
220+ return $ this ->label_cache [ $ key ];
221+ }
222+
223+ /**
224+ * Gets the label
225+ *
226+ * @param $label string
227+ *
228+ * @return string
229+ */
230+ public function get_event_single ( $ label ) {
231+ return $ this ->get_label ( 'label_event_single ' , $ label );
232+ }
233+
234+ /**
235+ * Gets the label
236+ *
237+ * @param $label string
238+ *
239+ * @return string
240+ */
241+ public function get_event_single_lowercase ( $ label ) {
242+ return $ this ->get_label ( 'label_event_single_lowercase ' , $ label );
243+ }
244+
245+ /**
246+ * Gets the label
247+ *
248+ * @param $label string
249+ *
250+ * @return string
251+ */
252+ public function get_event_plural ( $ label ) {
253+ return $ this ->get_label ( 'label_event_plural ' , $ label );
254+ }
255+
256+ /**
257+ * Gets the label
258+ *
259+ * @param $label string
260+ *
261+ * @return string
262+ */
263+ public function get_event_plural_lowercase ( $ label ) {
264+ return $ this ->get_label ( 'label_event_plural_lowercase ' , $ label );
265+ }
266+
267+ /**
268+ * Gets the label
269+ *
270+ * @param $label string
271+ *
272+ * @return string
273+ */
274+ public function get_venue_single ( $ label ) {
275+ return $ this ->get_label ( 'label_venue_single ' , $ label );
276+ }
277+
278+ /**
279+ * Gets the label
280+ *
281+ * @param $label string
282+ *
283+ * @return string
284+ */
285+ public function get_venue_single_lowercase ( $ label ) {
286+ return $ this ->get_label ( 'label_venue_single_lowercase ' , $ label );
287+ }
288+
289+ /**
290+ * Gets the label
291+ *
292+ * @param $label string
293+ *
294+ * @return string
295+ */
296+ public function get_venue_plural ( $ label ) {
297+ return $ this ->get_label ( 'label_venue_plural ' , $ label );
298+ }
299+
300+ /**
301+ * Gets the label
302+ *
303+ * @param $label string
304+ *
305+ * @return string
306+ */
307+ public function get_venue_plural_lowercase ( $ label ) {
308+ return $ this ->get_label ( 'label_venue_plural_lowercase ' , $ label );
309+ }
310+
311+ /**
312+ * Gets the label
313+ *
314+ * @param $label string
315+ *
316+ * @return string
317+ */
318+ public function get_organizer_single ( $ label ) {
319+ return $ this ->get_label ( 'label_organizer_single ' , $ label );
320+ }
321+
322+ /**
323+ * Gets the label
324+ *
325+ * @param $label string
326+ *
327+ * @return string
328+ */
329+ public function get_organizer_single_lowercase ( $ label ) {
330+ return $ this ->get_label ( 'label_organizer_single_lowercase ' , $ label );
331+ }
332+
333+ /**
334+ * Gets the label
335+ *
336+ * @param $label string
337+ *
338+ * @return string
339+ */
340+ public function get_organizer_plural ( $ label ) {
341+ return $ this ->get_label ( 'label_organizer_plural ' , $ label );
342+ }
343+
344+ /**
345+ * Gets the label
346+ *
347+ * @param $label string
348+ *
349+ * @return string
350+ */
351+ public function get_organizer_plural_lowercase ( $ label ) {
352+ return $ this ->get_label ( 'label_organizer_plural_lowercase ' , $ label );
353+ }
354+ }
0 commit comments