newsletter modification from account
email modification from account
This commit is contained in:
@@ -71,7 +71,7 @@ class Customer extends BaseAction implements EventSubscriberInterface
|
|||||||
->setTitleId($event->getTitle())
|
->setTitleId($event->getTitle())
|
||||||
->setFirstname($event->getFirstname())
|
->setFirstname($event->getFirstname())
|
||||||
->setLastname($event->getLastname())
|
->setLastname($event->getLastname())
|
||||||
->setEmail($event->getEmail())
|
->setEmail($event->getEmail(), true)
|
||||||
->setPassword($event->getPassword())
|
->setPassword($event->getPassword())
|
||||||
->setReseller($event->getReseller())
|
->setReseller($event->getReseller())
|
||||||
->setSponsor($event->getSponsor())
|
->setSponsor($event->getSponsor())
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
|||||||
use Thelia\Core\Event\Newsletter\NewsletterEvent;
|
use Thelia\Core\Event\Newsletter\NewsletterEvent;
|
||||||
use Thelia\Core\Event\TheliaEvents;
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
use Thelia\Action\BaseAction;
|
use Thelia\Action\BaseAction;
|
||||||
|
use Thelia\Model\NewsletterQuery;
|
||||||
use Thelia\Model\Newsletter as NewsletterModel;
|
use Thelia\Model\Newsletter as NewsletterModel;
|
||||||
|
|
||||||
|
|
||||||
@@ -51,7 +52,20 @@ class Newsletter extends BaseAction implements EventSubscriberInterface
|
|||||||
|
|
||||||
public function unsubscribe(NewsletterEvent $event)
|
public function unsubscribe(NewsletterEvent $event)
|
||||||
{
|
{
|
||||||
// TODO
|
if(null !== $nl = NewsletterQuery::create()->findPk($event->getId())) {
|
||||||
|
$nl->delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(NewsletterEvent $event)
|
||||||
|
{
|
||||||
|
if(null !== $nl = NewsletterQuery::create()->findPk($event->getId())) {
|
||||||
|
$nl->setEmail($event->getEmail())
|
||||||
|
->setFirstname($event->getFirstname())
|
||||||
|
->setLastname($event->getLastname())
|
||||||
|
->setLocale($event->getLocale())
|
||||||
|
->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,6 +92,7 @@ class Newsletter extends BaseAction implements EventSubscriberInterface
|
|||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
TheliaEvents::NEWSLETTER_SUBSCRIBE => array('subscribe', 128),
|
TheliaEvents::NEWSLETTER_SUBSCRIBE => array('subscribe', 128),
|
||||||
|
TheliaEvents::NEWSLETTER_UPDATE => array('update', 128),
|
||||||
TheliaEvents::NEWSLETTER_UNSUBSCRIBE => array('unsubscribe', 128)
|
TheliaEvents::NEWSLETTER_UNSUBSCRIBE => array('unsubscribe', 128)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ namespace Thelia\Controller\Front;
|
|||||||
use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent;
|
use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent;
|
||||||
use Thelia\Core\Event\Customer\CustomerLoginEvent;
|
use Thelia\Core\Event\Customer\CustomerLoginEvent;
|
||||||
use Thelia\Core\Event\LostPasswordEvent;
|
use Thelia\Core\Event\LostPasswordEvent;
|
||||||
|
use Thelia\Core\Event\Newsletter\NewsletterEvent;
|
||||||
use Thelia\Core\Security\Authentication\CustomerUsernamePasswordFormAuthenticator;
|
use Thelia\Core\Security\Authentication\CustomerUsernamePasswordFormAuthenticator;
|
||||||
use Thelia\Core\Security\Exception\AuthenticationException;
|
use Thelia\Core\Security\Exception\AuthenticationException;
|
||||||
use Thelia\Core\Security\Exception\UsernameNotFoundException;
|
use Thelia\Core\Security\Exception\UsernameNotFoundException;
|
||||||
@@ -146,7 +147,7 @@ class CustomerController extends BaseFrontController
|
|||||||
'firstname' => $customer->getFirstName(),
|
'firstname' => $customer->getFirstName(),
|
||||||
'lastname' => $customer->getLastName(),
|
'lastname' => $customer->getLastName(),
|
||||||
'email' => $customer->getEmail(),
|
'email' => $customer->getEmail(),
|
||||||
'newsletter' => NewsletterQuery::isSubscribed($customer->getEmail())
|
'newsletter' => null !== NewsletterQuery::create()->findOneByEmail($customer->getEmail()),
|
||||||
);
|
);
|
||||||
|
|
||||||
$customerProfilUpdateForm = new CustomerProfilUpdateForm($this->getRequest(), 'form', $data);
|
$customerProfilUpdateForm = new CustomerProfilUpdateForm($this->getRequest(), 'form', $data);
|
||||||
@@ -203,6 +204,7 @@ class CustomerController extends BaseFrontController
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
$customer = $this->getSecurityContext()->getCustomerUser();
|
$customer = $this->getSecurityContext()->getCustomerUser();
|
||||||
|
$newsletterOldEmail = $customer->getEmail();
|
||||||
|
|
||||||
$form = $this->validateForm($customerProfilUpdateForm, "post");
|
$form = $this->validateForm($customerProfilUpdateForm, "post");
|
||||||
|
|
||||||
@@ -210,14 +212,29 @@ class CustomerController extends BaseFrontController
|
|||||||
$customerChangeEvent->setCustomer($customer);
|
$customerChangeEvent->setCustomer($customer);
|
||||||
$this->dispatch(TheliaEvents::CUSTOMER_UPDATEPROFIL, $customerChangeEvent);
|
$this->dispatch(TheliaEvents::CUSTOMER_UPDATEPROFIL, $customerChangeEvent);
|
||||||
|
|
||||||
|
$updatedCustomer = $customerChangeEvent->getCustomer();
|
||||||
|
|
||||||
// Newsletter
|
// Newsletter
|
||||||
if ($form->get('newsletter')->getData()){
|
if (true === $form->get('newsletter')->getData()) {
|
||||||
//$this->dispatch(TheliaEvents::NEWSLETTER_SUBSCRIBE, $customerChangeEvent);
|
$nlEvent = new NewsletterEvent($updatedCustomer->getEmail(), $this->getRequest()->getSession()->getLang()->getLocale());
|
||||||
|
$nlEvent->setFirstname($updatedCustomer->getFirstname());
|
||||||
|
$nlEvent->setLastname($updatedCustomer->getLastname());
|
||||||
|
|
||||||
|
if(null !== $newsletter = NewsletterQuery::create()->findOneByEmail($newsletterOldEmail)) {
|
||||||
|
$nlEvent->setId($newsletter->getId());
|
||||||
|
$this->dispatch(TheliaEvents::NEWSLETTER_UPDATE, $nlEvent);
|
||||||
|
} else {
|
||||||
|
$this->dispatch(TheliaEvents::NEWSLETTER_SUBSCRIBE, $nlEvent);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
//$this->dispatch(TheliaEvents::NEWSLETTER_UNSUBSCRIBE, $customerChangeEvent);
|
if(null !== $newsletter = NewsletterQuery::create()->findOneByEmail($newsletterOldEmail)) {
|
||||||
|
$nlEvent = new NewsletterEvent($updatedCustomer->getEmail(), $this->getRequest()->getSession()->getLang()->getLocale());
|
||||||
|
$nlEvent->setId($newsletter->getId());
|
||||||
|
$this->dispatch(TheliaEvents::NEWSLETTER_UNSUBSCRIBE, $nlEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->processLogin($customerChangeEvent->getCustomer());
|
$this->processLogin($updatedCustomer);
|
||||||
|
|
||||||
$this->redirectSuccess($customerProfilUpdateForm);
|
$this->redirectSuccess($customerProfilUpdateForm);
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ use Thelia\Core\Event\ActionEvent;
|
|||||||
*/
|
*/
|
||||||
class NewsletterEvent extends ActionEvent
|
class NewsletterEvent extends ActionEvent
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var string email to save
|
||||||
|
*/
|
||||||
|
protected $id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string email to save
|
* @var string email to save
|
||||||
*/
|
*/
|
||||||
@@ -138,6 +143,22 @@ class NewsletterEvent extends ActionEvent
|
|||||||
return $this->locale;
|
return $this->locale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $id
|
||||||
|
*/
|
||||||
|
public function setId($id)
|
||||||
|
{
|
||||||
|
$this->id = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getId()
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -691,9 +691,6 @@ final class TheliaEvents
|
|||||||
* sent for subscribing to the newsletter
|
* sent for subscribing to the newsletter
|
||||||
*/
|
*/
|
||||||
const NEWSLETTER_SUBSCRIBE = 'thelia.newsletter.subscribe';
|
const NEWSLETTER_SUBSCRIBE = 'thelia.newsletter.subscribe';
|
||||||
|
const NEWSLETTER_UPDATE = 'thelia.newsletter.update';
|
||||||
/**
|
|
||||||
* sent for subscribing to the newsletter
|
|
||||||
*/
|
|
||||||
const NEWSLETTER_UNSUBSCRIBE = 'thelia.newsletter.unsubscribe';
|
const NEWSLETTER_UNSUBSCRIBE = 'thelia.newsletter.unsubscribe';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,5 @@ use Thelia\Model\Base\NewsletterQuery as BaseNewsletterQuery;
|
|||||||
*/
|
*/
|
||||||
class NewsletterQuery extends BaseNewsletterQuery
|
class NewsletterQuery extends BaseNewsletterQuery
|
||||||
{
|
{
|
||||||
public static function isSubscribed($email)
|
|
||||||
{
|
|
||||||
return (null === self::create()->findOneByEmail($email)) ? false : true;
|
|
||||||
}
|
|
||||||
} // NewsletterQuery
|
} // NewsletterQuery
|
||||||
|
|||||||
@@ -84,7 +84,8 @@
|
|||||||
<column name="description" type="CLOB" />
|
<column name="description" type="CLOB" />
|
||||||
<column name="chapo" type="LONGVARCHAR" />
|
<column name="chapo" type="LONGVARCHAR" />
|
||||||
<column name="postscriptum" type="LONGVARCHAR" />
|
<column name="postscriptum" type="LONGVARCHAR" />
|
||||||
<column name="by_default" type="TINYINT" />
|
<column defaultValue="0" name="by_default" type="TINYINT" />
|
||||||
|
<column defaultValue="0" name="shop_country" required="true" type="BOOLEAN" />
|
||||||
<foreign-key foreignTable="area" name="fk_country_area_id" onDelete="SET NULL" onUpdate="RESTRICT">
|
<foreign-key foreignTable="area" name="fk_country_area_id" onDelete="SET NULL" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="area_id" />
|
<reference foreign="id" local="area_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
@@ -767,13 +768,12 @@
|
|||||||
<foreign-key foreignTable="profile" name="fk_admin_profile_id" onDelete="RESTRICT" onUpdate="RESTRICT">
|
<foreign-key foreignTable="profile" name="fk_admin_profile_id" onDelete="RESTRICT" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="profile_id" />
|
<reference foreign="id" local="profile_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<index name="fk_admin_profile_id">
|
<index name="idx_admin_profile_id">
|
||||||
<index-column name="profile_id" />
|
<index-column name="profile_id" />
|
||||||
</index>
|
</index>
|
||||||
<behavior name="timestampable" />
|
<behavior name="timestampable" />
|
||||||
</table>
|
</table>
|
||||||
<table isCrossRef="true" name="profile_resource" namespace="Thelia\Model">
|
<table isCrossRef="true" name="profile_resource" namespace="Thelia\Model">
|
||||||
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
|
||||||
<column name="profile_id" primaryKey="true" required="true" type="INTEGER" />
|
<column name="profile_id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
<column name="resource_id" primaryKey="true" required="true" type="INTEGER" />
|
<column name="resource_id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
<column defaultValue="0" name="access" required="true" type="INTEGER" />
|
<column defaultValue="0" name="access" required="true" type="INTEGER" />
|
||||||
@@ -783,7 +783,7 @@
|
|||||||
<foreign-key foreignTable="resource" name="fk_profile_resource_resource_id" onDelete="CASCADE" onUpdate="RESTRICT">
|
<foreign-key foreignTable="resource" name="fk_profile_resource_resource_id" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="resource_id" />
|
<reference foreign="id" local="resource_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<index name="id_profile_resource_profile_id">
|
<index name="idx_profile_resource_profile_id">
|
||||||
<index-column name="profile_id" />
|
<index-column name="profile_id" />
|
||||||
</index>
|
</index>
|
||||||
<index name="idx_profile_resource_resource_id">
|
<index name="idx_profile_resource_resource_id">
|
||||||
@@ -792,9 +792,8 @@
|
|||||||
<behavior name="timestampable" />
|
<behavior name="timestampable" />
|
||||||
</table>
|
</table>
|
||||||
<table name="profile_module" namespace="Thelia\Model">
|
<table name="profile_module" namespace="Thelia\Model">
|
||||||
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
<column name="profile_id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
<column name="profile_id" required="true" type="INTEGER" />
|
<column name="module_id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
<column name="module_id" type="INTEGER" />
|
|
||||||
<column defaultValue="0" name="access" type="TINYINT" />
|
<column defaultValue="0" name="access" type="TINYINT" />
|
||||||
<foreign-key foreignTable="profile" name="fk_profile_module_profile_id" onDelete="CASCADE" onUpdate="CASCADE">
|
<foreign-key foreignTable="profile" name="fk_profile_module_profile_id" onDelete="CASCADE" onUpdate="CASCADE">
|
||||||
<reference foreign="id" local="profile_id" />
|
<reference foreign="id" local="profile_id" />
|
||||||
@@ -932,16 +931,16 @@
|
|||||||
<column name="address_invoice_id" type="INTEGER" />
|
<column name="address_invoice_id" type="INTEGER" />
|
||||||
<column name="currency_id" type="INTEGER" />
|
<column name="currency_id" type="INTEGER" />
|
||||||
<column defaultValue="0" name="discount" type="FLOAT" />
|
<column defaultValue="0" name="discount" type="FLOAT" />
|
||||||
<foreign-key foreignTable="customer" name="fk_cart_customer_id">
|
<foreign-key foreignTable="customer" name="fk_cart_customer_id" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="customer_id" />
|
<reference foreign="id" local="customer_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<foreign-key foreignTable="address" name="fk_cart_address_delivery_id">
|
<foreign-key foreignTable="address" name="fk_cart_address_delivery_id" onDelete="RESTRICT" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="address_delivery_id" />
|
<reference foreign="id" local="address_delivery_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<foreign-key foreignTable="address" name="fk_cart_address_invoice_id">
|
<foreign-key foreignTable="address" name="fk_cart_address_invoice_id" onDelete="RESTRICT" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="address_invoice_id" />
|
<reference foreign="id" local="address_invoice_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<foreign-key foreignTable="currency" name="fk_cart_currency_id">
|
<foreign-key foreignTable="currency" name="fk_cart_currency_id" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="currency_id" />
|
<reference foreign="id" local="currency_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<index name="idx_cart_customer_id">
|
<index name="idx_cart_customer_id">
|
||||||
@@ -972,13 +971,13 @@
|
|||||||
<column name="price_end_of_life" type="TIMESTAMP" />
|
<column name="price_end_of_life" type="TIMESTAMP" />
|
||||||
<column defaultValue="0" name="discount" type="FLOAT" />
|
<column defaultValue="0" name="discount" type="FLOAT" />
|
||||||
<column name="promo" type="INTEGER" />
|
<column name="promo" type="INTEGER" />
|
||||||
<foreign-key foreignTable="cart" name="fk_cart_item_cart_id">
|
<foreign-key foreignTable="cart" name="fk_cart_item_cart_id" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="cart_id" />
|
<reference foreign="id" local="cart_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<foreign-key foreignTable="product" name="fk_cart_item_product_id">
|
<foreign-key foreignTable="product" name="fk_cart_item_product_id" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="product_id" />
|
<reference foreign="id" local="product_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<foreign-key foreignTable="product_sale_elements" name="fk_cart_item_product_sale_elements_id">
|
<foreign-key foreignTable="product_sale_elements" name="fk_cart_item_product_sale_elements_id" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||||
<reference foreign="id" local="product_sale_elements_id" />
|
<reference foreign="id" local="product_sale_elements_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
<index name="idx_cart_item_cart_id">
|
<index name="idx_cart_item_cart_id">
|
||||||
@@ -995,8 +994,9 @@
|
|||||||
<table name="product_price" namespace="Thelia\Model">
|
<table name="product_price" namespace="Thelia\Model">
|
||||||
<column name="product_sale_elements_id" primaryKey="true" required="true" type="INTEGER" />
|
<column name="product_sale_elements_id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
<column name="currency_id" primaryKey="true" required="true" type="INTEGER" />
|
<column name="currency_id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
<column name="price" required="true" type="FLOAT" />
|
<column defaultValue="0" name="price" required="true" type="FLOAT" />
|
||||||
<column name="promo_price" type="FLOAT" />
|
<column defaultValue="0" name="promo_price" required="true" type="FLOAT" />
|
||||||
|
<column defaultValue="1" name="from_default_currency" required="true" type="BOOLEAN" />
|
||||||
<foreign-key foreignTable="product_sale_elements" name="fk_product_price_product_sale_elements_id" onDelete="CASCADE">
|
<foreign-key foreignTable="product_sale_elements" name="fk_product_price_product_sale_elements_id" onDelete="CASCADE">
|
||||||
<reference foreign="id" local="product_sale_elements_id" />
|
<reference foreign="id" local="product_sale_elements_id" />
|
||||||
</foreign-key>
|
</foreign-key>
|
||||||
@@ -1250,7 +1250,10 @@
|
|||||||
<column name="email" required="true" size="255" type="VARCHAR" />
|
<column name="email" required="true" size="255" type="VARCHAR" />
|
||||||
<column name="firstname" size="255" type="VARCHAR" />
|
<column name="firstname" size="255" type="VARCHAR" />
|
||||||
<column name="lastname" size="255" type="VARCHAR" />
|
<column name="lastname" size="255" type="VARCHAR" />
|
||||||
<column name="locale" size="45" type="VARCHAR" />
|
<column name="locale" size="5" type="VARCHAR" />
|
||||||
|
<unique name="email_UNIQUE">
|
||||||
|
<unique-column name="email" />
|
||||||
|
</unique>
|
||||||
<behavior name="timestampable" />
|
<behavior name="timestampable" />
|
||||||
</table>
|
</table>
|
||||||
</database>
|
</database>
|
||||||
|
|||||||
Reference in New Issue
Block a user