# cartflows/1.1.0.1/classes/class-cartflows-admin.php

CartFlows – Funnel Builder &amp; Checkout Plugin for WooCommerce, version 1.1.0.1. 399 lines.

- Page: https://pluginprobe.com/plugins/cartflows/1.1.0.1/code/classes/class-cartflows-admin.php
- Raw: https://pluginprobe.com/plugins/cartflows/1.1.0.1/raw/classes/class-cartflows-admin.php
- Modified: 2018-12-07T14:02:56+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/cartflows/1.1.0.1/code/classes/class-cartflows-admin.php#L10-L20`.

```php
<?php
/**
 * CartFlows Admin.
 *
 * @package CartFlows
 */

/**
 * Class Cartflows_Admin.
 */
class Cartflows_Admin {

	/**
	 * Calls on initialization
	 *
	 * @since 1.0.0
	 */
	public static function init() {

		self::initialise_plugin();
		self::init_hooks();
	}

	/**
	 * Init Hooks.
	 *
	 * @since 1.0.0
	 * @return void
	 */
	static public function init_hooks() {

		if ( ! is_admin() ) {
			return;
		}

		include_once CARTFLOWS_DIR . 'classes/class-cartflows-admin-fields.php';

		// Add CARTFLOWS menu option to admin.
		add_action( 'network_admin_menu', __CLASS__ . '::menu' );
		add_action( 'admin_menu', __CLASS__ . '::menu' );
		add_action( 'admin_menu', __CLASS__ . '::submenu', 999 );

		add_action( 'cartflows_render_admin_content', __CLASS__ . '::render_content' );

		// Enqueue admin scripts.
		if ( isset( $_REQUEST['page'] ) && CARTFLOWS_SETTINGS == $_REQUEST['page'] ) {

			add_action( 'admin_enqueue_scripts', __CLASS__ . '::styles_scripts' );

			self::save_settings();
		}

		/* Global Addmin Script */
		add_action( 'admin_enqueue_scripts', __CLASS__ . '::global_admin_scripts', 20 );

		add_action( 'admin_footer', __CLASS__ . '::global_admin_data', 9555 );
	}

	/**
	 * Initialises the Plugin Name.
	 *
	 * @since 1.0.0
	 * @return void
	 */
	static public function initialise_plugin() {

		$name       = 'Cartflows';
		$short_name = 'Cflows';

		define( 'CARTFLOWS_PLUGIN_NAME', $name );
		define( 'CARTFLOWS_PLUGIN_SHORT_NAME', $short_name );
	}

	/**
	 * Renders the admin settings menu.
	 *
	 * @since 1.0.0
	 * @return void
	 */
	static public function menu() {

		if ( ! current_user_can( 'manage_options' ) ) {
			return;
		}

		add_menu_page(
			'CartFlows',
			'CartFlows',
			'manage_options',
			CARTFLOWS_SLUG,
			__CLASS__ . '::render',
			'data:image/svg+xml;base64,' . base64_encode( file_get_contents( CARTFLOWS_DIR . 'assets/images/cartflows-icon.svg' ) ),
			39.7
		);

	}

	/**
	 * Add submenu to admin menu.
	 *
	 * @since 1.0.0
	 */
	static function submenu() {

		$parent_slug = CARTFLOWS_SLUG;
		$page_title  = __( 'Settings', 'cartflows' );
		$menu_title  = __( 'Settings', 'cartflows' );
		$capability  = 'manage_options';
		$menu_slug   = 'cartflows_settings';
		$callback    = __CLASS__ . '::render';

		add_submenu_page(
			$parent_slug,
			$page_title,
			$menu_title,
			$capability,
			$menu_slug,
			$callback
		);
	}

	/**
	 * Renders the admin settings.
	 *
	 * @since 1.0.0
	 * @return void
	 */
	static public function render() {
		$action = ( isset( $_GET['action'] ) ) ? sanitize_text_field( $_GET['action'] ) : '';
		$action = ( ! empty( $action ) && '' != $action ) ? $action : 'general';
		$action = str_replace( '_', '-', $action );

		// Enable header icon filter below.
		$header_wrapper_class = apply_filters( 'cartflows_header_wrapper_class', array( $action ) );

		include_once CARTFLOWS_DIR . 'includes/admin/cartflows-admin.php';
	}

	/**
	 * Renders the admin settings content.
	 *
	 * @since 1.0.0
	 * @return void
	 */
	static public function render_content() {

		$action = ( isset( $_GET['action'] ) ) ? sanitize_text_field( $_GET['action'] ) : '';
		$action = ( ! empty( $action ) && '' != $action ) ? $action : 'general';
		$action = str_replace( '_', '-', $action );
		$action = 'general';

		$header_wrapper_class = apply_filters( 'cartflows_header_wrapper_class', array( $action ) );

		include_once CARTFLOWS_DIR . 'includes/admin/cartflows-general.php';
	}

	/**
	 * Save Global Setting options.
	 *
	 * @since 1.0.0
	 */
	static public function save_common_settings() {

		if ( isset( $_POST['cartflows-common-settings-nonce'] ) && wp_verify_nonce( $_POST['cartflows-common-settings-nonce'], 'cartflows-common-settings' ) ) {

			$url            = $_SERVER['REQUEST_URI'];
			$input_settings = array();
			$new_settings   = array();

			if ( isset( $_POST['_cartflows_common'] ) ) {

				$input_settings = $_POST['_cartflows_common'];

				// Loop through the input and sanitize each of the values.
				foreach ( $input_settings as $key => $val ) {

					if ( is_array( $val ) ) {
						foreach ( $val as $k => $v ) {
							$new_settings[ $key ][ $k ] = ( isset( $val[ $k ] ) ) ? sanitize_text_field( $v ) : '';
						}
					} else {
						$new_settings[ $key ] = ( isset( $input_settings[ $key ] ) ) ? sanitize_text_field( $val ) : '';
					}
				}
			}

			Cartflows_Helper::update_admin_settings_option( '_cartflows_common', $new_settings, true );

			$query = array(
				'message' => 'saved',
			);

			$redirect_to = add_query_arg( $query, $url );

			wp_redirect( $redirect_to );
			exit;
		} // End if statement.
	}

	/**
	 * Check is cartflows admin.
	 *
	 * @since 1.0.0
	 * @return boolean
	 */
	static public function is_global_admin() {

		$current_screen = get_current_screen();

		if (
			is_object( $current_screen ) &&
			isset( $current_screen->post_type ) &&
			( CARTFLOWS_FLOW_POST_TYPE === $current_screen->post_type ||
				CARTFLOWS_STEP_POST_TYPE === $current_screen->post_type
			)
		) {
			return true;
		}
		return false;
	}

	/**
	 * Check is flow admin.
	 *
	 * @since 1.0.0
	 * @return boolean
	 */
	static public function is_flow_edit_admin() {

		$current_screen = get_current_screen();

		if (
			is_object( $current_screen ) &&
			isset( $current_screen->post_type ) &&
			( CARTFLOWS_FLOW_POST_TYPE === $current_screen->post_type ) &&
			isset( $current_screen->base ) &&
			( 'post' === $current_screen->base )
		) {
			return true;
		}
		return false;
	}

	/**
	 * Global Admin Scripts.
	 *
	 * @since 1.0.0
	 */
	static public function global_admin_scripts() {

		$localize = array(
			'ajaxurl'    => admin_url( 'admin-ajax.php' ),
			'ajax_nonce' => wp_create_nonce( 'cartflows-nonce' ),
		);

		wp_localize_script( 'jquery', 'cartflows_admin', apply_filters( 'cartflows_admin_js_localize', $localize ) );

		if ( self::is_global_admin() ) {

			// Styles.
			wp_enqueue_style( 'cartflows-global-admin', CARTFLOWS_URL . 'admin/assets/css/global-admin.css', array(), CARTFLOWS_VER );
			wp_style_add_data( 'cartflows-global-admin', 'rtl', 'replace' );

			wp_enqueue_script(
				'wcf-global-admin',
				CARTFLOWS_URL . 'admin/assets/js/global-admin.js',
				array( 'jquery' ),
				CARTFLOWS_VER,
				true
			);

			do_action( 'cartflows_global_admin_scripts' );
		}
	}

	/**
	 * Global Admin Data.
	 *
	 * @since 1.0.0
	 */
	static public function global_admin_data() {

		$current_screen = get_current_screen();

		if ( CARTFLOWS_FLOW_POST_TYPE !== $current_screen->post_type ) {
			return;
		}

		?>

		<div id="wcf-remote-flow-importer" class="wcf-templates-popup-overlay">
			<div class="wcf-templates-popup-content">
				<div class="spinner"></div>
				<div class="wcf-templates-wrap wcf-templates-wrap-flows">

					<div id="wcf-remote-flow-actions" class="wcf-template-header">
						<div class="wcf-template-logo-wrap">
							<span class="wcf-cartflows-logo-img">
								<span class="cartflows-icon"></span>
							</span>
							<span class="wcf-cartflows-title"><?php _e( 'Flows Library', 'cartflows' ); ?></span>
						</div>
						<div class="wcf-tab-wrapper">
							<div id="wcf-page-builders">
								<ul class="wcf-page-builder-links filter-links">
									<li><a href="#" class="current" data-id="elementor"><?php _e( 'Elementor', 'cartflows' ); ?></a></li>
									<li><a href="#"  data-id="divi"><?php _e( 'Divi', 'cartflows' ); ?></a></li>
									<li><a href="#"  data-id="bb"><?php _e( 'Beaver Builder', 'cartflows' ); ?></a></li>
								</ul>
							</div>
							<!-- <div id="wcf-remote-flow-filters">
								<div id="cartflows-flow-funnel-type"></div>
							</div> -->
						</div>
						<div class="wcf-popup-close-wrap">
							<span class="close-icon"><span class="wcf-cartflow-icons dashicons dashicons-no"></span></span>
						</div>
					</div>
					<!-- <div class="wcf-search-form">
						<label class="screen-reader-text" for="wp-filter-search-input"><?php _e( 'Search Sites', 'cartflows' ); ?> </label>
						<input placeholder="<?php _e( 'Search Flow...', 'cartflows' ); ?>" type="text" aria-describedby="live-search-desc" class="wcf-flow-search-input">
					</div> -->

					<div id="wcf-remote-content">
						<div id="wcf-remote-flow-list" class="wcf-remote-list wcf-template-list-wrap"></div>
						<div id="wcf-upcoming-page-builders" style="display: none;" class="wcf-remote-list wcf-template-list-wrap"></div>
					</div>
				</div>
			</div>
		</div>

		<?php
	}

	/**
	 * Enqueues the needed CSS/JS for the builder's admin settings page.
	 *
	 * @since 1.0.0
	 */
	static public function styles_scripts() {

		// Styles.
		wp_enqueue_style( 'cartflows-admin-settings', CARTFLOWS_URL . 'admin/assets/css/admin-menu-settings.css', array(), CARTFLOWS_VER );
		wp_style_add_data( 'cartflows-admin-settings', 'rtl', 'replace' );

		// Script.
		wp_enqueue_script( 'cartflows-admin-settings', CARTFLOWS_URL . 'admin/assets/js/admin-menu-settings.js', array( 'jquery', 'wp-util', 'updates' ), CARTFLOWS_VER );

		$localize = array(
			'ajax_nonce' => wp_create_nonce( 'cartflows-widget-nonce' ),
		);

		wp_localize_script( 'cartflows-admin-settings', 'cartflows', apply_filters( 'cartflows_js_localize', $localize ) );
	}

	/**
	 * Save All admin settings here
	 */
	static public function save_settings() {

		// Only admins can save settings.
		if ( ! current_user_can( 'manage_options' ) ) {
			return;
		}

		self::save_common_settings();

		// Let extensions hook into saving.
		do_action( 'cartflows_admin_settings_save' );
	}

	/**
	 * Get and return page URL
	 *
	 * @param string $menu_slug Menu name.
	 * @since 1.0.0
	 * @return  string page url
	 */
	static public function get_page_url( $menu_slug ) {

		$parent_page = self::$default_menu_position;

		if ( strpos( $parent_page, '?' ) !== false ) {
			$query_var = '&page=' . self::$plugin_slug;
		} else {
			$query_var = '?page=' . self::$plugin_slug;
		}

		$parent_page_url = admin_url( $parent_page . $query_var );

		$url = $parent_page_url . '&action=' . $menu_slug;

		return esc_url( $url );
	}

}

Cartflows_Admin::init();

```
