HEX
Server: LiteSpeed
System: Linux server53.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64
User: nahevttf (6494)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: //home/nahevttf/www/wp-content/plugins/extendify/app/Shared/Services/Import/ImagesImporter.php
<?php
/**
 * Import\Images
 */

namespace Extendify\Shared\Services\Import;

defined('ABSPATH') || die('No direct access.');

/**
 * This class will import external images added to WordPress posts,
 * using our Extendify library.
 */
class ImagesImporter
{
    /**
     * Initialize the class and hook into the publish_post and schedule events action.
     *
     * @return void
     */
    public function __construct()
    {
        // Get the data directly from the database.
        $partnerData = get_option('extendify_partner_data_v2', []);
        // If the setting is not enabled, we do nothing.
        if (! ($partnerData['enableImageImports-1-14-6'] ?? false)) {
            return;
        }

        try {
            $this->dailyImageImportCheck();
            $this->everyTenMinImportCheck();
        } catch (\Exception $e) {} // phpcs:ignore
    }

    /**
     * This checks once a day a bit more thoroughly for images, and
     * will set a signal for the importer to run.
     *
     * @return void
     * @throws \Exception Emits Exception in case of an error.
     */
    public function dailyImageImportCheck()
    {
        if (! \wp_next_scheduled('extendify_daily_import_images_check')) {
            \wp_schedule_event(
                // phpcs:ignore WordPress.DateTime.CurrentTimeTimestamp
                (new \DateTime('tomorrow 03:00', wp_timezone()))->getTimestamp(),
                'daily',
                'extendify_daily_import_images_check'
            );
        }

        \add_action('extendify_daily_import_images_check', function () {
            // In this case, we will be doing the import soon.
            if (\get_option('extendify_check_for_image_imports')) {
                return;
            }

            if (Post::countPostsNeedingUpdate()->posts_count > 0) {
                \update_option('extendify_check_for_image_imports', true, false);
            }
        });
    }

    /**
     * This does a cheap, quick check often for images to import,
     * then if found, imports them here.
     *
     * @return void
     */
    public function everyTenMinImportCheck()
    {
        // Create a custom 10 minutes schedule that we use below.
        // phpcs:ignore WordPress.WP.CronInterval -- Verified > 10 min.
        \add_filter('cron_schedules', function ($schedules) {
            $schedules['every_ten_minutes'] = [
                'interval' => (10 * MINUTE_IN_SECONDS),
                'display' => __('Every 10 minutes', 'extendify-local'),
            ];

            return $schedules;
        });

        if (! \wp_next_scheduled('extendify_images_importer_light')) {
            \wp_schedule_event(
                // phpcs:ignore WordPress.DateTime.CurrentTimeTimestamp
                time(), 'every_ten_minutes', 'extendify_images_importer_light'
            );
        }

        \add_action('extendify_images_importer_light', function () {
            (new ImagesImporterRunner())->run();
        });
    }
}