コード例 #1
1
 /**
  * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager
  */
 public function __construct(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager)
 {
     parent::__construct($objectManager);
     $querySettings = new Typo3QuerySettings();
     $querySettings->setRespectStoragePage(false);
     $this->setDefaultQuerySettings($querySettings);
 }
コード例 #2
0
 /**
  * Translates a query an manipulates given query object
  *
  * @param Tx_PtExtlist_Domain_QueryObject_Criteria $criteria Criteria to be translated
  * @param \TYPO3\CMS\Extbase\Persistence\Generic\Query $extbaseQuery Query to add criteria to
  * @param \TYPO3\CMS\Extbase\Persistence\Repository $extbaseRepository Associated repository
  * @throws Exception
  * @return \TYPO3\CMS\Extbase\Persistence\Generic\Query
  */
 public static function translateCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria $criteria, \TYPO3\CMS\Extbase\Persistence\Generic\Query $extbaseQuery, \TYPO3\CMS\Extbase\Persistence\Repository $extbaseRepository)
 {
     if (!is_a($criteria, 'Tx_PtExtlist_Domain_QueryObject_OrCriteria')) {
         throw new Exception('Given criteria is not of type Tx_PtExtlist_Domain_QueryObject_Criteria --> cannot be translated by or criteria translator! 1326466193');
     }
     /**
      * This is a little ugly here:
      *
      * As we do not create Extbase criterias from our generic pt_extlist criterias
      * but set the criterias directly on the created extbase query, we have to cheat
      * here and generate two helper queries, whenever a OR query has to be translated.
      *
      * After having translated the two criterias of the generic OR criteria, we
      * put them together again in a single extbase query.
      */
     $tmpQuery1 = $extbaseRepository->createQuery();
     $tmpQuery2 = $extbaseRepository->createQuery();
     // translate first OR criteria by creating a new extbase query
     $tmpQuery1 = Tx_PtExtlist_Domain_DataBackend_ExtBaseDataBackend_ExtBaseInterpreter_ExtBaseInterpreter::setCriteriaOnExtBaseQueryByCriteria($criteria->getFirstCriteria(), $tmpQuery1, $extbaseRepository);
     // translate second OR criteria by creating a new extbase query
     $tmpQuery2 = Tx_PtExtlist_Domain_DataBackend_ExtBaseDataBackend_ExtBaseInterpreter_ExtBaseInterpreter::setCriteriaOnExtBaseQueryByCriteria($criteria->getSecondCriteria(), $tmpQuery2, $extbaseRepository);
     // put both translated criterias together again in a single extbase query
     if ($extbaseQuery->getConstraint()) {
         $extbaseQuery->matching($extbaseQuery->logicalAnd($extbaseQuery->getConstraint(), $extbaseQuery->logicalOr($tmpQuery1->getConstraint(), $tmpQuery2->getConstraint())));
     } else {
         $extbaseQuery->matching($extbaseQuery->logicalOr($tmpQuery1->getConstraint(), $tmpQuery2->getConstraint()));
     }
     return $extbaseQuery;
 }
コード例 #3
0
 /**
  * Translates a query into an extbase query
  *
  * @param Tx_PtExtlist_Domain_QueryObject_Query $query
  * @param \TYPO3\CMS\Extbase\Persistence\Repository $repository
  * @return \TYPO3\CMS\Extbase\Persistence\Generic\Query
  */
 public static function interpretQueryByRepository(Tx_PtExtlist_Domain_QueryObject_Query $query, \TYPO3\CMS\Extbase\Persistence\Repository $repository)
 {
     $emptyExtbaseQuery = $repository->createQuery();
     /* @var $emptyExtbaseQuery \TYPO3\CMS\Extbase\Persistence\Generic\Query */
     $constrainedExtbaseQuery = self::setAllCriteriasOnExtBaseQueryByQueryObject($query, $emptyExtbaseQuery, $repository);
     $limitedExtbaseQuery = self::setLimitOnExtBaseQueryByQueryObject($query, $constrainedExtbaseQuery);
     $orderedExtbaseQuery = self::setSortingOnExtBaseQueryByQueryObject($query, $limitedExtbaseQuery);
     return $orderedExtbaseQuery;
 }
コード例 #4
0
ファイル: AddTest.php プロジェクト: samuweiss/TYPO3-Site
 /**
  * @test
  */
 public function addSimpleObjectTest()
 {
     $newBlogTitle = 'aDi1oogh';
     $newBlog = $this->objectManager->create('ExtbaseTeam\\BlogExample\\Domain\\Model\\Blog');
     $newBlog->setTitle($newBlogTitle);
     /** @var \ExtbaseTeam\BlogExample\Domain\Repository\BlogRepository $blogRepository */
     $this->blogRepository->add($newBlog);
     $this->persistentManager->persistAll();
     $newBlogCount = $this->getDatabaseConnection()->exec_SELECTcountRows('*', 'tx_blogexample_domain_model_blog', 'title = \'' . $newBlogTitle . '\'');
     $this->assertSame(1, $newBlogCount);
 }
コード例 #5
0
 /**
  * Constructor of the repository.
  * Sets the respect storage page to false.
  * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager
  */
 public function __construct(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager)
 {
     parent::__construct($objectManager);
     $this->defaultQuerySettings = new \TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings();
     $this->defaultQuerySettings->setRespectStoragePage(false);
     $this->defaultQuerySettings->setRespectSysLanguage(false);
 }
コード例 #6
0
 /**
  * Constructor of the repository.
  * Sets the respect storage page to false.
  * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager
  */
 public function __construct()
 {
     parent::__construct(\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'));
     $this->defaultQuerySettings = new \TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings();
     $this->defaultQuerySettings->setRespectStoragePage(false);
     $this->defaultQuerySettings->setRespectSysLanguage(false);
 }
コード例 #7
0
 /**
  * All Queries withoud storagePID
  *
  * @return Tx_Extbase_Persistence_QueryInterface
  */
 public function createQuery()
 {
     $query = parent::createQuery();
     $query->getQuerySettings()->setRespectStoragePage(FALSE);
     $query->getQuerySettings()->setRespectSysLanguage(FALSE);
     return $query;
 }
コード例 #8
0
 /**
  * Initialize the repository for unrestricted access to page language overlays
  *
  * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager
  * @return void
  */
 public function __construct(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager)
 {
     parent::__construct($objectManager);
     $querySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Typo3QuerySettings');
     $querySettings->setRespectStoragePage(FALSE);
     $querySettings->setRespectSysLanguage(FALSE);
     $this->setDefaultQuerySettings($querySettings);
 }
コード例 #9
0
 /**
  * Overwrites createQuery method to overwrite storage pid
  */
 public function createQuery()
 {
     $query = parent::createQuery();
     if ($this->bookmarkStoragePid > 0) {
         $query->getQuerySettings()->setRespectStoragePage(FALSE);
     }
     return $query;
 }
コード例 #10
0
 /**
  * @param null $pageUid
  *
  * @return \TYPO3\CMS\Extbase\Persistence\QueryInterface
  */
 public function createQuery($pageUid = NULL)
 {
     $query = parent::createQuery();
     if ($pageUid !== NULL) {
         $query->getQuerySettings()->setStoragePageIds(array($pageUid));
     }
     return $query;
 }
コード例 #11
0
 /**
  * @param Elector $object
  */
 public function remove($object)
 {
     foreach ($object->getElectorates() as $electorate) {
         $electorate->removeElector($object);
         $this->electorateRepository->update($electorate);
     }
     parent::remove($object);
 }
コード例 #12
0
ファイル: RepositoryTest.php プロジェクト: plan2net/TYPO3.CMS
 /**
  * @test
  */
 public function magicCallMethodReturnsNullInFindOneBySomethingIfQueryReturnsEmptyRawResult()
 {
     $queryResultArray = array();
     $this->mockQuery->expects($this->once())->method('equals')->with('foo', 'bar')->will($this->returnValue('matchCriteria'));
     $this->mockQuery->expects($this->once())->method('matching')->with('matchCriteria')->will($this->returnValue($this->mockQuery));
     $this->mockQuery->expects($this->once())->method('setLimit')->with(1)->will($this->returnValue($this->mockQuery));
     $this->mockQuery->expects($this->once())->method('execute')->will($this->returnValue($queryResultArray));
     $this->assertNull($this->repository->findOneByFoo('bar'));
 }
コード例 #13
0
 /**
  * @return void
  */
 protected function setDefaultOrderings()
 {
     $orderBy = $orderDir = '';
     if ($this->request->hasArgument('orderBy') && in_array($this->request->getArgument('orderBy'), $this->allowedOrderBy)) {
         $orderBy = $this->request->getArgument('orderBy');
     }
     if ($this->request->hasArgument('orderDir') && ($this->request->getArgument('orderDir') == \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING || $this->request->getArgument('orderDir') == \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING)) {
         $orderDir = $this->request->getArgument('orderDir');
     } elseif ($this->settings['orderDir'] == \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING || $this->settings['orderDir'] == \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING) {
         $orderDir = $this->settings['orderDir'];
     }
     if (empty($orderDir)) {
         $orderDir = \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING;
     }
     if ($orderBy) {
         $defaultOrderings = array_merge(array($orderBy => $orderDir), (array) $this->settings['orderings']);
         $this->repository->setDefaultOrderings($defaultOrderings);
     }
 }
コード例 #14
0
ファイル: WordRepository.php プロジェクト: olek07/GiGaBonus
 /**
  * Constructor
  *
  * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager
  */
 public function __construct(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager = NULL)
 {
     // Get the object manager
     if ($objectManager === NULL) {
         $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
     }
     parent::__construct($objectManager);
     // Get an instance of the session storage handler
     $this->sessionStorage = $this->objectManager->get('SJBR\\SrFreecap\\Domain\\Session\\SessionStorage');
 }
コード例 #15
0
ファイル: AddTest.php プロジェクト: khanhdeux/typo3test
 /**
  * @test
  */
 public function addObjectSetsDefinedLanguageTest()
 {
     $newBlogTitle = 'aDi1oogh';
     $newBlog = $this->objectManager->get('ExtbaseTeam\\BlogExample\\Domain\\Model\\Blog');
     $newBlog->setTitle($newBlogTitle);
     $newBlog->_setProperty('_languageUid', -1);
     /** @var \ExtbaseTeam\BlogExample\Domain\Repository\BlogRepository $blogRepository */
     $this->blogRepository->add($newBlog);
     $this->persistentManager->persistAll();
     $newBlogRecord = $this->getDatabaseConnection()->exec_SELECTgetSingleRow('*', 'tx_blogexample_domain_model_blog', 'title = \'' . $newBlogTitle . '\'');
     $this->assertEquals(-1, $newBlogRecord['sys_language_uid']);
 }
コード例 #16
0
 /**
  * @test
  */
 public function orderingByTitleRespectsEnglishTitles()
 {
     $query = $this->postRepository->createQuery();
     $querySettings = $query->getQuerySettings();
     $querySettings->setStoragePageIds(array(1));
     $querySettings->setRespectSysLanguage(TRUE);
     $querySettings->setLanguageUid(1);
     $query->setOrderings(array('title' => QueryInterface::ORDER_ASCENDING));
     /** @var Post[] $posts */
     $posts = $query->execute()->toArray();
     $this->assertCount(3, $posts);
     $this->assertSame('A EN:Post2', $posts[0]->getTitle());
     $this->assertSame('B EN:Post1', $posts[1]->getTitle());
     $this->assertSame('Post3', $posts[2]->getTitle());
 }
コード例 #17
0
 /**
  * Action List
  *
  * @return void
  */
 public function listAction()
 {
     $this->view->setVariablesToRender([$this->resourceArgumentName . 's']);
     $this->view->assign($this->resourceArgumentName . 's', $this->resourceRepository->findAll());
 }
コード例 #18
0
 /**
  * Update the object immediately in DB. This is used for time-sensitive operation such as locks.
  * @param object $modifiedObject
  */
 public function updateNow($modifiedObject)
 {
     parent::update($modifiedObject);
     $this->persistenceManager->persistAll();
 }
コード例 #19
0
 /**
  * Overwrite createQuery to don't respect enable fields
  *
  * @return \TYPO3\CMS\Extbase\Persistence\QueryInterface
  */
 public function createQuery()
 {
     $query = parent::createQuery();
     $query->getQuerySettings()->setIgnoreEnableFields(TRUE);
     return $query;
 }
コード例 #20
0
 /**
  * Find all ordered by the localized name
  *
  * @param string $orderDirection may be "asc" or "desc". Default is "asc".
  * @return \TYPO3\CMS\Extbase\Persistence\QueryResultInterface|array all entries ordered by localized name
  */
 protected function findAllOrderedByLocalizedName($orderDirection = 'asc')
 {
     $entities = parent::findAll();
     return $this->localizedSort($entities, $orderDirection);
 }
コード例 #21
0
ファイル: DocumentRepository.php プロジェクト: tritumRz/rest
 /**
  * Returns a query for objects of this repository
  *
  * @return \TYPO3\CMS\Extbase\Persistence\QueryInterface
  * @api
  */
 public function createQuery()
 {
     $query = parent::createQuery();
     $querySettings = $query->getQuerySettings();
     $querySettings->setRespectSysLanguage(FALSE);
     $querySettings->setRespectStoragePage(FALSE);
     if (method_exists($querySettings, 'setReturnRawQueryResult')) {
         $querySettings->setReturnRawQueryResult($this->useRawQueryResults);
     }
     return $query;
 }
コード例 #22
0
 /**
  * Creates query and makes sure that no Extbase magic is performed with
  * pid, languages, etc.
  *
  * Magic is cool but not on this case.
  *
  * @return \TYPO3\CMS\Extbase\Persistence\QueryInterface
  */
 public function createQuery()
 {
     $query = parent::createQuery();
     $query->getQuerySettings()->setRespectStoragePage(false)->setIgnoreEnableFields(true)->setRespectSysLanguage(false);
     return $query;
 }
コード例 #23
0
 /**
  * call an event before adding an event to the repo
  * 
  * @see Classes/Persistence/Tx_Extbase_Persistence_Repository::add()
  */
 public function add($object)
 {
     $object->preCreate();
     parent::add($object);
 }
コード例 #24
0
ファイル: DocumentRepository.php プロジェクト: pkerling/rest
 /**
  * Returns a query for objects of this repository
  *
  * @return \TYPO3\CMS\Extbase\Persistence\QueryInterface
  * @api
  */
 public function createQuery()
 {
     $query = parent::createQuery();
     $query->getQuerySettings()->setRespectSysLanguage(FALSE);
     $query->getQuerySettings()->setRespectStoragePage(FALSE);
     $query->getQuerySettings()->setReturnRawQueryResult($this->useRawQueryResults);
     return $query;
     $query = $this->persistenceManager->createQueryForType($this->objectType);
     if ($this->defaultOrderings !== array()) {
         $query->setOrderings($this->defaultOrderings);
     }
     if ($this->defaultQuerySettings !== NULL) {
         $query->setQuerySettings(clone $this->defaultQuerySettings);
     }
     $query->getQuerySettings()->setRespectSysLanguage(FALSE);
     $query->getQuerySettings()->setRespectStoragePage(FALSE);
     $query->getQuerySettings()->setReturnRawQueryResult($this->useRawQueryResults);
     return $query;
 }
コード例 #25
0
 /**
  * @param object $object
  */
 public function add($object)
 {
     $this->internalObjectCounter++;
     parent::add($object);
     if ($this->internalObjectCounter % $this->persistCacheAfterItems === 0) {
         $this->persistenceManager->persistAll();
     }
 }
コード例 #26
0
ファイル: AbstractRepository.php プロジェクト: rabe69/yag
 /**
  * (non-PHPdoc)
  * @see \TYPO3\CMS\Extbase\Persistence\Repository::update()
  */
 public function update($modifiedObject)
 {
     parent::update($modifiedObject);
     $this->objectManager->get('Tx_Yag_PageCache_PageCacheManager')->markObjectUpdated($modifiedObject);
 }
コード例 #27
0
 /**
  * @param  $fileObject
  * @param string $key
  * @return \TYPO3\CMS\Extbase\Error\Error|void
  * @throws \Exception
  */
 public function add($fileObject, $key = '')
 {
     $baseStoragePath = $this->getBaseStoragePath($key);
     if ($fileObject->getIsSaved() == false) {
         $relativeDestinationPath = $this->getRelativeDestinationPath($fileObject, $baseStoragePath);
         $destinationFilename = $this->getDestinationFilename($fileObject);
         $results = $this->moveToDestination($relativeDestinationPath, $destinationFilename, $fileObject, true);
         if ($results instanceof \TYPO3\CMS\Extbase\Error\Error) {
             return $results;
         } else {
             $fileObject->setIsSaved(true);
             return parent::add($fileObject);
         }
     } else {
         return parent::add($fileObject);
     }
 }
コード例 #28
0
 /**
  *
  */
 public function __construct()
 {
     $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
     parent::__construct($objectManager);
 }
コード例 #29
0
 /**
  * Adds the incoming pair to the persistence layer
  *
  * @param PairInterface $pair Pair to persist
  *
  * @return void
  *
  * @throws IllegalObjectTypeException If incoming object is not of expected type
  */
 public function attach(PairInterface $pair)
 {
     parent::add($pair);
 }