X7ROOT File Manager
Current Path:
/home/notabjze/starbudzca.com/wp-content/plugins/cmp-coming-soon-maintenance
home
/
notabjze
/
starbudzca.com
/
wp-content
/
plugins
/
cmp-coming-soon-maintenance
/
ðŸ“
..
📄
cmp-advanced.php
(38.36 KB)
📄
cmp-help.php
(937 B)
📄
cmp-settings.php
(31.29 KB)
📄
cmp-sidebar.php
(6.72 KB)
📄
cmp-subscribers.php
(2.02 KB)
📄
cmp-translate.php
(3.38 KB)
📄
cmp-upload.php
(1.16 KB)
ðŸ“
css
ðŸ“
fonts
ðŸ“
img
ðŸ“
inc
ðŸ“
js
ðŸ“
languages
📄
niteo-cmp.php
(103.76 KB)
📄
readme.txt
(49 KB)
ðŸ“
themes
Editing: niteo-cmp.php
<?php /* Plugin Name: CMP - Coming Soon & Maintenance Plugin Plugin URI: https://wordpress.org/plugins/cmp-coming-soon-maintenance/ Description: Display customizable landing page for Coming Soon, Maintenance & Under Construction page. Version: 4.1.10 Author: NiteoThemes Author URI: https://www.niteothemes.com Text Domain: cmp-coming-soon-maintenance Domain Path: /languages License: GPL-2.0+ License URI: http://www.gnu.org/licenses/gpl-2.0.txt */ // Exit if accessed directly. if (!defined('ABSPATH')) { exit; } if (!class_exists('CMP_Coming_Soon_and_Maintenance')) : /** * Main CMP Coming Soon and Maintenance class. * * @since 2.8 */ #[AllowDynamicProperties] class CMP_Coming_Soon_and_Maintenance { /** * CMP_Coming_Soon_and_Maintenance The one true CMP_Coming_Soon_and_Maintenance * * @var string $instance */ private static $instance; /** * Main CMP_Coming_Soon_and_Maintenance Instance. * * Insures that only one instance of CMP_Coming_Soon_and_Maintenance exists in memory at any one * time. Also prevents needing to define globals all over the place. * * Thanks Rich Tabor for teaching things about Singleton * @since 2.8 * @static * @static var array $instance * @uses CMP_Coming_Soon_and_Maintenance::init() Initiate actions and filters. * @uses CMP_Coming_Soon_and_Maintenance::cmp_assets_suffix() Include .min version based on CMP_DEBUG * @uses CMP_Coming_Soon_and_Maintenance::load_textdomain() load the language files. * @return object|CMP_Coming_Soon_and_Maintenance */ public static function instance() { if (!isset(self::$instance) && !(self::$instance instanceof CMP_Coming_Soon_and_Maintenance)) { self::$instance = new CMP_Coming_Soon_and_Maintenance(); self::$instance->constants(); self::$instance->init(); self::$instance->cmp_assets_suffix(); } return self::$instance; } // define constants private function constants() { $this->define('CMP_VERSION', '4.1.10'); $this->define('CMP_DEBUG', FALSE); $this->define('CMP_AUTHOR', 'NiteoThemes'); $this->define('CMP_AUTHOR_HOMEPAGE', 'https://niteothemes.com'); $this->define('CMP_PLUGIN_DIR', plugin_dir_path(__FILE__)); $this->define('CMP_PREMIUM_THEMES_DIR', plugin_dir_path(__DIR__) . 'cmp-premium-themes/'); $this->define('CMP_PLUGIN_URL', plugin_dir_url(__FILE__)); $this->define('CMP_UPDATE_URL', 'https://niteothemes.com/updates/'); CMP_DEBUG === TRUE ? $this->define('CMP_LICENSE_SERVER_URL', 'https://niteothemes.com/dev2/') : $this->define('CMP_LICENSE_SERVER_URL', 'https://niteothemes.com/'); } /** * Inits and hooks */ public function init() { do_action('cmp_plugin_loaded'); add_action('init', array($this, 'load_textdomain')); add_action('plugins_loaded', array($this, 'cmp_update_process'), 0); add_action('template_redirect', array($this, 'cmp_displayPage'), 1); add_action('admin_init', array($this, 'cmp_adminInit')); add_action('admin_menu', array($this, 'cmp_adminMenu')); add_action('admin_notices', array($this, 'cmp_admin_notice')); add_action('wp_before_admin_bar_render', array($this, 'cmp_admin_bar')); add_action('admin_enqueue_scripts', array($this, 'cmp_add_topbar_scripts')); add_action('admin_enqueue_scripts', array($this, 'cmp_add_admin_style')); add_action('wp_enqueue_scripts', array($this, 'cmp_add_topbar_scripts')); add_action('wp_ajax_cmp_get_post_detail', array($this, 'cmp_get_post_detail')); add_action('wp_ajax_nopriv_cmp_get_post_detail', array($this, 'cmp_get_post_detail')); add_action('wp_ajax_cmp_check_update', array($this, 'cmp_check_update')); add_action('wp_ajax_cmp_ajax_dismiss_activation_notice', array($this, 'cmp_ajax_dismiss_activation_notice')); add_action('wp_ajax_niteo_themeinfo', array($this, 'niteo_themeinfo')); add_action('wp_ajax_niteo_unsplash', array($this, 'niteo_unsplash')); add_action('wp_ajax_niteo_export_csv', array($this, 'niteo_export_csv')); add_action('wp_ajax_cmp_theme_update_install', array($this, 'cmp_theme_update_install')); add_action('wp_ajax_cmp_toggle_activation', array($this, 'cmp_ajax_toggle_activation')); add_action('wp_ajax_nopriv_niteo_subscribe', array($this, 'niteo_subscribe')); add_action('wp_ajax_niteo_subscribe', array($this, 'niteo_subscribe')); add_action('wp_ajax_cmp_mailchimp_list_ajax', array($this, 'cmp_mailchimp_list_ajax')); add_action('wp_ajax_cmp_ajax_upload_font', array($this, 'cmp_ajax_upload_font')); add_action('wp_ajax_cmp_ajax_export_settings', array($this, 'cmp_ajax_export_settings')); add_action('wp_ajax_cmp_ajax_import_settings', array($this, 'cmp_ajax_import_settings')); add_action('wp_ajax_nopriv_cmp_disable_comingsoon_ajax', array($this, 'cmp_disable_comingsoon_ajax')); add_action('admin_head', array($this, 'cmp_admin_css')); add_action('after_setup_theme', array($this, 'cmp_create_translation'), 10); add_action('after_setup_theme', array($this, 'cmp_register_wpml_strings'), 20); add_filter('upload_mimes', array($this, 'cmp_allow_font_mimes')); add_filter('plugin_action_links_' . plugin_basename(__FILE__), array($this, 'add_action_links')); register_activation_hook(__FILE__, array($this, 'cmp_activate')); register_deactivation_hook(__FILE__, array($this, 'cmp_deactivate')); require_once(dirname(__FILE__) . '/inc/class-cmp-render_html.php'); if ($this->cmp_active() === '1' && get_option('niteoCS_rest_api_status', '1') !== '1') { add_filter('rest_authentication_errors', array($this, 'restrict_rest_api'), 0, 1); } add_action('init', array($this, 'jetpack_stats_compatibility')); } /** * Define constant if not already set. * * @param string|string $name Name of the definition. * @param string|bool $value Default value. */ private function define($name, $value) { if (!defined($name)) { define($name, $value); } } /** * Admin Init - register and enqueue scripts nad styles */ public function cmp_adminInit() { // include feedback class require_once('inc/class-cmp-feedback.php'); // ini render-settings class require_once('inc/class-cmp-render_settings.php'); $this->render_settings = new cmp_render_settings(); if (current_user_can('administrator')) { wp_register_style('cmp-style', plugins_url('/css/cmp-settings-style' . CMP_ASSET_SUFFIX . '.css', __FILE__), '', CMP_VERSION); wp_register_style('cmp-font-awesome', plugins_url('/css/font-awesome.min.css', __FILE__)); wp_register_style('countdown_flatpicker_css', plugins_url('/css/flatpickr.min.css', __FILE__)); wp_register_style('animate-css', plugins_url('/css/animate' . CMP_ASSET_SUFFIX . '.css', __FILE__)); wp_register_script('webfont', 'https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js', array(), '1.6.26', true); wp_register_script('cmp-select2-js', plugins_url('/js/external/select2.min.js', __FILE__)); wp_register_script('cmp-typography', plugins_url('/js/typography' . CMP_ASSET_SUFFIX . '.js', __FILE__), array('cmp-select2-js'), CMP_VERSION); wp_register_script('cmp_settings_js', plugins_url('/js/settings' . CMP_ASSET_SUFFIX . '.js', __FILE__), array('webfont', 'cmp-select2-js'), CMP_VERSION); wp_register_script('cmp_advanced_js', plugins_url('/js/cmp-advanced' . CMP_ASSET_SUFFIX . '.js', __FILE__), array(), CMP_VERSION); wp_register_script('cmp-editor-translation', plugins_url('/js/cmp-editor-translation' . CMP_ASSET_SUFFIX . '.js', __FILE__), array(), CMP_VERSION, true); wp_register_script('countdown_flatpicker_js', plugins_url('/js/external/flatpickr.min.js', __FILE__)); } } /** * Add CMP updater proceess * * @since 2.8.7 */ public function cmp_update_process() { require_once('inc/cmp-update-process.php'); } /** * create translation if it's has not been created * * @since 3.7.5 */ public function cmp_create_translation() { // Populate translation list, if not yet created if (!get_option('niteoCS_translation')) { $translation = array( 0 => array('id' => 0, 'name' => 'Counter Seconds Label', 'string' => __('Seconds', 'cmp-coming-soon-maintenance'), 'translation' => __('Seconds', 'cmp-coming-soon-maintenance')), 1 => array('id' => 1, 'name' => 'Counter Minutes Label', 'string' => __('Minutes', 'cmp-coming-soon-maintenance'), 'translation' => __('Minutes', 'cmp-coming-soon-maintenance')), 2 => array('id' => 2, 'name' => 'Counter Hours Label', 'string' => __('Hours', 'cmp-coming-soon-maintenance'), 'translation' => __('Hours', 'cmp-coming-soon-maintenance')), 3 => array('id' => 3, 'name' => 'Counter Days Label', 'string' => __('Days', 'cmp-coming-soon-maintenance'), 'translation' => __('Days', 'cmp-coming-soon-maintenance')), 4 => array('id' => 4, 'name' => 'Subscribe Form Placeholder', 'string' => __('Insert your email address.', 'cmp-coming-soon-maintenance'), 'translation' => __('Insert your email address.', 'cmp-coming-soon-maintenance')), 5 => array('id' => 5, 'name' => 'Subscribe Response Duplicate', 'string' => __('Oops! This email address is already on our list.', 'cmp-coming-soon-maintenance'), 'translation' => __('Oops! This email address is already on our list.', 'cmp-coming-soon-maintenance')), 6 => array('id' => 6, 'name' => 'Subscribe Response Not Valid', 'string' => __('Oops! We need a valid email address. Please try again.', 'cmp-coming-soon-maintenance'), 'translation' => __('Oops! We need a valid email address. Please try again.', 'cmp-coming-soon-maintenance')), 7 => array('id' => 7, 'name' => 'Subscribe Response Thanks', 'string' => __('Thank you! Your sign up request was successful.', 'cmp-coming-soon-maintenance'), 'translation' => __('Thank you! Your sign up request was successful.', 'cmp-coming-soon-maintenance')), 8 => array('id' => 8, 'name' => 'Subscribe Submit Button Label', 'string' => __('Submit', 'cmp-coming-soon-maintenance'), 'translation' => __('Submit', 'cmp-coming-soon-maintenance')), 9 => array('id' => 9, 'name' => 'CMP Eclipse Theme: Scroll Text', 'string' => __('Scroll', 'cmp-coming-soon-maintenance'), 'translation' => __('Scroll', 'cmp-coming-soon-maintenance')), 10 => array('id' => 10, 'name' => 'Subscribe Form First Name Placeholder', 'string' => __('First Name', 'cmp-coming-soon-maintenance'), 'translation' => __('First Name', 'cmp-coming-soon-maintenance')), 11 => array('id' => 11, 'name' => 'Subscribe Form Last Name Placeholder', 'string' => __('Last Name', 'cmp-coming-soon-maintenance'), 'translation' => __('Last Name', 'cmp-coming-soon-maintenance')), 12 => array('id' => 12, 'name' => 'Subscribe', 'string' => __('Subscribe', 'cmp-coming-soon-maintenance'), 'translation' => __('Subscribe', 'cmp-coming-soon-maintenance')), 13 => array('id' => 13, 'name' => 'Subscribe GDPR Checkbox', 'string' => __('You must agree with our Terms and Conditions.', 'cmp-coming-soon-maintenance'), 'translation' => __('You must agree with our Terms and Conditions.', 'cmp-coming-soon-maintenance')), 14 => array('id' => 14, 'name' => 'Subscribe Missing Email', 'string' => __('Oops! Email is empty.', 'cmp-coming-soon-maintenance'), 'translation' => __('Oops! Email is empty.', 'cmp-coming-soon-maintenance')), ); update_option('niteoCS_translation', wp_json_encode($translation)); } } /** * Register CMP strings to Polylang / WPML * * @since 3.7.5 */ public function cmp_register_wpml_strings() { if ($this->translation_active()) { $themeslug = $this->cmp_selectedTheme(); $translation = json_decode(get_option('niteoCS_translation'), true); $overlay_status = get_option('niteoCS_overlay_text[status]', '0'); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Title', stripslashes(get_option('niteoCS_body_title', 'SOMETHING IS HAPPENING!'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Copyright', stripslashes(get_option('niteoCS_copyright', 'Made by <a href="https://niteothemes.com">NiteoThemes</a> with love.'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Subscribe GDPR Message', stripslashes(get_option('niteoCS_subscribe_label', ''))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Social Icons Title', stripslashes(get_option('niteoCS_soc_title', 'GET SOCIAL WITH US'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Counter Title', stripslashes(get_option('niteoCS_counter_heading', 'STAY TUNED, WE ARE LAUNCHING SOON...'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Extended Footer Title', stripslashes(get_option('niteoCS_contact_title', 'Quick Contacts'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Extended Footer Content', stripslashes(get_option('niteoCS_contact_content', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Contact Form Title', stripslashes(get_option('niteoCS_contact_form_label', 'Get in Touch'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'SEO Title', stripslashes(get_option('niteoCS_title', get_bloginfo('name') . ' Coming soon!'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'SEO Description', stripslashes(get_option('niteoCS_descr', 'Just Another Coming Soon Page'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Subscribe Popup Form Title', stripslashes(get_option('niteoCS_subscribe_popup_title', get_option('niteoCS_subscribe_title', 'SUBSCRIBE US')))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Popup Subscribe GDPR Message', stripslashes(get_option('niteoCS_subscribe_label_popup'))); foreach ($translation as $translate) { $this->cmp_register_string('CMP - Coming Soon & Maintenance', $translate['name'], stripslashes($translate['translation'])); } if ($overlay_status == '1' && in_array($themeslug, $this->cmp_overlay_text_themes())) { $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Overlay Title', stripslashes(get_option('niteoCS_overlay_text[heading]', 'NEW WEBSITE ON THE WAY!'))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Overlay Content', stripslashes(get_option('niteoCS_overlay_text[paragraph]', ''))); $this->cmp_register_string('CMP - Coming Soon & Maintenance', 'Overlay Button Text', stripslashes(get_option('niteoCS_overlay_text[button_text]', 'Call to Action!'))); } // register strings from themes if (file_exists($this->cmp_theme_dir($themeslug) . $themeslug . '/translation-strings.php') && function_exists('icl_register_string')) { require_once $this->cmp_theme_dir($themeslug) . $themeslug . '/translation-strings.php'; } } } public function cmp_register_string($group, $name, $string, $multiline = false) { if (function_exists('pll_register_string')) { pll_register_string($name, $string, $group, $multiline); } else if (defined('ICL_SITEPRESS_VERSION')) { do_action('wpml_register_single_string', $group, $name, $string); } } /** * Translates given string * * @since 3.7.5 * @return string */ public function cmp_wpml_translate_string($translation, $name) { if (defined('ICL_SITEPRESS_VERSION') && version_compare(ICL_SITEPRESS_VERSION, '3.2', '>=')) { $translation = apply_filters('wpml_translate_single_string', $translation, 'CMP - Coming Soon & Maintenance', $name); // WPML and Polylang compatibility } elseif (function_exists('icl_t')) { $translation = icl_t('CMP - Coming Soon & Maintenance', $name, $translation); } return $translation; } /** * Translates CMP saved option niteoCS_translation by Polylang / WPML * * @since 3.7.5 * @return string */ public function cmp_wpml_niteoCS_translation() { $translation = json_decode(get_option('niteoCS_translation'), true); if (defined('ICL_SITEPRESS_VERSION') && version_compare(ICL_SITEPRESS_VERSION, '3.2', '>=')) { foreach ($translation as $key => $translate) { $translation[$key]['translation'] = apply_filters('wpml_translate_single_string', $translate['translation'], 'CMP - Coming Soon & Maintenance', $translate['name']); } // WPML and Polylang compatibility } elseif (function_exists('icl_t')) { foreach ($translation as $key => $translate) { $translation[$key]['translation'] = icl_t('CMP - Coming Soon & Maintenance', $translate['name'], $translate['translation']); } } return $translation; } /** * returns current language * * @since 3.7.5 * @return string */ public function cmp_get_current_lang($type = 'slug') { $lang = null; if (function_exists('pll_current_language')) { $lang = pll_current_language($type); } else if (defined('ICL_LANGUAGE_CODE')) { $lang = $type === 'slug' ? ICL_LANGUAGE_CODE : ICL_LANGUAGE_NAME; } return $lang; } /** * returns configured languages slug * * @since 3.7.5 * @return array */ public function cmp_get_language_list() { $langs = array(); if (function_exists('pll_languages_list')) { $langs = pll_languages_list(); } else if (defined('ICL_SITEPRESS_VERSION')) { $langs = apply_filters('wpml_active_languages', NULL, array('skip_missing' => 0)); $langs = array_keys($langs); } return $langs; } /** * returns default language slug * * @since 3.7.5 * @return string */ public function cmp_get_default_language() { $default = null; if (function_exists('pll_default_language')) { $default = pll_default_language(); } else if (defined('ICL_SITEPRESS_VERSION')) { global $sitepress; $default = $sitepress->get_default_language(); } return $default; } /** * get translated object by id * * @since 3.7.5 * @return object */ public function cmp_get_translated_id($id) { if (function_exists('pll_get_post')) { $updated_id = pll_get_post($id); } else if (defined('ICL_SITEPRESS_VERSION')) { $updated_id = apply_filters('wpml_object_id', $id); } if (!$updated_id) { return $id; } return $updated_id; } /** * Define Bundled CMP themes and return them in array * * @since 2.8.3 * @return array */ public function cmp_themes_bundled() { return array('construct', 'countdown', 'hardwork'); } public function cmp_theme_supports($themeslug, $supports) { if (file_exists($this->cmp_theme_dir($themeslug) . $themeslug . '/' . $themeslug . '-defaults.php')) { require $this->cmp_theme_dir($themeslug) . $themeslug . '/' . $themeslug . '-defaults.php'; foreach ($theme_supports as $key => $value) { if ($key === $supports) { return $value; } } } return false; } /** * Define CMP Themes Using Font Animation styles * * @since 2.8.3 * @return array */ public function cmp_font_animation_themes() { return array('hardwork_premium', 'fifty', 'orbit', 'stylo', 'apollo', 'vega', 'pluto'); } /** * Define CMP Themes Using CF7 * * @since 2.8.5 * @return array */ public function cmp_cf7_themes() { return array('stylo', 'agency'); } /** * Define CMP Themes supporting Overlay text * * @since 2.8.5 * @return array */ public function cmp_overlay_text_themes() { return array('agency'); } /** * Define CMP themes supporting 3rd party page builders * * @since 3.7.3 * @return array */ public function cmp_builder_themes() { return array('divi', 'elementor', 'oxygen_builder'); } /** * Check if WPML or Polylang is activated * * @since 3.7.9 * @return array */ public function translation_active() { return function_exists('pll_languages_list') || defined('ICL_SITEPRESS_VERSION'); } /** * returns array list of premium themes => manually defined * * @return array */ public function cmp_premium_themes() { $premium_themes = array(); array_push($premium_themes, array('name' => 'nova', 'url' => 'https://niteothemes.com/downloads/cmp-nova-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=nova', 'price' => '12')); array_push($premium_themes, array('name' => 'mercury', 'url' => 'https://niteothemes.com/downloads/cmp-mercury-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=mercury', 'price' => '10')); array_push($premium_themes, array('name' => 'fifty', 'url' => 'https://niteothemes.com/downloads/cmp-fifty-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=fifty', 'price' => '10')); array_push($premium_themes, array('name' => 'apollo', 'url' => 'https://niteothemes.com/downloads/cmp-apollo-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=apollo', 'price' => '10')); array_push($premium_themes, array('name' => 'loki', 'url' => 'https://niteothemes.com/downloads/cmp-loki-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=loki', 'price' => '12')); array_push($premium_themes, array('name' => 'orion', 'url' => 'https://niteothemes.com/downloads/cmp-orion-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=orion', 'price' => '12')); array_push($premium_themes, array('name' => 'vega', 'url' => 'https://niteothemes.com/downloads/cmp-vega-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=vega', 'price' => '10')); array_push($premium_themes, array('name' => 'mosaic', 'url' => 'https://niteothemes.com/downloads/cmp-mosaic-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=mosaic', 'price' => '10')); array_push($premium_themes, array('name' => 'titan', 'url' => 'https://niteothemes.com/downloads/cmp-titan-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=titan', 'price' => '12')); array_push($premium_themes, array('name' => 'saturn', 'url' => 'https://niteothemes.com/downloads/cmp-saturn-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=saturn', 'price' => '12')); array_push($premium_themes, array('name' => 'atlas', 'url' => 'https://niteothemes.com/downloads/cmp-atlas-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=atlas', 'price' => '12')); array_push($premium_themes, array('name' => 'scout', 'url' => 'https://niteothemes.com/downloads/cmp-scout-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=scout', 'price' => '10')); array_push($premium_themes, array('name' => 'libra', 'url' => 'https://niteothemes.com/downloads/cmp-libra-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=libra', 'price' => '10')); array_push($premium_themes, array('name' => 'delta', 'url' => 'https://niteothemes.com/downloads/cmp-delta-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=delta', 'price' => '10')); array_push($premium_themes, array('name' => 'headliner', 'url' => 'https://niteothemes.com/downloads/cmp-headliner-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=headliner', 'price' => '10')); array_push($premium_themes, array('name' => 'elementor', 'url' => 'https://niteothemes.com/downloads/cmp-elementor-addon/?utm_source=cmp&utm_medium=referral&utm_campaign=elementor', 'price' => '29')); array_push($premium_themes, array('name' => 'divi', 'url' => 'https://niteothemes.com/downloads/cmp-divi-addon/?utm_source=cmp&utm_medium=referral&utm_campaign=divi', 'price' => '29')); array_push($premium_themes, array('name' => 'timex', 'url' => 'https://niteothemes.com/downloads/cmp-timex-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=timex', 'price' => '15')); array_push($premium_themes, array('name' => 'thor', 'url' => 'https://niteothemes.com/downloads/cmp-thor-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=thor', 'price' => '10')); array_push($premium_themes, array('name' => 'hardwork_premium', 'url' => 'https://niteothemes.com/downloads/cmp-hardwork-premium/?utm_source=cmp&utm_medium=referral&utm_campaign=hardwork_premium', 'price' => '10')); array_push($premium_themes, array('name' => 'tempie', 'url' => 'https://niteothemes.com/downloads/cmp-tempie-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=tempie', 'price' => '10')); array_push($premium_themes, array('name' => 'stylo', 'url' => 'https://niteothemes.com/downloads/cmp-stylo-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=stylo', 'price' => '10')); array_push($premium_themes, array('name' => 'ares', 'url' => 'https://niteothemes.com/downloads/cmp-ares-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=ares', 'price' => '10')); array_push($premium_themes, array('name' => 'juno', 'url' => 'https://niteothemes.com/downloads/cmp-juno-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=juno', 'price' => '10')); array_push($premium_themes, array('name' => 'pluto', 'url' => 'https://niteothemes.com/downloads/cmp-pluto-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=pluto', 'price' => '10')); array_push($premium_themes, array('name' => 'agency', 'url' => 'https://niteothemes.com/downloads/cmp-agency-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=agency', 'price' => '15')); array_push($premium_themes, array('name' => 'element', 'url' => 'https://niteothemes.com/downloads/cmp-element-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=element', 'price' => '10')); array_push($premium_themes, array('name' => 'postery', 'url' => 'https://niteothemes.com/downloads/cmp-postery/?utm_source=cmp&utm_medium=referral&utm_campaign=postery', 'price' => '10')); array_push($premium_themes, array('name' => 'frame', 'url' => 'https://niteothemes.com/downloads/cmp-frame-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=frame', 'price' => '10')); array_push($premium_themes, array('name' => 'eclipse', 'url' => 'https://niteothemes.com/downloads/cmp-eclipse-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=eclipse', 'price' => '0')); array_push($premium_themes, array('name' => 'orbit', 'url' => 'https://niteothemes.com/downloads/cmp-orbit-theme/?utm_source=cmp&utm_medium=referral&utm_campaign=orbit', 'price' => '0')); return $premium_themes; } /** * Returns CMP Premium themes from PREMIUM tHEMES DIR * * @since 2.8.3 * @return array */ public function cmp_premium_themes_installed() { $premium_themes = array(); if (file_exists(CMP_PREMIUM_THEMES_DIR)) { $premium_themes = glob(CMP_PREMIUM_THEMES_DIR . '*', GLOB_ONLYDIR); $premium_themes = array_map('basename', $premium_themes); } return $premium_themes; } /** * Merge and return bundled themes with premium installed themes * * @since 2.8.3 * @return array */ public function cmp_themes_available() { return array_merge($this->cmp_themes_bundled(), $this->cmp_premium_themes_installed()); } /** * Enqueue admin scripts and styles */ public function cmp_add_topbar_scripts() { // return of user is not logged in if (!is_user_logged_in()) { return; } // return if Top Bar Icon is disabled if (get_option('niteoCS_topbar_icon', '1') == '0') { return; } wp_register_style('cmp-admin-head-style', plugins_url('/css/cmp-admin-head.css', __FILE__), array(), CMP_VERSION); wp_register_script('cmp_admin_script', plugins_url('/js/cmp-admin-head.js', __FILE__), array('jquery'), CMP_VERSION); $roles_topbar = json_decode(get_option('niteoCS_roles_topbar', '[]'), true); // push WP administrator to roles array, since it is default array_push($roles_topbar, 'administrator'); // get current user $current_user = wp_get_current_user(); // check for roles array length if (count($current_user->roles) > 0) { // enqueue topbar script and style only, if current user is allowed to display topbar, or is admin foreach ($current_user->roles as $role) { if (in_array($role, $roles_topbar)) { wp_enqueue_style('cmp-admin-head-style'); wp_enqueue_script('cmp_admin_script'); wp_localize_script('cmp_admin_script', 'cmp_ajax', array('ajax_url' => admin_url('admin-ajax.php'))); break; } }; // this one is for broken wp admin, where current user does not have any roles } else { wp_enqueue_script('cmp_admin_script'); wp_enqueue_style('cmp-admin-head-style'); } } /** * Add CMP admin style for its settings pages * * @since 2.8.9 */ public function cmp_add_admin_style($hook) { // return of user is not logged in if (!is_user_logged_in()) { return; } $prefix = sanitize_title(__('CMP Settings', 'cmp-coming-soon-maintenance')); $cmp_pages = array( 'toplevel_page_cmp-settings', $prefix . '_page_cmp-advanced', $prefix . '_page_cmp-subscribers', $prefix . '_page_cmp-translate', $prefix . '_page_cmp-upload-theme', $prefix . '_page_cmp-themes-manager', $prefix . '_page_cmp-addons', ); if (in_array($hook, $cmp_pages)) { wp_enqueue_style('cmp-style'); } } /** * Set Plugin assets minified or full path based on DEBUG mode * * @since 2.8.1 */ public function cmp_assets_suffix() { // If there's no debug mode, use the minified assets supplied. if (!defined('CMP_DEBUG')) { define('CMP_ASSET_SUFFIX', '.min'); return; } if (true === CMP_DEBUG) { define('CMP_ASSET_SUFFIX', null); } else { define('CMP_ASSET_SUFFIX', '.min'); } } /** * Register CMP menus pages */ public function cmp_adminMenu() { /* Register our plugin page */ $page = add_menu_page(__('CMP Settings', 'cmp-coming-soon-maintenance'), __('CMP Settings', 'cmp-coming-soon-maintenance'), 'manage_options', 'cmp-settings', array($this, 'cmp_settings_page'), plugins_url('/img/cmp.png', __FILE__)); add_submenu_page('cmp-settings', __('CMP Basic Setup', 'cmp-coming-soon-maintenance'), __('CMP Basic Setup', 'cmp-coming-soon-maintenance'), 'manage_options', 'cmp-settings'); add_submenu_page('cmp-settings', __('CMP Advanced Setup', 'cmp-coming-soon-maintenance'), __('CMP Advanced Setup', 'cmp-coming-soon-maintenance'), 'manage_options', 'cmp-advanced', array($this, 'cmp_advanced_page')); add_submenu_page('cmp-settings', __('CMP Subscribers', 'cmp-coming-soon-maintenance'), __('CMP Subscribers', 'cmp-coming-soon-maintenance'), 'manage_options', 'cmp-subscribers', array($this, 'cmp_subs_page')); add_submenu_page('cmp-settings', __('CMP Translation', 'cmp-coming-soon-maintenance'), __('CMP Translation', 'cmp-coming-soon-maintenance'), 'manage_options', 'cmp-translate', array($this, 'cmp_translate_page')); add_submenu_page('cmp-settings', __('Upload CMP Theme', 'cmp-coming-soon-maintenance'), __('Upload CMP Theme', 'cmp-coming-soon-maintenance'), 'manage_options', 'cmp-upload-theme', array($this, 'cmp_upload_page')); /* Using registered $page handle to hook script load */ add_action('admin_print_scripts-' . $page, array($this, 'cmp_admin_scripts')); } /** * enqueue styles and scripts when navigated to CMP Settings page */ public function cmp_admin_scripts() { wp_enqueue_media(); if (function_exists('wp_enqueue_code_editor')) { wp_enqueue_code_editor(array('type' => 'text/css')); } wp_localize_script('cmp-typography', 'fonts', array('google' => $this->cmp_get_google_fonts())); wp_enqueue_script('cmp_settings_js'); wp_enqueue_script('cmp-typography'); wp_enqueue_script('wp-color-picker'); wp_enqueue_script('webfont'); wp_enqueue_script('cmp-select2-js'); if ($this->translation_active()) { $langs = $this->cmp_get_language_list(); $default_lang = $this->cmp_get_default_language(); wp_localize_script('cmp-editor-translation', 'translation', array('langs' => $langs, 'default' => $default_lang)); wp_enqueue_script('cmp-editor-translation'); } wp_enqueue_style('wp-color-picker'); wp_enqueue_style('cmp-font-awesome'); if (in_array($this->cmp_selectedTheme(), $this->cmp_font_animation_themes())) { wp_enqueue_style('animate-css'); } } function cmp_admin_css() { ?> <style type="text/css" media="screen"> #toplevel_page_cmp-settings img { max-width: 14px !important; padding-top: 5px !important; } </style> <?php } /** * Render CMP Settings Page */ public function cmp_settings_page() { $this->cmp_check_update($this->cmp_selectedTheme()); require_once('cmp-settings.php'); } /** * Render CMP Advanced Settings Sub Page */ public function cmp_advanced_page() { wp_enqueue_script('cmp-select2-js'); wp_enqueue_script('cmp_advanced_js'); wp_enqueue_style('cmp-font-awesome'); require_once('cmp-advanced.php'); } /** * Render CMP Subscribers Sub Page */ public function cmp_subs_page() { require_once('cmp-subscribers.php'); } /** * Render CMP Translation Sub Page */ public function cmp_translate_page() { require_once('cmp-translate.php'); } /** * Render CMP Upload new Theme Sub Page */ public function cmp_upload_page() { require_once('cmp-upload.php'); } /** * Load text domain */ public function load_textdomain() { load_plugin_textdomain('cmp-coming-soon-maintenance', false, dirname(plugin_basename(__FILE__)) . '/languages/'); } /** * Return CMP active status 0 or 1 * Default is 0 after CMP plugin installation * @since 3.1.2 * @return string */ public function cmp_active() { return get_option('niteoCS_status', '0') === '0' ? '0' : '1'; } /** * Return CMP Mode status * * @since 3.1.2 * @return string */ public function cmp_mode() { return get_option('niteoCS_activation', '2'); } /** * returns bundled plugin`s assets URL for Premium Themes * * @since 2.6 * @access public * @param string * @return URL string */ public function cmp_asset_url($filepath) { return plugins_url($filepath, __FILE__); } /** * Overrides wp login page, Loggout current user and wp redirect, if cmp is enabled * * @access public */ // public function cmp_admin_override() { // // if admin is logged in or CMP is disabled, or not on page filter // if ( $this->cmp_active() === '0' || $this->cmp_roles_filter() || !$this->cmp_page_filter() ) { // return; // } // wp_logout(); // wp_redirect( get_bloginfo('url') ); // exit(); // } // function to display CMP landing page public function cmp_displayPage() { $theme = $this->cmp_selectedTheme(); // register html class for rendering of HTML elements in Themes $html = new CMP_Coming_Soon_and_Maintenance_Render_HTML(); // check if preview is set if (isset($_GET['cmp_preview']) && $_GET['cmp_preview'] == 'true') { $theme = isset($_GET['cmp_theme']) ? $_GET['cmp_theme'] : $theme; if (!in_array($theme, $this->cmp_themes_available())) { $theme = $this->cmp_selectedTheme(); } // finally render theme preview cmp_preview=true if (file_exists($this->cmp_theme_dir($theme) . $theme . '/' . $theme . '-theme.php')) { require_once($this->cmp_theme_dir($theme) . $theme . '/' . $theme . '-theme.php'); die(); } } // return if CMP is disabled, user bypass by role or page is whitelisted if ($this->cmp_active() === '0' || $this->cmp_roles_filter() || !$this->cmp_page_filter()) { return; } // bypass CMP and set cookie for user defined period of time, if bypass is enabled, bypass ID is set, and match CMP bypass settings if (isset($_GET['cmp_bypass']) && $_GET['cmp_bypass'] == get_option('niteoCS_bypass_id') && get_option('niteoCS_bypass', '0') == '1') { nocache_headers(); header('Cache-Control: max-age=0; private'); setcookie('cmp_bypass', get_option('niteoCS_bypass_id'), time() + get_option('niteoCS_bypass_expire', 172800)); // exit CMP return; } // if bypass Cookie is set, return if (isset($_COOKIE['cmp_bypass']) && $_COOKIE['cmp_bypass'] == get_option('niteoCS_bypass_id') && get_option('niteoCS_bypass', '0') == '1') { // exit CMP return; } // if CMP in redirect mode with 0 timeout, die early with redirect if ($this->cmp_mode() == 3 && get_option('niteoCS_redirect_time') == 0) { $redirect_url = get_option('niteoCS_URL_redirect'); // redirect to URL if ($redirect_url != '') { header('Location: ' . esc_url($redirect_url)); die(); } } // check for mailpoptin ajax if (isset($_GET['mailoptin-ajax'])) { $campaign_id = get_option('niteoCS_mailoptin_selected'); $campaign = MailOptin\Core\Repositories\OptinCampaignsRepository::get_optin_campaign_by_id($campaign_id); if (isset($_POST['optin_data']) && $_POST['optin_data']['optin_uuid'] == $campaign['uuid']) { return; } } // if themes with countdown timer if ($this->cmp_theme_supports($theme, 'counter')) { // if counter is enabled - default yes if (get_option('niteoCS_counter', '1') == '1') { // if countdown date is set - default 24 hours if (get_option('niteoCS_counter_date') && get_option('niteoCS_counter_date') != '') { // if timer < timestamp do pre-set action if (get_option('niteoCS_counter_date') < time()) { $action = get_option('niteoCS_countdown_action', 'no-action'); // send notification email if email transient is not set if (get_option('niteoCS_countdown_notification', '1') == '1' && get_option('niteoCS_counter_email', false) !== 'sent') { switch ($action) { case 'no-action': $message = __('Counter expired but it is set to make no action - you should login to your Wordpress Admin and adjust the expired timer or disable Coming Soon / Maintenance Mode.', 'cmp-coming-soon-maintenance'); break; case 'hide': $message = __('Counter expired and and it is hidden on your website per settings.', 'cmp-coming-soon-maintenance'); break; case 'disable-cmp': $message = __('Counter expired and Coming soon / Maintanance mode was disabled.', 'cmp-coming-soon-maintenance'); break; case 'redirect': $message = __('Counter expired and your Website is redirected to external URL per settings.', 'cmp-coming-soon-maintenance'); break; default: $message = ''; break; } $to = get_option('niteoCS_countdown_email_address', get_option('admin_email')); $subject = 'Countdown timer just expired on your Coming Soon Page - ' . get_site_url(); $body = $message . ' This is auto generated message from CMP - Coming Soon & Maintenance Plugin installed on ' . get_site_url(); $headers = array('Content-Type: text/plain; charset=UTF-8'); // send email wp_mail($to, $subject, $body, $headers); // set email option update_option('niteoCS_counter_email', 'sent'); } // if action set to redirect if ($action == 'redirect') { $redirect_url = esc_url(get_option('niteoCS_countdown_redirect')); header('Location: ' . $redirect_url); die(); } } } } } // if maintanance mode send correct 503 headers if ($this->cmp_mode() == '1') { header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable'); header('Retry-After: 86400'); // retry in a day } // send no-cache headers if set in Settings if (get_option('niteoCS_seo_nocache', '1') == '1') { nocache_headers(); header('Cache-Control: no-cache; private'); } // set cookie for WPML AJAX translation if (defined('ICL_LANGUAGE_CODE')) { setcookie('wp-wpml_current_language', ICL_LANGUAGE_CODE, time() + 3600, '/'); setcookie('_icl_current_language', ICL_LANGUAGE_CODE, time() + 3600, '/'); } // finally render selected CMP theme if (file_exists($this->cmp_theme_dir($theme) . $theme . '/' . $theme . '-theme.php')) { require_once($this->cmp_theme_dir($theme) . $theme . '/' . $theme . '-theme.php'); die(); } } // function to toggle CMP activation for admin menu icon public function cmp_ajax_toggle_activation() { // check for ajax payoload if (isset($_POST['payload']) && $_POST['payload'] == 'toggle_cmp_status') { // verify nonce check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!$this->cmp_user_can_admin_bar_activation()) { echo 'Current user cannot toggle CMP activation'; wp_die(); return; } if ($this->cmp_active() === '0') { update_option('niteoCS_status', '1'); $this->cmp_send_notification('on'); } else { update_option('niteoCS_status', '0'); $this->cmp_send_notification('off'); } $this->cmp_purge_cache(); echo 'success'; wp_die(); return; } } // return selected theme, defaults to hardwork public function cmp_selectedTheme() { return get_option('niteoCS_theme', 'hardwork'); } // return installed theme dir path public function cmp_theme_dir($slug) { if (in_array($slug, $this->cmp_themes_bundled())) { return CMP_PLUGIN_DIR . 'themes/'; } else { return CMP_PREMIUM_THEMES_DIR; } } // return installed theme URL public function cmp_themeURL($slug) { if (in_array($slug, $this->cmp_themes_bundled())) { return plugins_url('/themes/', __FILE__); } else { return plugins_url('/cmp-premium-themes/'); } } // display admin topbar notice public function cmp_admin_bar() { $prefix = sanitize_title(__('CMP Settings', 'cmp-coming-soon-maintenance')); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (current_user_can('publish_pages') && function_exists('get_current_screen') && is_admin() && get_current_screen()->id == $prefix . '_page_cmp-advanced' && wp_verify_nonce($_POST['save_options_field'], 'save_options')) { // check POST if user wants to enable or disable the topbar from settings if (isset($_POST['niteoCS_topbar_icon']) && is_numeric($_POST['niteoCS_topbar_icon'])) { update_option('niteoCS_topbar_icon', sanitize_text_field($_POST['niteoCS_topbar_icon'])); } if (isset($_POST['niteoCS_topbar_version'])) { update_option('niteoCS_topbar_version', sanitize_text_field($_POST['niteoCS_topbar_version'])); } } } if (!$this->cmp_user_can_admin_bar_activation()) { return false; } // CMP PLUGIN ACTIVATION AND STATUS CHANGE SETTINGS! if ($_SERVER['REQUEST_METHOD'] == 'POST' && (function_exists('get_current_screen') && is_admin() && get_current_screen()->id == 'toplevel_page_cmp-settings')) { // verify nonce and user rights if (!wp_verify_nonce($_POST['save_options_field'], 'save_options') || !current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } if (isset($_POST['activate']) && is_numeric($_POST['activate'])) { update_option('niteoCS_activation', sanitize_text_field($_POST['activate'])); } if (isset($_POST['cmp_status'])) { update_option('niteoCS_status', $this->sanitize_checkbox($_POST['cmp_status'])); $this->cmp_send_notification('on'); } else if (!isset($_POST['submit_theme'])) { update_option('niteoCS_status', '0'); $this->cmp_send_notification('off'); } } // create nonce for ajax request $ajax_nonce = wp_create_nonce('cmp-coming-soon-ajax-secret'); global $wp_admin_bar; $class = ''; $msg = ''; $icon = '<img src="' . plugins_url('/img/cmp.png', __FILE__) . '" alt="CMP Logo" class="cmp-logo" style="max-width:20px;">'; $topbar_version = get_option('niteoCS_topbar_version', 'cmp-topbar-full'); if ($topbar_version === 'cmp-topbar-full') { switch ($this->cmp_mode()) { case '1': $msg = __('Maintenance Mode:', 'cmp-coming-soon-maintenance'); $class = ' maintenance'; break; case '2': $msg = __('Coming Soon Mode:', 'cmp-coming-soon-maintenance'); $class = ' coming-soon'; break; case '3': $msg = __('Redirect Mode:', 'cmp-coming-soon-maintenance'); $class = ' redirect'; break; default: break; } $msg = '<span class="cmp-status-msg ab-label">' . $msg . '</span>'; } $topbar = $icon . $msg . '<div class="toggle-wrapper"><div id="cmp-status-menubar" class="toggle-checkbox"></div><div id="cmp-toggle-adminbar" class="status-' . esc_attr($this->cmp_active()) . '" data-security="' . esc_attr($ajax_nonce) . '"><span class="toggle_handler"></span></div></div>'; //Add the main siteadmin menu item $wp_admin_bar->add_menu(array( 'id' => 'cmp-admin-notice', 'href' => admin_url() . 'admin.php?page=cmp-settings', 'parent' => 'top-secondary', 'title' => $topbar, 'meta' => array('class' => 'cmp-notice' . $class), )); // Display CMP Settings in topbar only for administrator if (current_user_can('administrator')) { $wp_admin_bar->add_node(array( 'id' => 'cmp-basic-settings', 'title' => __('CMP Basic Settings', 'cmp-coming-soon-maintenance'), 'href' => admin_url('admin.php?page=cmp-settings'), 'parent' => 'cmp-admin-notice' )); $wp_admin_bar->add_node(array( 'id' => 'cmp-advanced-settings', 'title' => __('CMP Advanced Settings', 'cmp-coming-soon-maintenance'), 'href' => admin_url('admin.php?page=cmp-advanced'), 'parent' => 'cmp-admin-notice' )); } $wp_admin_bar->add_node(array( 'id' => 'cmp-preview', 'title' => __('CMP Preview', 'cmp-coming-soon-maintenance'), 'href' => get_site_url() . '/?cmp_preview=true', 'parent' => 'cmp-admin-notice', 'meta' => array('target' => '_blank') )); } public function cmp_activate() { if (get_option('niteoCS_archive')) { //get all the options back from the archive $options = get_option('niteoCS_archive'); // update options foreach ($options as $option) { update_option($option['name'], $option['value']); } update_option('niteoCS_activation_notice', false); // delete archive delete_option('niteoCS_archive'); } } // archive plugin stuff when plugin is deactivated public function cmp_deactivate() { //get all the options. store them in an array $options = array(); global $wpdb; $saved_options = $wpdb->get_results("SELECT * FROM $wpdb->options WHERE option_name LIKE 'niteoCS_%'", OBJECT); $i = 0; foreach ($saved_options as $option) { $options[$i] = array('name' => $option->option_name, 'value' => get_option($option->option_name)); $i++; } //store the options all in one record, in case we ever reactivate the plugin update_option('niteoCS_archive', $options); //delete the separate ones foreach ($options as $option) { delete_option($option['name']); } $this->cmp_purge_cache(); } /** * Difference between Premium Themes installed and Premium Themes available sets in cmp_premium_themes() function. * * @since 2.2 * @access public * @return array */ public function cmp_downloadable_themes() { $downloadable_themes = array(); foreach ($this->cmp_premium_themes() as $premium) { if (!in_array($premium['name'], $this->cmp_premium_themes_installed())) { array_push($downloadable_themes, $premium); } } return $downloadable_themes; } /** * Disable CMP Coming Soon Mode via AJAX * * @since 3.7.6 * @access public * @return JSON */ public function cmp_disable_comingsoon_ajax() { $theme = $this->cmp_selectedTheme(); if (!in_array($theme, $this->cmp_builder_themes())) { check_ajax_referer('cmp-coming-soon-maintenance-nonce', 'security'); } $result = array('message' => 'error'); if (get_option('niteoCS_countdown_action', 'no-action') !== 'disable-cmp') { echo json_encode($result); wp_die(); } if (!empty($_REQUEST['status']) && $_REQUEST['status'] === 'disable-cmp' && get_option('niteoCS_counter_date') < time()) { update_option('niteoCS_status', '0'); $this->cmp_purge_cache(); $result = array('message' => 'success'); } echo json_encode($result); wp_die(); } // theme updates function public function cmp_check_update($theme_slug) { $ajax = false; // check for ajax if (isset($_POST['theme_slug'])) { // verify nonce check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } // sanitize array $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if (!empty($_POST['theme_slug'])) { $theme_slug = $_POST['theme_slug']; $ajax = true; } } if (!in_array($theme_slug, $this->cmp_premium_themes_installed())) { return; } // check for current theme version $remote_version = ''; $current_version = ''; if (CMP_DEBUG === TRUE) { delete_transient($theme_slug . '_updatecheck'); } // always check if update check transient is set or ajax request if (false === ($updatecheck_transient = get_transient($theme_slug . '_updatecheck')) || $ajax === TRUE) { $current_version = $this->cmp_theme_version($theme_slug); // get remote version from remote server $request = wp_remote_post(CMP_UPDATE_URL . '?action=get_metadata&slug=' . $theme_slug, array('body' => array('action' => 'version'))); // if no error, retrivee body if (!is_wp_error($request)) { // decode to json $remote_version = json_decode($request['body'], true); // get remove version key if (isset($remote_version['version'])) { $remote_version = $remote_version['version']; // if remote version is bigger than current, display info about new version if ((float)$remote_version > (float)$current_version) { $title = ucwords(str_replace('_', ' ', $theme_slug)); // create nonce $ajax_nonce = wp_create_nonce('cmp-coming-soon-ajax-secret'); // if admin screen is not in updating theme if (!isset($_GET['theme']) || (isset($_GET['theme']) && $_GET['theme'] != $theme_slug)) { $transient = '<div class="notice notice-warning"><p class="message">' . sprintf(__('There is a <b>recommended</b> update of <b>CMP Theme: %s</b> available:', 'cmp-coming-soon-maintenance'), $title) . ' <a href="' . admin_url() . 'options-general.php?page=cmp-settings&action=update-cmp-theme&theme=' . esc_attr($theme_slug) . '&type=premium" class="cmp update-theme" data-type="premium" data-security="' . esc_attr($ajax_nonce) . '" data-slug="' . esc_attr($theme_slug) . '" data-name="' . esc_attr($title) . '" data-remote_url="' . esc_url(CMP_UPDATE_URL) . '" data-new_ver="' . esc_attr($remote_version) . '">' . sprintf(__(' click to update to %s version from NiteoThemes server now', 'cmp-coming-soon-maintenance'), esc_attr($remote_version)) . '!</a></div>'; // set transient with 12 hour expire set_transient($theme_slug . '_updatecheck', $transient, 60 * 60 * 12); // die early if this is ajax request with status = true if ($ajax) { wp_die($remote_version); return; } echo $transient; } } else { // die early if this is ajax request with status = false if ($ajax) { wp_die('false'); return; } // set transient no update available with 12 hours expire set_transient($theme_slug . '_updatecheck', '', 60 * 60 * 12); } } } // empty transient means theme was updated in last 24 hours } else if ($updatecheck_transient != '') { echo $updatecheck_transient; } if ($ajax) { wp_die('false'); } return; } public function cmp_theme_upload($uploadedfile) { if (!current_user_can('administrator')) { return false; } // allow zip file to upload add_filter('upload_mimes', array($this, 'cmp_allow_mimes')); // load PHP WP FILE if (!function_exists('wp_handle_upload')) { require_once realpath('../../../wp-admin/includes/file.php'); } $filename = $uploadedfile['name']; /* You can use wp_check_filetype() public function to check the file type and go on wit the upload or stop it.*/ $filetype = wp_check_filetype($filename); if ($filetype['ext'] == 'zip') { // Upload file $movefile = wp_handle_upload($uploadedfile, array('test_form' => FALSE)); if ($movefile && !isset($movefile['error'])) { WP_Filesystem(); $source_path = $movefile['file']; $theme_name = str_replace('.zip', '', $filename); $destination_path = CMP_PREMIUM_THEMES_DIR; // create new theme DIR if (wp_mkdir_p($destination_path)) { // Unzip FILE into that DIR $unzipfile = unzip_file($source_path, $destination_path); if ($unzipfile) { // delete FILE wp_delete_file($source_path); if ($theme_name == 'pluto') { delete_option('niteoCS_banner'); } echo '<div class="notice notice-success is-dismissible"><p class="message">' . ucwords(str_replace('_', ' ', $theme_name)) . ' ' . __(' theme was successfully installed!', 'cmp-coming-soon-maintenance') . '</p></div>'; return; } else { echo '<div class="notice notice-error is-dismissible"><p>' . __('There was an error unzipping the file!', 'cmp-coming-soon-maintenance') . '</p></div>'; return; } } else { echo '<div class="notice notice-error is-dismissible"><p>' . __('Error creating Theme subdirectory!', 'cmp-coming-soon-maintenance') . '</p></div>'; return; } } else { /** * Error generated by _wp_handle_upload() * @see _wp_handle_upload() in wp-admin/includes/file.php */ echo '<div class="notice notice-error is-dismissible"><p>' . $movefile['error'] . '</p></div>'; return; } } else { echo '<div class="notice notice-error is-dismissible"><p>' . __('Unable to upload new Theme file .', 'cmp-coming-soon-maintenance') . strtoupper($filetype['ext']) . __(' file extension is not supported. Please upload ZIP file containing CMP Theme.', 'cmp-coming-soon-maintenance') . '</p></div>'; return; } add_filter('upload_mimes', array($this, 'cmp_remove_mimes')); return; } public function cmp_theme_update_install($file) { $ajax = false; // check for ajax if (isset($_POST['file'])) { // verify nonce check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } // sanitize array $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if (!empty($_POST['file'])) { $file = $_POST['file']; $ajax = true; } } // load PHP WP FILE if (!empty($file)) { // Download file to temp location. $file['tmp_name'] = download_url($file['url']); //WARNING: The file is not automatically deleted, The script must unlink() the file. // If error storing temporarily, return the error. if (!is_wp_error($file['tmp_name'])) { WP_Filesystem(); // create new theme DIR if (wp_mkdir_p(CMP_PREMIUM_THEMES_DIR)) { // Unzip FILE into that DIR $unzipfile = unzip_file($file['tmp_name'], CMP_PREMIUM_THEMES_DIR); if (!is_wp_error($unzipfile)) { // delete tmp FILE wp_delete_file($file['tmp_name']); // set transient no update available with 24 hours expire set_transient($file['name'] . '_updatecheck', '', 60 * 60 * 24); // die if ($ajax) { wp_die('success'); return; } else { echo '<div class="notice notice-success is-dismissible"><p>CMP ' . ucwords(str_replace('_', ' ', $file['name'])) . ' ' . __('Theme has been updated to latest version!', 'cmp-coming-soon-maintenance') . '</p></div>'; return; } } else { echo '<div class="notice notice-error is-dismissible"><p>' . __('There was an error unzipping the file due to error: ', 'cmp-coming-soon-maintenance') . $unzipfile->get_error_message() . '</p></div>'; if ($ajax) { wp_die('error'); return; } } } else { echo '<div class="notice notice-error is-dismissible"><p>' . __('Error creating Theme subdirectory!', 'cmp-coming-soon-maintenance') . '</p></div>'; if ($ajax) { wp_die('error'); return; } } } else { echo '<div class="notice notice-error is-dismissible"><p>' . __('Error during updating Theme files:', 'cmp-coming-soon-maintenance') . ' ' . $file['tmp_name']->get_error_message() . '</p></div>'; if ($ajax === true) { wp_die('error'); return; } } } else { echo '<div class="notice notice-error is-dismissible"><p>' . __('General Error during updating Theme files.', 'cmp-coming-soon-maintenance') . '</p></div>'; if ($ajax === true) { wp_die('error'); return; } } return; } // build unsplash api public function cmp_unsplash_api($query) { $api_url = 'https://api.unsplash.com/' . $query . '&client_id=41f043163758cf2e898e8a868bc142c20bc3f5966e7abac4779ee684088092ab'; if (function_exists('wp_remote_get')) { $response = wp_remote_get($api_url); if (!is_object($response) && isset($response['body'])) { $body = $response['body']; $data = array('response' => $response['response']['code'], 'body' => $body); } else { $data = array('response' => 'Unplash API', 'body' => 'Not responding after 5000ms'); } } else { $data = array('response' => '500', 'body' => 'You have neither cUrl installed nor allow_url_fopen activated. Ask your server hosting provider to allow on of those options.'); } return $data; } // prepare unsplash url and get unsplash photo via cmp_unsplash_api() public function niteo_unsplash($params) { $ajax = false; // check for ajax if (isset($_POST['params'])) { // verify nonce check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } // sanitize array $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if (!empty($_POST['params'])) { $params = $_POST['params']; $ajax = true; } } array_key_exists('feed', $params) ? $feed = $params['feed'] : $feed = ''; array_key_exists('url', $params) ? $url = $params['url'] : $url = ''; array_key_exists('feat', $params) ? $feat = $params['feat'] : $feat = ''; array_key_exists('custom_str', $params) ? $custom_str = $params['custom_str'] : $custom_str = ''; array_key_exists('count', $params) ? $count = $params['count'] : $count = '1'; switch ($feed) { // specific unsplash photo by url/id case '0': $id = ''; // check if $query contains unsplash.com url if (strpos($url, 'unsplash.com') !== false) { $parts = parse_url($url); // check for photo parameter in URL if (isset($parts['query'])) { parse_str($parts['query'], $query); $id = $query['photo']; } // if no ID found, get last part of URL containing ID if ($id == '') { $pathFragments = explode('/', $parts['path']); $id = end($pathFragments); } // $query is ID } else { $id = $url; } // prepare query for single image $api_query = 'photos/' . $id . '?'; break; // random from user case '1': if ($custom_str[0] == '@') { $custom_str = substr($custom_str, 1); } // prepare query for random photo from collection $api_query = 'photos/random/?username=' . $custom_str . '&count=' . $count; break; // random from collection case '2': if (is_numeric($url)) { $collection = $url; } else { $collection = filter_var($url, FILTER_SANITIZE_NUMBER_INT); $collection = str_replace('-', '', $collection); } // prepare query for random photo from collection $api_query = 'photos/random/?collections=' . $collection . '&count=' . $count; break; // random photo case '3': // featured if ($feat == '0' || $feat == '') { $featured = 'false'; } else { $featured = 'true'; } // category $search = str_replace(' ', ',', $url); if ($search !== '') { $search = 'query=' . $search . '&'; } // prepare query for random photo $api_query = 'photos/random/?orientation=landscape&featured=' . $featured . '&' . $search . 'count=' . $count; break; default: $api_query = 'photos/random/?orientation=landscape&count=' . $count; break; } $unsplash_img = $this->cmp_unsplash_api($api_query); if ($ajax === true) { echo json_encode($unsplash_img); wp_die(); } else { return $unsplash_img; } } // check value in multidimensional array public function niteo_in_array_r($needle, $haystack, $strict = false) { foreach ($haystack as $item) { if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && $this->niteo_in_array_r($needle, $item, $strict))) { return true; } } return false; } /** * Recaptcha integration * * @since 3.6.16 * @access public * @return boolean */ public function is_human($token) { $this->define('RECAPTCHA_SECRET', get_option('niteoCS_recaptcha_secret')); $request = array( 'body' => array( 'secret' => RECAPTCHA_SECRET, 'response' => $token, ), ); $response = wp_remote_post(esc_url_raw('https://www.google.com/recaptcha/api/siteverify'), $request); $response_body = wp_remote_retrieve_body($response); $recaptcha = json_decode($response_body, true); if ($recaptcha['success'] === true & $recaptcha['score'] > 0.50) { return true; } return false; } // save subscribe function // $check must be true, to avoid duplicated requests after update to 2.1 public function niteo_subscribe($check) { $subscribe_method = get_option('niteoCS_subscribe_method', 'cmp'); $response = ''; // get translation lists if (get_option('niteoCS_translation')) { $translation = json_decode(get_option('niteoCS_translation'), TRUE); $response_ok = $this->cmp_wpml_translate_string($translation[7]['translation'], 'Subscribe Response Thanks'); $response_duplicate = $this->cmp_wpml_translate_string($translation[5]['translation'], 'Subscribe Response Duplicate'); $response_invalid = $this->cmp_wpml_translate_string($translation[6]['translation'], 'Subscribe Response Not Valid'); } $ajax = (isset($_POST['ajax']) && $_POST['ajax'] == TRUE) ? TRUE : FALSE; if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['form_honeypot']) && $_POST['form_honeypot'] === '' && isset($_POST['email'])) : if ($ajax) { check_ajax_referer('cmp-subscribe-action', 'security'); } // check recatpcha score if integration is enabled if (get_option('niteoCS_recaptcha_status', '1') === '1' && !empty(get_option('niteoCS_recaptcha_site', ''))) { if (!$this->is_human(sanitize_text_field($_POST['token']))) { echo json_encode(array('status' => '0', 'message' => 'Sorry, robots not allowed.')); wp_die(); } } if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { // email already passed is_email, no need to sanitize $email = sanitize_email($_POST['email']); // sanitize all inputs $ip_address = (isset($_POST['lastname'])) ? sanitize_text_field($_SERVER['REMOTE_ADDR']) : ''; $firstname = (isset($_POST['firstname'])) ? sanitize_text_field($_POST['firstname']) : ''; $lastname = (isset($_POST['lastname'])) ? sanitize_text_field($_POST['lastname']) : ''; $timestamp = time(); switch ($subscribe_method) { // default custom CMP method case 'cmp': // get subscribe list $subscribe_list = get_option('niteoCS_subscribers_list'); // if no subscribe list yet, create first item and insert it into DB if (!$subscribe_list) { $new_list = array(); $new_email = array('id' => '0', 'timestamp' => $timestamp, 'email' => $email, 'ip_address' => $ip_address, 'firstname' => $firstname, 'lastname' => $lastname); array_push($new_list, $new_email); update_option('niteoCS_subscribers_list', $new_list); $response = array('status' => '1', 'message' => $response_ok); } else { // check if email don`t already exists if (!$this->niteo_in_array_r($email, $subscribe_list, true)) { $count = count($subscribe_list); $new_email = array('id' => $count, 'timestamp' => $timestamp, 'email' => $email, 'ip_address' => $ip_address, 'firstname' => $firstname, 'lastname' => $lastname); array_push($subscribe_list, $new_email); update_option('niteoCS_subscribers_list', $subscribe_list); $response = array('status' => '1', 'message' => $response_ok); // sent notif email if (get_option('niteoCS_subscribe_notification', '0')) { $subscribe_notif_email = get_option('niteoCS_subscribe_email_address', get_option('admin_email')); $subject = sprintf(__('You have a new Subscriber on %s!', 'cmp-coming-soon-maintenance'), get_site_url()); $body = __('This is auto generated message from CMP - Coming Soon & Maintenance WordPress Plugin. You can disable these emails under CMP Advanced Settings > Email Notifications.', 'cmp-coming-soon-maintenance'); $headers = array('Content-Type: text/plain; charset=UTF-8'); wp_mail($subscribe_notif_email, $subject, $body, $headers); } // if email exists return duplicate response } else { $response = array('status' => '0', 'message' => $response_duplicate); } } break; // mailchimp API call case 'mailchimp': $api_key = esc_attr(get_option('niteoCS_mailchimp_apikey')); $list_id = esc_attr(get_option('niteoCS_mailchimp_list_selected')); $double_opt = get_option('niteoCS_mailchimp[double-opt]', '0'); $status = ($double_opt == '1') ? 'pending' : 'subscribed'; // subscribed, cleaned, pending $args = array( 'method' => 'PUT', 'headers' => array( 'Authorization' => 'Basic ' . base64_encode('user:' . $api_key) ), 'body' => json_encode(array( 'email_address' => $email, 'status' => $status, 'merge_fields' => array( 'FNAME' => $firstname, 'LNAME' => $lastname ) )) ); $mailchimp = wp_remote_post('https://' . substr($api_key, strpos($api_key, '-') + 1) . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' . md5(strtolower($email)), $args); if (!is_wp_error($mailchimp)) { $body = json_decode($mailchimp['body']); if ($mailchimp['response']['code'] == 200 && $body->status == $status) { $response = array('status' => '1', 'message' => $response_ok); } else { $response = array('status' => '0', 'message' => 'Error ' . $mailchimp['response']['code'] . ' ' . $body->title . ': ' . $body->detail); } } else { $error = $mailchimp->get_error_message(); $response = array('status' => '0', 'message' => $error); } break; // MailPoet integration case 'mailpoet': $response = array('status' => '0', 'message' => __('Something went wrong please try again later.', 'cmp-coming-soon-maintenance')); $mailpoet_list = get_option('niteoCS_mailpoet_list_selected'); $list_ids = array($mailpoet_list); $firstname = $firstname === '' ? null : $firstname; $lastname = $lastname === '' ? null : $lastname; $subscriber = array( 'email' => $email, 'first_name' => $firstname, 'last_name' => $lastname ); if (class_exists(\MailPoet\API\API::class)) { // Get MailPoet API instance $mailpoet_api = \MailPoet\API\API::MP('v1'); // Check if subscriber exists. If subscriber doesn't exist an exception is thrown try { $subscribed = $mailpoet_api->getSubscriber($subscriber['email']); } catch (\Exception $e) { } try { if (!$subscribed) { // Subscriber doesn't exist let's create one $mailpoet_api->addSubscriber($subscriber, $list_ids); $response = array('status' => '1', 'message' => $response_ok); } else { // In case subscriber exists just add him to new lists $mailpoet_api->subscribeToLists($subscriber['email'], $list_ids); $response = array('status' => '1', 'message' => $response_ok); } } catch (\Exception $e) { $error_message = $e->getMessage(); $response = array('status' => '0', 'message' => $error_message); } } break; // Mailster integration case 'mailster': $response = array('status' => '0', 'message' => __('Something went wrong please try again later.', 'cmp-coming-soon-maintenance')); $mailster_list_id = get_option('niteoCS_mailster_list_selected'); if (function_exists('mailster')) { // define to overwrite existing users $overwrite = true; // add with double opt in $double_opt_in = true; $subscriber = array( 'email' => $email, 'firstname' => $firstname, 'lastname' => $lastname, 'status' => get_option('niteoCS_mailster_double_opt', '1') ? 0 : 1 ); // add a new subscriber and $overwrite it if exists $subscriber_id = mailster('subscribers')->add($subscriber, $overwrite); // if result isn't a WP_error assign the lists if (!is_wp_error($subscriber_id)) { mailster('subscribers')->assign_lists($subscriber_id, $mailster_list_id); $response = array('status' => '1', 'message' => $response_ok); } else { $response = array('status' => '0', 'message' => $subscriber_id->get_error_message()); } } break; default: break; } // if not email, set response invalid } else { $response = array('status' => '0', 'message' => $response_invalid); } endif; if ($ajax === TRUE) { echo json_encode($response); wp_die(); } else { return ($response == '') ? $response : json_encode($response); } } public function niteo_export_csv() { if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // load subscribers array $subscribers = get_option('niteoCS_subscribers_list'); if (!empty($subscribers)) { $filename = 'cmp-subscribers-export-' . date('Y-m-d') . '.csv'; header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=' . $filename); $fp = fopen('php://output', 'w'); fputcsv( $fp, array( __('ID', 'cmp-coming-soon-maintenance'), __('Date', 'cmp-coming-soon-maintenance'), __('Email', 'cmp-coming-soon-maintenance'), __('Firstname', 'cmp-coming-soon-maintenance'), __('Lastname', 'cmp-coming-soon-maintenance'), __('Fullname', 'cmp-coming-soon-maintenance') ) ); foreach ($subscribers as $key => $value) { if (isset($value['ip_address'])) { unset($subscribers[$key]['ip_address']); } if (isset($value['timestamp'])) { $format = "Y-m-d H:i:s"; $subscribers[$key]['timestamp'] = date_i18n($format, $subscribers[$key]['timestamp']); } $subscribers[$key]['Name'] = ''; if ($value['firstname'] !== '' || $value['lastname'] !== '') { $subscribers[$key]['Name'] = $value['firstname'] . ' ' . $value['lastname']; } $subscribers[$key]['Name'] = trim($subscribers[$key]['Name']); } foreach ($subscribers as $key => $value) { fputcsv($fp, $value, $delimiter = ',', $enclosure = '"'); } fclose($fp); } die(); } public function cmp_allow_mimes($mimes = array()) { // add your own extension here - as many as you like $mimes['zip'] = 'application/zip'; return $mimes; } public function cmp_allow_font_mimes($mimes = array()) { // add your own extension here - as many as you like $mimes['woff'] = 'application/x-font-woff'; $mimes['woff2'] = 'application/x-font-woff2'; $mimes['ttf'] = 'application/x-font-ttf'; $mimes['eot'] = 'application/vnd.ms-fontobject'; $mimes['otf'] = 'font/otf'; if (current_user_can('administrator')) { $mimes['svg'] = 'image/svg+xml'; } return $mimes; } public function cmp_admin_notice() { global $pagenow; // display save messages if (isset($_GET['page']) && ($_GET['page'] == 'cmp-settings' || $_GET['page'] == 'cmp-translate' || $_GET['page'] == 'cmp-advanced')) { if (isset($_GET['status']) && $_GET['status'] == 'settings-saved') { $status = 'success'; $message = __('CMP Settings Saved', 'cmp-coming-soon-maintenance'); echo '<div class="notice notice-' . $status . ' is-dismissible"><p>' . $message . '.</p></div>'; } } // display activation notice if (!get_option('niteoCS_activation_notice')) { if (($pagenow == 'plugins.php')) { // load the notices view require_once(dirname(__FILE__) . '/inc/cmp-activation-notice.php'); } } return; } // convert hex to rgba public function hex2rgba($hex, $opacity = null) { list($red, $green, $blue) = sscanf($hex, '#%02x%02x%02x'); if ($opacity === null) { return $red . ',' . $green . ',' . $blue; } $rgba = 'rgba(' . $red . ',' . $green . ',' . $blue . ',' . $opacity . ')'; return $rgba; } // convert hex to hsl css public function hex2hsl($hex, $opacity) { if ($hex[0] != '#') { $rgba = explode(',', $hex); $rgba[3] = str_replace(')', '', $rgba[3]); $rgba[3] = $rgba[3] - ($opacity / 100); $rgba = $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . $rgba[3] . ')'; return $rgba; } list($red, $green, $blue) = sscanf($hex, '#%02x%02x%02x'); $r = $red / 255.0; $g = $green / 255.0; $b = $blue / 255.0; $H = 0; $S = 0; $V = 0; $min = min($r, $g, $b); $max = max($r, $g, $b); $delta = ($max - $min); $L = ($max + $min) / 2.0; if ($delta == 0) { $H = 0; $S = 0; } else { $S = $L > 0.5 ? $delta / (2 - $max - $min) : $delta / ($max + $min); $dR = ((($max - $r) / 6) + ($delta / 2)) / $delta; $dG = ((($max - $g) / 6) + ($delta / 2)) / $delta; $dB = ((($max - $b) / 6) + ($delta / 2)) / $delta; if ($r == $max) $H = $dB - $dG; else if ($g == $max) $H = (1 / 3) + $dR - $dB; else $H = (2 / 3) + $dG - $dR; if ($H < 0) $H += 1; if ($H > 1) $H -= 1; } $HSL = array('hue' => round(($H * 360), 0), 'saturation' => round(($S * 100), 0), 'luminosity' => round(($L * 100), 0)); // if color is white { if ($HSL['hue'] == 0 && $HSL['saturation'] == 0) { $requested_lumi = $HSL['luminosity'] + $opacity; } else { $requested_lumi = $HSL['luminosity'] - $opacity; } $requested_lumi = (int)round($requested_lumi); if ($requested_lumi > 90) { $requested_lumi = 90; } $HSL = 'hsl( ' . $HSL['hue'] . ', ' . ($HSL['saturation']) . '%, ' . $requested_lumi . '%)'; return $HSL; } // check if mobile public function isMobile() { if (isset($_SERVER["HTTP_USER_AGENT"])) { return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); } else { return false; } } // sanitize function public function sanitize_checkbox($input) { return ((isset($input) && true == $input) ? '1' : '0'); } // sanitize function public function niteo_sanitize_html($html) { if (!current_user_can('unfiltered_html')) { $allowed = wp_kses_allowed_html('post'); $html = wp_kses($html, $allowed); } return $html; } // public function to sort social icons public function sort_social($a, $b) { if ($a['hidden'] == $b['hidden']) { if ($a['order'] == $b['order']) { return 0; } return $a['order'] < $b['order'] ? -1 : 1; } else { return $a['hidden'] > $b['hidden'] ? 1 : -1; } } // public function to shift multidimensional array public function customShift($array, $name) { foreach ($array as $key => $val) { // loop all elements if ($val['name'] == $name) { // check for id $id unset($array[$key]); // unset the $array with id $id array_unshift($array, $val); // unshift the array with $val to push in the beginning of array return $array; // return new $array } } } public function get_youtube_img($youtube_url) { $yt_id = $this->get_youtube_id($youtube_url); $youtube_image = 'http://img.youtube.com/vi/' . $yt_id . '/hqdefault.jpg'; return $youtube_image; } public function get_youtube_id($youtube_url) { $youtube = preg_match('/.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/', $youtube_url, $url); return $url[7]; } public function cmp_get_pages($post_status = 'publish,draft', $builder = false) { $meta_query = array(); $pages = array(); // meta_query for pages built by elementor if ($builder === 'elementor') { $meta_query = array( 'key' => '_elementor_edit_mode', 'compare' => 'EXISTS' ); } // meta_query for pages built by Divi if ($builder === 'divi') { $meta_query = array( 'key' => '_et_pb_use_builder', 'compare' => 'EXISTS' ); } $args = array( 'post_type' => 'page', 'post_status' => $post_status, 'posts_per_page' => -1, 'meta_query' => array($meta_query) ); $the_query = new WP_Query($args); if ($the_query->have_posts()) { foreach ($the_query->posts as $post) { // check for gutenberg pages if ($builder === 'gutenberg' && !has_blocks($post->ID)) { continue; } $post_info = array('id' => $post->ID, 'name' => $post->post_title); array_push($pages, $post_info); } wp_reset_postdata(); } return $pages; } // send json data for theme info overlay AJAX request public function niteo_themeinfo() { // check for ajax if (isset($_POST['theme_slug'])) { // verify nonce check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } // sanitize $post $theme_slug = sanitize_text_field($_POST['theme_slug']); $data = array('result' => 'true', 'author_homepage' => CMP_AUTHOR_HOMEPAGE, 'author' => CMP_AUTHOR); if (!empty($theme_slug)) { $headers = array('Theme Name', 'Description'); $theme_info = get_file_data(plugin_dir_path(__FILE__) . '/themes/' . $theme_slug . '.txt', $headers, ''); $screenshots = array_map('basename', glob(plugin_dir_path(__FILE__) . 'img/thumbnails/' . $theme_slug . '/*')); foreach ($screenshots as $key => $screenshot) { $screenshots[$key] = plugins_url('img/thumbnails/' . $theme_slug . '/' . $screenshot, __FILE__); } $data['name'] = $theme_info[0]; $data['description'] = $theme_info[1]; $data['screenshots'] = $screenshots; } echo json_encode($data); wp_die(); } } // legacy function for premium themes redirect public function niteo_redirect() { return; } // returns array of google fonts from /inc/webfonts.php public function cmp_get_google_fonts() { $fonts = include_once wp_normalize_path(dirname(__FILE__) . '/inc/webfonts.php'); $google_fonts = json_decode($fonts, true); return $google_fonts; } public function cmp_google_variant_title($variant) { switch ($variant) { case '100': return 'Thin 100'; break; case '100italic': return 'Thin 100 Italic'; break; case '200': return 'Extra-light 200'; break; case '200italic': return 'Extra-light 200 Italic'; break; case '300': return 'Light 300'; break; case '300italic': return 'Light 300 Italic'; break; case '400': case 'regular': return 'Regular 400'; break; case '400italic': case 'italic': return 'Regular 400 Italic'; break; case '500': return 'Medium 500'; break; case '500italic': return 'Meidum 500 Italic'; break; case '600': return 'Semi-Bold 600'; break; case '600italic': return 'Semi-Bold 600 Italic'; break; case '700': return 'Bold 700'; break; case '700italic': return 'Bold 700 Italic'; break; case '800': return 'Extra-Bold 800'; break; case '800italic': return 'Extra-Bold Italic'; break; case '900': return 'Black 900'; break; case '900italic': return 'Black 900 Italic'; break; case 'Not Applicable': return 'Not Applicable'; break; default: break; } } // returns true if current page should display CMP page // since 2.2 public function cmp_page_filter() { global $wp; $uri = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] : ''; $current_url = trailingslashit((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $uri); $custom_login_url = get_option('niteoCS_custom_login_url', ''); // return early if login page or ajax call if (fnmatch('*wp-login.php*', $current_url) || wp_doing_ajax()) { return false; } // return early if custom login page if ($custom_login_url !== '' && fnmatch('*' . $custom_login_url . '*', $current_url)) { return false; } // WPS HIDE login integration if (defined('WPS_HIDE_LOGIN_BASENAME')) { if (fnmatch('*' . get_option('whl_page'), $current_url)) { return false; } } // allow / block RSS if (get_option('niteoCS_rss_status', '1') && is_feed()) { return false; } // get current page IDs if (is_front_page() && is_home()) { // default homepage $page_id = '-1'; } elseif (is_front_page()) { // static homepage $page_id = '-1'; } elseif (is_home()) { // posts page $page_id = get_option('page_for_posts'); } else { //everyting else $page_id = get_the_ID(); } // check whitelist or blacklist and return true/false switch (get_option('niteoCS_page_filter', '0')) { // disabled return true case '0': return true; break; // whitelist case '1': $whitelist = json_decode(get_option('niteoCS_page_whitelist', '[]'), true); if (!empty($whitelist) && in_array($page_id, $whitelist)) { return true; } $page_wl_custom = json_decode(get_option('niteoCS_page_whitelist_custom', '[]'), true); if (!empty($page_wl_custom)) { foreach ($page_wl_custom as $url) { if (fnmatch($url, $current_url)) { return true; } } } return false; break; // blacklist case '2': $blacklist = json_decode(get_option('niteoCS_page_blacklist', '[]'), true); if (!empty($blacklist) && in_array($page_id, $blacklist)) { return false; } $page_bl_custom = json_decode(get_option('niteoCS_page_blacklist_custom', '[]'), true); if (!empty($page_bl_custom)) { foreach ($page_bl_custom as $url) { if (fnmatch($url, $current_url)) { return false; } } } return true; break; default: return true; break; } return true; } // returns true if logged in user meet CMP roles filter // since 2.2 public function cmp_roles_filter() { $roles = json_decode(get_option('niteoCS_roles', '[]'), true); // push WP administrator to roles array, since it is default array_push($roles, 'administrator'); $current_user = wp_get_current_user(); foreach ($current_user->roles as $role) { if (in_array($role, $roles)) { return true; } }; return false; } public function add_action_links($links) { $settings = array( '<a href="' . admin_url('admin.php?page=cmp-settings') . '">CMP Settings</a>', ); return array_merge($settings, $links); } // returns version of selected CMP theme public function cmp_theme_version($theme_slug) { $version = CMP_VERSION; // if premium theme style.css exists get its version if (in_array($theme_slug, $this->cmp_premium_themes_installed())) { if (file_exists(CMP_PREMIUM_THEMES_DIR . $theme_slug . '/style.css')) { $version = get_file_data(CMP_PREMIUM_THEMES_DIR . $theme_slug . '/style.css', array('Version'), ''); } } // if we have local version of theme and not in updating theme if (is_array($version)) { $version = $version[0]; } return $version; } /** * Connect to Mailchimp via API and retrieve Mailchimp lists * * @since 2.6 * @access public * @return Object */ public function cmp_mailchimp_list_ajax($apikey) { // check for ajax if (isset($_POST['params'])) { // verify nonce check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } // sanitize array $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); // check params if (!empty($_POST['params'])) { $params = $_POST['params']; } $api_key = $params['apikey']; $dc = substr($api_key, strpos($api_key, '-') + 1); // datacenter, it is the part of your api key - us5, us8 etc $args = array( 'headers' => array( 'Authorization' => 'Basic ' . base64_encode('user:' . $api_key) ) ); // retrieve response from mailchimp $response = wp_remote_get('https://' . $dc . '.api.mailchimp.com/3.0/lists/', $args); // if we have it, create new array with lists id and name, else push error messages into array if (!is_wp_error($response)) { $lists_array = array(); $body = json_decode($response['body'], true); if ($response['response']['code'] == 200) { $lists_array['response'] = 200; $i = 0; foreach ($body['lists'] as $list) { $lists_array['lists'][$i]['id'] = $list['id']; $lists_array['lists'][$i]['name'] = $list['name']; $i++; } } else { $lists_array['response'] = $response['response']['code']; $lists_array['message'] = $body['title'] . ': ' . $body['detail']; } } else { $lists_array['response'] = '500'; $lists_array['message'] = $response->get_error_message(); } // json encode response $lists_json = json_encode($lists_array); // save it update_option('niteoCS_mailchimp_lists', $lists_json); // delete selected old mailchimp list because we do not want it delete_option('niteoCS_mailchimp_list_selected'); // echo ajax result echo $lists_json; wp_die(); } } /** * Returns Background image URL * * @since 2.8.4 * @access public * @return string */ public function cmp_get_background_img_for_seo() { $themeslug = $this->cmp_selectedTheme(); $default_img = ''; $background_type = get_option('niteoCS_banner', '2'); if (file_exists($this->cmp_theme_dir($this->cmp_selectedTheme()) . $this->cmp_selectedTheme() . '/img/' . $this->cmp_selectedTheme() . '_banner_large.jpg')) { $default_img = $this->cmp_themeURL($this->cmp_selectedTheme()) . $this->cmp_selectedTheme() . '/img/' . $this->cmp_selectedTheme() . '_banner_large.jpg'; } elseif (file_exists($this->cmp_theme_dir($this->cmp_selectedTheme()) . $this->cmp_selectedTheme() . '/img/' . $this->cmp_selectedTheme() . '_banner_large.png')) { $default_img = $this->cmp_themeURL($this->cmp_selectedTheme()) . $this->cmp_selectedTheme() . '/img/' . $this->cmp_selectedTheme() . '_banner_large.png'; } switch ($background_type) { // custom img case '0': $banner_id = get_option('niteoCS_banner_id'); if ($banner_id != '') { $banner_ids = explode(',', $banner_id); $image_url = wp_get_attachment_image_src($banner_ids[0], 'large'); if (isset($image_url[0])) { $image_url = $image_url[0]; } } else { // send default image $image_url = $default_img; } break; // unsplash case '1': $unplash_feed = get_option('niteoCS_unsplash_feed', '3'); switch ($unplash_feed) { // specific photo from id case '0': $params = array('feed' => '0', 'url' => get_option('niteoCS_unsplash_0', '')); $unsplash = $this->niteo_unsplash($params); break; // random from user case '1': $params = array('feed' => '1', 'custom_str' => get_option('niteoCS_unsplash_1', '')); $unsplash = $this->niteo_unsplash($params); break; // random from collection case '2': $params = array('feed' => '2', 'url' => get_option('niteoCS_unsplash_2', '')); $unsplash = $this->niteo_unsplash($params); break; // random photo case '3': $params = array('feed' => '3', 'url' => get_option('niteoCS_unsplash_3', ''), 'feat' => get_option('niteoCS_unsplash_feat', '0')); $unsplash = $this->niteo_unsplash($params); break; default: break; } // get raw url from response if (isset($unsplash['response']) && $unsplash['response'] == '200') { $body = json_decode($unsplash['body'], true); if (isset($body[0])) { foreach ($body as $item) { $unsplash_url = $item['urls']['raw']; } } else { $unsplash_url = $body['urls']['raw']; } $image_url = $unsplash_url . '?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&fit=crop&w=1200&h=630'; } break; // default image case '2': $image_url = $default_img; break; case '3': // Pattern $niteoCS_banner_pattern = get_option('niteoCS_banner_pattern', 'sakura'); if ($niteoCS_banner_pattern != 'custom') { $image_url = CMP_PLUGIN_URL . 'img/patterns/' . esc_attr($niteoCS_banner_pattern) . '.png'; } else { $image_url = get_option('niteoCS_banner_pattern_custom'); $image_url = wp_get_attachment_image_src($image_url, 'large'); if (isset($image_url[0])) { $image_url = $image_url[0]; } } break; case '5': $image_url = wp_get_attachment_image_src(get_option('niteoCS_video_thumb'), 'large'); if (!empty($image_url)) { $image_url = $image_url[0]; } break; case '6': case '4': default: $image_url = ''; break; } return $image_url; } /** * Purge cache for popular caching plugins * * @since 2.8.5 * @access public * @return string */ public function cmp_purge_cache() { // WP cache wp_cache_flush(); // W3 Total Cache if (function_exists('w3tc_flush_all')) { w3tc_flush_all(); } // wp super cache if (function_exists('wp_cache_clear_cache')) { wp_cache_clear_cache(); } // Clear Cachify Cache if (has_action('cachify_flush_cache')) { do_action('cachify_flush_cache'); } // endurance cache if (class_exists('Endurance_Page_Cache') && method_exists('Endurance_Page_Cache', 'purge_all')) { $epc = new Endurance_Page_Cache; $epc->purge_all(); } // SG Optimizer if (class_exists('SG_CachePress_Supercacher') && method_exists('SG_CachePress_Supercacher', 'purge_cache')) { SG_CachePress_Supercacher::purge_cache(true); } if (class_exists('SiteGround_Optimizer\Supercacher\Supercacher')) { SiteGround_Optimizer\Supercacher\Supercacher::purge_cache(); } // WP Fastest Cache if (isset($GLOBALS['wp_fastest_cache']) && method_exists($GLOBALS['wp_fastest_cache'], 'deleteCache')) { $GLOBALS['wp_fastest_cache']->deleteCache(true); } // Swift Performance if (is_callable(array('Swift_Performance_Cache', 'clear_all_cache'))) { Swift_Performance_Cache::clear_all_cache(); } // WP Rocket if (function_exists('rocket_clean_domain')) { rocket_clean_domain(); } if (is_callable(array('Hummingbird\WP_Hummingbird', 'flush_cache'))) { Hummingbird\WP_Hummingbird::flush_cache(true, false); } // wp-optimize if (class_exists('WP_Optimize')) { if (!class_exists('WP_Optimize_Cache_Commands')) include_once(WPO_PLUGIN_MAIN_PATH . 'cache/class-cache-commands.php'); $cache_commands = new WP_Optimize_Cache_Commands(); $cache_commands->purge_page_cache(); } // Clear Litespeed cache if (class_exists('LiteSpeed_Cache_API') && method_exists('LiteSpeed_Cache_API', 'purge_all')) { LiteSpeed_Cache_API::purge_all(); } if (function_exists('rocket_clean_domain')) { rocket_clean_domain(); } } /** * Checks if user defined role has permission to access and toggle CMP from Admin Bar Icon * * @since 2.8.5 * @access public * @return boolean */ public function cmp_user_can_admin_bar_activation() { // return if Top Bar Icon is disabled if (get_option('niteoCS_topbar_icon', '1') == '0') { return false; } require_once(ABSPATH . 'wp-admin/includes/screen.php'); // get defined roles for admin topbar access $roles_topbar = json_decode(get_option('niteoCS_roles_topbar', '[]'), true); // push WP administrator to roles array, since it is default array_push($roles_topbar, 'administrator'); // get current user $current_user = wp_get_current_user(); // if current user can access topbar, return true foreach ($current_user->roles as $role) { if (in_array($role, $roles_topbar)) { return true; } } return false; } /** * Returns full post content via AJAX * * @since 3.0 * @access public * @return array */ public function cmp_get_post_detail() { $id = isset($_POST['id']) ? esc_attr($_POST['id']) : ''; $nonce = isset($_POST['nonce']) ? esc_attr($_POST['nonce']) : ''; if (!wp_verify_nonce($nonce, 'cmp-coming-soon-ajax-secret')) { die('Sorry, but this request is invalid'); } $size = $this->isMobile ? 'large' : 'large'; $post = array( 'img' => '', 'date' => '', 'title' => 'Post is not published or is Password protected', 'body' => '', 'url' => '', ); if (get_post_status($id) === 'publish' && !post_password_required($id)) { $post = array( 'img' => get_the_post_thumbnail($id, $size), 'date' => get_the_date('F j, Y', $id), 'title' => get_the_title($id), 'body' => apply_filters('the_content', get_post_field('post_content', $id)), 'url' => get_the_permalink($id), ); } wp_send_json($post); } /** * Dismiss activation notice * * @since 3.4.3 * @access public * @return void */ function cmp_ajax_dismiss_activation_notice() { check_ajax_referer('cmp-coming-soon-maintenance-nonce', 'nonce'); // user has dismissed the welcome notice update_option('niteoCS_activation_notice', true); wp_die(); exit; } /** * Upload custom Fonts to CMP * * @since 3.5 * @access public * @return string */ public function cmp_ajax_upload_font() { // verify nonce check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } if (isset($_POST['payload'])) { $payload = json_decode(stripslashes($_POST['payload']), true); $action = $payload['action']; if ($action === 'upload_font') { $new_fonts = $payload['files']; // delete_option('niteoCS_custom_fonts'); if (get_option('niteoCS_custom_fonts')) { $old_fonts = json_decode(get_option('niteoCS_custom_fonts'), true); $i = 0; foreach ($old_fonts as $old_font) { foreach ($new_fonts as $new_font) { if ($old_font['id'] === $new_font['id']) { $old_fonts[$i]['urls'] = (is_array($old_font['urls'])) ? array_unique(array_merge($old_font['urls'], $new_font['urls'])) : $new_font['urls']; $old_fonts[$i]['ids'] = (is_array($old_font['ids'])) ? array_unique(array_merge($old_font['ids'], $new_font['ids'])) : $new_font['ids']; } else if (!$this->niteo_in_array_r($new_font['id'], $old_fonts)) { array_push($old_fonts, $new_font); } } $i++; } $new_fonts = $old_fonts; } update_option('niteoCS_custom_fonts', json_encode($new_fonts)); } } // echo confirmation echo 'success'; wp_die(); } /** * Export function of CMP Settings to JSON * * @since 3.5.3 * @access public * @return string */ public function cmp_export_settings() { $options = array(); // add default cmp identifier $options[0] = 'CMP_EXPORT'; global $wpdb; $saved_options = $wpdb->get_results("SELECT * FROM $wpdb->options WHERE option_name LIKE 'niteoCS_%'", OBJECT); $i = 1; foreach ($saved_options as $option) { $option_name = $option->option_name; $option_value = get_option($option_name); $img_settings = array('niteoCS_banner_id', 'niteoCS_logo_id', 'niteoCS_seo_img_id', 'niteoCS_favicon_id', 'niteoCS_subs_img_id', 'niteoCS_subs_img_popup_id'); if (in_array($option_name, $img_settings) && $option_value && $option_value != '') { $option_value = $this->cmp_get_img_urls($option_value); } if ($option_name === 'niteoCS_posts') { $option_value = '[]'; } $options[$i] = array($option_name => $option_value); $i++; } return json_encode($options); } /** * Helper function to retrieve full img URL, comma separated, by ID * * @since 3.5.3 * @access public * @return string */ public function cmp_get_img_urls($ids) { $id_array = explode(',', $ids); $i = 1; $urls = ''; foreach ($id_array as $id) { $sep = ($i < count($id_array)) ? ',' : ''; $image_url = wp_get_attachment_image_src($id, 'full'); if (isset($image_url[0])) { $image_url = $image_url[0]; } $urls .= $image_url . $sep; $i++; } return $urls; } /** * export settings to JSON via AJAX * * @since 3.5.3 * @access public * @return string */ public function cmp_ajax_export_settings() { // verify nonce check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } $settings = $this->cmp_export_settings(); $replace = array('https://', 'http://'); $home_url = str_replace($replace, '', get_home_url()); if (!empty($settings)) { $filename = $home_url . '-cmp-settings-' . date('Y-m-d') . '.json'; header('Content-Type: application/json'); header('Content-Disposition: attachment;filename=' . $filename); $fp = fopen('php://output', 'w'); fwrite($fp, $settings); fclose($fp); } die(); } /** * import settings function * * @since 3.5.3 * @access public * @return string */ public function cmp_ajax_import_settings() { check_ajax_referer('cmp-coming-soon-ajax-secret', 'security'); // verify user rights if (!current_user_can('publish_pages')) { die('Sorry, but this request is invalid'); } $settings = json_decode(stripslashes($_POST['json']), true); $result = array( 'result' => 'success', 'message' => __('All done!', 'cmp-coming-soon-maintenance') ); if (json_last_error() == JSON_ERROR_NONE) { if ($settings[0] === 'CMP_EXPORT') { // remove first value used for JSON CMP Settings check unset($settings[0]); // delete all current CMP Settings global $wpdb; $saved_options = $wpdb->get_results("SELECT * FROM $wpdb->options WHERE option_name LIKE 'niteoCS_%'", OBJECT); foreach ($saved_options as $option) { delete_option($option->option_name); } // import cmp settings from JSON structure foreach ($settings as $setting) { $img_settings = array('niteoCS_banner_id', 'niteoCS_logo_id', 'niteoCS_seo_img_id', 'niteoCS_favicon_id', 'niteoCS_subs_img_id', 'niteoCS_subs_img_popup_id'); $name = key($setting); $value = $setting[$name]; if (in_array($name, $img_settings)) { $urls = explode(',', $value); if (is_array($urls)) { foreach ($urls as $url) { $value = $this->cmp_insert_attachment_from_url($url); $value .= ',' . $value; } } } update_option($name, $value); } } else { $result = array( 'result' => 'error', 'message' => __('JSON file is valid but it does not contain CMP Settings.', 'cmp-coming-soon-maintenance') ); } } else { $result = array( 'result' => 'error', 'message' => __('Please insert valid JSON file and try again.', 'cmp-coming-soon-maintenance') ); } echo json_encode($result); wp_die(); } /** * Insert an attachment from an URL address. * by https://gist.github.com/m1r0/f22d5237ee93bcccb0d9 * * @param String $url * @param Int $parent_post_id * @return Int Attachment ID */ private function cmp_insert_attachment_from_url($url, $parent_post_id = null) { if (!class_exists('WP_Http')) { include_once(ABSPATH . WPINC . '/class-http.php'); } $http = new WP_Http(); $response = $http->request($url); if (is_wp_error($response) || $response['response']['code'] != 200) { return false; } $upload = wp_upload_bits(basename($url), null, $response['body']); if (!empty($upload['error'])) { return false; } $file_path = $upload['file']; $file_name = basename($file_path); $file_type = wp_check_filetype($file_name, null); $attachment_title = sanitize_file_name(pathinfo($file_name, PATHINFO_FILENAME)); $wp_upload_dir = wp_upload_dir(); $post_info = array( 'guid' => $wp_upload_dir['url'] . '/' . $file_name, 'post_mime_type' => $file_type['type'], 'post_title' => $attachment_title, 'post_content' => '', 'post_status' => 'inherit', ); // Create the attachment $attach_id = wp_insert_attachment($post_info, $file_path, $parent_post_id); // Include image.php require_once(ABSPATH . 'wp-admin/includes/image.php'); // Define attachment metadata $attach_data = wp_generate_attachment_metadata($attach_id, $file_path); // Assign metadata to attachment wp_update_attachment_metadata($attach_id, $attach_data); return $attach_id; } /** * Send email notification to specify user * * @param String $message */ private function cmp_send_notification($status) { // send notification email to admin, if enabled if (get_option('niteoCS_mode_change_notification', '0') == '1') { switch ($this->cmp_mode()) { case '1': $mode = __('Maintenance', 'cmp-coming-soon-maintenance'); break; case '2': $mode = __('Coming Soon', 'cmp-coming-soon-maintenance'); break; case '3': $mode = __('Redirect', 'cmp-coming-soon-maintenance'); break; default: break; } $current_user = wp_get_current_user(); $email = get_option('niteoCS_mode_change_email_address', get_option('admin_email')); $subject = $mode . ' mode on your website - ' . get_site_url() . ' - was just turned ' . $status . ' by ' . $current_user->user_login; $body = 'This is auto generated message from CMP - Coming Soon & Maintenance WordPress Plugin. You can disable these messages under CMP Advanced Settings > Email Notifications.'; $headers = array('Content-Type: text/plain; charset=UTF-8'); // send email wp_mail($email, $subject, $body, $headers); } return; } /** * Display Admin notices * * @since 3.7.3 */ public function cmp_display_admin_notice($type, $dismisable, $message) { echo '<div class="notice notice-' . $type . ' ' . $dismisable . '"><p class="message">' . $message . '</p></div>'; } /** * Disable REST API if required */ function restrict_rest_api($result) { if (true === $result || is_wp_error($result)) { return $result; } // No authentication has been performed yet. // Return an error if user is not logged in. if (!is_user_logged_in()) { return new WP_Error( 'rest_disabled', __('JSON API is disabled by CMP – Coming Soon & Maintenance Plugin.'), array('status' => 401) ); } } function jetpack_stats_compatibility() { if (function_exists('stats_footer')) { add_action('cmp_footer', 'stats_footer', 101); } } } endif; /* * @since 2.8.1 * @return object|CMP_Coming_Soon_and_Maintenance instance. */ function cmp_coming_soon_and_maintenance() { return CMP_Coming_Soon_and_Maintenance::instance(); } // Get the things running cmp_coming_soon_and_maintenance(); register_uninstall_hook(__FILE__, 'cmp_plugin_delete'); // And here goes the uninstallation function: function cmp_plugin_delete() { delete_option('niteoCS_archive'); }
Upload File
Create Folder