php_self)) { $this->php_self = strtolower(basename($_SERVER['PHP_SELF'])); } if($this->php_self == '404.php') { $page_name = 'page-404'; } else { if(preg_match('#^'.__PS_BASE_URI__.'modules/([a-zA-Z0-9_-]+?)/([^?]*)(\?(.*))?$#', strtolower($_SERVER['REQUEST_URI']), $m)) { $page_name = 'module-'.$m[1].'-'.str_replace(array('.php', '/'), array('', '-'), $m[2]); } else { $page_name = preg_replace('/\.php$/', '', $this->php_self); } } self::$smarty->assign(array('page_name' => $page_name)); $displayLeft = array( 'page-404', 'address', 'addresses', /*'authentication',*/ 'best-sales', 'breadcrumb', 'category', 'category-cms-tree-branch', 'category-tree-branch', 'cms', 'contact-form', 'discount', 'errors', 'footer', 'guest-tracking', 'header', 'history', 'identity', /*'index',*/ 'maintenance', 'manufacturer', 'manufacturer-list', 'my-account', 'new-products', 'order', 'order-address', 'order-carrier', 'order-confirmation', 'order-detail', 'order-follow', 'order-opc', 'order-opc-new-account', 'order-payment', 'order-return', 'order-slip', 'order-steps', 'pagination', /*'password',*/ 'payment', 'prices-drop', /*'product',*/ 'product-compare', 'product-list', 'products-comparison', 'product-sort', 'restricted-country', 'scenes', 'search', 'shopping-cart', 'shopping-cart-product-line', 'sitemap', 'store_infos', 'stores', 'supplier', 'supplier-list', 'module-privatesales-salechange', 'module-invite-invite-program', 'module-referralprogram-referral-program', 'module-cheque-payment', 'module-bankwire-payment', 'module-invite-invite-rules', ); if($page_name == 'index') { global $cookie; if($cookie->isLogged()) { $displayLeft[] = 'index'; } } $displayRight = array( /*'page-404', 'address', 'addresses', 'authentication', 'best-sales', 'breadcrumb', 'category', 'category-cms-tree-branch', 'category-tree-branch', 'cms', 'contact-form', 'discount', 'errors', 'footer', 'guest-tracking', 'header', 'history', 'identity', 'index', 'maintenance', 'manufacturer', 'manufacturer-list', 'my-account', 'new-products', 'order', 'order-address', 'order-carrier', 'order-confirmation', 'order-detail', 'order-follow', 'order-opc', 'order-opc-new-account', 'order-payment', 'order-return', 'order-slip', 'order-steps', 'pagination', 'password', 'payment', 'prices-drop', 'product', 'product-compare', 'product-list', 'products-comparison', 'product-sort', 'restricted-country', 'scenes', 'search', 'shopping-cart', 'shopping-cart-product-line', 'sitemap', 'store_infos', 'stores', 'supplier', 'supplier-list', 'module-privatesales-salechange', 'module-invite-invite-program', 'module-referralprogram-referral-program', 'module-cheque-payment', 'module-bankwire-payment', 'module-invite-invite-rules',*/ ); $countCols = count(array_keys($displayLeft + $displayRight, $page_name)); $bodyClass = 'singleCol'; if($countCols == 1) { $bodyClass = 'doubleCol'; } elseif($countCols == 2) { $bodyClass = 'tripleCol'; } self::$smarty->assign(array( 'displayLeft' => $displayLeft, 'displayRight' => $displayRight, 'bodyClass' => $bodyClass, )); Module::hookExec('preprocess'); if(self::$cookie->isLogged() && !Tools::isSubmit('ajax')) { Tools::redirect('my-account.php'); } if(Tools::getValue('create_account')) { $create_account = 1; self::$smarty->assign('email_create', 1); } if(Tools::isSubmit('SubmitCreate')) { $create_account = 1; self::$smarty->assign('email_create', Tools::safeOutput($email)); } if(Tools::isSubmit('submitAccount') || Tools::isSubmit('submitGuestAccount')) { $create_account = 1; if(Tools::isSubmit('submitAccount')) self::$smarty->assign('email_create', 1); /* New Guest customer */ if(!Tools::getValue('is_new_customer', 1) && !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) { $this->errors[] = Tools::displayError('You cannot create a guest account.'); } if(!Tools::getValue('is_new_customer', 1)) { $_POST['passwd'] = md5(time()._COOKIE_KEY_); } if(isset($_POST['guest_email']) && $_POST['guest_email']) { $_POST['email'] = $_POST['guest_email']; } $_POST['email'] = trim($_POST['email']); /* Preparing customer */ $customer = new Customer(); $lastnameAddress = $_POST['lastname']; $firstnameAddress = $_POST['firstname']; $_POST['lastname'] = $_POST['customer_lastname']; $_POST['firstname'] = $_POST['customer_firstname']; if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) AND !(Tools::getValue('months') == '' AND Tools::getValue('days') == '' AND Tools::getValue('years') == '')) { $this->errors[] = Tools::displayError('Invalid date of birth'); } $customer->birthday = (empty($_POST['years']) ? '' : (int)($_POST['years']).'-'.(int)($_POST['months']).'-'.(int)($_POST['days'])); $this->errors = array_unique(array_merge($this->errors, $customer->validateControler())); $_POST['lastname'] = $lastnameAddress; $_POST['firstname'] = $firstnameAddress; if(!sizeof($this->errors)) { if(Customer::customerExists(Tools::getValue('email'))) { $this->errors[] = Tools::displayError('An account is already registered with this e-mail, please fill in the password or request a new one.'); } if(Tools::isSubmit('newsletter')) { $customer->ip_registration_newsletter = pSQL(Tools::getRemoteAddr()); $customer->newsletter_date_add = pSQL(date('Y-m-d H:i:s')); } $customer->birthday = (empty($_POST['years'])? '': (int)($_POST['years']).'-'.(int)($_POST['months']).'-'.(int)($_POST['days'])); if(!sizeof($this->errors)) { $customer->active = 1; /* New Guest customer */ if(Tools::isSubmit('is_new_customer')) { $customer->is_guest = !Tools::getValue('is_new_customer', 1); } else { $customer->is_guest = 0; } if(!$customer->add()) { $this->errors[] = Tools::displayError('An error occurred while creating your account.'); } else { if(!$customer->is_guest) { if(!Mail::Send((int)(self::$cookie->id_lang), 'account', Mail::l('Welcome!'), array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname)) $this->errors[] = Tools::displayError('Cannot send email'); } global $site_version_front; Db::getInstance()->ExecuteS(' INSERT INTO `'._DB_PREFIX_.'customer_version` VALUES ( '.(int) $customer->id.', "'.pSQL(!isset($site_version_front) ? 'fr': $site_version_front).'", NOW() ) '); self::$smarty->assign('confirmation', 1); self::$cookie->id_customer = (int)($customer->id); self::$cookie->customer_lastname = $customer->lastname; self::$cookie->customer_firstname = $customer->firstname; self::$cookie->passwd = $customer->passwd; self::$cookie->logged = 1; self::$cookie->email = $customer->email; self::$cookie->is_guest = !Tools::getValue('is_new_customer', 1); /* Update cart address */ self::$cart->secure_key = $customer->secure_key; self::$cart->id_address_delivery = 0; self::$cart->id_address_invoice = 0; self::$cart->update(); Module::hookExec('createAccount', array( '_POST' => $_POST, 'newCustomer' => $customer )); if(Tools::isSubmit('ajax')) { $return = array( 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => true, 'id_customer' => (int)self::$cookie->id_customer, 'id_address_delivery' => 0, 'id_address_invoice' => 0, 'token' => Tools::getToken(false) ); die(Tools::jsonEncode($return)); } if($back = Tools::getValue('back')) { if($back == '/') { $back = '/index.php?validation=1'; Tools::redirect($back); } Tools::redirect($back.'?validation=1'); } Tools::redirect('my-account.php?validation=1'); } } } if(sizeof($this->errors)) { if(!Tools::getValue('is_new_customer')) { unset($_POST['passwd']); } if(Tools::isSubmit('ajax')) { $return = array( 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'isSaved' => false, 'id_customer' => 0 ); die(Tools::jsonEncode($return)); } } } if(Tools::isSubmit('SubmitLogin')) { Module::hookExec('beforeAuthentication'); $passwd = trim(Tools::getValue('passwd')); $email = trim(Tools::getValue('email')); if (empty($email)) { $this->errors[] = Tools::displayError('E-mail address required'); } elseif (!Validate::isEmail($email)) { $this->errors[] = Tools::displayError('Invalid e-mail address'); } elseif (empty($passwd)) { $this->errors[] = Tools::displayError('Password is required'); } elseif (Tools::strlen($passwd) > 32) { $this->errors[] = Tools::displayError('Password is too long'); } elseif (!Validate::isPasswd($passwd)) { $this->errors[] = Tools::displayError('Invalid password'); } else { $customer = new Customer(); $authentication = $customer->getByEmail(trim($email), trim($passwd)); if(!$authentication || !$customer->id) { /* Handle brute force attacks */ sleep(1); $this->errors[] = Tools::displayError('Authentication failed'); } else { self::$cookie->id_customer = (int)($customer->id); self::$cookie->customer_lastname = $customer->lastname; self::$cookie->customer_firstname = $customer->firstname; self::$cookie->logged = 1; self::$cookie->is_guest = $customer->isGuest(); self::$cookie->passwd = $customer->passwd; self::$cookie->email = $customer->email; if(Configuration::get('PS_CART_FOLLOWING') && (empty(self::$cookie->id_cart) || Cart::getNbProducts(self::$cookie->id_cart) == 0)) { self::$cookie->id_cart = (int)(Cart::lastNoneOrderedCart((int)($customer->id))); } /* Update cart address */ self::$cart->id_carrier = 0; self::$cart->id_address_delivery = 0; self::$cart->id_address_invoice = 0; // If a logged guest logs in as a customer, the cart secure key was already set and needs to be updated self::$cart->secure_key = $customer->secure_key; self::$cart->update(); // update customer version global $site_version_front; Db::getInstance()->ExecuteS(' INSERT INTO `'._DB_PREFIX_.'customer_version` VALUES ( '.(int) $customer->id.', "'.pSQL($site_version_front).'", NOW() ) ON DUPLICATE KEY UPDATE `version` = "'.pSQL($site_version_front).'" '); Module::hookExec('authentication'); if(!Tools::isSubmit('ajax')) { if ($back = Tools::getValue('back')) Tools::redirect($back); Tools::redirect('my-account.php'); } } } if(Tools::isSubmit('ajax')) { $return = array( 'hasError' => !empty($this->errors), 'errors' => $this->errors, 'token' => Tools::getToken(false) ); die(Tools::jsonEncode($return)); } } if(isset($create_account)) { /* Call a hook to display more information on form */ self::$smarty->assign(array( 'HOOK_CREATE_ACCOUNT_FORM' => Module::hookExec('createAccountForm'), 'HOOK_CREATE_ACCOUNT_TOP' => Module::hookExec('createAccountTop') )); } /* Generate years, months and days */ if (isset($_POST['years']) && is_numeric($_POST['years'])) { $selectedYears = (int)($_POST['years']); } $years = Tools::dateYears(); if (isset($_POST['months']) && is_numeric($_POST['months'])) { $selectedMonths = (int)($_POST['months']); } $months = Tools::dateMonths(); if (isset($_POST['days']) && is_numeric($_POST['days'])) { $selectedDays = (int)($_POST['days']); } $days = Tools::dateDays(); self::$smarty->assign(array( 'years' => $years, 'sl_year' => (isset($selectedYears)? $selectedYears: 0), 'months' => $months, 'sl_month' => (isset($selectedMonths)? $selectedMonths: 0), 'days' => $days, 'sl_day' => (isset($selectedDays)? $selectedDays: 0) )); self::$smarty->assign('newsletter', (int)Module::getInstanceByName('blocknewsletter')->active); } public function displayContent() { Tools::safePostVars(); self::$smarty->assign('errors', $this->errors); self::$smarty->assign('HOOK_CREATE_ACCOUNT_FORM_BOTTOM', Module::hookExec('createAccountFormBottom', array())); self::$smarty->display(_PS_THEME_DIR_.'authentication.tpl'); } public function setMedia() { parent::setMedia(); global $css_files; $css_files = array_slice($css_files, 0, 1); } }