diff --git a/Block/Subscribe.php b/Block/Subscribe.php
index 7c54c05b..bff1eb44 100644
--- a/Block/Subscribe.php
+++ b/Block/Subscribe.php
@@ -3,7 +3,10 @@
namespace Ebizmarts\MailChimp\Block;
use Magento\Framework\View\Element\Template;
-use \Ebizmarts\MailChimp\Helper\Data as MailchimpHelper;
+use Magento\Customer\Model\Session;
+use Magento\Customer\Api\CustomerRepositoryInterface;
+use Magento\Customer\Model\CustomerFactory;
+use Ebizmarts\MailChimp\Helper\Data as MailchimpHelper;
class Subscribe extends \Magento\Newsletter\Block\Subscribe
{
@@ -15,21 +18,38 @@ class Subscribe extends \Magento\Newsletter\Block\Subscribe
* @var MailchimpHelper
*/
protected $helper;
+ /**
+ * @var Session
+ */
+ private $customerSession;
+ /**
+ * @var CustomerRepositoryInterface
+ */
+ private $customerRepo;
+ private $customerFactory;
/**
* @param Template\Context $context
* @param MailchimpHelper $helper
+ * @param Session $customerSession
+ * @param CustomerRepositoryInterface $customerRepo
* @param array $data
*/
public function __construct(
Template\Context $context,
MailchimpHelper $helper,
+ Session $customerSession,
+ CustomerRepositoryInterface $customerRepo,
+ CustomerFactory $customerFactory,
array $data = []
)
{
parent::__construct($context, $data);
$this->context = $context;
$this->helper = $helper;
+ $this->customerSession = $customerSession;
+ $this->customerRepo = $customerRepo;
+ $this->customerFactory = $customerFactory;
}
public function getPopupUrl()
@@ -42,4 +62,24 @@ public function getFormActionUrl()
{
return $this->getUrl('mailchimp/subscriber/subscribe', ['_secure' => true]);
}
+ public function showMobilePhone()
+ {
+ $ret = true;
+ if ($this->customerSession->getCustomerId()) {
+ /**
+ * @var $customer \Magento\Customer\Model\Customer
+ */
+ $customer = $this->customerFactory->create()->load($this->customerSession->getCustomerId());
+// /**
+// * @var $customer \Magento\Customer\Model\Customer
+// */
+// $customer = $this->customerRepo->getById($this->customerSession->getCustomerId());
+ $mobilePhone = $customer->getData('mobile_phone');
+ $this->helper->log("Mobile [$mobilePhone]");
+ if ($mobilePhone&&$mobilePhone!='') {
+ $ret = false;
+ }
+ }
+ return $ret;
+ }
}
diff --git a/Helper/Data.php b/Helper/Data.php
index 5f97c860..8c359f0e 100755
--- a/Helper/Data.php
+++ b/Helper/Data.php
@@ -11,10 +11,30 @@
namespace Ebizmarts\MailChimp\Helper;
-use Magento\Framework\App\ResourceConnection;
-use Magento\Framework\Exception\ValidatorException;
-use Magento\Store\Model\Store;
use Symfony\Component\Config\Definition\Exception\Exception;
+use Magento\Framework\App\ResourceConnection;
+use Magento\Framework\App\DeploymentConfig;
+use Magento\Framework\App\Cache\TypeListInterface;
+use Magento\Framework\App\Helper\Context;
+use Magento\Framework\Stdlib\DateTime\DateTime;
+use Magento\Framework\Locale\Resolver;
+use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;
+use Magento\Framework\Module\ModuleList\Loader;
+use Magento\Framework\Encryption\Encryptor;
+use Magento\Directory\Api\CountryInformationAcquirerInterface;
+use Magento\Directory\Model\CountryFactory;
+use Magento\Customer\Model\Session;
+use Magento\Customer\Api\CustomerRepositoryInterface;
+use Magento\Customer\Model\ResourceModel\Attribute\CollectionFactory as AttributeCollectionFactory;
+use Magento\Customer\Model\ResourceModel\Customer\CollectionFactory as CustomerCollectionFactory;
+use Magento\Newsletter\Model\ResourceModel\Subscriber\CollectionFactory as SubscriberCollectionFactory;
+use Magento\Store\Model\StoreManagerInterface;
+use Magento\Config\Model\ResourceModel\Config;
+use Ebizmarts\MailChimp\Model\Logger\Logger;
+use Ebizmarts\MailChimp\Model\MailChimpSyncBatches;
+use Ebizmarts\MailChimp\Model\MailChimpStoresFactory;
+use Ebizmarts\MailChimp\Model\MailChimpStores;
+use Ebizmarts\MailChimp\Model\MailChimpInterestGroupFactory;
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
@@ -97,11 +117,11 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
protected $counters = [];
/**
- * @var \Magento\Store\Model\StoreManagerInterface
+ * @var StoreManagerInterface
*/
private $_storeManager;
/**
- * @var \Ebizmarts\MailChimp\Model\Logger\Logger
+ * @var Logger
*/
private $_mlogger;
/**
@@ -113,139 +133,144 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
*/
protected $_request;
/**
- * @var \Magento\Framework\Module\ModuleList\Loader
+ * @var Loader
*/
private $_loader;
/**
- * @var \Magento\Config\Model\ResourceModel\Config
+ * @var Config
*/
private $_config;
/**
* @var \Mailchimp
*/
private $_api;
-
/**
- * @var \Ebizmarts\MailChimp\Model\MailChimpSyncBatches
+ * @var MailChimpSyncBatches
*/
private $_syncBatches;
/**
- * @var \Ebizmarts\MailChimp\Model\MailChimpStoresFactory
+ * @var MailChimpStoresFactory
*/
private $_mailChimpStoresFactory;
/**
- * @var \Ebizmarts\MailChimp\Model\MailChimpStores
+ * @var MailChimpStores
*/
private $_mailChimpStores;
/**
- * @var \Magento\Framework\Encryption\Encryptor
+ * @var Encryptor
*/
private $_encryptor;
/**
- * @var \Magento\Newsletter\Model\ResourceModel\Subscriber\CollectionFactory
+ * @var SubscriberCollectionFactory
*/
private $_subscriberCollection;
/**
- * @var \Magento\Customer\Model\ResourceModel\Customer\CollectionFactory
+ * @var CustomerCollectionFactory
*/
private $_customerCollection;
/**
- * @var \Magento\Framework\App\ResourceConnection
+ * @var ResourceConnection
*/
private $_resource;
/**
- * @var \Magento\Framework\App\Cache\TypeListInterface
+ * @var TypeListInterface
*/
private $_cacheTypeList;
/**
- * @var \Magento\Customer\Model\ResourceModel\Attribute\CollectionFactory
+ * @var AttributeCollectionFactory
*/
private $_attCollection;
/**
- * @var \Magento\Customer\Model\CustomerFactory
+ * @var CustomerRepositoryInterface
*/
- protected $_customerFactory;
+ protected $_customerRepo;
/**
- * @var \Magento\Directory\Api\CountryInformationAcquirerInterface
+ * @var CountryInformationAcquirerInterface
*/
protected $_countryInformation;
/**
- * @var \Ebizmarts\MailChimp\Model\MailChimpInterestGroupFactory
+ * @var MailChimpInterestGroupFactory
*/
protected $_interestGroupFactory;
/**
- * @var \Magento\Framework\Stdlib\DateTime\DateTime
+ * @var DateTime
*/
protected $_date;
/**
- * @var \Magento\Framework\App\DeploymentConfig
+ * @var DeploymentConfig
*/
protected $_deploymentConfig;
/**
- * @var \Magento\Framework\Serialize\Serializer\Json
+ * @var JsonSerializer
*/
protected $_serializer;
/**
- * @var \Magento\Directory\Model\CountryFactory
+ * @var CountryFactory
*/
protected $countryFactory;
/**
- * @var \Magento\Framework\Locale\Resolver
+ * @var Resolver
*/
protected $resolver;
private $customerAtt = null;
private $addressAtt = null;
private $_mapFields = null;
+ /**
+ * @var Session
+ */
+ private $customerSession = null;
/**
- * @param \Magento\Framework\App\Helper\Context $context
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param \Ebizmarts\MailChimp\Model\Logger\Logger $logger
- * @param \Magento\Framework\Module\ModuleList\Loader $loader
- * @param \Magento\Config\Model\ResourceModel\Config $config
+ * @param Context $context
+ * @param StoreManagerInterface $storeManager
+ * @param Logger $logger
+ * @param Loader $loader
+ * @param Config $config
* @param \Mailchimp $api
- * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
- * @param \Ebizmarts\MailChimp\Model\MailChimpSyncBatches $syncBatches
- * @param \Ebizmarts\MailChimp\Model\MailChimpStoresFactory $mailChimpStoresFactory
- * @param \Ebizmarts\MailChimp\Model\MailChimpStores $mailChimpStores
- * @param \Magento\Customer\Model\ResourceModel\Attribute\CollectionFactory $attCollection
- * @param \Magento\Framework\Encryption\Encryptor $encryptor
- * @param \Magento\Newsletter\Model\ResourceModel\Subscriber\CollectionFactory $subscriberCollection
- * @param \Magento\Customer\Model\ResourceModel\Customer\CollectionFactory $customerCollection
- * @param \Magento\Customer\Model\CustomerFactory $customerFactory
- * @param \Magento\Directory\Api\CountryInformationAcquirerInterface $countryInformation
+ * @param TypeListInterface $cacheTypeList
+ * @param MailChimpSyncBatches $syncBatches
+ * @param MailChimpStoresFactory $mailChimpStoresFactory
+ * @param MailChimpStores $mailChimpStores
+ * @param AttributeCollectionFactory $attCollection
+ * @param Encryptor $encryptor
+ * @param SubscriberCollectionFactory $subscriberCollection
+ * @param CustomerCollectionFactory $customerCollection
+ * @param CustomerRepositoryInterface $customerRepository
+ * @param CountryInformationAcquirerInterface $countryInformation
* @param ResourceConnection $resource
- * @param \Ebizmarts\MailChimp\Model\MailChimpInterestGroupFactory $interestGroupFactory
- * @param \Magento\Framework\Serialize\Serializer\Json $serializer
- * @param \Magento\Framework\App\DeploymentConfig $deploymentConfig
- * @param \Magento\Framework\Stdlib\DateTime\DateTime $date
- * @param \Magento\Directory\Model\CountryFactory $countryFactory
- * @param \Magento\Framework\Locale\Resolver $resolver
+ * @param MailChimpInterestGroupFactory $interestGroupFactory
+ * @param JsonSerializer $serializer
+ * @param DeploymentConfig $deploymentConfig
+ * @param DateTime $date
+ * @param CountryFactory $countryFactory
+ * @param Resolver $resolver
+ * @param Session $customerSession
*/
public function __construct(
- \Magento\Framework\App\Helper\Context $context,
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \Ebizmarts\MailChimp\Model\Logger\Logger $logger,
- \Magento\Framework\Module\ModuleList\Loader $loader,
- \Magento\Config\Model\ResourceModel\Config $config,
+ Context $context,
+ StoreManagerInterface $storeManager,
+ Logger $logger,
+ Loader $loader,
+ Config $config,
\Mailchimp $api,
- \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
- \Ebizmarts\MailChimp\Model\MailChimpSyncBatches $syncBatches,
- \Ebizmarts\MailChimp\Model\MailChimpStoresFactory $mailChimpStoresFactory,
- \Ebizmarts\MailChimp\Model\MailChimpStores $mailChimpStores,
- \Magento\Customer\Model\ResourceModel\Attribute\CollectionFactory $attCollection,
- \Magento\Framework\Encryption\Encryptor $encryptor,
- \Magento\Newsletter\Model\ResourceModel\Subscriber\CollectionFactory $subscriberCollection,
- \Magento\Customer\Model\ResourceModel\Customer\CollectionFactory $customerCollection,
- \Magento\Customer\Model\CustomerFactory $customerFactory,
- \Magento\Directory\Api\CountryInformationAcquirerInterface $countryInformation,
- \Magento\Framework\App\ResourceConnection $resource,
- \Ebizmarts\MailChimp\Model\MailChimpInterestGroupFactory $interestGroupFactory,
- \Magento\Framework\Serialize\Serializer\Json $serializer,
- \Magento\Framework\App\DeploymentConfig $deploymentConfig,
- \Magento\Framework\Stdlib\DateTime\DateTime $date,
- \Magento\Directory\Model\CountryFactory $countryFactory,
- \Magento\Framework\Locale\Resolver $resolver
+ TypeListInterface $cacheTypeList,
+ MailChimpSyncBatches $syncBatches,
+ MailChimpStoresFactory $mailChimpStoresFactory,
+ MailChimpStores $mailChimpStores,
+ AttributeCollectionFactory $attCollection,
+ Encryptor $encryptor,
+ SubscriberCollectionFactory $subscriberCollection,
+ CustomerCollectionFactory $customerCollection,
+ CustomerRepositoryInterface $customerRepository,
+ CountryInformationAcquirerInterface $countryInformation,
+ ResourceConnection $resource,
+ MailChimpInterestGroupFactory $interestGroupFactory,
+ JsonSerializer $serializer,
+ DeploymentConfig $deploymentConfig,
+ DateTime $date,
+ CountryFactory $countryFactory,
+ Resolver $resolver,
+ Session $customerSession
) {
$this->_storeManager = $storeManager;
@@ -264,7 +289,7 @@ public function __construct(
$this->_resource = $resource;
$this->_cacheTypeList = $cacheTypeList;
$this->_attCollection = $attCollection;
- $this->_customerFactory = $customerFactory;
+ $this->_customerRepo = $customerRepository;
$this->_countryInformation = $countryInformation;
$this->_interestGroupFactory = $interestGroupFactory;
$this->_serializer = $serializer;
@@ -272,6 +297,7 @@ public function __construct(
$this->_date = $date;
$this->countryFactory = $countryFactory;
$this->resolver = $resolver;
+ $this->customerSession = $customerSession;
parent::__construct($context);
}
@@ -726,25 +752,32 @@ public function getMergeVarsBySubscriber(\Magento\Newsletter\Model\Subscriber $s
if ($this->getConfigValue(self::XML_FOOTER_PHONE, $webSiteId, "websites")) {
$phone_field = $this->getConfigValue(self::XML_FOOTER_MAP , $webSiteId, "websites");
$phone = $subscriber->getPhone();
- if ($phone_field && $subscriber->getPhone()) {
- $mergeVars[$phone_field] = $subscriber->getPhone();
+ if ($phone_field && $phone) {
+ $mergeVars[$phone_field] = $phone;
}
}
if (!$email) {
$email = $subscriber->getEmail();
}
- try {
- /**
- * @var $customer \Magento\Customer\Model\Customer
- */
- $customer = $this->_customerFactory->create();
- $customer->setWebsiteId($webSiteId);
- $customer->loadByEmail($email);
- if ($customer->getData('email') == $email) {
- $mergeVars = array_merge($mergeVars,$this->getMergeVars($customer, $customer->getStoreId()));
+ if ($this->customerSession->getCustomerId()) {
+ try {
+ /**
+ * @var $customer \Magento\Customer\Model\Customer
+ */
+ $customer = $this->_customerRepo->getById($this->customerSession->getCustomerId());
+ if ($customer->getData('mobile_phone')) {
+ $this->log($customer->getData('mobile_phone'));
+ } else {
+ $this->log('no mobile phone');
+ }
+ if ($customer->getData('email') == $email) {
+ $mergeVars = array_merge($mergeVars, $this->getMergeVars($customer, $customer->getStoreId()));
+ }
+ } catch (\Exception $e) {
+ $this->log($e->getMessage());
}
- } catch (\Exception $e) {
- $this->log($e->getMessage());
+ } else {
+ $this->log("Subscriber is not a customer");
}
return $mergeVars;
}
diff --git a/Model/Plugin/SubscriptionManager.php b/Model/Plugin/SubscriptionManager.php
index 5d160823..3ab5e3de 100644
--- a/Model/Plugin/SubscriptionManager.php
+++ b/Model/Plugin/SubscriptionManager.php
@@ -12,10 +12,10 @@
namespace Ebizmarts\MailChimp\Model\Plugin;
use Magento\Newsletter\Model\SubscriberFactory;
-use \Ebizmarts\MailChimp\Helper\Data as Helper;
-use \Magento\Customer\Model\ResourceModel\CustomerRepository;
-use \Magento\Customer\Model\Session;
-use \Magento\Store\Model\StoreManagerInterface;
+use Ebizmarts\MailChimp\Helper\Data as Helper;
+use Magento\Customer\Model\ResourceModel\CustomerRepository;
+use Magento\Customer\Model\Session;
+use Magento\Store\Model\StoreManagerInterface;
class SubscriptionManager
{
diff --git a/Setup/Patch/Data/PhoneSMSCustomerAttribute.php b/Setup/Patch/Data/PhoneSMSCustomerAttribute.php
new file mode 100644
index 00000000..2c3b3359
--- /dev/null
+++ b/Setup/Patch/Data/PhoneSMSCustomerAttribute.php
@@ -0,0 +1,102 @@
+moduleDataSetup = $moduleDataSetup;
+ $this->eavSetupFactory = $eavSetupFactory;
+ $this->eavConfig = $eavConfig;
+ $this->attributeResource = $attributeResource;
+ }
+ public function apply()
+ {
+ $this->moduleDataSetup->getConnection()->startSetup();
+ $this->addPhoneSMSAttribute();
+ $this->moduleDataSetup->getConnection()->endSetup();
+ }
+ private function addPhoneSMSAttribute()
+ {
+ $eavSetup = $this->eavSetupFactory->create();
+ $eavSetup->addAttribute(
+ \Magento\Customer\Model\Customer::ENTITY,
+ 'mobile_phone',
+ [
+ 'label' => 'Mobile Phone',
+ 'required' => false,
+ 'position' => 100,
+ 'system' => false,
+ 'visible' => true,
+ 'user_defined' => 1,
+ 'input' => 'text'
+ ]
+ );
+
+ $attributeSetId = $eavSetup->getDefaultAttributeSetId(Customer::ENTITY);
+ $attributeGroupId = $eavSetup->getDefaultAttributeGroupId(Customer::ENTITY);
+
+ $attribute = $this->eavConfig->getAttribute(Customer::ENTITY, 'mobile_phone');
+ $attribute->setData('attribute_set_id', $attributeSetId);
+ $attribute->setData('attribute_group_id', $attributeGroupId);
+
+ $attribute->setData('used_in_forms', [
+ 'adminhtml_customer',
+ 'adminhtml_customer_address',
+ 'customer_account_edit',
+ 'customer_address_edit',
+ 'customer_register_address',
+ 'customer_account_create'
+ ]);
+
+ $this->attributeResource->save($attribute);
+ }
+
+ public function revert()
+ {
+ }
+ public function getAliases()
+ {
+ return [];
+ }
+ public static function getDependencies()
+ {
+ return [];
+ }
+}
diff --git a/view/frontend/templates/footerwphone.phtml b/view/frontend/templates/footerwphone.phtml
index f00ad72c..91e40442 100644
--- a/view/frontend/templates/footerwphone.phtml
+++ b/view/frontend/templates/footerwphone.phtml
@@ -23,11 +23,13 @@
data-mage-init='{"mage/trim-input":{}}'
data-validate="{required:true, 'validate-email':true}"
/>
-
+ showMobilePhone()): ?>
+
+