HEX
Server: Apache
System: Linux efa57bbe-abb1-400d-2985-3b056fbc2701.secureserver.net 6.1.147-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 24 12:33:32 EDT 2025 x86_64
User: root (0)
PHP: 8.0.30.4
Disabled: NONE
Upload Files
File: /var/www/wp-content/mu-plugins/vendor/godaddy/mwc-core/src/JobQueue/Traits/HasJobSettingsTrait.php
<?php

namespace GoDaddy\WordPress\MWC\Core\JobQueue\Traits;

use GoDaddy\WordPress\MWC\Common\Configuration\Configuration;
use GoDaddy\WordPress\MWC\Common\Helpers\TypeHelper;
use GoDaddy\WordPress\MWC\Core\JobQueue\Contracts\HasJobSettingsContract;
use GoDaddy\WordPress\MWC\Core\JobQueue\DataObjects\Contracts\JobSettingsContract;
use GoDaddy\WordPress\MWC\Core\JobQueue\DataObjects\JobSettings;

/**
 * Trait for jobs that have settings. Implements common methods in {@see HasJobSettingsContract}.
 */
trait HasJobSettingsTrait
{
    /** @var JobSettingsContract settings for the current job */
    protected JobSettingsContract $jobSettings;

    /**
     * Sets the job settings against the handler.
     *
     * @param JobSettingsContract $jobSettings
     * @return $this
     */
    public function setJobSettings(JobSettingsContract $jobSettings)
    {
        $this->jobSettings = $jobSettings;

        return $this;
    }

    /**
     * Gets the batch settings.
     *
     * @return JobSettingsContract
     */
    public function getJobSettings() : JobSettingsContract
    {
        return $this->jobSettings;
    }

    /**
     * Configures the settings for this job.
     *
     * Makes a {@see JobSettingsContract} DTO with settings overrides from the config for this job (if applicable).
     *
     * @return JobSettingsContract settings for this job (default: {@see JobSettings})
     */
    public function configureJobSettings() : JobSettingsContract
    {
        $settingsClass = TypeHelper::string(Configuration::get("queue.jobs.{$this->getJobKey()}.settings.class"), '');

        if (
            empty($settingsClass) ||
            ! class_exists($settingsClass) ||
            ! method_exists($settingsClass, 'getNewInstance') ||
            ! in_array(JobSettingsContract::class, class_implements($settingsClass), true)
        ) {
            return JobSettings::getNewInstance([]);
        }

        $settings = $settingsClass::getNewInstance(
            TypeHelper::array(
                Configuration::get("queue.jobs.{$this->getJobKey()}.settings.values"),
                []
            )
        );

        return $settings instanceof JobSettingsContract ? $settings : JobSettings::getNewInstance([]);
    }
}