Your IP : 3.138.172.248


Current Path : /home/church/www/wp-content/plugins/event-list/admin/
Upload File :
Current File : /home/church/www/wp-content/plugins/event-list/admin/admin.php

<?php
if(!defined('WP_ADMIN')) {
	exit;
}

require_once(EL_PATH.'includes/options.php');
require_once(EL_PATH.'includes/events_post_type.php');

// This class handles all available admin pages
class EL_Admin {
	private static $instance;
	private $options;
	private $events_post_type;
	private $show_upgr_message = false;

	public static function &get_instance() {
		// Create class instance if required
		if(!isset(self::$instance)) {
			self::$instance = new self();
		}
		// Return class instance
		return self::$instance;
	}

	private function __construct() {
		$this->options = &EL_Options::get_instance();
		$this->events_post_type = &EL_Events_Post_Type::get_instance();

		// Register actions
		add_action('init', array(&$this, 'plugin_upgrade_check'), 5);
		add_action('admin_notices', array(&$this, 'show_plugin_upgrade_message'));
		add_action('current_screen', array(&$this, 'register_events_post_type_mods'));
		add_action('admin_head', array(&$this, 'add_dashboard_styles'));
		add_action('admin_menu', array(&$this, 'register_pages'));
		add_filter('dashboard_glance_items', array(&$this, 'add_events_to_glance'));
		add_filter('removable_query_args', array(&$this, 'remove_upgrade_args'));
	}

	public function plugin_upgrade_check() {
		// Upgrade check
		$file_data = get_file_data(EL_PATH.'event-list.php', array('version'=>'Version'));
		$last_upgr_version = get_option('el_last_upgr_version', '');
		if($file_data['version'] != $last_upgr_version || isset($_GET['resume-el-upgr'])) {
			// load upgrade class
			require_once(EL_PATH.'admin/includes/upgrade.php');
			EL_Upgrade::get_instance()->upgrade();
		}
	}

	public function show_plugin_upgrade_message() {
		if($this->show_upgr_message) {
			// load upgrade class
			require_once(EL_PATH.'admin/includes/upgrade.php');
			$error = 2 == $this->show_upgr_message;
			$class = $error ? 'error' : 'updated fade';
			$title = sprintf($error ? __('Errors during upgrade of plugin %1$s','event-list') : __('Upgrade of plugin %1$s successful','event-list'), '"Event List"');
			$logfile = ' (<a href="'.content_url(EL_Upgrade::get_instance()->logfile).'">upgrade log</a>)';
			echo '<div id="message" class="'.$class.'"><p><strong>'.$title.'</strong>'.$logfile.'</p></div>';
		}
	}

	public function remove_upgrade_args($args) {
		// check required get parameters
		$this->show_upgr_message = isset($_GET['el-upgr-finished']) ? intval($_GET['el-upgr-finished']) : false;

		array_push($args, 'el-upgr-finished', 'resume-el-upgr');
		return $args;
	}

	public function register_events_post_type_mods($current_screen) {
		// load file depending on current screen
		if(current_user_can('edit_posts')) {
			switch($current_screen->id) {
				// Main/all events page
				case 'edit-el_events':
					require_once(EL_PATH.'admin/includes/admin-main.php');
					EL_Admin_Main::get_instance();
					break;
				// New/edit event page
				case 'el_events':
					// Additional required checks (only for add or edit action, and not for e.g. move event to trash)
					$get_action = isset($_GET['action']) ? sanitize_key($_GET['action']) : '';
					$post_action = isset($_POST['action']) ? sanitize_key($_POST['action']) : '';
					if('add' === $current_screen->action || 'edit' === $get_action || 'editpost' === $post_action) {
						require_once(EL_PATH.'admin/includes/admin-new.php');
						EL_Admin_New::get_instance();
					}
					break;
				// Event category page
				case 'edit-'.$this->events_post_type->taxonomy:
					if('1' !== $this->options->get('el_use_post_cats')) {
						require_once(EL_PATH.'admin/includes/admin-categories.php');
						EL_Admin_Categories::get_instance();
					}
					break;
			}
		}
	}

	/**
	 * Add and register all admin pages in the admin menu
	 */
	public function register_pages() {
		// Settings subpage
		$page = add_submenu_page('edit.php?post_type=el_events', __('Event List Settings','event-list'), __('Settings','event-list'), 'manage_options', 'el_admin_settings', array(&$this, 'show_settings_page'));
		add_action('admin_print_scripts-'.$page, array(&$this, 'embed_settings_scripts'));

		// About subpage
		$page = add_submenu_page('edit.php?post_type=el_events', __('About Event List','event-list'), __('About','event-list'), 'edit_posts', 'el_admin_about', array(&$this, 'show_about_page'));
		add_action('admin_print_scripts-'.$page, array(&$this, 'embed_about_scripts'));

		// Import page (invisible in menu, but callable by import button on admin main page)
		$page = add_submenu_page(null, null, null, 'edit_posts', 'el_admin_import', array(&$this, 'show_import_page'));
		add_action('admin_print_scripts-'.$page, array(&$this, 'embed_import_scripts'));

		// Sync Post Categories page (invisible in menu, but callable by sync button on admin categories page)
		$page = add_submenu_page(null, null, null, 'manage_categories', 'el_admin_cat_sync', array(&$this, 'show_cat_sync_page'));
		add_action('load-'.$page, array(&$this, 'handle_cat_sync_actions'));
	}

	public function add_dashboard_styles() {
		if(current_user_can('edit_posts') && 'dashboard' === get_current_screen()->base) {
			echo '<style>#dashboard_right_now .el-events-count:before {content: "\f508"}</style>';
		}
	}

	public function add_events_to_glance() {
		if(current_user_can('edit_posts')) {
			require_once(EL_PATH.'includes/events.php');
			$num_events = EL_Events::get_instance()->get_num_events();
			$text = sprintf(_n('%s Event','%s Events',$num_events,'event-list'), number_format_i18n($num_events));
			if(current_user_can(get_post_type_object('el_events')->cap->edit_posts)) {
				return array('<a class="el-events-count" href="'.admin_url('edit.php?post_type=el_events').'">'.$text.'</a>');
			}
			else {
				return array($text);
			}

		}
	}

	public function show_settings_page() {
		require_once(EL_PATH.'admin/includes/admin-settings.php');
		EL_Admin_Settings::get_instance()->show_settings();
	}

	public function embed_settings_scripts() {
		require_once(EL_PATH.'admin/includes/admin-settings.php');
		EL_Admin_Settings::get_instance()->embed_settings_scripts();
	}

	public function show_about_page() {
		require_once(EL_PATH.'admin/includes/admin-about.php');
		EL_Admin_About::get_instance()->show_about();
	}

	public function embed_about_scripts() {
		require_once(EL_PATH.'admin/includes/admin-about.php');
		EL_Admin_About::get_instance()->embed_about_scripts();
	}

	public function show_import_page() {
		require_once(EL_PATH.'admin/includes/admin-import.php');
		EL_Admin_Import::get_instance()->show_import();
	}

	public function embed_import_scripts() {
		require_once(EL_PATH.'admin/includes/admin-import.php');
		EL_Admin_Import::get_instance()->embed_import_scripts();
	}

	public function show_cat_sync_page() {
		require_once(EL_PATH.'admin/includes/admin-category-sync.php');
		EL_Admin_Category_Sync::get_instance()->show_cat_sync();
	}

	public function handle_cat_sync_actions() {
		require_once(EL_PATH.'admin/includes/admin-category-sync.php');
		EL_Admin_Category_Sync::get_instance()->handle_actions();
	}
}
?>