Created
November 6, 2024 14:36
-
-
Save dantetesta/e42e8f9ad5e10e63277da7cbfb661eec to your computer and use it in GitHub Desktop.
Remoção user - Exames - Subpasta
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function wpscripts_delete_user_shortcode($atts) { | |
// Extrai os atributos | |
$atts = shortcode_atts(array( | |
'userid' => 0, | |
), $atts, 'delete_user'); | |
// Verifica se o userid foi passado e se o usuário está logado | |
if ($atts['userid'] && is_user_logged_in()) { | |
// Link de deleção do usuário, que redireciona para o processamento | |
$delete_url = esc_url(add_query_arg(array( | |
'delete_user' => $atts['userid'], | |
'nonce' => wp_create_nonce('wpscripts_delete_user_nonce') | |
), home_url('/sistema/dashboard'))); | |
// Botão de exclusão do usuário | |
return '<a href="' . $delete_url . '" class="delete-user-link" onclick="return confirmDelete();"> | |
<i class="fa fa-trash"></i> | |
</a>'; | |
} | |
return ''; | |
} | |
add_shortcode('delete_user', 'wpscripts_delete_user_shortcode'); | |
// Adiciona o script de confirmação | |
function wpscripts_confirm_delete_script() { | |
?> | |
<script type="text/javascript"> | |
function confirmDelete() { | |
return confirm("Tem certeza que deseja remover este usuário e todos os seus dados associados?"); | |
} | |
</script> | |
<?php | |
} | |
add_action('wp_footer', 'wpscripts_confirm_delete_script'); | |
// Função de processamento de exclusão do usuário | |
function wpscripts_process_delete_user() { | |
// Verifica se o parâmetro delete_user está presente na URL e se o usuário está logado | |
if (isset($_GET['delete_user']) && is_user_logged_in() && isset($_GET['nonce']) && wp_verify_nonce($_GET['nonce'], 'wpscripts_delete_user_nonce')) { | |
$user_id = intval($_GET['delete_user']); | |
if ($user_id > 0) { | |
global $wpdb; | |
// Recupera os IDs dos registros de exames do usuário na tabela de relações | |
$relations = $wpdb->get_results( | |
$wpdb->prepare( | |
"SELECT child_object_id FROM {$wpdb->prefix}jet_rel_10 WHERE parent_object_id = %d", | |
$user_id | |
) | |
); | |
if ($relations) { | |
foreach ($relations as $relation) { | |
$exame_id = $relation->child_object_id; | |
// Recupera os anexos do CPT 'exames' diretamente do banco de dados | |
$anexos = $wpdb->get_var( | |
$wpdb->prepare( | |
"SELECT meta_value FROM {$wpdb->prefix}postmeta WHERE post_id = %d AND meta_key = '_anexo'", | |
$exame_id | |
) | |
); | |
if ($anexos) { | |
$anexos_array = explode(',', $anexos); | |
foreach ($anexos_array as $anexo) { | |
$file_path = str_replace(get_site_url() . '/', ABSPATH, $anexo); | |
if (file_exists($file_path)) { | |
if (!unlink($file_path)) { | |
error_log("Failed to delete file: $file_path"); | |
} | |
} else { | |
error_log("File does not exist: $file_path"); | |
} | |
$attachment_id = $wpdb->get_var( | |
$wpdb->prepare( | |
"SELECT ID FROM {$wpdb->prefix}posts WHERE guid = %s", | |
$anexo | |
) | |
); | |
if ($attachment_id) { | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->posts} WHERE ID = %d", | |
$attachment_id | |
) | |
); | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->postmeta} WHERE post_id = %d", | |
$attachment_id | |
) | |
); | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->term_relationships} WHERE object_id = %d", | |
$attachment_id | |
) | |
); | |
} | |
} | |
} | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->posts} WHERE ID = %d", | |
$exame_id | |
) | |
); | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->postmeta} WHERE post_id = %d", | |
$exame_id | |
) | |
); | |
} | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->prefix}jet_rel_10 WHERE parent_object_id = %d", | |
$user_id | |
) | |
); | |
} | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->users} WHERE ID = %d", | |
$user_id | |
) | |
); | |
$wpdb->query( | |
$wpdb->prepare( | |
"DELETE FROM {$wpdb->usermeta} WHERE user_id = %d", | |
$user_id | |
) | |
); | |
// Redirecionar para /sistema/dashboard após a exclusão | |
wp_redirect(home_url('/sistema/dashboard')); | |
exit; | |
} | |
} | |
} | |
add_action('template_redirect', 'wpscripts_process_delete_user'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment