<?php

if (!defined('ABSPATH')) {
    exit;
}
if (!class_exists('acf_admin_tools')) {
    class acf_admin_tools
    {
        var $tools = array();
        var $active = '';
        function __construct()
        {
            add_action('admin_menu', array($this, 'admin_menu'));
        }
        function register_tool($class)
        {
            $instance = new $class();
            $this->tools[$instance->name] = $instance;
        }
        function get_tool($name)
        {
            return isset($this->tools[$name]) ? $this->tools[$name] : null;
        }
        function get_tools()
        {
            return $this->tools;
        }
        function admin_menu()
        {
            if (!acf_get_setting('show_admin')) {
                return;
            }
            $page = add_submenu_page('edit.php?post_type=acf-field-group', __('Tools', 'acf'), __('Tools', 'acf'), acf_get_setting('capability'), 'acf-tools', array($this, 'html'));
            add_action('load-' . $page, array($this, 'load'));
        }
        function load()
        {
            acf_disable_filters();
            $this->include_tools();
            $this->check_submit();
            acf_enqueue_scripts();
        }
        function include_tools()
        {
            acf_include('includes/admin/tools/class-acf-admin-tool.php');
            acf_include('includes/admin/tools/class-acf-admin-tool-export.php');
            acf_include('includes/admin/tools/class-acf-admin-tool-import.php');
            do_action('acf/include_admin_tools');
        }
        function check_submit()
        {
            foreach ($this->get_tools() as $tool) {
                $tool->load();
                if (acf_verify_nonce($tool->name)) {
                    $tool->submit();
                }
            }
        }
        function html()
        {
            $screen = get_current_screen();
            $active = acf_maybe_get_GET('tool');
            $view = array('screen_id' => $screen->id, 'active' => $active);
            foreach ($this->get_tools() as $tool) {
                if ($active && $active !== $tool->name) {
                    continue;
                }
                add_meta_box('acf-admin-tool-' . $tool->name, acf_esc_html($tool->title), array($this, 'metabox_html'), $screen->id, 'normal', 'default', array('tool' => $tool->name));
            }
            acf_get_view('html-admin-tools', $view);
        }
        function metabox_html($post, $metabox)
        {
            $tool = $this->get_tool($metabox['args']['tool']);
            ?>
		<form method="post">
			<?php 
            $tool->html();
            ?>
			<?php 
            acf_nonce_input($tool->name);
            ?>
		</form>
			<?php 
        }
    }
    acf()->admin_tools = new acf_admin_tools();
}
function acf_register_admin_tool($class)
{
    return acf()->admin_tools->register_tool($class);
}
function acf_get_admin_tools_url()
{
    return admin_url('edit.php?post_type=acf-field-group&page=acf-tools');
}
function acf_get_admin_tool_url($tool = '')
{
    return acf_get_admin_tools_url() . '&tool=' . $tool;
}