예제 #1
0
 /**
  * DiffAbstract constructor.
  * @param ManagerRegistry $managerRegistry
  * @param int             $maxNbSpecimenPerPass
  */
 public function __construct(ManagerRegistry $managerRegistry, $maxNbSpecimenPerPass)
 {
     $this->maxNbSpecimenPerPass = $maxNbSpecimenPerPass;
     $this->managerRegistry = $managerRegistry;
     $this->emR = $managerRegistry->getManager('default');
     $this->emB = $managerRegistry->getManager('buffer');
 }
예제 #2
0
 private function prepareDatabase()
 {
     /** @var EntityManager $em */
     $em = $this->registry->getManager();
     $tool = new SchemaTool($em);
     $tool->createSchema($em->getMetadataFactory()->getAllMetadata());
 }
 public function onLexikjwtauthenticationOnjwtcreated(JWTCreatedEvent $event)
 {
     $em = $this->registry->getManager();
     $data = $event->getData();
     $data['wownewfield'] = 'muchcool';
     $event->setData($data);
 }
 /**
  * {@inheritdoc}
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     if ($options['em'] === null) {
         $em = $this->registry->getManagerForClass($options['class']);
     } else {
         $em = $this->registry->getManager($options['em']);
     }
     $repository = $em->getRepository($options['class']);
     $entities = $repository->findAll();
     /** @var ClassMetadataInfo $classMetadata */
     $classMetadata = $em->getClassMetadata($options['class']);
     $identifierField = $classMetadata->getSingleIdentifierFieldName();
     $choiceLabels = [];
     /** @var AddressType $entity */
     foreach ($entities as $entity) {
         $pkValue = $classMetadata->getReflectionProperty($identifierField)->getValue($entity);
         if ($options['property']) {
             $value = $classMetadata->getReflectionProperty($options['property'])->getValue($entity);
         } else {
             $value = (string) $entity;
         }
         $choiceLabels[$pkValue] = $this->translator->trans('orob2b.customer.customer_typed_address_with_default_type.choice.default_text', ['%type_name%' => $value]);
     }
     $builder->add('default', 'choice', ['choices' => $choiceLabels, 'multiple' => true, 'expanded' => true, 'label' => false])->addViewTransformer(new AddressTypeDefaultTransformer($em));
 }
 /**
  * @param ConsoleTerminateEvent $event
  */
 public function onConsoleTerminate(ConsoleTerminateEvent $event)
 {
     if ($event->getCommand() instanceof UpdateSchemaDoctrineCommand) {
         $output = $event->getOutput();
         $input = $event->getInput();
         if ($input->getOption('force')) {
             $result = $this->fulltextIndexManager->createIndexes();
             $output->writeln('Schema update and create index completed.');
             if ($result) {
                 $output->writeln('Indexes were created.');
             }
         }
     }
     if ($event->getCommand() instanceof UpdateSchemaCommand) {
         $entities = $this->registry->getRepository('OroSearchBundle:UpdateEntity')->findAll();
         if (count($entities)) {
             $em = $this->registry->getManager();
             foreach ($entities as $entity) {
                 $job = new Job(ReindexCommand::COMMAND_NAME, ['class' => $entity->getEntity()]);
                 $em->persist($job);
                 $em->remove($entity);
             }
             $em->flush($job);
         }
     }
 }
 /**
  * Checks the object is an instance of a given class.
  *
  * @param MarketingList $marketingList
  * @return bool
  */
 public function isApplicableOnMarketingList($marketingList)
 {
     if ($marketingList instanceof MarketingList) {
         return (bool) $this->registry->getManager()->getRepository('OroCRMMailChimpBundle:StaticSegment')->findOneBy(['marketingList' => $marketingList]);
     }
     return false;
 }
예제 #7
0
 /**
  * @param string $name
  *
  * @return \Doctrine\Common\Persistence\ObjectManager
  *
  * @throws \Exception
  */
 private function getObjectManager($name)
 {
     if (null === ($manager = $this->doctrine->getManager($name))) {
         throw new \Exception(sprintf('Can\'t find doctrine manager named "%s"'), $name);
     }
     return $manager;
 }
 /**
  * Updates a Token.
  *
  * @param Token   $token
  * @param Boolean $andFlush Whether to flush the changes (default true)
  */
 public function updateToken(Token $token, $andFlush = true)
 {
     $this->doctrine->getManager()->persist($token);
     if ($andFlush) {
         $this->doctrine->getManager()->flush();
     }
 }
예제 #9
0
 /**
  * @param string    $institutionCode
  * @param string    $collectionCode
  * @param User|null $user
  * @return Collection|AccessDeniedException
  */
 public function getCollection($institutionCode, $collectionCode, User $user = null)
 {
     $collection = $this->managerRegistry->getManager('default')->getRepository('AppBundle:Collection')->findOneByCollectionAndInstitution($institutionCode, $collectionCode);
     if (!is_null($user) && !is_null($collection)) {
         $this->checkUserRight($user, $collection);
     }
     return $collection;
 }
 /**
  * @param string|null $managerName
  *
  * @throws \Doctrine\ORM\Tools\ToolsException
  */
 public function resetDoctrineSchema($managerName = null)
 {
     $manager = $this->doctrine->getManager($managerName);
     $metadata = $manager->getMetadataFactory()->getAllMetadata();
     $schemaTool = new SchemaTool($manager);
     $schemaTool->dropSchema($metadata);
     $schemaTool->createSchema($metadata);
 }
 /**
  * @param object $entity
  * @param Constraint $constraint
  */
 public function validate($entity, Constraint $constraint)
 {
     if (!is_array($constraint->fields) && !is_string($constraint->fields)) {
         throw new UnexpectedTypeException($constraint->fields, 'array');
     }
     $fields = (array) $constraint->fields;
     if (0 === count($fields)) {
         throw new ConstraintDefinitionException('At least one field has to be specified.');
     }
     if ($constraint->em) {
         $em = $this->registry->getManager($constraint->em);
     } else {
         $em = $this->registry->getManagerForClass(get_class($entity));
     }
     $className = $this->context->getCurrentClass();
     $class = $em->getClassMetadata($className);
     /* @var $class \Doctrine\Common\Persistence\Mapping\ClassMetadata */
     $criteria = array();
     foreach ($fields as $fieldName) {
         if (!$class->hasField($fieldName) && !$class->hasAssociation($fieldName)) {
             throw new ConstraintDefinitionException("Only field names mapped by Doctrine can be validated for uniqueness.");
         }
         $criteria[$fieldName] = $class->reflFields[$fieldName]->getValue($entity);
         if (null === $criteria[$fieldName]) {
             return;
         }
         if ($class->hasAssociation($fieldName)) {
             /* Ensure the Proxy is initialized before using reflection to
              * read its identifiers. This is necessary because the wrapped
              * getter methods in the Proxy are being bypassed.
              */
             $em->initializeObject($criteria[$fieldName]);
             $relatedClass = $em->getClassMetadata($class->getAssociationTargetClass($fieldName));
             $relatedId = $relatedClass->getIdentifierValues($criteria[$fieldName]);
             if (count($relatedId) > 1) {
                 throw new ConstraintDefinitionException("Associated entities are not allowed to have more than one identifier field to be " . "part of a unique constraint in: " . $class->getName() . "#" . $fieldName);
             }
             $criteria[$fieldName] = array_pop($relatedId);
         }
     }
     $repository = $em->getRepository($className);
     $result = $repository->findBy($criteria);
     /* If the result is a MongoCursor, it must be advanced to the first
      * element. Rewinding should have no ill effect if $result is another
      * iterator implementation.
      */
     if ($result instanceof \Iterator) {
         $result->rewind();
     }
     /* If no entity matched the query criteria or a single entity matched,
      * which is the same as the entity being validated, the criteria is
      * unique.
      */
     if (0 === count($result) || 1 === count($result) && $entity === ($result instanceof \Iterator ? $result->current() : current($result))) {
         return;
     }
     $this->context->addViolationAtSubPath($fields[0], $constraint->message, array(), $criteria[$fields[0]]);
 }
예제 #12
0
 /**
  * {@inheritdoc}
  */
 public function beforeSuite(SuiteEvent $suiteEvent, array $options)
 {
     foreach ($options['managers'] as $managerName) {
         /** @var DocumentManager $manager */
         $manager = $this->managerRegistry->getManager($managerName);
         $purger = new MongoDBPurger($manager);
         $purger->purge();
     }
 }
 /**
  * Checks the object is an instance of a given class.
  *
  * @param EmailCampaign $entity
  * @return bool
  */
 public function isApplicableOnEmailCampaign($entity)
 {
     if ($entity instanceof EmailCampaign && $entity->getTransport() == MailChimpTransport::NAME) {
         $campaign = $this->registry->getManager()->getRepository('OroCRMMailChimpBundle:Campaign')->findOneBy(['emailCampaign' => $entity]);
         return (bool) $campaign;
     } else {
         return false;
     }
 }
예제 #14
0
 protected function removeAll()
 {
     /** @var EntityManager $em */
     $em = $this->doctrine->getManager();
     foreach ($this->doctrine->getRepository('NetNexusTimesheetBundle:Workitem')->findAll() as $wi) {
         $em->remove($wi);
     }
     $em->flush();
 }
예제 #15
0
 /**
  * @param object $value
  *
  * @throws \InvalidArgumentException When $value is not a Doctrine object
  *
  * @return array
  */
 protected function getIdentifierValues($value)
 {
     if (!is_object($value)) {
         throw new \InvalidArgumentException('Only Doctrine objects can be serialized');
     }
     $class = get_class($value);
     $metadata = $this->doctrine->getManager()->getClassMetadata($class);
     return $metadata->getIdentifierValues($value);
 }
예제 #16
0
 public function purge()
 {
     $this->purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
     $this->purger->purge();
     // Ensure to close the connection to avoid mysql timeout
     $em = $this->managerRegistry->getManager();
     $em->clear();
     $em->getConnection()->close();
 }
예제 #17
0
 /**
  * (non-PHPdoc)
  * @see Azine\EmailBundle\Services.RecipientProviderInterface::getNewsletterRecipientIDs()
  */
 public function getNewsletterRecipientIDs()
 {
     $qb = $this->managerRegistry->getManager()->createQueryBuilder()->select("n.id")->from($this->userClass, "n")->where('n.' . $this->newsletterField . ' = true')->andWhere("n.locked = 0")->andWhere("n.enabled = 1");
     $results = $qb->getQuery()->execute();
     $ids = array();
     foreach ($results as $next) {
         $ids[] = $next['id'];
     }
     return $ids;
 }
 /**
  * Returns default entity manager
  *
  * @return EntityManager
  */
 protected function getEntityManager()
 {
     /** @var EntityManager $em */
     $em = $this->doctrine->getManager();
     if (!$em->isOpen()) {
         $this->doctrine->resetManager();
         $em = $this->doctrine->getManager();
     }
     return $em;
 }
예제 #19
0
 /**
  * @return DocumentManager
  */
 protected function getDm()
 {
     if (!$this->dm) {
         if (!$this->doctrineRegistry) {
             throw new \RuntimeException('Doctrine is not available.');
         }
         $this->dm = $this->doctrineRegistry->getManager($this->doctrineManagerName);
     }
     return $this->dm;
 }
 /**
  * @param string $entityClass
  */
 protected function addReindexJob($entityClass)
 {
     $job = $this->registry->getRepository('JMSJobQueueBundle:Job')->createQueryBuilder('job')->select('job')->where('job.command = :command')->andWhere('cast(job.args as text) = :args')->andWhere('job.state in (\'pending\', \'running\')')->setParameter('command', ReindexCommand::COMMAND_NAME)->setParameter('args', ['class' => $entityClass], Type::JSON_ARRAY)->setMaxResults(1)->getQuery()->getOneOrNullResult();
     if (!$job) {
         $job = new Job(ReindexCommand::COMMAND_NAME, ['class' => $entityClass]);
         $em = $this->registry->getManager();
         $em->persist($job);
         $em->flush($job);
     }
 }
예제 #21
0
 /**
  * {@inheritdoc}
  */
 public function beforeSuite(SuiteEvent $suiteEvent, array $options)
 {
     foreach ($options['managers'] as $managerName) {
         /** @var EntityManagerInterface $manager */
         $manager = $this->managerRegistry->getManager($managerName);
         $purger = new ORMPurger($manager);
         $purger->setPurgeMode(static::$purgeModes[$options['mode']]);
         $purger->purge();
     }
 }
예제 #22
0
 /**
  * @param User   $user
  * @param string $name
  *
  * @return ApiToken
  */
 public function create(User $user, $name)
 {
     $apiToken = new ApiToken();
     $apiToken->setToken($this->generateToken());
     $apiToken->setUser($user);
     $apiToken->setName($name);
     $entityManager = $this->registry->getManager();
     $entityManager->persist($apiToken);
     $entityManager->flush();
     return $apiToken;
 }
 /**
  * @inheritdoc
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $output->writeln('<info>Removing imports without any parts</info>');
     $doctrine = $this->doctrine->getManager();
     $imports = $doctrine->getRepository('TreeHouseIoBundle:Import')->findByNumberOfParts(0);
     foreach ($imports as $import) {
         $output->writeln(sprintf('Cleaning up import <info>%d</info>', $import->getId()));
         $doctrine->remove($import);
         $doctrine->flush($import);
     }
     $doctrine->flush();
 }
예제 #24
0
 public function supports(ConfigurationInterface $configuration)
 {
     if (null === $this->registry) {
         return false;
     }
     if (null === $configuration->getClass()) {
         return false;
     }
     $options = $this->getOptions($configuration);
     // Doctrine Entity?
     return !$this->registry->getManager($options['entity_manager'])->getMetadataFactory()->isTransient($configuration->getClass());
 }
예제 #25
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     // Bangpound\Bundle\TwitterStreamingBundle\CouchDocument\AtomEntry
     $em = $this->registry->getManager();
     /** @var \Doctrine\CouchDB\CouchDBClient $default_client */
     $default_client = $this->registry->getConnection();
     $tag = $input->getArgument('tag');
     $outputFile = $input->getOption('output');
     $start = \DateTime::createFromFormat('Y-m-d', $input->getOption('start'));
     $end = \DateTime::createFromFormat('Y-m-d', $input->getOption('end'));
     $limit = 1000;
     // Executing the query without grouping allows the view to be refreshed.
     /** @var  $query */
     $query = $default_client->createViewQuery('maint', 'tag');
     if ($input->getOption('stale') !== 'ok') {
         $output->writeln('Updating view.');
         $query->execute();
     }
     // All other executions will allow stale results.
     $query->setGroup(false);
     $query->setIncludeDocs(true);
     $query->setStale('ok');
     $query->setReduce(false);
     $query->setStartKey([$tag, (int) $start->format('Y'), (int) $start->format('m'), (int) $start->format('d')]);
     $query->setEndKey([$tag, (int) $end->format('Y'), (int) $end->format('m'), (int) $end->format('d')]);
     $query->setLimit($limit + 1);
     file_put_contents($outputFile, '[');
     do {
         $result = $query->execute();
         $next_start_key = null;
         if (count($result) > 0) {
             if (count($result) == $limit + 1) {
                 $next_start_key = $result[$limit]['key'];
                 $query->setStartKey($result[$limit]['key']);
                 $query->setStartKeyDocId($result[$limit]['id']);
                 $output->writeln('resume with ' . implode('-', $result[$limit]['key']) . ' ' . $result[$limit]['id']);
             }
             $rows = array();
             foreach ($result as $i => $row) {
                 if ($i < $limit) {
                     $rows[] = json_encode($row['doc']);
                 }
             }
             $data = implode(',', $rows);
             if ($next_start_key) {
                 $data .= ',';
             }
             file_put_contents($outputFile, $data, FILE_APPEND | LOCK_EX);
         }
     } while ($next_start_key);
     file_put_contents($outputFile, ']', FILE_APPEND | LOCK_EX);
 }
예제 #26
0
 /**
  * DiffComputer constructor.
  * @param ManagerRegistry $managerRegistry
  * @param int             $maxNbSpecimenPerPass
  */
 public function __construct(ManagerRegistry $managerRegistry, $maxNbSpecimenPerPass)
 {
     $this->maxNbSpecimenPerPass = $maxNbSpecimenPerPass;
     $this->managerRegistry = $managerRegistry;
     $this->emR = $managerRegistry->getManager('default');
     $this->emB = $managerRegistry->getManager('buffer');
     $this->diffs['datas'] = [];
     $this->diffs['classes'] = [];
     if (!$this->logQueries) {
         $this->emR->getConnection()->getConfiguration()->setSQLLogger(null);
         $this->emB->getConnection()->getConfiguration()->setSQLLogger(null);
     }
 }
예제 #27
0
 /**
  * Checks whether the given namespace is registered in the Doctrine
  *
  * @param string $namespace
  * @return bool
  */
 public function isKnownEntityClassNamespace($namespace)
 {
     foreach (array_keys($this->doctrine->getManagers()) as $name) {
         $manager = $this->doctrine->getManager($name);
         if ($manager instanceof EntityManager) {
             $namespaces = $manager->getConfiguration()->getEntityNamespaces();
             if (in_array($namespace, $namespaces, true)) {
                 return true;
             }
         }
     }
     return false;
 }
예제 #28
0
 /**
  * @param ConfigUpdateEvent $event
  */
 public function onConfigUpdate(ConfigUpdateEvent $event)
 {
     if (!$event->isChanged('oro_locale.timezone')) {
         return;
     }
     if (!$this->isAlreadyScheduled()) {
         /** @var EntityManager $em */
         $em = $this->registry->getManager();
         $job = new Job(LifetimeAverageAggregateCommand::COMMAND_NAME, ['-f']);
         $em->persist($job);
         $em->flush($job);
     }
 }
 /**
  * @param MemberActivity $memberActivity
  */
 protected function updateStatistics(MemberActivity $memberActivity)
 {
     $mailChimpCampaign = $memberActivity->getCampaign();
     $emailCampaign = $mailChimpCampaign->getEmailCampaign();
     $marketingList = $mailChimpCampaign->getStaticSegment()->getMarketingList();
     $relatedEntities = $this->getMarketingListEntitiesByEmail($marketingList, $memberActivity->getEmail());
     $em = $this->registry->getManager();
     foreach ($relatedEntities as $relatedEntity) {
         $emailCampaignStatistics = $this->campaignStatisticsConnector->getStatisticsRecord($emailCampaign, $relatedEntity);
         $this->incrementStatistics($memberActivity, $emailCampaignStatistics);
         $em->persist($emailCampaignStatistics);
     }
 }
예제 #30
0
 public function getDefaultOptions(array $options)
 {
     $defaultOptions = array('em' => null, 'class' => null, 'property' => null, 'query_builder' => null, 'loader' => null, 'group_by' => null);
     $options = array_replace($defaultOptions, $options);
     if (!isset($options['choice_list'])) {
         $manager = $this->registry->getManager($options['em']);
         if (isset($options['query_builder'])) {
             $options['loader'] = $this->getLoader($manager, $options);
         }
         $defaultOptions['choice_list'] = new EntityChoiceList($manager, $options['class'], $options['property'], $options['loader'], $options['choices'], $options['group_by']);
     }
     return $defaultOptions;
 }