PluginProbe
Snippet Shortcodes / 1.6
Snippet Shortcodes v1.6
5.2.1 5.2 5.1.8 5.1.6 5.1.7 5.1.5 trunk 1.0 1.1 1.2 1.3 1.3.1 1.4 1.5 1.5.1 1.6 1.6.1 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.8 2.0 2.0.1 All 74 releases
shortcode-variables / includes / functions.php

functions.php in Snippet Shortcodes 1.6, at includes/functions.php

345 lines 7.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 defined('ABSPATH') or die('Jog on!');
4
5 function sh_cd_get_user_defined_arguments($default, $specified) {
6
7 $user_defined = [];
8
9 if(is_array($default) && !empty($default) && is_array($specified) && !empty($specified)) {
10
11 foreach ($specified as $key => $value) {
12 if(!isset($default[$key])) {
13 $user_defined[$key] = $value;
14 }
15 }
16
17 }
18
19 return (is_array($user_defined) && !empty($user_defined)) ? $user_defined : false;
20 }
21
22 function sh_cd_apply_user_defined_parameters($shortcode, $user_defined_parameters){
23
24 if(!empty($shortcode) && is_array($user_defined_parameters) && !empty($user_defined_parameters)) {
25
26 foreach ($user_defined_parameters as $key => $value) {
27 $shortcode = str_replace('%%' . $key . '%%', $value, $shortcode);
28 }
29 }
30
31 return $shortcode;
32 }
33
34 function sh_cd_get_all_shortcodes()
35 {
36 global $wpdb;
37
38 $sql = 'SELECT * FROM ' . $wpdb->prefix . SH_CD_TABLE . ' order by slug asc';
39
40 $rows = $wpdb->get_results( $sql );
41
42 if (!is_null($rows))
43 return $rows;
44
45 return false;
46
47 }
48
49 function sh_cd_get_shortcode($id)
50 {
51 if (!is_admin())
52 return false;
53
54 global $wpdb;
55
56 $sql = $wpdb->prepare('SELECT slug, data FROM ' . $wpdb->prefix . SH_CD_TABLE . ' where id = %d', $id);
57
58 $row = $wpdb->get_row( $sql );
59
60 if (!is_null($row))
61 return $row;
62
63 return false;
64
65 }
66 function sh_cd_get_shortcode_by_slug($slug)
67 {
68 global $wpdb;
69
70 $sql = $wpdb->prepare('SELECT data FROM ' . $wpdb->prefix . SH_CD_TABLE . ' where slug = %s', $slug);
71
72 $row = $wpdb->get_var( $sql );
73
74 if (!is_null($row))
75 return stripslashes($row);
76
77 return false;
78
79 }
80 function sh_cd_get_slug_by_id($id)
81 {
82 global $wpdb;
83
84 $sql = $wpdb->prepare('SELECT slug FROM ' . $wpdb->prefix . SH_CD_TABLE . ' where id = %d', $id);
85
86 $row = $wpdb->get_var( $sql );
87
88 if (!is_null($row))
89 return $row;
90
91 return false;
92
93 }
94
95 function sh_cd_save_shortcode($slug, $data, $id = false)
96 {
97 if (!is_admin())
98 return false;
99
100 if (false == $id && empty($slug))
101 return false;
102
103 global $wpdb;
104
105 $slug = sh_cd_get_slug($slug);
106
107 $result = false;
108
109 if ($id)
110 {
111 //Update data (Slug can never be updated!)
112 $result = $wpdb->update(
113 $wpdb->prefix . SH_CD_TABLE,
114 array(
115 'data' => $data
116 ),
117 array( 'id' => $id),
118 array(
119 '%s'
120 ),
121 array( '%d' )
122 );
123
124 sh_cd_delete_cache(sh_cd_get_slug_by_id($id));
125 }
126 else
127 {
128 $result = $wpdb->insert(
129 $wpdb->prefix . SH_CD_TABLE,
130 array(
131 'slug' => $slug,
132 'data' => $data
133 ),
134 array(
135 '%s',
136 '%s'
137 )
138 );
139
140 sh_cd_delete_cache($slug);
141 }
142
143 if (false === $result) {
144 return false;
145 }
146 else
147 {
148 return true;
149 }
150
151 }
152
153 function sh_cd_delete_shortcode($id)
154 {
155 if (!is_admin() || !is_numeric($id))
156 return false;
157
158 global $wpdb;
159
160 // Clear cached version
161 sh_cd_delete_cache(sh_cd_get_slug_by_id($id));
162
163 if (false === $wpdb->delete( $wpdb->prefix . SH_CD_TABLE, array( 'id' => $id ) )) {
164 return false;
165 }
166 else {
167 return true;
168 }
169
170 }
171
172 function sh_cd_get_slug($text)
173 {
174 if(!empty($text))
175 {
176 $text = sanitize_title($text);
177
178 $original_slug = $text;
179
180 $try = 1;
181
182 // If slug exists, then fetch a unique one!
183 // v1.1: and ensure slug isn't a preset
184 while (!sh_cd_is_slug_unique($text))
185 {
186 $text = $original_slug . '_' . $try;
187
188 $try++;
189 }
190 }
191
192 return $text;
193 }
194
195 function sh_cd_is_slug_unique($slug)
196 {
197 if (!is_admin() || empty($slug))
198 return false;
199
200 // 1.1 Ensure slug is not a prefix
201 if (sh_cd_is_shortcode_preset($slug))
202 return false;
203
204 global $wpdb;
205
206 $sql = $wpdb->prepare('SELECT count(slug) FROM ' . $wpdb->prefix . SH_CD_TABLE . ' where slug = %s', $slug);
207
208 $row = $wpdb->get_var( $sql );
209
210 if(0 == $row)
211 {
212 return true;
213 }
214 else
215 {
216 return false;
217 }
218
219
220 }
221
222 function sh_cd_create_database_table()
223 {
224 global $wpdb;
225
226 $table_name = $wpdb->prefix . SH_CD_TABLE;
227
228 $charset_collate = $wpdb->get_charset_collate();
229
230 $sql = "CREATE TABLE $table_name (
231 id mediumint(9) NOT NULL AUTO_INCREMENT,
232 slug varchar(100) NOT NULL,
233 data text,
234 UNIQUE KEY id (id)
235 ) $charset_collate;";
236
237 $wpdb->query($sql);
238
239 update_option('sh-cd-version', SH_CD_PLUGIN_VERSION);
240
241 }
242
243 function sh_cd_display_message($text, $error = false)
244 {
245 if (!empty($text))
246 {
247 $class = (($error) ? 'error' : 'updated');
248
249 echo '<div class="' . $class . '">
250 <p>' . $text . '</p>
251 </div>';
252 }
253 }
254
255 function sh_cd_create_dialog_jquery_code($title, $message, $class_used_to_prompt_confirmation, $js_call = false)
256 {
257 global $wp_scripts;
258 $queryui = $wp_scripts->query('jquery-ui-core');
259 $url = "//ajax.googleapis.com/ajax/libs/jqueryui/".$queryui->ver."/themes/smoothness/jquery-ui.css";
260 wp_enqueue_script( 'jquery-ui-dialog' );
261 wp_enqueue_style('jquery-ui-smoothness', $url, false, null);
262
263 $id_hash = md5($title . $message . $class_used_to_prompt_confirmation);
264
265 ?>
266 <div id='<?php echo $id_hash; ?>' title='<?php echo $title; ?>'>
267 <p><?php echo $message; ?></p>
268 </div>
269 <script>
270 jQuery(function($) {
271
272 var $info = $('#<?php echo $id_hash; ?>');
273
274 $info.dialog({
275 'dialogClass' : 'wp-dialog',
276 'modal' : true,
277 'autoOpen' : false
278 });
279
280 $('.<?php echo $class_used_to_prompt_confirmation; ?>').click(function(event) {
281
282 event.preventDefault();
283
284 target_url = $(this).attr('href');
285
286 var $info = $('#<?php echo $id_hash; ?>');
287
288 $info.dialog({
289 'dialogClass' : 'wp-dialog',
290 'modal' : true,
291 'autoOpen' : false,
292 'closeOnEscape' : true,
293 'buttons' : {
294 'Yes': function() {
295
296 <?php if ($js_call != false): ?>
297 <?php echo $js_call; ?>
298
299 $(this).dialog('close');
300 <?php else: ?>
301 window.location.href = target_url;
302 <?php endif; ?>
303 },
304 'No': function() {
305 $(this).dialog('close');
306 }
307 }
308 });
309
310 $info.dialog('open');
311 });
312
313 });
314
315
316
317
318 </script>
319
320 <?php
321 }
322
323 function sh_cd_get_cache($key)
324 {
325 $key = sh_cd_generate_cache_key($key);
326
327 return get_transient($key);
328 }
329 function sh_cd_set_cache($key, $data)
330 {
331 $key = sh_cd_generate_cache_key($key);
332
333 set_transient($key, $data, SH_CD_CACHING_TIME);
334 }
335 function sh_cd_delete_cache($key)
336 {
337 $key = sh_cd_generate_cache_key($key);
338
339 return delete_transient($key);
340 }
341 function sh_cd_generate_cache_key($key)
342 {
343 return SH_CD_SHORTCODE . $key;
344 }
345