Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function merge(FieldData $fieldData)
 {
     $entityData = $fieldData->getEntityData();
     $masterEntity = $entityData->getMasterEntity();
     $sourceEntity = $fieldData->getSourceEntity();
     if ($masterEntity->getId() !== $sourceEntity->getId()) {
         $queryBuilder = $this->doctrineHelper->getEntityRepository('OroNoteBundle:Note')->getBaseAssociatedNotesQB(ClassUtils::getRealClass($masterEntity), $masterEntity->getId());
         $notes = $queryBuilder->getQuery()->getResult();
         if (!empty($notes)) {
             $entityManager = $this->doctrineHelper->getEntityManager(current($notes));
             foreach ($notes as $note) {
                 $entityManager->remove($note);
             }
         }
         $queryBuilder = $this->doctrineHelper->getEntityRepository('OroNoteBundle:Note')->getBaseAssociatedNotesQB(ClassUtils::getRealClass($masterEntity), $sourceEntity->getId());
         $notes = $queryBuilder->getQuery()->getResult();
         if (!empty($notes)) {
             foreach ($notes as $note) {
                 $note->setTarget($masterEntity);
             }
         }
         $fieldMetadata = $fieldData->getMetadata();
         $activityClass = $fieldMetadata->get('type');
         $entityClass = ClassUtils::getRealClass($sourceEntity);
         $queryBuilder = $this->doctrineHelper->getEntityRepository(ActivityList::ENTITY_NAME)->getActivityListQueryBuilderByActivityClass($entityClass, $sourceEntity->getId(), $activityClass);
         $activityListItems = $queryBuilder->getQuery()->getResult();
         $activityIds = ArrayUtil::arrayColumn($activityListItems, 'id');
         $this->activityListManager->replaceActivityTargetWithPlainQuery($activityIds, $entityClass, $sourceEntity->getId(), $masterEntity->getId());
     }
 }
Exemplo n.º 2
0
 /**
  * @param AbstractQueryDesigner         $value
  * @param GroupingConstraint|Constraint $constraint
  */
 public function validate($value, Constraint $constraint)
 {
     $definition = json_decode($value->getDefinition(), true);
     if (empty($definition['columns'])) {
         return;
     }
     $columns = $definition['columns'];
     $aggregateColumns = array_filter($columns, function (array $column) {
         return !empty($column['func']);
     });
     if (empty($aggregateColumns)) {
         return;
     }
     $groupingColumns = [];
     if (!empty($definition['grouping_columns'])) {
         $groupingColumns = $definition['grouping_columns'];
     }
     $groupingColumnNames = ArrayUtil::arrayColumn($groupingColumns, 'name');
     $columnNames = ArrayUtil::arrayColumn($columns, 'name');
     $columnNamesToCheck = array_diff($columnNames, ArrayUtil::arrayColumn($aggregateColumns, 'name'));
     $columnsToGroup = array_diff($columnNamesToCheck, $groupingColumnNames);
     if (empty($columnsToGroup)) {
         return;
     }
     $columnLabels = [];
     foreach ($columns as $column) {
         if (in_array($column['name'], $columnsToGroup)) {
             $columnLabels[] = $column['label'];
         }
     }
     $this->context->addViolation($this->translator->trans($constraint->message, ['%columns%' => implode(', ', $columnLabels)]));
 }
 /**
  * @param array $response
  * @param string $container
  * @param string|null $key
  *
  * @return array
  */
 protected function getArrayData(array $response, $container, $key = null)
 {
     if (!empty($response[$container])) {
         if ($key) {
             return ArrayUtil::arrayColumn($response[$container], $key);
         }
         return $response[$container];
     }
     return [];
 }
Exemplo n.º 4
0
 /**
  * {@inheritdoc}
  */
 public function merge(FieldData $fieldData)
 {
     $entityData = $fieldData->getEntityData();
     $masterEntity = $entityData->getMasterEntity();
     $fieldMetadata = $fieldData->getMetadata();
     $entities = $fieldData->getEntityData()->getEntities();
     foreach ($entities as $sourceEntity) {
         if ($sourceEntity->getId() !== $masterEntity->getId()) {
             $entityClass = ClassUtils::getRealClass($masterEntity);
             $activityClass = $fieldMetadata->get('type');
             $queryBuilder = $this->doctrineHelper->getEntityRepository(ActivityList::ENTITY_NAME)->getActivityListQueryBuilderByActivityClass($entityClass, $sourceEntity->getId(), $activityClass);
             $activityListItems = $queryBuilder->getQuery()->getResult();
             $activityIds = ArrayUtil::arrayColumn($activityListItems, 'id');
             $this->activityListManager->replaceActivityTargetWithPlainQuery($activityIds, $entityClass, $sourceEntity->getId(), $masterEntity->getId());
             $activityIds = ArrayUtil::arrayColumn($activityListItems, 'relatedActivityId');
             $this->activityListManager->replaceActivityTargetWithPlainQuery($activityIds, $entityClass, $sourceEntity->getId(), $masterEntity->getId(), $activityClass);
         }
     }
 }
Exemplo n.º 5
0
 /**
  * @param DataInterface $data
  * @param array         $chartOptions
  *
  * @return DataInterface
  */
 public function transform(DataInterface $data, array $chartOptions)
 {
     $this->initialize($data, $chartOptions);
     if (!$data->toArray()) {
         return new ArrayData([]);
     }
     $keys = array_unique(ArrayUtil::arrayColumn($this->sourceData, $this->groupingOption));
     $values = array_combine($keys, array_fill(0, sizeof($keys), $this->getLabels()));
     foreach ($values as $group => &$value) {
         array_walk($value, function (&$label) use($group) {
             $counts = array_map(function ($item) use($label, $group) {
                 if ($item[$this->groupingOption] == $group && $item[$this->labelKey] == $label) {
                     return $item[$this->valueKey];
                 }
                 return 0;
             }, $this->sourceData);
             $label = ['label' => $label, 'value' => array_sum($counts)];
         });
     }
     return new ArrayData($values);
 }
Exemplo n.º 6
0
 /**
  * {@inheritdoc}
  */
 public function merge(FieldData $fieldData)
 {
     $entityData = $fieldData->getEntityData();
     $masterEntity = $entityData->getMasterEntity();
     $sourceEntity = $fieldData->getSourceEntity();
     if ($masterEntity->getId() !== $sourceEntity->getId()) {
         $fieldMetadata = $fieldData->getMetadata();
         $activityClass = $fieldMetadata->get('type');
         $activityListItems = $this->getActivitiesByEntity($masterEntity, $activityClass);
         $activityIds = ArrayUtil::arrayColumn($activityListItems, 'relatedActivityId');
         $activities = $this->doctrineHelper->getEntityRepository($activityClass)->findBy(['id' => $activityIds]);
         foreach ($activities as $activity) {
             $this->activityManager->removeActivityTarget($activity, $masterEntity);
         }
         $activityListItems = $this->getActivitiesByEntity($sourceEntity, $activityClass);
         $activityIds = ArrayUtil::arrayColumn($activityListItems, 'id');
         $entityClass = ClassUtils::getRealClass($masterEntity);
         $this->activityListManager->replaceActivityTargetWithPlainQuery($activityIds, $entityClass, $sourceEntity->getId(), $masterEntity->getId());
         $activityIds = ArrayUtil::arrayColumn($activityListItems, 'relatedActivityId');
         $this->activityListManager->replaceActivityTargetWithPlainQuery($activityIds, $entityClass, $sourceEntity->getId(), $masterEntity->getId(), $activityClass);
     }
 }
Exemplo n.º 7
0
 /**
  * @param array  $array
  * @param mixed  $columnKey
  * @param mixed  $indexKey
  * @param string $expectedMessage
  *
  * @dataProvider arrayColumnInputData
  */
 public function testArrayColumnInputData(array $array, $columnKey, $indexKey, $expectedMessage)
 {
     $this->setExpectedException('\\InvalidArgumentException', $expectedMessage);
     ArrayUtil::arrayColumn($array, $columnKey, $indexKey);
 }
Exemplo n.º 8
0
 /**
  * Return the values from a single column in the input array
  *
  * http://php.net/manual/en/function.array-column.php
  *
  * @param array $array
  * @param mixed $columnKey
  * @param mixed $indexKey
  *
  * @return array
  *
  * @deprecated since 1.9. Use Oro\Component\PhpUtils\ArrayUtil::arrayColumn instead
  */
 public static function arrayColumn(array $array, $columnKey, $indexKey = null)
 {
     return ArrayUtil::arrayColumn($array, $columnKey, $indexKey);
 }
 /**
  * @param string $entity
  * @return array
  */
 protected function getEntityLevelContactInfoColumns($entity)
 {
     $contactInfoColumns = array();
     if ($this->configProvider->hasConfig($entity)) {
         $entityContactInformation = $this->configProvider->getConfig($entity)->get('contact_information');
         if ($entityContactInformation) {
             foreach ($entityContactInformation as $contactInfoType => $contactInfoFields) {
                 $entityColumns = ArrayUtil::arrayColumn($contactInfoFields, 'fieldName');
                 foreach ($entityColumns as $entityColumn) {
                     $contactInfoColumns[$entityColumn] = $contactInfoType;
                 }
             }
         }
     }
     return $contactInfoColumns;
 }
Exemplo n.º 10
0
 /**
  * Add "in" expression as page limit to query builder
  *
  * @param QueryBuilder $dataQueryBuilder
  * @param ResultsObject $pageData
  * @param bool $perPage
  */
 protected function addPageLimits(QueryBuilder $dataQueryBuilder, $pageData, $perPage)
 {
     $rootIdentifiers = $this->getRootIds($dataQueryBuilder);
     if (!$perPage) {
         $queryBuilder = clone $this->masterQB;
         $data = $queryBuilder->getQuery()->setFirstResult(null)->setMaxResults(null)->getScalarResult();
     } else {
         $data = $pageData['data'];
     }
     foreach ($rootIdentifiers as $identifier) {
         $ids = ArrayUtil::arrayColumn($data, $identifier['alias']);
         $field = isset($identifier['entityAlias']) ? $identifier['entityAlias'] . '.' . $identifier['fieldAlias'] : $identifier['fieldAlias'];
         $filteredIds = array_filter($ids);
         if (empty($filteredIds)) {
             continue;
         }
         $dataQueryBuilder->andWhere($dataQueryBuilder->expr()->in($field, $ids));
     }
 }