PluginProbe
Social Share Buttons / 1.4
Social Share Buttons v1.4
trunk 0.9 1.0 1.1 1.1.1 1.1.2 1.10 1.11 1.12 1.15 1.16 1.17 1.18 1.19 1.2 1.20 1.3 1.30 1.4 1.5 1.6 1.7 1.8 1.9
share-button / classes / class-admin.php

class-admin.php in Social Share Buttons 1.4, at classes/class-admin.php

313 lines 7.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace MBSocial;
3 defined('ABSPATH') or die('No direct access permitted');
4
5 // Helper for admin pages / fields / saving etc.
6
7 class admin
8 {
9 protected $fields = array();
10 protected $defined_fields = array();
11 protected $defined_updatable = array();
12 protected static $namespace;
13
14 public function __construct()
15 {
16 self::$namespace = __NAMESPACE__ . '\\'; // PHP 5.3
17
18 }
19
20 // add a maxfield to be displayed on the admin.
21 public function addfield( $field, $start = '', $end = '', $trigger_update = true)
22 {
23 $field_id = isset($field->id) ? $field->id : $field->template . \rand(0,1000);
24 if ($trigger_update)
25 {
26 $this->addUpdate($field); // make updating standard
27 }
28 $field->publish = false; // Output fields via class - never output.
29
30 $this->fields[$field_id] = array('field' => $field,
31 'start' => $start,
32 'end' => $end);
33 $this->fields = apply_filters('mbsocial/editor/addfield', $this->fields, $field);
34
35 $this->defined_fields[] = $field_id;
36
37 }
38
39 public function addUpdate($field)
40 {
41 $field_id = $field->id;
42 if (is_null($field_id) || $field_id == '')
43 return; // no bad names
44
45 if (! isset($this->defined_updatable[$field_id])) // no double sets
46 $this->defined_updatable[] = $field_id;
47 }
48
49
50 public function namespaceit($var)
51 {
52 return self::$namespace . $var;
53 }
54
55 public function display_fields($clean = true, $return = false)
56 {
57 $fields = apply_filters('mbsocial/display_fields', $this->fields);
58 $output = '';
59
60 foreach($fields as $id => $item)
61 {
62 $field = $item['field'];
63 $output .= $field->output($item['start'], $item['end']);
64 }
65
66 // auto-update system
67 $updatable = $this->defined_updatable;
68 foreach($updatable as $index => $field)
69 {
70 $updatable[$index] = '#' . $field;
71 }
72
73 $output .= ' <span class="updatables hidden">' . implode(',', $updatable) . '</span>';
74
75 if ($clean)
76 {
77 $this->fields = array();
78 $this->defined_updatable = array();
79 }
80
81 if (! $return)
82 echo $output;
83 else
84 return $output;
85
86 }
87
88 public function output_defined_fields()
89 {
90 $fields = $this->defined_fields;
91 $fields = implode(',', $fields);
92
93 echo '<input type="hidden" name="defined_fields" value="' . $fields . '">';
94 }
95
96 /** @param $active_networks - Networks that were saved by the users. This should be loaded instead of the default ones **/
97 public function get_default_networks($active_networks = array() )
98 {
99 if (! is_array($active_networks))
100 {
101 $active_networks = array();
102 }
103 $networks = mbSocial()->networks()->get();
104 $selected = array();
105 $unselected = array();
106 $readmore = array();
107
108 // set active networks. Support doubles.
109 foreach($active_networks as $index => $network_name)
110 {
111 $network = mbSocial()->networks()->get($network_name);
112 if (! is_object($network)) // could be removed network.
113 continue;
114 if ($network->get('is_active'))
115 $selected[$index] = $network;
116 }
117
118 foreach($networks as $index => $network)
119 {
120 $priority = $network->get('priority');
121 if (! $network->get('is_active'))
122 { continue; }
123 $is_active = array_search($network->get('network'), $active_networks); // retrieve the array index
124
125 if ($is_active !== false)
126 {
127 $priority = 'selected';
128 }
129
130 if ($priority == 'unselected')
131 $unselected[] = $network;
132 if ($priority == 'readmore')
133 $readmore[] = $network;
134
135
136 if ($network->get('network') == 'maxbutton' && $priority != 'readmore') // exceptions
137 {
138 $readmore[] = $network;
139 }
140
141
142 } // foreach networks
143
144
145 // Sort networks by order saved.
146 ksort($selected);
147 return array('selected' => $selected, 'unselected' => $unselected, 'readmore' => $readmore);
148 }
149
150
151
152 /* Load saved networks, check which ones are selected. Load others as default settings if no save */
153 public function get_networks($active_networks = array() )
154 {
155 $networks_array = $this->get_default_networks($active_networks);
156 return $networks_array;
157 }
158
159 // render icons with input from different icon libraries (/future)
160 public function renderIcon($args)
161 {
162 $defaults = array('icon' => '',
163 'icon_type' => '',
164 'icon_size' => 20,
165 'title' => '',
166 );
167
168 $args = wp_parse_args($args, $defaults);
169
170 $icon_type = $args['icon_type'];
171 $icon = $args['icon'];
172 $icon_size = $args['icon_size'];
173 $title = $args['title'];
174
175 $faUtils = FAUtils::getInstance();
176
177 switch($icon_type)
178 {
179 case 'fa': // FA5
180 case 'fab':
181 case 'fas':
182 case 'far':
183 $args = array('icon' => trim($icon_type) . ' ' . trim($icon), 'title' => $title);
184 if ($icon_size)
185 {
186 $args['size'] = $icon_size;
187 }
188
189 $svg = $faUtils->getFASVG($args);
190 $output = "<span class='mb-icon'>$svg</span>";
191 break;
192 case 'nucleo':
193 $output = "<span class='mb-icon'><i class='$icon_type $icon' title='$title' > </i></span>";
194 break;
195 case 'svg':
196 case 'png':
197 $output = "<span class='mb-icon " . $icon_type . "'><img src='" . $icon . "' alt='" . $title . "'></span>";
198 break;
199
200 default:
201 $output = '';
202 break;
203 }
204
205 return apply_filters('display/render/icon', $output, $args);
206 }
207
208 public function header( $args = array() )
209 {
210 $defaults = array(
211 'title' => '',
212 );
213
214 $args = array_merge($defaults, $args);
215 extract($args);
216
217 include_once( mbSocial()->get_plugin_path() . '/admin/header.php');
218 }
219
220 public function footer()
221 {
222 include_once( mbSocial()->get_plugin_path() . '/admin/footer.php');
223 }
224
225 public function getProMessage()
226 {
227 return __( sprintf('You can only change these settings in the PRO version. Click %shere%s for upgrading to MaxButtons PRO', '
228 <a href="https://maxbuttons.com" target="_blank">', '</a>') );
229 }
230
231
232 public function do_review_notice () {
233
234 $current_user_id = get_current_user_id();
235 $version = MBSOCIAL_VERSION_NUM;
236
237 $review = get_user_meta( $current_user_id, 'mbsocial_review_notice' , true );
238
239 if ($review == '')
240 {
241 //$created = get_option("MBFREE_CREATED");
242 $show = time() + (7* DAY_IN_SECONDS);
243 update_user_meta($current_user_id, 'mbsocial_review_notice', $show);
244 return;
245 }
246
247 $display_review = false;
248
249 if ($review == 'off')
250 { return; // no show
251
252 }
253 elseif (is_numeric($review))
254 {
255 $now = time();
256
257 if ($now > $review)
258 {
259 $display_review = true;
260
261 }
262 }
263
264 // load style / script. It's seperated since it should show everywhere in admin.
265 if ($display_review)
266 {
267 add_action( 'admin_notices', array( $this, 'mbsocial_review_notice'));
268 // registered in admin scripts
269 if (method_exists(MB(), 'load_library'))
270 MB()->load_library('review_notice');
271 }
272
273 }
274
275 public function mbsocial_review_notice()
276 {
277 include_once( mbSocial()->get_plugin_path() . '/admin/review_notice.php');
278 }
279
280 public function save_review_notice()
281 {
282 $status = isset($_POST["status"]) ? sanitize_text_field($_POST["status"]) : '';
283 $current_user_id = get_current_user_id();
284
285 $updated = false;
286
287 if ($status == 'off')
288 {
289 $updated = true;
290 update_user_meta($current_user_id, 'mbsocial_review_notice', 'off');
291
292 }
293 if ($status == 'later')
294 {
295 $updated = true;
296 $later = time() + (14 * DAY_IN_SECONDS );
297
298 update_user_meta($current_user_id, 'mbsocial_review_notice', $later);
299 }
300 if ($status == 'reviewoffer-dismiss') // different ad!
301 {
302 $updated = true;
303 update_user_meta($current_user_id, 'mbsocial_review_notice', 'off');
304
305 }
306
307 echo json_encode(array("updated" => $updated)) ;
308
309 exit();
310 }
311
312 }
313