Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

#88078
1º Erro na validação dos campos customizados de endereço no formulário de cadastro de endereço do checkout:

Bom dia Manoel, parabéns pelo ensinamento!

Esses passos para o 1º Bug funciona na versão 3.0.3.2 também?

Obrigado.
Att.
Bruno.



Manoel Vidal escreveu: 26 Jul 2018, 12:39 ** Os bugs citados não são falhas de segurança, são problemas no código que causam mal funcionamento.

1º Erro na validação dos campos customizados de endereço no formulário de cadastro de endereço do checkout:

- Nos arquivos:
catalog/controller/checkout/payment_address.php
catalog/controller/checkout/shipping_address.php

- Localize a linha de código abaixo:
Código: Selecionar todos
} elseif (($custom_field['type'] == 'text') && !empty($custom_field['validation']) && !filter_var($this->request->post['custom_field'][$custom_field['location']][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => $custom_field['validation'])))) {

- E substitua pela linha de código abaixo:
Código: Selecionar todos
} elseif (($custom_field['type'] == 'text') && !empty($custom_field['validation']) && filter_var($this->request->post['custom_field'][$custom_field['location']][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/' . html_entity_decode($custom_field['validation'], ENT_QUOTES, 'UTF-8') . '/')))) {

2º Erro na exibição da descrição do título da página do carrinho na loja.

- No arquivo:
catalog/controller/checkout/cart.php

- Localize a linha de código abaixo:
Código: Selecionar todos
$this->document->setTitle($this->language->get('heading_title'));

- E após ela adicione o código abaixo:
Código: Selecionar todos
$data['heading_title'] = $this->language->get('heading_title');

3º Mensagem de confirmação em branco após enviar o formulário de fale conosco:

- No arquivo:
catalog/controller/information/contact.php

- Localize a linha de código abaixo:
Código: Selecionar todos
$data['continue'] = $this->url->link('common/home');

- E após ela adicione o código abaixo:
Código: Selecionar todos
$data['text_message'] = $this->language->get('text_success');

4º Erro de validação na edição do cadastro de clientes e pedidos na administração da loja:

- No arquivo:
catalog/controller/api/customer.php

- Localize a linha de código abaixo:
Código: Selecionar todos
} elseif (($custom_field['type'] == 'text') && !empty($custom_field['validation']) && !filter_var($this->request->post['custom_field'][$custom_field['location']][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => $custom_field['validation'])))) {

- E substitua pela linha de código abaixo:
Código: Selecionar todos
} elseif (($custom_field['type'] == 'text') && !empty($custom_field['validation']) && filter_var($this->request->post['custom_field'][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/' . html_entity_decode($custom_field['validation'], ENT_QUOTES, 'UTF-8') . '/')))) {

- Localize a linha de código abaixo:
Código: Selecionar todos
if ($custom_field['required'] && empty($this->request->post['custom_field'][$custom_field['location']][$custom_field['custom_field_id']])) {

- E substitua pela linha de código abaixo:
Código: Selecionar todos
if ($custom_field['required'] && empty($this->request->post['custom_field'][$custom_field['custom_field_id']])) {

- Nos arquivos:
catalog/controller/api/payment.php
catalog/controller/api/shipping.php

- Localize a linha de código abaixo:
Código: Selecionar todos
} elseif (($custom_field['type'] == 'text') && !empty($custom_field['validation']) && !filter_var($this->request->post['custom_field'][$custom_field['location']][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => $custom_field['validation'])))) {

- E substitua pela linha de código abaixo:
Código: Selecionar todos
} elseif (($custom_field['type'] == 'text') && !empty($custom_field['validation']) && filter_var($this->request->post['custom_field'][$custom_field['custom_field_id']], FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/' . html_entity_decode($custom_field['validation'], ENT_QUOTES, 'UTF-8') . '/')))) {

- Localize a linha de código abaixo:
Código: Selecionar todos
if ($custom_field['required'] && empty($this->request->post['custom_field'][$custom_field['location']][$custom_field['custom_field_id']])) {

- E substitua pela linha de código abaixo:
Código: Selecionar todos
if ($custom_field['required'] && empty($this->request->post['custom_field'][$custom_field['custom_field_id']])) {

5º Erro no módulo de pagamento Grátis:

- No arquivo:
admin/controller/extension/payment/free_checkout.php

- Localize as linhas de código abaixo:
Código: Selecionar todos
		if (isset($this->request->post['free_checkout_order_status_id'])) {
			$data['free_checkout_order_status_id'] = $this->request->post['free_checkout_order_status_id'];
		} else {
			$data['free_checkout_order_status_id'] = $this->config->get('free_checkout_order_status_id');
		}

- E substitua pelas linhas de código abaixo:
Código: Selecionar todos
		if (isset($this->request->post['payment_free_checkout_status'])) {
			$data['payment_free_checkout_status'] = $this->request->post['payment_free_checkout_order_status_id'];
		} else {
			$data['payment_free_checkout_status'] = $this->config->get('payment_free_checkout_status');
		}

- No arquivo:
admin/view/template/extension/payment/free_checkout.twig

- Localize as linhas de código abaixo:
Código: Selecionar todos
              <select name="free_checkout_order_status_id" id="input-order-status" class="form-control">
                {% for order_status in order_statuses %}
                {% if order_status.order_status_id == free_checkout_order_status_id %}
                <option value="{{ order_status.order_status_id }}" selected="selected">{{ order_status.name }}</option>
                {% else %}
                <option value="{{ order_status.order_status_id }}">{{ order_status.name }}</option>
                {% endif %}
                {% endfor %}
              </select>

- E substitua pelas linhas de código abaixo:
Código: Selecionar todos
              <select name="payment_free_checkout_order_status_id" id="input-order-status" class="form-control">
                {% for order_status in order_statuses %}
                {% if order_status.order_status_id == payment_free_checkout_order_status_id %}
                <option value="{{ order_status.order_status_id }}" selected="selected">{{ order_status.name }}</option>
                {% else %}
                <option value="{{ order_status.order_status_id }}">{{ order_status.name }}</option>
                {% endif %}
                {% endfor %}
              </select>

6º Erro ao editar o pedido com produtos que contenham opções com peso:

- No arquivo:
admin/controller/sale/order.php

- Localize a linha de código abaixo:
Código: Selecionar todos
$option_weight = '';

- E substitua pela linha de código abaixo:
Código: Selecionar todos
$option_weight = 0;

- Localize a linha de código abaixo:
Código: Selecionar todos
if ($product_option_value_info) {

- E substitua pela linha de código abaixo:
Código: Selecionar todos
if (!empty($product_option_value_info['weight_prefix'])) {

7º Erro no título de várias páginas na loja:

- No arquivo:
system/config/catalog.php

- Localize e remova as linhas de código abaixo:
Código: Selecionar todos
	'controller/*/after'  => array(
		'event/debug/after'
	)

8º Erro ao salvar a localização de uma nova loja cadastrada no multilojas:

- No arquivo:
admin/controller/setting/store.php

- Localize a linha de código abaixo:
Código: Selecionar todos
$this->config->get('config_location');

- E substitua pela linha de código abaixo:
Código: Selecionar todos
$store_info['config_location'];

9º Erro ao resetar o contador de produtos visualizados:

- No arquivo:
admin/controller/extension/report/product_viewed.php

- Localize a linha de código abaixo:
Código: Selecionar todos
$this->response->redirect($this->url->link('report/report', 'user_token=' . $this->session->data['user_token'] . '&code=product_viewed' . $url, true));

- E substitua pela linha de código abaixo:
Código: Selecionar todos
$this->response->redirect($this->url->link('report/report', 'user_token=' . $this->session->data['user_token'] . '&code=product_viewed', true));

10º Erro 400 ao acessar o marketplace em servidores Nginx com Cloudflare:

- No arquivo:
admin/controller/markeplace/marketplace.php

- Localize todas as ocorrências da linha de código abaixo:
Código: Selecionar todos
curl_setopt($curl, CURLOPT_POST, 1);

- E substitua pela linha de código abaixo:
Código: Selecionar todos
curl_setopt($curl, CURLOPT_POST, 0);

Concluindo:

vá no menu Extensões→Modificações e clique no botão "Atualizar" (cor azul claro), para atualizar o cache de modificações, depois vá na página principal do painel de controle da administração da loja, abaixo do botão "Sair", você verá um botão na cor azul com o desenho de uma engrenagem branca dentro dele, clique neste botão, e no popup que vai abrir, clique nos dois botões na cor laranja que estão dentro da coluna "Ação" para atualizar o cache do tema.

Espero ter ajudado. :)

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]