<?php



/**

 * WordPress management panel.

 *

 * @link       http://www.webfactoryltd.com

 * @since      0.1

 * @package    Signals_Maintenance_Mode

 */



if (!defined('WPINC')) {

	die;

}



function csmm_add_menu() {

	if(current_user_can('administrator')) {

		// Adding to the plugin panel link to the settings menu

		$signals_csmm_menu = add_options_page (

			__( 'Minimal Coming Soon & Maintenance Mode', 'signals' ),

			__( 'Maintenance Mode', 'signals' ),

			'manage_options',

			'maintenance_mode_options',

			'csmm_admin_settings'

		);



		// Loading the JS conditionally

    add_action( 'load-' . $signals_csmm_menu, 'csmm_load_scripts' );

    add_action( 'admin_action_csmm_install_mailoptin', 'csmm_install_mailoptin' );

	}



}

add_action( 'admin_menu', 'csmm_add_menu' );





function csmm_is_plugin_installed( $slug ) {

    if ( ! function_exists( 'get_plugins' ) ) {

        require_once ABSPATH . 'wp-admin/includes/plugin.php';

    }

    $all_plugins = get_plugins();



    if ( !empty( $all_plugins[$slug] ) ) {

        return true;

    } else {

        return false;

    }

}





  function csmm_featured_plugins_tab($args) {

    add_filter('plugins_api_result', 'csmm_plugins_api_result', 10, 3);



    return $args;

  } // featured_plugins_tab



  function csmm_add_plugin_favs($plugin_slug, $res) {

    // check if plugin is already on the list

    if (!empty($res->plugins) && is_array($res->plugins)) {

      foreach ($res->plugins as $plugin) {

        if (is_object($plugin) && !empty($plugin->slug) && $plugin->slug == $plugin_slug) {

          return $res;

        }

      } // foreach

    }



    $plugin_info = get_transient('wf-plugin-info-' . $plugin_slug);



    if (!$plugin_info) {

      $plugin_info = plugins_api('plugin_information', array(

        'slug'   => $plugin_slug,

        'is_ssl' => is_ssl(),

        'fields' => array(

          'banners'           => true,

          'reviews'           => true,

          'downloaded'        => true,

          'active_installs'   => true,

          'icons'             => true,

          'short_description' => true,

        )

      ));

      if (!is_wp_error($plugin_info) && is_object($plugin_info)) {

        set_transient('wf-plugin-info-' . $plugin_slug, $plugin_info, DAY_IN_SECONDS * 7);

      }

    }



    if (!empty($res->plugins) && is_array($res->plugins) && $plugin_info && is_object($plugin_info)) {

      array_unshift($res->plugins, $plugin_info);

    }



    return $res;

  } // csmm_add_plugins_favs





  // add our plugins to recommended list

  function csmm_plugins_api_result($res, $action, $args) {

    remove_filter('plugins_api_result', 'csmm_plugins_api_result', 10, 3);



    $res = csmm_add_plugin_favs('wp-force-ssl', $res);

    $res = csmm_add_plugin_favs('mailoptin', $res);

    $res = csmm_add_plugin_favs('eps-301-redirects', $res);



    return $res;

  } // plugins_api_result





// disabled till further notice

function csmm_chat_available() {

  if (0 && date('Y-m-d') >= '2018-10-01' && date('Y-m-d') <= '2018-10-14') {

    return true;

  } else {

    return false;

  }

} // csmm_chat_available



// enqueue JS and CSS files

function csmm_admin_scripts() {



	wp_register_style( 'csmm-admin-base', CSMM_URL . '/framework/admin/css/admin.css', false, csmm_get_plugin_version() );



	wp_register_script('csmm-webfonts', '//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js', false );

	wp_register_script('csmm-admin-editor', CSMM_URL . '/framework/admin/js/editor/ace.js', false, csmm_get_plugin_version(), true );

	wp_register_script('csmm-admin-color', CSMM_URL . '/framework/admin/js/colorpicker/jscolor.js', false, csmm_get_plugin_version(), true );

    wp_register_script('csmm-admin-plugins', CSMM_URL . '/framework/admin/js/plugins.js', 'jquery', csmm_get_plugin_version(), true);

	wp_register_script('csmm-admin-base', CSMM_URL . '/framework/admin/js/admin.js', 'jquery', csmm_get_plugin_version(), true);



  $mm_js_vars = array(

    'mm_url' => 'https://assets.comingsoonwp.com/free-backgrounds/',

    'mm_base_url' => CSMM_URL,

    'mm_notice_nonce' => wp_create_nonce('csmm_notice_nonce'),

    'mm_mo_title' => '<img alt="' . __('MailOptin', 'signals') . '" title="' . __('MailOptin', 'signals') . '" src="' . CSMM_URL . '/framework/admin/img/mailoptin-logo-white.png' . '">',

    'mm_mo_install_url' => add_query_arg( array('action' => 'csmm_install_mailoptin'), admin_url('admin.php') ),

    'mm_images' => array('ad_themes.png', 'joshua-coleman-1476380-unsplash.jpg', 'joshua-coleman-623077-unsplash.jpg', 'samuel-zeller-379406-unsplash.jpg', 'ad_more-images.png', 'william-daigneault-733670-unsplash.jpg', 'yuriy-bogdanov-428617-unsplash.jpg', 'john-cobb-13961-unsplash.jpg', 'aaron-burden-189321-unsplash.jpg', 'alberto-restifo-4510-unsplash.jpg', 'amy-humphries-227515-unsplash.jpg', 'anders-jilden-89745-unsplash.jpg', 'art-by-lonfeldt-1064207-unsplash.jpg', 'brenda-godinez-229718-unsplash.jpg', 'ad_more-images.png', 'brooke-lark-229136-unsplash.jpg', 'carmine-de-fazio-31543-unsplash.jpg', 'denys-nevozhai-100695-unsplash.jpg', 'dustin-lee-19667-unsplash.jpg', 'elena-prokofyeva-17909-unsplash.jpg', 'fezbot2000-278419-unsplash.jpg', 'glenn-carstens-peters-190592-unsplash.jpg', 'greg-rakozy-38802-unsplash.jpg', 'henry-be-99471-unsplash.jpg', 'hoach-le-dinh-91879-unsplash.jpg', 'ian-dooley-280928-unsplash.jpg', 'ian-schneider-108618-unsplash.jpg', 'jakub-sejkora-42069-unsplash.jpg', 'jesus-kiteque-224069-unsplash.jpg', 'joanna-kosinska-44214-unsplash.jpg', 'jonathan-bean-37632-unsplash.jpg', 'ad_themes.png', 'kimon-maritz-193428-unsplash.jpg', 'matthew-henry-49707-unsplash.jpg', 'ng-32703-unsplash.jpg', 'nitish-meena-37745-unsplash.jpg', 'osman-rana-1064081-unsplash.jpg', 'patrick-tomasso-208114-unsplash.jpg', 'patrick-tomasso-71909-unsplash.jpg', 'pawel-czerwinski-1060762-unsplash.jpg', 'rachael-gorjestani-282049-unsplash.jpg', 'rawpixel-191102-unsplash.jpg', 'sarah-dorweiler-211779-unsplash.jpg', 'stefan-stefancik-105374-unsplash.jpg', 'steven-wei-124690-unsplash.jpg', 'sunrise-1756274.jpg', 'teddy-kelley-106391-unsplash.jpg', 'thought-catalog-214785-unsplash.jpg', 'ad_custom-image.png', 'brooke-lark-356767-unsplash.jpg', 'ian-dooley-280928-unsplash.jpg', 'jeremy-bishop-334996-unsplash.jpg', 'martin-reisch-185835-unsplash.jpg', 'simon-matzinger-320332-unsplash.jpg', 'trevor-cole-393228-unsplash.jpg', 'verne-ho-237626-unsplash.jpg', 'ad_more-images.png','annie-spratt-1369965-unsplash.jpg', 'jonathan-borba-1339221-unsplash.jpg', 'lana-guillemet-1373193-unsplash.jpg', 'nazar-sharafutdinov-1373782-unsplash.jpg', 'pawel-czerwinski-1373010-unsplash.jpg', 'fancycrave-284224-unsplash.jpg', 'joshua-coleman-1394520-unsplash.jpg', 'robert-bye-103196-unsplash.jpg', 'tim-patch-1020411-unsplash.jpg', 'william-daigneault-691488-unsplash.jpg'),

  );

  wp_localize_script( 'csmm-admin-base', 'mm_js_vars', $mm_js_vars );



	wp_enqueue_style( 'csmm-admin-base' );



	wp_enqueue_script( 'csmm-webfonts' );

	wp_enqueue_script( 'csmm-admin-editor' );

	wp_enqueue_script( 'csmm-admin-color' );

  wp_enqueue_script( 'csmm-admin-plugins' );

	wp_enqueue_script( 'csmm-admin-base' );



  wp_enqueue_style('wp-jquery-ui-dialog');

  wp_enqueue_script('jquery-ui-dialog');



	// For the upload option using media uploader

	wp_enqueue_media();

}





// Scripts & styles for the plugin

function csmm_load_scripts() {

	add_action( 'admin_enqueue_scripts', 'csmm_admin_scripts' );

}





// add settings link to plugins page

function csmm_plugin_action_links($links) {

  $settings_link = '<a href="' . admin_url('options-general.php?page=maintenance_mode_options') . '" title="Minimal Coming Soon &amp; Maintenance Mode Settings">Settings</a>';



  array_unshift($links, $settings_link);



  return $links;

} // csmm_plugin_action_links





// add links to plugin's description in plugins table

function csmm_plugin_meta_links($links, $file) {

  $support_link = '<a target="_blank" href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode" title="Get help">Support</a>';

  $rate_link = '<a target="_blank" href="https://wordpress.org/support/plugin/minimal-coming-soon-maintenance-mode/reviews/?filter=5#new-post" title="Let others know how you like the plugin">Rate the plugin ★★★★★</a>';



  if ($file == CSMM_BASENAME) {

    $links[] = $support_link;

    $links[] = $rate_link;

  }



  return $links;

} // csmm_plugin_meta_links





// permanently dismiss a pointer

function csmm_dismiss_pointer_ajax() {

  check_ajax_referer('csmm_dismiss_pointer');



  $disabled_pointers = get_option(CSMM_POINTERS);

  $pointer = trim(sanitize_key($_POST['pointer']));



  $disabled_pointers[$pointer] = true;

  update_option(CSMM_POINTERS, $disabled_pointers);



  wp_send_json_success();

} // dismiss_pointer_ajax





// reset all pointers to default state - visible

function csmm_get_pointers() {

  $pointers = array();



  $pointers['welcome'] = array('target' => '#menu-settings', 'edge' => 'left', 'align' => 'right', 'content' => 'Thank you for installing the <b style="font-weight: 800;">Minimal Coming Soon &amp; Maintenance Mode</b> plugin! Please open <a href="' . admin_url('options-general.php?page=maintenance_mode_options'). '">Settings - Maintenance Mode</a> to create a beautiful coming soon or maintenance mode page.');

  $pointers['getting_started'] = array('target' => '#main-status', 'edge' => 'bottom', 'align' => 'left', 'content' => 'Make sure you <b>enable Maintenance Mode</b> so it\'s visible to your visitors. If you just want to preview it, use the preview button on the bottom of the page.');



  return $pointers;

} // csmm_get_pointers





function csmm_enqueue_pointers($hook) {

  $pointers = array();

  $all_pointers = csmm_get_pointers();

  $disabled_pointers = get_option(CSMM_POINTERS);



  // auto remove welcome pointer when options are opened

  // disabled

  if (false && empty($disabled_pointers['welcome']) && 'settings_page_maintenance_mode_options' == $hook) {

    $disabled_pointers['welcome'] = true;

    update_option(CSMM_POINTERS, $disabled_pointers);

  }



  // temp remove

  if ('settings_page_maintenance_mode_options' == $hook) {

    $disabled_pointers['welcome'] = true;

  }



  foreach ($all_pointers as $tmp_key => $tmp_val) {

    if (empty($disabled_pointers[$tmp_key])) {

      $pointers[$tmp_key] = $tmp_val;

    }

  } // foreach



  if (empty($pointers)) {

    return;

  }



  $pointers['_nonce_dismiss_pointer'] = wp_create_nonce('csmm_dismiss_pointer');

  wp_enqueue_script('wp-pointer');

  wp_enqueue_script('csmm-pointers', CSMM_URL . '/framework/admin/js/pointers.js', array('jquery'), csmm_get_plugin_version(), true);

  wp_enqueue_style('wp-pointer');

  wp_localize_script('wp-pointer', 'csmm_pointers', $pointers);

} // csmm_enqueue_pointers





function csmm_plugin_admin_init() {

  if (!is_admin()) {

    return;

  }



  $meta = get_option('signals_csmm_meta', array());

  if (!isset($meta['first_version']) || !isset($meta['first_install'])) {

    $meta['first_version'] = csmm_get_plugin_version();

    $meta['first_install_gmt'] = time();

    $meta['first_install'] = current_time('timestamp');

    update_option('signals_csmm_meta', $meta);

  }



  add_filter('plugin_action_links_' . CSMM_BASENAME, 'csmm_plugin_action_links');

  add_filter('plugin_row_meta', 'csmm_plugin_meta_links', 10, 2);



  add_action('admin_enqueue_scripts', 'csmm_enqueue_pointers', 100, 1);



  add_action('admin_action_csmm_activate_theme', 'csmm_activate_theme');



  add_filter('install_plugins_table_api_args_featured', 'csmm_featured_plugins_tab');

} // csmm_plugin_admin_init



add_action( 'init', 'csmm_plugin_admin_init' );



// Including file for the management panel

require_once CSMM_PATH . 'framework/admin/settings.php';



function csmm_create_select_options($options, $selected = null, $output = true) {

    $out = "\n";



    if(!is_array($selected)) {

      $selected = array($selected);

    }



    foreach ($options as $tmp) {

      $data = '';

      if (isset($tmp['disabled'])) {

        $data .= ' disabled="disabled" ';

      }

      if (in_array($tmp['val'], $selected)) {

        $out .= "<option selected=\"selected\" value=\"{$tmp['val']}\"{$data}>{$tmp['label']}&nbsp;</option>\n";

      } else {

        $out .= "<option value=\"{$tmp['val']}\"{$data}>{$tmp['label']}&nbsp;</option>\n";

      }

    } // foreach



    if ($output) {

      echo $out;

    } else {

      return $out;

    }

  } // csmm_create_select_options





function csmm_activate_theme() {

    if (!current_user_can('administrator')) {

      wp_die('You don\'t have privileges to run this action.');

    }



    if (false == wp_verify_nonce(@$_GET['_wpnonce'], 'csmm_activate_theme')) {

      wp_die('Please click back, reload the page and try to activate the theme again.');

    }



    $themes = array();

    $theme = basename(trim(@$_GET['theme']));

    $settings = csmm_get_options();



    $themes['default'] = array(

      'header_text'       => 'Our site is coming soon',

      'secondary_text'     => 'We are doing some maintenance on our site. It won\'t take long, we promise. Come back and visit us again in a few days. Thank you for your patience!',

      'antispam_text'     => 'And yes, we hate spam too!',

      'arrange'         => 'logo,header,secondary,form,html',

      'logo'          => CSMM_URL . '/framework/public/img/mm-logo.png',

      'favicon'        => CSMM_URL . '/framework/public/img/mm-favicon.png',

      'bg_cover'         => CSMM_URL . '/framework/public/img/mountain-bg.jpg',

      'content_overlay'     => 1,

      'content_width'      => '600',

      'bg_color'         => 'FFFFFF',

      'content_position'    => 'center',

      'content_alignment'    => 'left',

      'header_font'       => 'Karla',

      'secondary_font'     => 'Karla',

      'header_font_size'     => '28',

      'secondary_font_size'   => '14',

      'header_font_color'   => 'FFFFFF',

      'secondary_font_color'   => 'FFFFFF',

      'antispam_font_size'   => '13',

      'antispam_font_color'   => 'BBBBBB',

      'input_text'       => 'Enter your best email address',

      'button_text'       => 'Subscribe',

      'ignore_form_styles'   => 1,

      'input_font_size'    => '13',

      'button_font_size'    => '12',

      'input_font_color'    => 'FFFFFF',

      'button_font_color'    => 'FFFFFF',

      'input_bg'        => '',

      'button_bg'        => '0F0F0F',

      'input_bg_hover'    => '',

      'button_bg_hover'    => '0A0A0A',

      'input_border'      => 'EEEEEE',

      'button_border'      => '0F0F0F',

      'input_border_hover'  => 'BBBBBB',

      'button_border_hover'  => '0A0A0A',

      'success_background'   => '90C695',

      'success_color'     => 'FFFFFF',

      'error_background'     => 'E08283',

      'error_color'       => 'FFFFFF',

      'disable_settings'     => '2',

      'custom_html'      => '',

      'custom_css'      => ''

    );



    $themes['minimal'] = array(

      'header_text'       => 'Maintenance Mode',

      'secondary_text'     => 'We are doing some maintenance on our site. It won\'t take long, we promise. Come back and visit us again in a few days. Thank you for your patience!',

      'antispam_text'     => 'And yes, we hate spam too!',

      'arrange'         => 'logo,header,secondary,form,html',

      'logo'          => CSMM_URL . '/framework/public/img/mm-logo.png',

      'favicon'        => CSMM_URL . '/framework/public/img/mm-favicon.png',

      'bg_cover'         => '',

      'content_overlay'     => 0,

      'content_width'      => '600',

      'bg_color'         => 'FFFFFF',

      'content_position'    => 'center',

      'content_alignment'    => 'left',

      'header_font'       => 'Karla',

      'secondary_font'     => 'Karla',

      'header_font_size'     => '28',

      'secondary_font_size'   => '14',

      'header_font_color'   => '111111',

      'secondary_font_color'   => '111111',

      'antispam_font_size'   => '13',

      'antispam_font_color'   => 'BBBBBB',

      'input_text'       => 'Enter your best email address',

      'button_text'       => 'Subscribe',

      'ignore_form_styles'   => 1,

      'input_font_size'    => '13',

      'button_font_size'    => '12',

      'input_font_color'    => '111111',

      'button_font_color'    => 'FFFFFF',

      'input_bg'        => '',

      'button_bg'        => '0F0F0F',

      'input_bg_hover'    => '',

      'button_bg_hover'    => '0A0A0A',

      'input_border'      => 'EEEEEE',

      'button_border'      => '0F0F0F',

      'input_border_hover'  => 'BBBBBB',

      'button_border_hover'  => '0A0A0A',

      'success_background'   => '90C695',

      'success_color'     => '111111',

      'error_background'     => 'E08283',

      'error_color'       => '111111',

      'disable_settings'     => '2',

      'custom_html'      => '',

      'custom_css'      => '.logo { filter: grayscale(100%); } .logo-container { text-align: left; }'

    );





    if (empty($themes[$theme])) {

      set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>Error loading theme! Theme data not found. Please contact support.</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);

    } else {

      $settings = array_merge($settings, $themes[$theme]);

      update_option('signals_csmm_options', $settings);



      set_transient('csmm_error_msg', '<div class="signals-alert signals-alert-info"><strong>' . ucfirst($theme) . ' theme has been activated!</strong><button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 1);

    }



    if (!empty($_GET['redirect'])) {

      wp_safe_redirect(esc_url($_GET['redirect']));

    } else {

      wp_safe_redirect(admin_url());

    }



    exit;

  } // activate_theme





function csmm_export_settings() {

    $filename = str_replace(array('http://', 'https://'), '', home_url());

    $filename = str_replace(array('/', '\\', '.'), '-', $filename);

    $filename .= '-' . date('Y-m-d') . '-csmm.txt';



    $options = csmm_get_options();

    unset($options['none']);

    $options = apply_filters('csmm_options_pre_export', $options);



    $out = array('type' => 'CSMM', 'version' => csmm_get_plugin_version(), 'data' => $options);

    $out = json_encode($out);



    header('Content-Type: text/plain');

    header('Content-Disposition: attachment; filename=' . $filename);

    header('Expires: 0');

    header('Cache-Control: must-revalidate');

    header('Pragma: public');

    header('Content-Length: ' . strlen($out));



    @ob_end_clean();

    flush();



    echo $out;

    exit;

  } // export_settings

