PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.8.2
Admin and Site Enhancements (ASE) v7.8.2
9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / settings.php
admin-site-enhancements Last commit date
assets 1 year ago classes 1 year ago includes 1 year ago languages 1 year ago vendor 1 year ago CHANGELOG.md 1 year ago LICENSE.md 1 year ago README.md 1 year ago admin-site-enhancements.php 1 year ago bootstrap.php 1 year ago functions.php 1 year ago settings.php 1 year ago
settings.php
1168 lines
1 <?php
2
3 /**
4 * Initialize options. [TODO] Move this into activation class at v7.
5 *
6 * @since 6.4.1
7 */
8 if ( false === get_option( ASENHA_SLUG_U ) ) {
9 add_option( ASENHA_SLUG_U, array(), true );
10 }
11 if ( false === get_option( ASENHA_SLUG_U . '_stats' ) ) {
12 add_option( ASENHA_SLUG_U . '_stats', array(), false );
13 }
14 if ( false === get_option( ASENHA_SLUG_U . '_extra' ) ) {
15 add_option( ASENHA_SLUG_U . '_extra', array(), true );
16 }
17 // Bugfix in v7.1.2 for Custom Content Type module
18 $options_extra = get_option( ASENHA_SLUG_U . '_extra', array() );
19 if ( !isset( $options_extra['cfgroup_next_field_id'] ) ) {
20 $options_extra['cfgroup_next_field_id'] = 1;
21 update_option( ASENHA_SLUG_U . '_extra', $options_extra, true );
22 }
23 /**
24 * Register admin menu
25 *
26 * @since 1.0.0
27 */
28 function asenha_register_admin_menu() {
29 add_submenu_page(
30 'tools.php',
31 // Parent page/menu
32 'Admin and Site Enhancements',
33 // Browser tab/window title
34 __( 'Enhancements', 'admin-site-enhancements' ),
35 // Sube menu title
36 'manage_options',
37 // Minimal user capabililty
38 ASENHA_SLUG,
39 // Page slug. Shows up in URL.
40 'asenha_add_settings_page'
41 );
42 }
43
44 /**
45 * Create the settings page of the plugin
46 *
47 * @since 1.0.0
48 */
49 function asenha_add_settings_page() {
50 ?>
51 <div class="wrap asenha">
52
53 <div id="asenha-header" class="asenha-header">
54 <div class="asenha-header-left">
55 <img src="<?php
56 echo esc_html( ASENHA_URL ) . 'assets/img/ase_icon.png';
57 ?>" class="asenha-icon"/>
58 <h1 class="asenha-heading">
59 <?php
60 echo esc_html( get_admin_page_title() );
61 ?>
62 (ASE)
63 <?php
64 ?>
65 </h1>
66 <!-- <a href="https://wordpress.org/plugins/admin-site-enhancements/" target="_blank" class="asenha-header-action"><span>&#8505;</span> <?php
67 // esc_html_e( 'Info', 'admin-site-enhancements' );
68 ?></a> -->
69 </div>
70 <div class="asenha-header-right">
71 <?php
72 // https://icon-sets.iconify.design/iconamoon/star-bold/
73 $svg_star = '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="2.5" d="m12 2l3.104 6.728l7.358.873l-5.44 5.03l1.444 7.268L12 18.28L5.534 21.9l1.444-7.268L1.538 9.6l7.359-.873L12 2Z"/></svg>';
74 // https://icon-sets.iconify.design/octicon/question-16/
75 $svg_support = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="currentColor" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13a6.5 6.5 0 0 0 0-13ZM6.92 6.085h.001a.749.749 0 1 1-1.342-.67c.169-.339.436-.701.849-.977C6.845 4.16 7.369 4 8 4a2.756 2.756 0 0 1 1.637.525c.503.377.863.965.863 1.725c0 .448-.115.83-.329 1.15c-.205.307-.47.513-.692.662c-.109.072-.22.138-.313.195l-.006.004a6.24 6.24 0 0 0-.26.16a.952.952 0 0 0-.276.245a.75.75 0 0 1-1.248-.832c.184-.264.42-.489.692-.661c.103-.067.207-.132.313-.195l.007-.004c.1-.061.182-.11.258-.161a.969.969 0 0 0 .277-.245C8.96 6.514 9 6.427 9 6.25a.612.612 0 0 0-.262-.525A1.27 1.27 0 0 0 8 5.5c-.369 0-.595.09-.74.187a1.01 1.01 0 0 0-.34.398ZM9 11a1 1 0 1 1-2 0a1 1 0 0 1 2 0Z"/></svg>';
76 // https://icon-sets.iconify.design/octicon/comment-16/
77 $svg_feedback = '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16"><path fill="currentColor" d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/></svg>';
78 // https://icon-sets.iconify.design/ic/baseline-translate/
79 $svg_translate = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" d="m12.87 15.07l-2.54-2.51l.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35C8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5l3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7l1.62-4.33L19.12 17z"/></svg>';
80 // https://icon-sets.iconify.design/iconamoon/file-document/
81 $svg_docs = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="2"><path stroke-linecap="round" d="M7 21a2 2 0 0 1-2-2V3h9l5 5v11a2 2 0 0 1-2 2H7Z"/><path d="M13 3v6h6"/><path stroke-linecap="round" d="M9 13h6m-6 4h6"/></g></svg>';
82 // https://icon-sets.iconify.design/pajamas/heart/
83 $svg_sponsor = '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M8.753 2.247L8 3l-.753-.753A4.243 4.243 0 0 0 1.25 8.25l5.69 5.69L8 15l1.06-1.06l5.69-5.69a4.243 4.243 0 0 0-5.997-6.003ZM8 12.879l5.69-5.69a2.743 2.743 0 0 0-3.877-3.881l-.752.753L8 5.12L6.94 4.06l-.753-.752v-.001A2.743 2.743 0 0 0 2.31 7.189L8 12.88Z" clip-rule="evenodd"/></svg>';
84 ?>
85 <a href="https://wordpress.org/plugins/admin-site-enhancements/#reviews" target="_blank" class="asenha-header-action review"><?php
86 echo wp_kses( $svg_star, get_kses_with_svg_ruleset() ) . esc_html__( 'Review', 'admin-site-enhancements' );
87 ?></a>
88 <a href="https://wordpress.org/support/plugin/admin-site-enhancements/" target="_blank" class="asenha-header-action feedback"><?php
89 echo wp_kses( $svg_feedback, get_kses_with_svg_ruleset() ) . esc_html__( 'Feedback', 'admin-site-enhancements' );
90 ?></a>
91 <a href="https://www.wpase.com/trnslt-plgnhdr" target="_blank" class="asenha-header-action translate"><?php
92 echo wp_kses( $svg_translate, get_kses_with_svg_ruleset() ) . esc_html__( 'Translate', 'admin-site-enhancements' );
93 ?></a>
94 <!--<a href="https://www.wpasenha.com/docs/" target="_blank" class="asenha-header-action docs"><?php
95 // echo $svg_docs . esc_html__( 'Docs', 'admin-site-enhancements' );
96 ?></a>-->
97 <!--<a id="plugin-sponsor" href="#" class="asenha-header-action sponsor"><?php
98 // echo $svg_sponsor . esc_html__( 'Sponsor', 'admin-site-enhancements' );
99 ?></a>-->
100 <a href="https://www.wpase.com/upgrade-btn" target="_blank" id="plugin-upgrade" class="button button-primary plugin-upgrade"><?php
101 echo esc_html__( 'Get ASE Pro', 'admin-site-enhancements' );
102 ?></a>
103 <?php
104 ?>
105 <a class="button button-primary asenha-save-button"><?php
106 echo esc_html__( 'Save Changes', 'admin-site-enhancements' );
107 ?></a>
108 <!-- https://icon-sets.iconify.design/svg-spinners/180-ring-with-bg/ -->
109 <div class="asenha-saving-changes" style="display:none;"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#2271b1" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z" opacity=".25"/><path fill="#2271b1" d="M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"><animateTransform attributeName="transform" dur="0.75s" repeatCount="indefinite" type="rotate" values="0 12 12;360 12 12"/></path></svg></div>
110 <div class="asenha-changes-saved" style="display:none;"><svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24"><path fill="seagreen" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2zM9.29 16.29L5.7 12.7a.996.996 0 1 1 1.41-1.41L10 14.17l6.88-6.88a.996.996 0 1 1 1.41 1.41l-7.59 7.59a.996.996 0 0 1-1.41 0z"/></svg></div>
111 </div>
112 </div>
113
114 <div class="asenha-body">
115 <?php
116 $current_month = intval( date( 'n', time() ) );
117 // n is for numeric value of month, 1 to 12
118 if ( $current_month >= 10 ) {
119 $is_yearend_promo_period = true;
120 } else {
121 $is_yearend_promo_period = false;
122 }
123 ?>
124 <?php
125 if ( $is_yearend_promo_period ) {
126 ?>
127 <!-- <div class="asenha-upgrade-nudge" style="display: none;">
128 <div class="asenha-upgrade-nudge__message"><?php
129 // echo esc_html__( 'Lifetime Deal (LTD) is available for the Pro version of ASE.', 'admin-site-enhancements' );
130 ?></div>
131 <a href="https://www.wpase.com/upgrade-ndg" class="button asenha-upgrade-nudge__button" target="_blank"><?php
132 // echo esc_html__( 'Find Out More', 'admin-site-enhancements' );
133 ?></a>
134 <a href="#" id="dismiss-upgrade-nudge" class="asenha-upgrade-nudge__dismiss">
135 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"><path fill="currentColor" d="M24 2.4L21.6 0L12 9.6L2.4 0L0 2.4L9.6 12L0 21.6L2.4 24l9.6-9.6l9.6 9.6l2.4-2.4l-9.6-9.6z"/></svg>
136 </a>
137 </div> -->
138 <div class="asenha-promo-nudge" style="display: none;">
139 <div class="asenha-promo-nudge__message"><?php
140 echo esc_html__( 'ASE Pro YEAR-END SALE! 20% DISCOUNT. Lifetime Deal (LTD) available.', 'admin-site-enhancements' );
141 ?></div>
142 <a href="https://www.wpase.com/promo-ndg" class="button asenha-promo-nudge__button" target="_blank"><?php
143 echo esc_html__( 'Get It Now', 'admin-site-enhancements' );
144 ?></a>
145 <a href="#" id="dismiss-promo-nudge" class="asenha-promo-nudge__dismiss">
146 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"><path fill="currentColor" d="M24 2.4L21.6 0L12 9.6L2.4 0L0 2.4L9.6 12L0 21.6L2.4 24l9.6-9.6l9.6 9.6l2.4-2.4l-9.6-9.6z"/></svg>
147 </a>
148 </div>
149 <?php
150 }
151 ?>
152 <?php
153 ?>
154 <div class="asenha-support-nudge nudge-show-more is-enabled" style="display: none;">
155 <h3><?php
156 _e( 'Looks like some of these free enhancements have been useful for your site?', 'admin-site-enhancements' );
157 ?></h3>
158 <p class="nudge-description intro"><?php
159 _e( 'Please consider supporting ASE.', 'admin-site-enhancements' );
160 ?></p>
161 <div class="nudge-content">
162 <div class="nudge-primary">
163 <h4><?php
164 _e( 'Write a quick, 5-star review for ASE', 'admin-site-enhancements' );
165 ?></h4>
166 <div class="nudge-ctas">
167 <a href="https://wordpress.org/plugins/admin-site-enhancements/#reviews" target="_blank" class="button button-outline asenha-review-button"><?php
168 _e( 'Add Your Review', 'admin-site-enhancements' );
169 ?></a>
170 <a href="#" id="have-reviewed" class="asenha-have-supported"><?php
171 _e( 'I\'ve reviewed', 'admin-site-enhancements' );
172 ?></a>
173 </div>
174 <p class="nudge-description"><?php
175 _e( 'Or, help improve ASE by <a href="https://wordpress.org/support/plugin/admin-site-enhancements/" target="_blank">providing feedback</a>.', 'admin-site-enhancements' );
176 ?></p>
177 </div>
178 <div class="nudge-secondary">
179 <h4><?php
180 _e( 'Share about ASE on:', 'admin-site-enhancements' );
181 ?></h4>
182 <div class="nudge-ctas">
183 <a href="https://www.facebook.com/sharer.php?u=<?php
184 echo urlencode( 'https://www.wpase.com' );
185 ?>" target="_blank" class="button button-outline asenha-share-button"><?php
186 _e( 'Facebook', 'admin-site-enhancements' );
187 ?></a>
188 <a href="https://twitter.com/intent/post?url=<?php
189 echo urlencode( 'https://www.wpase.com' );
190 ?>&text=<?php
191 echo esc_attr( urlencode( 'Admin and Site Enhancements (ASE)' ) );
192 ?>" target="_blank" class="button button-outline asenha-share-button"><?php
193 _e( 'X / Twitter', 'admin-site-enhancements' );
194 ?></a>
195 <a href="https://www.wpase.com/video-reviews/" target="_blank" class="button button-outline asenha-share-button"><?php
196 _e( 'YouTube', 'admin-site-enhancements' );
197 ?></a>
198 <a href="#" id="have-shared" class="asenha-have-supported"><?php
199 _e( 'I\'ve shared', 'admin-site-enhancements' );
200 ?></a>
201 </div>
202 <div class="nudge-info">
203 <p class="nudge-description"><?php
204 _e( 'Help others discover ASE and maybe <a href="https://www.wpase.com/trnslt-plgnndg" target="_blank">translate</a> to your language.', 'admin-site-enhancements' );
205 ?></p>
206 </div>
207 </div>
208 </div>
209 <div class="dismiss-support-nudge"><a href="#" id="support-nudge-dismiss" class="asenha-support-nudge-dismiss"><?php
210 _e( 'Dismiss', 'admin-site-enhancements' );
211 ?></a></div>
212 </div>
213 <?php
214 ?>
215 <form action="options.php" method="post">
216 <div class="asenha-vertical-tabs">
217 <div class="asenha-tab-buttons">
218 <?php
219 // https://icon-sets.iconify.design/mdi/database-check-outline/ -- db check
220 // https://icon-sets.iconify.design/mdi/file-document-box-multiple-outline/ -- docs
221 // https://icon-sets.iconify.design/fluent/content-view-28-regular/ -- content
222 // https://icon-sets.iconify.design/lucide/shapes/ -- shapes
223 $icon_content_management = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"/><rect width="7" height="7" x="3" y="14" rx="1"/><circle cx="17.5" cy="17.5" r="3.5"/></g></svg>';
224 // https://icon-sets.iconify.design/mingcute/layout-line/
225 $icon_admin_interface = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M24 0v24H0V0h24ZM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035c-.01-.004-.019-.001-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427c-.002-.01-.009-.017-.017-.018Zm.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093c.012.004.023 0 .029-.008l.004-.014l-.034-.614c-.003-.012-.01-.02-.02-.022Zm-.715.002a.023.023 0 0 0-.027.006l-.006.014l-.034.614c0 .012.007.02.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01l-.184-.092Z"/><path fill="currentColor" d="M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm16 0H5v3h14V5ZM5 19v-9h4v9H5Zm6 0h8v-9h-8v9Z"/></g></svg>';
226 // https://icon-sets.iconify.design/ri/login-circle-line/
227 $icon_login_logout = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="m10.998 16l5-4l-5-4v3h-9v2h9z"/><path fill="currentColor" d="M12.999 2.999a8.938 8.938 0 0 0-6.364 2.637L8.049 7.05c1.322-1.322 3.08-2.051 4.95-2.051s3.628.729 4.95 2.051S20 10.13 20 12s-.729 3.628-2.051 4.95s-3.08 2.051-4.95 2.051s-3.628-.729-4.95-2.051l-1.414 1.414c1.699 1.7 3.959 2.637 6.364 2.637s4.665-.937 6.364-2.637C21.063 16.665 22 14.405 22 12s-.937-4.665-2.637-6.364a8.938 8.938 0 0 0-6.364-2.637z"/></svg>';
228 // https://icon-sets.iconify.design/mingcute/code-line/
229 $icon_custom_code = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none"><path d="M0 0h24v24H0z"/><path fill="currentColor" d="M14.486 3.143a1 1 0 0 1 .692 1.233l-4.43 15.788a1 1 0 0 1-1.926-.54l4.43-15.788a1 1 0 0 1 1.234-.693ZM7.207 7.05a1 1 0 0 1 0 1.414L3.672 12l3.535 3.535a1 1 0 1 1-1.414 1.415L1.55 12.707a1 1 0 0 1 0-1.414L5.793 7.05a1 1 0 0 1 1.414 0Zm9.586 1.414a1 1 0 1 1 1.414-1.414l4.243 4.243a1 1 0 0 1 0 1.414l-4.243 4.242a1 1 0 0 1-1.414-1.414L20.328 12l-3.535-3.536Z"/></g></svg>';
230 // https://icon-sets.iconify.design/mdi/forbid/
231 $icon_disable_components = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12 2c5.5 0 10 4.5 10 10s-4.5 10-10 10S2 17.5 2 12S6.5 2 12 2m0 2c-1.9 0-3.6.6-4.9 1.7l11.2 11.2c1-1.4 1.7-3.1 1.7-4.9c0-4.4-3.6-8-8-8m4.9 14.3L5.7 7.1C4.6 8.4 4 10.1 4 12c0 4.4 3.6 8 8 8c1.9 0 3.6-.6 4.9-1.7Z"/></svg>';
232 // https://icon-sets.iconify.design/jam/shield-check/
233 $icon_security = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path d="m8 1.75l5.25 2v5c0 2.25-2 4.5-5.25 5.5c-3.25-1-5.25-3-5.25-5.5v-5z"/><path d="m5.75 7.75l1.5 1.5l3-3.5"/></g></svg>';
234 // https://icon-sets.iconify.design/streamline/image-flash-1-flash-power-connect-charge-electricity-lightning/
235 $icon_optimizations = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 14 14"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.25.5L2 5.81a.5.5 0 0 0 .46.69h2.79l-2 7l8.59-8.14a.5.5 0 0 0-.34-.86H7.75l2-4Z"/></svg>';
236 // https://icon-sets.iconify.design/iconoir/tools/
237 $icon_utilities = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path d="m10.05 10.607l-7.07 7.07a2 2 0 0 0 0 2.83v0a2 2 0 0 0 2.828 0l7.07-7.072m4.315.365l3.878 3.878a2 2 0 0 1 0 2.828v0a2 2 0 0 1-2.828 0l-6.209-6.208M6.733 5.904L4.61 6.61L2.49 3.075l1.414-1.414L7.44 3.782l-.707 2.122Zm0 0l2.83 2.83"/><path d="M10.05 10.607c-.844-2.153-.679-4.978 1.061-6.718c1.74-1.74 4.95-2.121 6.717-1.06l-3.04 3.04l-.283 3.111l3.111-.282l3.04-3.041c1.062 1.768.68 4.978-1.06 6.717c-1.74 1.74-4.564 1.905-6.717 1.061"/></g></svg>';
238 ?>
239 <input id="tab-content-management" type="radio" name="tabs" checked><label for="tab-content-management"><?php
240 echo wp_kses( $icon_content_management, get_kses_with_svg_ruleset() );
241 ?><span><?php
242 echo esc_html__( 'Content Management', 'admin-site-enhancements' );
243 ?></span></label>
244 <input id="tab-admin-interface" type="radio" name="tabs"><label for="tab-admin-interface"><?php
245 echo wp_kses( $icon_admin_interface, get_kses_with_svg_ruleset() );
246 ?><span><?php
247 echo esc_html__( 'Admin Interface', 'admin-site-enhancements' );
248 ?></span></label>
249 <input id="tab-login-logout" type="radio" name="tabs"><label for="tab-login-logout"><?php
250 echo wp_kses( $icon_login_logout, get_kses_with_svg_ruleset() );
251 ?><span><?php
252 echo esc_html__( 'Log In/Out | Register', 'admin-site-enhancements' );
253 ?></span></label>
254 <input id="tab-custom-code" type="radio" name="tabs"><label for="tab-custom-code"><?php
255 echo wp_kses( $icon_custom_code, get_kses_with_svg_ruleset() );
256 ?><span><?php
257 echo esc_html__( 'Custom Code', 'admin-site-enhancements' );
258 ?></span></label>
259 <input id="tab-disable-components" type="radio" name="tabs"><label for="tab-disable-components"><?php
260 echo wp_kses( $icon_disable_components, get_kses_with_svg_ruleset() );
261 ?><span><?php
262 echo esc_html__( 'Disable Components', 'admin-site-enhancements' );
263 ?></span></label>
264 <input id="tab-security" type="radio" name="tabs"><label for="tab-security"><?php
265 echo wp_kses( $icon_security, get_kses_with_svg_ruleset() );
266 ?><span><?php
267 echo esc_html__( 'Security', 'admin-site-enhancements' );
268 ?></span></label>
269 <input id="tab-optimizations" type="radio" name="tabs"><label for="tab-optimizations"><?php
270 echo wp_kses( $icon_optimizations, get_kses_with_svg_ruleset() );
271 ?><span><?php
272 echo esc_html__( 'Optimizations', 'admin-site-enhancements' );
273 ?></span></label>
274 <input id="tab-utilities" type="radio" name="tabs"><label for="tab-utilities"><?php
275 echo wp_kses( $icon_utilities, get_kses_with_svg_ruleset() );
276 ?><span><?php
277 echo esc_html__( 'Utilities', 'admin-site-enhancements' );
278 ?></span></label>
279 </div>
280 <div class="asenha-tab-contents">
281 <section class="asenha-fields fields-content-management">
282 <table class="form-table" role="presentation">
283 <tbody></tbody>
284 </table>
285 </section>
286 <section class="asenha-fields fields-admin-interface">
287 <table class="form-table" role="presentation">
288 <tbody></tbody>
289 </table>
290 </section>
291 <section class="asenha-fields fields-login-logout">
292 <table class="form-table" role="presentation">
293 <tbody></tbody>
294 </table>
295 </section>
296 <section class="asenha-fields fields-custom-code">
297 <table class="form-table" role="presentation">
298 <tbody></tbody>
299 </table>
300 </section>
301 <section class="asenha-fields fields-disable-components">
302 <table class="form-table" role="presentation">
303 <tbody></tbody>
304 </table>
305 </section>
306 <section class="asenha-fields fields-security">
307 <table class="form-table" role="presentation">
308 <tbody></tbody>
309 </table>
310 </section>
311 <section class="asenha-fields fields-optimizations">
312 <table class="form-table" role="presentation">
313 <tbody></tbody>
314 </table>
315 </section>
316 <section class="asenha-fields fields-utilities">
317 <table class="form-table" role="presentation">
318 <tbody></tbody>
319 </table>
320 </section>
321 </div>
322 </div>
323 <div style="display:none;"><!-- Hide to prevent flash of fields appearing at the bottom of the page -->
324 <?php
325 settings_fields( ASENHA_ID );
326 ?>
327 <?php
328 do_settings_sections( ASENHA_SLUG );
329 ?>
330 <?php
331 submit_button(
332 __( 'Save Changes', 'admin-site-enhancements' ),
333 // Button copy
334 'primary',
335 // Type: 'primary', 'small', or 'large'
336 'submit',
337 // The 'name' attribute
338 true,
339 // Whether to wrap in <p> tag
340 array(
341 'id' => 'asenha-submit',
342 )
343 );
344 ?>
345 </div>
346 </form>
347 <?php
348 ?>
349 <div id="bottom-upgrade-nudge" class="asenha-upgrade-nudge-bottom" style="display:none;">
350 <div class="asenha-upgrade-nudge-bottom__message"><?php
351 echo __( 'Do more with <a href="https://www.wpase.com/upgrade-ndg-btm" target="_blank">ASE Pro</a>. Lifetime deal (LTD) <a href="https://www.wpase.com/upgrade-ndg-btm-prc" target="_blank">available</a>.', 'admin-site-enhancements' );
352 ?> <?php
353 if ( $is_yearend_promo_period ) {
354 echo __( 'Currently on YEAR-END SALE. <a href="https://www.wpase.com/promo-ndg" target="_blank">20% discount</a>.', 'admin-site-enhancements' );
355 }
356 ?></div>
357 </div>
358 <?php
359 ?>
360 </div>
361
362 <?php
363 ?>
364
365 </div>
366 <?php
367 // Record the number of times changes were saved as well as the date of last save
368 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
369 $changes_saved = ( isset( $_GET['settings-updated'] ) && 'true' == $_GET['settings-updated'] ? true : false );
370 if ( $changes_saved ) {
371 $current_date = date( 'Y-m-d', time() );
372 if ( !isset( $asenha_stats['first_save_date'] ) ) {
373 $asenha_stats['first_save_date'] = $current_date;
374 $asenha_stats['last_save_date'] = $current_date;
375 $asenha_stats['save_count'] = 1;
376 $asenha_stats['have_supported'] = false;
377 $asenha_stats['support_nudge_dismissed'] = false;
378 $asenha_stats['support_nudge_last_shown_date'] = '';
379 $asenha_stats['support_nudge_last_shown_save_count'] = 0;
380 } else {
381 $asenha_stats['last_save_date'] = $current_date;
382 $save_count = $asenha_stats['save_count'];
383 $save_count++;
384 $asenha_stats['save_count'] = $save_count;
385 }
386 update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
387 }
388 }
389
390 /**
391 * Suppress all notices, then add notice for successful settings update
392 *
393 * @since 1.1.0
394 */
395 function asenha_suppress_add_notices() {
396 global $plugin_page;
397 // Suppress all notices
398 if ( ASENHA_SLUG === $plugin_page ) {
399 remove_all_actions( 'admin_notices' );
400 }
401 // Add notice for successful settings update
402 if ( isset( $_GET['page'] ) && ASENHA_SLUG == $_GET['page'] && isset( $_GET['settings-updated'] ) && true == $_GET['settings-updated'] ) {
403 ?>
404 <script>
405 jQuery(document).ready( function() {
406 jQuery('.asenha-changes-saved').fadeIn(400).delay(2500).fadeOut(400);
407 });
408 </script>
409
410 <?php
411 }
412 }
413
414 /**
415 * Suppress all generic notices on the plugin settings page
416 *
417 * @since 2.7.0
418 */
419 function asenha_suppress_generic_notices() {
420 global $plugin_page;
421 // Suppress all notices
422 if ( ASENHA_SLUG === $plugin_page ) {
423 remove_all_actions( 'all_admin_notices' );
424 }
425 }
426
427 /**
428 * Enqueue admin scripts
429 *
430 * @since 1.0.0
431 */
432 function asenha_admin_scripts( $hook_suffix ) {
433 global
434 $wp_version,
435 $pagenow,
436 $typenow,
437 $taxnow,
438 $hook_suffix,
439 $current_user
440 ;
441 $current_screen = get_current_screen();
442 // Get all WP Enhancements options, default to empty array in case it's not been created yet
443 $options = get_option( 'admin_site_enhancements', array() );
444 // For main page of this plugin
445 if ( is_asenha() ) {
446 wp_enqueue_style(
447 'asenha-jbox',
448 ASENHA_URL . 'assets/css/jBox.all.min.css',
449 array(),
450 ASENHA_VERSION
451 );
452 wp_enqueue_script(
453 'asenha-jbox',
454 ASENHA_URL . 'assets/js/jBox.all.min.js',
455 array(),
456 ASENHA_VERSION,
457 false
458 );
459 wp_enqueue_script(
460 'asenha-jsticky',
461 ASENHA_URL . 'assets/js/jquery.jsticky.mod.min.js',
462 array('jquery'),
463 ASENHA_VERSION,
464 false
465 );
466 wp_enqueue_script(
467 'asenha-js-cookie',
468 ASENHA_URL . 'assets/js/js.cookie.min.js',
469 array(),
470 ASENHA_VERSION,
471 false
472 );
473 // jQuery UI Sortables. In use, e.g. for Admin Interface >> Admin Menu Organizer
474 // Re-register and re-enqueue jQuery UI Core and plugins required for sortable, draggable and droppable when ordering menu items
475 wp_deregister_script( 'jquery-ui-core' );
476 wp_register_script(
477 'jquery-ui-core',
478 get_site_url() . '/wp-includes/js/jquery/ui/core.min.js',
479 array('jquery'),
480 ASENHA_VERSION,
481 false
482 );
483 wp_enqueue_script( 'jquery-ui-core' );
484 if ( version_compare( $wp_version, '5.6.0', '>=' ) ) {
485 wp_deregister_script( 'jquery-ui-mouse' );
486 wp_register_script(
487 'jquery-ui-mouse',
488 get_site_url() . '/wp-includes/js/jquery/ui/mouse.min.js',
489 array('jquery-ui-core'),
490 ASENHA_VERSION,
491 false
492 );
493 wp_enqueue_script( 'jquery-ui-mouse' );
494 } else {
495 wp_deregister_script( 'jquery-ui-widget' );
496 wp_register_script(
497 'jquery-ui-widget',
498 get_site_url() . '/wp-includes/js/jquery/ui/widget.min.js',
499 array('jquery'),
500 ASENHA_VERSION,
501 false
502 );
503 wp_enqueue_script( 'jquery-ui-widget' );
504 wp_deregister_script( 'jquery-ui-mouse' );
505 wp_register_script(
506 'jquery-ui-mouse',
507 get_site_url() . '/wp-includes/js/jquery/ui/mouse.min.js',
508 array('jquery-ui-core', 'jquery-ui-widget'),
509 ASENHA_VERSION,
510 false
511 );
512 wp_enqueue_script( 'jquery-ui-mouse' );
513 }
514 wp_deregister_script( 'jquery-ui-sortable' );
515 wp_register_script(
516 'jquery-ui-sortable',
517 get_site_url() . '/wp-includes/js/jquery/ui/sortable.min.js',
518 array('jquery-ui-mouse'),
519 ASENHA_VERSION,
520 false
521 );
522 wp_enqueue_script( 'jquery-ui-sortable' );
523 wp_deregister_script( 'jquery-ui-draggable' );
524 wp_register_script(
525 'jquery-ui-draggable',
526 get_site_url() . '/wp-includes/js/jquery/ui/draggable.min.js',
527 array('jquery-ui-mouse'),
528 ASENHA_VERSION,
529 false
530 );
531 wp_enqueue_script( 'jquery-ui-draggable' );
532 wp_deregister_script( 'jquery-ui-droppable' );
533 wp_register_script(
534 'jquery-ui-droppable',
535 get_site_url() . '/wp-includes/js/jquery/ui/droppable.min.js',
536 array('jquery-ui-draggable'),
537 ASENHA_VERSION,
538 false
539 );
540 wp_enqueue_script( 'jquery-ui-droppable' );
541 // Script to set behaviour and actions of the sortable menu
542 wp_enqueue_script(
543 'asenha-custom-admin-menu',
544 ASENHA_URL . 'assets/js/custom-admin-menu.js',
545 array('jquery-ui-draggable'),
546 ASENHA_VERSION,
547 false
548 );
549 // First, we unload the CodeMirror libraries included in WP core
550 wp_deregister_script( 'wp-codemirror' );
551 wp_deregister_script( 'code-editor' );
552 wp_deregister_script( 'htmlhint' );
553 wp_deregister_script( 'csslint' );
554 wp_deregister_script( 'esprima' );
555 wp_deregister_script( 'jshint' );
556 // Then, we load ASENHA's CodeMirror libraries. In use, e.g. for Utilities >> Enable Custom Admin / Frontend CSS / ads.txt / app-ads.txt
557 wp_enqueue_style(
558 'asenha-codemirror',
559 ASENHA_URL . 'assets/css/codemirror/codemirror.min.css',
560 array(),
561 ASENHA_VERSION
562 );
563 wp_enqueue_script(
564 'asenha-codemirror',
565 ASENHA_URL . 'assets/js/codemirror/codemirror.min.js',
566 array('jquery'),
567 ASENHA_VERSION,
568 true
569 );
570 wp_enqueue_script(
571 'asenha-codemirror-htmlmixed-mode',
572 ASENHA_URL . 'assets/js/codemirror/htmlmixed.js',
573 array('asenha-codemirror'),
574 ASENHA_VERSION,
575 true
576 );
577 wp_enqueue_script(
578 'asenha-codemirror-xml-mode',
579 ASENHA_URL . 'assets/js/codemirror/xml.js',
580 array('asenha-codemirror'),
581 ASENHA_VERSION,
582 true
583 );
584 wp_enqueue_script(
585 'asenha-codemirror-javascript-mode',
586 ASENHA_URL . 'assets/js/codemirror/javascript.js',
587 array('asenha-codemirror'),
588 ASENHA_VERSION,
589 true
590 );
591 wp_enqueue_script(
592 'asenha-codemirror-css-mode',
593 ASENHA_URL . 'assets/js/codemirror/css.js',
594 array('asenha-codemirror'),
595 ASENHA_VERSION,
596 true
597 );
598 wp_enqueue_script(
599 'asenha-codemirror-markdown-mode',
600 ASENHA_URL . 'assets/js/codemirror/markdown.js',
601 array('asenha-codemirror'),
602 ASENHA_VERSION,
603 true
604 );
605 // DataTables. In use, e.g. for Security >> Limit Login Attempts
606 wp_enqueue_style(
607 'asenha-datatables',
608 ASENHA_URL . 'assets/css/datatables/datatables.min.css',
609 array(),
610 ASENHA_VERSION
611 );
612 wp_enqueue_script(
613 'asenha-datatables',
614 ASENHA_URL . 'assets/js/datatables/datatables.min.js',
615 array('jquery'),
616 ASENHA_VERSION,
617 false
618 );
619 // Add WP media library assets
620 wp_enqueue_media();
621 // Add WP color picker assets
622 wp_enqueue_style( 'wp-color-picker' );
623 wp_enqueue_script( 'wp-color-picker' );
624 // We force loading the uncompressed version of TinyMCE. This ensures we load 'wp-tinymce-root' and then 'wp-tinymce',
625 // which prevents issue where the Visual tab is unusable in some scenarios
626 $wp_scripts = wp_scripts();
627 $wp_scripts->remove( 'wp-tinymce' );
628 wp_register_tinymce_scripts( $wp_scripts, true );
629 // Main style and script for the admin page
630 wp_enqueue_style(
631 'asenha-admin-page',
632 ASENHA_URL . 'assets/css/admin-page.css',
633 array(
634 'asenha-jbox',
635 'asenha-codemirror',
636 'asenha-datatables',
637 'wp-color-picker'
638 ),
639 ASENHA_VERSION
640 );
641 wp_enqueue_script(
642 'asenha-admin-page',
643 ASENHA_URL . 'assets/js/admin-page.js',
644 array(
645 'asenha-jsticky',
646 'asenha-jbox',
647 'asenha-js-cookie',
648 'asenha-codemirror-htmlmixed-mode',
649 'asenha-codemirror-xml-mode',
650 'asenha-codemirror-javascript-mode',
651 'asenha-codemirror-css-mode',
652 'asenha-codemirror-markdown-mode',
653 'asenha-datatables',
654 'asenha-custom-admin-menu',
655 'wp-color-picker',
656 'wp-mediaelement',
657 'wp-tinymce-root',
658 'wp-tinymce'
659 ),
660 ASENHA_VERSION,
661 false
662 );
663 wp_localize_script( 'asenha-admin-page', 'adminPageVars', array(
664 'siteUrl' => get_site_url(),
665 'wpcontentUrl' => content_url(),
666 'mediaFrameTitle' => __( 'Select an Image', 'admin-site-enhancements' ),
667 'mediaFrameButtonText' => __( 'Use Selected Image', 'admin-site-enhancements' ),
668 'resetMenuNonce' => wp_create_nonce( 'reset-menu-nonce' ),
669 'sendTestEmailNonce' => wp_create_nonce( 'send-test-email-nonce_' . get_current_user_id() ),
670 'formBuilderSendTestEmailNonce' => wp_create_nonce( 'formbuilder_ajax' ),
671 'expandText' => __( 'Expand', 'admin-site-enhancements' ),
672 'collapseText' => __( 'Collapse', 'admin-site-enhancements' ),
673 'dataTable' => array(
674 'emptyTable' => __( 'No data available in table', 'admin-site-enhancements' ),
675 'info' => __( 'Showing _START_ to _END_ of _TOTAL_ entries', 'admin-site-enhancements' ),
676 'infoEmpty' => __( 'Showing 0 to 0 of 0 entries', 'admin-site-enhancements' ),
677 'infoFiltered' => __( '(filtered from _MAX_ total entries)', 'admin-site-enhancements' ),
678 'lengthMenu' => __( 'Show _MENU_ entries', 'admin-site-enhancements' ),
679 'search' => __( 'Search:', 'admin-site-enhancements' ),
680 'zeroRecords' => __( 'No matching records found', 'admin-site-enhancements' ),
681 'paginate' => array(
682 'first' => __( 'First', 'admin-site-enhancements' ),
683 'last' => __( 'Last', 'admin-site-enhancements' ),
684 'next' => __( 'Next', 'admin-site-enhancements' ),
685 'previous' => __( 'Previous', 'admin-site-enhancements' ),
686 ),
687 ),
688 ) );
689 }
690 // Enqueue on all wp-admin
691 wp_enqueue_style(
692 'asenha-wp-admin',
693 ASENHA_URL . 'assets/css/wp-admin.css',
694 array(),
695 ASENHA_VERSION
696 );
697 // Content Management >> Show IDs, for list tables in wp-admin, e.g. All Posts page
698 if ( false !== strpos( $current_screen->base, 'edit' ) || false !== strpos( $current_screen->base, 'users' ) || false !== strpos( $current_screen->base, 'upload' ) ) {
699 wp_enqueue_style(
700 'asenha-list-table',
701 ASENHA_URL . 'assets/css/list-table.css',
702 array(),
703 ASENHA_VERSION
704 );
705 }
706 // Content Management >> Enable Media Replacement
707 if ( $current_screen->base == 'upload' || $current_screen->id == 'attachment' ) {
708 // wp_enqueue_style( 'asenha-jbox', ASENHA_URL . 'assets/css/jBox.all.min.css', array(), ASENHA_VERSION );
709 // wp_enqueue_script( 'asenha-jbox', ASENHA_URL . 'assets/js/jBox.all.min.js', array(), ASENHA_VERSION, false );
710 wp_enqueue_style(
711 'asenha-media-replace',
712 ASENHA_URL . 'assets/css/media-replace.css',
713 array(),
714 ASENHA_VERSION
715 );
716 wp_enqueue_script(
717 'asenha-media-replace',
718 ASENHA_URL . 'assets/js/media-replace.js',
719 array(),
720 ASENHA_VERSION,
721 false
722 );
723 $media_replace = array(
724 'selectMediaText' => __( 'Select New Media File', 'admin-site-enhancements' ),
725 'performReplacementText' => __( 'Perform Replacement', 'admin-site-enhancements' ),
726 );
727 wp_localize_script( 'asenha-media-replace', 'mediaReplace', $media_replace );
728 }
729 // Utilities >> Email Delivery Log
730 if ( 'tools_page_email-delivery-log' == $hook_suffix ) {
731 wp_enqueue_style( 'jquery-ui-css', ASENHA_URL . 'assets/premium/css/jquery-ui/jquery-ui.min.css' );
732 wp_enqueue_style( 'asenha-email-delivery-log', ASENHA_URL . 'assets/premium/css/email-delivery-log.css' );
733 wp_enqueue_script( 'jquery-ui' );
734 // wp_enqueue_script( 'jquery-ui-datepicker' );
735 wp_enqueue_script( 'jquery-ui-tabs' );
736 wp_enqueue_script( 'asenha-email-delivery-log', ASENHA_URL . 'assets/premium/js/email-delivery-log.js' );
737 $nonce = wp_create_nonce( 'email-delivery-log' . get_current_user_id() );
738 wp_localize_script( 'asenha-email-delivery-log', 'emailLog', array(
739 'nonce' => $nonce,
740 ) );
741 }
742 // Utilities >> Image Sizes Panel∂
743 if ( 'post' == $current_screen->base && 'attachment' == $current_screen->id ) {
744 global $post;
745 // Only enqueue if the attachment is an image
746 if ( property_exists( $post, 'post_mime_type' ) && false !== strpos( $post->post_mime_type, 'image' ) ) {
747 wp_enqueue_style( 'asenha-image-sizes-panel', ASENHA_URL . 'assets/css/image-sizes-panel.css' );
748 }
749 }
750 // Code Snippets Manager
751 if ( 'post' == $current_screen->base && 'asenha_code_snippet' == $current_screen->id || 'edit' == $current_screen->base && 'edit-asenha_code_snippet' == $current_screen->id ) {
752 }
753 // Content Management >> Hide Admin Notices
754 if ( array_key_exists( 'hide_admin_notices', $options ) && $options['hide_admin_notices'] ) {
755 $hide_for_nonadmins = ( isset( $options['hide_admin_notices_for_nonadmins'] ) ? $options['hide_admin_notices_for_nonadmins'] : false );
756 $minimum_capability = 'manage_options';
757 if ( function_exists( 'bwasenha_fs' ) ) {
758 if ( $hide_for_nonadmins && bwasenha_fs()->can_use_premium_code__premium_only() ) {
759 $minimum_capability = 'read';
760 }
761 }
762 if ( current_user_can( $minimum_capability ) ) {
763 wp_enqueue_style(
764 'asenha-jbox',
765 ASENHA_URL . 'assets/css/jBox.all.min.css',
766 array(),
767 ASENHA_VERSION
768 );
769 wp_enqueue_script(
770 'asenha-jbox',
771 ASENHA_URL . 'assets/js/jBox.all.min.js',
772 array(),
773 ASENHA_VERSION,
774 false
775 );
776 wp_enqueue_style(
777 'asenha-hide-admin-notices',
778 ASENHA_URL . 'assets/css/hide-admin-notices.css',
779 array(),
780 ASENHA_VERSION
781 );
782 wp_enqueue_script(
783 'asenha-hide-admin-notices',
784 ASENHA_URL . 'assets/js/hide-admin-notices.js',
785 array('asenha-jbox'),
786 ASENHA_VERSION,
787 false
788 );
789 }
790 }
791 // Utilities >> Multiple User Roles
792 if ( array_key_exists( 'multiple_user_roles', $options ) && $options['multiple_user_roles'] ) {
793 if ( 'user-edit.php' == $hook_suffix || 'user-new.php' == $hook_suffix ) {
794 // Only replace roles dropdown with checkboxes for users that can assign roles to other users, e.g. administrators
795 if ( current_user_can( 'promote_users', get_current_user_id() ) ) {
796 wp_enqueue_script(
797 'asenha-multiple-user-roles',
798 ASENHA_URL . 'assets/js/multiple-user-roles.js',
799 array('jquery'),
800 ASENHA_VERSION,
801 false
802 );
803 }
804 }
805 }
806 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
807 $hide_promo_nudge = false;
808 // Pass on ASENHA stats to admin-page.js to determine whether to show support nudge
809 $current_date = date( 'Y-m-d', time() );
810 $show_support_nudge = false;
811 $asenha_stats_localized = array(
812 'firstSaveDate' => '',
813 'lastSaveDate' => '',
814 'saveCount' => 0,
815 'hideUpgradeNudge' => false,
816 'hidePromoNudge' => false,
817 'showSupportNudge' => false,
818 );
819 if ( !empty( $asenha_stats ) ) {
820 $hide_upgrade_nudge = ( isset( $asenha_stats['upgrade_nudge_dismissed'] ) ? $asenha_stats['upgrade_nudge_dismissed'] : false );
821 $hide_promo_nudge = ( isset( $asenha_stats['promo_nudge_dismissed'] ) ? $asenha_stats['promo_nudge_dismissed'] : false );
822 $have_supported = ( isset( $asenha_stats['have_supported'] ) ? $asenha_stats['have_supported'] : false );
823 $changes_saved = ( isset( $_GET['settings-updated'] ) && 'true' == sanitize_text_field( $_GET['settings-updated'] ) ? true : false );
824 $save_count = ( isset( $asenha_stats['save_count'] ) ? $asenha_stats['save_count'] : 0 );
825 // Compensate for redirect from settings-updated=true URL
826 if ( $changes_saved ) {
827 $save_count = $save_count + 1;
828 } else {
829 $save_count = $save_count;
830 }
831 $saves_to_nudge_support = 10;
832 if ( $save_count < $saves_to_nudge_support ) {
833 $save_count_modulo = -1;
834 } else {
835 $save_count_modulo = $save_count % $saves_to_nudge_support;
836 }
837 // User have not supported ASE
838 if ( false === $have_supported ) {
839 // Support nudge have not been dismissed
840 if ( isset( $asenha_stats['support_nudge_dismissed'] ) && false === $asenha_stats['support_nudge_dismissed'] ) {
841 // Show support nudge after every x saves
842 if ( $save_count_modulo >= 0 ) {
843 $show_support_nudge = true;
844 } else {
845 $show_support_nudge = false;
846 }
847 if ( $show_support_nudge && $save_count_modulo >= 0 ) {
848 $asenha_stats['support_nudge_last_shown_date'] = $current_date;
849 $asenha_stats['support_nudge_last_shown_save_count'] = $save_count;
850 update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
851 }
852 } else {
853 if ( $save_count_modulo == 0 ) {
854 $support_nudge_last_shown_save_count = ( isset( $asenha_stats['support_nudge_last_shown_save_count'] ) ? $asenha_stats['support_nudge_last_shown_save_count'] : 0 );
855 if ( $save_count > $support_nudge_last_shown_save_count ) {
856 $asenha_stats['support_nudge_dismissed'] = false;
857 update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
858 $show_support_nudge = true;
859 } else {
860 $show_support_nudge = false;
861 }
862 } else {
863 $show_support_nudge = false;
864 }
865 }
866 }
867 $first_save_date = ( isset( $asenha_stats['first_save_date'] ) ? $asenha_stats['first_save_date'] : '' );
868 $last_save_date = ( isset( $asenha_stats['last_save_date'] ) ? $asenha_stats['last_save_date'] : '' );
869 $asenha_stats_localized = array(
870 'firstSaveDate' => $first_save_date,
871 'lastSaveDate' => $last_save_date,
872 'saveCount' => $save_count,
873 'hideUpgradeNudge' => $hide_upgrade_nudge,
874 'hidePromoNudge' => $hide_promo_nudge,
875 'showSupportNudge' => $show_support_nudge,
876 );
877 }
878 wp_localize_script( 'asenha-admin-page', 'asenhaStats', $asenha_stats_localized );
879 }
880
881 /**
882 * Inline CSS for Admin Menu Organizer in all wp-admin pages. Previously loaded externally as part of wp-admin.css file
883 *
884 * @since 7.6.11
885 */
886 function asenha_admin_menu_organizer_css() {
887 ?>
888 <style type="text/css">
889 /* Admin Interface >> Admin Menu Organizer */
890 #adminmenuwrap {
891 height: auto !important;
892 }
893
894 .toplevel_page_wpide #adminmenuwrap {
895 height: calc(100vh - var(--wpide-admin-bar-height)) !important;
896 } /* Fix for when in WPIDE plugin's menu / admin page */
897
898 .current.menu-top.hidden,
899 .wp-has-current-submenu.hidden {
900 display: list-item;
901 }
902
903 #adminmenu a.menu-top.hidden,
904 ul#adminmenu a.wp-has-current-submenu.hidden {
905 display: block;
906 }
907
908 /*! <fs_premium_only> */
909 .always-hidden {
910 display: none !important;
911 }
912
913 #adminmenu .wp-submenu a.hidden {
914 display: none;
915 }
916 /*! </fs_premium_only> */
917 </style>
918 <?php
919 }
920
921 /**
922 * Dequeue scripts that prevents ASE settings page from working properly. Usually from plugins.
923 *
924 * @since 6.3.3
925 */
926 function asenha_dequeue_scritps() {
927 if ( is_asenha() ) {
928 // https://wordpress.org/plugins/user-activity-log/
929 wp_dequeue_script( 'chats-js' );
930 wp_dequeue_script( 'custom_wp_admin_js' );
931 // https://wordpress.org/plugins/print-invoices-packing-slip-labels-for-woocommerce/
932 wp_dequeue_script( 'print-invoices-packing-slip-labels-for-woocommerce' );
933 wp_dequeue_script( 'print-invoices-packing-slip-labels-for-woocommerce-form-wizard' );
934 // https://wordpress.org/plugins/wp-reading-progress/
935 wp_dequeue_script( 'ruigehond006_admin_javascript' );
936 // WordPress Mentions Légales plugin v1.2.3 by Jean-Baptiste Aramendy - http://jba-development.fr/
937 wp_dequeue_script( 'jquery-ui' );
938 wp_dequeue_script( 'wordpress-mentions-legales' );
939 // https://wordpress.org/plugins/us-weather-widget-willyweather/
940 wp_dequeue_script( 'self' );
941 // iThemes Security Pro / Solid Security Pro
942 wp_dequeue_script( 'itsec-core-admin-notices' );
943 // WPML
944 wp_dequeue_script( 'wpml-ate-jobs-sync-ui' );
945 wp_dequeue_script( 'wpml-purify' );
946 wp_dequeue_script( 'sitepress-scripts' );
947 wp_dequeue_script( 'sitepress' );
948 wp_dequeue_script( 'wpml-dismiss-notice' );
949 wp_dequeue_script( 'wpml-tm-scripts' );
950 wp_dequeue_script( 'otgs-installer-components-save-setting' );
951 wp_dequeue_script( 'installer-dismiss-nag' );
952 wp_dequeue_script( 'install-recommended_plugin' );
953 wp_dequeue_script( 'icl-admin-notifier' );
954 wp_dequeue_script( 'otgsPopoverTooltip' );
955 // WPML String Translation
956 wp_dequeue_script( 'wpml-theme-plugin-localization-scan' );
957 // Asset Cleanup
958 wp_dequeue_script( 'wpassetcleanup-script' );
959 }
960 }
961
962 /**
963 * Enqueue public scripts
964 *
965 * @since 3.9.0
966 */
967 function asenha_public_scripts( $hook_suffix ) {
968 // Get all WP Enhancements options, default to empty array in case it's not been created yet
969 $options = get_option( 'admin_site_enhancements', array() );
970 // External Permalinks
971 $enable_external_permalinks = ( array_key_exists( 'enable_external_permalinks', $options ) ? $options['enable_external_permalinks'] : false );
972 if ( $enable_external_permalinks ) {
973 wp_enqueue_script(
974 'asenha-public',
975 ASENHA_URL . 'assets/js/external-permalinks.js',
976 array(),
977 ASENHA_VERSION,
978 false
979 );
980 wp_localize_script( 'asenha-public', 'phpVars', array(
981 'externalPermalinksEnabled' => $enable_external_permalinks,
982 ) );
983 }
984 // Media Categories
985 $enable_media_categories = ( array_key_exists( 'enable_media_categories', $options ) ? $options['enable_media_categories'] : false );
986 if ( $enable_media_categories && !is_admin() && is_user_logged_in() ) {
987 wp_enqueue_style(
988 'asenha-media-categories-frontend',
989 ASENHA_URL . 'assets/css/media-categories-frontend.css',
990 array(),
991 ASENHA_VERSION
992 );
993 }
994 // Media Replacement
995 $enable_media_replacement = ( array_key_exists( 'enable_media_replacement', $options ) ? $options['enable_media_replacement'] : false );
996 if ( $enable_media_replacement && is_user_logged_in() ) {
997 wp_enqueue_style(
998 'asenha-media-replace-frontend',
999 ASENHA_URL . 'assets/css/media-replace-frontend.css',
1000 array(),
1001 ASENHA_VERSION
1002 );
1003 }
1004 }
1005
1006 /**
1007 * Add admin bar styles for wp-admin and frontend
1008 *
1009 * @since 6.2.1
1010 */
1011 function asenha_admin_bar_item_js_css() {
1012 if ( is_user_logged_in() ) {
1013 ?>
1014 <!--<script></script>-->
1015 <style>
1016 #wp-admin-bar-user-info .avatar {
1017 object-fit: cover;
1018 }
1019 </style>
1020 <?php
1021 }
1022 }
1023
1024 /**
1025 * Add 'Access now' plugin action link.
1026 *
1027 * @since 1.0.0
1028 */
1029 function asenha_plugin_action_links( $links ) {
1030 $settings_link = '<a href="tools.php?page=' . ASENHA_SLUG . '">' . __( 'Configure', 'admin-site-enhancements' ) . '</a>';
1031 array_unshift( $links, $settings_link );
1032 return $links;
1033 }
1034
1035 /**
1036 * Modify footer text
1037 *
1038 * @since 1.0.0
1039 */
1040 function asenha_footer_text() {
1041 // Show nothing
1042 ?>
1043 <?php
1044 }
1045
1046 /**
1047 * Change WP version number text in footer
1048 *
1049 * @since 4.8.3
1050 */
1051 function asenha_footer_version_text() {
1052 ?>
1053 ASE <a href="https://www.wpase.com/documentation/changelog/" target="_blank">v<?php
1054 echo esc_html( ASENHA_VERSION );
1055 ?></a>
1056 <?php
1057 }
1058
1059 /**
1060 * Check if current screen is this plugin's main page
1061 *
1062 * @since 1.0.0
1063 */
1064 function is_asenha() {
1065 $request_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] );
1066 // e.g. /wp-admin/index.php?page=page-slug
1067 if ( strpos( $request_uri, 'page=' . ASENHA_SLUG ) !== false ) {
1068 return true;
1069 // Yes, this is the plugin's main page
1070 } else {
1071 return false;
1072 // Nope, this is NOT the plugin's page
1073 }
1074 }
1075
1076 /**
1077 * Mark that user have supported ASE
1078 *
1079 * @since 5.2.7
1080 */
1081 function asenha_have_supported() {
1082 if ( isset( $_REQUEST ) ) {
1083 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
1084 $asenha_stats['have_supported'] = true;
1085 $asenha_stats['support_nudge_dismissed'] = true;
1086 $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
1087 if ( $success ) {
1088 echo json_encode( array(
1089 'success' => true,
1090 ) );
1091 } else {
1092 echo json_encode( array(
1093 'success' => false,
1094 ) );
1095 }
1096 }
1097 }
1098
1099 /**
1100 * Dismiss support nudge
1101 *
1102 * @since 5.8.2
1103 */
1104 function asenha_dismiss_upgrade_nudge() {
1105 if ( isset( $_REQUEST ) ) {
1106 $current_date = date( 'Y-m-d', time() );
1107 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
1108 $asenha_stats['upgrade_nudge_dismissed'] = true;
1109 $asenha_stats['upgrade_nudge_dismissed_date'] = $current_date;
1110 $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
1111 if ( $success ) {
1112 echo json_encode( array(
1113 'success' => true,
1114 ) );
1115 } else {
1116 echo json_encode( array(
1117 'success' => false,
1118 ) );
1119 }
1120 }
1121 }
1122
1123 /**
1124 * Dismiss promo nudge
1125 *
1126 * @since 7.5.1
1127 */
1128 function asenha_dismiss_promo_nudge() {
1129 if ( isset( $_REQUEST ) ) {
1130 $current_date = date( 'Y-m-d', time() );
1131 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
1132 $asenha_stats['promo_nudge_dismissed'] = true;
1133 $asenha_stats['promo_nudge_dismissed_date'] = $current_date;
1134 $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
1135 if ( $success ) {
1136 echo json_encode( array(
1137 'success' => true,
1138 ) );
1139 } else {
1140 echo json_encode( array(
1141 'success' => false,
1142 ) );
1143 }
1144 }
1145 }
1146
1147 /**
1148 * Dismiss support nudge
1149 *
1150 * @since 5.2.7
1151 */
1152 function asenha_dismiss_support_nudge() {
1153 if ( isset( $_REQUEST ) ) {
1154 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
1155 $asenha_stats['support_nudge_dismissed'] = true;
1156 $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
1157 if ( $success ) {
1158 echo json_encode( array(
1159 'success' => true,
1160 ) );
1161 } else {
1162 echo json_encode( array(
1163 'success' => false,
1164 ) );
1165 }
1166 }
1167 }
1168