Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


ved
 Погделиться

Рекомендованные сообещёния

Как передать 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('/^[^\@][email protected]*.[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://opencart-forum.ru/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, но прописать для нее скидки.

 

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

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.