PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / trunk
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI vtrunk
8.0.1 8.0.2 8.0.0 7.9.9.7 7.9.9.6 7.9.9.5 7.9.9.4 7.9.9.3 7.9.9.2 7.9.9.1 7.9.9 7.9.8 7.9.7 7.9.6 7.9.5 7.9.4 7.9.3 7.9.2 7.9.1 7.9.0 7.8.9 7.8.8 7.8.7 7.8.6 7.8.5 All 44 releases
gamipress / includes / admin / pages / settings.php

settings.php in GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI trunk, at includes/admin/pages/settings.php

203 lines 6.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Admin Settings Page
4 *
5 * @package GamiPress\Admin\Settings
6 * @author GamiPress <contact@gamipress.com>, Ruben Garcia <rubengcdev@gmail.com>
7 * @since 1.0.0
8 */
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 require_once GAMIPRESS_DIR . 'includes/admin/settings/general.php';
13 require_once GAMIPRESS_DIR . 'includes/admin/settings/social.php';
14 require_once GAMIPRESS_DIR . 'includes/admin/settings/email.php';
15 require_once GAMIPRESS_DIR . 'includes/admin/settings/network.php';
16
17 /**
18 * Register GamiPress Settings with Settings API.
19 *
20 * @since 1.0.0
21 *
22 * @return void
23 */
24 function gamipress_register_settings() {
25
26 register_setting( 'gamipress_settings', 'gamipress_settings' );
27
28 }
29 add_action( 'admin_init', 'gamipress_register_settings' );
30
31 /**
32 * Register settings page.
33 *
34 * @since 1.0.0
35 *
36 * @return void
37 */
38 function gamipress_register_settings_page() {
39
40 $tabs = array();
41 $boxes = array();
42
43 $is_settings_page = ( isset( $_GET['page'] ) && $_GET['page'] === 'gamipress_settings' );
44
45 if( $is_settings_page ) {
46
47 // Loop settings sections
48 foreach( gamipress_get_settings_sections() as $section_id => $section ) {
49
50 $meta_boxes = array();
51
52 /**
53 * Filter: gamipress_settings_{$section_id}_meta_boxes
54 *
55 * @param array $meta_boxes
56 *
57 * @return array
58 */
59 $meta_boxes = apply_filters( "gamipress_settings_{$section_id}_meta_boxes", $meta_boxes );
60
61 if( ! empty( $meta_boxes ) ) {
62
63 // Loop settings section meta boxes
64 foreach( $meta_boxes as $meta_box_id => $meta_box ) {
65
66 // Check meta box tabs
67 if( isset( $meta_box['tabs'] ) && ! empty( $meta_box['tabs'] ) ) {
68
69 // Loop meta box tabs
70 foreach( $meta_box['tabs'] as $tab_id => $tab ) {
71
72 $tab['id'] = $tab_id;
73
74 $meta_box['tabs'][$tab_id] = $tab;
75
76 }
77
78 }
79
80 // Only add settings meta box if has fields
81 if( isset( $meta_box['fields'] ) && ! empty( $meta_box['fields'] ) ) {
82
83 // Loop meta box fields
84 foreach( $meta_box['fields'] as $field_id => $field ) {
85
86 $field['id'] = $field_id;
87
88 // Support for group fields
89 if( isset( $field['fields'] ) && is_array( $field['fields'] ) ) {
90
91 foreach( $field['fields'] as $group_field_id => $group_field ) {
92
93 $field['fields'][$group_field_id]['id'] = $group_field_id;
94
95 }
96
97 }
98
99 $meta_box['fields'][$field_id] = $field;
100
101 }
102
103 $meta_box['id'] = $meta_box_id;
104
105 $meta_box['display_cb'] = false;
106 $meta_box['admin_menu_hook'] = false;
107 $meta_box['priority'] = 'high'; // Fixes issue with CMB2 2.9.0
108
109 $meta_box['show_on'] = array(
110 'key' => 'options-page',
111 'value' => array( 'gamipress_settings' ),
112 );
113
114 $box = new_cmb2_box( $meta_box );
115
116 $box->object_type( 'options-page' );
117
118 $boxes[] = $box;
119
120 }
121 }
122
123 $tabs[] = array(
124 'id' => $section_id,
125 'title' => ( ( isset( $section['icon'] ) ) ? '<i class="dashicons ' . $section['icon'] . '"></i>' : '' ) . $section['title'],
126 'desc' => '',
127 'boxes' => array_keys( $meta_boxes ),
128 );
129 }
130 }
131
132 }
133
134 $minimum_role = gamipress_get_manager_capability();
135
136 try {
137 // Create the options page
138 new Cmb2_Metatabs_Options( array(
139 'key' => 'gamipress_settings',
140 'class' => 'gamipress-page',
141 'title' => __( 'Settings', 'gamipress' ),
142 'topmenu' => 'gamipress',
143 'cols' => 1,
144 'boxes' => $boxes,
145 'tabs' => $tabs,
146 'menuargs' => array(
147 'menu_title' => __( 'Settings', 'gamipress' ),
148 'capability' => $minimum_role,
149 'view_capability' => $minimum_role,
150 ),
151 'savetxt' => __( 'Save Settings', 'gamipress' ),
152 'resettxt' => __( 'Reset Settings', 'gamipress' ),
153 ) );
154 } catch ( Exception $e ) {
155
156 }
157
158 }
159 add_action( 'cmb2_admin_init', 'gamipress_register_settings_page', 12 );
160
161 /**
162 * GamiPress registered settings sections
163 *
164 * @since 1.0.1
165 *
166 * @return array
167 */
168 function gamipress_get_settings_sections() {
169
170 $gamipress_settings_sections = array(
171 'general' => array(
172 'title' => __( 'General', 'gamipress' ),
173 'icon' => 'dashicons-admin-settings',
174 ),
175 'social' => array(
176 'title' => __( 'Social', 'gamipress' ),
177 'icon' => 'dashicons-share',
178 ),
179 'style' => array(
180 'title' => __( 'Style', 'gamipress' ),
181 'icon' => 'dashicons-admin-appearance',
182 ),
183 'email' => array(
184 'title' => __( 'Emails', 'gamipress' ),
185 'icon' => 'dashicons-email-alt',
186 ),
187 'addons' => array(
188 'title' => __( 'Add-ons', 'gamipress' ),
189 'icon' => 'dashicons-admin-plugins',
190 ),
191 );
192
193 if( is_multisite() ) {
194 $gamipress_settings_sections['network'] = array(
195 'title' => __( 'Network', 'gamipress' ),
196 'icon' => 'dashicons-networking',
197 );
198 }
199
200 return apply_filters( 'gamipress_settings_sections', $gamipress_settings_sections );
201
202 }
203