# import-users/1.0/admin/class-uci-admin.php

Import Users &amp; Customers with Meta | WP Ultimate CSV Importer Add-on, version 1.0. 350 lines.

- Page: https://pluginprobe.com/plugins/import-users/1.0/code/admin/class-uci-admin.php
- Raw: https://pluginprobe.com/plugins/import-users/1.0/raw/admin/class-uci-admin.php
- Modified: 2017-08-14T15:18:10+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/import-users/1.0/code/admin/class-uci-admin.php#L10-L20`.

```php
<?php
/*******************************************************************************
 * Import Users is a Tool for importing CSV for the Wordpress
 * plugin developed by Smackcoders. Copyright (C) 2017 Smackcoders.
 *
 * Import Users is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Affero General Public License version 3
 * as published by the Free Software Foundation with the addition of the
 * following permission added to Section 15 as permitted in Section 7(a): FOR
 * ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY Import Users, 
   Import Users DISCLAIMS THE WARRANTY OF NON
 * INFRINGEMENT OF THIRD PARTY RIGHTS.
 *
 * Import Users is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
 * License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program; if not, see http://www.gnu.org/licenses or write
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301 USA.
 *
 * You can contact Smackcoders at email address info@smackcoders.com.
 *
 * The interactive user interfaces in original and modified versions
 * of this program must display Appropriate Legal Notices, as required under
 * Section 5 of the GNU Affero General Public License version 3.
 *
 * In accordance with Section 7(b) of the GNU Affero General Public License
 * version 3, these Appropriate Legal Notices must retain the display of the
 * Import Users copyright notice. If the display of the logo is
 * not reasonably feasible for technical reasons, the Appropriate Legal
 * Notices must display the words
 * "Copyright Smackcoders. 2017. All rights reserved".
 ********************************************************************************/

if ( ! defined( 'ABSPATH' ) )
	exit; // Exit if accessed directly

include_once ( plugin_dir_path(__FILE__) . '../includes/class-uci-helper.php' );

class User_SmackUCIAdmin extends User_SmackUCIHelper {

	public function __construct() {
		self::initializing_scheduler();
	}

	public static function show_admin_menus() {
		$is_author_can_import = get_option('USER_SM_UCI_pro_settings', null);
		$is_author_can_import = isset($is_author_can_import['author_editor_access']) ? $is_author_can_import['author_editor_access'] : '';
		if ( apply_filters( 'USER_SM_UCI_enable_setup_wizard', true ) && is_user_logged_in() &&  current_user_can( 'administrator' ) ) {
			add_action( 'admin_menu', array( __CLASS__, 'admin_menus' ) );
		}
		if ( is_user_logged_in() && ( current_user_can( 'author') || current_user_can('editor') ) && $is_author_can_import == 'on' ) {
			add_action( 'admin_menu', array( __CLASS__, 'admin_menus_for_other_roles' ) );
		}
	}

	/**
	 * Add admin menus/screens.
	 */
	public static function admin_menus() {
		global $submenu;
		add_menu_page(USER_SM_UCI_SETTINGS, USER_SM_UCI_NAME, 'manage_options', USER_SM_UCI_SLUG, array(__CLASS__, 'USER_SM_UCI_screens'),plugins_url("assets/images/wp-ultimate-csv-importer.png",dirname(__FILE__)));
		add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, esc_html__('Dashboard', 'import-users') , 'manage_options', 'user-uci-dashboard', array(__CLASS__, 'USER_SM_UCI_screens'));
		add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, esc_html__('Import','import-users'), 'manage_options', 'user-uci-import', array(__CLASS__, 'USER_SM_UCI_screens'));
		//add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, esc_html__('Managers','wp-ultimate-csv-importer'), 'manage_options', 'sm-uci-managers', array(__CLASS__, 'USER_SM_UCI_screens'));
		//add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, esc_html__('Export','wp-ultimate-csv-importer'), 'manage_options', 'sm-uci-export', array(__CLASS__, 'USER_SM_UCI_screens'));
		add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, esc_html__('Settings','import-users'), 'manage_options', 'user-uci-settings', array(__CLASS__, 'USER_SM_UCI_screens'));
		add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, esc_html__('Support','impotr users'), 'manage_options', 'user-uci-support', array(__CLASS__, 'USER_SM_UCI_screens'));
		unset($submenu[USER_SM_UCI_SLUG][0]);
	}

	public static function admin_menus_for_other_roles() {
		global $submenu;
		add_menu_page(USER_SM_UCI_SETTINGS, USER_SM_UCI_NAME, '2', USER_SM_UCI_SLUG, array(__CLASS__, 'USER_SM_UCI_screens'),plugins_url("assets/images/wp-ultimate-csv-importer.png",dirname(__FILE__)));
		add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, 'Dashboard', '2', 'user-uci-dashboard', array(__CLASS__, 'USER_SM_UCI_screens'));
		add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, 'Import', '2', 'user-uci-import', array(__CLASS__, 'USER_SM_UCI_screens'));
		//add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, 'Managers', '2', 'sm-uci-managers', array(__CLASS__, 'USER_SM_UCI_screens'));
		//add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, 'Export', '2', 'sm-uci-export', array(__CLASS__, 'USER_SM_UCI_screens'));
		add_submenu_page(USER_SM_UCI_SLUG, USER_SM_UCI_NAME, 'Support', '2', 'user-uci-support', array(__CLASS__, 'USER_SM_UCI_screens'));
		unset($submenu[USER_SM_UCI_SLUG][0]);
	}

	public static function USER_SM_UCI_screens() {
		global $uci_user_admin;
		$uci_user_admin->show_top_navigation_menus();
		switch (sanitize_title($_REQUEST['page'])) {
			case 'user-uci-dashboard':
				$uci_user_admin->show_uci_dashboard();
				break;
			case 'user-uci-import':
				$uci_user_admin->show_import_screen();
				break;
			case 'user-uci-settings':
				$uci_user_admin->show_settings_screen();
				break;
			case 'user-uci-support':
				$uci_user_admin->show_support_screen();
				break;
			default:
				break;
		}
		return false;
	}

	public function show_top_navigation_menus() {
		echo '<div class="menu_bar import-users">
                <h2 class="nav-tab-wrapper">
                        <a href="'. esc_url (admin_url() .'admin.php?page=user-uci-dashboard') .'" class="nav-tab nav-tab-active" id = "menu1">'.esc_html__('Dashboard','wp-ultimate-csv-importer').'</a>
                        <a href="'. esc_url (admin_url() .'admin.php?page=user-uci-import') . '" class="nav-tab" id = "menu2">'.esc_html__('Import','wp-ultimate-csv-importer').'</a>
                        <a href="'. esc_url (admin_url() .'admin.php?page=user-uci-settings') . '" class="nav-tab" id = "menu5">'.esc_html__('Settings','wp-ultimate-csv-importer').'</a>
                        <a href="'. esc_url (admin_url() .'admin.php?page=user-uci-support') . '" class="nav-tab" id = "menu6">'.esc_html__('Support','wp-ultimate-csv-importer').'</a>
                </h2>
		        </div>
		<div id="notification_wp_csv"></div>';
		$myDir = USER_SM_UCI_DEFAULT_UPLOADS_DIR;
               if(is_dir($myDir)) {
                echo "<input type='hidden' id='is_found' name='is_found' value='dir found'/>";
               } else {
                echo "<input type='hidden' id='is_found' name='is_found' value='dir not found'/>";
               } if(is_writable($myDir)) {
                echo "<input type='hidden' id='is_perm_found' name='is_perm_found' value='perm found'/>";
               } else {
                echo "<input type='hidden' id='is_perm_found' name='is_perm_found' value='perm not found'/>";
               }

	}

	public function show_import_screen() {
		global $uci_user_admin;
		$parserObj = new User_SmackCSVParser();
		$uci_user_admin->show_notices($parserObj);
		$step = isset($_REQUEST['step']) ? sanitize_title($_REQUEST['step']) : '';
		switch ($step) {
			case 'import_file':     // Step one
				include ( 'views/form-file-import-method.php' );
				break;
			case 'suggested_template':
				# NOTE: Removed the suggested template view
				break;
			case 'mapping_config':  // Step two
				if(isset($_REQUEST['eventKey']) ? sanitize_key($_REQUEST['eventKey']):'' ) :
					if(isset($_POST) && !empty($_POST)) :
						$_POST  = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
						$parserObj->screenData = array('import_file' => $_POST);
						update_option($_REQUEST['eventKey'], $parserObj->screenData);
					else:
						$parserObj->screenData = get_option($_REQUEST['eventKey']);
					endif;
				endif;
				if(empty($parserObj->screenData)):
					$parserObj->wp_session = "Your mapping configuration may lost. Please configure your mapping again!";
				endif;
				if(isset($_REQUEST['mapping_type'])) {
					$mapping_type = $_REQUEST['mapping_type'];
				} else {
					$mapping_type = '';
				}
				switch($mapping_type) {
					case 'advanced':
						include ( 'views/form-advanced-mapping-configuration.php' );
						break;
					case 'normal':
					default:
						include ( 'views/form-mapping-configuration.php' );
						break;
				}
				break;
			case 'media_config':
				include ( 'views/form-media-handling.php' );
				break;
			case 'import_config':
				include ( 'views/form-import-configuration.php' );
				break;
			case 'confirm':
				include ( 'views/form-ignite-import.php' );
				break;
			default:
				include ( 'views/form-file-import-method.php' );
				break;
		}
		return true;
	}

	public function show_manager_screen() {
		// include ('views/form-manager-view.php' );
		// return true;
	}
	
	public function show_uci_dashboard() {
               include ('views/form-dashboard-view.php');
        }

	public function show_export_screen() {
		//include ( 'views/form-export-data.php' );
	}

	public function show_settings_screen() {
		include ('views/form-settings-view.php' );
		return true;
	}

	public function show_support_screen() {
               include ('views/form-support-view.php' );
               return true;
        }


	public function show_notices($parseObj) {

	}

	public static function PieChart(){
		echo '<canvas id="uci_pro_pieStats"></canvas>';
	}

	public static function LineChart(){
		echo '<canvas id="uci_pro_lineStats" style="height:250px;"></canvas>';
	}

	public function get_mapping_widgets_order ($import_type) {
		$widgets = array();
		global $uci_user_admin;
		$customposts = $uci_user_admin->get_import_custom_post_types();
		if (in_array($import_type, get_taxonomies())) {
			$import_type = 'Taxonomies';
		}
		if (in_array($import_type, $customposts)) {
			$import_type = 'CustomPosts';
		}
		switch ($import_type) {
			
			case 'Users':
				$widgets = array('Core Fields','WordPress Custom Fields', 'Custom Fields by WP-Members', 'Billing And Shipping Information',
					'ACF Pro Fields', 'ACF Fields', 'ACF Repeater Fields', 'Types Custom Fields', 'PODS Custom Fields', 'CCTM Custom Fields');
				break;
			
		}
		return $widgets;
	}

	public function available_widgets ($import_type, $importAs) {
		global $uci_user_admin;
		$widgets = array();
		$widgets_order = $uci_user_admin->get_mapping_widgets_order($import_type);
		$supported_widgets = $uci_user_admin->get_available_widgets($import_type, $importAs);
		if(!empty($widgets_order) && !empty($supported_widgets)) :
			foreach($widgets_order as $item) {
				# TODO: Need to check whether this item (widget) to be related with the $import_type
				if(array_key_exists($item, $supported_widgets)) :
					$widgets[$item] = $supported_widgets[$item];
				endif;
			}
		endif;
		return $widgets;
	}

	public function get_available_widgets ($import_type, $importAs) {
		$possible_widgets = array();
		global $uci_user_admin;
		$customposts = $uci_user_admin->get_import_custom_post_types();
		if (in_array($import_type, $customposts)) {
			$import_type = 'CustomPosts';
		}
		if (in_array($import_type, get_taxonomies())) {
			$import_type = 'Taxonomies';
		}
		$possible_widgets['Core Fields'] = 'CORE';
		if($import_type == 'Posts' || $import_type == 'Pages' || $import_type == 'CustomPosts' ||
		   $import_type == 'WooCommerce' || $import_type == 'MarketPress' || $import_type == 'WPeCommerce' || $import_type == 'eShop' || $import_type == 'Users') {
			$possible_widgets['WordPress Custom Fields'] = 'CORECUSTFIELDS';
		}
		$active_plugins = $this->get_active_plugins();
		if(!empty($active_plugins)) {
			foreach($active_plugins as $plugin) {
				switch ($plugin) {
					
					case 'wp-members/wp-members.php':
						if($import_type == 'Users') {
							$possible_widgets['Custom Fields by WP-Members'] = 'WPMEMBERS';
						}
						break;
					
				}
			}
			if($import_type == 'Users') {
				if( in_array('marketpress/marketpress.php', $this->get_active_plugins()) || in_array('wordpress-ecommerce/marketpress.php', $this->get_active_plugins()) || in_array('woocommerce/woocommerce.php', $this->get_active_plugins()) ) {
					$possible_widgets['Billing And Shipping Information'] = 'BSI';
				}
			}
			if($import_type != 'Pages')
				$possible_widgets['Terms and Taxonomies'] = 'TERMS';
		}
		return $possible_widgets;
	}

	public function get_widget_fields($widget_name, $import_type, $importAs, $mode = null) {
		$fields = array();
		switch ($widget_name) {
			case 'Core Fields':
				$fields = $this->coreFields($import_type);
				break;
			
			
			case 'Billing And Shipping Information':
				$fields = $this->billing_information_for_users();
				break;
			
			case 'Custom Fields by WP-Members':
				$fields = $this->custom_fields_by_wp_members();
				break;
			case 'Custom Fields by Ultimate Member':
				$fields = $this->custom_fields_by_ultimate_member();
				break;
		}
		return $fields;
	}
	
	public function get_available_groups($type) {
		$groups = array();
		if ($type == 'Posts') {
			$groups = array('CORE', 'CCTM', 'ACF', 'RF', 'TYPES', 'PODS', 'AIOSEO', 'YOASTSEO', 'CORECUST', 'TERMS', 'TAXO');
		}
		if ($type == 'Pages') {
			$groups = array('CORE', 'CCTM', 'ACF', 'RF', 'TYPES', 'PODS', 'AIOSEO', 'YOASTSEO', 'CORECUST', 'TAXO');
		}
		if ($type == 'WooCommerce') {
			$groups = array('CORE', 'CCTM', 'ACF', 'RF', 'TYPES', 'PODS', 'AIOSEO', 'YOASTSEO', 'ECOMMETA', 'CORECUST', 'TERMS', 'TAXO');
		}
		return $groups;
	}

	public static function initializing_scheduler() {
		if( !wp_next_scheduled( 'smack_uci_image_scheduler' )) {
			wp_schedule_event(time(), 'wp_ultimate_csv_importer_scheduled_images', 'smack_uci_image_scheduler');
		}
		if( !wp_next_scheduled( 'smack_uci_email_scheduler' )) {
			wp_schedule_event(time(), 'wp_ultimate_csv_importer_scheduled_emails', 'smack_uci_email_scheduler');
		}
		if( !wp_next_scheduled( 'smack_uci_replace_inline_images' )) {
			wp_schedule_event(time(), 'wp_ultimate_csv_importer_replace_inline_images', 'smack_uci_replace_inline_images');
		}
	}
}
add_action('init', array('User_SmackUCIAdmin', 'show_admin_menus'));
global $uci_user_admin;
$uci_user_admin = new User_SmackUCIAdmin();

```
