0 */ private function combine_rules_selectors() { // Build an array of selectors along with the JSON-ified styles to make comparisons easier. $selectors_json = array(); foreach ( $this->css_rules as $rule ) { $declarations = $rule->get_declarations()->get_declarations(); ksort( $declarations ); $selectors_json[ $rule->get_selector() ] = wp_json_encode( $declarations ); } // Combine selectors that have the same styles. foreach ( $selectors_json as $selector => $json ) { // Get selectors that use the same styles. $duplicates = array_keys( $selectors_json, $json, true ); // Skip if there are no duplicates. if ( 1 >= count( $duplicates ) ) { continue; } $declarations = $this->css_rules[ $selector ]->get_declarations(); foreach ( $duplicates as $key ) { // Unset the duplicates from the $selectors_json array to avoid looping through them as well. unset( $selectors_json[ $key ] ); // Remove the rules from the rules collection. unset( $this->css_rules[ $key ] ); } // Create a new rule with the combined selectors. $duplicate_selectors = implode( ',', $duplicates ); $this->css_rules[ $duplicate_selectors ] = new WP_Style_Engine_CSS_Rule( $duplicate_selectors, $declarations ); } } } nt-protection-actions.php'; require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/subscribe/actions/secure-copy-content-protection-subscribe-actions.php'; /** * The class is responsible for showing poll settings */ require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/settings/secure-copy-content-protection-settings-actions.php'; /** * The class responsible for defining all actions that occur in the public-facing * side of the site. */ require_once plugin_dir_path(dirname(__FILE__)) . 'public/class-secure-copy-content-protection-public.php'; require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/partials/class-secure-copy-content-protection-extra-shortcode.php'; $this->loader = new Secure_Copy_Content_Protection_Loader(); } /** * Define the locale for this plugin for internationalization. * * Uses the Secure_Copy_Content_Protection_i18n class in order to set the domain and to register the hook * with WordPress. * * @since 1.0.0 * @access private */ private function set_locale() { $plugin_i18n = new Secure_Copy_Content_Protection_i18n(); $this->loader->add_action('plugins_loaded', $plugin_i18n, 'load_plugin_textdomain'); } /** * Register all of the hooks related to the admin area functionality * of the plugin. * * @since 1.0.0 * @access private */ private function define_admin_hooks() { $plugin_admin = new Secure_Copy_Content_Protection_Admin($this->get_plugin_name(), $this->get_version()); $data_admin = new Ays_Sccp_Data( $this->get_plugin_name(), $this->get_version() ); // Add menu item $this->loader->add_action('admin_menu', $plugin_admin, 'add_plugin_admin_menu'); $this->loader->add_action( 'admin_head', $plugin_admin, 'admin_menu_styles' ); $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_styles'); $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts'); $this->loader->add_action('wp_ajax_deactivate_sccp_option_sccp', $plugin_admin, 'deactivate_sccp_option'); $this->loader->add_action('wp_ajax_nopriv_deactivate_sccp_option_sccp', $plugin_admin, 'deactivate_sccp_option'); // EXPORT FILTERS $this->loader->add_action( 'wp_ajax_ays_sccp_show_filters', $plugin_admin, 'ays_sccp_show_filters' ); $this->loader->add_action( 'wp_ajax_nopriv_ays_sccp_show_filters', $plugin_admin, 'ays_sccp_show_filters' ); $this->loader->add_action( 'wp_ajax_ays_sccp_results_export_file', $plugin_admin, 'ays_sccp_results_export_file' ); $this->loader->add_action( 'wp_ajax_nopriv_ays_sccp_results_export_file', $plugin_admin, 'ays_sccp_results_export_file' ); $this->loader->add_action( 'wp_ajax_ays_sccp_results_export_filter', $plugin_admin, 'ays_sccp_results_export_filter' ); $this->loader->add_action( 'wp_ajax_nopriv_ays_sccp_results_export_filter', $plugin_admin, 'ays_sccp_results_export_filter' ); // Add Settings link to the plugin $plugin_basename = plugin_basename(plugin_dir_path(__DIR__) . $this->plugin_name . '.php'); $this->loader->add_filter('plugin_action_links_' . $plugin_basename, $plugin_admin, 'add_action_links'); // Add Row meta link to the plugin $this->loader->add_filter( 'plugin_row_meta', $plugin_admin, 'add_plugin_row_meta',10 ,2 ); $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'codemirror_enqueue_scripts'); //User search ajax $this->loader->add_action( 'wp_ajax_ays_sccp_reports_user_search', $plugin_admin, 'ays_sccp_reports_user_search' ); $this->loader->add_action( 'wp_ajax_nopriv_ays_sccp_reports_user_search', $plugin_admin, 'ays_sccp_reports_user_search' ); $this->loader->add_action( 'in_admin_footer', $plugin_admin, 'sccp_admin_footer', 1 ); $this->loader->add_action( 'admin_notices', $data_admin, 'ays_sccp_sale_baner', 1 ); $this->loader->add_action( 'wp_ajax_ays_sccp_dismiss_button', $plugin_admin, 'ays_sccp_dismiss_button' ); $this->loader->add_action( 'wp_ajax_nopriv_ays_sccp_dismiss_button', $plugin_admin, 'ays_sccp_dismiss_button' ); $this->loader->add_action( 'wp_ajax_ays_sccp_install_plugin', $plugin_admin, 'ays_sccp_install_plugin' ); $this->loader->add_action( 'wp_ajax_nopriv_ays_sccp_install_plugin', $plugin_admin, 'ays_sccp_install_plugin' ); $this->loader->add_action( 'wp_ajax_ays_sccp_activate_plugin', $plugin_admin, 'ays_sccp_activate_plugin' ); $this->loader->add_action( 'wp_ajax_nopriv_ays_sccp_activate_plugin', $plugin_admin, 'ays_sccp_activate_plugin' ); } /** * Register all of the hooks related to the public-facing functionality * of the plugin. * * @since 1.0.0 * @access private */ private function define_public_hooks() { $plugin_public = new Secure_Copy_Content_Protection_Public($this->get_plugin_name(), $this->get_version()); $plugin_public_extra_shortcodes = new Ays_Sccp_Extra_Shortcodes_Public( $this->get_plugin_name(), $this->get_version() ); $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_styles'); $this->loader->add_action('wp_enqueue_scripts', $plugin_public, 'enqueue_scripts'); $this->loader->add_action('wp_footer', $plugin_public, 'ays_get_notification_text'); // $this->loader->add_action('wp_loaded', $plugin_public, 'ays_block_all_page'); } /** * Run the loader to execute all of the hooks with WordPress. * * @since 1.0.0 */ public function run() { $this->loader->run(); } /** * The name of the plugin used to uniquely identify it within the context of * WordPress and to define internationalization functionality. * * @return string The name of the plugin. * @since 1.0.0 */ public function get_plugin_name() { return $this->plugin_name; } /** * The reference to the class that orchestrates the hooks with the plugin. * * @return Secure_Copy_Content_Protection_Loader Orchestrates the hooks of the plugin. * @since 1.0.0 */ public function get_loader() { return $this->loader; } /** * Retrieve the version number of the plugin. * * @return string The version number of the plugin. * @since 1.0.0 */ public function get_version() { return $this->version; } }