Skip to content

Commit

Permalink
Merge pull request #151 from ResidenciaTICBrisa/refactor
Browse files Browse the repository at this point in the history
Refatoração dos códigos em PHP do plugin
  • Loading branch information
Max-Rohrer20 authored Jun 3, 2024
2 parents 99203b8 + a70a22c commit 1bfcd9b
Show file tree
Hide file tree
Showing 5 changed files with 213 additions and 120 deletions.
122 changes: 20 additions & 102 deletions lgbtq_connect/includes/admin/formulario-admin-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,7 @@ function aprovar_formulario($id) {
$estado_atual = $wpdb->get_var($wpdb->prepare("SELECT situacao FROM lc_formulario WHERE id = %d", $id));

// Atualiza o status do formulário para 'Aprovado' no banco de dados
$query = $wpdb->prepare("UPDATE lc_formulario SET situacao = 'Aprovado' WHERE id = %d", $id);
$resultado = $wpdb->query($query);
alteraStatus($wpdb, $id, 'Aprovado');

// Verifica se o estado anterior era 'Negado' para enviar o e-mail de notificação
if ($estado_atual === 'Negado' || $estado_atual === 'Pendente') {
Expand Down Expand Up @@ -60,16 +59,32 @@ function aprovar_formulario($id) {
// Redireciona de volta para a mesma página após a atualização
echo '<script>window.location.href = window.location.href;</script>';
}

function alteraStatus($wpdb, $id, $newStatus){
if (!isset($wpdb) || empty($id) || empty($newStatus)) {
return false;
}

// Atualiza o status do formulário no banco de dados
$query = $wpdb->prepare("UPDATE lc_formulario SET situacao = %s WHERE id = %d", $newStatus, $id);
$resultado = $wpdb->query($query);

if($resultado === false) {
// Trate o erro aqui
return false;
}

return true;
}

// Função para rejeitar o formulário
function rejeitar_formulario($id) {
global $wpdb;

// Busca o estado atual do formulário
$estado_atual = $wpdb->get_var($wpdb->prepare("SELECT situacao FROM lc_formulario WHERE id = %d", $id));

// Atualiza o status do formulário para 'Negado' no banco de dados
$query = $wpdb->prepare("UPDATE lc_formulario SET situacao = 'Negado' WHERE id = %d", $id);
$resultado = $wpdb->query($query);
alteraStatus($wpdb, $id, 'Negado');

// Verifica se o estado anterior era 'Aprovado' ou 'Pendente' para enviar o e-mail de notificação
if ($estado_atual === 'Aprovado' || $estado_atual === 'Pendente') {
Expand Down Expand Up @@ -104,100 +119,3 @@ function excluir_formulario($id) {
// Redireciona de volta paloucademia de policiara a mesma página após a atualização
echo '<script>window.location.href = window.location.href;</script>';
}
// Verifica se o parâmetro "action" foi enviado via POST
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST['action'])) {
// Verifica a ação do formulário
if ($_POST['action'] === 'approve' && isset($_POST['id'])) {
aprovar_formulario($_POST['id']);
}
elseif ($_POST['action'] === 'reprove' && isset($_POST['id'])) {
rejeitar_formulario($_POST['id']);
}
elseif ($_POST['action'] === 'exclude' && isset($_POST['id'])) {
excluir_formulario($_POST['id']);
}
}
?>
<!DOCTYPE html>
<html>
<head>
<!-- Linkando css -->
<link rel="stylesheet" href="<?php echo plugin_dir_url(__FILE__); ?>style-admin.css">
</head>
<body>
<div id="div_admin">
<div id="div-mapa_botoes">
<div id="mapa_admin" class="div-mapa_botoes_filho" style="height: 300px; width: 60%; margin-bottom: 10px;"></div>
<div id="botoes_admin" class="div-mapa_botoes_filho" style="width: 30%; margin-bottom: 10px;">
<?php
global $wpdb;

$query_aprovados = "SELECT * FROM lc_formulario WHERE situacao='Aprovado'";
$query_negados = "SELECT * FROM lc_formulario WHERE situacao='Negado'";
$query_pendentes = "SELECT * FROM lc_formulario WHERE situacao='Pendente'";

$aprovados = $wpdb->get_results($query_aprovados);
$negados = $wpdb->get_results($query_negados);
$pendentes = $wpdb->get_results($query_pendentes);
echo '<button value="Aprovado" onclick="filtrar(this)">' . count($aprovados) . ' Aprovados</button>';
echo '<button value="Negado" onclick="filtrar(this)">' . count($negados) . ' Negados</button>';
echo '<button value="Pendente" onclick="filtrar(this)">' . count($pendentes) . ' Pendentes</button>';
?>
</div>
</div>
<div id="contador_resultados">
</div>
<div id=filtros>
<form method="post">
<div id="busca_nome_container" class="filtro">
<input type="text" id="busca_nome" placeholder="Pesquise pelo nome" oninput="filtrar()">
</div>
</form>
<select id="selecao_servico" class="filtro" onchange="filtrar()" required>
<option value="" selected disabled>Selecione...</option>
<option value="bar/restaurante">Bares/restaurantes</option>
<option value="entretenimento">Entretenimento</option>
<option value="beleza">Beleza</option>
<option value="hospedagem">Hospedagem</option>
<option value="ensino">Ensino</option>
<option value="academia">Academia</option>
<option value="">Todos</option>
</select>
</div>
<div class="wrap">
<div id="confirmModal" class="modal">
<div class="modal-content">
<p id="confirmMessage"></p>
<button id="confirmBtn" onclick=>Confirmar</button>
<button id="cancelBtn">Cancelar</button>
</div>
</div>
<table class="wp-list-table widefat striped" id="tabela">
<thead>
<tr>
<th class="sort-header">Nome <button class="sort-btn" data-order="asc"><span class="sort-icon">&#9652;</span></button></th>
<th class="sort-header">Email <button class="sort-btn sort-by-email" data-order="asc"><span class="sort-icon">&#9652;</span></button></th>
<th>Latitude</th>
<th>Longitude</th>
<th>Serviço</th>
<th>Descrição</th>
<th class="sort-header">Data e hora <button class="sort-btn sort-by-date" data-order="asc"><span class="sort-icon">&#9652;</span></button></th>
<th>Status</th>
<th>Ações</th>
</tr>
</thead>
<tbody>
<?php
echo '<script src="' . plugin_dir_url(__FILE__) . 'admin_script.js"></script>';
?>
</div>
</div>

<!-- Carregue o jQuery antes de qualquer outro script que o utilize -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- Carregue o Leaflet antes de qualquer script que o utilize -->
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" />

</body>
</html>
92 changes: 92 additions & 0 deletions lgbtq_connect/includes/admin/pagina_administracao.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,96 @@ function mostrar_dados() {
$dados_formulario = $wpdb->get_results("SELECT * FROM lc_formulario");

require 'formulario-admin-page.php';

// Verifica se o parâmetro "action" foi enviado via POST
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST['action'])) {
// Verifica a ação do formulário
if ($_POST['action'] === 'approve' && isset($_POST['id'])) {
aprovar_formulario($_POST['id']);
}
elseif ($_POST['action'] === 'reprove' && isset($_POST['id'])) {
rejeitar_formulario($_POST['id']);
}
elseif ($_POST['action'] === 'exclude' && isset($_POST['id'])) {
excluir_formulario($_POST['id']);
}
}
?>
<!DOCTYPE html>
<html>
<head>
<!-- Linkando css -->
<link rel="stylesheet" href="<?php echo plugin_dir_url(__FILE__); ?>style-admin.css">
</head>
<body>
<div id="div_admin">
<div id="div-mapa_botoes">
<div id="mapa_admin" class="div-mapa_botoes_filho" style="height: 300px; width: 60%; margin-bottom: 10px;"></div>
<div id="botoes_admin" class="div-mapa_botoes_filho" style="width: 30%; margin-bottom: 10px;">
<?php
global $wpdb;

$query_aprovados = "SELECT * FROM lc_formulario WHERE situacao='Aprovado'";
$query_negados = "SELECT * FROM lc_formulario WHERE situacao='Negado'";
$query_pendentes = "SELECT * FROM lc_formulario WHERE situacao='Pendente'";

$aprovados = $wpdb->get_results($query_aprovados);
$negados = $wpdb->get_results($query_negados);
$pendentes = $wpdb->get_results($query_pendentes);
echo '<button value="Aprovado" onclick="filtrar(this)">' . count($aprovados) . ' Aprovados</button>';
echo '<button value="Negado" onclick="filtrar(this)">' . count($negados) . ' Negados</button>';
echo '<button value="Pendente" onclick="filtrar(this)">' . count($pendentes) . ' Pendentes</button>';
?>
</div>
</div>
<div id="contador_resultados">
</div>
<div id=filtros>
<form method="post">
<div id="busca_nome_container" class="filtro">
<input type="text" id="busca_nome" placeholder="Pesquise pelo nome" oninput="filtrar()">
</div>
</form>
<select id="selecao_servico" class="filtro" onchange="filtrar()" required>
<option value="" selected disabled>Selecione...</option>
<option value="bar/restaurante">Bares/restaurantes</option>
<option value="entretenimento">Entretenimento</option>
<option value="beleza">Beleza</option>
<option value="hospedagem">Hospedagem</option>
<option value="ensino">Ensino</option>
<option value="academia">Academia</option>
<option value="">Todos</option>
</select>
</div>
<div class="wrap">
<table class="wp-list-table widefat striped" id="tabela">
<thead>
<tr>
<th class="sort-header">Nome <button class="sort-btn" data-order="asc"><span class="sort-icon">&#9652;</span></button></th>
<th class="sort-header">Email <button class="sort-btn sort-by-email" data-order="asc"><span class="sort-icon">&#9652;</span></button></th>
<th>Latitude</th>
<th>Longitude</th>
<th>Serviço</th>
<th>Descrição</th>
<th class="sort-header">Data e hora <button class="sort-btn sort-by-date" data-order="asc"><span class="sort-icon">&#9652;</span></button></th>
<th>Status</th>
<th>Ações</th>
</tr>
</thead>
<tbody>
<?php
echo '<script src="' . plugin_dir_url(__FILE__) . 'admin_script.js"></script>';
?>
</div>
</div>

<!-- Carregue o jQuery antes de qualquer outro script que o utilize -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- Carregue o Leaflet antes de qualquer script que o utilize -->
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" />

</body>
</html>
<?php
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

class WordPressHelper {
class Auxiliar_Process_Forms {
// Função para sanitizar os dados
public static function sanitize_data($data, $type = 'text') {
switch ($type) {
case 'email':
Expand All @@ -14,24 +15,28 @@ public static function sanitize_data($data, $type = 'text') {
}
}

public static function insert_data_into_db($data) {
global $wpdb;
// Função para inserir dados no banco de dados
public static function insert_data_into_db($wpdb, $data) {
$table_name = "lc_formulario";
return $wpdb->insert($table_name, $data);
}

// Função para obter o horário atual
public static function get_current_time() {
return current_time('mysql');
}

// Função para obter o e-mail do administrador
public static function get_admin_email() {
return get_option('admin_email');
}

// Função para obter a URL do painel de administração
public static function get_admin_panel_url() {
return admin_url('admin.php?page=lc_admin');
}

// Função para enviar e-mails
public static function send_email($to, $subject, $message) {
return wp_mail($to, $subject, $message);
}
Expand Down
32 changes: 17 additions & 15 deletions lgbtq_connect/includes/data/process_form.php
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
<?php
// Inclui o arquivo WordPressHelper.php usando um caminho relativo
require_once plugin_dir_path(__FILE__) . 'WordPressHelper.php';
// Supondo que processar_formulario esteja também nesse arquivo ou você pode colocar em outro arquivo e incluí-lo aqui.
// Inclui o arquivo Auxiliar_Process_Forms.php usando um caminho relativo
require_once plugin_dir_path(__FILE__) . 'auxiliar_process_form.php';

function processar_formulario() {
global $wpdb;

// Verifica se o formulário foi enviado
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Transforma a string do formData em uma array
parse_str($_POST['formData'], $formFields);

// Filtra o conteúdo enviado nos formulários
$nome = isset($formFields['nome']) ? WordPressHelper::sanitize_data($formFields['nome'], 'text') : '';
$email = isset($formFields['email']) ? WordPressHelper::sanitize_data($formFields['email'], 'email') : '';
$descricao = isset($formFields['descricao']) ? WordPressHelper::sanitize_data($formFields['descricao'], 'textarea') : '';
$latitude = isset($formFields['latitude']) ? WordPressHelper::sanitize_data($formFields['latitude'], 'float') : 0;
$longitude = isset($formFields['longitude']) ? WordPressHelper::sanitize_data($formFields['longitude'], 'float') : 0;
$servico = isset($formFields['servico']) ? WordPressHelper::sanitize_data($formFields['servico'], 'text') : '';
$nome = isset($formFields['nome']) ? Auxiliar_Process_Forms::sanitize_data($formFields['nome'], 'text') : '';
$email = isset($formFields['email']) ? Auxiliar_Process_Forms::sanitize_data($formFields['email'], 'email') : '';
$descricao = isset($formFields['descricao']) ? Auxiliar_Process_Forms::sanitize_data($formFields['descricao'], 'textarea') : '';
$latitude = isset($formFields['latitude']) ? Auxiliar_Process_Forms::sanitize_data($formFields['latitude'], 'float') : 0;
$longitude = isset($formFields['longitude']) ? Auxiliar_Process_Forms::sanitize_data($formFields['longitude'], 'float') : 0;
$servico = isset($formFields['servico']) ? Auxiliar_Process_Forms::sanitize_data($formFields['servico'], 'text') : '';

// Verifica se todos os campos necessários estão presentes
if ($nome && $email && $descricao && $latitude && $longitude && $servico) {
$data_hora_envio = WordPressHelper::get_current_time();
$data_hora_envio = Auxiliar_Process_Forms::get_current_time();

// Insere os dados no banco de dados
$result = WordPressHelper::insert_data_into_db(array(
$result = Auxiliar_Process_Forms::insert_data_into_db($wpdb, array(
'nome' => $nome,
'email' => $email,
'descricao' => $descricao,
Expand All @@ -32,12 +34,12 @@ function processar_formulario() {
));

// Obter e-mail do administrador do site
$admin_email = WordPressHelper::get_admin_email();
$admin_email = Auxiliar_Process_Forms::get_admin_email();
// Formata a data e hora para o formato desejado
$data_hora_formatada = date('d/m/Y H:i', strtotime($data_hora_envio));

// Constrói a URL do painel de administração
$admin_panel_url = WordPressHelper::get_admin_panel_url();
$admin_panel_url = Auxiliar_Process_Forms::get_admin_panel_url();

// Informações adicionais para o e-mail
$local_cadastrado = 'Nome do Local: ' . $nome . "\n";
Expand All @@ -48,13 +50,13 @@ function processar_formulario() {

$subject = 'LGBTQ+ Connect - Nova solicitação de plotagem recebida';
// Envie o e-mail de notificação para o administrador do site
WordPressHelper::send_email($admin_email, $subject, $message);
Auxiliar_Process_Forms::send_email($admin_email, $subject, $message);

// Envie o e-mail de confirmação para o usuário
$subject_user = 'LGBTQ+ Connect - Sua solicitação de plotagem foi recebida';
$message_user = 'Olá! Sua solicitação de plotagem foi recebida. Aqui estão os detalhes:' . "\n" . $local_cadastrado . $tipo_servico . $data_hora_cadastro . 'Você será notificado quando sua solicitação for processada. Obrigado!';

WordPressHelper::send_email($email, $subject_user, $message_user);
Auxiliar_Process_Forms::send_email($email, $subject_user, $message_user);
} else {
echo "Erro: Preencha todos os campos corretamente.";
}
Expand Down
Loading

0 comments on commit 1bfcd9b

Please sign in to comment.