79 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.9 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.
 | 
						|
 */
 | 
						|
 | 
						|
namespace WapplerSystems\BookmarksLikesRatings\Domain\Repository;
 | 
						|
 | 
						|
use WapplerSystems\BookmarksLikesRatings\Domain\Model\Ratingobject;
 | 
						|
use WapplerSystems\BookmarksLikesRatings\Domain\Model\Stepconf;
 | 
						|
use WapplerSystems\BookmarksLikesRatings\Domain\Validator\StepconfValidator;
 | 
						|
use TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface;
 | 
						|
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
 | 
						|
use TYPO3\CMS\Extbase\Persistence\Repository;
 | 
						|
 | 
						|
/**
 | 
						|
 * A repository for ratingstep configurations
 | 
						|
 * @method findByRatingobject(Ratingobject $getRatingobject)
 | 
						|
 */
 | 
						|
class StepconfRepository extends Repository
 | 
						|
{
 | 
						|
    protected $defaultOrderings = ['steporder' => QueryInterface::ORDER_ASCENDING];
 | 
						|
 | 
						|
    /**
 | 
						|
     * Initialize this repository
 | 
						|
     */
 | 
						|
    public function initializeObject(): void
 | 
						|
    {
 | 
						|
        //disable RespectStoragePage as pid is always bound to parent objects pid
 | 
						|
 | 
						|
        /** @var \TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface $defaultQuerySettings */
 | 
						|
        $defaultQuerySettings = $this->objectManager->get(QuerySettingsInterface::class);
 | 
						|
        $defaultQuerySettings->setRespectStoragePage(false);
 | 
						|
        $this->setDefaultQuerySettings($defaultQuerySettings);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Finds the given stepconf object in the repository
 | 
						|
     *
 | 
						|
     * @param    \WapplerSystems\BookmarksLikesRatings\Domain\Model\Stepconf $stepconf The ratingobject to look for
 | 
						|
     * @return    \WapplerSystems\BookmarksLikesRatings\Domain\Model\Stepconf
 | 
						|
     */
 | 
						|
    public function findStepconfObject(Stepconf $stepconf): Stepconf
 | 
						|
    {
 | 
						|
        $query = $this->createQuery();
 | 
						|
        /** @noinspection NullPointerExceptionInspection */
 | 
						|
        $query->matching($query->logicalAnd([
 | 
						|
            $query->equals('ratingobject', $stepconf->getRatingobject()->getUid()),
 | 
						|
            $query->equals('steporder', $stepconf->getSteporder()),
 | 
						|
        ]))->setLimit(1);
 | 
						|
        $queryResult = $query->execute();
 | 
						|
 | 
						|
        /** @var \WapplerSystems\BookmarksLikesRatings\Domain\Model\Stepconf $foundRow */
 | 
						|
        $foundRow = $this->objectManager->get(Stepconf::class);
 | 
						|
 | 
						|
        if (count($queryResult) !== 0) {
 | 
						|
            $foundRow = $queryResult->getFirst();
 | 
						|
        }
 | 
						|
        return $foundRow;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Finds the ratingstep entry by giving ratingobjectUid
 | 
						|
     *
 | 
						|
     * @param    \WapplerSystems\BookmarksLikesRatings\Domain\Model\Stepconf $stepconf The uid of the ratingobject
 | 
						|
     * @return    bool  true if stepconf object exists in repository
 | 
						|
     */
 | 
						|
    public function existStepconf(Stepconf $stepconf): bool
 | 
						|
    {
 | 
						|
        $foundRow = $this->findStepconfObject($stepconf);
 | 
						|
        $stepconfValidator = $this->objectManager->get(StepconfValidator::class);
 | 
						|
 | 
						|
        return !$stepconfValidator->validate($foundRow)->hasErrors();
 | 
						|
    }
 | 
						|
}
 |