73 lines
2.5 KiB
PHP
73 lines
2.5 KiB
PHP
<?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
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|