JEMBOT MAWOT Bypass Shell
<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*/
use Symfony\Contracts\Translation\TranslatorInterface;
class CustomerFormatterCore implements FormFormatterInterface
{
private $translator;
private $language;
private $ask_for_birthdate = true;
private $ask_for_partner_optin = true;
private $partner_optin_is_required = true;
private $ask_for_password = true;
private $password_is_required = true;
private $ask_for_new_password = false;
public function __construct(
TranslatorInterface $translator,
Language $language
) {
$this->translator = $translator;
$this->language = $language;
}
public function setAskForBirthdate($ask_for_birthdate)
{
$this->ask_for_birthdate = $ask_for_birthdate;
return $this;
}
public function setAskForPartnerOptin($ask_for_partner_optin)
{
$this->ask_for_partner_optin = $ask_for_partner_optin;
return $this;
}
public function setPartnerOptinRequired($partner_optin_is_required)
{
$this->partner_optin_is_required = $partner_optin_is_required;
return $this;
}
public function setAskForPassword($ask_for_password)
{
$this->ask_for_password = $ask_for_password;
return $this;
}
public function setAskForNewPassword($ask_for_new_password)
{
$this->ask_for_new_password = $ask_for_new_password;
return $this;
}
public function setPasswordRequired($password_is_required)
{
$this->password_is_required = $password_is_required;
return $this;
}
public function getFormat()
{
$format = [];
$genders = Gender::getGenders($this->language->id);
if ($genders->count() > 0) {
$genderField = (new FormField())
->setName('id_gender')
->setType('radio-buttons')
->setLabel(
$this->translator->trans(
'Social title',
[],
'Shop.Forms.Labels'
)
);
foreach ($genders as $gender) {
$genderField->addAvailableValue($gender->id, $gender->name);
}
$format[$genderField->getName()] = $genderField;
}
$format['firstname'] = (new FormField())
->setName('firstname')
->setLabel(
$this->translator->trans(
'First name',
[],
'Shop.Forms.Labels'
)
)
->setRequired(true)
->addAvailableValue(
'comment',
$this->translator->trans('Only letters and the dot (.) character, followed by a space, are allowed.', [], 'Shop.Forms.Help')
);
$format['lastname'] = (new FormField())
->setName('lastname')
->setLabel(
$this->translator->trans(
'Last name',
[],
'Shop.Forms.Labels'
)
)
->setRequired(true)
->addAvailableValue(
'comment',
$this->translator->trans('Only letters and the dot (.) character, followed by a space, are allowed.', [], 'Shop.Forms.Help')
);
if (Configuration::get('PS_B2B_ENABLE')) {
$format['company'] = (new FormField())
->setName('company')
->setType('text')
->setLabel($this->translator->trans(
'Company',
[],
'Shop.Forms.Labels'
));
$format['siret'] = (new FormField())
->setName('siret')
->setType('text')
->setLabel($this->translator->trans(
// Please localize this string with the applicable registration number type in your country. For example : "SIRET" in France and "Código fiscal" in Spain.
'Identification number',
[],
'Shop.Forms.Labels'
));
}
$format['email'] = (new FormField())
->setName('email')
->setType('email')
->setLabel(
$this->translator->trans(
'Email',
[],
'Shop.Forms.Labels'
)
)
->setRequired(true);
if ($this->ask_for_password) {
$format['password'] = (new FormField())
->setName('password')
->setType('password')
->setLabel(
$this->translator->trans(
'Password',
[],
'Shop.Forms.Labels'
)
)
->setRequired($this->password_is_required);
}
if ($this->ask_for_new_password) {
$format['new_password'] = (new FormField())
->setName('new_password')
->setType('password')
->setLabel(
$this->translator->trans(
'New password',
[],
'Shop.Forms.Labels'
)
);
}
if ($this->ask_for_birthdate) {
$format['birthday'] = (new FormField())
->setName('birthday')
->setType('text')
->setLabel(
$this->translator->trans(
'Birthdate',
[],
'Shop.Forms.Labels'
)
)
->addAvailableValue('placeholder', Tools::getDateFormat())
->addAvailableValue(
'comment',
$this->translator->trans('(E.g.: %date_format%)', ['%date_format%' => Tools::formatDateStr('31 May 1970')], 'Shop.Forms.Help')
);
}
if ($this->ask_for_partner_optin) {
$format['optin'] = (new FormField())
->setName('optin')
->setType('checkbox')
->setLabel(
$this->translator->trans(
'Receive offers from our partners',
[],
'Shop.Theme.Customeraccount'
)
)
->setRequired($this->partner_optin_is_required);
}
// ToDo, replace the hook exec with HookFinder when the associated PR will be merged
// An array [module_name => module_output] will be returned
$additionalCustomerFormFields = Hook::exec('additionalCustomerFormFields', ['fields' => &$format], null, true);
if (is_array($additionalCustomerFormFields)) {
foreach ($additionalCustomerFormFields as $moduleName => $additionnalFormFields) {
if (!is_array($additionnalFormFields)) {
continue;
}
foreach ($additionnalFormFields as $formField) {
$formField->moduleName = $moduleName;
$format[$moduleName . '_' . $formField->getName()] = $formField;
}
}
}
// TODO: TVA etc.?
return $this->addConstraints($format);
}
private function addConstraints(array $format)
{
$constraints = Customer::$definition['fields'];
foreach ($format as $field) {
if (!empty($constraints[$field->getName()]['validate'])) {
$field->addConstraint(
$constraints[$field->getName()]['validate']
);
}
}
return $format;
}
}
xxxxx1.0, XXX xxxx