MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP Thu May 7 23:17:13 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/www/wp-content/plugins/imageseo/src/Actions/Admin/GenerateImage.php
<?php

namespace ImageSeoWP\Actions\Admin;

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

use ImageSeoWP\Async\GenerateImageBackgroundProcess;

class GenerateImage
{
    public function __construct()
    {
        $this->optionServices = imageseo_get_service('Option');
        $this->imageSocialService = imageseo_get_service('ImageSocial');
        $this->generateImageSocialService = imageseo_get_service('GenerateImageSocial');
        $this->process = new GenerateImageBackgroundProcess();
    }

    public function hooks()
    {
        if (!imageseo_allowed()) {
            return;
        }

        add_action('transition_post_status', [$this, 'generateSocialMedia'], 10, 3);
        add_action('admin_post_imageseo_generate_manual_social_media', [$this, 'generateSocialMediaManually']);
    }

    public function generateSocialMediaManually()
    {
        $redirectUrl = admin_url('edit.php');
        if ('post' !== $postType) {
            $redirectUrl .= '?post_type=' . $postType;
        }

        if (!wp_verify_nonce($_GET['_wpnonce'], 'imageseo_generate_manual_social_media')) {
            wp_redirect($redirectUrl);
            exit;
        }

        if (!current_user_can('manage_options')) {
            wp_redirect($redirectUrl);
            exit;
        }

        $postType = (isset($_GET['post_type'])) ? $_GET['post_type'] : 'post';
        $redirectUrl = admin_url('edit.php');
        if ('post' !== $postType) {
            $redirectUrl .= '?post_type=' . $postType;
        }

        if (!isset($_GET['post_id'])) {
            wp_redirect($redirectUrl);

            return;
        }

        $post = get_post((int) $_GET['post_id']);
        $postTypesAuthorized = $this->optionServices->getOption('social_media_post_types');
        if (!in_array($post->post_type, $postTypesAuthorized, true)) {
            return;
        }

        $this->generateImageSocialService->prepare($post->ID);

        wp_redirect($redirectUrl);
    }

    public function generateSocialMedia($newStatus, $oldStatus, $post)
    {
        if (defined('REST_REQUEST') && REST_REQUEST) {
            return;
        }

        if ('publish' !== $newStatus) {
            return;
        }

        if (wp_is_post_revision($post->ID)) {
            return;
        }

        $postTypesAuthorized = $this->optionServices->getOption('social_media_post_types');
        if (!in_array($post->post_type, $postTypesAuthorized, true)) {
            return;
		}

		if($this->imageSocialService->getPreviewImageUrlSocialMedia($post->ID)){
			return;
		}

        $this->imageSocialService->setCurrentProcess($post->ID);

        $this->process->push_to_queue([
            'id' => $post->ID,
        ]);

        $this->process->save()->dispatch();
    }
}