PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.6.10
Admin and Site Enhancements (ASE) v7.6.10
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
1117 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 echo esc_html__( 'Content Management', 'admin-site-enhancements' );
242 ?></label>
243 <input id="tab-admin-interface" type="radio" name="tabs"><label for="tab-admin-interface"><?php
244 echo wp_kses( $icon_admin_interface, get_kses_with_svg_ruleset() );
245 echo esc_html__( 'Admin Interface', 'admin-site-enhancements' );
246 ?></label>
247 <input id="tab-login-logout" type="radio" name="tabs"><label for="tab-login-logout"><?php
248 echo wp_kses( $icon_login_logout, get_kses_with_svg_ruleset() );
249 echo esc_html__( 'Log In/Out | Register', 'admin-site-enhancements' );
250 ?></label>
251 <input id="tab-custom-code" type="radio" name="tabs"><label for="tab-custom-code"><?php
252 echo wp_kses( $icon_custom_code, get_kses_with_svg_ruleset() );
253 echo esc_html__( 'Custom Code', 'admin-site-enhancements' );
254 ?></label>
255 <input id="tab-disable-components" type="radio" name="tabs"><label for="tab-disable-components"><?php
256 echo wp_kses( $icon_disable_components, get_kses_with_svg_ruleset() );
257 echo esc_html__( 'Disable Components', 'admin-site-enhancements' );
258 ?></label>
259 <input id="tab-security" type="radio" name="tabs"><label for="tab-security"><?php
260 echo wp_kses( $icon_security, get_kses_with_svg_ruleset() );
261 echo esc_html__( 'Security', 'admin-site-enhancements' );
262 ?></label>
263 <input id="tab-optimizations" type="radio" name="tabs"><label for="tab-optimizations"><?php
264 echo wp_kses( $icon_optimizations, get_kses_with_svg_ruleset() );
265 echo esc_html__( 'Optimizations', 'admin-site-enhancements' );
266 ?></label>
267 <input id="tab-utilities" type="radio" name="tabs"><label for="tab-utilities"><?php
268 echo wp_kses( $icon_utilities, get_kses_with_svg_ruleset() );
269 echo esc_html__( 'Utilities', 'admin-site-enhancements' );
270 ?></label>
271 </div>
272 <div class="asenha-tab-contents">
273 <section class="asenha-fields fields-content-management">
274 <table class="form-table" role="presentation">
275 <tbody></tbody>
276 </table>
277 </section>
278 <section class="asenha-fields fields-admin-interface">
279 <table class="form-table" role="presentation">
280 <tbody></tbody>
281 </table>
282 </section>
283 <section class="asenha-fields fields-login-logout">
284 <table class="form-table" role="presentation">
285 <tbody></tbody>
286 </table>
287 </section>
288 <section class="asenha-fields fields-custom-code">
289 <table class="form-table" role="presentation">
290 <tbody></tbody>
291 </table>
292 </section>
293 <section class="asenha-fields fields-disable-components">
294 <table class="form-table" role="presentation">
295 <tbody></tbody>
296 </table>
297 </section>
298 <section class="asenha-fields fields-security">
299 <table class="form-table" role="presentation">
300 <tbody></tbody>
301 </table>
302 </section>
303 <section class="asenha-fields fields-optimizations">
304 <table class="form-table" role="presentation">
305 <tbody></tbody>
306 </table>
307 </section>
308 <section class="asenha-fields fields-utilities">
309 <table class="form-table" role="presentation">
310 <tbody></tbody>
311 </table>
312 </section>
313 </div>
314 </div>
315 <div style="display:none;"><!-- Hide to prevent flash of fields appearing at the bottom of the page -->
316 <?php
317 settings_fields( ASENHA_ID );
318 ?>
319 <?php
320 do_settings_sections( ASENHA_SLUG );
321 ?>
322 <?php
323 submit_button(
324 __( 'Save Changes', 'admin-site-enhancements' ),
325 // Button copy
326 'primary',
327 // Type: 'primary', 'small', or 'large'
328 'submit',
329 // The 'name' attribute
330 true,
331 // Whether to wrap in <p> tag
332 array(
333 'id' => 'asenha-submit',
334 )
335 );
336 ?>
337 </div>
338 </form>
339 <?php
340 ?>
341 <div id="bottom-upgrade-nudge" class="asenha-upgrade-nudge-bottom" style="display:none;">
342 <div class="asenha-upgrade-nudge-bottom__message"><?php
343 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' );
344 ?> <?php
345 echo __( 'Currently on YEAR-END SALE. <a href="https://www.wpase.com/promo-ndg" target="_blank">20% discount</a>.', 'admin-site-enhancements' );
346 ?></div>
347 </div>
348 <?php
349 ?>
350 </div>
351
352 <?php
353 ?>
354
355 </div>
356 <?php
357 // Record the number of times changes were saved as well as the date of last save
358 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
359 $changes_saved = ( isset( $_GET['settings-updated'] ) && 'true' == $_GET['settings-updated'] ? true : false );
360 if ( $changes_saved ) {
361 $current_date = date( 'Y-m-d', time() );
362 if ( !isset( $asenha_stats['first_save_date'] ) ) {
363 $asenha_stats['first_save_date'] = $current_date;
364 $asenha_stats['last_save_date'] = $current_date;
365 $asenha_stats['save_count'] = 1;
366 $asenha_stats['have_supported'] = false;
367 $asenha_stats['support_nudge_dismissed'] = false;
368 $asenha_stats['support_nudge_last_shown_date'] = '';
369 $asenha_stats['support_nudge_last_shown_save_count'] = 0;
370 } else {
371 $asenha_stats['last_save_date'] = $current_date;
372 $save_count = $asenha_stats['save_count'];
373 $save_count++;
374 $asenha_stats['save_count'] = $save_count;
375 }
376 update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
377 }
378 }
379
380 /**
381 * Suppress all notices, then add notice for successful settings update
382 *
383 * @since 1.1.0
384 */
385 function asenha_suppress_add_notices() {
386 global $plugin_page;
387 // Suppress all notices
388 if ( ASENHA_SLUG === $plugin_page ) {
389 remove_all_actions( 'admin_notices' );
390 }
391 // Add notice for successful settings update
392 if ( isset( $_GET['page'] ) && ASENHA_SLUG == $_GET['page'] && isset( $_GET['settings-updated'] ) && true == $_GET['settings-updated'] ) {
393 ?>
394 <script>
395 jQuery(document).ready( function() {
396 jQuery('.asenha-changes-saved').fadeIn(400).delay(2500).fadeOut(400);
397 });
398 </script>
399
400 <?php
401 }
402 }
403
404 /**
405 * Suppress all generic notices on the plugin settings page
406 *
407 * @since 2.7.0
408 */
409 function asenha_suppress_generic_notices() {
410 global $plugin_page;
411 // Suppress all notices
412 if ( ASENHA_SLUG === $plugin_page ) {
413 remove_all_actions( 'all_admin_notices' );
414 }
415 }
416
417 /**
418 * Enqueue admin scripts
419 *
420 * @since 1.0.0
421 */
422 function asenha_admin_scripts( $hook_suffix ) {
423 global
424 $wp_version,
425 $pagenow,
426 $typenow,
427 $taxnow,
428 $hook_suffix,
429 $current_user
430 ;
431 $current_screen = get_current_screen();
432 // Get all WP Enhancements options, default to empty array in case it's not been created yet
433 $options = get_option( 'admin_site_enhancements', array() );
434 // For main page of this plugin
435 if ( is_asenha() ) {
436 wp_enqueue_style(
437 'asenha-jbox',
438 ASENHA_URL . 'assets/css/jBox.all.min.css',
439 array(),
440 ASENHA_VERSION
441 );
442 wp_enqueue_script(
443 'asenha-jbox',
444 ASENHA_URL . 'assets/js/jBox.all.min.js',
445 array(),
446 ASENHA_VERSION,
447 false
448 );
449 wp_enqueue_script(
450 'asenha-jsticky',
451 ASENHA_URL . 'assets/js/jquery.jsticky.mod.min.js',
452 array('jquery'),
453 ASENHA_VERSION,
454 false
455 );
456 wp_enqueue_script(
457 'asenha-js-cookie',
458 ASENHA_URL . 'assets/js/js.cookie.min.js',
459 array(),
460 ASENHA_VERSION,
461 false
462 );
463 // jQuery UI Sortables. In use, e.g. for Admin Interface >> Admin Menu Organizer
464 // Re-register and re-enqueue jQuery UI Core and plugins required for sortable, draggable and droppable when ordering menu items
465 wp_deregister_script( 'jquery-ui-core' );
466 wp_register_script(
467 'jquery-ui-core',
468 get_site_url() . '/wp-includes/js/jquery/ui/core.min.js',
469 array('jquery'),
470 ASENHA_VERSION,
471 false
472 );
473 wp_enqueue_script( 'jquery-ui-core' );
474 if ( version_compare( $wp_version, '5.6.0', '>=' ) ) {
475 wp_deregister_script( 'jquery-ui-mouse' );
476 wp_register_script(
477 'jquery-ui-mouse',
478 get_site_url() . '/wp-includes/js/jquery/ui/mouse.min.js',
479 array('jquery-ui-core'),
480 ASENHA_VERSION,
481 false
482 );
483 wp_enqueue_script( 'jquery-ui-mouse' );
484 } else {
485 wp_deregister_script( 'jquery-ui-widget' );
486 wp_register_script(
487 'jquery-ui-widget',
488 get_site_url() . '/wp-includes/js/jquery/ui/widget.min.js',
489 array('jquery'),
490 ASENHA_VERSION,
491 false
492 );
493 wp_enqueue_script( 'jquery-ui-widget' );
494 wp_deregister_script( 'jquery-ui-mouse' );
495 wp_register_script(
496 'jquery-ui-mouse',
497 get_site_url() . '/wp-includes/js/jquery/ui/mouse.min.js',
498 array('jquery-ui-core', 'jquery-ui-widget'),
499 ASENHA_VERSION,
500 false
501 );
502 wp_enqueue_script( 'jquery-ui-mouse' );
503 }
504 wp_deregister_script( 'jquery-ui-sortable' );
505 wp_register_script(
506 'jquery-ui-sortable',
507 get_site_url() . '/wp-includes/js/jquery/ui/sortable.min.js',
508 array('jquery-ui-mouse'),
509 ASENHA_VERSION,
510 false
511 );
512 wp_enqueue_script( 'jquery-ui-sortable' );
513 wp_deregister_script( 'jquery-ui-draggable' );
514 wp_register_script(
515 'jquery-ui-draggable',
516 get_site_url() . '/wp-includes/js/jquery/ui/draggable.min.js',
517 array('jquery-ui-mouse'),
518 ASENHA_VERSION,
519 false
520 );
521 wp_enqueue_script( 'jquery-ui-draggable' );
522 wp_deregister_script( 'jquery-ui-droppable' );
523 wp_register_script(
524 'jquery-ui-droppable',
525 get_site_url() . '/wp-includes/js/jquery/ui/droppable.min.js',
526 array('jquery-ui-draggable'),
527 ASENHA_VERSION,
528 false
529 );
530 wp_enqueue_script( 'jquery-ui-droppable' );
531 // Script to set behaviour and actions of the sortable menu
532 wp_enqueue_script(
533 'asenha-custom-admin-menu',
534 ASENHA_URL . 'assets/js/custom-admin-menu.js',
535 array('jquery-ui-draggable'),
536 ASENHA_VERSION,
537 false
538 );
539 // First, we unload the CodeMirror libraries included in WP core
540 wp_deregister_script( 'wp-codemirror' );
541 wp_deregister_script( 'code-editor' );
542 wp_deregister_script( 'htmlhint' );
543 wp_deregister_script( 'csslint' );
544 wp_deregister_script( 'esprima' );
545 wp_deregister_script( 'jshint' );
546 // Then, we load ASENHA's CodeMirror libraries. In use, e.g. for Utilities >> Enable Custom Admin / Frontend CSS / ads.txt / app-ads.txt
547 wp_enqueue_style(
548 'asenha-codemirror',
549 ASENHA_URL . 'assets/css/codemirror/codemirror.min.css',
550 array(),
551 ASENHA_VERSION
552 );
553 wp_enqueue_script(
554 'asenha-codemirror',
555 ASENHA_URL . 'assets/js/codemirror/codemirror.min.js',
556 array('jquery'),
557 ASENHA_VERSION,
558 true
559 );
560 wp_enqueue_script(
561 'asenha-codemirror-htmlmixed-mode',
562 ASENHA_URL . 'assets/js/codemirror/htmlmixed.js',
563 array('asenha-codemirror'),
564 ASENHA_VERSION,
565 true
566 );
567 wp_enqueue_script(
568 'asenha-codemirror-xml-mode',
569 ASENHA_URL . 'assets/js/codemirror/xml.js',
570 array('asenha-codemirror'),
571 ASENHA_VERSION,
572 true
573 );
574 wp_enqueue_script(
575 'asenha-codemirror-javascript-mode',
576 ASENHA_URL . 'assets/js/codemirror/javascript.js',
577 array('asenha-codemirror'),
578 ASENHA_VERSION,
579 true
580 );
581 wp_enqueue_script(
582 'asenha-codemirror-css-mode',
583 ASENHA_URL . 'assets/js/codemirror/css.js',
584 array('asenha-codemirror'),
585 ASENHA_VERSION,
586 true
587 );
588 wp_enqueue_script(
589 'asenha-codemirror-markdown-mode',
590 ASENHA_URL . 'assets/js/codemirror/markdown.js',
591 array('asenha-codemirror'),
592 ASENHA_VERSION,
593 true
594 );
595 // DataTables. In use, e.g. for Security >> Limit Login Attempts
596 wp_enqueue_style(
597 'asenha-datatables',
598 ASENHA_URL . 'assets/css/datatables/datatables.min.css',
599 array(),
600 ASENHA_VERSION
601 );
602 wp_enqueue_script(
603 'asenha-datatables',
604 ASENHA_URL . 'assets/js/datatables/datatables.min.js',
605 array('jquery'),
606 ASENHA_VERSION,
607 false
608 );
609 // Add WP media library assets
610 wp_enqueue_media();
611 // Add WP color picker assets
612 wp_enqueue_style( 'wp-color-picker' );
613 wp_enqueue_script( 'wp-color-picker' );
614 // We force loading the uncompressed version of TinyMCE. This ensures we load 'wp-tinymce-root' and then 'wp-tinymce',
615 // which prevents issue where the Visual tab is unusable in some scenarios
616 $wp_scripts = wp_scripts();
617 $wp_scripts->remove( 'wp-tinymce' );
618 wp_register_tinymce_scripts( $wp_scripts, true );
619 // Main style and script for the admin page
620 wp_enqueue_style(
621 'asenha-admin-page',
622 ASENHA_URL . 'assets/css/admin-page.css',
623 array(
624 'asenha-jbox',
625 'asenha-codemirror',
626 'asenha-datatables',
627 'wp-color-picker'
628 ),
629 ASENHA_VERSION
630 );
631 wp_enqueue_script(
632 'asenha-admin-page',
633 ASENHA_URL . 'assets/js/admin-page.js',
634 array(
635 'asenha-jsticky',
636 'asenha-jbox',
637 'asenha-js-cookie',
638 'asenha-codemirror-htmlmixed-mode',
639 'asenha-codemirror-xml-mode',
640 'asenha-codemirror-javascript-mode',
641 'asenha-codemirror-css-mode',
642 'asenha-codemirror-markdown-mode',
643 'asenha-datatables',
644 'asenha-custom-admin-menu',
645 'wp-color-picker',
646 'wp-mediaelement',
647 'wp-tinymce-root',
648 'wp-tinymce'
649 ),
650 ASENHA_VERSION,
651 false
652 );
653 wp_localize_script( 'asenha-admin-page', 'adminPageVars', array(
654 'siteUrl' => get_site_url(),
655 'wpcontentUrl' => content_url(),
656 'mediaFrameTitle' => __( 'Select an Image', 'admin-site-enhancements' ),
657 'mediaFrameButtonText' => __( 'Use Selected Image', 'admin-site-enhancements' ),
658 'resetMenuNonce' => wp_create_nonce( 'reset-menu-nonce' ),
659 'sendTestEmailNonce' => wp_create_nonce( 'send-test-email-nonce_' . get_current_user_id() ),
660 'expandText' => __( 'Expand', 'admin-site-enhancements' ),
661 'collapseText' => __( 'Collapse', 'admin-site-enhancements' ),
662 'dataTable' => array(
663 'emptyTable' => __( 'No data available in table', 'admin-site-enhancements' ),
664 'info' => __( 'Showing _START_ to _END_ of _TOTAL_ entries', 'admin-site-enhancements' ),
665 'infoEmpty' => __( 'Showing 0 to 0 of 0 entries', 'admin-site-enhancements' ),
666 'infoFiltered' => __( '(filtered from _MAX_ total entries)', 'admin-site-enhancements' ),
667 'lengthMenu' => __( 'Show _MENU_ entries', 'admin-site-enhancements' ),
668 'search' => __( 'Search:', 'admin-site-enhancements' ),
669 'zeroRecords' => __( 'No matching records found', 'admin-site-enhancements' ),
670 'paginate' => array(
671 'first' => __( 'First', 'admin-site-enhancements' ),
672 'last' => __( 'Last', 'admin-site-enhancements' ),
673 'next' => __( 'Next', 'admin-site-enhancements' ),
674 'previous' => __( 'Previous', 'admin-site-enhancements' ),
675 ),
676 ),
677 ) );
678 }
679 // Enqueue on all wp-admin
680 wp_enqueue_style(
681 'asenha-wp-admin',
682 ASENHA_URL . 'assets/css/wp-admin.css',
683 array(),
684 ASENHA_VERSION
685 );
686 // Content Management >> Show IDs, for list tables in wp-admin, e.g. All Posts page
687 if ( false !== strpos( $current_screen->base, 'edit' ) || false !== strpos( $current_screen->base, 'users' ) || false !== strpos( $current_screen->base, 'upload' ) ) {
688 wp_enqueue_style(
689 'asenha-list-table',
690 ASENHA_URL . 'assets/css/list-table.css',
691 array(),
692 ASENHA_VERSION
693 );
694 }
695 // Content Management >> Enable Media Replacement
696 if ( $current_screen->base == 'upload' || $current_screen->id == 'attachment' ) {
697 // wp_enqueue_style( 'asenha-jbox', ASENHA_URL . 'assets/css/jBox.all.min.css', array(), ASENHA_VERSION );
698 // wp_enqueue_script( 'asenha-jbox', ASENHA_URL . 'assets/js/jBox.all.min.js', array(), ASENHA_VERSION, false );
699 wp_enqueue_style(
700 'asenha-media-replace',
701 ASENHA_URL . 'assets/css/media-replace.css',
702 array(),
703 ASENHA_VERSION
704 );
705 wp_enqueue_script(
706 'asenha-media-replace',
707 ASENHA_URL . 'assets/js/media-replace.js',
708 array(),
709 ASENHA_VERSION,
710 false
711 );
712 $media_replace = array(
713 'selectMediaText' => __( 'Select New Media File', 'admin-site-enhancements' ),
714 'performReplacementText' => __( 'Perform Replacement', 'admin-site-enhancements' ),
715 );
716 wp_localize_script( 'asenha-media-replace', 'mediaReplace', $media_replace );
717 }
718 // Utilities >> Email Delivery Log
719 if ( 'tools_page_email-delivery-log' == $hook_suffix ) {
720 wp_enqueue_style( 'jquery-ui-css', ASENHA_URL . 'assets/premium/css/jquery-ui/jquery-ui.min.css' );
721 wp_enqueue_style( 'asenha-email-delivery-log', ASENHA_URL . 'assets/premium/css/email-delivery-log.css' );
722 wp_enqueue_script( 'jquery-ui' );
723 // wp_enqueue_script( 'jquery-ui-datepicker' );
724 wp_enqueue_script( 'jquery-ui-tabs' );
725 wp_enqueue_script( 'asenha-email-delivery-log', ASENHA_URL . 'assets/premium/js/email-delivery-log.js' );
726 $nonce = wp_create_nonce( 'email-delivery-log' . get_current_user_id() );
727 wp_localize_script( 'asenha-email-delivery-log', 'emailLog', array(
728 'nonce' => $nonce,
729 ) );
730 }
731 // Utilities >> Image Sizes Panel∂
732 if ( 'post' == $current_screen->base && 'attachment' == $current_screen->id ) {
733 global $post;
734 // Only enqueue if the attachment is an image
735 if ( property_exists( $post, 'post_mime_type' ) && false !== strpos( $post->post_mime_type, 'image' ) ) {
736 wp_enqueue_style( 'asenha-image-sizes-panel', ASENHA_URL . 'assets/css/image-sizes-panel.css' );
737 }
738 }
739 // Code Snippets Manager
740 if ( 'post' == $current_screen->base && 'asenha_code_snippet' == $current_screen->id || 'edit' == $current_screen->base && 'edit-asenha_code_snippet' == $current_screen->id ) {
741 }
742 // Content Management >> Hide Admin Notices
743 if ( array_key_exists( 'hide_admin_notices', $options ) && $options['hide_admin_notices'] ) {
744 $hide_for_nonadmins = ( isset( $options['hide_admin_notices_for_nonadmins'] ) ? $options['hide_admin_notices_for_nonadmins'] : false );
745 $minimum_capability = 'manage_options';
746 if ( function_exists( 'bwasenha_fs' ) ) {
747 if ( $hide_for_nonadmins && bwasenha_fs()->can_use_premium_code__premium_only() ) {
748 $minimum_capability = 'read';
749 }
750 }
751 if ( current_user_can( $minimum_capability ) ) {
752 wp_enqueue_style(
753 'asenha-jbox',
754 ASENHA_URL . 'assets/css/jBox.all.min.css',
755 array(),
756 ASENHA_VERSION
757 );
758 wp_enqueue_script(
759 'asenha-jbox',
760 ASENHA_URL . 'assets/js/jBox.all.min.js',
761 array(),
762 ASENHA_VERSION,
763 false
764 );
765 wp_enqueue_style(
766 'asenha-hide-admin-notices',
767 ASENHA_URL . 'assets/css/hide-admin-notices.css',
768 array(),
769 ASENHA_VERSION
770 );
771 wp_enqueue_script(
772 'asenha-hide-admin-notices',
773 ASENHA_URL . 'assets/js/hide-admin-notices.js',
774 array('asenha-jbox'),
775 ASENHA_VERSION,
776 false
777 );
778 }
779 }
780 // Utilities >> Multiple User Roles
781 if ( array_key_exists( 'multiple_user_roles', $options ) && $options['multiple_user_roles'] ) {
782 if ( 'user-edit.php' == $hook_suffix || 'user-new.php' == $hook_suffix ) {
783 // Only replace roles dropdown with checkboxes for users that can assign roles to other users, e.g. administrators
784 if ( current_user_can( 'promote_users', get_current_user_id() ) ) {
785 wp_enqueue_script(
786 'asenha-multiple-user-roles',
787 ASENHA_URL . 'assets/js/multiple-user-roles.js',
788 array('jquery'),
789 ASENHA_VERSION,
790 false
791 );
792 }
793 }
794 }
795 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
796 $hide_promo_nudge = false;
797 // Pass on ASENHA stats to admin-page.js to determine whether to show support nudge
798 $current_date = date( 'Y-m-d', time() );
799 $show_support_nudge = false;
800 $asenha_stats_localized = array(
801 'firstSaveDate' => '',
802 'lastSaveDate' => '',
803 'saveCount' => 0,
804 'hideUpgradeNudge' => false,
805 'hidePromoNudge' => false,
806 'showSupportNudge' => false,
807 );
808 if ( !empty( $asenha_stats ) ) {
809 $hide_upgrade_nudge = ( isset( $asenha_stats['upgrade_nudge_dismissed'] ) ? $asenha_stats['upgrade_nudge_dismissed'] : false );
810 $hide_promo_nudge = ( isset( $asenha_stats['promo_nudge_dismissed'] ) ? $asenha_stats['promo_nudge_dismissed'] : false );
811 $have_supported = ( isset( $asenha_stats['have_supported'] ) ? $asenha_stats['have_supported'] : false );
812 $changes_saved = ( isset( $_GET['settings-updated'] ) && 'true' == sanitize_text_field( $_GET['settings-updated'] ) ? true : false );
813 $save_count = ( isset( $asenha_stats['save_count'] ) ? $asenha_stats['save_count'] : 0 );
814 // Compensate for redirect from settings-updated=true URL
815 if ( $changes_saved ) {
816 $save_count = $save_count + 1;
817 } else {
818 $save_count = $save_count;
819 }
820 $saves_to_nudge_support = 10;
821 if ( $save_count < $saves_to_nudge_support ) {
822 $save_count_modulo = -1;
823 } else {
824 $save_count_modulo = $save_count % $saves_to_nudge_support;
825 }
826 // User have not supported ASE
827 if ( false === $have_supported ) {
828 // Support nudge have not been dismissed
829 if ( isset( $asenha_stats['support_nudge_dismissed'] ) && false === $asenha_stats['support_nudge_dismissed'] ) {
830 // Show support nudge after every x saves
831 if ( $save_count_modulo >= 0 ) {
832 $show_support_nudge = true;
833 } else {
834 $show_support_nudge = false;
835 }
836 if ( $show_support_nudge && $save_count_modulo >= 0 ) {
837 $asenha_stats['support_nudge_last_shown_date'] = $current_date;
838 $asenha_stats['support_nudge_last_shown_save_count'] = $save_count;
839 update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
840 }
841 } else {
842 if ( $save_count_modulo == 0 ) {
843 $support_nudge_last_shown_save_count = ( isset( $asenha_stats['support_nudge_last_shown_save_count'] ) ? $asenha_stats['support_nudge_last_shown_save_count'] : 0 );
844 if ( $save_count > $support_nudge_last_shown_save_count ) {
845 $asenha_stats['support_nudge_dismissed'] = false;
846 update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
847 $show_support_nudge = true;
848 } else {
849 $show_support_nudge = false;
850 }
851 } else {
852 $show_support_nudge = false;
853 }
854 }
855 }
856 $first_save_date = ( isset( $asenha_stats['first_save_date'] ) ? $asenha_stats['first_save_date'] : '' );
857 $last_save_date = ( isset( $asenha_stats['last_save_date'] ) ? $asenha_stats['last_save_date'] : '' );
858 $asenha_stats_localized = array(
859 'firstSaveDate' => $first_save_date,
860 'lastSaveDate' => $last_save_date,
861 'saveCount' => $save_count,
862 'hideUpgradeNudge' => $hide_upgrade_nudge,
863 'hidePromoNudge' => $hide_promo_nudge,
864 'showSupportNudge' => $show_support_nudge,
865 );
866 }
867 wp_localize_script( 'asenha-admin-page', 'asenhaStats', $asenha_stats_localized );
868 }
869
870 /**
871 * Dequeue scripts that prevents ASE settings page from working properly. Usually from plugins.
872 *
873 * @since 6.3.3
874 */
875 function asenha_dequeue_scritps() {
876 if ( is_asenha() ) {
877 // https://wordpress.org/plugins/user-activity-log/
878 wp_dequeue_script( 'chats-js' );
879 wp_dequeue_script( 'custom_wp_admin_js' );
880 // https://wordpress.org/plugins/print-invoices-packing-slip-labels-for-woocommerce/
881 wp_dequeue_script( 'print-invoices-packing-slip-labels-for-woocommerce' );
882 wp_dequeue_script( 'print-invoices-packing-slip-labels-for-woocommerce-form-wizard' );
883 // https://wordpress.org/plugins/wp-reading-progress/
884 wp_dequeue_script( 'ruigehond006_admin_javascript' );
885 // WordPress Mentions Légales plugin v1.2.3 by Jean-Baptiste Aramendy - http://jba-development.fr/
886 wp_dequeue_script( 'jquery-ui' );
887 wp_dequeue_script( 'wordpress-mentions-legales' );
888 // https://wordpress.org/plugins/us-weather-widget-willyweather/
889 wp_dequeue_script( 'self' );
890 // iThemes Security Pro / Solid Security Pro
891 wp_dequeue_script( 'itsec-core-admin-notices' );
892 // WPML
893 wp_dequeue_script( 'wpml-ate-jobs-sync-ui' );
894 wp_dequeue_script( 'wpml-purify' );
895 wp_dequeue_script( 'sitepress-scripts' );
896 wp_dequeue_script( 'sitepress' );
897 wp_dequeue_script( 'wpml-dismiss-notice' );
898 wp_dequeue_script( 'wpml-tm-scripts' );
899 wp_dequeue_script( 'otgs-installer-components-save-setting' );
900 wp_dequeue_script( 'installer-dismiss-nag' );
901 wp_dequeue_script( 'install-recommended_plugin' );
902 wp_dequeue_script( 'icl-admin-notifier' );
903 wp_dequeue_script( 'otgsPopoverTooltip' );
904 // WPML String Translation
905 wp_dequeue_script( 'wpml-theme-plugin-localization-scan' );
906 // Asset Cleanup
907 wp_dequeue_script( 'wpassetcleanup-script' );
908 }
909 }
910
911 /**
912 * Enqueue public scripts
913 *
914 * @since 3.9.0
915 */
916 function asenha_public_scripts( $hook_suffix ) {
917 // Get all WP Enhancements options, default to empty array in case it's not been created yet
918 $options = get_option( 'admin_site_enhancements', array() );
919 // External Permalinks
920 $enable_external_permalinks = ( array_key_exists( 'enable_external_permalinks', $options ) ? $options['enable_external_permalinks'] : false );
921 if ( $enable_external_permalinks ) {
922 wp_enqueue_script(
923 'asenha-public',
924 ASENHA_URL . 'assets/js/external-permalinks.js',
925 array(),
926 ASENHA_VERSION,
927 false
928 );
929 wp_localize_script( 'asenha-public', 'phpVars', array(
930 'externalPermalinksEnabled' => $enable_external_permalinks,
931 ) );
932 }
933 // Media Categories
934 $enable_media_categories = ( array_key_exists( 'enable_media_categories', $options ) ? $options['enable_media_categories'] : false );
935 if ( $enable_media_categories && !is_admin() && is_user_logged_in() ) {
936 wp_enqueue_style(
937 'asenha-media-categories-frontend',
938 ASENHA_URL . 'assets/css/media-categories-frontend.css',
939 array(),
940 ASENHA_VERSION
941 );
942 }
943 // Media Replacement
944 $enable_media_replacement = ( array_key_exists( 'enable_media_replacement', $options ) ? $options['enable_media_replacement'] : false );
945 if ( $enable_media_replacement && is_user_logged_in() ) {
946 wp_enqueue_style(
947 'asenha-media-replace-frontend',
948 ASENHA_URL . 'assets/css/media-replace-frontend.css',
949 array(),
950 ASENHA_VERSION
951 );
952 }
953 }
954
955 /**
956 * Add admin bar styles for wp-admin and frontend
957 *
958 * @since 6.2.1
959 */
960 function asenha_admin_bar_item_js_css() {
961 if ( is_user_logged_in() ) {
962 ?>
963 <!--<script></script>-->
964 <style>
965 #wp-admin-bar-user-info .avatar {
966 object-fit: cover;
967 }
968 </style>
969 <?php
970 }
971 }
972
973 /**
974 * Add 'Access now' plugin action link.
975 *
976 * @since 1.0.0
977 */
978 function asenha_plugin_action_links( $links ) {
979 $settings_link = '<a href="tools.php?page=' . ASENHA_SLUG . '">' . __( 'Configure', 'admin-site-enhancements' ) . '</a>';
980 array_unshift( $links, $settings_link );
981 return $links;
982 }
983
984 /**
985 * Modify footer text
986 *
987 * @since 1.0.0
988 */
989 function asenha_footer_text() {
990 // Show nothing
991 ?>
992 <?php
993 }
994
995 /**
996 * Change WP version number text in footer
997 *
998 * @since 4.8.3
999 */
1000 function asenha_footer_version_text() {
1001 ?>
1002 ASE <a href="https://www.wpase.com/documentation/changelog/" target="_blank">v<?php
1003 echo esc_html( ASENHA_VERSION );
1004 ?></a>
1005 <?php
1006 }
1007
1008 /**
1009 * Check if current screen is this plugin's main page
1010 *
1011 * @since 1.0.0
1012 */
1013 function is_asenha() {
1014 $request_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] );
1015 // e.g. /wp-admin/index.php?page=page-slug
1016 if ( strpos( $request_uri, 'page=' . ASENHA_SLUG ) !== false ) {
1017 return true;
1018 // Yes, this is the plugin's main page
1019 } else {
1020 return false;
1021 // Nope, this is NOT the plugin's page
1022 }
1023 }
1024
1025 /**
1026 * Mark that user have supported ASE
1027 *
1028 * @since 5.2.7
1029 */
1030 function asenha_have_supported() {
1031 if ( isset( $_REQUEST ) ) {
1032 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
1033 $asenha_stats['have_supported'] = true;
1034 $asenha_stats['support_nudge_dismissed'] = true;
1035 $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
1036 if ( $success ) {
1037 echo json_encode( array(
1038 'success' => true,
1039 ) );
1040 } else {
1041 echo json_encode( array(
1042 'success' => false,
1043 ) );
1044 }
1045 }
1046 }
1047
1048 /**
1049 * Dismiss support nudge
1050 *
1051 * @since 5.8.2
1052 */
1053 function asenha_dismiss_upgrade_nudge() {
1054 if ( isset( $_REQUEST ) ) {
1055 $current_date = date( 'Y-m-d', time() );
1056 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
1057 $asenha_stats['upgrade_nudge_dismissed'] = true;
1058 $asenha_stats['upgrade_nudge_dismissed_date'] = $current_date;
1059 $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
1060 if ( $success ) {
1061 echo json_encode( array(
1062 'success' => true,
1063 ) );
1064 } else {
1065 echo json_encode( array(
1066 'success' => false,
1067 ) );
1068 }
1069 }
1070 }
1071
1072 /**
1073 * Dismiss promo nudge
1074 *
1075 * @since 7.5.1
1076 */
1077 function asenha_dismiss_promo_nudge() {
1078 if ( isset( $_REQUEST ) ) {
1079 $current_date = date( 'Y-m-d', time() );
1080 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
1081 $asenha_stats['promo_nudge_dismissed'] = true;
1082 $asenha_stats['promo_nudge_dismissed_date'] = $current_date;
1083 $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
1084 if ( $success ) {
1085 echo json_encode( array(
1086 'success' => true,
1087 ) );
1088 } else {
1089 echo json_encode( array(
1090 'success' => false,
1091 ) );
1092 }
1093 }
1094 }
1095
1096 /**
1097 * Dismiss support nudge
1098 *
1099 * @since 5.2.7
1100 */
1101 function asenha_dismiss_support_nudge() {
1102 if ( isset( $_REQUEST ) ) {
1103 $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
1104 $asenha_stats['support_nudge_dismissed'] = true;
1105 $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
1106 if ( $success ) {
1107 echo json_encode( array(
1108 'success' => true,
1109 ) );
1110 } else {
1111 echo json_encode( array(
1112 'success' => false,
1113 ) );
1114 }
1115 }
1116 }
1117