File "seo-score-groups-repository.php"
Full Path: /home/elegucvf/public_html/src/dashboard/application/score-groups/seo-score-groups/seo-score-groups-repository.php
File size: 1.54 KB
MIME-type: text/x-php
Charset: utf-8
<?php
// phpcs:disable Yoast.NamingConventions.NamespaceName.MaxExceeded
// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong
namespace Yoast\WP\SEO\Dashboard\Application\Score_Groups\SEO_Score_Groups;
use Yoast\WP\SEO\Dashboard\Domain\Score_Groups\SEO_Score_Groups\No_SEO_Score_Group;
use Yoast\WP\SEO\Dashboard\Domain\Score_Groups\SEO_Score_Groups\SEO_Score_Groups_Interface;
/**
* The repository to get SEO score groups.
*/
class SEO_Score_Groups_Repository {
/**
* All SEO score groups.
*
* @var SEO_Score_Groups_Interface[]
*/
private $seo_score_groups;
/**
* The constructor.
*
* @param SEO_Score_Groups_Interface ...$seo_score_groups All SEO score groups.
*/
public function __construct(
SEO_Score_Groups_Interface ...$seo_score_groups
) {
$this->seo_score_groups = $seo_score_groups;
}
/**
* Returns the SEO score group that a SEO score belongs to.
*
* @param int $seo_score The SEO score to be assigned into a group.
*
* @return SEO_Score_Groups_Interface The SEO score group that the SEO score belongs to.
*/
public function get_seo_score_group( ?int $seo_score ): SEO_Score_Groups_Interface {
if ( $seo_score === null || $seo_score === 0 ) {
return new No_SEO_Score_Group();
}
foreach ( $this->seo_score_groups as $seo_score_group ) {
if ( $seo_score_group->get_max_score() === null ) {
continue;
}
if ( $seo_score >= $seo_score_group->get_min_score() && $seo_score <= $seo_score_group->get_max_score() ) {
return $seo_score_group;
}
}
return new No_SEO_Score_Group();
}
}