123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- <?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();
- endif;
- 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;
- }
- ?>
|