Below is a differential between the unpatched vulnerable code and the patched update, for reference.
--- a/eazydocs/blocks.php
+++ b/eazydocs/blocks.php
@@ -67,7 +67,7 @@
function search_banner_block_render( $attributes ) {
wp_register_style( 'ezd-search-block', EAZYDOCS_URL.'/build/search-banner/style-index.css' );
- return require_once __DIR__ . '/src/search-banner/search-banner.php';
+ return require_once __DIR__ . '/includes/block-templates/search-banner.php';
}
/**
--- a/eazydocs/build/eazydocs-toolbar/index.asset.php
+++ b/eazydocs/build/eazydocs-toolbar/index.asset.php
@@ -1 +1 @@
-<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-components', 'wp-element', 'wp-i18n', 'wp-rich-text'), 'version' => '73b9ca8c6651fb48adc4');
+<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-components', 'wp-element', 'wp-i18n', 'wp-rich-text'), 'version' => 'b990f4001e4f561ba726');
--- a/eazydocs/build/search-banner/index.asset.php
+++ b/eazydocs/build/search-banner/index.asset.php
@@ -1 +1 @@
-<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-i18n'), 'version' => 'b1581eb6fa18e40a2d8e');
+<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-i18n'), 'version' => 'd64a29ec7e3c187c85db');
--- a/eazydocs/build/shortcode/index.asset.php
+++ b/eazydocs/build/shortcode/index.asset.php
@@ -1 +1 @@
-<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => 'd8e6944186eff946116f');
+<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '6a143147f5f8536839f0');
--- a/eazydocs/eazydocs.php
+++ b/eazydocs/eazydocs.php
@@ -5,7 +5,7 @@
* Plugin URI: https://spider-themes.net/eazydocs
* Author: spider-themes
* Author URI: https://spider-themes.net/eazydocs
- * Version: 2.5.7
+ * Version: 2.5.9
* Requires at least: 5.0
* Requires PHP: 7.4
* Text Domain: eazydocs
@@ -22,14 +22,26 @@
} else {
// DO NOT REMOVE THIS IF, IT IS ESSENTIAL FOR THE `function_exists` CALL ABOVE TO PROPERLY WORK.
- if ( ! function_exists( 'eaz_fs' ) ) {
+ if ( ! function_exists( 'eaz_fs' ) ) {
+
+ // Retrieve the Eazydocs settings option
+ $opt = get_option('eazydocs_settings', []);
+ // Check if the setup wizard has been completed (defaulting to an empty string if not set)
+ $setup_wizard = $opt['setup_wizard_completed'] ?? '';
+
+ // Check if the setup wizard is not completed and ezd_get_setup_wizard option is set
+ if ( get_option( 'ezd_get_setup_wizard' ) && ! empty( $setup_wizard ) ) {
+ // Remove the activation flag if the setup wizard is not completed
+ delete_option( 'ezd_get_setup_wizard' );
+ }
+
// Create a helper function for easy SDK access.
function eaz_fs() {
global $eaz_fs;
if ( ! isset( $eaz_fs ) ) {
// Include Freemius SDK.
- require_once dirname( __FILE__ ) . '/includes/fs/start.php';
+ require_once dirname( __FILE__ ) . '/vendor/fs/start.php';
$eaz_fs = fs_dynamic_init(
[
@@ -50,7 +62,7 @@
'slug' => 'eazydocs',
'contact' => false,
'support' => false,
- 'first-path' => 'admin.php?page=eazydocs'
+ 'first-path' => get_option('ezd_get_setup_wizard') ? 'admin.php?page=eazydocs-initial-setup' : 'admin.php?page=eazydocs'
],
]
);
@@ -81,7 +93,7 @@
class EazyDocs {
// Default constants
- const version = '2.5.7';
+ const version = '2.5.9';
public $plugin_path;
public $theme_dir_path;
public static $dir = '';
@@ -102,10 +114,7 @@
add_action( 'init', [ $this, 'i18n' ] );
add_action( 'init', [ $this, 'init_hooked' ] );
add_action( 'plugins_loaded', [ $this, 'init_plugin' ] );
-
- // Add the setup wizard
- add_action('admin_init', [ $this, 'ezd_get_setup_wizard_init' ]);
-
+
if ( eaz_fs()->is_plan( 'promax' ) ) {
add_action( 'admin_notices', [ $this, 'update_database' ] );
}
@@ -124,6 +133,11 @@
// Remove admin notices
remove_all_actions( 'admin_notices' );
remove_all_actions( 'all_admin_notices' );
+
+ // Re-add a specific notice
+ if ( !ezd_is_premium() ) {
+ ezd_show_notice_after_period('ezd_offer_notice', 12);
+ }
}
});
}
@@ -160,8 +174,7 @@
public function core_includes() {
require_once __DIR__ . '/includes/functions.php';
// Notices
- require_once __DIR__ . '/includes/notices/deactivate-other-doc-plugins.php';
- require_once __DIR__ . '/includes/notices/asking-for-review.php';
+ require_once __DIR__ . '/includes/notices/_notices.php';
if ( eaz_fs()->is_plan( 'promax' ) ) {
require_once __DIR__ . '/includes/notices/update-database.php';
@@ -292,21 +305,7 @@
update_option('ezd_get_setup_wizard', true);
}
-
- // Redirect to the setup wizard page
- public function ezd_get_setup_wizard_init() {
- // Check if the plugin has been activated
- $opt = get_option('eazydocs_settings');
- $setup_wizard = $opt['setup_wizard_completed'] ?? '';
-
- if ( get_option('ezd_get_setup_wizard') && $setup_wizard == '' ) {
- // Redirect to the setup wizard page
- wp_safe_redirect(admin_url('admin.php?page=eazydocs-initial-setup'));
- // Remove the activation flag
- delete_option('ezd_get_setup_wizard');
- }
- }
-
+
/**
* Create database table if not exists
* Insert search keywords table and search key logs table into the database if not exists
--- a/eazydocs/includes/Admin/Admin.php
+++ b/eazydocs/includes/Admin/Admin.php
@@ -189,7 +189,11 @@
if ( eaz_fs()->is_plan( 'promax' ) == "yes" ) {
$classes .= ' ezd-promax';
}
-
+
+ if ( empty( eaz_fs()->is_plan( 'promax' ) ) ) {
+ $classes .= ' ezd_no_promax';
+ }
+
return $classes;
}
@@ -290,7 +294,7 @@
<div id="ezd-setup-wizard-wrap">
<div class="ezd-wizard-head">
<div class="ezd-wizard-head-left">
- <img src="<?php echo esc_url(EAZYDOCS_URL . '/src/images/ezd-icon.png'); ?>" alt="<?php esc_attr_e( 'crown icon', 'eazydocs' ); ?>" />
+ <img src="<?php echo esc_url(EAZYDOCS_IMG . '/eazydocs-favicon.png'); ?>" alt="<?php esc_attr_e( 'crown icon', 'eazydocs' ); ?>" />
<span><?php esc_html_e( 'GETTING STARTED', 'eazydocs' ); ?></span>
</div>
<div class="ezd-wizard-head-right">
@@ -306,10 +310,9 @@
</ul>
</div>
<div class="tab-content">
-
<div id="step-1" class="tab-pane" role="tabpanel">
<h2><?php esc_html_e( 'Welcome to EazyDocs', 'eazydocs' ); ?></h2>
- <?php echo wp_kses_post(wpautop( 'Discover EazyDocs by this guide that walks you through creating professional, user-friendly <br> website documentation seamlessly. Then click next to setup initial settings.' )) ; ?>
+ <p><?php esc_html_e('Discover EazyDocs by this guide that walks you through creating professional, user-friendly website documentation seamlessly. Then click next to setup initial settings.', 'eazydocs') ; ?> </p>
<iframe width="650" height="350" src="https://www.youtube.com/embed/4H2npHIR2qg?si=ApQh7BL6CL5QM4zX" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<div class="button-inline">
<a class="button button-primary ezd-btn btn-lg" target="_blank" href="https://helpdesk.spider-themes.net/docs/eazydocs-wordpress-plugin/">
@@ -321,7 +324,6 @@
<a class="button button-primary ezd-btn ezd-btn-pro btn-lg" target="_blank" href="https://wordpress.org/support/plugin/eazydocs/">
<i class="dashicons dashicons-editor-help"></i> <?php esc_html_e( 'Support', 'eazydocs' ); ?>
</a>
- <p>
</div>
</div>
@@ -340,7 +342,7 @@
}
?>
</select>
- <span><?php esc_html_e( 'You can create this page with using [eazydocs] shortcode or available EazyDocs Gutenberg blocks or Elementor widgets.', 'eazydocs' ); ?></span>
+ <span><?php esc_html_e( 'You can create this page with using [eazydocs] shortcode or available EazyDocs blocks or Elementor widgets.', 'eazydocs' ); ?></span>
</div>
<h2><?php esc_html_e( 'Brand Color', 'eazydocs' ); ?></h2>
@@ -395,7 +397,6 @@
<label for="boxed" class="<?php if ( $docs_page_width == 'boxed' ) { echo esc_attr( 'active' ); } ?>">
<?php esc_html_e( 'Boxed Width', 'eazydocs' ); ?>
</label>
-
<input type="radio" id="full-width" name="docsPageWidth" value="full-width" <?php checked( $docs_page_width, 'full-width' ); ?>>
<label for="full-width" class="<?php if ( $docs_page_width == 'full-width' ) { echo esc_attr( 'active' ); } ?>">
<?php esc_html_e( 'Full Width', 'eazydocs' ); ?>
@@ -415,7 +416,6 @@
<p><?php esc_html_e( 'Take a moment to review all your settings thoroughly before confirming your choices to ensure everything is set up correctly.', 'eazydocs' ); ?></p>
<button type="button" id="finish-btn" class="btn btn-primary"><?php esc_html_e( 'Confirm', 'eazydocs' ); ?></button>
</div>
-
</div>
</div>
</div>
@@ -464,18 +464,7 @@
return $link;
}
-
- public function admin_body_class( $admin_body ) {
- $ezd_admin_classe = explode( ' ', $admin_body );
- /* if ( empty( eaz_fs()->is_plan( 'promax' ) ) ) {
- $ezd_admin_classe = array_merge( $ezd_admin_classe, [
- 'ezd_no_promax'
- ] );
- }*/
-
- return implode( ' ', array_unique( $ezd_admin_classe ) );
- }
-
+
/**
** Nestable Callback function
**/
--- a/eazydocs/includes/Admin/Assets.php
+++ b/eazydocs/includes/Admin/Assets.php
@@ -14,6 +14,7 @@
if ( ezd_admin_pages() || ezd_admin_post_types() ) {
add_action( 'admin_enqueue_scripts', [ $this, 'dashboard_scripts' ] );
}
+
add_action( 'admin_enqueue_scripts', [ $this, 'global_scripts' ] );
add_action( 'enqueue_block_editor_assets', [ $this, 'enqueue_block_editor_assets' ] );
}
@@ -37,7 +38,7 @@
if ( ezd_admin_pages( ['eazydocs', 'ezd-analytics'] ) ) {
wp_enqueue_script( 'modernizr', EAZYDOCS_ASSETS . '/js/admin/modernizr-3.11.2.min.js', array( 'jquery' ), '', true );
wp_enqueue_script( 'tabby-polyfills', EAZYDOCS_ASSETS . '/js/admin/tabby.polyfills.min.js', array( 'jquery' ), '', true );
- wp_enqueue_script( 'ezd-custom', EAZYDOCS_ASSETS . '/js/admin/custom.js', array( 'jquery' ), EAZYDOCS_VERSION, true );
+ wp_enqueue_script( 'ezd-admin-custom', EAZYDOCS_ASSETS . '/js/admin/custom.js', array( 'jquery' ), EAZYDOCS_VERSION, true );
}
if ( ezd_admin_pages( ['eazydocs', 'ezd-analytics', 'eazydocs-initial-setup'] ) ) {
@@ -69,25 +70,25 @@
}
public function enqueue_block_editor_assets() {
-
- $post_id = isset($_GET['post']) ? intval($_GET['post']) : null;
- // Define the blocks you want to check for
- $ezd_blocks = [ 'eazydocs-pro/eazy-docs' ];
+ // Enqueue initial assets for the editor
+ wp_enqueue_script(
+ 'ezd-block-insert-handler',
+ EAZYDOCS_ASSETS . '/js/block-insert-handler.js',
+ ['wp-data', 'wp-blocks', 'wp-edit-post'],
+ '',
+ true
+ );
- // Check if the post contains any of the target blocks
- if ($post_id) {
- $post_content = get_post($post_id)->post_content;
- foreach ($ezd_blocks as $block) {
- if ( has_block($block, $post_content) ) {
- // Enqueue your styles and scripts
- wp_enqueue_style('sweetalert', EAZYDOCS_ASSETS . '/css/admin/sweetalert.css');
- wp_enqueue_script('sweetalert', EAZYDOCS_ASSETS . '/js/admin/sweetalert.min.js', ['jquery'], '', true);
- wp_enqueue_style( 'elegant-icon', EAZYDOCS_ASSETS.'/vendors/elegant-icon/style.css' );
- wp_enqueue_style( 'ezd-docs-widgets', EAZYDOCS_ASSETS.'/css/ezd-docs-widgets.css' );
- break; // Exit loop once a matching block is found
- }
- }
- }
+ wp_localize_script('ezd-block-insert-handler', 'ezdAssets', [
+ 'styles' => [
+ EAZYDOCS_ASSETS . '/vendors/elegant-icon/style.css',
+ EAZYDOCS_ASSETS . '/css/ezd-docs-widgets.css',
+ ],
+ 'scripts' => [
+ EAZYDOCS_ASSETS . '/js/admin/sweetalert.min.js',
+ ],
+ 'ezd_img_dir' => EAZYDOCS_IMG
+ ]);
}
/**
@@ -126,9 +127,7 @@
'manage_reusable_blocks' => manage_reusable_blocks(),
'is_ezd_premium' => eaz_fs()->is_paying_or_trial() ? 'yes' : '',
'is_ezd_pro_block' => ezd_is_premium() ? 'yes' : '',
- 'ezd_get_conditional_items' => ezd_get_conditional_items(),
- 'ezd_plugin_url' => EAZYDOCS_URL,
-
+ 'ezd_get_conditional_items' => ezd_get_conditional_items()
)
);
}
--- a/eazydocs/includes/Admin/options/opt_customizer.php
+++ b/eazydocs/includes/Admin/options/opt_customizer.php
@@ -11,7 +11,8 @@
'title' => esc_html__( 'Options Visibility on Customizer', 'eazydocs' ),
'text_on' => esc_html__( 'Enabled', 'eazydocs' ),
'text_off' => esc_html__( 'Disabled', 'eazydocs' ),
- 'text_width' => 100,
+ 'default' => true,
+ 'text_width' => 100
),
array(
@@ -19,7 +20,7 @@
'function' => 'customizer_visibility_callback',
'dependency' => array(
array( 'customizer_visibility', '==', true ),
- ),
+ )
)
]
) );
No newline at end of file
--- a/eazydocs/includes/Admin/options/opt_doc_single.php
+++ b/eazydocs/includes/Admin/options/opt_doc_single.php
@@ -799,6 +799,19 @@
),
array(
+ 'id' => 'docs_to_view',
+ 'type' => 'radio',
+ 'title' => esc_html__( 'Docs to view', 'eazydocs' ),
+ 'subtitle' => esc_html__( 'Select All Docs to display all the top label docs or choose Self Docs to show child docs of the current doc.', 'eazydocs' ),
+ 'options' => [
+ 'all_docs' => esc_html__( 'All Docs', 'eazydocs' ),
+ 'self_docs' => esc_html__( 'Self Docs', 'eazydocs' ),
+ ],
+ 'default' => 'self_docs',
+ 'class' => 'eazydocs-pro-notice',
+ ),
+
+ array(
'id' => 'toggle_visibility',
'type' => 'switcher',
'title' => esc_html__( 'Sidebar Toggle', 'eazydocs' ),
--- a/eazydocs/includes/Admin/options/opt_docs_subscription.php
+++ b/eazydocs/includes/Admin/options/opt_docs_subscription.php
@@ -15,7 +15,7 @@
'id' => 'subscriptions',
'type' => 'switcher',
'title' => esc_html__( 'Subscribe Feature', 'eazydocs' ),
- 'subtitle' => esc_html__( 'Enable to show the subscription form in the single doc page.', 'eazydocs' ),
+ 'subtitle' => esc_html__( 'Enable to show the subscription button.', 'eazydocs' ),
'text_on' => esc_html__( 'Enabled', 'eazydocs' ),
'text_off' => esc_html__( 'Disabled', 'eazydocs' ),
'default' => false,
--- a/eazydocs/includes/Admin/options/opt_footnotes.php
+++ b/eazydocs/includes/Admin/options/opt_footnotes.php
@@ -74,4 +74,36 @@
'class' => 'eazydocs-pro-notice active-theme-docy active-theme-docly active-theme-ama'
),
]
+) );
+
+$meta = 'eazydocs_meta';
+// Register a custom meta box for the Docs post type.
+CSF::createMetabox( $meta, array(
+ 'title' => esc_html__( 'Docs :: Options', 'eazydocs' ),
+ 'post_type' => 'docs',
+ 'data_type' => 'unserialize',
+ 'priority' => 'default'
+) );
+
+// Create the fields conditionally.
+CSF::createSection( $meta, array(
+ 'id' => 'ezd_footnotes',
+ 'title' => esc_html__( 'Footnotes', 'eazydocs' ),
+ 'fields' => array(
+ array(
+ 'id' => 'footnotes_column',
+ 'type' => 'select',
+ 'title' => esc_html__( 'Footnotes Column', 'eazydocs' ),
+ 'options' => array(
+ '1' => esc_html__( '1 Column', 'eazydocs' ),
+ '2' => esc_html__( '2 Columns', 'eazydocs' ),
+ '3' => esc_html__( '3 Columns', 'eazydocs' ),
+ '4' => esc_html__( '4 Columns', 'eazydocs' ),
+ '5' => esc_html__( '5 Columns', 'eazydocs' ),
+ '6' => esc_html__( '6 Columns', 'eazydocs' )
+ ),
+ 'default' => ezd_get_opt('footnotes_column', 3),
+ 'class' => 'eazydocs-pro-notice active-theme-docy active-theme-docly active-theme-ama layout-inline',
+ )
+ )
) );
No newline at end of file
--- a/eazydocs/includes/Admin/options/settings-options.php
+++ b/eazydocs/includes/Admin/options/settings-options.php
@@ -54,7 +54,8 @@
include EZD_SETTINGS_PATH . 'opt_docs_role_manager.php';
include EZD_SETTINGS_PATH . 'opt_docs_assistant.php';
include EZD_SETTINGS_PATH . 'opt_docs_subscription.php';
-include EZD_SETTINGS_PATH . 'opt_backup.php';
// Additoinal fields
-do_action('eazydocs_additoinal_csf_fields', $prefix);
No newline at end of file
+do_action('eazydocs_additoinal_csf_fields', $prefix);
+
+include EZD_SETTINGS_PATH . 'opt_backup.php';
No newline at end of file
--- a/eazydocs/includes/Frontend/Assets.php
+++ b/eazydocs/includes/Frontend/Assets.php
@@ -31,9 +31,8 @@
$dynamic_cssd = ":root { --ezd_brand_color: " . ezd_get_opt( 'brand_color' ) . "; }";
wp_add_inline_style( 'eazydocs-blocks', $dynamic_cssd );
- if ( ezd_has_shortcode( ['ezd_login_form', 'reference'] ) ) {
+ if ( ezd_has_shortcode( ['ezd_login_form', 'reference'] ) || has_ezd_mark_text_class() ) {
wp_enqueue_style( 'eazydocs-shortcodes', EAZYDOCS_ASSETS . '/css/shortcodes.css' );
- wp_enqueue_script( 'eazydocs-shortcodes', EAZYDOCS_ASSETS . '/js/shortcodes.js' );
}
if ( ezd_has_shortcode( ['eazydocs'] ) ) {
@@ -52,7 +51,7 @@
$is_dark_switcher = $opt['is_dark_switcher'] ?? '';
- if ( $is_dark_switcher == '1' ) {
+ if ( $is_dark_switcher == '1' && is_singular( ['docs', 'onepage-docs'] ) ) {
wp_enqueue_style( 'eazydocs-dark-mode', EAZYDOCS_ASSETS . '/css/frontend_dark-mode.css' );
}
--- a/eazydocs/includes/Frontend/Frontend.php
+++ b/eazydocs/includes/Frontend/Frontend.php
@@ -51,14 +51,13 @@
*
*/
public function footnotes($post_id){
-
$options = get_option( 'eazydocs_settings' );
$is_notes_title = $options['is_footnotes_heading'] ?? '1';
$footnotes_layout = $options['footnotes_layout'] ?? 'collapsed';
$is_footnotes_expand = $is_notes_title == 1 ? $footnotes_layout : '';
$ezd_notes_footer_mt = $is_notes_title != '1' ? 'mt-30' : '';
$notes_title_text = $options['footnotes_heading_text'] ?? __( 'Footnotes', 'eazydocs' );
- $footnotes_column = $options['footnotes_column'] ?? '1';
+ $footnotes_column = ezd_meta_apply('footnotes_column');
$reference_with_content = ezd_get_footnotes_in_content($post_id);
$shortcode_counter = count($reference_with_content);
@@ -72,22 +71,22 @@
<div class="ezd-footnote-title <?php echo esc_attr( $is_footnotes_expand ); ?>">
<span class="ezd-plus-minus"> <i class="icon_plus-box"></i><i class="icon_minus-box"></i></span>
<span class="ezd-title-txt"><?php echo esc_html( $notes_title_text ); ?></span>
- <span> ( <?php echo esc_html( $shortcode_counter ); ?> ) </span>
+ <span class="cite-count">(<?php echo esc_html( $shortcode_counter ); ?>) </span>
</div>
<?php
endif;
?>
- <div ezd-data-column="<?php echo esc_attr( $footnotes_column ); ?>" class="ezd-footnote-footer <?php echo esc_attr( $ezd_notes_footer_mt .' '. $is_footnotes_expand ); ?>">
- <?php
+ <div data-column="<?php echo esc_attr( $footnotes_column ); ?>" class="ezd-footnote-footer <?php echo esc_attr( $ezd_notes_footer_mt .' '. $is_footnotes_expand ); ?>">
+ <?php
$i = 0;
foreach( $reference_with_content as $reference_with_contents ) {
$i++;
?>
- <div class="note-class-<?php echo esc_html( $reference_with_contents['id'] ); ?>" id="note-name-<?php echo esc_html( $reference_with_contents['id'] ); ?>">
+ <div class="note-class-<?php echo esc_attr( $i ); ?>" id="note-name-<?php echo esc_attr( $i ); ?>">
<div class="ezd-footnotes-serial">
- <spna class="ezd-serial"><?php echo esc_html($i); ?></spna>
- <a class="ezd-note-indicator" href="#serial-id-<?php echo esc_html( $reference_with_contents['id'] ); ?>"><i class="arrow_carrot-up"></i> </a>
+ <span class="ezd-serial"><?php echo esc_html($i); ?></span>
+ <a class="ezd-note-indicator" href="#serial-id-<?php echo esc_attr( $i ); ?>"><i class="arrow_carrot-up"></i> </a>
</div>
<div class="ezd-footnote-texts">
<?php echo do_shortcode( $reference_with_contents['content'] ); ?>
@@ -97,6 +96,31 @@
}
?>
</div>
+
+ <script>
+ ;(function ($) {
+ 'use strict';
+ $(document).ready(function () {
+ const $footnoteFooter = $('.ezd-footnote-footer');
+ const $footnoteTitle = $('.ezd-footnote-title');
+ const $footnoteLinks = $('.ezd-footnotes-link-item');
+ if ($footnoteFooter.children('div').length) {
+ $footnoteTitle.css('display', 'flex').on('click', function () {
+ $(this).toggleClass('expanded collapsed');
+ $footnoteFooter.stop(true, true).slideToggle({
+ complete: function () {
+ $(this).css('display', $(this).is(':visible') ? 'flex' : 'none');
+ }
+ });
+ });
+ $footnoteLinks.on('click', function () {
+ $footnoteTitle.addClass('expanded').removeClass('collapsed');
+ $footnoteFooter.css({ display: 'flex', height: 'auto' });
+ });
+ }
+ });
+ })(jQuery);
+ </script>
<?php
}
--- a/eazydocs/includes/Frontend/Shortcode.php
+++ b/eazydocs/includes/Frontend/Shortcode.php
@@ -55,8 +55,8 @@
$parent_args = [
'post_type' => 'docs',
'parent' => 0,
- 'orderby' => $args['parent_docs_order'] ?? 'ID',
- 'order' => 'ASC',
+ 'orderby' => $args['parent_docs_order'] ?? 'menu_order',
+ 'order' => $args['parent_docs_order_by'] ?? 'desc',
'post_status' => array( 'publish', 'private' ),
'number' => ! empty ( $args['show_docs'] ) ? (int) $args['show_docs'] : -1,
];
@@ -93,7 +93,7 @@
'post_type' => 'docs',
'numberposts' => ! empty ( $args['show_articles'] ) ? (int) $args['show_articles'] : 5,
'post_status' => array( 'publish', 'private' ),
- 'orderby' => 'menu_order',
+ 'orderby' => $args['parent_docs_order'] ?? 'menu_order',
'order' => $args['child_docs_order'] ?? 'ASC',
] );
@@ -106,12 +106,12 @@
// call the template
eazydocs_get_template( 'shortcode.php', [
- 'docs' => $arranged,
- 'col' => ! empty ($args['col']) ? (int) $args['col'] : 3,
- 'more' => ! empty ($args['more']) ? $args['more'] : __( 'View Details', 'eazydocs' ),
- 'show_topic' => $args['show_topic'] ?? false,
- 'topic_label' => ! empty ($args['topic_label']) ? $args['topic_label'] : __( 'Topics', 'eazydocs' ),
- 'layout' => $args['docs_layout'] ?? 'grid'
+ 'docs' => $arranged,
+ 'col' => ! empty ($args['col']) ? (int) $args['col'] : 3,
+ 'more' => ! empty ($args['more']) ? $args['more'] : __( 'View Details', 'eazydocs' ),
+ 'show_topic' => $args['show_topic'] ?? false,
+ 'topic_label' => ! empty ($args['topic_label']) ? $args['topic_label'] : __( 'Topics', 'eazydocs' ),
+ 'layout' => $args['docs_layout'] ?? 'grid'
] );
}
}
No newline at end of file
--- a/eazydocs/includes/block-templates/search-banner.php
+++ b/eazydocs/includes/block-templates/search-banner.php
@@ -0,0 +1,160 @@
+<?php
+$cz_options = get_option( 'eazydocs_settings' );
+$cs_banner_wrap = 'no_cs_bg';
+if ( ezd_is_premium() ) {
+ $custom_banner = $cz_options['doc_banner_bg'] ?? '';
+ $cs_banner_wrap = empty( $custom_banner['background-color'] ) && empty( $custom_banner['background-image']['url'] ) ? 'no_cs_bg' : 'has_cs_bg';
+}
+$is_keywords = ezd_get_opt('is_keywords') != '1' ? ' no_keywords' : '';
+
+ob_start();
+?>
+<div class="focus_overlay"></div>
+<section class="ezd_search_banner has_bg_dark <?php echo esc_attr( $cs_banner_wrap.$is_keywords ); ?>">
+ <div class="container">
+ <div class="row doc_banner_content">
+ <div class="col-md-12">
+ <form action="<?php echo esc_url( home_url('/') ); ?>" role="search" method="post" class="ezd_search_form">
+ <div class="header_search_form_info">
+ <div class="form-group">
+ <div class="input-wrapper">
+ <input type='search' id="ezd_searchInput" name="s" placeholder='<?php esc_attr_e( 'Search here', 'eazydocs' ); ?>' autocomplete="off" value="<?php echo get_search_query(); ?>"/>
+ <label for="ezd_searchInput">
+ <i class="left-icon icon_search"></i>
+ </label>
+ <div class="spinner-border spinner" role="status">
+ <span class="visually-hidden">Loading...</span>
+ </div>
+ <?php if ( defined( 'ICL_LANGUAGE_CODE' ) ) : ?>
+ <input type="hidden" name="lang" value="<?php echo esc_attr( ICL_LANGUAGE_CODE ); ?>"/>
+ <?php endif; ?>
+ </div>
+ </div>
+ </div>
+ <div id="ezd-search-results" class="eazydocs-search-tree" data-noresult="<?php esc_attr_e( 'No Results Found', 'eazydocs' ); ?>"></div>
+ <?php
+ if ( ezd_is_premium() ) {
+ eazydocs_get_template_part('keywords');
+ }
+ ?>
+ </form>
+ </div>
+ </div>
+ </div>
+</section>
+
+<script>
+ jQuery("#ezd_searchInput").focus(function() {
+ jQuery('body').addClass('ezd-search-focused');
+ jQuery('form.ezd_search_form').css('z-index','999');
+ })
+
+ jQuery(".focus_overlay").click(function() {
+ jQuery('body').removeClass('ezd-search-focused');
+ jQuery('form.ezd_search_form').css('z-index','unset');
+ })
+
+ /**
+ * Search Form Keywords
+ */
+ jQuery(".ezd_search_keywords ul li a").on("click", function (e) {
+ e.preventDefault()
+ var content = jQuery(this).text()
+ jQuery("#ezd_searchInput").val(content).focus()
+ ezSearchResults()
+ })
+
+ function ezSearchResults(){
+ let keyword = jQuery('#ezd_searchInput').val();
+ let noresult = jQuery('#ezd-search-results').attr('data-noresult');
+
+ if ( keyword == "" ) {
+ jQuery('#ezd-search-results').removeClass('ajax-search').html("")
+ } else {
+ jQuery.ajax({
+ url: eazydocs_local_object.ajaxurl,
+ type: 'post',
+ data: { action: 'eazydocs_search_results', keyword: keyword },
+ beforeSend: function () {
+ jQuery(".spinner-border").show();
+ },
+ success: function (data) {
+ jQuery(".spinner-border").hide();
+ // hide search results by pressing Escape button
+ jQuery(document).keyup(function(e) {
+ if (e.key === "Escape") { // escape key maps to keycode `27`
+ jQuery('#ezd-search-results').removeClass('ajax-search').html("")
+ }
+ })
+ if ( data.length > 0 ) {
+ jQuery('#ezd-search-results').addClass('ajax-search').html(data);
+ } else {
+ var data_error = '<h5 class="error title">' + noresult + '</h5>';
+ jQuery('#ezd-search-results').html(data_error);
+ }
+ }
+ })
+ }
+ }
+
+ function ezdFetchDelay(callback, ms) {
+ var timer = 0;
+ return function () {
+ var context = this,
+ args = arguments;
+ clearTimeout(timer);
+ timer = setTimeout(function () {
+ callback.apply(context, args);
+ }, ms || 0);
+ };
+ }
+
+ jQuery('#ezd_searchInput').keyup(
+ ezdFetchDelay(function (e) {
+ let keyword = jQuery('#ezd_searchInput').val();
+ let noresult = jQuery('#ezd-search-results').attr('data-noresult');
+
+ if ( keyword == "" ) {
+ jQuery('#ezd-search-results').removeClass('ajax-search').html("")
+ } else {
+ jQuery.ajax({
+ url: eazydocs_local_object.ajaxurl,
+ type: 'post',
+ data: {action: 'eazydocs_search_results', keyword: keyword},
+ beforeSend: function () {
+ jQuery(".spinner-border").show();
+ },
+ success: function (data) {
+ jQuery(".spinner-border").hide();
+ // hide search results by pressing Escape button
+ jQuery(document).keyup(function(e) {
+ if (e.key === "Escape") { // escape key maps to keycode `27`
+ jQuery('#ezd-search-results').removeClass('ajax-search').html("")
+ }
+ });
+ if ( data.length > 0 ) {
+ jQuery('#ezd-search-results').addClass('ajax-search').html(data);
+ } else {
+ var data_error = '<h5 class="error title">' + noresult + '</h5>';
+ jQuery('#ezd-search-results').html(data_error);
+ }
+ }
+ })
+ }
+ }, 500 )
+)
+
+// Search results should close on clearing the input field
+if (document.getElementById('ezd_searchInput')) {
+ document
+ .getElementById('ezd_searchInput')
+ .addEventListener('search', function (event) {
+ jQuery('#ezd-search-results').empty().removeClass('ajax-search');
+ });
+}
+
+</script>
+
+<?php
+$html = ob_get_clean();
+return $html;
No newline at end of file
--- a/eazydocs/includes/fs/assets/css/admin/index.php
+++ b/eazydocs/includes/fs/assets/css/admin/index.php
@@ -1,3 +0,0 @@
-<?php
- // Silence is golden.
- // Hide file structure from users on unprotected servers.
No newline at end of file
--- a/eazydocs/includes/fs/assets/css/index.php
+++ b/eazydocs/includes/fs/assets/css/index.php
@@ -1,3 +0,0 @@
-<?php
- // Silence is golden.
- // Hide file structure from users on unprotected servers.
No newline at end of file
--- a/eazydocs/includes/fs/assets/img/index.php
+++ b/eazydocs/includes/fs/assets/img/index.php
@@ -1,3 +0,0 @@
-<?php
- // Silence is golden.
- // Hide file structure from users on unprotected servers.
No newline at end of file
--- a/eazydocs/includes/fs/assets/index.php
+++ b/eazydocs/includes/fs/assets/index.php
@@ -1,3 +0,0 @@
-<?php
- // Silence is golden.
- // Hide file structure from users on unprotected servers.
No newline at end of file
--- a/eazydocs/includes/fs/assets/js/index.php
+++ b/eazydocs/includes/fs/assets/js/index.php
@@ -1,3 +0,0 @@
-<?php
- // Silence is golden.
- // Hide file structure from users on unprotected servers.
No newline at end of file
--- a/eazydocs/includes/fs/config.php
+++ b/eazydocs/includes/fs/config.php
@@ -1,391 +0,0 @@
-<?php
- /**
- * @package Freemius
- * @copyright Copyright (c) 2015, Freemius, Inc.
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
- * @since 1.0.4
- */
-
- if ( ! defined( 'ABSPATH' ) ) {
- exit;
- }
-
- if ( ! defined( 'WP_FS__SLUG' ) ) {
- define( 'WP_FS__SLUG', 'freemius' );
- }
- if ( ! defined( 'WP_FS__DEV_MODE' ) ) {
- define( 'WP_FS__DEV_MODE', false );
- }
-
- #--------------------------------------------------------------------------------
- #region API Connectivity Issues Simulation
- #--------------------------------------------------------------------------------
-
- if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY' ) ) {
- define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY', false );
- }
- if ( ! defined( 'WP_FS__SIMULATE_NO_CURL' ) ) {
- define( 'WP_FS__SIMULATE_NO_CURL', false );
- }
- if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
- define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
- }
- if ( ! defined( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
- define( 'WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
- }
- if ( WP_FS__SIMULATE_NO_CURL ) {
- define( 'FS_SDK__SIMULATE_NO_CURL', true );
- }
- if ( WP_FS__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
- define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', true );
- }
- if ( WP_FS__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
- define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', true );
- }
-
- #endregion
-
- if ( ! defined( 'WP_FS__SIMULATE_FREEMIUS_OFF' ) ) {
- define( 'WP_FS__SIMULATE_FREEMIUS_OFF', false );
- }
-
- if ( ! defined( 'WP_FS__PING_API_ON_IP_OR_HOST_CHANGES' ) ) {
- /**
- * @since 1.1.7.3
- * @author Vova Feldman (@svovaf)
- *
- * I'm not sure if shared servers periodically change IP, or the subdomain of the
- * admin dashboard. Also, I've seen sites that have strange loop of switching
- * between domains on a daily basis. Therefore, to eliminate the risk of
- * multiple unwanted connectivity test pings, temporary ignore domain or
- * server IP changes.
- */
- define( 'WP_FS__PING_API_ON_IP_OR_HOST_CHANGES', false );
- }
-
- /**
- * If your dev environment supports custom public network IP setup
- * like VVV, please update WP_FS__LOCALHOST_IP with your public IP
- * and uncomment it during dev.
- */
- if ( ! defined( 'WP_FS__LOCALHOST_IP' ) ) {
- // VVV default public network IP.
- define( 'WP_FS__VVV_DEFAULT_PUBLIC_IP', '192.168.50.4' );
-
-// define( 'WP_FS__LOCALHOST_IP', WP_FS__VVV_DEFAULT_PUBLIC_IP );
- }
-
- /**
- * If true and running with secret key, the opt-in process
- * will skip the email activation process which is invoked
- * when the email of the context user already exist in Freemius
- * database (as a security precaution, to prevent sharing user
- * secret with unauthorized entity).
- *
- * IMPORTANT:
- * AS A SECURITY PRECAUTION, WE VALIDATE THE TIMESTAMP OF THE OPT-IN REQUEST.
- * THEREFORE, MAKE SURE THAT WHEN USING THIS PARAMETER,YOUR TESTING ENVIRONMENT'S
- * CLOCK IS SYNCED.
- */
- if ( ! defined( 'WP_FS__SKIP_EMAIL_ACTIVATION' ) ) {
- define( 'WP_FS__SKIP_EMAIL_ACTIVATION', false );
- }
-
-
- #--------------------------------------------------------------------------------
- #region Directories
- #--------------------------------------------------------------------------------
-
- if ( ! defined( 'WP_FS__DIR' ) ) {
- define( 'WP_FS__DIR', dirname( __FILE__ ) );
- }
- if ( ! defined( 'WP_FS__DIR_INCLUDES' ) ) {
- define( 'WP_FS__DIR_INCLUDES', WP_FS__DIR . '/includes' );
- }
- if ( ! defined( 'WP_FS__DIR_TEMPLATES' ) ) {
- define( 'WP_FS__DIR_TEMPLATES', WP_FS__DIR . '/templates' );
- }
- if ( ! defined( 'WP_FS__DIR_ASSETS' ) ) {
- define( 'WP_FS__DIR_ASSETS', WP_FS__DIR . '/assets' );
- }
- if ( ! defined( 'WP_FS__DIR_CSS' ) ) {
- define( 'WP_FS__DIR_CSS', WP_FS__DIR_ASSETS . '/css' );
- }
- if ( ! defined( 'WP_FS__DIR_JS' ) ) {
- define( 'WP_FS__DIR_JS', WP_FS__DIR_ASSETS . '/js' );
- }
- if ( ! defined( 'WP_FS__DIR_IMG' ) ) {
- define( 'WP_FS__DIR_IMG', WP_FS__DIR_ASSETS . '/img' );
- }
- if ( ! defined( 'WP_FS__DIR_SDK' ) ) {
- define( 'WP_FS__DIR_SDK', WP_FS__DIR_INCLUDES . '/sdk' );
- }
-
- #endregion
-
- /**
- * Domain / URL / Address
- */
- define( 'WP_FS__ROOT_DOMAIN_PRODUCTION', 'freemius.com' );
- define( 'WP_FS__DOMAIN_PRODUCTION', 'wp.freemius.com' );
- define( 'WP_FS__ADDRESS_PRODUCTION', 'https://' . WP_FS__DOMAIN_PRODUCTION );
-
- if ( ! defined( 'WP_FS__DOMAIN_LOCALHOST' ) ) {
- define( 'WP_FS__DOMAIN_LOCALHOST', 'wp.freemius' );
- }
- if ( ! defined( 'WP_FS__ADDRESS_LOCALHOST' ) ) {
- define( 'WP_FS__ADDRESS_LOCALHOST', 'http://' . WP_FS__DOMAIN_LOCALHOST . ':8080' );
- }
-
- if ( ! defined( 'WP_FS__TESTING_DOMAIN' ) ) {
- define( 'WP_FS__TESTING_DOMAIN', 'fswp' );
- }
-
- #--------------------------------------------------------------------------------
- #region HTTP
- #--------------------------------------------------------------------------------
-
- if ( ! defined( 'WP_FS__IS_HTTP_REQUEST' ) ) {
- define( 'WP_FS__IS_HTTP_REQUEST', isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_METHOD'] ) );
- }
-
- if ( ! defined( 'WP_FS__IS_HTTPS' ) ) {
- define( 'WP_FS__IS_HTTPS', ( WP_FS__IS_HTTP_REQUEST &&
- // Checks if CloudFlare's HTTPS (Flexible SSL support).
- isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) &&
- 'https' === strtolower( $_SERVER['HTTP_X_FORWARDED_PROTO'] )
- ) ||
- // Check if HTTPS request.
- ( isset( $_SERVER['HTTPS'] ) && 'on' == $_SERVER['HTTPS'] ) ||
- ( isset( $_SERVER['SERVER_PORT'] ) && 443 == $_SERVER['SERVER_PORT'] )
- );
- }
-
- if ( ! defined( 'WP_FS__IS_POST_REQUEST' ) ) {
- define( 'WP_FS__IS_POST_REQUEST', ( WP_FS__IS_HTTP_REQUEST &&
- strtoupper( $_SERVER['REQUEST_METHOD'] ) == 'POST' ) );
- }
-
- if ( ! defined( 'WP_FS__REMOTE_ADDR' ) ) {
- define( 'WP_FS__REMOTE_ADDR', fs_get_ip() );
- }
-
- if ( ! defined( 'WP_FS__IS_LOCALHOST' ) ) {
- if ( defined( 'WP_FS__LOCALHOST_IP' ) ) {
- define( 'WP_FS__IS_LOCALHOST', ( WP_FS__LOCALHOST_IP === WP_FS__REMOTE_ADDR ) );
- } else {
- define( 'WP_FS__IS_LOCALHOST', WP_FS__IS_HTTP_REQUEST &&
- is_string( WP_FS__REMOTE_ADDR ) &&
- ( substr( WP_FS__REMOTE_ADDR, 0, 4 ) === '127.' ||
- WP_FS__REMOTE_ADDR === '::1' )
- );
- }
- }
-
- if ( ! defined( 'WP_FS__IS_LOCALHOST_FOR_SERVER' ) ) {
- define( 'WP_FS__IS_LOCALHOST_FOR_SERVER', ( ! WP_FS__IS_HTTP_REQUEST ||
- false !== strpos( $_SERVER['HTTP_HOST'], 'localhost' ) ) );
- }
-
- #endregion
-
- if ( ! defined( 'WP_FS__IS_PRODUCTION_MODE' ) ) {
- // By default, run with Freemius production servers.
- define( 'WP_FS__IS_PRODUCTION_MODE', true );
- }
-
- if ( ! defined( 'WP_FS__ADDRESS' ) ) {
- define( 'WP_FS__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? WP_FS__ADDRESS_PRODUCTION : WP_FS__ADDRESS_LOCALHOST ) );
- }
-
-
- #--------------------------------------------------------------------------------
- #region API
- #--------------------------------------------------------------------------------
-
- if ( ! defined( 'WP_FS__API_ADDRESS_LOCALHOST' ) ) {
- define( 'WP_FS__API_ADDRESS_LOCALHOST', 'http://api.freemius-local.com:8080' );
- }
- if ( ! defined( 'WP_FS__API_SANDBOX_ADDRESS_LOCALHOST' ) ) {
- define( 'WP_FS__API_SANDBOX_ADDRESS_LOCALHOST', 'http://sandbox-api.freemius:8080' );
- }
-
- // Set API address for local testing.
- if ( ! WP_FS__IS_PRODUCTION_MODE ) {
- if ( ! defined( 'FS_API__ADDRESS' ) ) {
- define( 'FS_API__ADDRESS', WP_FS__API_ADDRESS_LOCALHOST );
- }
- if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
- define( 'FS_API__SANDBOX_ADDRESS', WP_FS__API_SANDBOX_ADDRESS_LOCALHOST );
- }
- }
-
- #endregion
-
- #--------------------------------------------------------------------------------
- #region Checkout
- #--------------------------------------------------------------------------------
-
- if ( ! defined( 'FS_CHECKOUT__ADDRESS_PRODUCTION' ) ) {
- define( 'FS_CHECKOUT__ADDRESS_PRODUCTION', 'https://checkout.freemius.com' );
- }
-
- if ( ! defined( 'FS_CHECKOUT__ADDRESS_LOCALHOST' ) ) {
- define( 'FS_CHECKOUT__ADDRESS_LOCALHOST', 'http://checkout.freemius-local.com:8080' );
- }
-
- if ( ! defined( 'FS_CHECKOUT__ADDRESS' ) ) {
- define( 'FS_CHECKOUT__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? FS_CHECKOUT__ADDRESS_PRODUCTION : FS_CHECKOUT__ADDRESS_LOCALHOST ) );
- }
-
- #endregion
-
- define( 'WP_FS___OPTION_PREFIX', 'fs' . ( WP_FS__IS_PRODUCTION_MODE ? '' : '_dbg' ) . '_' );
-
- if ( ! defined( 'WP_FS__ACCOUNTS_OPTION_NAME' ) ) {
- define( 'WP_FS__ACCOUNTS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'accounts' );
- }
- if ( ! defined( 'WP_FS__API_CACHE_OPTION_NAME' ) ) {
- define( 'WP_FS__API_CACHE_OPTION_NAME', WP_FS___OPTION_PREFIX . 'api_cache' );
- }
- if ( ! defined( 'WP_FS__GDPR_OPTION_NAME' ) ) {
- define( 'WP_FS__GDPR_OPTION_NAME', WP_FS___OPTION_PREFIX . 'gdpr' );
- }
- define( 'WP_FS__OPTIONS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'options' );
-
- /**
- * Module types
- *
- * @since 1.2.2
- */
- define( 'WP_FS__MODULE_TYPE_PLUGIN', 'plugin' );
- define( 'WP_FS__MODULE_TYPE_THEME', 'theme' );
-
- /**
- * Billing Frequencies
- */
- define( 'WP_FS__PERIOD_ANNUALLY', 'annual' );
- define( 'WP_FS__PERIOD_MONTHLY', 'monthly' );
- define( 'WP_FS__PERIOD_LIFETIME', 'lifetime' );
-
- /**
- * Plans
- */
- define( 'WP_FS__PLAN_DEFAULT_PAID', false );
- define( 'WP_FS__PLAN_FREE', 'free' );
- define( 'WP_FS__PLAN_TRIAL', 'trial' );
-
- /**
- * Times in seconds
- */
- if ( ! defined( 'WP_FS__TIME_5_MIN_IN_SEC' ) ) {
- define( 'WP_FS__TIME_5_MIN_IN_SEC', 300 );
- }
- if ( ! defined( 'WP_FS__TIME_10_MIN_IN_SEC' ) ) {
- define( 'WP_FS__TIME_10_MIN_IN_SEC', 600 );
- }
-// define( 'WP_FS__TIME_15_MIN_IN_SEC', 900 );
- if ( ! defined( 'WP_FS__TIME_12_HOURS_IN_SEC' ) ) {
- define( 'WP_FS__TIME_12_HOURS_IN_SEC', 43200 );
- }
- if ( ! defined( 'WP_FS__TIME_24_HOURS_IN_SEC' ) ) {
- define( 'WP_FS__TIME_24_HOURS_IN_SEC', WP_FS__TIME_12_HOURS_IN_SEC * 2 );
- }
- if ( ! defined( 'WP_FS__TIME_WEEK_IN_SEC' ) ) {
- define( 'WP_FS__TIME_WEEK_IN_SEC', 7 * WP_FS__TIME_24_HOURS_IN_SEC );
- }
-
- #--------------------------------------------------------------------------------
- #region Debugging
- #--------------------------------------------------------------------------------
-
- if ( ! defined( 'WP_FS__DEBUG_SDK' ) ) {
- $debug_mode = get_option( 'fs_debug_mode', null );
-
- if ( $debug_mode === null ) {
- $debug_mode = false;
- add_option( 'fs_debug_mode', $debug_mode );
- }
-
- define( 'WP_FS__DEBUG_SDK', is_numeric( $debug_mode ) ? ( 0 < $debug_mode ) : WP_FS__DEV_MODE );
- }
-
- if ( ! defined( 'WP_FS__ECHO_DEBUG_SDK' ) ) {
- define( 'WP_FS__ECHO_DEBUG_SDK', WP_FS__DEV_MODE && ! empty( $_GET['fs_dbg_echo'] ) );
- }
- if ( ! defined( 'WP_FS__LOG_DATETIME_FORMAT' ) ) {
- define( 'WP_FS__LOG_DATETIME_FORMAT', 'Y-m-d H:i:s' );
- }
- if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
- define( 'FS_API__LOGGER_ON', WP_FS__DEBUG_SDK );
- }
-
- if ( WP_FS__ECHO_DEBUG_SDK ) {
- error_reporting( E_ALL );
- }
-
- #endregion
-
- if ( ! defined( 'WP_FS__SCRIPT_START_TIME' ) ) {
- define( 'WP_FS__SCRIPT_START_TIME', time() );
- }
- if ( ! defined( 'WP_FS__DEFAULT_PRIORITY' ) ) {
- define( 'WP_FS__DEFAULT_PRIORITY', 10 );
- }
- if ( ! defined( 'WP_FS__LOWEST_PRIORITY' ) ) {
- define( 'WP_FS__LOWEST_PRIORITY', 999999999 );
- }
-
- #--------------------------------------------------------------------------------
- #region Multisite Network
- #--------------------------------------------------------------------------------
-
- /**
- * Do not use this define directly, it will have the wrong value
- * during plugin uninstall/deletion when the inclusion of the plugin
- * is triggered due to registration with register_uninstall_hook().
- *
- * Instead, use fs_is_network_admin().
- *
- * @author Vova Feldman (@svovaf)
- */
- if ( ! defined( 'WP_FS__IS_NETWORK_ADMIN' ) ) {
- define( 'WP_FS__IS_NETWORK_ADMIN',
- is_multisite() &&
- ( is_network_admin() ||
- ( ( defined( 'DOING_AJAX' ) && DOING_AJAX &&
- ( isset( $_REQUEST['_fs_network_admin'] ) && 'true' === $_REQUEST['_fs_network_admin'] /*||
- ( ! empty( $_REQUEST['action'] ) && 'delete-plugin' === $_REQUEST['action'] )*/ )
- ) ||
- // Plugin uninstall.
- defined( 'WP_UNINSTALL_PLUGIN' ) )
- )
- );
- }
-
- /**
- * Do not use this define directly, it will have the wrong value
- * during plugin uninstall/deletion when the inclusion of the plugin
- * is triggered due to registration with register_uninstall_hook().
- *
- * Instead, use fs_is_blog_admin().
- *
- * @author Vova Feldman (@svovaf)
- */
- if ( ! defined( 'WP_FS__IS_BLOG_ADMIN' ) ) {
- define( 'WP_FS__IS_BLOG_ADMIN', is_blog_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX && isset( $_REQUEST['_fs_blog_admin'] ) ) );
- }
-
- if ( ! defined( 'WP_FS__SHOW_NETWORK_EVEN_WHEN_DELEGATED' ) ) {
- // Set to true to show network level settings even if delegated to site admins.
- define( 'WP_FS__SHOW_NETWORK_EVEN_WHEN_DELEGATED', false );
- }
-
- #endregion
-
- if ( ! defined( 'WP_FS__DEMO_MODE' ) ) {
- define( 'WP_FS__DEMO_MODE', false );
- }
- if ( ! defined( 'FS_SDK__SSLVERIFY' ) ) {
- define( 'FS_SDK__SSLVERIFY', false );
- }
--- a/eazydocs/includes/fs/includes/class-freemius-abstract.php
+++ b/eazydocs/includes/fs/includes/class-freemius-abstract.php
@@ -1,538 +0,0 @@
-<?php
- /**
- * @package Freemius
- * @copyright Copyright (c) 2015, Freemius, Inc.
- * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
- * @since 1.0.7
- */
-
- if ( ! defined( 'ABSPATH' ) ) {
- exit;
- }
-
-
- /**
- * - Each instance of Freemius class represents a single plugin
- * install by a single user (the installer of the plugin).
- *
- * - Each website can only have one install of the same plugin.
- *
- * - Install entity is only created after a user connects his account with Freemius.
- *
- * Class Freemius_Abstract
- */
- abstract class Freemius_Abstract {
-
- #----------------------------------------------------------------------------------
- #region Identity
- #----------------------------------------------------------------------------------
-
- /**
- * Check if user has connected his account (opted-in).
- *
- * Note:
- * If the user opted-in and opted-out on a later stage,
- * this will still return true. If you want to check if the
- * user is currently opted-in, use:
- * `$fs->is_registered() && $fs->is_tracking_allowed()`
- *
- * @since 1.0.1
- *
- * @param bool $ignore_anonymous_state Since 2.5.1
- *
- * @return bool
- */
- abstract function is_registered( $ignore_anonymous_state = false );
-
- /**
- * Check if the user skipped connecting the account with Freemius.
- *
- * @since 1.0.7
- *
- * @return bool
- */
- abstract function is_anonymous();
-
- /**
- * Check if the user currently in activation mode.
- *
- * @since 1.0.7
- *
- * @return bool
- */
- abstract function is_activation_mode();
-
- #endregion
-
- #----------------------------------------------------------------------------------
- #region Module Type
- #----------------------------------------------------------------------------------
-
- /**
- * Checks if the plugin's type is "plugin". The other type is "theme".
- *
- * @author Leo Fajardo (@leorw)
- * @since 1.2.2
- *
- * @return bool
- */
- abstract function is_plugin();
-
- /**
- * Checks if the module type is "theme". The other type is "plugin".
- *
- * @author Leo Fajardo (@leorw)
- * @since 1.2.2
- *
- * @return bool
- */
- function is_theme() {
- return ( ! $this->is_plugin() );
- }
-
- #endregion
-
- #----------------------------------------------------------------------------------
- #region Permissions
- #----------------------------------------------------------------------------------
-
- /**
- * Check if plugin must be WordPress.org compliant.
- *
- * @since 1.0.7
- *
- * @return bool
- */
- abstract function is_org_repo_compliant();
-
- /**
- * Check if plugin is allowed to install executable files.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.0.5
- *
- * @return bool
- */
- function is_allowed_to_install() {
- return ( $this->is_premium() || ! $this->is_org_repo_compliant() );
- }
-
- #endregion
-
- /**
- * Check if user in trial or in free plan (not paying).
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.0.4
- *
- * @return bool
- */
- function is_not_paying() {
- return ( $this->is_trial() || $this->is_free_plan() );
- }
-
- /**
- * Check if the user has an activated and valid paid license on current plugin's install.
- *
- * @since 1.0.9
- *
- * @return bool
- */
- abstract function is_paying();
-
- /**
- * Check if the user is paying or in trial.
- *
- * @since 1.0.9
- *
- * @return bool
- */
- function is_paying_or_trial() {
- return ( $this->is_paying() || $this->is_trial() );
- }
-
- /**
- * Check if user in a trial or have feature enabled license.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.1.7
- *
- * @return bool
- */
- abstract function can_use_premium_code();
-
- #----------------------------------------------------------------------------------
- #region Premium Only
- #----------------------------------------------------------------------------------
-
- /**
- * All logic wrapped in methods with "__premium_only()" suffix will be only
- * included in the premium code.
- *
- * Example:
- * if ( freemius()->is__premium_only() ) {
- * ...
- * }
- */
-
- /**
- * Returns true when running premium plugin code.
- *
- * @since 1.0.9
- *
- * @return bool
- */
- function is__premium_only() {
- return $this->is_premium();
- }
-
- /**
- * Check if the user has an activated and valid paid license on current plugin's install.
- *
- * @since 1.0.9
- *
- * @return bool
- *
- */
- function is_paying__premium_only() {
- return ( $this->is__premium_only() && $this->is_paying() );
- }
-
- /**
- * All code wrapped in this statement will be only included in the premium code.
- *
- * @since 1.0.9
- *
- * @param string $plan Plan name.
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
- *
- * @return bool
- */
- function is_plan__premium_only( $plan, $exact = false ) {
- return ( $this->is_premium() && $this->is_plan( $plan, $exact ) );
- }
-
- /**
- * Check if plan matches active license' plan or active trial license' plan.
- *
- * All code wrapped in this statement will be only included in the premium code.
- *
- * @since 1.0.9
- *
- * @param string $plan Plan name.
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
- *
- * @return bool
- */
- function is_plan_or_trial__premium_only( $plan, $exact = false ) {
- return ( $this->is_premium() && $this->is_plan_or_trial( $plan, $exact ) );
- }
-
- /**
- * Check if the user is paying or in trial.
- *
- * All code wrapped in this statement will be only included in the premium code.
- *
- * @since 1.0.9
- *
- * @return bool
- */
- function is_paying_or_trial__premium_only() {
- return $this->is_premium() && $this->is_paying_or_trial();
- }
-
- /**
- * Check if the user has an activated and valid paid license on current plugin's install.
- *
- * @since 1.0.4
- *
- * @return bool
- *
- * @deprecated Method name is confusing since it's not clear from the name the code will be removed.
- * @using Alias to is_paying__premium_only()
- */
- function is_paying__fs__() {
- return $this->is_paying__premium_only();
- }
-
- /**
- * Check if user in a trial or have feature enabled license.
- *
- * All code wrapped in this statement will be only included in the premium code.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.1.9
- *
- * @return bool
- */
- function can_use_premium_code__premium_only() {
- return $this->is_premium() && $this->can_use_premium_code();
- }
-
- #endregion
-
- #----------------------------------------------------------------------------------
- #region Trial
- #----------------------------------------------------------------------------------
-
- /**
- * Check if the user in a trial.
- *
- * @since 1.0.3
- *
- * @return bool
- */
- abstract function is_trial();
-
- /**
- * Check if trial already utilized.
- *
- * @since 1.0.9
- *
- * @return bool
- */
- abstract function is_trial_utilized();
-
- #endregion
-
- #----------------------------------------------------------------------------------
- #region Plans
- #----------------------------------------------------------------------------------
-
- /**
- * Check if the user is on the free plan of the product.
- *
- * @since 1.0.4
- *
- * @return bool
- */
- abstract function is_free_plan();
-
- /**
- * @since 1.0.2
- *
- * @param string $plan Plan name.
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
- *
- * @return bool
- */
- abstract function is_plan( $plan, $exact = false );
-
- /**
- * Check if plan based on trial. If not in trial mode, should return false.
- *
- * @since 1.0.9
- *
- * @param string $plan Plan name.
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
- *
- * @return bool
- */
- abstract function is_trial_plan( $plan, $exact = false );
-
- /**
- * Check if plan matches active license' plan or active trial license' plan.
- *
- * @since 1.0.9
- *
- * @param string $plan Plan name.
- * @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
- *
- * @return bool
- */
- function is_plan_or_trial( $plan, $exact = false ) {
- return $this->is_plan( $plan, $exact ) ||
- $this->is_trial_plan( $plan, $exact );
- }
-
- /**
- * Check if plugin has any paid plans.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.0.7
- *
- * @return bool
- */
- abstract function has_paid_plan();
-
- /**
- * Check if plugin has any free plan, or is it premium only.
- *
- * Note: If no plans configured, assume plugin is free.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.0.7
- *
- * @return bool
- */
- abstract function has_free_plan();
-
- /**
- * Check if plugin is premium only (no free plans).
- *
- * NOTE: is__premium_only() is very different method, don't get confused.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.1.9
- *
- * @return bool
- */
- abstract function is_only_premium();
-
- /**
- * Check if module has a premium code version.
- *
- * Serviceware module might be freemium without any
- * premium code version, where the paid features
- * are all part of the service.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.2.1.6
- *
- * @return bool
- */
- abstract function has_premium_version();
-
- /**
- * Check if module has any release on Freemius,
- * or all plugin's code is on WordPress.org (Serviceware).
- *
- * @return bool
- */
- function has_release_on_freemius() {
- return ! $this->is_org_repo_compliant() ||
- $this->has_premium_version();
- }
-
- /**
- * Checks if it's a freemium plugin.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.1.9
- *
- * @return bool
- */
- function is_freemium() {
- return $this->has_paid_plan() &&
- $this->has_free_plan();
- }
-
- /**
- * Check if module has only one plan.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.2.1.7
- *
- * @return bool
- */
- abstract function is_single_plan();
-
- #endregion
-
- /**
- * Check if running payments in sandbox mode.
- *
- * @since 1.0.4
- *
- * @return bool
- */
- abstract function is_payments_sandbox();
-
- /**
- * Check if running test vs. live plugin.
- *
- * @since 1.0.5
- *
- * @return bool
- */
- abstract function is_live();
-
- /**
- * Check if running premium plugin code.
- *
- * @since 1.0.5
- *
- * @return bool
- */
- abstract function is_premium();
-
- /**
- * Get upgrade URL.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.0.2
- *
- * @param string $period Billing cycle.
- *
- * @return string
- */
- abstract function get_upgrade_url( $period = WP_FS__PERIOD_ANNUALLY );
-
- /**
- * Check if Freemius was first added in a plugin update.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.1.5
- *
- * @return bool
- */
- function is_plugin_update() {
- return ! $this->is_plugin_new_install();
- }
-
- /**
- * Check if Freemius was part of the plugin when the user installed it first.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.1.5
- *
- * @return bool
- */
- abstract function is_plugin_new_install();
-
- #----------------------------------------------------------------------------------
- #region Marketing
- #----------------------------------------------------------------------------------
-
- /**
- * Check if current user purchased any other plugins before.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.0.9
- *
- * @return bool
- */
- abstract function has_purchased_before();
-
- /**
- * Check if current user classified as an agency.
- *
- * @author Vova Feldman (@svovaf)
- * @since 1.0.9
- *
- * @return bool
- */
- abstract function