<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Customer\Controller\Adminhtml;
use Magento\Customer\Api\AccountManagementInterface;
use Magento\Customer\Api\AddressRepositoryInterface;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Api\Data\AddressInterfaceFactory;
use Magento\Customer\Api\Data\CustomerInterfaceFactory;
use Magento\Customer\Controller\RegistryConstants;
use Magento\Customer\Model\Address\Mapper;
use Magento\Framework\Message\Error;
use Magento\Framework\DataObjectFactory as ObjectFactory;
use Magento\Framework\Api\DataObjectHelper;
/**
* Class \Magento\Customer\Controller\Adminhtml\Index
*
* @api
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.TooManyFields)
* @SuppressWarnings(PHPMD.NumberOfChildren)
*/
abstract class Index extends \Magento\Backend\App\Action
{
/**
* Authorization level of a basic admin session
*
* @see _isAllowed()
*/
const ADMIN_RESOURCE = 'Magento_Customer::manage';
/**
* @var \Magento\Framework\Validator
* @deprecated 101.0.0
*/
protected $_validator;
/**
* Core registry
*
* @var \Magento\Framework\Registry
*/
protected $_coreRegistry = null;
/**
* @var \Magento\Framework\App\Response\Http\FileFactory
*/
protected $_fileFactory;
/**
* @var \Magento\Customer\Model\CustomerFactory
* @deprecated 101.0.0
*/
protected $_customerFactory = null;
/**
* @var \Magento\Customer\Model\AddressFactory
* @deprecated 101.0.0
*/
protected $_addressFactory = null;
/**
* @var \Magento\Newsletter\Model\SubscriberFactory
*/
protected $_subscriberFactory;
/**
* @var \Magento\Customer\Model\Metadata\FormFactory
*/
protected $_formFactory;
/**
* @var CustomerRepositoryInterface
*/
protected $_customerRepository;
/**
* @var \Magento\Customer\Helper\View
*/
protected $_viewHelper;
/**
* @var \Magento\Framework\Math\Random
* @deprecated 101.0.0
*/
protected $_random;
/**
* @var ObjectFactory
*/
protected $_objectFactory;
/**
* @var \Magento\Framework\Api\ExtensibleDataObjectConverter
* @deprecated 101.0.0
*/
protected $_extensibleDataObjectConverter;
/**
* @var Mapper
*/
protected $addressMapper;
/**
* @var AccountManagementInterface
*/
protected $customerAccountManagement;
/**
* @var AddressRepositoryInterface
*/
protected $addressRepository;
/**
* @var CustomerInterfaceFactory
*/
protected $customerDataFactory;
/**
* @var AddressInterfaceFactory
*/
protected $addressDataFactory;
/**
* @var \Magento\Customer\Model\Customer\Mapper
*/
protected $customerMapper;
/**
* @var \Magento\Framework\Reflection\DataObjectProcessor
* @deprecated 101.0.0
*/
protected $dataObjectProcessor;
/**
* @var DataObjectHelper
*/
protected $dataObjectHelper;
/**
* @var \Magento\Framework\View\LayoutFactory
* @deprecated 101.0.0
*/
protected $layoutFactory;
/**
* @var \Magento\Framework\View\Result\LayoutFactory
*/
protected $resultLayoutFactory;
/**
* @var \Magento\Framework\View\Result\PageFactory
*/
protected $resultPageFactory;
/**
* @var \Magento\Backend\Model\View\Result\ForwardFactory
*/
protected $resultForwardFactory;
/**
* @var \Magento\Framework\Controller\Result\JsonFactory
*/
protected $resultJsonFactory;
/**
* Constructor
*
* @param \Magento\Backend\App\Action\Context $context
* @param \Magento\Framework\Registry $coreRegistry
* @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
* @param \Magento\Customer\Model\CustomerFactory $customerFactory
* @param \Magento\Customer\Model\AddressFactory $addressFactory
* @param \Magento\Customer\Model\Metadata\FormFactory $formFactory
* @param \Magento\Newsletter\Model\SubscriberFactory $subscriberFactory
* @param \Magento\Customer\Helper\View $viewHelper
* @param \Magento\Framework\Math\Random $random
* @param CustomerRepositoryInterface $customerRepository
* @param \Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter
* @param Mapper $addressMapper
* @param AccountManagementInterface $customerAccountManagement
* @param AddressRepositoryInterface $addressRepository
* @param CustomerInterfaceFactory $customerDataFactory
* @param AddressInterfaceFactory $addressDataFactory
* @param \Magento\Customer\Model\Customer\Mapper $customerMapper
* @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor
* @param DataObjectHelper $dataObjectHelper
* @param ObjectFactory $objectFactory
* @param \Magento\Framework\View\LayoutFactory $layoutFactory
* @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory
* @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
* @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory
* @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Registry $coreRegistry,
\Magento\Framework\App\Response\Http\FileFactory $fileFactory,
\Magento\Customer\Model\CustomerFactory $customerFactory,
\Magento\Customer\Model\AddressFactory $addressFactory,
\Magento\Customer\Model\Metadata\FormFactory $formFactory,
\Magento\Newsletter\Model\SubscriberFactory $subscriberFactory,
\Magento\Customer\Helper\View $viewHelper,
\Magento\Framework\Math\Random $random,
CustomerRepositoryInterface $customerRepository,
\Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter,
Mapper $addressMapper,
AccountManagementInterface $customerAccountManagement,
AddressRepositoryInterface $addressRepository,
CustomerInterfaceFactory $customerDataFactory,
AddressInterfaceFactory $addressDataFactory,
\Magento\Customer\Model\Customer\Mapper $customerMapper,
\Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
DataObjectHelper $dataObjectHelper,
ObjectFactory $objectFactory,
\Magento\Framework\View\LayoutFactory $layoutFactory,
\Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory,
\Magento\Framework\View\Result\PageFactory $resultPageFactory,
\Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory,
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
) {
$this->_coreRegistry = $coreRegistry;
$this->_fileFactory = $fileFactory;
$this->_customerFactory = $customerFactory;
$this->_addressFactory = $addressFactory;
$this->_formFactory = $formFactory;
$this->_subscriberFactory = $subscriberFactory;
$this->_viewHelper = $viewHelper;
$this->_random = $random;
$this->_customerRepository = $customerRepository;
$this->_extensibleDataObjectConverter = $extensibleDataObjectConverter;
$this->addressMapper = $addressMapper;
$this->customerAccountManagement = $customerAccountManagement;
$this->addressRepository = $addressRepository;
$this->customerDataFactory = $customerDataFactory;
$this->addressDataFactory = $addressDataFactory;
$this->customerMapper = $customerMapper;
$this->dataObjectProcessor = $dataObjectProcessor;
$this->_objectFactory = $objectFactory;
$this->dataObjectHelper = $dataObjectHelper;
$this->layoutFactory = $layoutFactory;
$this->resultLayoutFactory = $resultLayoutFactory;
$this->resultPageFactory = $resultPageFactory;
$this->resultForwardFactory = $resultForwardFactory;
$this->resultJsonFactory = $resultJsonFactory;
parent::__construct($context);
}
/**
* Customer initialization
*
* @return string customer id
*/
protected function initCurrentCustomer()
{
$customerId = (int)$this->getRequest()->getParam('id');
if ($customerId) {
$this->_coreRegistry->register(RegistryConstants::CURRENT_CUSTOMER_ID, $customerId);
}
return $customerId;
}
/**
* Prepare customer default title
*
* @param \Magento\Backend\Model\View\Result\Page $resultPage
* @return void
*/
protected function prepareDefaultCustomerTitle(\Magento\Backend\Model\View\Result\Page $resultPage)
{
$resultPage->getConfig()->getTitle()->prepend(__('Customers'));
}
/**
* Add errors messages to session.
*
* @param array|string $messages
* @return void
*
* @SuppressWarnings(PHPMD.UnusedLocalVariable)
*/
protected function _addSessionErrorMessages($messages)
{
$messages = (array)$messages;
$callback = function ($error) {
if (!$error instanceof Error) {
$error = new Error($error);
}
$this->messageManager->addMessage($error);
};
array_walk_recursive($messages, $callback);
}
/**
* Helper function that handles mass actions by taking in a callable for handling a single customer action.
*
* @param callable $singleAction A single action callable that takes a customer ID as input
* @param int[] $customerIds Array of customer Ids to perform the action upon
* @return int Number of customers successfully acted upon
* @deprecated 101.0.0
*/
protected function actUponMultipleCustomers(callable $singleAction, $customerIds)
{
if (!is_array($customerIds)) {
$this->messageManager->addErrorMessage(__('Please select customer(s).'));
return 0;
}
$customersUpdated = 0;
foreach ($customerIds as $customerId) {
try {
$singleAction($customerId);
$customersUpdated++;
} catch (\Exception $exception) {
$this->messageManager->addErrorMessage($exception->getMessage());
}
}
return $customersUpdated;
}
}
|