/** * {@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()); } }
/** * @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 []; }
/** * {@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); } } }
/** * @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); }
/** * {@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); } }
/** * @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); }
/** * 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; }
/** * 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)); } }