Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use DI for services & remove aliases #385

Closed
wants to merge 12 commits into from
9 changes: 3 additions & 6 deletions doc/03_Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,16 @@ e.g. in `services.yml`:

services:
# example customer save handler config
appbundle.cmf.customer_save_handler.normalize_zip:
class: CustomerManagementFrameworkBundle\CustomerSaveHandler\NormalizeZip
CustomerManagementFrameworkBundle\CustomerSaveHandler\NormalizeZip:
tags: [cmf.customer_save_handler]

# example segment builder config
appbundle.cmf.segment_builder.state:
class: CustomerManagementFrameworkBundle\SegmentBuilder\StateSegmentBuilder
CustomerManagementFrameworkBundle\SegmentBuilder\StateSegmentBuilder:
tags: [cmf.segment_builder]


# example newsletter provider handler (mailchimp sync) config for one Mailchimp receiver list
appbundle.cmf.mailchimp.birthdate-transformer:
class: CustomerManagementFrameworkBundle\Newsletter\ProviderHandler\Mailchimp\DataTransformer\Date
CustomerManagementFrameworkBundle\Newsletter\ProviderHandler\Mailchimp\DataTransformer\Date:
arguments:
- m/d/Y
- Y-m-d
Expand Down
6 changes: 2 additions & 4 deletions doc/06_CustomerSaveManager.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ got changed.
```yaml
services:

appbundle.cmf.customer_save_handler.normalize_zip:
class: CustomerManagementFrameworkBundle\CustomerSaveHandler\NormalizeZip
CustomerManagementFrameworkBundle\CustomerSaveHandler\NormalizeZip:
tags: [cmf.customer_save_handler]
```

Expand Down Expand Up @@ -55,8 +54,7 @@ Allows to setup a logic for overwriting field values based on other field values

##### Example:
```yaml
appbundle.cmf.customer_save_handler.attribute_logic:
class: CustomerManagementFrameworkBundle\CustomerSaveHandler\AttributeLogic
CustomerManagementFrameworkBundle\CustomerSaveHandler\AttributeLogic:
arguments:
- from: profileStreet
to: street
Expand Down
26 changes: 10 additions & 16 deletions src/ActionTrigger/EventHandler/DefaultEventHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

namespace CustomerManagementFrameworkBundle\ActionTrigger\EventHandler;

use CustomerManagementFrameworkBundle\ActionTrigger\ActionManager\ActionManagerInterface;
use CustomerManagementFrameworkBundle\ActionTrigger\Condition\Checker;
use CustomerManagementFrameworkBundle\ActionTrigger\Event\CustomerListEventInterface;
use CustomerManagementFrameworkBundle\ActionTrigger\Event\EventInterface;
Expand All @@ -23,6 +24,7 @@
use CustomerManagementFrameworkBundle\ActionTrigger\Queue\QueueInterface;
use CustomerManagementFrameworkBundle\ActionTrigger\RuleEnvironment;
use CustomerManagementFrameworkBundle\ActionTrigger\RuleEnvironmentInterface;
use CustomerManagementFrameworkBundle\CustomerProvider\CustomerProviderInterface;
use CustomerManagementFrameworkBundle\Model\ActionTrigger\Rule;
use CustomerManagementFrameworkBundle\Model\CustomerInterface;
use CustomerManagementFrameworkBundle\Traits\LoggerAware;
Expand All @@ -37,20 +39,12 @@ class DefaultEventHandler implements EventHandlerInterface
/** @var Rule[][]|null */
private $rulesGroupedByEvents = null;

/**
* @var QueueInterface
*/
protected $actionTriggerQueue;

/**
* @var PaginatorInterface
*/
protected $paginator;

public function __construct(QueueInterface $actionTriggerQueue, PaginatorInterface $paginator)
{
$this->actionTriggerQueue = $actionTriggerQueue;
$this->paginator = $paginator;
public function __construct(
protected QueueInterface $actionTriggerQueue,
protected PaginatorInterface $paginator,
protected CustomerProviderInterface $customerProvider,
protected ActionManagerInterface $actionManager
) {
}

protected function getRulesGroupedByEvents()
Expand Down Expand Up @@ -102,7 +96,7 @@ public function handleCustomerListEvent(CustomerListEventInterface $event, RuleE
if ($conditions = $rule->getCondition()) {
$where = Checker::getDbConditionForRule($rule);

$listing = Pimcore::getContainer()->get('cmf.customer_provider')->getList();
$listing = $this->customerProvider->getList();
$listing->setCondition($where);
$idField = Service::getVersionDependentDatabaseColumnName('id');
$listing->setOrderKey($idField);
Expand Down Expand Up @@ -139,7 +133,7 @@ private function handleActionsForCustomer(Rule $rule, CustomerInterface $custome
$environment
);
} else {
Pimcore::getContainer()->get('cmf.action_trigger.action_manager')->processAction(
$this->actionManager->processAction(
$action,
$customer,
$environment
Expand Down
7 changes: 6 additions & 1 deletion src/ActionTrigger/Queue/DefaultQueue.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
namespace CustomerManagementFrameworkBundle\ActionTrigger\Queue;

use CustomerManagementFrameworkBundle\ActionTrigger\Action\ActionDefinitionInterface;
use CustomerManagementFrameworkBundle\ActionTrigger\ActionManager\ActionManagerInterface;
use CustomerManagementFrameworkBundle\ActionTrigger\RuleEnvironmentInterface;
use CustomerManagementFrameworkBundle\Model\ActionTrigger\ActionDefinition;
use CustomerManagementFrameworkBundle\Model\CustomerInterface;
Expand All @@ -29,6 +30,10 @@ class DefaultQueue implements QueueInterface

const QUEUE_TABLE = 'plugin_cmf_actiontrigger_queue';

public function __construct(protected ActionManagerInterface $actionManager)
{
}

public function addToQueue(
ActionDefinitionInterface $action,
CustomerInterface $customer,
Expand Down Expand Up @@ -87,7 +92,7 @@ private function processQueueItem(array $item)
$environment = unserialize($item['environment']);

if ($action && $customer instanceof CustomerInterface) {
\Pimcore::getContainer()->get('cmf.action_trigger.action_manager')->processAction(
$this->actionManager->processAction(
$action,
$customer,
$environment
Expand Down
12 changes: 4 additions & 8 deletions src/ActivityManager/DefaultActivityManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,15 @@

class DefaultActivityManager implements ActivityManagerInterface
{
/**
* @var ActivityStoreInterface
*/
protected $activityStore;

/**
* @var bool
*/
protected $disableEvents = false;

public function __construct(ActivityStoreInterface $activityStore)
public function __construct(
protected ActivityStoreInterface $activityStore,
protected SegmentBuilderExecutorInterface $segmentBuilderExecutor)
{
$this->activityStore = $activityStore;
}

/**
Expand Down Expand Up @@ -86,7 +82,7 @@ public function trackActivity(ActivityInterface $activity)
return;
}

\Pimcore::getContainer()->get(SegmentBuilderExecutorInterface::class)->addCustomerToChangesQueue($activity->getCustomer());
$this->segmentBuilderExecutor->addCustomerToChangesQueue($activity->getCustomer());

if (!$activity->cmfIsActive()) {
$store->deleteActivity($activity);
Expand Down
10 changes: 3 additions & 7 deletions src/ActivityStore/MariaDb.php
Original file line number Diff line number Diff line change
Expand Up @@ -497,17 +497,13 @@ protected function getAttributeInsertData(ActivityInterface $activity)
*/
public function createEntryInstance(array $data)
{
/**
* @var ActivityStoreEntryInterface $entry
*/
$entry = \Pimcore::getContainer()->get('cmf.activity_store_entry');
$entry->setData($data);
$this->activityStoreEntry->setData($data);

if (!$entry instanceof ActivityStoreEntryInterface) {
if (!$this->activityStoreEntry instanceof ActivityStoreEntryInterface) {
throw new \Exception('Activity store entry needs to implement ActivityStoreEntryInterface');
}

return $entry;
return $this->activityStoreEntry;
}

/**
Expand Down
22 changes: 7 additions & 15 deletions src/ActivityStore/SqlActivityStore.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,13 @@ abstract class SqlActivityStore
const ACTIVITIES_METADATA_TABLE = 'plugin_cmf_activities_metadata';
const DELETIONS_TABLE = 'plugin_cmf_deletions';

/**
* @var PaginatorInterface
*/
protected $paginator;

/**
* @param PaginatorInterface $paginator
*/
public function __construct(PaginatorInterface $paginator)
{
$this->paginator = $paginator;
public function __construct(
protected PaginatorInterface $paginator,
protected ActivityStoreEntryInterface $activityStoreEntry
) {
}

public function insertActivityIntoStore(ActivityInterface $activity)
Expand Down Expand Up @@ -228,17 +224,13 @@ public function updateActivityStoreEntry(ActivityStoreEntryInterface $entry, $up
*/
public function createEntryInstance(array $data)
{
/**
* @var ActivityStoreEntryInterface $entry
*/
$entry = \Pimcore::getContainer()->get('cmf.activity_store_entry');
$entry->setData($data);
$this->activityStoreEntry->setData($data);

if (!$entry instanceof ActivityStoreEntryInterface) {
if (!$this->activityStoreEntry instanceof ActivityStoreEntryInterface) {
throw new \Exception('Activity store entry needs to implement ActivityStoreEntryInterface');
}

return $entry;
return $this->activityStoreEntry;
}

/**
Expand Down
30 changes: 21 additions & 9 deletions src/Controller/Admin/ActivitiesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@

namespace CustomerManagementFrameworkBundle\Controller\Admin;

use CustomerManagementFrameworkBundle\ActivityStore\ActivityStoreInterface;
use CustomerManagementFrameworkBundle\ActivityStore\MariaDb;
use CustomerManagementFrameworkBundle\ActivityView\ActivityViewInterface;
use CustomerManagementFrameworkBundle\ActivityView\DefaultActivityView;
use CustomerManagementFrameworkBundle\CustomerProvider\CustomerProviderInterface;
use Knp\Component\Pager\PaginatorInterface;
use Pimcore\Controller\KernelControllerEventInterface;
use Pimcore\Model\Listing\AbstractListing;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\Routing\Annotation\Route;
Expand Down Expand Up @@ -47,10 +51,15 @@ public function onKernelControllerEvent(ControllerEvent $event)
* @param Request $request
* @Route("/list")
*/
public function listAction(Request $request, CustomerProviderInterface $customerProvider)
{
public function listAction(
Request $request,
CustomerProviderInterface $customerProvider,
ActivityStoreInterface $activityStore,
DefaultActivityView $defaultActivityView
) {
if ($customer = $customerProvider->getById($request->get('customerId'))) {
$list = \Pimcore::getContainer()->get('cmf.activity_store')->getActivityList();
/** @var AbstractListing $list */
$list = $activityStore->getActivityList();
$list->setCondition('customerId = ' . $customer->getId());
$list->setOrderKey('activityDate');
$list->setOrder('desc');
Expand All @@ -64,7 +73,7 @@ public function listAction(Request $request, CustomerProviderInterface $customer
$types = \Pimcore\Db::get()->fetchFirstColumn((string)$select);

if ($type = $request->get('type')) {
$select = $list->getQueryBuilder(false);
$select = $list->getQueryBuilder();
$select->andWhere('type = ' . $list->quote($type));
$list->setCondition((string) $select->getQueryPart('where'));
}
Expand All @@ -79,7 +88,7 @@ public function listAction(Request $request, CustomerProviderInterface $customer
'activities' => $paginator,
'paginationVariables' => $paginator->getPaginationData(),
'customer' => $customer,
'activityView' => \Pimcore::getContainer()->get('cmf.activity_view'),
'activityView' => $defaultActivityView,
]
);
}
Expand All @@ -91,15 +100,18 @@ public function listAction(Request $request, CustomerProviderInterface $customer
* @param Request $request
* @Route("/detail")
*/
public function detailAction(Request $request)
{
$activity = \Pimcore::getContainer()->get('cmf.activity_store')->getEntryById($request->get('activityId'));
public function detailAction(
Request $request,
ActivityViewInterface $activityView,
ActivityStoreInterface $activityStore
) {
$activity = $activityStore->getEntryById($request->get('activityId'));

return $this->render(
'@PimcoreCustomerManagementFramework/admin/activities/detail.html.twig',
[
'activity' => $activity,
'activityView' => \Pimcore::getContainer()->get('cmf.activity_view'),
'activityView' => $activityView,
]
);
}
Expand Down
9 changes: 4 additions & 5 deletions src/Controller/Admin/Customers/FilterDefinitionController.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

namespace CustomerManagementFrameworkBundle\Controller\Admin\Customers;

use CustomerManagementFrameworkBundle\ActivityView\DefaultActivityView;
use CustomerManagementFrameworkBundle\Controller\Admin;
use CustomerManagementFrameworkBundle\CustomerView\CustomerViewInterface;
use CustomerManagementFrameworkBundle\Model\CustomerView\FilterDefinition;
Expand All @@ -33,10 +34,8 @@ class FilterDefinitionController extends Admin
*
* @return RedirectResponse
*/
public function deleteAction(Request $request)
public function deleteAction(Request $request, DefaultActivityView $defaultActivityView)
{
// fetch CustomerView object
$customerView = \Pimcore::getContainer()->get('cmf.customer_view');
// fetch object parameters from request
$id = $this->getIdFromRequest($request);
// check if FilterDefinition id provided
Expand All @@ -52,7 +51,7 @@ public function deleteAction(Request $request)
// check if user is allowed to change FilterDefinition object (must be owner or filter admin)
if (!$filterDefinition->isUserAllowedToUpdate($this->getAdminUser())) {
// add error message for user not allowed to access FilterDefinition object
$errors[] = $customerView->translate('cmf_filter_definition_errors_access');
$errors[] = $defaultActivityView->translate('cmf_filter_definition_errors_access');

return $this->getRedirectToFilter($filterDefinition->getId());
}
Expand All @@ -61,7 +60,7 @@ public function deleteAction(Request $request)
$filterDefinition->delete();
} catch (\Exception $e) {
// add error message for deletion failed
$errors[] = $customerView->translate('cmf_filter_definition_errors_deletion_failed', $e->getMessage());
$errors[] = $defaultActivityView->translate('cmf_filter_definition_errors_deletion_failed', $e->getMessage());
}

// redirect to filter view with no FilterDefinition selected
Expand Down