Files
SIGE-WEB-snapshot/ambiente-de-test/wp-content/plugins/sige-manager/sigemanager.php

602 lines
21 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
* Plugin Name: SIGE Manager
* Plugin URI: https://www.sige.ita.br/
* Description: Tools to organize SIGE Event
* Version: 0.1
* Author: andrekuros
* Author URI: https://www.sige.ita.br/
*/
include dirname( __FILE__ ) .'/sige_utils.php';
include dirname( __FILE__ ) .'/BR_user_viewer.php';
include dirname( __FILE__ ) .'/EN_user_viewer.php';
include dirname( __FILE__ ) .'/BR_user_viewer_quantica.php';
include dirname( __FILE__ ) .'/EN_user_viewer_quantica.php';
include dirname( __FILE__ ) .'/BR_user_viewer_ivr.php';
include dirname( __FILE__ ) .'/EN_user_viewer_ivr.php';
add_action('admin_menu', 'sige_setup_menu');
function sige_setup_menu(){
add_menu_page( 'SIGE Manager', 'SIGE Manager', 'manage_options', 'sige-manager', 'init_admin' );
}
function init_admin()
{
//Só mudar o ano após ter criado os campos "miniX_ano" para todos os minicursos disponíveis
//E também os campos novos "online2023" e "presencial2023"
$ano = 2023;
$courses = array("mini1_".$ano,"mini2_".$ano,"mini3_".$ano, "mini4_".$ano, "mini5_".$ano);
echo "<h1>SIGE MANAGER</h1>";
// General check for user permissions.
if (!current_user_can('manage_options')) {
wp_die( __('You do not have sufficient pilchards to access this page.') );
}
count_views();
//////// Controle Geral de Inscrições ////////////////////////
echo '<h2>Controle Geral de Inscrições</h2>';
echo '<hr style="height:2px;border:none;color:white;background-color:white"/>';
$events = array( array("name"=>"SIGE Online", "cod" => "online" . $ano),
array("name"=>"SIGE Presencial" , "cod" => "presencial" . $ano),
array("name"=>"I ENCONTRO NACIONAL DE TECNOLOGIAS QUÂNTICAS PARA A DEFESA (Online)", "cod" => "eged_online"),
array("name"=>"I ENCONTRO NACIONAL DE TECNOLOGIAS QUÂNTICAS PARA A DEFESA (Presencial)", "cod"=>"eged_presencial"),
array("name"=>"IVR Presencial", "cod"=>"ivr_presencial"),
array("name"=>"Inovação", "cod"=>"inovacao2023"),
array("name"=>"aerologlab2023", "cod"=>"aerologlab2023")
);
//Adicionar botao para exportar dados com os dados desejados
$meta_data = array("full_name", "militar","ehativa","forca","posto","circulo_hierarquico", "instituicao", "setordeatuacao", "areaatividadeprincipal", "cargofuncao" ,"nacionalidade", "cidade", "estado", "compartilha_dados","termos2022","compartilha2022","presencial_geral", "efetivo_dcta","serfa_ivr_credencial");
foreach($events as &$e) { $meta_data[] = $e["cod"]; }
foreach($courses as &$c) { $meta_data[] = $c; }
$user_list = generate_export_insc_list($meta_data, $ano);
array_to_csv_download($user_list, 'ListaInscritos'. date("d_m_Y") .'.csv', 'Exportar Lista Inscritos');
//Pegar informações de vagas do usuário controle de vagas (TODO: criar solução melhor)
//Hoje o usuário com ID 1551 usa os campos relativos aos minicursos para informar o número de vagas
$vagas = 700; //Vagas geral presencial
$user = get_user_by( 'ID', 1551); //ID do user controle_de_vagas
//Busca o número de vagas para cada minicurso
foreach ($events as &$e)
{
if ($user)
{
$e['Vagas'] = get_metadata('user', $user->ID, $e["cod"], true);
}
else
{
$e['Vagas'] = $vagas;
}
}
//Essa Função cria as tabelas e adiciona o botão para confirmações (ela está no SigeUtils.php)
generate_table_events($vagas, $events, "controleGeral", $ano);
//////// Controle de inscritos cada mini curso ////////////////////////
// Start building the page
echo '<h2>Controle de Inscrições em Minicursos</h2>';
echo '<hr style="height:2px;border:none;color:white;background-color:white"/>';
//Adicionar o número de minicuros disponíveis para o ano do evento
//
//Pegar informações de vagas do usuário controle de vagas (TODO: criar solução melhor)
$events = array( array("name"=>"Mini Curso 1", "cod" => "mini1_".$ano),
array("name"=>"Mini Curso 2" , "cod" => "mini2_".$ano),
array("name"=>"Mini Curso 3", "cod" => "mini3_".$ano),
array("name"=>"Mini Curso 4", "cod"=>"mini4_".$ano),
array("name"=>"Mini Curso 5", "cod"=>"mini5_".$ano)
);
//Pegar informações de vagas do usuário controle de vagas (TODO: criar solução melhor)
$vagas = 60;
$user = get_user_by( 'ID', 1551); //ID do user controle_de_vagas
foreach ($events as &$e) {
if ($user) {
$e['Vagas'] = get_metadata('user', $user->ID, $e["cod"], true);
}
else {
$e['Vagas'] = $vagas;
}
}
generate_table_events($vagas, $events, "miniCourses", $ano);
//////// Controle de Presenciais ////////////////////////
$args = array(
'role' => 'inscritos_'.$ano, 'orderby' => 'ID'
);
$usr_list = get_users($args);
$num_local = 0;
$num_local_militar = 0;
$num_dcta = 0;
$num_dcta_militar = 0;
$num_dcta_militar_forcas = array("Força Aérea Brasileira" => 0, "Exército Brasileiro"=> 0, "Marinha do Brasil"=> 0, "Marinha Brasileira" => 0 , "Forças Auxiliares"=> 0);
$num_externo = 0;
$num_externo_militar = 0;
$num_externo_militar_forcas = array("Força Aérea Brasileira" => 0, "Exército Brasileiro"=> 0, "Marinha do Brasil"=> 0, "Forças Auxiliares"=> 0);
$num_externo_militar_SIGE = array("Força Aérea Brasileira" => 0, "Exército Brasileiro"=> 0, "Marinha do Brasil"=> 0, "Forças Auxiliares"=> 0);
$num_externo_militar_SIGEg = array("Força Aérea Brasileira" => 0, "Exército Brasileiro"=> 0, "Marinha do Brasil"=> 0, "Forças Auxiliares"=> 0);
$count_merge = array();
$count_merge_militar = array();
$count_merge_civil = array();
$count_merge_guarnaeSJ_militar = array();
$count_merge_guarnaeSJ_civil = array();
if ( ! empty( $usr_list ) ) {
foreach ( $usr_list as $usr )
{
if (get_metadata('user', $usr->ID, "presencial_geral", true) == "Sim")
{
$merge = checkEventoLocal($usr);
if (!array_key_exists($merge,$count_merge))
$count_merge[$merge] = 1;
else
$count_merge[$merge]++;
$num_local++;
if (get_metadata('user', $usr->ID, "militar", true) == "Sim")
{
$num_local_militar++;
}
if (get_metadata('user', $usr->ID, "efetivo_dcta", true) == "Sim")
{
$num_dcta++;
if (get_metadata('user', $usr->ID, "militar", true) == "Sim")
{
$num_dcta_militar++;
$forca = get_metadata('user', $usr->ID, "forca", true);
if( $forca == "Clique para escolher a Força" || $forca == "")
$forca = "Força Aérea Brasileira";
if ($forca == "Marinha Brasileira")
{
$forca = "Marinha do Brasil";
}
if (array_key_exists($forca, $num_dcta_militar_forcas ))
$num_dcta_militar_forcas[$forca]++;
else
$num_dcta_militar_forcas[$forca] = 1;
if (!array_key_exists($merge,$count_merge_guarnaeSJ_militar))
$count_merge_guarnaeSJ_militar[$merge] = 1;
else
$count_merge_guarnaeSJ_militar[$merge]++;
//if ($merge == "+EGED Presencial")
// $num_externo_militar_EGEDg[$forca]++;
//if ($merge == "+SERFA_IVR Presencial")
// $num_externo_militar_IVRg[$forca]++;
if ($merge == "+SIGE Presencial")
$num_externo_militar_SIGEg[$forca]++;
}
else
{
if (!array_key_exists($merge,$count_merge_guarnaeSJ_civil))
$count_merge_guarnaeSJ_civil[$merge] = 1;
else
$count_merge_guarnaeSJ_civil[$merge]++;
}
}
else
{
$num_externo++;
if (get_metadata('user', $usr->ID, "militar", true) == "Sim")
{
$num_externo_militar++;
$forca = get_metadata('user', $usr->ID, "forca", true);
if( $forca == "Clique para escolher a Força" || $forca == "")
$forca = "Força Aérea Brasileira";
if ($forca == "Marinha Brasileira")
{
$forca = "Marinha do Brasil";
}
if (array_key_exists($forca, $num_externo_militar_forcas ))
{
$num_externo_militar_forcas[$forca]++;
}
else
{
$num_externo_militar_forcas[$forca] = 1;
}
if (!array_key_exists($merge,$count_merge_militar))
$count_merge_militar[$merge] = 1;
else
$count_merge_militar[$merge]++;
}
else
{
if (!array_key_exists($merge,$count_merge_civil))
$count_merge_civil[$merge] = 1;
else
$count_merge_civil[$merge]++;
}
}
}
}
}
echo '<br><strong>Total Presencial é Referente a "Participação Aprovada" e "Solicitar Participação" em algum dos eventos presenciais</strong>';
echo '<br>----------------------------------------------------------';
echo '<br> Total Presencial: ' . $num_local . '/' . sizeof($usr_list);
echo '<br> DCTA Presencial: ' . $num_dcta . ' ( ' . $num_dcta_militar . ' Militares ) -> ' . $num_dcta_militar_forcas["Força Aérea Brasileira"] .' FAB / ' . $num_dcta_militar_forcas["Exército Brasileiro"] .' EB / ' . $num_dcta_militar_forcas["Marinha do Brasil"] .' MB';
echo '<br> EXTERNO Presencial: ' . $num_externo . ' ( ' . $num_externo_militar . ' Militares ) -> ' . $num_externo_militar_forcas["Força Aérea Brasileira"] .' FAB / ' . $num_externo_militar_forcas["Exército Brasileiro"] .' EB / ' . $num_externo_militar_forcas["Marinha do Brasil"] .' MB';
echo '<br>----------------------------------------------------------<br>';
//////FUNÇÕES DE MANUTENÇÃO/////////////////
echo '<hr style="height:4px;border:none;color:white;background-color:white"/>';
echo '<h2>Migração Formato Anterior</h2>';
//////// Botao para atualizar campos usuários pelo registro ////////////////////////
echo '<hr style="height:2px;border:none;color:white;background-color:white"/>';
echo '<h4>Este botão busca as entradas originais do formulário de cadastro e atualiza os seguintes campos adicionais dos usuários:</h4>';
echo 'posto / militar / instituicao / nacionalidade / compartilhadados / nome exibição';
echo '<h3>Só pressione se você sabe o que está fazendo !!!</h3>';
// Check whether the button has been pressed AND also check the nonce
if (isset($_POST['update_from_reg_button']) && check_admin_referer('update_from_reg_button_clicked')) {
// the button has been pressed AND we've passed the security check
update_from_reg_button_action();
}
echo '<form action="options-general.php?page=sige-manager" method="post">';
// this is a WordPress security feature - see: https://codex.wordpress.org/WordPress_Nonces
wp_nonce_field('update_from_reg_button_clicked');
echo '<input type="hidden" value="true" name="update_from_reg_button" />';
submit_button('Atualizar dados pelo Registro');
echo '</form>';
/////////// MODELO PARA CRIAR UM BOTÃO PARA CHAMER UMA FUNÇÃO PERSONALIZADA ////////////////////////
/* echo '<hr style="height:2px;border:none;color:white;background-color:white"/>';
echo '<h4>Recusa inscrições específicas</h4>';
echo '<h3>Só pressione se você sabe o que está fazendo !!!</h3>';
$btn_name = 'naoprova_emails';
if (isset($_POST[$btn_name]) && check_admin_referer($btn_name . '_clicked'))
{
nao_aprovar_evento();
}
echo '<form action="options-general.php?page=sige-manager" method="post">';
wp_nonce_field($btn_name . '_clicked');
echo '<input type="hidden" value="true" name="'. $btn_name . '" />';
submit_button('Não Aprovar Específicos');
echo '</form>'; */
}
function update_from_reg_button_action()
{
$upd_count = 0;
global $wpdb;
$args = array('role' => 'subscriber' );
$usr_list = get_users();
if ( ! empty( $usr_list ) ) {
foreach ( $usr_list as $usr ) {
$usr_info = get_userdata( $usr->ID );
$usr_info->user_email;
//echo '<li>' . $usr_info->display_name . ' : ' . $usr_info->user_email .'</li>';
//Só checa novos usuários
//if (get_metadata( 'user', $usr->ID, 'militar', true ) != "" ) continue;
//Dados retirados do formulário de registro (4754 - 2022 / 742 - 2021)
$cf7_reg_id = get_cf7Id_from_email($usr_info->user_email, 4745);
if ($cf7_reg_id == null) {
$cf7_reg_id = get_cf7Id_from_email($usr_info->user_email, 742);
}
// Atualizar Campos
if ($cf7_reg_id != null)
{
/*$nome = get_cf7_param_from_id($cf7_reg_id->data_id, 'nome');
$posto_reg = get_cf7_param_from_id($cf7_reg_id->data_id, 'posto');
$eh_militar = get_cf7_param_from_id($cf7_reg_id->data_id, 'militar');
$instituicao = get_cf7_param_from_id($cf7_reg_id->data_id, 'instituicao');
$nacionalidade = get_cf7_param_from_id($cf7_reg_id->data_id, 'ehbrasileiro');
$compartilhaDados = get_cf7_param_from_id($cf7_reg_id->data_id, 'concordocompartilhar');*/
//$forca = get_cf7_param_from_id($cf7_reg_id->data_id, 'forcaarmada');
//$cidade = get_cf7_param_from_id($cf7_reg_id->data_id, 'cidade');
//$areaatividade = get_cf7_param_from_id($cf7_reg_id->data_id, 'areaatividadeprincipal');
//$setoratuacao = get_cf7_param_from_id($cf7_reg_id->data_id, 'setordeatuacao');
$cargofuncao = get_cf7_param_from_id($cf7_reg_id->data_id, 'cargofuncao');
/*if (get_metadata( 'user', $usr->ID, 'posto', true ) == "" );
update_user_meta( $usr->ID, 'posto', $posto_reg->value);
if (get_metadata( 'user', $usr->ID, 'militar', true ) == "" );
update_user_meta( $usr->ID, 'militar', $eh_militar->value);
if (get_metadata( 'user', $usr->ID, 'instituicao', true ) == "" );
update_user_meta( $usr->ID, 'instituicao', $instituicao->value);
if (get_metadata( 'user', $usr->ID, 'nacionalidade', true ) == "" );
update_user_meta( $usr->ID, 'nacionalidade', $nacionalidade->value);
if (get_metadata( 'user', $usr->ID, 'compartilha_dados', true ) == "" );
update_user_meta( $usr->ID, 'compartilha_dados', $compartilhaDados->value);*/
//if (get_metadata( 'user', $usr->ID, 'forca', true ) == "" );
// update_user_meta( $usr->ID, 'forca', $forca->value);
//if (get_metadata( 'user', $usr->ID, 'cidade', true ) == "" );
// update_user_meta( $usr->ID, 'cidade', $cidade->value);
//if (get_metadata( 'user', $usr->ID, 'areaatividadeprincipal', true ) == "" );
// update_user_meta( $usr->ID, 'areaatividadeprincipal', $areaatividade->value);
//if (get_metadata( 'user', $usr->ID, 'setordeatuacao', true ) == "" );
// update_user_meta( $usr->ID, 'setordeatuacao', $setoratuacao->value);
if (get_metadata( 'user', $usr->ID, 'cargofuncao', true ) == "" );
update_user_meta( $usr->ID, 'cargofuncao', $cargofuncao->value);
/*$displayName = $nome->value;//$usr->first_name . ' ' . $usr->last_name;
if ($eh_militar->value == "Sim")
$displayName = $posto_reg->value . ' ' . $displayName;
wp_update_user( array( 'ID' => $usr->ID, 'display_name' => $displayName ) );
wp_update_user( array( 'ID' => $usr->ID, 'first_name' => $displayName ) );
update_user_meta( $usr->ID, 'full_name', $nome->value);
*/
$upd_count = $upd_count + 1;
//if ($upd_count == 10) break;
}
}
}
echo '<div id="message" class="updated fade"><p>'
. $upd_count . ' Usuários foram atualizados pelo formulário de registro' . '</p></div>';
}
function update_from_insc_button_action()
{
$upd_count = 0;
global $wpdb;
$args = array(
'role' => 'subscriber',
);
$usr_list = get_users_details($args);
if ( ! empty( $usr_list ) )
{
//Atualiza os campos de inscrições nos minicursos
$regs = array(array("email","mini1", "mini2", "mini3", "mini4", "mini5"));
foreach ( $usr_list as $usr ) {
$usr_info = get_userdata( $usr->ID );
$usr_info->user_email;
//echo '<li>' . $usr_info->display_name . ' : ' . $usr_info->user_email .'</li>';
//$id_reg = 5017;
//Dados retirados do formulário de inscrição 2022 (5017)
//$cf7_reg_id = get_cf7Id_from_email($usr_info->user_email, $id_reg);
//if ($cf7_reg_id != null)
//{
$reg_id = 5160;
$cf7_reg_id = get_cf7Id_from_email($usr_info->user_email, $reg_id);
//}
if ($cf7_reg_id != null)
{
$courses = array("mini1", "mini2", "mini3", "mini4", "mini5");
$regs_usr = array($usr_info->user_email);
foreach ( $courses as $mini )
{
$mini_data = get_cf7_param_from_id($cf7_reg_id->data_id, $mini);
if ($mini_data != null )
{
if ($mini_data->value == "") { $mini_data = "Não Solicitada";}
else{
if ($mini_data->value == "Enrol") $mini_data = "Solicitar Participação";
}
$regs_usr[] = $mini_data;
echo $mini . ' -> ' . $mini_data . ' | ';
update_user_meta( $usr->ID, $mini, $mini_data);
}
else
{
$mini_data = "Não Solicitada";
echo $mini . ' -> ' . $mini_data . ' | ';
update_user_meta( $usr->ID, $mini, $mini_data);
$regs_usr[] = $mini_data;
}
}
$upd_count = $upd_count + 1;
$regs[] = $regs_usr;
}
}
array_to_csv_download($regs, 'mini_cursos_upd.csv','MiniCursos Data');
//Atualiza os campos de de inscrições no evento Online Presencial
$regs = array(array("email","online", "presencial"));
foreach ( $usr_list as $usr ) {
$usr_info = get_userdata( $usr->ID );
$usr_info->user_email;
//Dados retirados do formulário de inscrição 2022 (5017)
$cf7_reg_id = get_cf7Id_from_email($usr_info->user_email, 5160);
if ($cf7_reg_id != null)
{
$regs_usr = array($usr_info->user_email);
$part_data = get_cf7_param_from_id($cf7_reg_id->data_id, "participacao");
if ($part_data != null )
{
if ($part_data->value == "") { $part_data = "Não Solicitada";}
else{ $part_data = $part_data->value;}
if ($part_data == "On-line")
{
update_user_meta( $usr->ID, 'online2022', 'Participação APROVADA');
update_user_meta( $usr->ID, 'presencial2022', 'Não Solicitada');
$regs_usr[] = $part_data;
}
if ($part_data == "In-person")
{
update_user_meta( $usr->ID, 'presencial2022', 'Solicitar Participação');
update_user_meta( $usr->ID, 'online2022', 'Participação APROVADA');
$regs_usr[] = $part_data;
}
}
if ($part_data == null || $part_data == "Não Solicitada")
{
$part_data = "Não Solicitada";
update_user_meta( $usr->ID, 'online2022', $part_data);
update_user_meta( $usr->ID, 'presencial2022', $part_data);
$regs_usr[] = $part_data;
$regs_usr[] = $part_data;
}
update_user_meta( $usr->ID, 'eged_presencial', "Não Solicitada");
update_user_meta( $usr->ID, 'serfa_ivr_presencial', "Não Solicitada");
update_user_meta( $usr->ID, 'eged_online', "Não Solicitada");
$upd_count = $upd_count + 1;
$regs[] = $regs_usr;
}
}
array_to_csv_download($regs, 'eventos_upd.csv','Eventos Data');
}
echo '<div id="message" class="updated fade"><p>'
. $upd_count . ' Usuários foram atualizados pelo Formulário de Inscrição' . '</p></div>';
}
function get_some_data( $value ){
global $wpdb;
$sql = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}cf7_vdata_entry WHERE value = %s ", $value );
return $wpdb->get_results( $sql );
}
function get_all_tables_names($value ){
global $wpdb;
$sql = $wpdb->prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = %s", $value);
return $wpdb->get_results( $sql );
}
function get_all_emails(){
global $wpdb;
$sql = "SELECT * FROM {$wpdb->prefix}cf7_vdata_entry WHERE cf7_id = 4745 AND NAME ='email'\n"
. "ORDER BY `arzam_cf7_vdata_entry`.`cf7_id` ASC;";
return $wpdb->get_results( $sql );
}
function get_cf7Id_from_email($email, $form_id){
global $wpdb;
$sql = $wpdb->prepare("SELECT data_id FROM {$wpdb->prefix}cf7_vdata_entry WHERE name ='email' AND value = %s AND cf7_id = %s", $email, $form_id) ;
$data = $wpdb->get_results( $sql );
if ( ! empty( $data ) ) {
return array_values(array_slice($data, -1))[0];
}
else
{
return null;
}
return array_values(array_slice($data, -1))[0];
}
function get_cf7_param_from_id($id, $param){
global $wpdb;
$sql = $wpdb->prepare("SELECT value FROM {$wpdb->prefix}cf7_vdata_entry WHERE data_id =%d AND name = %s", $id, $param) ;
$data = $wpdb->get_results( $sql );
if ( ! empty( $data ) ) {
return array_values(array_slice($data, -1))[0];
}
else
{
return null;
}
}
function get_users_details($args)
{
$my_user_query = new WP_User_Query( $args );
$users_res = $my_user_query->get_results();
return $users_res;
}
/*add_action( 'wp_login', 'format_user_display_name_on_login' );
function format_user_display_name_on_login( $username ) {
$user = get_user_by( 'login', $username );
$userdata = array(
'ID' => $user->ID,
'display_name' => $user->user_login,
);
wp_update_user( $userdata );
} */
?>