PluginProbe
Time Clock – A WordPress Employee & Volunteer Time Clock Plugin / 1.3
Time Clock – A WordPress Employee & Volunteer Time Clock Plugin v1.3
trunk 1.0 1.0.1 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2
time-clock / includes / settings / settings_api.php

settings_api.php in Time Clock – A WordPress Employee & Volunteer Time Clock Plugin 1.3, at includes/settings/settings_api.php

795 lines 24.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
5 // settings array
6 function etimeclockwp_settings() {
7
8 $etimeclockwp_settings_array = apply_filters('etimeclockwp_settings_top_level', array(
9 apply_filters('etimeclockwp_settings_etimeclockwp_tab', array(
10 __('Dashboard','time-clock') => apply_filters('etimeclockwp_settings_getting_started_page', array(
11 array(
12 'title' => __( 'Dashboard', 'time-clock' ),
13 'name' => '',
14 'type' => 'dashboard'
15 ),
16 )),
17 )),
18 apply_filters('etimeclockwp_settings_general_tab', array(
19 __('General','time-clock') =>
20 array(
21 __('Main','time-clock') => array(
22 'title' => __( 'Show Break In / Break Out Options', 'time-clock' ),
23 'name' => 'show_break_options',
24 'type' => 'dropdown',
25 'options' => array (
26 __('Yes (Default)','time-clock'),
27 __('No','time-clock'),
28 ),
29 'default' => '0',
30 'help' => __('When the timeclock shortcode is displayed, the Clock In / Clock Out Buttons are displayed. Should the Leave On Break / Return From Break buttons also be displayed?','time-clock'),
31 ),
32 ),
33 array(
34 __('Default Colors','time-clock') => array(
35 'title' => __( 'Clock In - Button Color', 'time-clock' ),
36 'name' => 'clock-in-button-color',
37 'type' => 'color',
38 'default' => '#3EBB9C',
39 'help' => '',
40 ),
41 array(
42 'title' => __( 'Clock Out - Button Color', 'time-clock' ),
43 'name' => 'clock-out-button-color',
44 'type' => 'color',
45 'default' => '#3894D1',
46 'help' => '',
47 ),
48 array(
49 'title' => __( 'Leave On Break - Button Color', 'time-clock' ),
50 'name' => 'leave-on-break-button-color',
51 'type' => 'color',
52 'default' => '#FFC655',
53 'help' => '',
54 ),
55 array(
56 'title' => __( 'Return From Break - Button Color', 'time-clock' ),
57 'name' => 'return-from-break-button-color',
58 'type' => 'color',
59 'default' => '#FF5555',
60 'help' => '',
61 ),
62 ),
63 array(
64 __('Default Text','time-clock') =>
65 array(
66 'title' => __( 'Employee ID', 'time-clock' ),
67 'name' => 'employee-id',
68 'type' => 'input',
69 'default' => __( 'Employee ID', 'time-clock' ),
70 'help' => '',
71 ),
72 array(
73 'title' => __( 'Employee Password', 'time-clock' ),
74 'name' => 'employee-password',
75 'type' => 'input',
76 'default' => __( 'Employee Password', 'time-clock' ),
77 'help' => '',
78 ),
79 array(
80 'title' => __( 'Clock In', 'time-clock' ),
81 'name' => 'clock-in',
82 'type' => 'input',
83 'default' => __( 'Clock In', 'time-clock' ),
84 'help' => '',
85 ),
86 array(
87 'title' => __( 'Clock Out', 'time-clock' ),
88 'name' => 'clock-out',
89 'type' => 'input',
90 'default' => __( 'Clock Out', 'time-clock' ),
91 'help' => '',
92 ),
93 array(
94 'title' => __( 'Leave On Break', 'time-clock' ),
95 'name' => 'leave-on-break',
96 'type' => 'input',
97 'default' => __( 'Leave On Break', 'time-clock' ),
98 'help' => '',
99 ),
100 array(
101 'title' => __( 'Return From Break', 'time-clock' ),
102 'name' => 'return-from-break',
103 'type' => 'input',
104 'default' => __( 'Return From Break', 'time-clock' ),
105 'help' => '',
106 ),
107 ),
108 array(
109 __('Date & Time Format','time-clock') =>
110 array(
111 'title' => __( 'Date Format', 'time-clock' ),
112 'name' => 'date-format',
113 'type' => 'date',
114 'default' => 'n/j/Y',
115 'help' => __('If you find the date listed here incorrect, please check your WordPress and server settings.', 'time-clock'),
116 ),
117 array(
118 'title' => __( 'Time Format', 'time-clock' ),
119 'name' => 'time-format',
120 'type' => 'time',
121 'default' => 'g:i:s A',
122 'help' => __('If you find the time listed here incorrect, please check your WordPress and server settings.', 'time-clock'),
123 ),
124 ),
125 )),
126
127
128
129 apply_filters('etimeclockwp_settings_advanced_tab', array(
130 __('Advanced','time-clock') => array(
131 __('Plugin Data','time-clock') => array(
132 'title' => __( 'Remove all plugin data on uninstall', 'time-clock' ),
133 'name' => 'uninstall',
134 'type' => 'dropdown',
135 'options' => array (
136 __('No (Default)','time-clock'),
137 __('Yes','time-clock'),
138 ),
139 'default' => '0',
140 'help' => '',
141 ),
142 ),
143 )),
144 ));
145
146 return $etimeclockwp_settings_array;
147 }
148
149 // render menu
150 function etimeclockwp_settings_render_menu() {
151
152 global $etimeclockwp_options;
153
154 // get settings
155 $settings = etimeclockwp_settings();
156
157 // make array
158 $tabs_array = [];
159 $tabs_array_level1 = [];
160 $tabs_array_level2 = [];
161
162 $level = "0";
163 foreach ($settings as $tab) {
164
165 $tabs_array_level1[] = key($tab);
166
167 foreach ($tab as $element) {
168
169 $tabs_array_level2[$level][] = key($element);
170
171 }
172 $level++;
173
174
175 }
176
177 $tabs_array = array_merge(array($tabs_array_level1),$tabs_array_level2);
178
179 // make tabs
180 if (!empty($etimeclockwp_options['tab'])) {
181 $etimeclockwp_active_tab = $etimeclockwp_options['tab'];
182 } else {
183 $etimeclockwp_active_tab = "tab00";
184 }
185
186 if (isset($_GET['tab'])) {
187 $etimeclockwp_active_tab = "tab".intval($_GET['tab']);
188 }
189
190 $etimeclockwp_active_tab_top = substr($etimeclockwp_active_tab, 0, -1);
191
192 echo "<table width='100%'><tr><td width='90%'>";
193
194 echo "<span class='dashicons dashicons-admin-generic'></span><span id='etimeclockwp-menu-title'>&nbsp;"; echo ETIMECLOCKWP_NAME; echo " "; echo __('Settings','time-clock'); echo "</span><br /><span class='etimeclockwp-menu-sub-title'>";
195 echo __(' Version ','time-clock'); echo ETIMECLOCKWP_VERSION; echo "</span><br />";
196 //echo "<br /><span class='etimeclockwp-menu-sub-title'> &nbsp; &nbsp; &nbsp; &nbsp;"; echo __('eCommerce built to perfection.','time-clock'); echo "</span>";
197
198
199 echo "</td><td width='10%' valign='bottom'>";
200 echo "<input name='submit' id='submit' class='button button-primary etimeclockwp-settings-button' value='"; echo __('Save Changes', 'time-clock'); echo "' type='submit'>";
201 echo "</td></tr></table>";
202
203 // menu div
204 echo "<div id='etimeclockwp-menu-div'>";
205
206
207 // menu level 1
208 echo "<h1 class='nav-tab-wrapper'>";
209
210 $counter = "0";
211 foreach ($tabs_array as $tabs => $tab) {
212
213 if (!empty($tab[0])) {
214 if ($tabs == 0) {
215 echo "<ul id='etimeclockwp-tabs'>";
216 foreach ($tab as $count => $title) {
217 echo "<li><a href='#' id='tab$count$counter' class='nav-tab"; if ($etimeclockwp_active_tab_top == "tab".$count) { echo " nav-tab-active'"; } echo "'>$title</a></li>";
218 }
219 echo "</ul>";
220 }
221 }
222
223 }
224 echo "</h1>";
225
226
227 // menu level 2
228 $counter = "0";
229
230 foreach ($tabs_array as $tabs => $tab) {
231 if ($tabs > 0) {
232
233 // remove any empty elements - this is necessary for extensions that add a new top level tab
234 $tab = array_filter($tab);
235 $tab = array_values($tab);
236
237 echo "<ul id='etimeclockwp-tabs-more' class='subsubsub etimeclockwp-more etimeclockwp-more-tab$counter'"; if ($etimeclockwp_active_tab_top == "tab".$counter) { echo "style='display: block;'"; } echo ">";
238 $tab_count = count( $tab );
239 $tab_count--;
240 foreach ($tab as $count => $title) {
241 if (!empty($title)) {
242 echo "<li><a href='#' id='tab$counter$count' class='tab-more tab"; echo $counter.$count; echo "T"; if ($etimeclockwp_active_tab == "tab".$counter.$count) { echo " current '"; } echo "'>$title</a>";
243
244 if ($tab_count > $count) {
245 echo "|";
246 }
247
248 echo "</li>";
249 }
250 }
251 echo "</ul>";
252 $counter++;
253
254 }
255 }
256
257 echo "</div>";
258
259 settings_errors();
260
261 return;
262 }
263
264
265 // dashboard items array
266 function etimeclockwp_dashboard_api() {
267 $etimeclockwp_dashboard_array = apply_filters('etimeclockwp_dashboard_array', array());
268 return $etimeclockwp_dashboard_array;
269 }
270
271 // license items array
272 function etimeclockwp_licenses_list() {
273 $etimeclockwp_license_list_array = apply_filters('etimeclockwp_licenses_list', array());
274 return $etimeclockwp_license_list_array;
275 }
276
277
278
279 // render option types
280 // allowed types
281 // -------------
282 // text - plain text - public use
283 // dropdown - dropdown menu - public use
284 // input - input field - public use
285 // color - color picker - public use
286 // image - image picker - public use
287 // date - date format - public use
288 // time - time picker - public use
289 // editor - wordpress rich editor - public use
290 // textarea - plain textarea - public use
291 // license_list - list of licenses, can be added to - public use
292 // hr - horzontal rule - public use
293 // title - bold text in title column - public use
294 // pages - pages installed at install - public use
295 // categories - product categories - public use
296
297 function etimeclockwp_settings_render_option($item) {
298
299 global $etimeclockwp_options;
300
301 extract($item);
302
303 if (!isset($default)) { $default = ''; }
304 if (!isset($class)) { $class = ''; }
305 if (!isset($class_div)) { $class_div = ''; }
306
307 // text
308 if ($type == "text") {
309 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
310 echo "$title:</td><td>";
311 echo $options;
312 echo "</td></tr></table>";
313 }
314
315 // dropdown
316 if ($type == "dropdown") {
317
318 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
319 echo "$title:</td><td>";
320 echo "<div class='$class_div'><select name='etimeclockwp_settings[$name]' class='etimeclockwp_cell_width $class'>";
321
322 $count = "0";
323 foreach($options as $key => $value) {
324 echo "<option ";
325 if (!empty($etimeclockwp_options[$name])) {
326 if ($etimeclockwp_options[$name] == $count || $etimeclockwp_options[$name] == $key) { echo " SELECTED "; }
327 } else {
328 if ($count == $default || $key == $default) { echo " SELECTED "; }
329 }
330 echo "value='$key'>"; echo $value; echo "</option>";
331 $count++;
332 }
333
334 echo "</select></div></td><td>";
335 if (!empty($help)) {
336 echo "<span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
337 }
338 echo "</td></tr></table>";
339 }
340
341 // image
342 if ($type == "image") {
343 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
344 echo "$title:</td><td>";
345
346 echo "<input type='text' class='etimeclockwp_cell_width' name='etimeclockwp_settings[$name]' id='image_url' value='";
347 if (!empty($etimeclockwp_options[$name])) {
348 echo esc_attr($etimeclockwp_options[$name]);
349 } else {
350 echo esc_attr($default);
351 }
352 echo "' >";
353 echo "<a class='etimeclockwp_mediauploader button'>"; echo __('Add or Upload Image', 'time-clock'); echo "</a>";
354
355 if (!empty($help)) {
356 echo "<span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
357 }
358
359 echo "</td></tr></table>";
360 }
361
362 // pages
363 if ($type == "pages") {
364
365 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
366 echo "$title:</td><td>";
367
368 echo "<select name='etimeclockwp_settings[$name]' class='etimeclockwp_cell_width'>";
369
370 $args = array(
371 'sort_order' => 'asc',
372 'sort_column' => 'post_title',
373 'post_type' => 'page',
374 'post_status' => 'publish'
375 );
376 $pages = get_pages($args);
377
378 foreach($pages as $page) {
379 echo "<option ";
380 if (!empty($etimeclockwp_options[$name])) {
381 if ($etimeclockwp_options[$name] == $page->ID) { echo " SELECTED "; }
382 } else {
383 if ($page->ID == $default) { echo " SELECTED "; }
384 }
385 echo "value='"; echo $page->ID; echo "'>"; echo $page->post_title; echo "</option>";
386 }
387
388 echo "</select>";
389 if (!empty($help)) {
390 echo "<span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
391 }
392 echo "</td></tr></table>";
393 }
394
395 // categories
396 if ($type == "categories") {
397
398 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
399 echo "$title:</td><td>";
400
401 echo "<select name='etimeclockwp_settings[$name]' class='etimeclockwp_cell_width'><option></option>";
402
403 $args = array (
404 'taxonomy' => 'product_category',
405 'orderby' => 'name',
406 'order' => 'ASC',
407 );
408 $categories = get_categories($args);
409
410 foreach($categories as $category) {
411
412 echo "<option ";
413 if (!empty($etimeclockwp_options[$name])) {
414 if ($etimeclockwp_options[$name] == $category->slug) { echo " SELECTED "; }
415 } else {
416 if ($category->slug == $default) { echo " SELECTED "; }
417 }
418 echo "value='"; echo $category->slug; echo "'>"; echo $category->name; echo "</option>";
419 }
420
421 echo "</select>";
422 if (!empty($help)) {
423 echo "<span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
424 }
425 echo "</td></tr></table>";
426 }
427
428 // input
429 if ($type == "input") {
430 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
431 echo "$title:</td><td>";
432 echo "<input class='etimeclockwp_cell_width' type='text' name='etimeclockwp_settings[$name]' value=\"";
433 if (!empty($etimeclockwp_options[$name])) {
434 echo esc_attr($etimeclockwp_options[$name]);
435 } else {
436 echo esc_attr($default);
437 }
438 echo "\">";
439
440 if (!empty($help)) {
441 echo " <span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
442 }
443
444 echo "</td></tr></table>";
445 }
446
447 // hr
448 if ($type == "hr") {
449 echo "<hr>";
450 }
451
452
453
454 // date
455 if ($type == "date") {
456
457 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
458 echo "$title:</td><td>";
459 echo "<select name='etimeclockwp_settings[$name]' class='etimeclockwp_cell_width'>";
460 echo "<option value='F j, Y'"; if (etimeclockwp_get_option($name) == 'F j, Y') { echo " SELECTED "; } echo ">"; echo date_i18n('F j, Y'); echo "</option>";
461 echo "<option value='M j, Y'"; if (etimeclockwp_get_option($name) == 'M j, Y') { echo " SELECTED "; } echo ">"; echo date_i18n('M j, Y'); echo "</option>";
462 echo "<option value='M j'"; if (etimeclockwp_get_option($name) == 'M j') { echo " SELECTED "; } echo ">"; echo date_i18n('M j'); echo "</option>";
463 echo "<option value='n/j/Y'"; if (etimeclockwp_get_option($name) == 'n/j/Y') { echo " SELECTED "; } echo ">"; echo date_i18n('n/j/Y'); echo "</option>";
464 echo "<option value='n/j/y'"; if (etimeclockwp_get_option($name) == 'n/j/y') { echo " SELECTED "; } echo ">"; echo date_i18n('n/j/y'); echo "</option>";
465 echo "<option value='n/j'"; if (etimeclockwp_get_option($name) == 'n/j') { echo " SELECTED "; } echo ">"; echo date_i18n('n/j'); echo "</option>";
466 echo "<option value='j F Y'"; if (etimeclockwp_get_option($name) == 'j F Y') { echo " SELECTED "; } echo ">"; echo date_i18n('j F Y'); echo "</option>";
467 echo "<option value='j M Y'"; if (etimeclockwp_get_option($name) == 'j M Y') { echo " SELECTED "; } echo ">"; echo date_i18n('j M Y'); echo "</option>";
468 echo "<option value='j M'"; if (etimeclockwp_get_option($name) == 'j M') { echo " SELECTED "; } echo ">"; echo date_i18n('j M'); echo "</option>";
469 echo "<option value='j-n-Y'"; if (etimeclockwp_get_option($name) == 'j-n-Y') { echo " SELECTED "; } echo ">"; echo date_i18n('j-n-Y'); echo "</option>";
470 echo "<option value='j-n-y'"; if (etimeclockwp_get_option($name) == 'j-n-y') { echo " SELECTED "; } echo ">"; echo date_i18n('j-n-y'); echo "</option>";
471 echo "<option value='j-n'"; if (etimeclockwp_get_option($name) == 'j-n') { echo " SELECTED "; } echo ">"; echo date_i18n('j-n'); echo "</option>";
472 echo "</select>";
473
474 if (!empty($help)) {
475 echo " <span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
476 }
477
478 echo "</td></tr></table>";
479 }
480
481
482 // time
483 if ($type == "time") {
484 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
485 echo "$title:</td><td>";
486 echo "<select name='etimeclockwp_settings[$name]' class='etimeclockwp_cell_width'>";
487 echo "<option value='g:i:s a'"; if (etimeclockwp_get_option($name) == 'g:i:s a') { echo " SELECTED "; } echo ">" . date_i18n('g:i:s a') . "</option>";
488 echo "<option value='g:i:s A'"; if (etimeclockwp_get_option($name) == 'g:i:s A') { echo " SELECTED "; } echo ">" . date_i18n('g:i:s A') . "</option>";
489 echo "<option value='g:i a'"; if (etimeclockwp_get_option($name) == 'g:i a') { echo " SELECTED "; } echo ">" . date_i18n('g:i a') . "</option>";
490 echo "<option value='g:i A'"; if (etimeclockwp_get_option($name) == 'g:i A') { echo " SELECTED "; } echo ">" . date_i18n('g:i A') . "</option>";
491 echo "<option value='H:i:s'"; if (etimeclockwp_get_option($name) == 'H:i:s') { echo " SELECTED "; } echo ">" . date_i18n('H:i:s') . "</option>";
492 echo "<option value='H:i'"; if (etimeclockwp_get_option($name) == 'H:i') { echo " SELECTED "; } echo ">" . date_i18n('H:i') . "</option>";
493 echo "</select>";
494
495 if (!empty($help)) {
496 echo " <span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
497 }
498
499 echo "</td></tr></table>";
500 }
501
502
503
504
505
506 // title
507 if ($type == "title") {
508 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
509 echo "<b>$title</b></td><td>";
510 echo "</td></tr></table>";
511 }
512
513 // dashboard
514 if ($type == "dashboard") {
515
516 $dashboard_array = etimeclockwp_dashboard_api();
517
518 foreach ($dashboard_array as $box) {
519 echo "<div class='postbox etimeclockwp_settings_dashboard_item'>";
520
521 echo "<h2 class='hndle'><span>";
522 echo $box['title'];
523 echo "</span></h2>";
524
525 echo "<div class='inside'>";
526 echo $box['body'];
527 echo "</div>";
528
529 echo "</div>";
530 }
531
532 }
533
534 // color
535 if ($type == "color") {
536 echo "<table><tr><td class='etimeclockwp_cell_title_width'>";
537 echo "$title:</td><td>";
538 echo "<input class='etimeclockwp_cell_width etimeclockwp_colorpicker' type='text' name='etimeclockwp_settings[$name]' value='";
539 if (!empty($etimeclockwp_options[$name])) {
540 echo esc_attr($etimeclockwp_options[$name]);
541 } else {
542 echo esc_attr($default);
543 }
544 echo "'>";
545
546 if (!empty($help)) {
547 echo "<span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
548 }
549
550 echo "</td></tr></table>";
551 }
552
553 // editor
554 if ($type == "editor") {
555 echo "<table width='70%'><tr><td class='etimeclockwp_cell_title_width' valign='top'>";
556 echo "<br />$title:</td><td>";
557 $content = "";
558 if (empty($etimeclockwp_options[$name])) { $content = $default; } else { $content = $etimeclockwp_options[$name]; }
559 $content = stripslashes($content);
560 $editor_id = $id;
561 wp_editor($content, $editor_id, $settings = array(
562 'textarea_name' => "etimeclockwp_settings[$name]"
563 ));
564 echo "</td></tr><tr><td></td><td>";
565
566 echo $desc;
567
568
569 echo "</td></tr></table>";
570 }
571
572 // textarea sysytem info
573 if ($type == "textarea") {
574
575 if (isset($load)) {
576 echo "<table width='80%'><tr><td class='etimeclockwp_cell_title_width' valign='top'>";
577 echo "$title:</td><td>";
578 echo "<a href='#' id='etimeclockwp_load_function' class='etimeclockwp_$name' data-placeholder='$load'>"; echo __('Generate Report','time-clock'); echo "</a>";
579 echo "<textarea style='width:100%;display:none;' rows='20' class='Tetimeclockwp_$name' readonly>";
580 echo"</textarea>";
581 } else {
582 echo "<table><tr><td class='etimeclockwp_cell_title_width' valign='top'>";
583 echo "$title:</td><td>";
584 if (!isset($cols)) { $cols = '34'; }
585 if (!isset($rows)) { $rows = '5'; }
586 echo "<textarea rows='$rows' cols='$cols' name='etimeclockwp_settings[$name]'>";
587 if (!empty($etimeclockwp_options[$name])) {
588 echo esc_textarea($etimeclockwp_options[$name]);
589 } else {
590 echo esc_textarea($default);
591 }
592 echo"</textarea></td><td valign='top'>";
593 if (!empty($help)) {
594 echo "<span alt='f223' class='etimeclockwp-help-tip dashicons dashicons-editor-help' title='$help'></span>";
595 }
596 }
597
598 echo "</td></tr></table>";
599 }
600
601
602
603
604
605
606 // license_list
607 if ($type == "license_list") {
608 $licenses = etimeclockwp_licenses_list();
609 foreach ($licenses as $license) {
610 foreach ($license as $license_details) {
611
612 echo "<table>";
613
614 echo "<tr><td><b>";
615 echo $license_details['name'];
616 echo "</b></td></tr>";
617
618 echo "<tr><td class='etimeclockwp_cell_title_width'>";
619 echo __('Key','time-clock'),":";
620 echo "</td><td>";
621
622 echo "<input name='etimeclockwp_settings[".$license_details['slug']."]' size='45' type='text' value='";
623 if (!empty($license_details['key'])) {
624 echo esc_attr($license_details['key']);
625 }
626 echo "'>";
627
628 // license nonce
629 wp_nonce_field($license_details['slug'].'_nonce', $license_details['slug'].'_nonce');
630
631
632 if ($license_details['status'] !== false && $license_details['status'] == 'valid' ) {
633 // active
634 echo "<input type='submit' class='button-secondary' name='".$license_details['slug']."_license_deactivate' value='"; echo __('Deactivate License','time-clock'); echo "'>";
635 } else {
636 // inactive
637 echo "<input type='submit' class='button-secondary' name='".$license_details['slug']."_license_activate' value='"; echo __('Activate License','time-clock'); echo "'>";
638 }
639
640 echo "</td></tr>";
641
642
643 echo "<tr><td class='etimeclockwp_cell_title_width'>";
644 echo __('Status','time-clock'),":";
645 echo "</td><td>";
646
647 if($license_details['status'] !== false && $license_details['status'] == 'valid' ) {
648
649 echo "<span style='color:green;'>"; echo __('Active','time-clock'); echo "</span> </td></tr><tr><td>";
650
651 echo "</td></tr>";
652
653 } else {
654 echo "<span style='color:red;'>"; echo __('Inactive','time-clock'); echo "</span> </td></tr><tr><td>";
655
656 if (!empty($license_details['message'])) {
657 echo __('Message','time-clock');
658
659 echo ": </td><td>";
660
661 echo esc_html($license_details['message']);
662 }
663 }
664
665 echo "</td></tr>";
666
667
668 echo "</table>";
669 }
670 }
671 }
672
673
674
675
676 }
677
678
679
680
681 // render settings page div's
682 function etimeclockwp_settings_render() {
683
684 global $etimeclockwp_active_tab,$etimeclockwp_options;
685
686 $settings = etimeclockwp_settings();
687
688 // make tabs
689 if (!empty($etimeclockwp_options['tab'])) {
690 $etimeclockwp_active_tab = $etimeclockwp_options['tab'];
691 } else {
692 $etimeclockwp_active_tab = "tab00";
693 }
694
695 if (isset($_GET['tab'])) {
696 $etimeclockwp_active_tab = "tab".intval($_GET['tab']);
697 }
698
699 echo "<div class='metabox-holder'>";
700
701 $tab_id = "0";
702 foreach ($settings as $tab) {
703
704 // remove any empty elements - this is necessary for extensions that add a new top level tab
705 $tab = array_filter($tab);
706 $tab = array_values($tab);
707
708 $page_id = "0";
709 foreach ($tab as $element) {
710
711 echo "<div class='"; if ($tab_id != '0') { echo "postbox"; } echo " etimeclockwp-container' "; if ($etimeclockwp_active_tab == "tab$tab_id$page_id") { echo "style='display:block;'"; } else { echo "style='display:none;'"; } echo " id='tab"; echo $tab_id; echo $page_id; echo "C'>";
712
713 // Show title of tab
714 $title = key($element);
715 if (!empty($title)) {
716 if ($tab_id != '0') {
717 echo "<h2 class='hndle'><span>";
718 echo key($element);
719 echo "</span></h2>";
720 }
721 }
722
723 echo "<div class='inside'>";
724
725 foreach ($element as $item) {
726 etimeclockwp_settings_render_option($item);
727 }
728 echo "</div>";
729
730 echo "</div>";
731 $page_id++;
732 }
733 $tab_id++;
734 }
735
736 echo "</div>";
737 }
738
739
740 // register settings
741 function etimeclockwp_register_settings () {
742 register_setting( 'etimeclockwp_settings_group','etimeclockwp_settings','etimeclockwp_settings_sanatize');
743 }
744 add_action('admin_init','etimeclockwp_register_settings');
745
746
747 // sanatize settings
748 function etimeclockwp_settings_sanatize ($input) {
749
750 $keys = array_keys($input);
751
752 // get settings
753 $settings = etimeclockwp_settings();
754
755 // Loop through each setting being saved and pass it through a sanitization filter
756 foreach ($settings as $setting) {
757 foreach ($setting as $element) {
758 foreach ($element as $item) {
759 foreach($keys as $key) {
760
761 if ($item['name'] == $key) {
762 $type = $item['type'];
763
764 // sanatize
765 if ($type == "editor" || $type == "textarea") {
766 $input[$item['name']] = wp_kses_post($input[$item['name']]);
767 } else {
768 $input[$item['name']] = sanitize_text_field($input[$item['name']]);
769 }
770
771 // validate settings
772 $input = etimeclockwp_settings_validate($input,$item);
773
774 // save settings hook
775 do_action('etimeclockwp_save_settings',$input);
776
777 }
778 }
779 }
780 }
781 }
782
783 return $input;
784
785 }
786
787
788 // validate settings
789 function etimeclockwp_settings_validate($input,$item) {
790
791 return $input;
792
793 }
794
795