HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: /var/www/html/triad-infosec/wp-content/plugins/autoupdater/lib/Command/Base.php
<?php
defined('AUTOUPDATER_LIB') or die;

/**
 * @see https://make.wordpress.org/cli/handbook/commands-cookbook/
 */
abstract class AutoUpdater_Command_Base
{
    /**
     * @var array
     */
    protected $bool_options = array();

    /**
     * @var array
     */
    protected $int_options = array();

    /**
     * @var array
     */
    protected $null_options = array();

    /**
     * @var array
     */
    protected $array_options = array();

    /**
     * @param array $args
     * @param array $assoc_args
     *
     * @return void
     */
    abstract public function __invoke($args, $assoc_args);

    /**
     * @return void
     */
    abstract public static function beforeInvoke();

    /**
     * @param array $assoc_args
     *
     * @return bool
     */
    protected function validateBoolOptions($assoc_args)
    {
        $result = true;
        foreach ($this->bool_options as $option) {
            if (isset($assoc_args[$option]) && !$this->isBool($assoc_args[$option])) {
                WP_CLI::error(sprintf('The value of --%s option is invalid. Provide 0 or 1.', $option), false);
                $result = false;
            }
        }
        return $result;
    }

    /**
     * @param array $assoc_args
     *
     * @return bool
     */
    protected function validateIntOptions($assoc_args)
    {
        $result = true;
        foreach ($this->int_options as $option) {
            if (isset($assoc_args[$option]) && !is_numeric($assoc_args[$option])) {
                WP_CLI::error(sprintf('The value of --%s option is invalid. Provide a number.', $option), false);
                $result = false;
            }
        }
        return $result;
    }

    /**
     * @param string $option
     * @param mixed $value
     *
     * @return mixed
     */
    protected function castOptionValue($option, $value)
    {
        if (in_array($option, $this->bool_options)) {
            return is_bool($value) ? $value : $this->castBool($value);
        }

        if (in_array($option, $this->null_options)) {
            if (!$value || strtolower($value) === 'null') {
                return null;
            }
        }

        if (in_array($option, $this->string_options)) {
            if ($value === null) {
                return '';
            }
            return (string) $value;
        }

        if (in_array($option, $this->int_options)) {
            return intval($value);
        }

        if (in_array($option, $this->array_options)) {
            return $this->castArray($value);
        }

        return $value;
    }

    /**
     * @param string $value
     *
     * @return array
     */
    protected function castArray($value)
    {
        if (is_array($value)) {
            return $value;
        }
        if (empty($value)) {
            return array();
        }
        return array_map('trim', explode(',', $value));
    }

    /**
     * @param string $value
     *
     * @return bool
     */
    protected function castBool($value)
    {
        return $this->isTrue($value);
    }

    /**
     * @param string $value
     *
     * @return bool
     */
    protected function isBool($value)
    {
        return $this->isTrue($value) || $this->isFalse($value);
    }

    /**
     * @param string $value
     *
     * @return bool
     */
    protected function isTrue($value)
    {
        return in_array(strtolower($value), array('y', 'yes', 'on', 'true', '1'));
    }

    /**
     * @param string $value
     *
     * @return bool
     */
    protected function isFalse($value)
    {
        return in_array(strtolower($value), array('n', 'no', 'off', 'false', '0'));
    }

    /**
     * @param string $value
     *
     * @return bool
     */
    protected function isDate($value)
    {
        return !!preg_match('/^\d{4}-\d{2}-\d{2}$/', $value);
    }
}