Implemented front-office login
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
/* Thelia */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : info@thelia.net */
|
||||
/* email : info@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* This program is free software; you can redistribute it and/or modify */
|
||||
@@ -17,7 +17,7 @@
|
||||
/* GNU General Public License for more details. */
|
||||
/* */
|
||||
/* You should have received a copy of the GNU General Public License */
|
||||
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
@@ -39,30 +39,28 @@ use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Tools\Redirect;
|
||||
use Symfony\Component\Validator\Exception\ValidatorException;
|
||||
use Thelia\Core\Security\Exception\AuthenticationException;
|
||||
use Thelia\Core\Template\ParserContext;
|
||||
use Thelia\Core\Security\Exception\UsernameNotFoundException;
|
||||
|
||||
class Customer implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* @var Thelia\Core\Security\SecurityContext
|
||||
*/
|
||||
private $securityContext;
|
||||
protected $securityContext;
|
||||
|
||||
public function __construct(SecurityContext $context) {
|
||||
$this->securityContext = $context;
|
||||
/**
|
||||
* @var Thelia\Core\Template\ParserContext
|
||||
*/
|
||||
protected $parserContext;
|
||||
|
||||
$context->setContext(SecurityContext::CONTEXT_FRONT_OFFICE);
|
||||
public function __construct(SecurityContext $securityContext, ParserContext $parserContext) {
|
||||
$this->securityContext = $securityContext;
|
||||
$this->parserContext = $parserContext;
|
||||
}
|
||||
|
||||
|
||||
private function getSecurityContext($context) {
|
||||
$this->securityContext->setContext($context === false ? SecurityContext::CONTEXT_FRONT_OFFICE : $context);
|
||||
|
||||
return $securityContext;
|
||||
}
|
||||
|
||||
public function create(ActionEvent $event)
|
||||
{
|
||||
|
||||
$event->getDispatcher()->dispatch(TheliaEvents::BEFORE_CREATECUSTOMER, $event);
|
||||
|
||||
$request = $event->getRequest();
|
||||
@@ -94,25 +92,35 @@ class Customer implements EventSubscriberInterface
|
||||
$data["password"],
|
||||
$request->getSession()->getLang()
|
||||
);
|
||||
|
||||
$event->getDispatcher()->dispatch(TheliaEvents::AFTER_CREATECUSTOMER, $event);
|
||||
|
||||
// Connect the newly created user,and redirect to the success URL
|
||||
$this->processSuccessfulLogin($event, $customer, $customerCreation, true);
|
||||
|
||||
} catch (\PropelException $e) {
|
||||
Tlog::getInstance()->error(sprintf('error during creating customer on action/createCustomer with message "%s"', $e->getMessage()));
|
||||
$event->setFormError($customerCreation);
|
||||
|
||||
$message = "Failed to create your account, please try again.";
|
||||
}
|
||||
|
||||
//Customer is create, he is automatically connected
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
$event->setFormError($customerCreation);
|
||||
$message = "Missing or invalid data";
|
||||
}
|
||||
}
|
||||
else {
|
||||
$message = "Wrong form method !";
|
||||
}
|
||||
|
||||
$event->getDispatcher()->dispatch(TheliaEvents::AFTER_CREATECUSTOMER, $event);
|
||||
$this->parserContext->set('customer_creation_error_message', $message);
|
||||
|
||||
$event->setFormError($customerCreation);
|
||||
}
|
||||
|
||||
public function modify(ActionEvent $event)
|
||||
{
|
||||
$event->getDispatcher()->dispatch(TheliaEvents::BEFORE_CHANGECUSTOMER, $event);
|
||||
|
||||
$request = $event->getRequest();
|
||||
|
||||
$customerModification = new CustomerModification($request);
|
||||
@@ -140,15 +148,44 @@ class Customer implements EventSubscriberInterface
|
||||
$data["zipcode"],
|
||||
$data["country"]
|
||||
);
|
||||
} catch(\PropelException $e) {
|
||||
|
||||
$event->getDispatcher()->dispatch(TheliaEvents::AFTER_CHANGECUSTOMER, $event);
|
||||
|
||||
// Update the logged-in user, and redirect to the success URL (exits)
|
||||
// We don-t send the login event, as the customer si already logged.
|
||||
$this->processSuccessfulLogin($event, $customer, $customerModification);
|
||||
}
|
||||
catch(\PropelException $e) {
|
||||
|
||||
Tlog::getInstance()->error(sprintf('error during modifying customer on action/modifyCustomer with message "%s"', $e->getMessage()));
|
||||
$event->setFormError($customerModification);
|
||||
|
||||
$message = "Failed to change your account, please try again.";
|
||||
}
|
||||
} else {
|
||||
$event->setFormError($customerModification);
|
||||
}
|
||||
else {
|
||||
$message = "Missing or invalid data";
|
||||
}
|
||||
}
|
||||
else {
|
||||
$message = "Wrong form method !";
|
||||
}
|
||||
|
||||
$this->parserContext->set('customer_change_error_message', $message);
|
||||
|
||||
$event->setFormError($customerModification);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Perform user logout. The user is redirected to the provided view, if any.
|
||||
*
|
||||
* @param ActionEvent $event
|
||||
*/
|
||||
public function logout(ActionEvent $event)
|
||||
{
|
||||
$event->getDispatcher()->dispatch(TheliaEvents::CUSTOMER_LOGOUT, $event);
|
||||
|
||||
$this->getSecurityContext()->clear();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,39 +207,33 @@ class Customer implements EventSubscriberInterface
|
||||
try {
|
||||
$user = $authenticator->getAuthentifiedUser();
|
||||
|
||||
// Success -> store user in security context
|
||||
$this->getSecurityContext()->setUser($user);
|
||||
|
||||
// Log authentication success
|
||||
AdminLog::append("Authentication successufull", $request, $user);
|
||||
|
||||
// Get the success URL to redirect the user to
|
||||
$successUrl = $form->getForm()->get('success_url')->getData();
|
||||
|
||||
if (null == $successUrl) $successUrl = ConfigQuery::read('base_url', '/');
|
||||
|
||||
// Redirect to the success URL
|
||||
return Redirect::exec(URL::absoluteUrl($successUrl));
|
||||
}
|
||||
$this->processSuccessfulLogin($event, $user, $form);
|
||||
}
|
||||
catch (ValidatorException $ex) {
|
||||
$message = "Missing or invalid information. Please check your input.";
|
||||
}
|
||||
catch (UsernameNotFoundException $ex) {
|
||||
$message = "This email address was not found.";
|
||||
}
|
||||
catch (AuthenticationException $ex) {
|
||||
$message = "Login failed. Please check your username and password.";
|
||||
}
|
||||
catch (\Exception $ex) {
|
||||
$message = sprintf("Unable to process your request. Please try again (%s).", $ex->getMessage());
|
||||
$message = sprintf("Unable to process your request. Please try again (%s in %s).", $ex->getMessage(), $ex->getFile());
|
||||
}
|
||||
|
||||
// Store the form name in session (see Form Smarty plugin to find usage of this parameter)
|
||||
$request->getSession()->setErrorFormName($form->getName());
|
||||
|
||||
// Put the message in the ParserContext to make it available to the template
|
||||
$this->parserContext->set('customer_login_error_message', $message);
|
||||
|
||||
// A this point, the same view is displayed again.
|
||||
}
|
||||
|
||||
public function changePassword(ActionEvent $event)
|
||||
{
|
||||
|
||||
// TODO
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -230,8 +261,36 @@ class Customer implements EventSubscriberInterface
|
||||
return array(
|
||||
"action.createCustomer" => array("create", 128),
|
||||
"action.modifyCustomer" => array("modify", 128),
|
||||
"action.loginCustomer" => array("login", 128)
|
||||
"action.loginCustomer" => array("login", 128),
|
||||
"action.logoutCustomer" => array("logout", 128),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stores the current user in the security context, and redirect to the
|
||||
* success_url.
|
||||
*
|
||||
* @param CustomerModel $user the logged user
|
||||
*/
|
||||
protected function processSuccessfulLogin(ActionEvent $event, CustomerModel $user, BaseForm $form, $sendLoginEvent = false)
|
||||
{
|
||||
// Success -> store user in security context
|
||||
$this->getSecurityContext()->setUser($user);
|
||||
|
||||
if ($sendLoginEvent) $event->getDispatcher()->dispatch(TheliaEvents::CUSTOMER_LOGIN, $event);
|
||||
|
||||
// Redirect to the success URL
|
||||
return Redirect::exec($form->getSuccessUrl());
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the security context, beeing sure that we're in the CONTEXT_FRONT_OFFICE context
|
||||
*
|
||||
* @return SecurityContext the security context
|
||||
*/
|
||||
protected function getSecurityContext() {
|
||||
$this->securityContext->setContext(SecurityContext::CONTEXT_FRONT_OFFICE);
|
||||
|
||||
return $this->securityContext;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,8 +94,9 @@ class BaseAdminController extends ContainerAware
|
||||
catch (AuthenticationException $ex) {
|
||||
|
||||
// User is not authenticated, and templates requires authentication -> redirect to login page
|
||||
// (see Thelia\Core\Template\Smarty\Plugins\Security)
|
||||
Redirect::exec(URL::absoluteUrl('admin/login')); // FIXME shoud be a parameter
|
||||
// We user login_tpl as a path, not a template.
|
||||
|
||||
Redirect::exec(URL::absoluteUrl($ex->getLoginTemplate()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ class SessionController extends BaseAdminController {
|
||||
$this->getSecurityContext()->clear();
|
||||
|
||||
// Go back to login page.
|
||||
return Redirect::exec(URL::absoluteUrl('admin/login'));
|
||||
return Redirect::exec(URL::absoluteUrl('/admin/login')); // FIXME - should be a parameter
|
||||
}
|
||||
|
||||
public function checkLoginAction()
|
||||
@@ -62,15 +62,10 @@ class SessionController extends BaseAdminController {
|
||||
$this->getSecurityContext()->setUser($user);
|
||||
|
||||
// Log authentication success
|
||||
AdminLog::append("Authentication successufull", $request, $user);
|
||||
|
||||
// Get the success URL to redirect the user to
|
||||
$successUrl = $form->getForm()->get('success_url')->getData();
|
||||
|
||||
if (null == $successUrl) $successUrl = 'admin/home';
|
||||
AdminLog::append("Authentication successuful", $request, $user);
|
||||
|
||||
// Redirect to the success URL
|
||||
return Redirect::exec(URL::absoluteUrl($successUrl));
|
||||
return Redirect::exec($form->getSuccessUrl());
|
||||
}
|
||||
catch (ValidatorException $ex) {
|
||||
|
||||
|
||||
@@ -20,7 +20,9 @@
|
||||
|
||||
<service id="thelia.action.customer" class="Thelia\Action\Customer" scope="request">
|
||||
<tag name="kernel.event_subscriber"/>
|
||||
|
||||
<argument type="service" id="thelia.securityContext"/>
|
||||
<argument type="service" id="thelia.parser.context"/>
|
||||
</service>
|
||||
|
||||
</services>
|
||||
|
||||
@@ -58,16 +58,24 @@
|
||||
<argument type="service" id="request" />
|
||||
</service>
|
||||
|
||||
<!-- Parser context -->
|
||||
|
||||
<service id="thelia.parser.context" class="Thelia\Core\Template\ParserContext" scope="request">
|
||||
<argument type="service" id="request" />
|
||||
</service>
|
||||
|
||||
<!-- Parser configuration -->
|
||||
|
||||
<service id="thelia.parser" class="Thelia\Core\Template\Smarty\SmartyParser" scope="request">
|
||||
<argument type="service" id="request" />
|
||||
<argument type="service" id="event_dispatcher"/>
|
||||
<argument type="service" id="thelia.parser.context"/>
|
||||
<argument >false</argument>
|
||||
<argument >%kernel.environment%</argument>
|
||||
<argument >%kernel.debug%</argument>
|
||||
</service>
|
||||
|
||||
|
||||
<!-- Smarty parser plugins -->
|
||||
|
||||
<service id="smarty.plugin.assetic" class="Thelia\Core\Template\Smarty\Plugins\Assetic" >
|
||||
|
||||
@@ -48,9 +48,14 @@ final class TheliaEvents
|
||||
*/
|
||||
const INCLUSION = "thelia.include";
|
||||
|
||||
const BEFORE_CREATECUSTOMER = "action.before_createcustomer";
|
||||
const CUSTOMER_LOGOUT = "action.customer_logout";
|
||||
const CUSTOMER_LOGIN = "action.customer_login";
|
||||
|
||||
const AFTER_CREATECUSTOMER = "action.after_createcustomer";
|
||||
const BEFORE_CREATECUSTOMER = "action.before_createcustomer";
|
||||
const AFTER_CREATECUSTOMER = "action.after_createcustomer";
|
||||
|
||||
const BEFORE_CHANGECUSTOMER = "action.before_changecustomer";
|
||||
const AFTER_CHANGECUSTOMER = "action.after_changecustomer";
|
||||
|
||||
const CREATECUSTOMER_CUSTOMREF = "customer.creation.customref";
|
||||
}
|
||||
|
||||
@@ -90,8 +90,6 @@ class ViewListener implements EventSubscriberInterface
|
||||
// Redirect to the login template
|
||||
$event->setResponse(Redirect::exec(URL::viewUrl($ex->getLoginTemplate())));
|
||||
}
|
||||
|
||||
throw new \Exception("toto !");
|
||||
}
|
||||
|
||||
public function beforeKernelView(GetResponseForControllerResultEvent $event)
|
||||
|
||||
@@ -27,6 +27,7 @@ use Symfony\Component\HttpFoundation\Session\Session as BaseSession;
|
||||
use Thelia\Core\Security\User\UserInterface;
|
||||
use Thelia\Form\BaseForm;
|
||||
use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Tools\URL;
|
||||
|
||||
class Session extends BaseSession {
|
||||
|
||||
@@ -109,7 +110,7 @@ class Session extends BaseSession {
|
||||
*/
|
||||
public function getReturnToUrl()
|
||||
{
|
||||
return $this->get('return_to_url', ConfigQuery::read('base_url'));
|
||||
return $this->get('return_to_url', URL::getIndexPage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ class CustomerUsernamePasswordFormAuthenticator extends UsernamePasswordFormAuth
|
||||
$loginForm,
|
||||
new CustomerUserProvider(),
|
||||
array(
|
||||
'username_field_name', 'email'
|
||||
'username_field_name' => 'email'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
62
core/lib/Thelia/Core/Template/ParserContext.php
Normal file
62
core/lib/Thelia/Core/Template/ParserContext.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* */
|
||||
/* Thelia */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : info@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* This program is free software; you can redistribute it and/or modify */
|
||||
/* it under the terms of the GNU General Public License as published by */
|
||||
/* the Free Software Foundation; either version 3 of the License */
|
||||
/* */
|
||||
/* This program is distributed in the hope that it will be useful, */
|
||||
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
|
||||
/* GNU General Public License for more details. */
|
||||
/* */
|
||||
/* You should have received a copy of the GNU General Public License */
|
||||
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
/* */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Thelia\Core\Template;
|
||||
|
||||
use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Core\HttpFoundation\Request;
|
||||
use Thelia\Tools\URL;
|
||||
/**
|
||||
* The parser context is an application-wide context, which stores var-value pairs.
|
||||
* Theses pairs are injected in the parser and becomes available to the templates.
|
||||
*
|
||||
* @author Franck Allimant <franck@cqfdev.fr>
|
||||
*/
|
||||
class ParserContext implements \IteratorAggregate
|
||||
{
|
||||
private $store = array();
|
||||
|
||||
public function __construct(Request $request) {
|
||||
|
||||
// Setup basic variables
|
||||
$this
|
||||
->set('base_url' , ConfigQuery::read('base_url', '/'))
|
||||
->set('index_page' , URL::getIndexPage())
|
||||
->set('return_to_url' , URL::absoluteUrl($request->getSession()->getReturnToUrl()))
|
||||
;
|
||||
}
|
||||
|
||||
public function set($name, $value) {
|
||||
$this->store[$name] = $value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function get($name) {
|
||||
return $this->store[$name];
|
||||
}
|
||||
|
||||
public function getIterator() {
|
||||
return new \ArrayIterator( $this->store );
|
||||
}
|
||||
}
|
||||
@@ -73,7 +73,7 @@ class SmartyAssetsManager
|
||||
$url = $this->assetic_manager->asseticize(
|
||||
$asset_dir.'/'.$asset_file,
|
||||
$this->web_root."/".$this->path_relative_to_web_root,
|
||||
URL::absoluteUrl($this->path_relative_to_web_root),
|
||||
URL::absoluteUrl($this->path_relative_to_web_root, array(), true /* path only */),
|
||||
$assetType,
|
||||
$filters,
|
||||
$debug
|
||||
|
||||
@@ -47,7 +47,7 @@ class UrlGenerator implements SmartyPluginInterface
|
||||
public function generateUrlFunction($params, &$smarty)
|
||||
{
|
||||
// the path to process
|
||||
$path =trim($params['path']);
|
||||
$path = trim($params['path']);
|
||||
|
||||
return URL::absoluteUrl($path, $this->getArgsFromParam($params));
|
||||
}
|
||||
@@ -61,10 +61,17 @@ class UrlGenerator implements SmartyPluginInterface
|
||||
*/
|
||||
public function generateViewUrlFunction($params, &$smarty)
|
||||
{
|
||||
// the path to process
|
||||
// the view name (without .html)
|
||||
$view = trim($params['view']);
|
||||
|
||||
return URL::viewUrl($view, $this->getArgsFromParam($params));
|
||||
// the related action (optionale)
|
||||
$action = trim($params['action']);
|
||||
|
||||
$args = $this->getArgsFromParam($params);
|
||||
|
||||
if (! empty($action)) $args['action'] = $action;
|
||||
|
||||
return URL::viewUrl($view, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,18 +89,6 @@ class UrlGenerator implements SmartyPluginInterface
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Process view url generator function
|
||||
*
|
||||
* @param array $params
|
||||
* @param unknown $smarty
|
||||
* @return string no text is returned.
|
||||
*/
|
||||
public function generateReturnToUrl($params, &$smarty)
|
||||
{
|
||||
return URL::absoluteUrl($this->request->getSession()->getReturnToUrl());
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the various smarty plugins hendled by this class
|
||||
*
|
||||
@@ -103,8 +98,7 @@ class UrlGenerator implements SmartyPluginInterface
|
||||
{
|
||||
return array(
|
||||
new SmartyPluginDescriptor('function', 'url', $this, 'generateUrlFunction'),
|
||||
new SmartyPluginDescriptor('function', 'viewurl', $this, 'generateViewUrlFunction'),
|
||||
new SmartyPluginDescriptor('function', 'return_to_url', $this, 'generateReturnToUrl')
|
||||
new SmartyPluginDescriptor('function', 'viewurl', $this, 'generateViewUrlFunction')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ use Thelia\Core\Template\ParserInterface;
|
||||
|
||||
use Thelia\Core\Template\Smarty\SmartyPluginInterface;
|
||||
use Thelia\Core\Template\Exception\ResourceNotFoundException;
|
||||
use Thelia\Core\Template\ParserContext;
|
||||
use Thelia\Model\ConfigQuery;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -23,7 +25,9 @@ class SmartyParser extends Smarty implements ParserInterface
|
||||
|
||||
public $plugins = array();
|
||||
|
||||
protected $request, $dispatcher;
|
||||
protected $request;
|
||||
protected $dispatcher;
|
||||
protected $parserContext;
|
||||
|
||||
protected $template = "";
|
||||
|
||||
@@ -36,12 +40,15 @@ class SmartyParser extends Smarty implements ParserInterface
|
||||
* @param string $env
|
||||
* @param bool $debug
|
||||
*/
|
||||
public function __construct(Request $request, EventDispatcherInterface $dispatcher, $template = false, $env = "prod", $debug = false)
|
||||
public function __construct(
|
||||
Request $request, EventDispatcherInterface $dispatcher, ParserContext $parserContext,
|
||||
$template = false, $env = "prod", $debug = false)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->request = $request;
|
||||
$this->dispatcher = $dispatcher;
|
||||
$this->parserContext = $parserContext;
|
||||
|
||||
// Configure basic Smarty parameters
|
||||
|
||||
@@ -51,11 +58,11 @@ class SmartyParser extends Smarty implements ParserInterface
|
||||
$cache_dir = THELIA_ROOT . 'cache/'. $env .'/smarty/cache';
|
||||
if (! is_dir($cache_dir)) @mkdir($cache_dir, 0777, true);
|
||||
|
||||
$this->setTemplate($template ?: 'smarty-sample'); // FIXME: put this in configuration
|
||||
|
||||
$this->setCompileDir($compile_dir);
|
||||
$this->setCacheDir($cache_dir);
|
||||
|
||||
$this->setTemplate($template ?: ConfigQuery::read('active-template', 'default'));
|
||||
|
||||
$this->debugging = $debug;
|
||||
|
||||
// Prevent smarty ErrorException: Notice: Undefined index bla bla bla...
|
||||
@@ -110,8 +117,13 @@ class SmartyParser extends Smarty implements ParserInterface
|
||||
* @param array $parameters an associative array of names / value pairs
|
||||
* @return string the rendered template text
|
||||
*/
|
||||
public function render($realTemplateName, array $parameters)
|
||||
public function render($realTemplateName, array $parameters = array())
|
||||
{
|
||||
// Assign the parserContext variables
|
||||
foreach($this->parserContext as $var => $value) {
|
||||
$this->assign($var, $value);
|
||||
}
|
||||
|
||||
$this->assign($parameters);
|
||||
|
||||
return $this->fetch($realTemplateName);
|
||||
@@ -126,11 +138,12 @@ class SmartyParser extends Smarty implements ParserInterface
|
||||
{
|
||||
try {
|
||||
$templateFile = $this->getTemplateFilePath();
|
||||
} catch(\RuntimeException $e) {
|
||||
}
|
||||
catch(\RuntimeException $e) {
|
||||
return new Response($e->getMessage(), "404");
|
||||
}
|
||||
|
||||
return $this->fetch($templateFile);
|
||||
return $this->render($templateFile);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,7 +46,6 @@ class AdminLogin extends BaseForm {
|
||||
->add("remember_me", "checkbox", array(
|
||||
'value' => 'yes'
|
||||
))
|
||||
->add("success_url", "text")
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ use Symfony\Component\Form\Extension\Csrf\CsrfExtension;
|
||||
use Symfony\Component\Form\Extension\Csrf\CsrfProvider\SessionCsrfProvider;
|
||||
use Symfony\Component\Validator\Validation;
|
||||
use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Tools\URL;
|
||||
|
||||
abstract class BaseForm {
|
||||
/**
|
||||
@@ -72,7 +73,7 @@ abstract class BaseForm {
|
||||
|
||||
// If not already set, define the success_url field
|
||||
if (! $this->formBuilder->has('success_url')) {
|
||||
$this->formBuilder->add("success_url", "text")
|
||||
$this->formBuilder->add("success_url", "text");
|
||||
}
|
||||
|
||||
$this->form = $this->formBuilder->getForm();
|
||||
|
||||
@@ -46,7 +46,6 @@ class CustomerLogin extends BaseForm {
|
||||
)
|
||||
))
|
||||
->add("remember_me", "checkbox")
|
||||
->add("success_url", "text")
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -149,11 +149,11 @@ abstract class Address implements ActiveRecordInterface
|
||||
protected $cellphone;
|
||||
|
||||
/**
|
||||
* The value for the default field.
|
||||
* The value for the is_default field.
|
||||
* Note: this column has a database default value of: 0
|
||||
* @var int
|
||||
*/
|
||||
protected $default;
|
||||
protected $is_default;
|
||||
|
||||
/**
|
||||
* The value for the created_at field.
|
||||
@@ -193,7 +193,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
*/
|
||||
public function applyDefaultValues()
|
||||
{
|
||||
$this->default = 0;
|
||||
$this->is_default = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -618,14 +618,14 @@ abstract class Address implements ActiveRecordInterface
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [default] column value.
|
||||
* Get the [is_default] column value.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getDefault()
|
||||
public function getIsDefault()
|
||||
{
|
||||
|
||||
return $this->default;
|
||||
return $this->is_default;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -992,25 +992,25 @@ abstract class Address implements ActiveRecordInterface
|
||||
} // setCellphone()
|
||||
|
||||
/**
|
||||
* Set the value of [default] column.
|
||||
* Set the value of [is_default] column.
|
||||
*
|
||||
* @param int $v new value
|
||||
* @return \Thelia\Model\Address The current object (for fluent API support)
|
||||
*/
|
||||
public function setDefault($v)
|
||||
public function setIsDefault($v)
|
||||
{
|
||||
if ($v !== null) {
|
||||
$v = (int) $v;
|
||||
}
|
||||
|
||||
if ($this->default !== $v) {
|
||||
$this->default = $v;
|
||||
$this->modifiedColumns[] = AddressTableMap::DEFAULT;
|
||||
if ($this->is_default !== $v) {
|
||||
$this->is_default = $v;
|
||||
$this->modifiedColumns[] = AddressTableMap::IS_DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
return $this;
|
||||
} // setDefault()
|
||||
} // setIsDefault()
|
||||
|
||||
/**
|
||||
* Sets the value of [created_at] column to a normalized version of the date/time value specified.
|
||||
@@ -1064,7 +1064,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
*/
|
||||
public function hasOnlyDefaultValues()
|
||||
{
|
||||
if ($this->default !== 0) {
|
||||
if ($this->is_default !== 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1140,8 +1140,8 @@ abstract class Address implements ActiveRecordInterface
|
||||
$col = $row[TableMap::TYPE_NUM == $indexType ? 14 + $startcol : AddressTableMap::translateFieldName('Cellphone', TableMap::TYPE_PHPNAME, $indexType)];
|
||||
$this->cellphone = (null !== $col) ? (string) $col : null;
|
||||
|
||||
$col = $row[TableMap::TYPE_NUM == $indexType ? 15 + $startcol : AddressTableMap::translateFieldName('Default', TableMap::TYPE_PHPNAME, $indexType)];
|
||||
$this->default = (null !== $col) ? (int) $col : null;
|
||||
$col = $row[TableMap::TYPE_NUM == $indexType ? 15 + $startcol : AddressTableMap::translateFieldName('IsDefault', TableMap::TYPE_PHPNAME, $indexType)];
|
||||
$this->is_default = (null !== $col) ? (int) $col : null;
|
||||
|
||||
$col = $row[TableMap::TYPE_NUM == $indexType ? 16 + $startcol : AddressTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)];
|
||||
if ($col === '0000-00-00 00:00:00') {
|
||||
@@ -1454,8 +1454,8 @@ abstract class Address implements ActiveRecordInterface
|
||||
if ($this->isColumnModified(AddressTableMap::CELLPHONE)) {
|
||||
$modifiedColumns[':p' . $index++] = 'CELLPHONE';
|
||||
}
|
||||
if ($this->isColumnModified(AddressTableMap::DEFAULT)) {
|
||||
$modifiedColumns[':p' . $index++] = 'DEFAULT';
|
||||
if ($this->isColumnModified(AddressTableMap::IS_DEFAULT)) {
|
||||
$modifiedColumns[':p' . $index++] = 'IS_DEFAULT';
|
||||
}
|
||||
if ($this->isColumnModified(AddressTableMap::CREATED_AT)) {
|
||||
$modifiedColumns[':p' . $index++] = 'CREATED_AT';
|
||||
@@ -1519,8 +1519,8 @@ abstract class Address implements ActiveRecordInterface
|
||||
case 'CELLPHONE':
|
||||
$stmt->bindValue($identifier, $this->cellphone, PDO::PARAM_STR);
|
||||
break;
|
||||
case 'DEFAULT':
|
||||
$stmt->bindValue($identifier, $this->default, PDO::PARAM_INT);
|
||||
case 'IS_DEFAULT':
|
||||
$stmt->bindValue($identifier, $this->is_default, PDO::PARAM_INT);
|
||||
break;
|
||||
case 'CREATED_AT':
|
||||
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
|
||||
@@ -1636,7 +1636,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
return $this->getCellphone();
|
||||
break;
|
||||
case 15:
|
||||
return $this->getDefault();
|
||||
return $this->getIsDefault();
|
||||
break;
|
||||
case 16:
|
||||
return $this->getCreatedAt();
|
||||
@@ -1688,7 +1688,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
$keys[12] => $this->getCountryId(),
|
||||
$keys[13] => $this->getPhone(),
|
||||
$keys[14] => $this->getCellphone(),
|
||||
$keys[15] => $this->getDefault(),
|
||||
$keys[15] => $this->getIsDefault(),
|
||||
$keys[16] => $this->getCreatedAt(),
|
||||
$keys[17] => $this->getUpdatedAt(),
|
||||
);
|
||||
@@ -1785,7 +1785,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
$this->setCellphone($value);
|
||||
break;
|
||||
case 15:
|
||||
$this->setDefault($value);
|
||||
$this->setIsDefault($value);
|
||||
break;
|
||||
case 16:
|
||||
$this->setCreatedAt($value);
|
||||
@@ -1832,7 +1832,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
if (array_key_exists($keys[12], $arr)) $this->setCountryId($arr[$keys[12]]);
|
||||
if (array_key_exists($keys[13], $arr)) $this->setPhone($arr[$keys[13]]);
|
||||
if (array_key_exists($keys[14], $arr)) $this->setCellphone($arr[$keys[14]]);
|
||||
if (array_key_exists($keys[15], $arr)) $this->setDefault($arr[$keys[15]]);
|
||||
if (array_key_exists($keys[15], $arr)) $this->setIsDefault($arr[$keys[15]]);
|
||||
if (array_key_exists($keys[16], $arr)) $this->setCreatedAt($arr[$keys[16]]);
|
||||
if (array_key_exists($keys[17], $arr)) $this->setUpdatedAt($arr[$keys[17]]);
|
||||
}
|
||||
@@ -1861,7 +1861,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
if ($this->isColumnModified(AddressTableMap::COUNTRY_ID)) $criteria->add(AddressTableMap::COUNTRY_ID, $this->country_id);
|
||||
if ($this->isColumnModified(AddressTableMap::PHONE)) $criteria->add(AddressTableMap::PHONE, $this->phone);
|
||||
if ($this->isColumnModified(AddressTableMap::CELLPHONE)) $criteria->add(AddressTableMap::CELLPHONE, $this->cellphone);
|
||||
if ($this->isColumnModified(AddressTableMap::DEFAULT)) $criteria->add(AddressTableMap::DEFAULT, $this->default);
|
||||
if ($this->isColumnModified(AddressTableMap::IS_DEFAULT)) $criteria->add(AddressTableMap::IS_DEFAULT, $this->is_default);
|
||||
if ($this->isColumnModified(AddressTableMap::CREATED_AT)) $criteria->add(AddressTableMap::CREATED_AT, $this->created_at);
|
||||
if ($this->isColumnModified(AddressTableMap::UPDATED_AT)) $criteria->add(AddressTableMap::UPDATED_AT, $this->updated_at);
|
||||
|
||||
@@ -1941,7 +1941,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
$copyObj->setCountryId($this->getCountryId());
|
||||
$copyObj->setPhone($this->getPhone());
|
||||
$copyObj->setCellphone($this->getCellphone());
|
||||
$copyObj->setDefault($this->getDefault());
|
||||
$copyObj->setIsDefault($this->getIsDefault());
|
||||
$copyObj->setCreatedAt($this->getCreatedAt());
|
||||
$copyObj->setUpdatedAt($this->getUpdatedAt());
|
||||
if ($makeNew) {
|
||||
@@ -2094,7 +2094,7 @@ abstract class Address implements ActiveRecordInterface
|
||||
$this->country_id = null;
|
||||
$this->phone = null;
|
||||
$this->cellphone = null;
|
||||
$this->default = null;
|
||||
$this->is_default = null;
|
||||
$this->created_at = null;
|
||||
$this->updated_at = null;
|
||||
$this->alreadyInSave = false;
|
||||
|
||||
@@ -36,7 +36,7 @@ use Thelia\Model\Map\AddressTableMap;
|
||||
* @method ChildAddressQuery orderByCountryId($order = Criteria::ASC) Order by the country_id column
|
||||
* @method ChildAddressQuery orderByPhone($order = Criteria::ASC) Order by the phone column
|
||||
* @method ChildAddressQuery orderByCellphone($order = Criteria::ASC) Order by the cellphone column
|
||||
* @method ChildAddressQuery orderByDefault($order = Criteria::ASC) Order by the default column
|
||||
* @method ChildAddressQuery orderByIsDefault($order = Criteria::ASC) Order by the is_default column
|
||||
* @method ChildAddressQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
|
||||
* @method ChildAddressQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
|
||||
*
|
||||
@@ -55,7 +55,7 @@ use Thelia\Model\Map\AddressTableMap;
|
||||
* @method ChildAddressQuery groupByCountryId() Group by the country_id column
|
||||
* @method ChildAddressQuery groupByPhone() Group by the phone column
|
||||
* @method ChildAddressQuery groupByCellphone() Group by the cellphone column
|
||||
* @method ChildAddressQuery groupByDefault() Group by the default column
|
||||
* @method ChildAddressQuery groupByIsDefault() Group by the is_default column
|
||||
* @method ChildAddressQuery groupByCreatedAt() Group by the created_at column
|
||||
* @method ChildAddressQuery groupByUpdatedAt() Group by the updated_at column
|
||||
*
|
||||
@@ -89,7 +89,7 @@ use Thelia\Model\Map\AddressTableMap;
|
||||
* @method ChildAddress findOneByCountryId(int $country_id) Return the first ChildAddress filtered by the country_id column
|
||||
* @method ChildAddress findOneByPhone(string $phone) Return the first ChildAddress filtered by the phone column
|
||||
* @method ChildAddress findOneByCellphone(string $cellphone) Return the first ChildAddress filtered by the cellphone column
|
||||
* @method ChildAddress findOneByDefault(int $default) Return the first ChildAddress filtered by the default column
|
||||
* @method ChildAddress findOneByIsDefault(int $is_default) Return the first ChildAddress filtered by the is_default column
|
||||
* @method ChildAddress findOneByCreatedAt(string $created_at) Return the first ChildAddress filtered by the created_at column
|
||||
* @method ChildAddress findOneByUpdatedAt(string $updated_at) Return the first ChildAddress filtered by the updated_at column
|
||||
*
|
||||
@@ -108,7 +108,7 @@ use Thelia\Model\Map\AddressTableMap;
|
||||
* @method array findByCountryId(int $country_id) Return ChildAddress objects filtered by the country_id column
|
||||
* @method array findByPhone(string $phone) Return ChildAddress objects filtered by the phone column
|
||||
* @method array findByCellphone(string $cellphone) Return ChildAddress objects filtered by the cellphone column
|
||||
* @method array findByDefault(int $default) Return ChildAddress objects filtered by the default column
|
||||
* @method array findByIsDefault(int $is_default) Return ChildAddress objects filtered by the is_default column
|
||||
* @method array findByCreatedAt(string $created_at) Return ChildAddress objects filtered by the created_at column
|
||||
* @method array findByUpdatedAt(string $updated_at) Return ChildAddress objects filtered by the updated_at column
|
||||
*
|
||||
@@ -199,7 +199,7 @@ abstract class AddressQuery extends ModelCriteria
|
||||
*/
|
||||
protected function findPkSimple($key, $con)
|
||||
{
|
||||
$sql = 'SELECT ID, TITLE, CUSTOMER_ID, CUSTOMER_TITLE_ID, COMPANY, FIRSTNAME, LASTNAME, ADDRESS1, ADDRESS2, ADDRESS3, ZIPCODE, CITY, COUNTRY_ID, PHONE, CELLPHONE, DEFAULT, CREATED_AT, UPDATED_AT FROM address WHERE ID = :p0';
|
||||
$sql = 'SELECT ID, TITLE, CUSTOMER_ID, CUSTOMER_TITLE_ID, COMPANY, FIRSTNAME, LASTNAME, ADDRESS1, ADDRESS2, ADDRESS3, ZIPCODE, CITY, COUNTRY_ID, PHONE, CELLPHONE, IS_DEFAULT, CREATED_AT, UPDATED_AT FROM address WHERE ID = :p0';
|
||||
try {
|
||||
$stmt = $con->prepare($sql);
|
||||
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
|
||||
@@ -776,16 +776,16 @@ abstract class AddressQuery extends ModelCriteria
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the default column
|
||||
* Filter the query on the is_default column
|
||||
*
|
||||
* Example usage:
|
||||
* <code>
|
||||
* $query->filterByDefault(1234); // WHERE default = 1234
|
||||
* $query->filterByDefault(array(12, 34)); // WHERE default IN (12, 34)
|
||||
* $query->filterByDefault(array('min' => 12)); // WHERE default > 12
|
||||
* $query->filterByIsDefault(1234); // WHERE is_default = 1234
|
||||
* $query->filterByIsDefault(array(12, 34)); // WHERE is_default IN (12, 34)
|
||||
* $query->filterByIsDefault(array('min' => 12)); // WHERE is_default > 12
|
||||
* </code>
|
||||
*
|
||||
* @param mixed $default The value to use as filter.
|
||||
* @param mixed $isDefault The value to use as filter.
|
||||
* Use scalar values for equality.
|
||||
* Use array values for in_array() equivalent.
|
||||
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||
@@ -793,16 +793,16 @@ abstract class AddressQuery extends ModelCriteria
|
||||
*
|
||||
* @return ChildAddressQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByDefault($default = null, $comparison = null)
|
||||
public function filterByIsDefault($isDefault = null, $comparison = null)
|
||||
{
|
||||
if (is_array($default)) {
|
||||
if (is_array($isDefault)) {
|
||||
$useMinMax = false;
|
||||
if (isset($default['min'])) {
|
||||
$this->addUsingAlias(AddressTableMap::DEFAULT, $default['min'], Criteria::GREATER_EQUAL);
|
||||
if (isset($isDefault['min'])) {
|
||||
$this->addUsingAlias(AddressTableMap::IS_DEFAULT, $isDefault['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($default['max'])) {
|
||||
$this->addUsingAlias(AddressTableMap::DEFAULT, $default['max'], Criteria::LESS_EQUAL);
|
||||
if (isset($isDefault['max'])) {
|
||||
$this->addUsingAlias(AddressTableMap::IS_DEFAULT, $isDefault['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
@@ -813,7 +813,7 @@ abstract class AddressQuery extends ModelCriteria
|
||||
}
|
||||
}
|
||||
|
||||
return $this->addUsingAlias(AddressTableMap::DEFAULT, $default, $comparison);
|
||||
return $this->addUsingAlias(AddressTableMap::IS_DEFAULT, $isDefault, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,6 +15,7 @@ use Thelia\Core\Security\User\UserInterface;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
use Propel\Runtime\Propel;
|
||||
use Thelia\Model\Map\CustomerTableMap;
|
||||
use Thelia\Core\Security\Role\Role;
|
||||
|
||||
/**
|
||||
* Skeleton subclass for representing a row from the 'customer' table.
|
||||
@@ -87,7 +88,7 @@ class Customer extends BaseCustomer implements UserInterface
|
||||
->setCellphone($cellphone)
|
||||
->setZipcode($zipcode)
|
||||
->setCountryId($countryId)
|
||||
->setDefault(1)
|
||||
->setIsDefault(1)
|
||||
->setCustomer($this)
|
||||
->save($con);
|
||||
|
||||
@@ -114,7 +115,7 @@ class Customer extends BaseCustomer implements UserInterface
|
||||
|
||||
protected function generateRef()
|
||||
{
|
||||
return date("YmdHI");
|
||||
return date("YmdHisu");
|
||||
}
|
||||
|
||||
public function setPassword($password)
|
||||
|
||||
@@ -145,9 +145,9 @@ class AddressTableMap extends TableMap
|
||||
const CELLPHONE = 'address.CELLPHONE';
|
||||
|
||||
/**
|
||||
* the column name for the DEFAULT field
|
||||
* the column name for the IS_DEFAULT field
|
||||
*/
|
||||
const DEFAULT = 'address.DEFAULT';
|
||||
const IS_DEFAULT = 'address.IS_DEFAULT';
|
||||
|
||||
/**
|
||||
* the column name for the CREATED_AT field
|
||||
@@ -171,11 +171,11 @@ class AddressTableMap extends TableMap
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
protected static $fieldNames = array (
|
||||
self::TYPE_PHPNAME => array('Id', 'Title', 'CustomerId', 'CustomerTitleId', 'Company', 'Firstname', 'Lastname', 'Address1', 'Address2', 'Address3', 'Zipcode', 'City', 'CountryId', 'Phone', 'Cellphone', 'Default', 'CreatedAt', 'UpdatedAt', ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id', 'title', 'customerId', 'customerTitleId', 'company', 'firstname', 'lastname', 'address1', 'address2', 'address3', 'zipcode', 'city', 'countryId', 'phone', 'cellphone', 'default', 'createdAt', 'updatedAt', ),
|
||||
self::TYPE_COLNAME => array(AddressTableMap::ID, AddressTableMap::TITLE, AddressTableMap::CUSTOMER_ID, AddressTableMap::CUSTOMER_TITLE_ID, AddressTableMap::COMPANY, AddressTableMap::FIRSTNAME, AddressTableMap::LASTNAME, AddressTableMap::ADDRESS1, AddressTableMap::ADDRESS2, AddressTableMap::ADDRESS3, AddressTableMap::ZIPCODE, AddressTableMap::CITY, AddressTableMap::COUNTRY_ID, AddressTableMap::PHONE, AddressTableMap::CELLPHONE, AddressTableMap::DEFAULT, AddressTableMap::CREATED_AT, AddressTableMap::UPDATED_AT, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID', 'TITLE', 'CUSTOMER_ID', 'CUSTOMER_TITLE_ID', 'COMPANY', 'FIRSTNAME', 'LASTNAME', 'ADDRESS1', 'ADDRESS2', 'ADDRESS3', 'ZIPCODE', 'CITY', 'COUNTRY_ID', 'PHONE', 'CELLPHONE', 'DEFAULT', 'CREATED_AT', 'UPDATED_AT', ),
|
||||
self::TYPE_FIELDNAME => array('id', 'title', 'customer_id', 'customer_title_id', 'company', 'firstname', 'lastname', 'address1', 'address2', 'address3', 'zipcode', 'city', 'country_id', 'phone', 'cellphone', 'default', 'created_at', 'updated_at', ),
|
||||
self::TYPE_PHPNAME => array('Id', 'Title', 'CustomerId', 'CustomerTitleId', 'Company', 'Firstname', 'Lastname', 'Address1', 'Address2', 'Address3', 'Zipcode', 'City', 'CountryId', 'Phone', 'Cellphone', 'IsDefault', 'CreatedAt', 'UpdatedAt', ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id', 'title', 'customerId', 'customerTitleId', 'company', 'firstname', 'lastname', 'address1', 'address2', 'address3', 'zipcode', 'city', 'countryId', 'phone', 'cellphone', 'isDefault', 'createdAt', 'updatedAt', ),
|
||||
self::TYPE_COLNAME => array(AddressTableMap::ID, AddressTableMap::TITLE, AddressTableMap::CUSTOMER_ID, AddressTableMap::CUSTOMER_TITLE_ID, AddressTableMap::COMPANY, AddressTableMap::FIRSTNAME, AddressTableMap::LASTNAME, AddressTableMap::ADDRESS1, AddressTableMap::ADDRESS2, AddressTableMap::ADDRESS3, AddressTableMap::ZIPCODE, AddressTableMap::CITY, AddressTableMap::COUNTRY_ID, AddressTableMap::PHONE, AddressTableMap::CELLPHONE, AddressTableMap::IS_DEFAULT, AddressTableMap::CREATED_AT, AddressTableMap::UPDATED_AT, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID', 'TITLE', 'CUSTOMER_ID', 'CUSTOMER_TITLE_ID', 'COMPANY', 'FIRSTNAME', 'LASTNAME', 'ADDRESS1', 'ADDRESS2', 'ADDRESS3', 'ZIPCODE', 'CITY', 'COUNTRY_ID', 'PHONE', 'CELLPHONE', 'IS_DEFAULT', 'CREATED_AT', 'UPDATED_AT', ),
|
||||
self::TYPE_FIELDNAME => array('id', 'title', 'customer_id', 'customer_title_id', 'company', 'firstname', 'lastname', 'address1', 'address2', 'address3', 'zipcode', 'city', 'country_id', 'phone', 'cellphone', 'is_default', 'created_at', 'updated_at', ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
|
||||
);
|
||||
|
||||
@@ -186,11 +186,11 @@ class AddressTableMap extends TableMap
|
||||
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
protected static $fieldKeys = array (
|
||||
self::TYPE_PHPNAME => array('Id' => 0, 'Title' => 1, 'CustomerId' => 2, 'CustomerTitleId' => 3, 'Company' => 4, 'Firstname' => 5, 'Lastname' => 6, 'Address1' => 7, 'Address2' => 8, 'Address3' => 9, 'Zipcode' => 10, 'City' => 11, 'CountryId' => 12, 'Phone' => 13, 'Cellphone' => 14, 'Default' => 15, 'CreatedAt' => 16, 'UpdatedAt' => 17, ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'title' => 1, 'customerId' => 2, 'customerTitleId' => 3, 'company' => 4, 'firstname' => 5, 'lastname' => 6, 'address1' => 7, 'address2' => 8, 'address3' => 9, 'zipcode' => 10, 'city' => 11, 'countryId' => 12, 'phone' => 13, 'cellphone' => 14, 'default' => 15, 'createdAt' => 16, 'updatedAt' => 17, ),
|
||||
self::TYPE_COLNAME => array(AddressTableMap::ID => 0, AddressTableMap::TITLE => 1, AddressTableMap::CUSTOMER_ID => 2, AddressTableMap::CUSTOMER_TITLE_ID => 3, AddressTableMap::COMPANY => 4, AddressTableMap::FIRSTNAME => 5, AddressTableMap::LASTNAME => 6, AddressTableMap::ADDRESS1 => 7, AddressTableMap::ADDRESS2 => 8, AddressTableMap::ADDRESS3 => 9, AddressTableMap::ZIPCODE => 10, AddressTableMap::CITY => 11, AddressTableMap::COUNTRY_ID => 12, AddressTableMap::PHONE => 13, AddressTableMap::CELLPHONE => 14, AddressTableMap::DEFAULT => 15, AddressTableMap::CREATED_AT => 16, AddressTableMap::UPDATED_AT => 17, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID' => 0, 'TITLE' => 1, 'CUSTOMER_ID' => 2, 'CUSTOMER_TITLE_ID' => 3, 'COMPANY' => 4, 'FIRSTNAME' => 5, 'LASTNAME' => 6, 'ADDRESS1' => 7, 'ADDRESS2' => 8, 'ADDRESS3' => 9, 'ZIPCODE' => 10, 'CITY' => 11, 'COUNTRY_ID' => 12, 'PHONE' => 13, 'CELLPHONE' => 14, 'DEFAULT' => 15, 'CREATED_AT' => 16, 'UPDATED_AT' => 17, ),
|
||||
self::TYPE_FIELDNAME => array('id' => 0, 'title' => 1, 'customer_id' => 2, 'customer_title_id' => 3, 'company' => 4, 'firstname' => 5, 'lastname' => 6, 'address1' => 7, 'address2' => 8, 'address3' => 9, 'zipcode' => 10, 'city' => 11, 'country_id' => 12, 'phone' => 13, 'cellphone' => 14, 'default' => 15, 'created_at' => 16, 'updated_at' => 17, ),
|
||||
self::TYPE_PHPNAME => array('Id' => 0, 'Title' => 1, 'CustomerId' => 2, 'CustomerTitleId' => 3, 'Company' => 4, 'Firstname' => 5, 'Lastname' => 6, 'Address1' => 7, 'Address2' => 8, 'Address3' => 9, 'Zipcode' => 10, 'City' => 11, 'CountryId' => 12, 'Phone' => 13, 'Cellphone' => 14, 'IsDefault' => 15, 'CreatedAt' => 16, 'UpdatedAt' => 17, ),
|
||||
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'title' => 1, 'customerId' => 2, 'customerTitleId' => 3, 'company' => 4, 'firstname' => 5, 'lastname' => 6, 'address1' => 7, 'address2' => 8, 'address3' => 9, 'zipcode' => 10, 'city' => 11, 'countryId' => 12, 'phone' => 13, 'cellphone' => 14, 'isDefault' => 15, 'createdAt' => 16, 'updatedAt' => 17, ),
|
||||
self::TYPE_COLNAME => array(AddressTableMap::ID => 0, AddressTableMap::TITLE => 1, AddressTableMap::CUSTOMER_ID => 2, AddressTableMap::CUSTOMER_TITLE_ID => 3, AddressTableMap::COMPANY => 4, AddressTableMap::FIRSTNAME => 5, AddressTableMap::LASTNAME => 6, AddressTableMap::ADDRESS1 => 7, AddressTableMap::ADDRESS2 => 8, AddressTableMap::ADDRESS3 => 9, AddressTableMap::ZIPCODE => 10, AddressTableMap::CITY => 11, AddressTableMap::COUNTRY_ID => 12, AddressTableMap::PHONE => 13, AddressTableMap::CELLPHONE => 14, AddressTableMap::IS_DEFAULT => 15, AddressTableMap::CREATED_AT => 16, AddressTableMap::UPDATED_AT => 17, ),
|
||||
self::TYPE_RAW_COLNAME => array('ID' => 0, 'TITLE' => 1, 'CUSTOMER_ID' => 2, 'CUSTOMER_TITLE_ID' => 3, 'COMPANY' => 4, 'FIRSTNAME' => 5, 'LASTNAME' => 6, 'ADDRESS1' => 7, 'ADDRESS2' => 8, 'ADDRESS3' => 9, 'ZIPCODE' => 10, 'CITY' => 11, 'COUNTRY_ID' => 12, 'PHONE' => 13, 'CELLPHONE' => 14, 'IS_DEFAULT' => 15, 'CREATED_AT' => 16, 'UPDATED_AT' => 17, ),
|
||||
self::TYPE_FIELDNAME => array('id' => 0, 'title' => 1, 'customer_id' => 2, 'customer_title_id' => 3, 'company' => 4, 'firstname' => 5, 'lastname' => 6, 'address1' => 7, 'address2' => 8, 'address3' => 9, 'zipcode' => 10, 'city' => 11, 'country_id' => 12, 'phone' => 13, 'cellphone' => 14, 'is_default' => 15, 'created_at' => 16, 'updated_at' => 17, ),
|
||||
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, )
|
||||
);
|
||||
|
||||
@@ -225,7 +225,7 @@ class AddressTableMap extends TableMap
|
||||
$this->addColumn('COUNTRY_ID', 'CountryId', 'INTEGER', true, null, null);
|
||||
$this->addColumn('PHONE', 'Phone', 'VARCHAR', false, 20, null);
|
||||
$this->addColumn('CELLPHONE', 'Cellphone', 'VARCHAR', false, 20, null);
|
||||
$this->addColumn('DEFAULT', 'Default', 'TINYINT', false, null, 0);
|
||||
$this->addColumn('IS_DEFAULT', 'IsDefault', 'TINYINT', false, null, 0);
|
||||
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
|
||||
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
|
||||
} // initialize()
|
||||
@@ -405,7 +405,7 @@ class AddressTableMap extends TableMap
|
||||
$criteria->addSelectColumn(AddressTableMap::COUNTRY_ID);
|
||||
$criteria->addSelectColumn(AddressTableMap::PHONE);
|
||||
$criteria->addSelectColumn(AddressTableMap::CELLPHONE);
|
||||
$criteria->addSelectColumn(AddressTableMap::DEFAULT);
|
||||
$criteria->addSelectColumn(AddressTableMap::IS_DEFAULT);
|
||||
$criteria->addSelectColumn(AddressTableMap::CREATED_AT);
|
||||
$criteria->addSelectColumn(AddressTableMap::UPDATED_AT);
|
||||
} else {
|
||||
@@ -424,7 +424,7 @@ class AddressTableMap extends TableMap
|
||||
$criteria->addSelectColumn($alias . '.COUNTRY_ID');
|
||||
$criteria->addSelectColumn($alias . '.PHONE');
|
||||
$criteria->addSelectColumn($alias . '.CELLPHONE');
|
||||
$criteria->addSelectColumn($alias . '.DEFAULT');
|
||||
$criteria->addSelectColumn($alias . '.IS_DEFAULT');
|
||||
$criteria->addSelectColumn($alias . '.CREATED_AT');
|
||||
$criteria->addSelectColumn($alias . '.UPDATED_AT');
|
||||
}
|
||||
|
||||
@@ -27,19 +27,30 @@ use Thelia\Model\ConfigQuery;
|
||||
|
||||
class URL
|
||||
{
|
||||
public static function getIndexPage() {
|
||||
return ConfigQuery::read('base_url', '/') . "index_dev.php"; // FIXME !
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Absolute URL for a given path relative to web root
|
||||
* Returns the Absolute URL for a given path relative to web root. By default,
|
||||
* the index.php (or index_dev.php) script name is added to the URL, use
|
||||
* $path_only = true to get a path without the index script.
|
||||
*
|
||||
* @param string $path the relative path
|
||||
* @param mixed $parameters An array of parameters
|
||||
* @param string $path the relative path
|
||||
* @param array $parameters An array of parameters
|
||||
* @param boolean $path_only if true, getIndexPage() will not be added
|
||||
*
|
||||
* @return string The generated URL
|
||||
*/
|
||||
public static function absoluteUrl($path, array $parameters = array())
|
||||
public static function absoluteUrl($path, array $parameters = array(), $path_only = false)
|
||||
{
|
||||
// Already absolute ?
|
||||
if (substr($path, 0, 4) != 'http')
|
||||
$base = ConfigQuery::read('base_url', '/') . ltrim($path, '/');
|
||||
if (substr($path, 0, 4) != 'http') {
|
||||
|
||||
$root = $path_only ? ConfigQuery::read('base_url', '/') : self::getIndexPage();
|
||||
|
||||
$base = $root . $path;
|
||||
}
|
||||
else
|
||||
$base = $path;
|
||||
|
||||
@@ -49,7 +60,9 @@ class URL
|
||||
$queryString = sprintf("%s=%s&", urlencode($name), urlencode($value));
|
||||
}
|
||||
|
||||
if ('' !== $queryString = rtrim($queryString, "&")) $queryString = '?' . $queryString;
|
||||
$sepChar = strstr($base, '?') === false ? '?' : '&';
|
||||
|
||||
if ('' !== $queryString = rtrim($queryString, "&")) $queryString = $sepChar . $queryString;
|
||||
|
||||
return $base . $queryString;
|
||||
}
|
||||
@@ -63,7 +76,8 @@ class URL
|
||||
* @return string The generated URL
|
||||
*/
|
||||
public static function viewUrl($viewName, array $parameters = array()) {
|
||||
$path = sprintf("%s?view=%s", ConfigQuery::read('base_url', '/'), $viewName);
|
||||
|
||||
$path = sprintf("%s?view=%s", self::getIndexPage(), $viewName);
|
||||
|
||||
return self::absoluteUrl($path, $parameters);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user