<?php

if (!defined('ABSPATH')) {
    exit;
}

/*----------------------------------------
メールフォーム：管理画面用ファイル読み込み
----------------------------------------*/
function immf_enqueue_contact_form_admin_assets($hook) {

    $is_form_editor =
        $hook === 'post.php' ||
        $hook === 'post-new.php';

    $is_template_settings =
        $hook ===
        'im_mail_form_page_im-mail-form-template-settings';

    $is_mail_logs =
        $hook ===
        'im_mail_form_page_im-mail-form-mail-logs';

    $is_mail_form_list = $hook === 'edit.php';

    if (
        !$is_form_editor &&
        !$is_template_settings &&
        !$is_mail_logs &&
        !$is_mail_form_list
    ) {
        return;
    }

    // 現在の管理画面情報を取得
    $screen = get_current_screen();

    // メールフォーム編集画面以外では読み込まない
    if (
        !$screen ||
        $screen->post_type !== 'im_mail_form'
    ) {
        return;
    }


    /*----------------------------------------
    管理画面用CSS
    ----------------------------------------*/
    $style_path = IMMF_PATH
        . 'assets/css/admin/form-editor.css';

    wp_enqueue_style(
        'im-mail-form-admin',
        IMMF_URL
            . 'assets/css/admin/form-editor.css',
        [],
        file_exists($style_path)
            ? filemtime($style_path)
            : IMMF_VERSION
    );


    
    if ($is_mail_form_list) {

        /*----------------------------------------
        フォーム一覧用JavaScript
        ----------------------------------------*/
        $list_script_path = IMMF_PATH
            . 'assets/js/admin/admin-columns.js';

        wp_enqueue_script(
            'im-mail-form-admin-columns',
            IMMF_URL
                . 'assets/js/admin/admin-columns.js',
            [],
            file_exists($list_script_path)
                ? filemtime($list_script_path)
                : IMMF_VERSION,
            true
        );

        return;
    }

    if (
        $is_template_settings ||
        $is_mail_logs
    ) {
        return;
    }

    

    /*----------------------------------------
    管理画面用JavaScript
    ----------------------------------------*/
    $script_path = IMMF_PATH
        . 'assets/js/admin/form-editor.js';

    wp_enqueue_script(
        'im-mail-form-admin',
        IMMF_URL
            . 'assets/js/admin/form-editor.js',
        [
            'jquery-ui-sortable',
            'wp-i18n',
        ],
        file_exists($script_path)
            ? filemtime($script_path)
            : IMMF_VERSION,
        true
    );

    wp_set_script_translations(
        'im-mail-form-admin',
        'im-mail-form',
        IMMF_PATH . 'languages'
    );
}

add_action(
    'admin_enqueue_scripts',
    'immf_enqueue_contact_form_admin_assets'
);


/*----------------------------------------
メールフォーム：保存ボタンの文言変更
----------------------------------------*/
function immf_change_contact_form_save_button_text(
    $translated_text,
    $text,
    $domain
) {

    global $pagenow, $typenow;

    // 管理画面以外では変更しない
    if (!is_admin()) {
        return $translated_text;
    }

    // 投稿の新規追加・編集画面以外では変更しない
    if (
        $pagenow !== 'post.php' &&
        $pagenow !== 'post-new.php'
    ) {
        return $translated_text;
    }

    // メールフォーム以外では変更しない
    if ($typenow !== 'im_mail_form') {
        return $translated_text;
    }

    // 公開・更新ボタンを保存に変更
    if (
        $text === 'Publish' ||
        $text === 'Update'
    ) {
        return __(
            'Save',
            'im-mail-form'
        );
    }

    return $translated_text;
}

add_filter(
    'gettext',
    'immf_change_contact_form_save_button_text',
    20,
    3
);


/*----------------------------------------
メールフォーム：保存エラーを管理画面に表示
----------------------------------------*/
function immf_display_contact_form_admin_errors() {

    $screen = get_current_screen();

    if (
        !$screen ||
        $screen->post_type !== 'im_mail_form'
    ) {
        return;
    }

    $transient_key =
        'immf_errors_'
        . get_current_user_id();

    $errors = get_transient(
        $transient_key
    );

    if (
        !is_array($errors) ||
        empty($errors)
    ) {
        return;
    }

    $error_tabs_key =
        'immf_error_tabs_'
        . get_current_user_id();

    $error_tabs = get_transient(
        $error_tabs_key
    );

    if (!is_array($error_tabs)) {
        $error_tabs = [];
    }

    $error_tabs = array_values(
        array_intersect(
            [
                'mail',
                'complete',
            ],
            array_unique($error_tabs)
        )
    );

    delete_transient(
        $error_tabs_key
    );

    delete_transient(
        $transient_key
    );

    ?>

    <div
        class="notice notice-error is-dismissible"
        data-contact-form-error-tabs="<?php
        echo esc_attr(
            implode(
                ' ',
                $error_tabs
            )
        );
        ?>"
        data-contact-form-save-error
    >

        <p>
            <?php esc_html_e(
                'There are errors in the settings.',
                'im-mail-form'
            ); ?>
        </p>

        <ul>

            <?php foreach ($errors as $error) : ?>

                <li>
                    <?php echo esc_html($error); ?>
                </li>

            <?php endforeach; ?>

        </ul>

    </div>

    <?php
}

add_action(
    'admin_notices',
    'immf_display_contact_form_admin_errors'
);
