Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как передать свой id группы


Recommended Posts

Как передать id группы, чтобы при регистрации нужный  input  был активен.

 

class ModelAccountCustomer extends Model {
public function addCustomer($data) {
$this->event->trigger('pre.customer.add', $data);

if (isset($data['customer_group_id']) && is_array($this->config->get('config_customer_group_display')) && in_array($data['customer_group_id'], $this->config->get('config_customer_group_display'))) {
$customer_group_id = $data['customer_group_id'];
} else {
$customer_group_id = $this->config->get('config_customer_group_id');
}

$this->load->model('account/customer_group');

$customer_group_info = $this->model_account_customer_group->getCustomerGroup($customer_group_id);

$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET customer_group_id = '" . (int)$customer_group_id . "', store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', custom_field = '" . $this->db->escape(isset($data['custom_field']['account']) ? json_encode($data['custom_field']['account']) : '') . "', salt = '" . $this->db->escape($salt = token(9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW()");

$customer_id = $this->db->getLastId();

$this->db->query("INSERT INTO " . DB_PREFIX . "address SET customer_id = '" . (int)$customer_id . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', company = '" . $this->db->escape($data['company']) . "', address_1 = '" . $this->db->escape($data['address_1']) . "', address_2 = '" . $this->db->escape($data['address_2']) . "', city = '" . $this->db->escape($data['city']) . "', postcode = '" . $this->db->escape($data['postcode']) . "', country_id = '" . (int)$data['country_id'] . "', zone_id = '" . (int)$data['zone_id'] . "', custom_field = '" . $this->db->escape(isset($data['custom_field']['address']) ? json_encode($data['custom_field']['address']) : '') . "'");

$address_id = $this->db->getLastId();

$this->db->query("UPDATE " . DB_PREFIX . "customer SET address_id = '" . (int)$address_id . "' WHERE customer_id = '" . (int)$customer_id . "'");

$this->load->language('mail/customer');

$subject = sprintf($this->language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));

$message = sprintf($this->language->get('text_welcome'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8')) . "\n\n";

if (!$customer_group_info['approval']) {
$message .= $this->language->get('text_login') . "\n";
} else {
$message .= $this->language->get('text_approval') . "\n";
}

$message .= $this->url->link('account/login', '', 'SSL') . "\n\n";
$message .= $this->language->get('text_services') . "\n\n";
$message .= $this->language->get('text_thanks') . "\n";
$message .= html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8');

$mail = new Mail();
$mail->protocol = $this->config->get('config_mail_protocol');
$mail->parameter = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

$mail->setTo($data['email']);
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
$mail->setSubject($subject);
$mail->setText($message);
$mail->send();

// Send to main admin email if new account email is enabled
if ($this->config->get('config_account_mail')) {
$message = $this->language->get('text_signup') . "\n\n";
$message .= $this->language->get('text_website') . ' ' . html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8') . "\n";
$message .= $this->language->get('text_firstname') . ' ' . $data['firstname'] . "\n";
$message .= $this->language->get('text_lastname') . ' ' . $data['lastname'] . "\n";
$message .= $this->language->get('text_customer_group') . ' ' . $customer_group_info['name'] . "\n";
$message .= $this->language->get('text_email') . ' ' . $data['email'] . "\n";
$message .= $this->language->get('text_telephone') . ' ' . $data['telephone'] . "\n";

$mail = new Mail();
$mail->protocol = $this->config->get('config_mail_protocol');
$mail->parameter = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

$mail->setTo($this->config->get('config_email'));
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($this->language->get('text_new_customer'), ENT_QUOTES, 'UTF-8'));
$mail->setText($message);
$mail->send();

// Send to additional alert emails if new account email is enabled
$emails = explode(',', $this->config->get('config_mail_alert'));

foreach ($emails as $email) {
if (utf8_strlen($email) > 0 && preg_match('/^[^\@]+@.*.[a-z]{2,15}$/i', $email)) {
$mail->setTo($email);
$mail->send();
}
}
}

$this->event->trigger('post.customer.add', $customer_id);

return $customer_id;
}

public function editCustomer($data) {
$this->event->trigger('pre.customer.edit', $data);

$customer_id = $this->customer->getId();

$this->db->query("UPDATE " . DB_PREFIX . "customer SET firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', custom_field = '" . $this->db->escape(isset($data['custom_field']) ? json_encode($data['custom_field']) : '') . "' WHERE customer_id = '" . (int)$customer_id . "'");

$this->event->trigger('post.customer.edit', $customer_id);
}

public function editPassword($email, $password) {
$this->event->trigger('pre.customer.edit.password');

$this->db->query("UPDATE " . DB_PREFIX . "customer SET salt = '" . $this->db->escape($salt = token(9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($password)))) . "' WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "'");

$this->event->trigger('post.customer.edit.password');
}

public function editNewsletter($newsletter) {
$this->event->trigger('pre.customer.edit.newsletter');

$this->db->query("UPDATE " . DB_PREFIX . "customer SET newsletter = '" . (int)$newsletter . "' WHERE customer_id = '" . (int)$this->customer->getId() . "'");

$this->event->trigger('post.customer.edit.newsletter');
}

public function getCustomer($customer_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE customer_id = '" . (int)$customer_id . "'");

return $query->row;
}

public function getCustomerByEmail($email) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "'");

return $query->row;
}

public function getCustomerByToken($token) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE token = '" . $this->db->escape($token) . "' AND token != ''");

$this->db->query("UPDATE " . DB_PREFIX . "customer SET token = ''");

return $query->row;
}

public function getTotalCustomersByEmail($email) {
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "'");

return $query->row['total'];
}

public function getRewardTotal($customer_id) {
$query = $this->db->query("SELECT SUM(points) AS total FROM " . DB_PREFIX . "customer_reward WHERE customer_id = '" . (int)$customer_id . "'");

return $query->row['total'];
}

public function getIps($customer_id) {
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "customer_ip` WHERE customer_id = '" . (int)$customer_id . "'");

return $query->rows;
}

public function addLoginAttempt($email) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_login WHERE email = '" . $this->db->escape(utf8_strtolower((string)$email)) . "' AND ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "'");

if (!$query->num_rows) {
$this->db->query("INSERT INTO " . DB_PREFIX . "customer_login SET email = '" . $this->db->escape(utf8_strtolower((string)$email)) . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', total = 1, date_added = '" . $this->db->escape(date('Y-m-d H:i:s')) . "', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "'");
} else {
$this->db->query("UPDATE " . DB_PREFIX . "customer_login SET total = (total + 1), date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE customer_login_id = '" . (int)$query->row['customer_login_id'] . "'");
}
}

public function getLoginAttempts($email) {
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "customer_login` WHERE email = '" . $this->db->escape(utf8_strtolower($email)) . "'");

return $query->row;
}

public function deleteLoginAttempts($email) {
$this->db->query("DELETE FROM `" . DB_PREFIX . "customer_login` WHERE email = '" . $this->db->escape(utf8_strtolower($email)) . "'");
}
}

 

Я так понимаю это записывается в базу данных.

$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET customer_group_id = '" . (int)$customer_group_id . "', store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', custom_field = '" . $this->db->escape(isset($data['custom_field']['account']) ? json_encode($data['custom_field']['account']) : '') . "', salt = '" . $this->db->escape($salt = token(9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW()");
"customer SET customer_group_id = '" . (int)$customer_group_id . "'

Пробовал, но выдает ошибку, пробовал вставлять свои переменные.
 

"customer SET customer_group_id = '" . 2 . "'

Спасибо за внимание.

Змінено користувачем ved
Надіслати
Поділитися на інших сайтах


Пробовал, но выдает ошибку, пробовал вставлять свои переменные.

 

А о код ошибки мы должны смотреть в хрустальный шар?

Надіслати
Поділитися на інших сайтах

Пробовал, но выдает ошибку, пробовал вставлять свои переменные.

 

А о код ошибки мы должны смотреть в хрустальный шар?

Parse error: syntax error, unexpected '.2' (T_DNUMBER) /catalog/model/account/customer.php on line 16
Змінено користувачем ved
Надіслати
Поділитися на інших сайтах


админка -> система -> настройки -> мой магазин -> изменить -> опции -> учетная запись -> группы покупателей

 

Установите ДВА или более флажка и в форме регистрации появится элемент "Вид деятельности" со списком радио-кнопок.

 

Посетитель сможет выбрать нужную группу, ID которой и попадет в БД.

 

Это оно? 

Змінено користувачем igon
Надіслати
Поділитися на інших сайтах


админка -> система -> настройки -> мой магазин -> изменить -> опции -> учетная запись -> группы покупателей

 

Установите ДВА или более флажка и в форме регистрации появится элемент "Вид деятельности" со списком радио-кнопок.

 

Посетитель сможет выбрать нужную группу, ID которой и попадет в БД.

 

 

 

 

 

 Почти, только input я скрываю. и вот как оно выглядит, Ты регистрируешься, и тебе присваивается группа оптовик автоматом. Нечего не надо выбирать.

  Змінено користувачем ved
Надіслати
Поділитися на інших сайтах


 input я скрываю

 

В ИМ "из коробки" определена группа покупателей Default, в "Группы покупателей" флажком  помечена только она и, коль скоро флажок ОДИН, группа Default НЕ отображается в форме регистрации, но ее ID в БД передается.

 

Поэтому нет нужды "скрывать input" и менять INSERT.

 

Достаточно определить группу "Оптовик", указать ее как используемую по умолчанию и в списке "Группы покупателей" пометить флажком ТОЛЬКО ее.

Змінено користувачем igon
Надіслати
Поділитися на інших сайтах


В ИМ "из коробки" определена группа покупателей Default, в "Группы покупателей" флажком  помечена только она и, коль скоро флажок ОДИН, группа Default НЕ отображается в форме регистрации, но ее ID в БД передается.

 

Поэтому нет нужды "скрывать input" и менять INSERT.

 

Достаточно определить группу "Оптовик", указать ее как используемую по умолчанию и в списке "Группы покупателей" пометить флажком ТОЛЬКО ее

 

Я посмотрю на это вариант.  Тут я пытался реализовать подобное https://opencartforum.com/topic/56674-%D1%81%D0%BC%D0%B5%D0%BD%D0%B0-%D1%86%D0%B5%D0%BD/

Змінено користувачем ved
Надіслати
Поділитися на інших сайтах


Для версии 2.0.3.1 (другой 2.х под рукой не оказалось) попробуйте такой вариант:

 

В файле catalog\controller\product\product.php

 

Замените 

foreach ($discounts as $discount) {
$data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
);
}

на 

if $this->customer->isLogged() {
foreach ($discounts as $discount) {
$data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
);
}
}

Тогда достаточно иметь одну группу, ту же Default, но прописать для нее скидки.

 

Понятно, что со скидками для гостей (незарегистрировавшихся посетителей) придется распрощаться...

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.