/**
  * @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();
 }
Exemple #2
0
 /**
  * カートに保存されている商品の 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());
 }
Exemple #3
0
 /**
  * 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;
 }
Exemple #4
0
 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;
 }
Exemple #7
0
 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);
     }
 }
Exemple #15
0
 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;
 }
Exemple #16
0
 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];
 }
Exemple #18
0
 /**
  * {@inheritDoc}
  *
  * @static 
  */
 public static function getFilters()
 {
     return \Doctrine\ORM\EntityManager::getFilters();
 }
Exemple #19
0
 /**
  * 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);
         }
     }
 }