Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/dev/1.10' into 1.10
Browse files Browse the repository at this point in the history
  • Loading branch information
rgrebenchuk committed Oct 20, 2016
2 parents c4e3207 + 355ad17 commit ea813f0
Show file tree
Hide file tree
Showing 12 changed files with 266 additions and 160 deletions.
9 changes: 9 additions & 0 deletions UPGRADE-1.10.6.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
UPGRADE FROM 1.10.5 to 1.10.6
=============================

###OroCRMMarketingListBundle
- Class `OroCRM\Bundle\MarketingListBundle\Model\ContactInformationFieldHelper
- method `getQueryContactInformationColumns` was deprecated. Use method `getQueryContactInformationFields` instead.
- method `getEntityContactInformationColumns` `was deprecated. Use method getEntityContactInformationFields` instead.
- method `getEntityContactInformationColumnsInfo` was deprecated. Use method `getEntityContactInformationFieldsInfo` instead.
- method `getEntityLevelContactInfoColumns` was deprecated. Use method `getEntityLevelContactInfoFields` instead.
9 changes: 9 additions & 0 deletions UPGRADE-1.9.9.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
UPGRADE FROM 1.9.8 to 1.9.9
===========================

###OroCRMMarketingListBundle
- Class `OroCRM\Bundle\MarketingListBundle\Model\ContactInformationFieldHelper
- method `getQueryContactInformationColumns` was deprecated. Use method `getQueryContactInformationFields` instead.
- method `getEntityContactInformationColumns` `was deprecated. Use method getEntityContactInformationFields` instead.
- method `getEntityContactInformationColumnsInfo` was deprecated. Use method `getEntityContactInformationFieldsInfo` instead.
- method `getEntityLevelContactInfoColumns` was deprecated. Use method `getEntityLevelContactInfoFields` instead.
Original file line number Diff line number Diff line change
Expand Up @@ -149,67 +149,11 @@ public function onFlush(OnFlushEventArgs $args)
$extendProvider = $this->configManager->getProvider('extend');
if (!empty($entitiesToDelete) || !empty($entitiesToUpdate)) {
foreach ($entitiesToDelete as $entity) {
$class = $this->doctrineHelper->getEntityClass($entity);
$id = $this->doctrineHelper->getSingleEntityIdentifier($entity);
$key = $class . '_' . $id;
if (!isset($this->deletedEntities[$key])
&& $this->activityContactProvider->isSupportedEntity($class)
) {
$targets = $entity->getActivityTargetEntities();
$targetsInfo = [];
foreach ($targets as $target) {
$targetClassName = ClassUtils::getClass($target);
if (!TargetExcludeList::isExcluded($targetClassName) &&
$extendProvider->getConfig($targetClassName)->is('is_extend')) {
$targetsInfo[] = [
'class' => $this->doctrineHelper->getEntityClass($target),
'id' => $this->doctrineHelper->getSingleEntityIdentifier($target),
'direction' => $this->activityContactProvider->getActivityDirection($entity, $target)
];
}
}
$this->deletedEntities[$key] = [
'class' => $class,
'id' => $id,
'contactDate' => $this->activityContactProvider->getActivityDate($entity),
'targets' => $targetsInfo
];
}
$this->collectDeleteEntities($entity, $extendProvider);
}

foreach ($entitiesToUpdate as $entity) {
$class = $this->doctrineHelper->getEntityClass($entity);
$id = $this->doctrineHelper->getSingleEntityIdentifier($entity);
$key = $class . '_' . $id;
if (!isset($this->updatedEntities[$key])
&& $this->activityContactProvider->isSupportedEntity($class)
) {
$changes = $args->getEntityManager()->getUnitOfWork()->getEntityChangeSet($entity);
$isDirectionChanged = $this->activityContactProvider
->getActivityDirectionProvider($entity)
->isDirectionChanged($changes);

$targets = $entity->getActivityTargetEntities();
$targetsInfo = [];
foreach ($targets as $target) {
$targetClassName = ClassUtils::getClass($target);
if (!TargetExcludeList::isExcluded($targetClassName) &&
$extendProvider->getConfig($targetClassName)->is('is_extend')) {
$targetsInfo[] = [
'class' => $this->doctrineHelper->getEntityClass($target),
'id' => $this->doctrineHelper->getSingleEntityIdentifier($target),
'direction' => $this->activityContactProvider->getActivityDirection($entity, $target),
'is_direction_changed' => $isDirectionChanged
];
}
}
$this->updatedEntities[$key] = [
'class' => $class,
'id' => $id,
'contactDate' => $this->activityContactProvider->getActivityDate($entity),
'targets' => $targetsInfo
];
}
$this->collectUpdateEntities($args, $entity, $extendProvider);
}
}
}
Expand All @@ -218,19 +162,29 @@ public function onFlush(OnFlushEventArgs $args)
* Save collected changes
*
* @param PostFlushEventArgs $args
*
* @throws \Exception
*/
public function postFlush(PostFlushEventArgs $args)
{
$em = $args->getEntityManager();
$entityManager = $args->getEntityManager();
if (empty($this->deletedEntities) && empty($this->updatedEntities)) {
return;
}
$entityManager->beginTransaction();

$accessor = PropertyAccess::createPropertyAccessor();
$this->processDeletedEntities($em, $accessor);
$this->processUpdatedEntities($em, $accessor);
try {
$accessor = PropertyAccess::createPropertyAccessor();
$this->processDeletedEntities($entityManager, $accessor);
$this->processUpdatedEntities($entityManager, $accessor);

$em->flush();
$entityManager->flush();

$entityManager->commit();
} catch (\Exception $e) {
$entityManager->rollback();
throw $e;
}
}

/**
Expand Down Expand Up @@ -364,4 +318,84 @@ protected function getDirectionProperties($currentDirection, $isDirectionChanged
? [ActivityScope::CONTACT_COUNT_IN, ActivityScope::CONTACT_COUNT_IN]
: [ActivityScope::CONTACT_COUNT_OUT, ActivityScope::CONTACT_COUNT_OUT];
}

/**
* @param $entity
* @param $extendProvider
*/
protected function collectDeleteEntities($entity, $extendProvider)
{
$class = $this->doctrineHelper->getEntityClass($entity);
$id = $this->doctrineHelper->getSingleEntityIdentifier($entity);
$key = $class . '_' . $id;
if (!isset($this->deletedEntities[$key])
&& $this->activityContactProvider->isSupportedEntity($class)
) {
$targets = $entity->getActivityTargetEntities();
$targetsInfo = [];
foreach ($targets as $target) {
$targetClassName = ClassUtils::getClass($target);
if (!TargetExcludeList::isExcluded($targetClassName)
&& $extendProvider->getConfig($targetClassName)->is('is_extend')
) {
$targetsInfo[] = [
'class' => $this->doctrineHelper->getEntityClass($target),
'id' => $this->doctrineHelper->getSingleEntityIdentifier($target),
'direction' => $this->activityContactProvider->getActivityDirection($entity, $target)
];
}
}
$this->deletedEntities[$key] = [
'class' => $class,
'id' => $id,
'contactDate' => $this->activityContactProvider->getActivityDate($entity),
'targets' => $targetsInfo
];
}
}

/**
* @param OnFlushEventArgs $args
* @param $entity
* @param $extendProvider
*/
protected function collectUpdateEntities(OnFlushEventArgs $args, $entity, $extendProvider)
{
$class = $this->doctrineHelper->getEntityClass($entity);
$id = $this->doctrineHelper->getSingleEntityIdentifier($entity);
$key = $class . '_' . $id;
if (!isset($this->updatedEntities[$key])
&& $this->activityContactProvider->isSupportedEntity($class)
) {
$changes = $args->getEntityManager()->getUnitOfWork()->getEntityChangeSet($entity);
$isDirectionChanged = $this->activityContactProvider
->getActivityDirectionProvider($entity)
->isDirectionChanged($changes);

$targets = $entity->getActivityTargetEntities();
$targetsInfo = [];
foreach ($targets as $target) {
$targetClassName = ClassUtils::getClass($target);
if (!TargetExcludeList::isExcluded($targetClassName)
&& $extendProvider->getConfig($targetClassName)->is('is_extend')
) {
$targetsInfo[] = [
'class' => $this->doctrineHelper->getEntityClass($target),
'id' => $this->doctrineHelper->getSingleEntityIdentifier($target),
'direction' => $this->activityContactProvider->getActivityDirection(
$entity,
$target
),
'is_direction_changed' => $isDirectionChanged
];
}
}
$this->updatedEntities[$key] = [
'class' => $class,
'id' => $id,
'contactDate' => $this->activityContactProvider->getActivityDate($entity),
'targets' => $targetsInfo
];
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public function entityContactInformationFieldsAction()
/** @var ContactInformationFieldHelper $helper */
$helper = $this->get('orocrm_marketing_list.contact_information_field_helper');

return $this->handleView($this->view($helper->getEntityContactInformationColumnsInfo($entity), Codes::HTTP_OK));
return $this->handleView($this->view($helper->getEntityContactInformationFieldsInfo($entity), Codes::HTTP_OK));
}

/**
Expand Down
Loading

0 comments on commit ea813f0

Please sign in to comment.