/** * @param PlatformContentItemDetailsEvent $event * * @DI\Observe("administration_analytics_platform_content_item_details_portfolio") */ public function onPlatformContentItemDetailsPortfolio(PlatformContentItemDetailsEvent $event) { $this->entityManager->getFilters()->disable('softdeleteable'); $countPortfolio = $this->portfolioManager->countAll(); $countDeletedPortfolio = $this->portfolioManager->countAllDeleted(); $countClosedPortfolio = 0; $countOpenPortfolio = 0; $countPrivatePortfolio = 0; $countPlatformPortfolio = 0; $countPortfolioByVisibilityStatuss = $this->portfolioManager->countAllByVisibilityStatus(); foreach ($countPortfolioByVisibilityStatuss as $countPortfolioByVisibilityStatus) { switch ($countPortfolioByVisibilityStatus['visibility']) { case Portfolio::VISIBILITY_NOBODY: $countClosedPortfolio = $countPortfolioByVisibilityStatus['number']; break; case Portfolio::VISIBILITY_EVERYBODY: $countOpenPortfolio = $countPortfolioByVisibilityStatus['number']; break; case Portfolio::VISIBILITY_USER: $countPrivatePortfolio = $countPortfolioByVisibilityStatus['number']; break; case Portfolio::VISIBILITY_PLATFORM_USER: $countPlatformPortfolio = $countPortfolioByVisibilityStatus['number']; break; default: throw new \Exception(); //not supposed to happen, but hey who knows ;-) } } $countPortfolioByVisibilityStatusGraphData = [['name' => 'closed_mode_portfolio', 'value' => $countClosedPortfolio], ['name' => 'open_mode_portfolio', 'value' => $countOpenPortfolio], ['name' => 'private_mode_portfolio', 'value' => $countPrivatePortfolio], ['name' => 'platform_mode_portfolio', 'value' => $countPlatformPortfolio]]; $event->setContent($this->twig->render('IcapPortfolioBundle:analytics:platform_content_item_details.html.twig', ['countPortfolio' => $countPortfolio, 'countClosedPortfolio' => $countClosedPortfolio, 'countOpenPortfolio' => $countOpenPortfolio, 'countPrivatePortfolio' => $countPrivatePortfolio, 'countPlatformPortfolio' => $countPlatformPortfolio, 'countDeletedPortfolio' => $countDeletedPortfolio, 'portfolioRepartitionStatuss' => $countPortfolioByVisibilityStatusGraphData])); $event->stopPropagation(); }
/** * カートに保存されている商品の ProductClass エンティティを読み込み、カートへ設定します。 */ protected function loadProductClassFromCart() { /* @var $softDeleteFilter \Eccube\Doctrine\Filter\SoftDeleteFilter */ $softDeleteFilter = $this->entityManager->getFilters()->getFilter('soft_delete'); $softDeleteFilter->setExcludes(array('Eccube\\Entity\\ProductClass')); foreach ($this->cart->getCartItems() as $CartItem) { $this->loadProductClassFromCartItem($CartItem); } $softDeleteFilter->setExcludes(array()); }
/** * Sets a parameter that can be used by the filter. * * @param string $name Name of the parameter. * @param string $value Value of the parameter. * @param string|null $type The parameter type. If specified, the given value will be run through * the type conversion of this type. This is usually not needed for * strings and numeric types. * * @return SQLFilter The current SQL filter. */ public final function setParameter($name, $value, $type = null) { if (null === $type) { $type = ParameterTypeInferer::inferType($value); } $this->parameters[$name] = array('value' => $value, 'type' => $type); // Keep the parameters sorted for the hash ksort($this->parameters); // The filter collection of the EM is now dirty $this->em->getFilters()->setFiltersStateDirty(); return $this; }
protected function setUp() { self::bootKernel(); $this->em = static::$kernel->getContainer()->get('doctrine')->getManager(); $this->revisionManager = static::$kernel->getContainer()->get('opifer.revisions.revision_manager'); $driver = new AnnotationDriver(new AnnotationReader(), [__DIR__ . '/Entity']); $this->em->getConfiguration()->setMetadataDriverImpl($driver); $this->em->getFilters()->enable('draft'); $this->em->getFilters()->disable('softdeleteable'); $schemaTool = new SchemaTool($this->em); $schemaTool->createSchema($this->getClasses()); }
public function onKernelController(FilterControllerEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } if ($this->tenantResolver->getStrategy() === TenantResolver::STRATEGY_TENANT_AWARE_SUBDOMAIN && false === $this->tenantResolver->isSubdomain()) { return; } $tenantId = $this->tenantResolver->getTenantId(); if ($tenantId) { $this->entityManager->getFilters()->enable('tenantAware')->setParameter('tenantId', $tenantId); } }
/** * {@inheritdoc} * * @throws InvalidConfigurationException if the parameter name is missing * @throws AccessDeniedHttpException if the current user is not authenticated */ public function apply(Request $request, ParamConverter $configuration) { $slug = $request->attributes->get('slug'); $options = $configuration->getOptions(); if (isset($options['check_deleted']) && !$options['check_deleted']) { $this->entityManager->getFilters()->disable('softdeleteable'); } $badge = $this->badgeRepository->findBySlug($slug); if (null === $badge) { throw new NotFoundHttpException(); } $parameterName = $configuration->getName(); $request->attributes->set($parameterName, $badge); return true; }
public function restartDoctrine() { $enabled_filters = array(); if (isset($this->entity_manager)) { $filters = $this->entity_manager->getFilters(); foreach ($filters->getEnabledFilters() as $filter_name => $filter) { $filter_class = get_class($filter); $enabled_filters[$filter_name] = array($filter_class => $filter->__toString()); } @$this->entity_manager->close(); unset($this->entity_manager); } $em = $this->getDoctrine(); foreach ($enabled_filters as $filter_name => $filter) { foreach ($filter as $filter_class => $filter_params_string) { $em->getConfiguration()->addFilter($filter_name, $filter_class); $this_filter = $em->getFilters()->enable($filter_name); $filter_params = @unserialize($filter_params_string); if ($filter_params) { foreach ($filter_params as $filter_param => $filter_value) { if (isset($filter_value['value'])) { $this_filter->setParameter($filter_param, $filter_value['value']); } } } } } }
/** * Enable the NodePublicationFilter when not in the backoffice.. */ public function onKernelRequest() { $token = $this->tokenStorage->getToken(); if (!$token) { return; } if (!$token instanceof UsernamePasswordToken) { return; } if ($token->getProviderKey() != 'backoffice') { return; } /** @var NodePublicationFilter $filter */ $filter = $this->entityManager->getFilters()->enable('node_publication_filter'); $filter->setApplyPublication(false); }
/** * Get the Doctrine EntityManager * * @return \Doctrine\ORM\EntityManager */ public function getEntityManager() { if ($this->entityManager !== null) { return $this->entityManager; } Tx_Doctrine2_ExtbaseBootstrap::bootstrapAutoloading(); // Dev Mode decides if proxies are auto-generated every request // and what kind of cache is used for the metadata. $isDevMode = self::getDevMode(); $config = new \Doctrine\ORM\Configuration(); if ($isDevMode) { $config->setAutoGenerateProxyClasses(true); } $config->setProxyDir(PATH_site . 'typo3temp/doctrine2'); $config->setProxyNamespace('TxDoctrine2Proxies'); $cache = $this->createCache($isDevMode); $config->setMetadataCacheImpl($cache); $config->setQueryCacheImpl($cache); $paths = $this->getEntityDirectories(); $driverImpl = $config->newDefaultAnnotationDriver($paths); $config->setMetadataDriverImpl($driverImpl); $config->addFilter('enableFields', 'Tx_Doctrine2_Persistence_EnableFieldsFilter'); if (!\Doctrine\DBAL\Types\Type::hasType('timestamp')) { \Doctrine\DBAL\Types\Type::addType('timestamp', 'Tx_Doctrine2_Types_TimestampType'); } $dbParams = $this->getDatabaseParams(); $evm = $this->createEventManager(); $this->entityManager = \Doctrine\ORM\EntityManager::create($dbParams, $config, $evm); $this->entityManager->getFilters('enableFields')->enable('enableFields'); if ($this->objectManager instanceof Tx_Doctrine2_ObjectManager) { $this->objectManager->setEntityManager($this->entityManager); } return $this->entityManager; }
/** * Get EntityManage for DataBase * @param String dataBase * @return EntityManager */ public function getEntityManager($dataBase = null) { try { if (isset(self::$entityManager)) { return self::$entityManager; } else { $conn = $this->getConn($dataBase); $config = $this->getConfig(); self::$entityManager = EntityManager::create($conn, $config); foreach ($this->filters as $filter) { self::$entityManager->getFilters()->enable($filter); } } } catch (\Exception $e) { echo $e->getMessage(); die; } return self::$entityManager; }
/** * Enable filters for an given entity manager * * @param EntityManager $entityManager * * @return null */ private function enableFilters(EntityManager $entityManager) { if (empty($this->enabledFilters)) { return; } $filterCollection = $entityManager->getFilters(); foreach ($this->enabledFilters as $filter) { $filterCollection->enable($filter); } }
/** * Let the filterhelper configure the doctrine filters and * pass the appropriate parameters. * * @param $filters */ public function loadFilters($filters) { $config = $this->entityManager->getConfiguration(); foreach ($filters as $filterNamespace => $properties) { if (!is_array($properties)) { $filterNamespace = $properties; } $filterAlias = $this->generateFilterName($filterNamespace); if (in_array($filterNamespace, $this->entityManager->getFilters()->getEnabledFilters())) { continue; } $config->addFilter($filterAlias, $filterNamespace); $filter = $this->entityManager->getFilters()->enable($filterAlias); if (is_array($properties)) { foreach ($properties as $key => $value) { $filter->setParameter($key, $value); } } } }
/** * Enable filters for an given entity manager * * @param EntityManager $entityManager * * @return null */ private function enableFilters(EntityManager $entityManager) { if (empty($this->enabledFilters)) { return; } $filterCollection = $entityManager->getFilters(); foreach ($this->enabledFilters as $filter) { $filterObject = $filterCollection->enable($filter); if (null !== $filterObject) { $this->setFilterParameters($filter, $filterObject); } } }
/** * insert dtb_csv * * @param EntityManager $em */ private function dtb_csv(EntityManager $em) { $filter = $em->getFilters()->getFilter('soft_delete'); $filter->setExcludes(array('Eccube\\Entity\\Member')); $CsvType = $em->getRepository('Eccube\\Entity\\Master\\CsvType')->find(CsvType::CSV_TYPE_PRODUCT); $Member = $em->getRepository('Eccube\\Entity\\Member')->find(1); $Csv = $em->getRepository('Eccube\\Entity\\Csv')->findOneBy(array('CsvType' => $CsvType), array('rank' => 'DESC')); $rank = $Csv->getRank(); foreach ($this->csv_datas as $data) { $rank++; $Csv = new Csv(); $Csv->setCsvType($CsvType)->setCreator($Member)->setEntityName($data['entity_name'])->setFieldName($data['field_name'])->setReferenceFieldName($data['reference_field_name'])->setDispName($data['disp_name'])->setRank($rank)->setEnableFlg(Constant::ENABLED); $em->persist($Csv); } }
public function getCart() { /* @var $softDeleteFilter \Eccube\Doctrine\Filter\SoftDeleteFilter */ $softDeleteFilter = $this->entityManager->getFilters()->getFilter('soft_delete'); $softDeleteFilter->setExcludes(array('Eccube\\Entity\\ProductClass')); foreach ($this->cart->getCartItems() as $CartItem) { $ProductClass = $this->entityManager->getRepository($CartItem->getClassName())->find($CartItem->getClassId()); // 商品情報が削除されたらカートからも削除 if ($ProductClass->getDelFlg() == Constant::DISABLED) { $CartItem->setObject($ProductClass); } else { $this->setError('cart.product.delete'); $this->removeProduct($ProductClass->getId()); } } return $this->cart; }
public function getCart() { /* @var $softDeleteFilter \Eccube\Doctrine\Filter\SoftDeleteFilter */ $softDeleteFilter = $this->entityManager->getFilters()->getFilter('soft_delete'); $softDeleteFilter->setExcludes(array('Eccube\\Entity\\ProductClass')); foreach ($this->cart->getCartItems() as $CartItem) { $ProductClass = $this->entityManager->getRepository($CartItem->getClassName())->find($CartItem->getClassId()); $stockUnlimited = $ProductClass->getStockUnlimited(); if ($ProductClass->getDelFlg() == Constant::DISABLED) { // 商品情報が有効 if ($stockUnlimited == Constant::DISABLED && $ProductClass->getStock() < 1) { // 在庫がなければカートから削除 $this->setError('cart.zero.stock'); $this->removeProduct($ProductClass->getId()); } else { $quantity = $CartItem->getQuantity(); $saleLimit = $ProductClass->getSaleLimit(); if ($stockUnlimited == Constant::DISABLED && $ProductClass->getStock() < $quantity) { // 在庫数が購入数を超えている場合、メッセージを表示 $this->setError('cart.over.stock'); } else { if (!is_null($saleLimit) && $saleLimit < $quantity) { // 販売制限数が購入数を超えている場合、メッセージを表示 $this->setError('cart.over.sale_limit'); } } // カートに追加 $CartItem->setObject($ProductClass); } } else { // 商品情報が削除されていたらエラー $this->setError('cart.product.delete'); // カートから削除 $this->removeProduct($ProductClass->getId()); } } return $this->cart; }
/** * рефанд всех показов с площадок заданного паблишера * * @param User $publisher */ public function refundAllFromPublisher(User $publisher) { $platforms = $this->em->getRepository('VifeedPlatformBundle:Platform')->findByUserIndexed($publisher, true); $chargePublisherSum = 0; $payAdvertiserSum = 0; if ($platforms) { $userRepo = $this->em->getRepository('VifeedUserBundle:User'); $filter = $this->em->getFilters()->getFilter('softdeleteable'); $filter->disableForEntity('Vifeed\\CampaignBundle\\Entity\\Campaign'); $refundGroups = $this->em->getRepository('VifeedPaymentBundle:VideoViewPayment')->createQueryBuilder('p')->select('IDENTITY(c.user) user_id, SUM(p.charged) charged, SUM(p.paid) paid, COUNT(v.id) paid_views')->innerJoin('p.videoView', 'v')->innerJoin('v.campaign', 'c')->where('v.platform IN (:platforms)')->groupBy('user_id')->setParameter('platforms', $platforms)->getQuery()->getResult(); $filter->enableForEntity('Vifeed\\CampaignBundle\\Entity\\Campaign'); $this->em->beginTransaction(); try { foreach ($refundGroups as $refundGroup) { $advertiser = $this->em->getReference('VifeedUserBundle:User', $refundGroup['user_id']); $userRepo->updateBalance($advertiser, $refundGroup['charged']); $chargePublisherSum += $refundGroup['paid']; $payAdvertiserSum += $refundGroup['charged']; } $userRepo->updateBalance($publisher, -$chargePublisherSum); $this->em->getRepository('VifeedVideoViewBundle:VideoView')->createQueryBuilder('v')->update('VifeedVideoViewBundle:VideoView', 'v')->set('v.isPaid', ':isPaid')->set('v.isInStats', ':isInStats')->where('v.platform IN (:platforms)')->setParameters(['platforms' => $platforms, 'isPaid' => false, 'isInStats' => false])->getQuery()->execute(); $this->em->getRepository('VifeedPaymentBundle:VideoViewPayment')->createQueryBuilder('p')->delete('VifeedPaymentBundle:VideoViewPayment', 'p')->where('p.videoView IN (select v from VifeedVideoViewBundle:VideoView v where v.platform IN (:platforms))')->setParameter('platforms', $platforms)->getQuery()->execute(); // пересчитываем количество показов и просмотров // todo: можно оптимизировать - считать только кампании выбранных юзеров $sqlQuery = 'UPDATE campaign c SET c.total_views = (SELECT COUNT(1) FROM video_views v WHERE v.campaign_id = c.id AND v.is_in_stats=1), c.paid_views = (SELECT COUNT(1) FROM video_views v WHERE v.campaign_id = c.id AND v.is_in_stats=1 AND v.is_paid=1)'; $this->em->getConnection()->executeQuery($sqlQuery); $this->em->commit(); } catch (\Exception $e) { $this->em->rollback(); throw $e; } } return ['charged' => $chargePublisherSum, 'paid' => $payAdvertiserSum]; }
/** * {@inheritDoc} * * @static */ public static function getFilters() { return \Doctrine\ORM\EntityManager::getFilters(); }
/** * Generates the filter SQL for a given entity and table alias. * * @param ClassMetadata $targetEntity Metadata of the target entity. * @param string $targetTableAlias The table alias of the joined/selected table. * * @return string The SQL query part to add to a query. */ private function generateFilterConditionSQL(ClassMetadata $targetEntity, $targetTableAlias) { if (!$this->em->hasFilters()) { return ''; } switch ($targetEntity->inheritanceType) { case ClassMetadata::INHERITANCE_TYPE_NONE: break; case ClassMetadata::INHERITANCE_TYPE_JOINED: // The classes in the inheritance will be added to the query one by one, // but only the root node is getting filtered if ($targetEntity->name !== $targetEntity->rootEntityName) { return ''; } break; case ClassMetadata::INHERITANCE_TYPE_SINGLE_TABLE: // With STI the table will only be queried once, make sure that the filters // are added to the root entity $targetEntity = $this->em->getClassMetadata($targetEntity->rootEntityName); break; default: //@todo: throw exception? return ''; break; } $filterClauses = array(); foreach ($this->em->getFilters()->getEnabledFilters() as $filter) { if ('' !== ($filterExpr = $filter->addFilterConstraint($targetEntity, $targetTableAlias))) { $filterClauses[] = '(' . $filterExpr . ')'; } } return implode(' AND ', $filterClauses); }
public function onKernelRequest() { $filter = $this->em->getFilters()->enable('state_filter'); $this->setReaderToFilter($filter, $this->reader); }
public function let(EntityManager $em, ClassMetadata $classMetadata, FilterCollection $collection) { $em->getFilters()->willReturn($collection); $this->beConstructedWith($em, $classMetadata); }
/** * Generates the filter SQL for a given entity and table alias. * * @param ClassMetadata $targetEntity Metadata of the target entity. * @param string $targetTableAlias The table alias of the joined/selected table. * * @return string The SQL query part to add to a query. */ protected function generateFilterConditionSQL(ClassMetadata $targetEntity, $targetTableAlias) { $filterClauses = array(); foreach ($this->em->getFilters()->getEnabledFilters() as $filter) { if ('' !== $filterExpr = $filter->addFilterConstraint($targetEntity, $targetTableAlias)) { $filterClauses[] = '(' . $filterExpr . ')'; } } $sql = implode(' AND ', $filterClauses); return $sql ? "(" . $sql . ")" : ""; // Wrap again to avoid "X or Y and FilterConditionSQL" }
public function testGetFilter() { $filterCollection = $this->em->getFilters(); $filterCollection->enable('testFilter'); $this->assertInstanceOf('Doctrine\\Tests\\ORM\\Query\\MyFilter', $filterCollection->getFilter('testFilter')); }
/** * {@inheritdoc} */ public function getFilters() { return $this->wrapped->getFilters(); }
/** * Configures the Doctrine entity manager instance. * * @param array $doctrineConfig * @param EntityManager $entityManager */ protected function configureEntityManager(array $doctrineConfig, EntityManager $entityManager) { if (isset($doctrineConfig['filters'])) { foreach ($doctrineConfig['filters'] as $name => $filter) { if (!array_get($filter, 'enabled', false)) { continue; } $entityManager->getFilters()->enable($name); } } if (isset($doctrineConfig['types'])) { $databasePlatform = $entityManager->getConnection()->getDatabasePlatform(); foreach ($doctrineConfig['types'] as $name => $className) { Type::addType($name, $className); $databasePlatform->registerDoctrineTypeMapping($name, $name); } } }