# auto-alt-text/2.2.0/src/App/Admin/MediaLibrary.php

Auto Alt Text, version 2.2.0. 87 lines.

- Page: https://pluginprobe.com/plugins/auto-alt-text/2.2.0/code/src/App/Admin/MediaLibrary.php
- Raw: https://pluginprobe.com/plugins/auto-alt-text/2.2.0/raw/src/App/Admin/MediaLibrary.php
- Modified: 2024-08-28T22:04:44+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/auto-alt-text/2.2.0/code/src/App/Admin/MediaLibrary.php#L10-L20`.

```php
<?php

namespace AATXT\App\Admin;

use AATXT\App\Setup;
use AATXT\App\Utilities\AssetsManager;
use AATXT\Config\Constants;

class MediaLibrary
{
    private static ?self $instance = null;
    private static AssetsManager $assetsManager;

    private function __construct()
    {
        //
    }

    public static function register(): void
    {
        if (is_null(self::$instance)) {
            self::$instance = new self();
        }
        self::$assetsManager = AssetsManager::make();

        add_action('admin_enqueue_scripts', [self::$instance, 'enqueue'], 1);

        // Add button to generate alt text in media library
        add_filter('attachment_fields_to_edit', [self::$instance, 'addGenerateAltTextButton'], 10, 2);

        // Handle AJAX request to generate alt text
        add_action('wp_ajax_generate_alt_text', [self::$instance, 'generateAltText']);
    }

    public function generateAltText(): void
    {
        check_ajax_referer(Constants::AATXT_AJAX_GENERATE_ALT_TEXT_NONCE, 'nonce');

        // Recupera l'ID del media dalla richiesta AJAX
        $postId = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;

        if (!$postId) {
            wp_send_json_error('Invalid Post ID');
            return;
        }

        // Recupera l'URL del media
        $mediaUrl = wp_get_attachment_url($postId);

        if (!$mediaUrl) {
            wp_send_json_error('Media not found');
            return;
        }

        $generatedAltText = Setup::altText($postId);

        wp_send_json_success(['alt_text' => $generatedAltText]);
    }

    public static function enqueue(): void
    {
        $screen = get_current_screen();
        if ($screen && ( ($screen->id === 'upload' && $screen->base === 'upload') || ($screen->id === 'attachment'))  ) {
            $mediaLibraryJs = self::$assetsManager->getAssetUrl('resources/js/media-library.js', false);
            wp_enqueue_script(Constants::AATXT_PLUGIN_MEDIA_LIBRARY_HANDLE, $mediaLibraryJs, [], false);

            wp_localize_script(Constants::AATXT_PLUGIN_MEDIA_LIBRARY_HANDLE, 'AATXT', [
                'altTextNonce' => wp_create_nonce(Constants::AATXT_AJAX_GENERATE_ALT_TEXT_NONCE),
            ]);
        }
    }

    public static function addGenerateAltTextButton(array $form_fields, \WP_Post $post): array
    {
        $form_fields['generate_alt_text'] = array(
            'label' => '',
            'input' => 'html',
            'html' => '<button type="button" class="button" id="generate-alt-text-button" data-post-id="' . $post->ID . '">'
                . esc_html__('Generate Alt Text', 'auto-alt-text') .
                '</button><span id="loading-spinner" class="spinner" style="float:none; margin-left: 5px; display: none;"></span>',

            'helps' => '',
        );

        return $form_fields;
    }
}
```
