Changeset 2962829
- Timestamp:
- 09/05/2023 07:17:23 AM (2 years ago)
- Location:
- fiber-admin
- Files:
-
- 24 added
- 2 deleted
- 20 edited
- 1 copied
-
tags/3.1.0 (copied) (copied from fiber-admin/trunk)
-
tags/3.1.0/assets/csm (added)
-
tags/3.1.0/assets/csm/coming-soon.html (added)
-
tags/3.1.0/assets/csm/default.css (added)
-
tags/3.1.0/assets/csm/maintenance.html (added)
-
tags/3.1.0/assets/css/fiber-csm.css (added)
-
tags/3.1.0/assets/images (added)
-
tags/3.1.0/assets/images/csm-background.jpg (added)
-
tags/3.1.0/changelog.txt (modified) (1 diff)
-
tags/3.1.0/fiberadmin.php (modified) (6 diffs)
-
tags/3.1.0/includes/attachment.php (modified) (1 diff)
-
tags/3.1.0/includes/content.php (modified) (1 diff)
-
tags/3.1.0/includes/csm-mode.php (added)
-
tags/3.1.0/includes/db-error.php (modified) (6 diffs)
-
tags/3.1.0/includes/default.php (modified) (1 diff)
-
tags/3.1.0/includes/helper.php (deleted)
-
tags/3.1.0/includes/helpers.php (added)
-
tags/3.1.0/includes/settings/csm-mode.php (added)
-
tags/3.1.0/includes/settings/db-error.php (modified) (11 diffs)
-
tags/3.1.0/includes/settings/setting.php (modified) (6 diffs)
-
tags/3.1.0/includes/settings/white-label.php (modified) (13 diffs)
-
tags/3.1.0/readme.txt (modified) (2 diffs)
-
tags/3.1.0/templates (added)
-
tags/3.1.0/templates/csm-mode.php (added)
-
trunk/assets/csm (added)
-
trunk/assets/csm/coming-soon.html (added)
-
trunk/assets/csm/default.css (added)
-
trunk/assets/csm/maintenance.html (added)
-
trunk/assets/css/fiber-csm.css (added)
-
trunk/assets/images (added)
-
trunk/assets/images/csm-background.jpg (added)
-
trunk/changelog.txt (modified) (1 diff)
-
trunk/fiberadmin.php (modified) (6 diffs)
-
trunk/includes/attachment.php (modified) (1 diff)
-
trunk/includes/content.php (modified) (1 diff)
-
trunk/includes/csm-mode.php (added)
-
trunk/includes/db-error.php (modified) (6 diffs)
-
trunk/includes/default.php (modified) (1 diff)
-
trunk/includes/helper.php (deleted)
-
trunk/includes/helpers.php (added)
-
trunk/includes/settings/csm-mode.php (added)
-
trunk/includes/settings/db-error.php (modified) (11 diffs)
-
trunk/includes/settings/setting.php (modified) (6 diffs)
-
trunk/includes/settings/white-label.php (modified) (13 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/templates (added)
-
trunk/templates/csm-mode.php (added)
Legend:
- Unmodified
- Added
- Removed
-
fiber-admin/tags/3.1.0/changelog.txt
r2931908 r2962829 1 1 == Changelog == 2 3 = 3.1.0 = 4 *Release Date - 05 September 2023* 5 6 * New feature: Coming Soon & Maintenance Mode. 7 * Changed: Improve email regex pattern. 8 * Fixed: Apply new code for database error to prevent the wrong URLs exist. 2 9 3 10 = 3.0.0 = -
fiber-admin/tags/3.1.0/fiberadmin.php
r2931908 r2962829 4 4 * Plugin URI: https://wordpress.org/plugins/fiber-admin/ 5 5 * Description: 💈 Bring multiple customization features to make your own WordPress admin. 6 * Version: 3. 0.06 * Version: 3.1.0 7 7 * Requires at least: 5.2 8 8 * Requires PHP: 7.0 … … 32 32 33 33 define("FIBERADMIN_VERSION", $plugin_data['Version']); 34 const FIBERADMIN_DEV_MODE = false;34 const FIBERADMIN_DEV_MODE = true; 35 35 const FIBERADMIN_FILENAME = __FILE__; 36 36 define("FIBERADMIN_DIR", plugin_dir_path(__FILE__)); 37 37 define("FIBERADMIN_ASSETS_URL", plugin_dir_url(__FILE__) . 'assets/'); 38 39 // Coming Soon / Maintenance 40 const FIBERADMIN_ASSETS_DIR = FIBERADMIN_DIR . 'assets/'; 41 const FIBERADMIN_CSM_PATH = FIBERADMIN_DIR . 'templates/csm-mode.php'; 42 const FIBERADMIN_CSM_TEMPLATE = 'csm.php'; 38 43 39 44 /** … … 44 49 function fiad_init(){ 45 50 // helper functions 46 include_once(FIBERADMIN_DIR . 'includes/helper .php');51 include_once(FIBERADMIN_DIR . 'includes/helpers.php'); 47 52 48 53 // options pages … … 53 58 include_once(FIBERADMIN_DIR . 'includes/settings/db-error.php'); 54 59 include_once(FIBERADMIN_DIR . 'includes/settings/miscellaneous.php'); 60 include_once(FIBERADMIN_DIR . 'includes/settings/csm-mode.php'); 55 61 56 62 //default functions … … 65 71 include_once(FIBERADMIN_DIR . 'includes/db-error.php'); 66 72 include_once(FIBERADMIN_DIR . 'includes/attachment.php'); 73 include_once(FIBERADMIN_DIR . 'includes/csm-mode.php'); 67 74 } 68 75 … … 128 135 return $links; 129 136 } 137 138 add_action('admin_head', 'fiad_admin_additional_css'); 139 function fiad_admin_additional_css(){ 140 $page_csm_ids = fiad_get_page_template_ids("csm", true, true); 141 if($page_csm_ids){ 142 $extra_styles = '<style>'; 143 foreach($page_csm_ids as $index => $id){ 144 $extra_styles .= $index > 0 ? ',' : ''; 145 $extra_styles .= '#the-list #post-' . $id . ' .column-title .row-title:before'; 146 } 147 $extra_styles .= ' 148 {content: "CSM"; 149 background-color: #f3efe3; 150 color: #333; 151 display: inline-block; 152 padding: 0 5px; 153 margin-right: 10px;}'; 154 $extra_styles .= '</style>'; 155 156 echo $extra_styles; 157 } 158 } 159 160 /** 161 * Enqueue admin script 162 */ 163 164 add_action('admin_enqueue_scripts', 'fiad_enqueue_admin_script'); 165 function fiad_enqueue_admin_script(){ 166 $suffix = ''; 167 if(!FIBERADMIN_DEV_MODE){ 168 $suffix = '.min'; 169 } 170 wp_register_script('fiber-admin', FIBERADMIN_ASSETS_URL . 'js/fiber-admin' . $suffix . '.js', ['jquery'], FIBERADMIN_VERSION); 171 } -
fiber-admin/tags/3.1.0/includes/attachment.php
r2931908 r2962829 38 38 39 39 public function fiad_cleanup_attachment_name($filename, $filename_raw){ 40 //variable 41 $path_info = pathinfo($filename); 42 $file_extension = fiad_array_key_exists('extension', $path_info); 43 $sanitized_filename = basename($filename, "." . $file_extension); 40 $file_extension = pathinfo($filename, PATHINFO_EXTENSION); 41 $exclude_exts = ['css', 'js']; // only apply for media attachment, not for code 44 42 45 $sanitized_filename = strtolower($sanitized_filename); 46 47 //handle urlencoded chars 48 preg_match_all('/%[0-9A-Fa-f]{2}/', $filename_raw, $matches); 49 $urlencoded_chars = $matches[0]; 50 if($urlencoded_chars){ 51 $urlencoded_chars = array_map(function($char){ 52 return strtolower(trim($char, '%')); 53 }, $urlencoded_chars); 54 $sanitized_filename = str_replace($urlencoded_chars, "", $sanitized_filename); 43 if($file_extension && !in_array($file_extension, $exclude_exts)){ 44 $sanitized_filename = basename($filename, "." . $file_extension); 45 $sanitized_filename = strtolower($sanitized_filename); 46 47 //handle urlencoded chars 48 preg_match_all('/%[0-9A-Fa-f]{2}/', $filename_raw, $matches); 49 $urlencoded_chars = fiad_array_key_exists(0, $matches); 50 if($urlencoded_chars){ 51 $urlencoded_chars = array_map(function($char){ 52 return strtolower(trim($char, '%')); 53 }, $urlencoded_chars); 54 $sanitized_filename = str_replace($urlencoded_chars, "", $sanitized_filename); 55 } 56 57 //special chars case 58 $sanitized_filename = $this->fiad_handle_special_chars($sanitized_filename); 59 60 return $sanitized_filename . "." . $file_extension; 55 61 } 56 62 57 //special chars case 58 $sanitized_filename = $this->fiad_handle_special_chars($sanitized_filename); 59 60 return $sanitized_filename . "." . $file_extension; 63 return $filename; 61 64 } 62 65 -
fiber-admin/tags/3.1.0/includes/content.php
r2931908 r2962829 41 41 42 42 public function fiad_auto_convert_email_address($content){ 43 $enable_auto_convert = true; 43 $content = do_shortcode($content);// get content without shortcode 44 $content_pattern = "/>([^<]*)</"; 44 45 45 // Skip if the content has mailto link 46 if(strpos($content, 'mailto') !== false){ 47 return $content; 48 } 46 return preg_replace_callback($content_pattern, [$this, 'fiad_replace_email_with_link'], $content); 47 } 48 49 public function fiad_replace_email_with_link($matches){ 50 $email_pattern = "/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,})/"; 51 $replace = '<a href="mailto:$1" title="$1">$1</a>'; 52 // matches[0]: return the whole content with html tags 53 // matches[1]: return the content between tags 54 $email_content = $matches[1]; 55 $new_content = preg_replace($email_pattern, $replace, $email_content); 49 56 50 // Skip if the content has email in HTML attribute 51 $att_email_regex = '/<\w+.*?\K[\w-]+=["\']*\s*(?:\w+\s*)*[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\s*(?:[\'"]?(?:\w+\s*)*[\'"]?)?["\']*(?=.*?>)/mi'; 52 preg_match($att_email_regex, $content, $email_matches); 53 if($email_matches){ 54 $enable_auto_convert = false; 55 } 56 57 // Skip replace email address 58 if(!$enable_auto_convert){ 59 return $content; 60 } 61 62 // Detect and create email link 63 $search = ['/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,})/']; 64 $replace = ['<a href="mailto:$1" title="$1">$1</a>']; 65 66 return preg_replace($search, $replace, $content); 57 return str_replace($matches[1], $new_content, $matches[0]); 67 58 } 68 59 -
fiber-admin/tags/3.1.0/includes/db-error.php
r2745323 r2962829 10 10 class Fiber_Admin_DB_Error{ 11 11 public function __construct(){ 12 add_action('admin_init', array($this, 'fiad_db_error_file'));13 register_activation_hook(FIBERADMIN_FILENAME, array($this, 'fiad_db_error_file'));14 register_deactivation_hook(FIBERADMIN_FILENAME, array($this, 'fiad_remove_db_error_file'));12 add_action('admin_init', [$this, 'fiad_db_error_file']); 13 register_activation_hook(FIBERADMIN_FILENAME, [$this, 'fiad_db_error_file']); 14 register_deactivation_hook(FIBERADMIN_FILENAME, [$this, 'fiad_remove_db_error_file']); 15 15 } 16 16 … … 23 23 $content_htaccess = WP_CONTENT_DIR . '/.htaccess'; 24 24 if(file_exists($content_htaccess)){ 25 $lines = array();25 $lines = []; 26 26 $lines[] = '<Files db-error.php>'; 27 27 $lines[] = ' Allow From All'; … … 40 40 $bg_color = fiad_get_db_error_option('db_error_bg'); 41 41 $style = $bg_color ? 'body {background-color: ' . $bg_color . '}' : ''; 42 $server = $_SERVER; 43 $http = fiad_array_key_exists('HTTPS', $server) ? "https://" : "http://"; 44 $http_host = $http . fiad_array_key_exists('HTTP_HOST', $server); 42 45 43 46 $php = '<?php'; … … 48 51 $php .= PHP_EOL; 49 52 $php .= 'header(\'Retry-After: 3600\');'; 53 $php .= PHP_EOL; 54 $php .= '$absolute_url = "' . $http_host . '" . explode($_SERVER[\'DOCUMENT_ROOT\'], __DIR__)[1];'; 50 55 $php .= PHP_EOL; 51 56 $php .= '?>'; … … 76 81 } 77 82 </style>"; 78 $html .= '<link rel="icon" type="image/png" href=" ' . get_site_icon_url() . '"/>';83 $html .= '<link rel="icon" type="image/png" href="<?= $absolute_url; ?>' . fiad_get_file_upload_path(get_site_icon_url()) . '"/>'; 79 84 $html .= '</head>'; 80 85 $html .= '<body class="db-error">'; … … 85 90 if($logo){ 86 91 $html .= '<div class="db-error__logo">'; 87 $html .= '<img src=" ' . $logo. '" alt="' . get_bloginfo('name') . '" width="' . $logo_width . '" height="' . $logo_height . '"/>';92 $html .= '<img src="<?= $absolute_url; ?>' . fiad_get_file_upload_path($logo) . '" alt="' . get_bloginfo('name') . '" width="' . $logo_width . '" height="' . $logo_height . '"/>'; 88 93 $html .= '</div>'; 89 94 } -
fiber-admin/tags/3.1.0/includes/default.php
r2912732 r2962829 40 40 if(!fiad_get_general_option('enable_admin_toolbar')){ 41 41 add_filter('show_admin_bar', '__return_false'); 42 add_action('wp_print_styles', [$this, 'fiad_deregister_styles'], 100); 43 }elseif(!fiad_is_admin_user_role()){ 42 44 add_action('wp_print_styles', [$this, 'fiad_deregister_styles'], 100); 43 45 } -
fiber-admin/tags/3.1.0/includes/settings/db-error.php
r2696536 r2962829 17 17 'fiad_db_error_group', 18 18 'fiad_db_error', 19 array($this, 'sanitize_text_field')19 [$this, 'sanitize_text_field'] 20 20 ); 21 21 … … 23 23 'fiad_db_error_section', 24 24 '<span class="dashicons dashicons-admin-generic"></span> General', 25 array($this, 'fiad_section_info'),25 [$this, 'fiad_section_info'], 26 26 'fiber-admin-db-error' 27 27 ); … … 30 30 'db_error_enable', // id 31 31 'Activate', // title 32 array($this, 'fiad_db_error_enable'), // callback32 [$this, 'fiad_db_error_enable'], // callback 33 33 'fiber-admin-db-error', // page 34 34 'fiad_db_error_section' // section … … 38 38 'db_error_title', 39 39 'Title', 40 array($this, 'fiad_db_error_title'),40 [$this, 'fiad_db_error_title'], 41 41 'fiber-admin-db-error', 42 42 'fiad_db_error_section' … … 46 46 'db_error_logo', 47 47 'Logo', 48 array($this, 'fiad_db_error_logo'),48 [$this, 'fiad_db_error_logo'], 49 49 'fiber-admin-db-error', 50 50 'fiad_db_error_section' … … 54 54 'db_error_logo_size', 55 55 'Logo size', 56 array($this, 'fiad_db_error_logo_size'),56 [$this, 'fiad_db_error_logo_size'], 57 57 'fiber-admin-db-error', 58 58 'fiad_db_error_section' … … 62 62 'db_error_bg_color', 63 63 'Background Color', 64 array($this, 'fiad_db_error_bg'),64 [$this, 'fiad_db_error_bg'], 65 65 'fiber-admin-db-error', 66 66 'fiad_db_error_section' … … 70 70 'db_error_message', 71 71 'Error Message', 72 array($this, 'fiad_db_error_message'),72 [$this, 'fiad_db_error_message'], 73 73 'fiber-admin-db-error', 74 74 'fiad_db_error_section' … … 78 78 'db_error_extra_css', 79 79 'Extra CSS', 80 array($this, 'fiad_db_error_extra_css'),80 [$this, 'fiad_db_error_extra_css'], 81 81 'fiber-admin-db-error', 82 82 'fiad_db_error_section' … … 164 164 $db_error_message = $default_error_message; 165 165 } 166 wp_editor($db_error_message, 'db_error_message', array(166 wp_editor($db_error_message, 'db_error_message', [ 167 167 'default_editor' => 'tinymce', 168 168 'textarea_name' => 'fiad_db_error[db_error_message]', 169 169 'media_buttons' => false, 170 170 'textarea_rows' => 5, 171 ));171 ]); 172 172 ?> 173 173 </fieldset> … … 176 176 177 177 public function fiad_db_error_extra_css(){ 178 $id = "db-error-extra-css"; 179 fiad_code_editor('text/css', $id); 178 180 ?> 179 181 <fieldset> 180 182 <textarea 183 id=<?= $id; ?> 181 184 name="fiad_db_error[db_error_extra_css]"><?php echo esc_html(fiad_get_db_error_option('db_error_extra_css')); ?></textarea> 182 185 </fieldset> -
fiber-admin/tags/3.1.0/includes/settings/setting.php
r2707981 r2962829 11 11 12 12 public function __construct(){ 13 add_action('admin_menu', array($this, 'fiad_setting'));14 add_action('admin_init', array($this, 'fiad_setting_init'));13 add_action('admin_menu', [$this, 'fiad_setting']); 14 add_action('admin_init', [$this, 'fiad_setting_init']); 15 15 16 16 // register styles 17 add_action("admin_enqueue_scripts", array($this, 'fiad_styles'));17 add_action("admin_enqueue_scripts", [$this, 'fiad_styles']); 18 18 } 19 19 … … 44 44 'manage_options', 45 45 'fiber-admin', 46 array($this, 'fiad_setting_html')46 [$this, 'fiad_setting_html'] 47 47 ); 48 48 } … … 88 88 89 89 public function fiad_setting_tabs(){ 90 return array(90 return [ 91 91 'white-label' => 'White Label', 92 92 'cpo' => 'Custom Post Order', 93 93 'duplicate' => 'Duplicate Post', 94 94 'db-error' => 'Database Error', 95 'csm-mode' => 'Coming Soon & Maintenance Mode', 95 96 'miscellaneous' => 'Miscellaneous', 96 );97 ]; 97 98 } 98 99 … … 127 128 $miscellaneous->fiad_miscellaneous_init(); 128 129 break; 130 case 'csm-mode': 131 $csm_mode = new Fiber_Admin_CSM_Mode_Settings(); 132 $csm_mode->fiad_csm_mode_init(); 133 break; 129 134 default: 130 135 $white_label = new Fiber_Admin_White_Label_Settings(); … … 136 141 do_settings_sections('fiber-admin-' . $current); 137 142 143 $this->fiad_preview_mode($current); 144 } 145 146 public function fiad_preview_mode($current){ 147 $message = __('Please enable "Activate" option and save the settings first!', 'fiber-admin'); 138 148 if($current == 'db-error'){ 149 $can_preview = fiad_check_db_error_file(); 150 $url = content_url('db-error.php'); 151 }else{ 152 $mode = fiad_get_csm_mode_option('mode'); 153 $can_preview = (bool) fiad_get_csm_mode_option('page'); 154 $url = get_site_url() . '/' . $mode . '?preview=true'; 155 $message = __('Please "Save Changes" for the first time', 'fiber-admin'); 156 } 157 if($current == 'db-error' || $current == 'csm-mode'){ 139 158 echo '<input type="submit" name="fiber-admin-submit" id="fiber-admin-submit" class="button button-primary" value="Save Changes">'; 140 if(! fiad_check_db_error_file()){159 if(!$can_preview){ 141 160 ?> 142 <p class="description"><?php echo __('Preview is not available. Please enable "Activate" option and save the settings first!', 'fiber-admin'); ?></p>161 <p class="description"><?php echo __('Preview is not available. ' . $message, 'fiber-admin'); ?></p> 143 162 <?php 144 163 }else{ 145 164 $txt_preview = __('Preview', 'fiber-admin'); 146 165 ?> 147 <a class="button" href="<?php echo content_url('db-error.php'); ?>" target="_blank"166 <a class="button" href="<?php echo $url; ?>" target="_blank" 148 167 title="<?php echo $txt_preview; ?>"> 149 168 <?php echo $txt_preview; ?> … … 177 196 $option_key = 'fiad_miscellaneous'; 178 197 break; 198 case 'csm-mode': 199 $option_key = 'fiad_csm_mode'; 200 break; 179 201 default: 180 202 $option_key = 'fiber_admin'; 181 203 break; 182 204 } 205 206 $ignore_key = [ 207 'db_error_message', 208 'csm_extra_css', 209 'csm_extra_js', 210 'db_error_extra_css', 211 'login_extra_css', 212 ]; 183 213 184 214 if(isset($_POST[$option_key])){ 185 215 $options = $new_options = $_POST[$option_key]; 186 216 foreach($options as $key => $value){ 187 if( $key != 'db_error_message'&& !is_array($new_options[$key])){217 if(!in_array($key, $ignore_key) && !is_array($new_options[$key])){ 188 218 $new_options[$key] = sanitize_text_field($value); 189 219 } 190 220 } 191 221 }else{ 192 $new_options = array();222 $new_options = []; 193 223 } 194 224 -
fiber-admin/tags/3.1.0/includes/settings/white-label.php
r2857421 r2962829 22 22 23 23 // Plugin scripts 24 $suffix = ''; 25 if(!FIBERADMIN_DEV_MODE){ 26 $suffix = '.min'; 27 } 28 wp_enqueue_script('fiber-admin', FIBERADMIN_ASSETS_URL . 'js/fiber-admin' . $suffix . '.js', array('jquery'), FIBERADMIN_VERSION); 24 wp_enqueue_script('fiber-admin'); 29 25 } 30 26 … … 33 29 'fiad_white_label_group', 34 30 'fiber-admin-white-label', 35 array($this, 'sanitize_text_field')31 [$this, 'sanitize_text_field'] 36 32 ); 37 33 … … 39 35 'fiad_branding_section', 40 36 '<span class="dashicons dashicons-wordpress"></span> Branding', 41 array($this, 'fiad_section_info'),37 [$this, 'fiad_section_info'], 42 38 'fiber-admin-white-label' 43 39 ); … … 46 42 'hide_wordpress_branding', // id 47 43 'Hide WordPress Branding', // title 48 array($this, 'fiad_hide_wordpress_branding'), // callback44 [$this, 'fiad_hide_wordpress_branding'], // callback 49 45 'fiber-admin-white-label', // page 50 46 'fiad_branding_section' // section … … 54 50 'enable_admin_toolbar', // id 55 51 'Enable Admin Toolbar', // title 56 array($this, 'fiad_enable_admin_toolbar'), // callback52 [$this, 'fiad_enable_admin_toolbar'], // callback 57 53 'fiber-admin-white-label', // page 58 54 'fiad_branding_section' // section … … 62 58 'fiad_white_label_section', 63 59 '<span class="dashicons dashicons-admin-network"></span> Login', 64 array($this, 'fiad_section_info'),60 [$this, 'fiad_section_info'], 65 61 'fiber-admin-white-label' 66 62 ); … … 69 65 'login_logo', 70 66 'Logo', 71 array($this, 'fiad_login_logo'),67 [$this, 'fiad_login_logo'], 72 68 'fiber-admin-white-label', 73 69 'fiad_white_label_section' … … 77 73 'login_logo_size', 78 74 'Logo size', 79 array($this, 'fiad_login_logo_size'),75 [$this, 'fiad_login_logo_size'], 80 76 'fiber-admin-white-label', 81 77 'fiad_white_label_section' … … 85 81 'login_bg_color', 86 82 'Background Color / Image', 87 array($this, 'fiad_login_bg'),83 [$this, 'fiad_login_bg'], 88 84 'fiber-admin-white-label', 89 85 'fiad_white_label_section' … … 93 89 'form_color', 94 90 'Form', 95 array($this, 'fiad_form'),91 [$this, 'fiad_form'], 96 92 'fiber-admin-white-label', 97 93 'fiad_white_label_section' … … 101 97 'link_color', 102 98 'Link', 103 array($this, 'fiad_link'),99 [$this, 'fiad_link'], 104 100 'fiber-admin-white-label', 105 101 'fiad_white_label_section' … … 109 105 'login_extra_css', 110 106 'Extra CSS', 111 array($this, 'fiad_login_extra_css'),107 [$this, 'fiad_login_extra_css'], 112 108 'fiber-admin-white-label', 113 109 'fiad_white_label_section' … … 240 236 241 237 public function fiad_login_extra_css(){ 242 ?> 238 $id = "login-extra-css"; 239 fiad_code_editor('text/css', $id); 240 ?> 241 243 242 <fieldset> 244 243 <textarea 244 id=<?= $id; ?> 245 245 name="fiber_admin[login_extra_css]"><?php echo esc_html(fiad_get_general_option('login_extra_css')); ?></textarea> 246 246 </fieldset> -
fiber-admin/tags/3.1.0/readme.txt
r2931908 r2962829 5 5 Tested up to: 6.2.2 6 6 Requires PHP: 7.0 7 Stable tag: 3. 0.07 Stable tag: 3.1.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 47 47 == Changelog == 48 48 49 = 3. 0.0 =50 *Release Date - 28 June2023*49 = 3.1.0 = 50 *Release Date - 05 September 2023* 51 51 52 * Fixed: Fix wrong email regex pattern. 53 * Added: Improve content protection scripts. 54 * Added: Sanitizing filename to a server-friendly version. 55 * Added: Improve feature auto set attachment title with sanitized filename. 52 * New feature: Coming Soon & Maintenance Mode. 53 * Changed: Improve email regex pattern. 54 * Fixed: Apply new code for database error to prevent the wrong URLs exist. -
fiber-admin/trunk/changelog.txt
r2931908 r2962829 1 1 == Changelog == 2 3 = 3.1.0 = 4 *Release Date - 05 September 2023* 5 6 * New feature: Coming Soon & Maintenance Mode. 7 * Changed: Improve email regex pattern. 8 * Fixed: Apply new code for database error to prevent the wrong URLs exist. 2 9 3 10 = 3.0.0 = -
fiber-admin/trunk/fiberadmin.php
r2931908 r2962829 4 4 * Plugin URI: https://wordpress.org/plugins/fiber-admin/ 5 5 * Description: 💈 Bring multiple customization features to make your own WordPress admin. 6 * Version: 3. 0.06 * Version: 3.1.0 7 7 * Requires at least: 5.2 8 8 * Requires PHP: 7.0 … … 32 32 33 33 define("FIBERADMIN_VERSION", $plugin_data['Version']); 34 const FIBERADMIN_DEV_MODE = false;34 const FIBERADMIN_DEV_MODE = true; 35 35 const FIBERADMIN_FILENAME = __FILE__; 36 36 define("FIBERADMIN_DIR", plugin_dir_path(__FILE__)); 37 37 define("FIBERADMIN_ASSETS_URL", plugin_dir_url(__FILE__) . 'assets/'); 38 39 // Coming Soon / Maintenance 40 const FIBERADMIN_ASSETS_DIR = FIBERADMIN_DIR . 'assets/'; 41 const FIBERADMIN_CSM_PATH = FIBERADMIN_DIR . 'templates/csm-mode.php'; 42 const FIBERADMIN_CSM_TEMPLATE = 'csm.php'; 38 43 39 44 /** … … 44 49 function fiad_init(){ 45 50 // helper functions 46 include_once(FIBERADMIN_DIR . 'includes/helper .php');51 include_once(FIBERADMIN_DIR . 'includes/helpers.php'); 47 52 48 53 // options pages … … 53 58 include_once(FIBERADMIN_DIR . 'includes/settings/db-error.php'); 54 59 include_once(FIBERADMIN_DIR . 'includes/settings/miscellaneous.php'); 60 include_once(FIBERADMIN_DIR . 'includes/settings/csm-mode.php'); 55 61 56 62 //default functions … … 65 71 include_once(FIBERADMIN_DIR . 'includes/db-error.php'); 66 72 include_once(FIBERADMIN_DIR . 'includes/attachment.php'); 73 include_once(FIBERADMIN_DIR . 'includes/csm-mode.php'); 67 74 } 68 75 … … 128 135 return $links; 129 136 } 137 138 add_action('admin_head', 'fiad_admin_additional_css'); 139 function fiad_admin_additional_css(){ 140 $page_csm_ids = fiad_get_page_template_ids("csm", true, true); 141 if($page_csm_ids){ 142 $extra_styles = '<style>'; 143 foreach($page_csm_ids as $index => $id){ 144 $extra_styles .= $index > 0 ? ',' : ''; 145 $extra_styles .= '#the-list #post-' . $id . ' .column-title .row-title:before'; 146 } 147 $extra_styles .= ' 148 {content: "CSM"; 149 background-color: #f3efe3; 150 color: #333; 151 display: inline-block; 152 padding: 0 5px; 153 margin-right: 10px;}'; 154 $extra_styles .= '</style>'; 155 156 echo $extra_styles; 157 } 158 } 159 160 /** 161 * Enqueue admin script 162 */ 163 164 add_action('admin_enqueue_scripts', 'fiad_enqueue_admin_script'); 165 function fiad_enqueue_admin_script(){ 166 $suffix = ''; 167 if(!FIBERADMIN_DEV_MODE){ 168 $suffix = '.min'; 169 } 170 wp_register_script('fiber-admin', FIBERADMIN_ASSETS_URL . 'js/fiber-admin' . $suffix . '.js', ['jquery'], FIBERADMIN_VERSION); 171 } -
fiber-admin/trunk/includes/attachment.php
r2931908 r2962829 38 38 39 39 public function fiad_cleanup_attachment_name($filename, $filename_raw){ 40 //variable 41 $path_info = pathinfo($filename); 42 $file_extension = fiad_array_key_exists('extension', $path_info); 43 $sanitized_filename = basename($filename, "." . $file_extension); 40 $file_extension = pathinfo($filename, PATHINFO_EXTENSION); 41 $exclude_exts = ['css', 'js']; // only apply for media attachment, not for code 44 42 45 $sanitized_filename = strtolower($sanitized_filename); 46 47 //handle urlencoded chars 48 preg_match_all('/%[0-9A-Fa-f]{2}/', $filename_raw, $matches); 49 $urlencoded_chars = $matches[0]; 50 if($urlencoded_chars){ 51 $urlencoded_chars = array_map(function($char){ 52 return strtolower(trim($char, '%')); 53 }, $urlencoded_chars); 54 $sanitized_filename = str_replace($urlencoded_chars, "", $sanitized_filename); 43 if($file_extension && !in_array($file_extension, $exclude_exts)){ 44 $sanitized_filename = basename($filename, "." . $file_extension); 45 $sanitized_filename = strtolower($sanitized_filename); 46 47 //handle urlencoded chars 48 preg_match_all('/%[0-9A-Fa-f]{2}/', $filename_raw, $matches); 49 $urlencoded_chars = fiad_array_key_exists(0, $matches); 50 if($urlencoded_chars){ 51 $urlencoded_chars = array_map(function($char){ 52 return strtolower(trim($char, '%')); 53 }, $urlencoded_chars); 54 $sanitized_filename = str_replace($urlencoded_chars, "", $sanitized_filename); 55 } 56 57 //special chars case 58 $sanitized_filename = $this->fiad_handle_special_chars($sanitized_filename); 59 60 return $sanitized_filename . "." . $file_extension; 55 61 } 56 62 57 //special chars case 58 $sanitized_filename = $this->fiad_handle_special_chars($sanitized_filename); 59 60 return $sanitized_filename . "." . $file_extension; 63 return $filename; 61 64 } 62 65 -
fiber-admin/trunk/includes/content.php
r2931908 r2962829 41 41 42 42 public function fiad_auto_convert_email_address($content){ 43 $enable_auto_convert = true; 43 $content = do_shortcode($content);// get content without shortcode 44 $content_pattern = "/>([^<]*)</"; 44 45 45 // Skip if the content has mailto link 46 if(strpos($content, 'mailto') !== false){ 47 return $content; 48 } 46 return preg_replace_callback($content_pattern, [$this, 'fiad_replace_email_with_link'], $content); 47 } 48 49 public function fiad_replace_email_with_link($matches){ 50 $email_pattern = "/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,})/"; 51 $replace = '<a href="mailto:$1" title="$1">$1</a>'; 52 // matches[0]: return the whole content with html tags 53 // matches[1]: return the content between tags 54 $email_content = $matches[1]; 55 $new_content = preg_replace($email_pattern, $replace, $email_content); 49 56 50 // Skip if the content has email in HTML attribute 51 $att_email_regex = '/<\w+.*?\K[\w-]+=["\']*\s*(?:\w+\s*)*[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\s*(?:[\'"]?(?:\w+\s*)*[\'"]?)?["\']*(?=.*?>)/mi'; 52 preg_match($att_email_regex, $content, $email_matches); 53 if($email_matches){ 54 $enable_auto_convert = false; 55 } 56 57 // Skip replace email address 58 if(!$enable_auto_convert){ 59 return $content; 60 } 61 62 // Detect and create email link 63 $search = ['/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,})/']; 64 $replace = ['<a href="mailto:$1" title="$1">$1</a>']; 65 66 return preg_replace($search, $replace, $content); 57 return str_replace($matches[1], $new_content, $matches[0]); 67 58 } 68 59 -
fiber-admin/trunk/includes/db-error.php
r2745323 r2962829 10 10 class Fiber_Admin_DB_Error{ 11 11 public function __construct(){ 12 add_action('admin_init', array($this, 'fiad_db_error_file'));13 register_activation_hook(FIBERADMIN_FILENAME, array($this, 'fiad_db_error_file'));14 register_deactivation_hook(FIBERADMIN_FILENAME, array($this, 'fiad_remove_db_error_file'));12 add_action('admin_init', [$this, 'fiad_db_error_file']); 13 register_activation_hook(FIBERADMIN_FILENAME, [$this, 'fiad_db_error_file']); 14 register_deactivation_hook(FIBERADMIN_FILENAME, [$this, 'fiad_remove_db_error_file']); 15 15 } 16 16 … … 23 23 $content_htaccess = WP_CONTENT_DIR . '/.htaccess'; 24 24 if(file_exists($content_htaccess)){ 25 $lines = array();25 $lines = []; 26 26 $lines[] = '<Files db-error.php>'; 27 27 $lines[] = ' Allow From All'; … … 40 40 $bg_color = fiad_get_db_error_option('db_error_bg'); 41 41 $style = $bg_color ? 'body {background-color: ' . $bg_color . '}' : ''; 42 $server = $_SERVER; 43 $http = fiad_array_key_exists('HTTPS', $server) ? "https://" : "http://"; 44 $http_host = $http . fiad_array_key_exists('HTTP_HOST', $server); 42 45 43 46 $php = '<?php'; … … 48 51 $php .= PHP_EOL; 49 52 $php .= 'header(\'Retry-After: 3600\');'; 53 $php .= PHP_EOL; 54 $php .= '$absolute_url = "' . $http_host . '" . explode($_SERVER[\'DOCUMENT_ROOT\'], __DIR__)[1];'; 50 55 $php .= PHP_EOL; 51 56 $php .= '?>'; … … 76 81 } 77 82 </style>"; 78 $html .= '<link rel="icon" type="image/png" href=" ' . get_site_icon_url() . '"/>';83 $html .= '<link rel="icon" type="image/png" href="<?= $absolute_url; ?>' . fiad_get_file_upload_path(get_site_icon_url()) . '"/>'; 79 84 $html .= '</head>'; 80 85 $html .= '<body class="db-error">'; … … 85 90 if($logo){ 86 91 $html .= '<div class="db-error__logo">'; 87 $html .= '<img src=" ' . $logo. '" alt="' . get_bloginfo('name') . '" width="' . $logo_width . '" height="' . $logo_height . '"/>';92 $html .= '<img src="<?= $absolute_url; ?>' . fiad_get_file_upload_path($logo) . '" alt="' . get_bloginfo('name') . '" width="' . $logo_width . '" height="' . $logo_height . '"/>'; 88 93 $html .= '</div>'; 89 94 } -
fiber-admin/trunk/includes/default.php
r2912732 r2962829 40 40 if(!fiad_get_general_option('enable_admin_toolbar')){ 41 41 add_filter('show_admin_bar', '__return_false'); 42 add_action('wp_print_styles', [$this, 'fiad_deregister_styles'], 100); 43 }elseif(!fiad_is_admin_user_role()){ 42 44 add_action('wp_print_styles', [$this, 'fiad_deregister_styles'], 100); 43 45 } -
fiber-admin/trunk/includes/settings/db-error.php
r2696536 r2962829 17 17 'fiad_db_error_group', 18 18 'fiad_db_error', 19 array($this, 'sanitize_text_field')19 [$this, 'sanitize_text_field'] 20 20 ); 21 21 … … 23 23 'fiad_db_error_section', 24 24 '<span class="dashicons dashicons-admin-generic"></span> General', 25 array($this, 'fiad_section_info'),25 [$this, 'fiad_section_info'], 26 26 'fiber-admin-db-error' 27 27 ); … … 30 30 'db_error_enable', // id 31 31 'Activate', // title 32 array($this, 'fiad_db_error_enable'), // callback32 [$this, 'fiad_db_error_enable'], // callback 33 33 'fiber-admin-db-error', // page 34 34 'fiad_db_error_section' // section … … 38 38 'db_error_title', 39 39 'Title', 40 array($this, 'fiad_db_error_title'),40 [$this, 'fiad_db_error_title'], 41 41 'fiber-admin-db-error', 42 42 'fiad_db_error_section' … … 46 46 'db_error_logo', 47 47 'Logo', 48 array($this, 'fiad_db_error_logo'),48 [$this, 'fiad_db_error_logo'], 49 49 'fiber-admin-db-error', 50 50 'fiad_db_error_section' … … 54 54 'db_error_logo_size', 55 55 'Logo size', 56 array($this, 'fiad_db_error_logo_size'),56 [$this, 'fiad_db_error_logo_size'], 57 57 'fiber-admin-db-error', 58 58 'fiad_db_error_section' … … 62 62 'db_error_bg_color', 63 63 'Background Color', 64 array($this, 'fiad_db_error_bg'),64 [$this, 'fiad_db_error_bg'], 65 65 'fiber-admin-db-error', 66 66 'fiad_db_error_section' … … 70 70 'db_error_message', 71 71 'Error Message', 72 array($this, 'fiad_db_error_message'),72 [$this, 'fiad_db_error_message'], 73 73 'fiber-admin-db-error', 74 74 'fiad_db_error_section' … … 78 78 'db_error_extra_css', 79 79 'Extra CSS', 80 array($this, 'fiad_db_error_extra_css'),80 [$this, 'fiad_db_error_extra_css'], 81 81 'fiber-admin-db-error', 82 82 'fiad_db_error_section' … … 164 164 $db_error_message = $default_error_message; 165 165 } 166 wp_editor($db_error_message, 'db_error_message', array(166 wp_editor($db_error_message, 'db_error_message', [ 167 167 'default_editor' => 'tinymce', 168 168 'textarea_name' => 'fiad_db_error[db_error_message]', 169 169 'media_buttons' => false, 170 170 'textarea_rows' => 5, 171 ));171 ]); 172 172 ?> 173 173 </fieldset> … … 176 176 177 177 public function fiad_db_error_extra_css(){ 178 $id = "db-error-extra-css"; 179 fiad_code_editor('text/css', $id); 178 180 ?> 179 181 <fieldset> 180 182 <textarea 183 id=<?= $id; ?> 181 184 name="fiad_db_error[db_error_extra_css]"><?php echo esc_html(fiad_get_db_error_option('db_error_extra_css')); ?></textarea> 182 185 </fieldset> -
fiber-admin/trunk/includes/settings/setting.php
r2707981 r2962829 11 11 12 12 public function __construct(){ 13 add_action('admin_menu', array($this, 'fiad_setting'));14 add_action('admin_init', array($this, 'fiad_setting_init'));13 add_action('admin_menu', [$this, 'fiad_setting']); 14 add_action('admin_init', [$this, 'fiad_setting_init']); 15 15 16 16 // register styles 17 add_action("admin_enqueue_scripts", array($this, 'fiad_styles'));17 add_action("admin_enqueue_scripts", [$this, 'fiad_styles']); 18 18 } 19 19 … … 44 44 'manage_options', 45 45 'fiber-admin', 46 array($this, 'fiad_setting_html')46 [$this, 'fiad_setting_html'] 47 47 ); 48 48 } … … 88 88 89 89 public function fiad_setting_tabs(){ 90 return array(90 return [ 91 91 'white-label' => 'White Label', 92 92 'cpo' => 'Custom Post Order', 93 93 'duplicate' => 'Duplicate Post', 94 94 'db-error' => 'Database Error', 95 'csm-mode' => 'Coming Soon & Maintenance Mode', 95 96 'miscellaneous' => 'Miscellaneous', 96 );97 ]; 97 98 } 98 99 … … 127 128 $miscellaneous->fiad_miscellaneous_init(); 128 129 break; 130 case 'csm-mode': 131 $csm_mode = new Fiber_Admin_CSM_Mode_Settings(); 132 $csm_mode->fiad_csm_mode_init(); 133 break; 129 134 default: 130 135 $white_label = new Fiber_Admin_White_Label_Settings(); … … 136 141 do_settings_sections('fiber-admin-' . $current); 137 142 143 $this->fiad_preview_mode($current); 144 } 145 146 public function fiad_preview_mode($current){ 147 $message = __('Please enable "Activate" option and save the settings first!', 'fiber-admin'); 138 148 if($current == 'db-error'){ 149 $can_preview = fiad_check_db_error_file(); 150 $url = content_url('db-error.php'); 151 }else{ 152 $mode = fiad_get_csm_mode_option('mode'); 153 $can_preview = (bool) fiad_get_csm_mode_option('page'); 154 $url = get_site_url() . '/' . $mode . '?preview=true'; 155 $message = __('Please "Save Changes" for the first time', 'fiber-admin'); 156 } 157 if($current == 'db-error' || $current == 'csm-mode'){ 139 158 echo '<input type="submit" name="fiber-admin-submit" id="fiber-admin-submit" class="button button-primary" value="Save Changes">'; 140 if(! fiad_check_db_error_file()){159 if(!$can_preview){ 141 160 ?> 142 <p class="description"><?php echo __('Preview is not available. Please enable "Activate" option and save the settings first!', 'fiber-admin'); ?></p>161 <p class="description"><?php echo __('Preview is not available. ' . $message, 'fiber-admin'); ?></p> 143 162 <?php 144 163 }else{ 145 164 $txt_preview = __('Preview', 'fiber-admin'); 146 165 ?> 147 <a class="button" href="<?php echo content_url('db-error.php'); ?>" target="_blank"166 <a class="button" href="<?php echo $url; ?>" target="_blank" 148 167 title="<?php echo $txt_preview; ?>"> 149 168 <?php echo $txt_preview; ?> … … 177 196 $option_key = 'fiad_miscellaneous'; 178 197 break; 198 case 'csm-mode': 199 $option_key = 'fiad_csm_mode'; 200 break; 179 201 default: 180 202 $option_key = 'fiber_admin'; 181 203 break; 182 204 } 205 206 $ignore_key = [ 207 'db_error_message', 208 'csm_extra_css', 209 'csm_extra_js', 210 'db_error_extra_css', 211 'login_extra_css', 212 ]; 183 213 184 214 if(isset($_POST[$option_key])){ 185 215 $options = $new_options = $_POST[$option_key]; 186 216 foreach($options as $key => $value){ 187 if( $key != 'db_error_message'&& !is_array($new_options[$key])){217 if(!in_array($key, $ignore_key) && !is_array($new_options[$key])){ 188 218 $new_options[$key] = sanitize_text_field($value); 189 219 } 190 220 } 191 221 }else{ 192 $new_options = array();222 $new_options = []; 193 223 } 194 224 -
fiber-admin/trunk/includes/settings/white-label.php
r2857421 r2962829 22 22 23 23 // Plugin scripts 24 $suffix = ''; 25 if(!FIBERADMIN_DEV_MODE){ 26 $suffix = '.min'; 27 } 28 wp_enqueue_script('fiber-admin', FIBERADMIN_ASSETS_URL . 'js/fiber-admin' . $suffix . '.js', array('jquery'), FIBERADMIN_VERSION); 24 wp_enqueue_script('fiber-admin'); 29 25 } 30 26 … … 33 29 'fiad_white_label_group', 34 30 'fiber-admin-white-label', 35 array($this, 'sanitize_text_field')31 [$this, 'sanitize_text_field'] 36 32 ); 37 33 … … 39 35 'fiad_branding_section', 40 36 '<span class="dashicons dashicons-wordpress"></span> Branding', 41 array($this, 'fiad_section_info'),37 [$this, 'fiad_section_info'], 42 38 'fiber-admin-white-label' 43 39 ); … … 46 42 'hide_wordpress_branding', // id 47 43 'Hide WordPress Branding', // title 48 array($this, 'fiad_hide_wordpress_branding'), // callback44 [$this, 'fiad_hide_wordpress_branding'], // callback 49 45 'fiber-admin-white-label', // page 50 46 'fiad_branding_section' // section … … 54 50 'enable_admin_toolbar', // id 55 51 'Enable Admin Toolbar', // title 56 array($this, 'fiad_enable_admin_toolbar'), // callback52 [$this, 'fiad_enable_admin_toolbar'], // callback 57 53 'fiber-admin-white-label', // page 58 54 'fiad_branding_section' // section … … 62 58 'fiad_white_label_section', 63 59 '<span class="dashicons dashicons-admin-network"></span> Login', 64 array($this, 'fiad_section_info'),60 [$this, 'fiad_section_info'], 65 61 'fiber-admin-white-label' 66 62 ); … … 69 65 'login_logo', 70 66 'Logo', 71 array($this, 'fiad_login_logo'),67 [$this, 'fiad_login_logo'], 72 68 'fiber-admin-white-label', 73 69 'fiad_white_label_section' … … 77 73 'login_logo_size', 78 74 'Logo size', 79 array($this, 'fiad_login_logo_size'),75 [$this, 'fiad_login_logo_size'], 80 76 'fiber-admin-white-label', 81 77 'fiad_white_label_section' … … 85 81 'login_bg_color', 86 82 'Background Color / Image', 87 array($this, 'fiad_login_bg'),83 [$this, 'fiad_login_bg'], 88 84 'fiber-admin-white-label', 89 85 'fiad_white_label_section' … … 93 89 'form_color', 94 90 'Form', 95 array($this, 'fiad_form'),91 [$this, 'fiad_form'], 96 92 'fiber-admin-white-label', 97 93 'fiad_white_label_section' … … 101 97 'link_color', 102 98 'Link', 103 array($this, 'fiad_link'),99 [$this, 'fiad_link'], 104 100 'fiber-admin-white-label', 105 101 'fiad_white_label_section' … … 109 105 'login_extra_css', 110 106 'Extra CSS', 111 array($this, 'fiad_login_extra_css'),107 [$this, 'fiad_login_extra_css'], 112 108 'fiber-admin-white-label', 113 109 'fiad_white_label_section' … … 240 236 241 237 public function fiad_login_extra_css(){ 242 ?> 238 $id = "login-extra-css"; 239 fiad_code_editor('text/css', $id); 240 ?> 241 243 242 <fieldset> 244 243 <textarea 244 id=<?= $id; ?> 245 245 name="fiber_admin[login_extra_css]"><?php echo esc_html(fiad_get_general_option('login_extra_css')); ?></textarea> 246 246 </fieldset> -
fiber-admin/trunk/readme.txt
r2931908 r2962829 5 5 Tested up to: 6.2.2 6 6 Requires PHP: 7.0 7 Stable tag: 3. 0.07 Stable tag: 3.1.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 47 47 == Changelog == 48 48 49 = 3. 0.0 =50 *Release Date - 28 June2023*49 = 3.1.0 = 50 *Release Date - 05 September 2023* 51 51 52 * Fixed: Fix wrong email regex pattern. 53 * Added: Improve content protection scripts. 54 * Added: Sanitizing filename to a server-friendly version. 55 * Added: Improve feature auto set attachment title with sanitized filename. 52 * New feature: Coming Soon & Maintenance Mode. 53 * Changed: Improve email regex pattern. 54 * Fixed: Apply new code for database error to prevent the wrong URLs exist.
Note: See TracChangeset
for help on using the changeset viewer.