/** * Constructs the Property Mapper. */ public function __construct() { // TODO Clean up this dependencies; inject the instance $objectManager = t3lib_div::makeInstance('Tx_Extbase_Object_Manager'); $this->validatorResolver = t3lib_div::makeInstance('Tx_Extbase_Validation_ValidatorResolver'); $this->validatorResolver->injectObjectManager($objectManager); $this->persistenceManager = Tx_Extbase_Dispatcher::getPersistenceManager(); $this->queryFactory = t3lib_div::makeInstance('Tx_Extbase_Persistence_QueryFactory'); }
/** * Constructs a new Repository * */ public function __construct() { $this->identityMap = t3lib_div::makeInstance('Tx_Extbase_Persistence_IdentityMap'); $this->addedObjects = new Tx_Extbase_Persistence_ObjectStorage(); $this->removedObjects = new Tx_Extbase_Persistence_ObjectStorage(); $this->queryFactory = t3lib_div::makeInstance('Tx_Extbase_Persistence_QueryFactory'); // singleton $this->persistenceManager = Tx_Extbase_Dispatcher::getPersistenceManager(); $this->persistenceManager->registerRepositoryClassName($this->getRepositoryClassName()); $this->objectType = str_replace(array('_Repository_', 'Repository'), array('_Model_', ''), $this->getRepositoryClassName()); }
/** * Populate this proxy by asking the $population closure. * * @return object The instance (hopefully) returned */ public function _loadRealInstance() { // this check safeguards against a proxy being activated multiple times // usually that does not happen, but if the proxy is held from outside // it's parent... the result would be weird. if ($this->parentObject->_getProperty($this->propertyName) instanceof Tx_Extbase_Persistence_LazyLoadingProxy) { $dataMapper = Tx_Extbase_Dispatcher::getPersistenceManager()->getBackend()->getDataMapper(); $objects = $dataMapper->fetchRelated($this->parentObject, $this->propertyName, $this->fieldValue, FALSE, FALSE); $propertyValue = $dataMapper->mapResultToPropertyValue($this->parentObject, $this->propertyName, $objects); $this->parentObject->_setProperty($this->propertyName, $propertyValue); $this->parentObject->_memorizeCleanState($this->propertyName); return $propertyValue; } else { return $this->parentObject->_getProperty($this->propertyName); } }
/** * Creates a query object working on the given class name * * @param string $className The class name * @return Tx_Extbase_Persistence_QueryInterface */ public function create($className) { $persistenceManager = Tx_Extbase_Dispatcher::getPersistenceManager(); $reflectionService = $persistenceManager->getBackend()->getReflectionService(); $dataMapFactory = t3lib_div::makeInstance('Tx_Extbase_Persistence_Mapper_DataMapFactory'); $dataMapFactory->injectReflectionService($reflectionService); $dataMapper = t3lib_div::makeInstance('Tx_Extbase_Persistence_Mapper_DataMapper'); $dataMapper->injectIdentityMap($persistenceManager->getBackend()->getIdentityMap()); $dataMapper->injectSession($persistenceManager->getSession()); $dataMapper->injectReflectionService($reflectionService); $dataMapper->injectDataMapFactory($dataMapFactory); $querySettings = t3lib_div::makeInstance('Tx_Extbase_Persistence_Typo3QuerySettings'); $query = t3lib_div::makeInstance('Tx_Extbase_Persistence_Query', $className); $query->injectPersistenceManager($persistenceManager); $query->injectDataMapper($dataMapper); $query->setQuerySettings($querySettings); return $query; }
/** * Initializes objects this class depends on * * @return void */ protected function initializeObjects() { $this->objectManager = t3lib_div::makeInstance('Tx_Extbase_Object_Manager'); $this->arguments = t3lib_div::makeInstance('Tx_Extbase_MVC_Controller_Arguments'); $this->arguments->injectPersistenceManager(Tx_Extbase_Dispatcher::getPersistenceManager()); $this->arguments->injectQueryFactory(t3lib_div::makeInstance('Tx_Extbase_Persistence_QueryFactory')); }
/** * Counts the elements in the storage array * * @return int The number of elements in the ObjectStorage */ public function count() { $dataMapper = Tx_Extbase_Dispatcher::getPersistenceManager()->getBackend()->getDataMapper(); $columnMap = $dataMapper->getDataMap(get_class($this->parentObject))->getColumnMap($this->propertyName); $numberOfElements = NULL; if ($columnMap->getTypeOfRelation() === Tx_Extbase_Persistence_Mapper_ColumnMap::RELATION_HAS_MANY) { $numberOfElements = $dataMapper->countRelated($this->parentObject, $this->propertyName, $this->fieldValue); } else { $this->initialize(); $numberOfElements = count($this->storage); } if (is_null($numberOfElements)) { throw new Tx_Extbase_Persistence_Exception('The number of elements could not be determined.', 1252514486); } return $numberOfElements; }