PluginProbe
Snippet Shortcodes / 3.2
Snippet Shortcodes v3.2
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
← All changes | includes/hooks.php +137 -279 trunk3.2 View file →
@@ -1,279 +1,137 @@
1 -<?php
2 -
3 -defined('ABSPATH') or die('Jog on!');
4 -
5 -/**
6 - * Build admin menu
7 - */
8 -function sh_cd_build_admin_menu() {
9 -
10 - $allowed_viewer = sh_cd_permission_role();
11 -
12 - add_menu_page( SH_CD_PLUGIN_NAME, SH_CD_PLUGIN_NAME, 'manage_options', 'sh-cd-shortcode-variables-main-menu', 'sh_cd_pages_your_shortcodes', 'dashicons-snippet-shortcodes' );
13 -
14 - // Hide duplicated sub menu (wee hack!)
15 - add_submenu_page( 'sh-cd-shortcode-variables-main-menu', '', '', 'manage_options', 'sh-cd-shortcode-variables-main-menu', 'sh_cd_pages_your_shortcodes');
16 -
17 - // Add sub menus
18 - add_submenu_page( 'sh-cd-shortcode-variables-main-menu', __( 'Your Shortcodes', SH_CD_SLUG ), __( 'Your shortcodes', SH_CD_SLUG ), $allowed_viewer, 'sh-cd-shortcode-variables-your-shortcodes', 'sh_cd_pages_your_shortcodes');
19 - add_submenu_page( 'sh-cd-shortcode-variables-main-menu', __( 'Premade Shortcodes', SH_CD_SLUG ), __( 'Premade shortcodes', SH_CD_SLUG ), $allowed_viewer, 'sh-cd-shortcode-variables-sub-premade', 'sh_cd_premade_shortcodes_page');
20 -
21 - add_submenu_page( 'sh-cd-shortcode-variables-main-menu', __( 'Import / Export', SH_CD_SLUG ), __( 'Import / Export', SH_CD_SLUG ), 'manage_options', 'sh-cd-import', 'sh_cd_admin_page_import' );
22 -
23 - if( false === sh_cd_is_premium_plugin_activated() ) {
24 - add_submenu_page( 'sh-cd-shortcode-variables-main-menu', '<i class="fa-solid fa-star"></i> ' . __( 'Upgrade to Premium', SH_CD_SLUG ), '<i class="fa-solid fa-star"></i> ' . __( 'Get Premium', SH_CD_SLUG ), 'manage_options', 'sh-cd-shortcode-variables-upgrade', 'sh_cd_page_upgrade');
25 - }
26 -
27 - do_action( 'sh-cd-admin-menu-upgrade' );
28 -
29 - add_submenu_page( 'sh-cd-shortcode-variables-main-menu', __( 'Settings', SH_CD_SLUG ), __( 'Settings', SH_CD_SLUG ), 'manage_options', 'sh-cd-settings', 'sh_cd_settings_page_generic' );
30 - add_submenu_page( 'sh-cd-shortcode-variables-main-menu', __( 'Help', SH_CD_SLUG ), __( 'Help', SH_CD_SLUG ), 'manage_options', 'sh-cd-help', 'sh_cd_help_page' );
31 -}
32 -add_action( 'admin_menu', 'sh_cd_build_admin_menu' );
33 -
34 -/**
35 - * Enqueue relevant CSS / JS
36 - */
37 -function sh_cd_enqueue_scripts() {
38 -
39 - wp_enqueue_style( 'sh-cd-dashicon', plugins_url( '../assets/css/sh-cd-dashicon.css', __FILE__ ), [], SH_CD_PLUGIN_VERSION );
40 -
41 - // Allow marketing.js on any page so admin's can dismiss admin notices anywhere
42 - wp_enqueue_script( 'sh-cd-marketing', plugins_url( '../assets/js/marketing.js', __FILE__ ), [ 'jquery' ], SH_CD_PLUGIN_VERSION, true );
43 -
44 - if ( ! sh_cd_is_snippet_shortcodes_admin_page() ) {
45 - return;
46 - }
47 -
48 - $main_js_dependencies = [ 'jquery', 'sh-cd-clipboard' ];
49 -
50 - // Tooltips
51 - if ( sh_cd_tooltips_is_enabled() ) {
52 - wp_enqueue_script( 'sh-cd-tooltip', plugins_url( '../assets/zerbratooltips/zebra_tooltips.min.js', __FILE__ ), [ ], SH_CD_PLUGIN_VERSION );
53 - wp_enqueue_style( 'sh-cd-tooltip', plugins_url( '../assets/zerbratooltips/zebra_tooltips.min.css', __FILE__ ), [], SH_CD_PLUGIN_VERSION ) ;
54 -
55 - $main_js_dependencies[] = 'sh-cd-tooltip';
56 - }
57 -
58 - // CSS
59 - wp_enqueue_style( 'sh-cd', plugins_url( '../assets/css/sh-cd.css', __FILE__ ), [ 'sh-cd-dashicon' ], SH_CD_PLUGIN_VERSION );
60 - wp_enqueue_style( 'sh-cd-fontawesome', plugins_url( '../assets/fontawesome/css/fontawesome.min.css', __FILE__ ), [], SH_CD_PLUGIN_VERSION );
61 - wp_enqueue_style( 'sh-cd-fontawesome-solid', plugins_url( '../assets/fontawesome/css/solid.min.css', __FILE__ ), [ 'sh-cd-fontawesome' ], SH_CD_PLUGIN_VERSION );
62 - wp_enqueue_style( 'sh-cd-fontawesome-regular', plugins_url( '../assets/fontawesome/css/regular.min.css', __FILE__ ), [ 'sh-cd-fontawesome' ], SH_CD_PLUGIN_VERSION );
63 - wp_enqueue_style( 'sh-cd-fontawesome-brands', plugins_url( '../assets/fontawesome/css/brands.min.css', __FILE__ ), [ 'sh-cd-fontawesome' ], SH_CD_PLUGIN_VERSION );
64 -
65 - // JS
66 - wp_enqueue_script( 'sh-cd-clipboard', plugins_url( '../assets/js/clipboard.min.js', __FILE__ ), [], SH_CD_PLUGIN_VERSION, true );
67 - wp_enqueue_script( 'sh-cd', plugins_url( '../assets/js/sh-cd.js', __FILE__ ), $main_js_dependencies, SH_CD_PLUGIN_VERSION, true );
68 - wp_localize_script( 'sh-cd', 'sh_cd', sh_cd_js_config() );
69 -
70 -}
71 -add_action( 'admin_enqueue_scripts', 'sh_cd_enqueue_scripts' );
72 -
73 -/**
74 - * Determine if we are on a Snippet Shortcodes admin page
75 - *
76 - * @return bool
77 - */
78 -function sh_cd_is_snippet_shortcodes_admin_page() {
79 -
80 - if ( true === empty( $_GET['page' ] ) ) {
81 - return false;
82 - }
83 -
84 - $known_admin_pages = apply_filters( 'sh-cd-admin-pages', [ 'sh-cd-shortcode-variables-main-menu',
85 - 'sh-cd-shortcode-variables-your-shortcodes',
86 - 'sh-cd-shortcode-variables-sub-premade',
87 - 'sh-cd-import',
88 - 'sh-cd-shortcode-variables-upgrade',
89 - 'sh-cd-settings',
90 - 'sh-cd-help' ] );
91 -
92 - return in_array( $_GET['page'], $known_admin_pages );
93 -}
94 -
95 -/**
96 - * Config for JS
97 - * @return array
98 - */
99 -function sh_cd_js_config() {
100 - return [ 'editor' => sh_cd_default_editor_get(),
101 - 'page' => false === empty( $_GET['page'] ) ? $_GET['page'] : '',
102 - 'action' => false === empty( $_GET['action'] ) ? $_GET['action'] : '',
103 - 'security' => wp_create_nonce( 'sh-cd-security' ),
104 - 'premium' => sh_cd_is_premium(),
105 - 'text-delete-confirm' => __( 'Are you sure you wish to delete this shortcode?', SH_CD_SLUG ),
106 - 'text-add' => __( 'Add', SH_CD_SLUG ),
107 - 'text-save' => __( 'Save', SH_CD_SLUG ),
108 - 'text-saved' => __( 'Saved!', SH_CD_SLUG ),
109 - 'text-editor-change' => __( 'Changing the editor will cause any unsaved changes to be lost. Please ensure you have saved your shortcode before proceeding.', SH_CD_SLUG ),
110 - 'text-error' => __( 'Unfortunately something went wrong!', SH_CD_SLUG ),
111 - 'tooltips-enabled' => sh_cd_tooltips_is_enabled() ? 'yes' : 'no',
112 - ];
113 -}
114 -
115 -/**
116 - * Run installer on each version number change or install
117 - */
118 -function sh_cd_upgrade() {
119 -
120 - if ( true === update_option( 'sh-cd-version-number-2021', SH_CD_PLUGIN_VERSION ) ) {
121 -
122 - sh_cd_create_database_table();
123 -
124 - sh_cd_create_database_table_multisite();
125 -
126 - sh_cd_create_database_table_revisions();
127 -
128 - do_action( 'sh-cd-upgrade' );
129 - }
130 -}
131 -add_action('admin_init', 'sh_cd_upgrade');
132 -
133 -
134 -/**
135 - Ajax handler for toggling disable status of a shortcode
136 - **/
137 -function sh_cd_ajax_toggle_status() {
138 -
139 - if ( false === sh_cd_is_premium() ) {
140 - wp_send_json( 'not-premium' );
141 - }
142 -
143 - check_ajax_referer( 'sh-cd-security', 'security' );
144 -
145 - sh_cd_permission_check();
146 -
147 - $id = ( false === empty( $_POST['id'] ) ) ? (int) $_POST['id'] : NULL;
148 -
149 - if ( false === empty( $id ) ) {
150 -
151 - $new_status = sh_cd_toggle_status( $id );
152 -
153 - wp_send_json( [ 'id' => $id, 'status' => $new_status, 'ok' => 1 ] );
154 - }
155 -
156 - wp_send_json( 'shortcode-not-found' );
157 -}
158 -add_action( 'wp_ajax_toggle_status', 'sh_cd_ajax_toggle_status' );
159 -
160 -/**
161 -Ajax handler for deleting a shortcode
162 - **/
163 -function sh_cd_ajax_delete_shortcode() {
164 -
165 - check_ajax_referer( 'sh-cd-security', 'security' );
166 -
167 - sh_cd_permission_check();
168 -
169 - $id = ( false === empty( $_POST['id'] ) ) ? (int) $_POST['id'] : NULL;
170 -
171 - if ( false === empty( $id ) ) {
172 -
173 - $result = sh_cd_db_shortcodes_delete( $id );
174 -
175 - wp_send_json( [ 'id' => $id, 'ok' => $result ] );
176 - }
177 -
178 - wp_send_json( 'shortcode-not-found' );
179 -}
180 -add_action( 'wp_ajax_delete_shortcode', 'sh_cd_ajax_delete_shortcode' );
181 -
182 -/**
183 -Ajax handler for toggling disable status of a shortcode
184 - **/
185 -function sh_cd_ajax_toggle_multisite() {
186 -
187 - if ( false === sh_cd_is_multisite_enabled() ) {
188 - wp_send_json( 'not-premium' );
189 - }
190 -
191 - check_ajax_referer( 'sh-cd-security', 'security' );
192 -
193 - sh_cd_permission_check();
194 -
195 - $id = ( false === empty( $_POST['id'] ) ) ? (int) $_POST['id'] : NULL;
196 -
197 - if ( false === empty( $id ) ) {
198 -
199 - $new_multisite = sh_cd_toggle_multisite( $id );
200 -
201 - wp_send_json( [ 'id' => $id, 'multisite' => $new_multisite, 'ok' => 1 ] );
202 - }
203 -
204 - wp_send_json( 'shortcode-not-found' );
205 -}
206 -add_action( 'wp_ajax_toggle_multisite', 'sh_cd_ajax_toggle_multisite' );
207 -
208 -/**
209 -Ajax handler for saving shortcode inline
210 - **/
211 -function sh_cd_ajax_update_shortcode() {
212 -
213 - if ( false === sh_cd_is_premium() ) {
214 - wp_send_json( 'not-premium' );
215 - }
216 -
217 - check_ajax_referer( 'sh-cd-security', 'security' );
218 -
219 - sh_cd_permission_check();
220 -
221 - $id = ( false === empty( $_POST['id'] ) ) ? (int) $_POST['id'] : NULL;
222 - $content = ( false === empty( $_POST['content'] ) ) ? $_POST['content'] : '';
223 -
224 - if ( false === empty( $id ) ) {
225 -
226 - $result = sh_cd_db_shortcodes_update_content( $id, $content );
227 -
228 - wp_send_json( [ 'id' => $id, 'ok' => ( true === $result ) ? 1 : 0 ] );
229 - }
230 -
231 - wp_send_json( 'shortcode-not-found' );
232 -}
233 -add_action( 'wp_ajax_update_shortcode', 'sh_cd_ajax_update_shortcode' );
234 -
235 -/**
236 -Ajax handler for adding shortcode inline
237 - **/
238 -function sh_cd_ajax_add_shortcode() {
239 -
240 - if ( false === sh_cd_is_premium() ) {
241 - wp_send_json( 'not-premium' );
242 - }
243 -
244 - check_ajax_referer( 'sh-cd-security', 'security' );
245 -
246 - sh_cd_permission_check();
247 -
248 - if( true === empty( $_POST['slug'] ) ) {
249 - wp_send_json( [ 'id' => 0, 'ok' => 0, 'error_message' => __( 'Error: Please specify a "Slug".', SH_CD_SLUG ) ] );
250 - }
251 -
252 - if( true === empty( $_POST['content'] ) ) {
253 - wp_send_json( [ 'id' => 0, 'ok' => 0, 'error_message' => __( 'Error: Please add something for "Content".', SH_CD_SLUG ) ] );
254 - }
255 -
256 - $shortcode = [ 'slug' => $_POST['slug'],
257 - 'previous_slug' => '',
258 - 'data' => $_POST['content'],
259 - 'disabled' => ! sh_cd_to_bool( $_POST[ 'enabled' ] ),
260 - 'multisite' => sh_cd_to_bool( $_POST[ 'multisite' ] )
261 - ];
262 -
263 - $result = sh_cd_db_shortcodes_save( $shortcode, true );
264 -
265 - wp_send_json( [ 'shortcode' => $result, 'ok' => ( false !== $result ), 'error_message' => __( 'Error: There was an error when saving your shortcode.', SH_CD_SLUG ) ] );
266 -
267 -}
268 -add_action( 'wp_ajax_add_shortcode', 'sh_cd_ajax_add_shortcode' );
269 -
270 -/**
271 - * Replace shortcodes within menu titles.
272 - *
273 - * @param $title
274 - * @return mixed
275 - */
276 -function sh_cd_menu_replace_shortcodes( $title ) {
277 - return do_shortcode( $title );
278 -}
279 -add_filter('nav_menu_item_title', 'sh_cd_menu_replace_shortcodes', 10, 1);
1 +<?php
2 +
3 +defined('ABSPATH') or die('Jog on!');
4 +
5 +/**
6 + * Build admin menu
7 + */
8 +function sh_cd_build_admin_menu() {
9 +
10 + add_menu_page( SH_CD_PLUGIN_NAME, SH_CD_PLUGIN_NAME, 'manage_options', 'sh-cd-shortcode-variables-main-menu', 'sh_cd_pages_your_shortcodes', 'dashicons-editor-kitchensink' );
11 +
12 + // Hide duplicated sub menu (wee hack!)
13 + add_submenu_page( 'sh-cd-shortcode-variables-main-menu', '', '', 'manage_options', 'sh-cd-shortcode-variables-main-menu', 'sh_cd_pages_your_shortcodes');
14 +
15 + // Add sub menus
16 + add_submenu_page( 'sh-cd-shortcode-variables-main-menu', __( 'Your Shortcodes', SH_CD_SLUG ), __( 'Your shortcodes', SH_CD_SLUG ), 'manage_options', 'sh-cd-shortcode-variables-your-shortcodes', 'sh_cd_pages_your_shortcodes');
17 + add_submenu_page( 'sh-cd-shortcode-variables-main-menu', __( 'Premade Shortcodes', SH_CD_SLUG ), __( 'Premade shortcodes', SH_CD_SLUG ), 'manage_options', 'sh-cd-shortcode-variables-sub-premade', 'sh_cd_premade_shortcodes_page');
18 +
19 + $menu_text = ( true === sh_cd_license_is_premium() ) ? __( 'Your License', SH_CD_SLUG ) : __( 'Upgrade to Premium', SH_CD_SLUG );
20 +
21 + add_submenu_page( 'sh-cd-shortcode-variables-main-menu', $menu_text, $menu_text, 'manage_options', 'sh-cd-shortcode-variables-license', 'sh_cd_advertise_pro');
22 +}
23 +add_action( 'admin_menu', 'sh_cd_build_admin_menu' );
24 +
25 +/**
26 + * Enqueue relevant CSS / JS
27 + */
28 +function sh_cd_enqueue_scripts() {
29 + wp_enqueue_style( 'sh-cd', plugins_url( '../assets/css/sh-cd.css', __FILE__ ), [], SH_CD_PLUGIN_VERSION ) ;
30 + wp_enqueue_style('fontawesome', 'https://use.fontawesome.com/releases/v5.7.2/css/all.css', [], SH_CD_PLUGIN_VERSION);
31 + wp_enqueue_script( 'sh-cd', plugins_url( '../assets/js/sh-cd.js', __FILE__ ), [ 'jquery' ], SH_CD_PLUGIN_VERSION);
32 +
33 + wp_localize_script( 'sh-cd', 'sh_cd', [ 'security' => wp_create_nonce( 'sh-cd-security' ), 'premium' => sh_cd_license_is_premium() ] );
34 +
35 +}
36 +add_action( 'admin_enqueue_scripts', 'sh_cd_enqueue_scripts' );
37 +
38 +/**
39 + * Run installer on each version number change or install
40 + */
41 +function sh_cd_upgrade() {
42 +
43 + if ( true === update_option( 'sh-cd-version-number-2020', SH_CD_PLUGIN_VERSION ) ) {
44 +
45 + sh_cd_create_database_table();
46 +
47 + sh_cd_create_database_table_multisite();
48 +
49 + do_action( 'sh-cd-upgrade' );
50 + }
51 +}
52 +add_action('admin_init', 'sh_cd_upgrade');
53 +
54 +
55 +/**
56 + Ajax handler for toggling disable status of a shortcode
57 + **/
58 +function sh_cd_ajax_toggle_status() {
59 +
60 + if ( false === sh_cd_license_is_premium() ) {
61 + wp_send_json( 'not-premium' );
62 + }
63 +
64 + check_ajax_referer( 'sh-cd-security', 'security' );
65 +
66 + $id = ( false === empty( $_POST['id'] ) ) ? (int) $_POST['id'] : NULL;
67 +
68 + if ( false === empty( $id ) ) {
69 +
70 + $new_status = sh_cd_toggle_status( $id );
71 +
72 + wp_send_json( [ 'id' => $id, 'status' => $new_status, 'ok' => 1 ] );
73 + }
74 +
75 + wp_send_json( 'shortcode-not-found' );
76 +}
77 +add_action( 'wp_ajax_toggle_status', 'sh_cd_ajax_toggle_status' );
78 +
79 +/**
80 +Ajax handler for toggling disable status of a shortcode
81 + **/
82 +function sh_cd_ajax_toggle_multisite() {
83 +
84 + if ( false === sh_cd_license_is_premium() ) {
85 + wp_send_json( 'not-premium' );
86 + }
87 +
88 + check_ajax_referer( 'sh-cd-security', 'security' );
89 +
90 + $id = ( false === empty( $_POST['id'] ) ) ? (int) $_POST['id'] : NULL;
91 +
92 + if ( false === empty( $id ) ) {
93 +
94 + $new_multisite = sh_cd_toggle_multisite( $id );
95 +
96 + wp_send_json( [ 'id' => $id, 'multisite' => $new_multisite, 'ok' => 1 ] );
97 + }
98 +
99 + wp_send_json( 'shortcode-not-found' );
100 +}
101 +add_action( 'wp_ajax_toggle_multisite', 'sh_cd_ajax_toggle_multisite' );
102 +
103 +/**
104 +Ajax handler for saving shortcode inline
105 + **/
106 +function sh_cd_ajax_update_shortcode() {
107 +
108 + if ( false === sh_cd_license_is_premium() ) {
109 + wp_send_json( 'not-premium' );
110 + }
111 +
112 + check_ajax_referer( 'sh-cd-security', 'security' );
113 +
114 + $id = ( false === empty( $_POST['id'] ) ) ? (int) $_POST['id'] : NULL;
115 + $content = ( false === empty( $_POST['content'] ) ) ? $_POST['content'] : '';
116 +
117 + if ( false === empty( $id ) ) {
118 +
119 + $result = sh_cd_db_shortcodes_update_content( $id, $content );
120 +
121 + wp_send_json( [ 'id' => $id, 'ok' => ( true === $result ) ? 1 : 0 ] );
122 + }
123 +
124 + wp_send_json( 'shortcode-not-found' );
125 +}
126 +add_action( 'wp_ajax_update_shortcode', 'sh_cd_ajax_update_shortcode' );
127 +
128 +/**
129 + * Replace shortcodes within menu titles.
130 + *
131 + * @param $title
132 + * @return mixed
133 + */
134 +function sh_cd_menu_replace_shortcodes( $title ) {
135 + return do_shortcode( $title );
136 +}
137 +add_filter('nav_menu_item_title', 'sh_cd_menu_replace_shortcodes', 10, 1);