Server IP : 172.67.157.199 / Your IP : 3.144.45.178 [ Web Server : Apache System : Linux b70eb322-3aee-0c53-7c82-0db91281f2c6.secureserver.net 6.1.90-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 12:09:22 EDT 2024 x86_64 User : root ( 0) PHP Version : 8.0.30.2 Disable Function : NONE Domains : 0 Domains MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/ |
Upload File : |
<?php namespace Yoast\WHIPv2; use Yoast\WHIPv2\Exceptions\InvalidType; use Yoast\WHIPv2\Interfaces\Message; use Yoast\WHIPv2\Interfaces\Requirement; use Yoast\WHIPv2\Messages\InvalidVersionRequirementMessage; use Yoast\WHIPv2\Messages\UpgradePhpMessage; /** * Main controller class to require a certain version of software. */ class RequirementsChecker { /** * Requirements the environment should comply with. * * @var array<Requirement> */ private $requirements; /** * The configuration to check. * * @var Configuration */ private $configuration; /** * Message Manager. * * @var MessagesManager */ private $messageManager; /** * The text domain to use for translations. * * @var string */ private $textdomain; /** * RequirementsChecker constructor. * * @param array<string, string> $configuration The configuration to check. * @param string $textdomain The text domain to use for translations. * * @throws InvalidType When the $configuration parameter is not of the expected type. */ public function __construct( $configuration = array(), $textdomain = 'default' ) { $this->requirements = array(); $this->configuration = new Configuration( $configuration ); $this->messageManager = new MessagesManager(); $this->textdomain = $textdomain; } /** * Adds a requirement to the list of requirements if it doesn't already exist. * * @param Requirement $requirement The requirement to add. * * @return void */ public function addRequirement( Requirement $requirement ) { // Only allow unique entries to ensure we're not checking specific combinations multiple times. if ( $this->requirementExistsForComponent( $requirement->component() ) ) { return; } $this->requirements[] = $requirement; } /** * Determines whether or not there are requirements available. * * @return bool Whether or not there are requirements. */ public function hasRequirements() { return $this->totalRequirements() > 0; } /** * Gets the total amount of requirements. * * @return int The total amount of requirements. */ public function totalRequirements() { return \count( $this->requirements ); } /** * Determines whether or not a requirement exists for a particular component. * * @param string $component The component to check for. * * @return bool Whether or not the component has a requirement defined. */ public function requirementExistsForComponent( $component ) { foreach ( $this->requirements as $requirement ) { if ( $requirement->component() === $component ) { return true; } } return false; } /** * Determines whether a requirement has been fulfilled. * * @param Requirement $requirement The requirement to check. * * @return bool Whether or not the requirement is fulfilled. */ private function requirementIsFulfilled( Requirement $requirement ) { $availableVersion = $this->configuration->configuredVersion( $requirement ); $requiredVersion = $requirement->version(); if ( \in_array( $requirement->operator(), array( '=', '==', '===' ), true ) ) { return \version_compare( $availableVersion, $requiredVersion, '>=' ); } return \version_compare( $availableVersion, $requiredVersion, $requirement->operator() ); } /** * Checks if all requirements are fulfilled and adds a message to the message manager if necessary. * * @return void */ public function check() { foreach ( $this->requirements as $requirement ) { // Match against config. $requirementFulfilled = $this->requirementIsFulfilled( $requirement ); if ( $requirementFulfilled ) { continue; } $this->addMissingRequirementMessage( $requirement ); } } /** * Adds a message to the message manager for requirements that cannot be fulfilled. * * @param Requirement $requirement The requirement that cannot be fulfilled. * * @return void */ private function addMissingRequirementMessage( Requirement $requirement ) { switch ( $requirement->component() ) { case 'php': $this->messageManager->addMessage( new UpgradePhpMessage( $this->textdomain ) ); break; default: $this->messageManager->addMessage( new InvalidVersionRequirementMessage( $requirement, $this->configuration->configuredVersion( $requirement ) ) ); break; } } /** * Determines whether or not there are messages available. * * @return bool Whether or not there are messages to display. */ public function hasMessages() { return $this->messageManager->hasMessages(); } /** * Gets the most recent message from the message manager. * * @return Message The latest message. */ public function getMostRecentMessage() { return $this->messageManager->getLatestMessage(); } }