bookmark-pages/Classes/Domain/Validator/StepnameValidator.php

73 lines
2.5 KiB
PHP
Raw Permalink Normal View History

2021-08-17 19:45:38 +02:00
<?php
/*
* This file is part of the package thucke/th-rating.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
/** @noinspection PhpFullyQualifiedNameUsageInspection */
namespace WapplerSystems\BookmarksLikesRatings\Domain\Validator;
use WapplerSystems\BookmarksLikesRatings\Domain\Model\Stepconf;
use WapplerSystems\BookmarksLikesRatings\Domain\Model\Stepname;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
use TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator;
/**
* A validator for Ratings
*
* @copyright Copyright belongs to the respective authors
* @scope singleton
*/
class StepnameValidator extends AbstractValidator
{
/**
* @var \WapplerSystems\BookmarksLikesRatings\Domain\Repository\StepnameRepository
*/
protected $stepnameRepository;
/**
* @param \WapplerSystems\BookmarksLikesRatings\Domain\Repository\StepnameRepository $stepnameRepository
*/
public function injectStepnameRepository(\WapplerSystems\BookmarksLikesRatings\Domain\Repository\StepnameRepository $stepnameRepository)
{
$this->stepnameRepository = $stepnameRepository;
}
/**
* If the given step is valid
*
* @param \WapplerSystems\BookmarksLikesRatings\Domain\Model\Stepname $stepname
* @throws \TYPO3\CMS\Extbase\Persistence\Exception\InvalidQueryException
*/
protected function isValid($stepname): void
{
//a stepname object must have a stepconf
if (!$stepname->getStepconf() instanceof Stepconf) {
$this->addError(
LocalizationUtility::translate('error.validator.stepname.stepconf', 'ThRating'),
1382895072
);
}
//check if given languagecode exists in website
if (!$this->stepnameRepository->checkStepnameLanguage($stepname)) {
$this->addError(LocalizationUtility::translate('error.validator.stepname.sysLang', 'ThRating'), 1382895089);
}
//now check if entry for default language exists
$langUid = $stepname->getSysLanguageUid();
if (!empty($langUid)) {
$defaultStepname = $this->stepnameRepository->findDefaultStepname($stepname);
if (get_class($defaultStepname) !== Stepname::class || $this->validate($defaultStepname)->hasErrors()) {
$this->addError(
LocalizationUtility::translate('error.validator.stepname.defaultLang', 'ThRating'),
1382895097
);
}
}
}
}