2026-06-29 13:13:20 -03:00
< ? php
2026-06-29 13:31:38 -03:00
/*
Plugin Name : Simulador Mob - Out ARI - POLI
Plugin URI : https :// code . beco . cc / beco / simulador - mob - out - ari - poli
Description : Calculadora de pré - seleção para mobilidade OUT da ARI / POLI - UPE , exibida via shortcode [ simulador_mob ] .
2026-06-29 17:30:54 -03:00
Version : 1.3 . 20260629
2026-06-29 13:31:38 -03:00
Author : Ruben Carlo Benante
Author URI : https :// beco . cc
License : GPLv3 or later
License URI : http :// www . gnu . org / licenses / gpl - 3.0 . html
Text Domain : simulador - mob - out - ari - poli
*/
2026-06-29 13:13:20 -03:00
/* ------------------------------------------------------------------------ */
// Simulador Mob Out - Copyright (C) 2022-2024 - Versão 1.0.20220701
// Autores:
// * Prof. Dr. Ruben Carlo Benante <rcb@beco.cc>
// * Pedro Henrique Azevedo Vanderlei de Mendonça <phavm@poli.br>
// Data: 2022-07-01
/* ------------------------------------------------------------------------ */
2026-06-29 13:31:38 -03:00
namespace Beco\SimuladorMobOut ;
if ( ! defined ( 'ABSPATH' ) ) {
exit ;
}
2026-06-29 13:13:20 -03:00
/* ------------------------------------------------------------------------ */
//Função max = 10
function maximo_dez ( $nota ){
if ( $nota > 10 ) {
$nota = 10 ;
return $nota ;
} else {
return $nota ;
}
}
/* ------------------------------------------------------------------------ */
//Função nota de reprovações
function nota_reprovacoes ( $nrec , $nnrec ){
$ro = ( 40 - ( 2 * $nnrec ) - $nrec ) / 4 ;
if ( $ro < 0 ){
$ro = 0 ;
return $ro ;
}
return $ro ;
}
/* ------------------------------------------------------------------------ */
//Função nota do histórico
function nota_historico ( $po , $ro , $mo ){
if ( $mo == 0 ){
$o = 0 ;
return $o ;
} else {
$o = (( $po * 10 ) * 1 + $ro * 3 + $mo * 5 ) / ( 1 + 3 + 5 );
return $o ;
}
}
/* ------------------------------------------------------------------------ */
//Função nota de atividades desenvolvidas
function nota_atividades ( $ps , $es , $ms ){
$s = ( $ps + $es + $ms ) * 2 ;
$s = maximo_dez ( $s );
return $s ;
}
/* ------------------------------------------------------------------------ */
//Função nota publicações
function nota_lattes ( $apy , $acy , $cy , $ly , $ry ){
$y = ( $apy * 2 * 2 + $acy * 2 * 1 + $cy * 2 * 2 + $ly * 2 * 3 + $ry * 2 * 1 ) / ( 2 + 1 + 2 + 3 + 1 );
$y = maximo_dez ( $y );
return $y ;
}
/* ------------------------------------------------------------------------ */
//Função nota dos eventos
function nota_eventos ( $ea , $pa , $ca ){
$a = ( $ea + $pa + $ca ) * 2 ;
$a = maximo_dez ( $a );
return $a ;
}
/* ------------------------------------------------------------------------ */
//Função nota geral
function nota_geral ( $o , $s , $y , $a ){
global $entradas ;
global $h ;
if ( $entradas [ 'programa' ] == 1 ) {
if ( $entradas [ 'mobilidade' ] == 1 ) {
if ( $entradas [ 'lingua' ] <= 3 && $entradas [ 'lingua2' ] <= 2 ) {
$h = " Declassificado por não possuir proficiência superior a A2 em italiano ou B1 em inglês. " ;
return $h ;
} else {
$h = ( $o * 5 + $s * 2 + $y * 3 + $a * 2 ) / ( 5 + 2 + 3 + 2 );
$h = number_format ( $h , 2 );
return " Sua nota é: $h " ;
}
} elseif ( $entradas [ 'mobilidade' ] == 2 ) {
if ( $entradas [ 'lingua' ] <= 3 ) {
$h = " Desclassificado por não possuir proficiência superior a B1 em inglês. " ;
return $h ;
} else {
$h = ( $o * 5 + $s * 2 + $y * 3 + $a * 2 ) / ( 5 + 2 + 3 + 2 );
$h = number_format ( $h , 2 );
return " Sua nota é: $h " ;
}
}
} else {
$h = ( $o * 5 + $s * 2 + $y * 3 + $a * 2 ) / ( 5 + 2 + 3 + 2 );
$h = number_format ( $h , 2 );
return " Sua nota é: $h " ;
}
}
/* ------------------------------------------------------------------------ */
//Função tratamento de entrada
function limpaPost ( $valor ){
$valor = trim ( $valor );
$valor = stripslashes ( $valor );
$valor = htmlspecialchars ( $valor );
return $valor ;
}
/* ------------------------------------------------------------------------ */
//Função para pegar a entrada
function validar_entrada (){
global $entradas ;
2026-06-29 16:55:37 -03:00
// Lista completa dos campos numericos esperados. Inicializar todos em 0
// evita avisos de "Undefined array key" no PHP 8 quando o formulario chega
// incompleto, e o cast para float garante valores numericos (sem avisos de
// "non-numeric value") mesmo diante de um POST adulterado.
$campos = array (
'programa' , 'mobilidade' , 'lingua' , 'lingua2' , 'porcentagem' ,
'repro_rec' , 'repro_nrec' , 'media' , 'ic' , 'extensao' , 'monitoria' ,
'art_periodicos' , 'art_congresso' , 'cap_livros' , 'livros' , 'resumos' ,
'evento_extensao' , 'evento_pesquisa' , 'congresso' ,
'estagio' , 'estagio_exterior' ,
);
$entradas = array ();
foreach ( $campos as $campo ) {
if ( isset ( $_POST [ $campo ]) && $_POST [ $campo ] !== '' ) {
2026-06-29 17:00:01 -03:00
// Clampa negativos em 0: nenhum campo legitimo (notas, contagens,
// selecoes) e negativo; isto neutraliza POST adulterado, ja que o
// min="0" do HTML so vale no navegador.
$entradas [ $campo ] = max ( 0 , ( float ) limpaPost ( $_POST [ $campo ]));
2026-06-29 13:13:20 -03:00
} else {
2026-06-29 16:55:37 -03:00
$entradas [ $campo ] = 0 ;
2026-06-29 13:13:20 -03:00
}
}
}
/* ------------------------------------------------------------------------ */
//Função para mudar a tela dependendo do programa de mobilidade escolhido pelo estudante
function imprime ( $string1 , $brafitec = '' , $polito = '' ) {
$fgeral = array ( 1 , 2 , 3 );
if ( ! isset ( $_POST [ 'programa' ]) || in_array ( $_POST [ 'programa' ], $fgeral )){
echo $string1 ;
if ( ! isset ( $_POST [ 'programa' ]) || $_POST [ 'programa' ] == 1 ){
echo $polito ;
}
}
elseif ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 4 ) {
echo $brafitec ;
}
}
/* ------------------------------------------------------------------------ */
//Função para calcular a nota do BRAFITEC
function nota_brafitec ( $mo , $est_ext , $ps , $outros ){
global $entradas ;
if ( isset ( $entradas [ 'lingua' ]) && $entradas [ 'lingua' ] <= 2 ){
$h_brafitec = " Declassificado por não possuir proficiência em francês maior ou igual a B1. " ;
return $h_brafitec ;
}
if ( isset ( $entradas [ 'porcentagem' ]) && $entradas [ " porcentagem " ] == 0 ) {
$h_brafitec = " Desclassificado por não estar entre 40% e 80% do seu curso. " ;
return $h_brafitec ;
} elseif ( isset ( $entradas [ 'repro_nrec' ]) && $entradas [ " repro_nrec " ] > 0 ) {
if ( $entradas [ 'repro_nrec' ] == 1 ) {
$h_brafitec = " Desclassificado por ter reprovação não recuperada " ;
return $h_brafitec ;
} else {
$h_brafitec = " Desclassificado por ter reprovações não recuperadas " ;
return $h_brafitec ;
}
} elseif ( isset ( $entradas [ 'repro_rec' ]) && $entradas [ " repro_rec " ] > 2 ) {
$h_brafitec = " Desclassificado por ter mais de 2 reprovações recuperadas " ;
return $h_brafitec ;
} else {
$est_ext = maximo_dez ( $est_ext );
$ps = maximo_dez ( $ps );
$h_brafitec = (( $mo * 7 ) + ( $est_ext * 0.5 ) + ( $ps * 1.5 ) + ( $outros * 1 )) / 10 ;
$h_brafitec = number_format ( $h_brafitec , 2 );
return " Sua nota é: $h_brafitec " ;
}
}
/* ------------------------------------------------------------------------ */
//Função para calcular outras atividades do BRAFITEC
function outras_brafitec ( $es , $ms , $est , $apy , $acy , $cy , $ly , $ry , $ea , $pa , $ca ){
$outros = $es + $ms + $est + $apy + $acy + $cy + $ly + $ry + $ea + $pa + $ca ;
$outros = maximo_dez ( $outros );
return $outros ;
}
2026-06-29 13:31:38 -03:00
function simulador_mob_shortcode () {
2026-06-29 17:14:39 -03:00
\wp_enqueue_script ( 'mathjax' );
2026-06-29 13:13:20 -03:00
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' ){
//var_dump($_POST);
if ( isset ( $_POST [ " calcular " ])) {
validar_entrada ();
global $entradas ;
2026-06-29 17:05:10 -03:00
if ( $entradas [ " media " ] <= 0 ){
// Media curricular e a base da nota (peso 5 no Padrao V2, peso 7 no
// BRAFITEC). Sem ela, evita exibir uma nota baixa enganosa.
global $h , $h_brafitec ;
$h = $h_brafitec = " Preencha a média curricular para calcular a nota. " ;
} elseif ( $entradas [ " programa " ] != 4 ){
2026-06-29 13:13:20 -03:00
global $o , $ro , $s , $y , $a , $h , $entradas ;
$ro = nota_reprovacoes ( $entradas [ " repro_rec " ], $entradas [ " repro_nrec " ]);
$o = nota_historico ( $entradas [ " porcentagem " ], $ro , $entradas [ " media " ]);
$s = nota_atividades ( $entradas [ " ic " ], $entradas [ " extensao " ], $entradas [ " monitoria " ]);
$y = nota_lattes ( $entradas [ " art_periodicos " ], $entradas [ " art_congresso " ], $entradas [ " cap_livros " ], $entradas [ " livros " ], $entradas [ " resumos " ]);
$a = nota_eventos ( $entradas [ " evento_extensao " ], $entradas [ " evento_pesquisa " ], $entradas [ " congresso " ]);
$h = nota_geral ( $o , $s , $y , $a );
$o = number_format ( $o , 2 );
$s = number_format ( $s , 2 );
$y = number_format ( $y , 2 );
$a = number_format ( $a , 2 );
} elseif ( $entradas [ " programa " ] == 4 ) {
global $entradas , $h_brafitec , $outros ;
$outros = outras_brafitec ( $entradas [ " extensao " ], $entradas [ " monitoria " ], $entradas [ " estagio " ], $entradas [ " art_periodicos " ], $entradas [ " art_congresso " ], $entradas [ " cap_livros " ], $entradas [ " livros " ], $entradas [ " resumos " ], $entradas [ " evento_extensao " ], $entradas [ " evento_pesquisa " ], $entradas [ " congresso " ]);
$h_brafitec = nota_brafitec ( $entradas [ " media " ], $entradas [ " estagio_exterior " ], $entradas [ " ic " ], $outros );
}
}
}
2026-06-29 13:31:38 -03:00
ob_start ();
2026-06-29 13:13:20 -03:00
?>
2026-06-29 13:31:38 -03:00
< div class = " simulador-mob-out " >
2026-06-29 13:13:20 -03:00
< style >
2026-06-29 13:31:38 -03:00
. simulador - mob - out td { padding : 5 px ; }
. simulador - mob - out td . labels { width : 220 px ; }
2026-06-29 13:13:20 -03:00
</ style >
< div style = " overflow-x: auto; " >
< div style = " display: flex; " >
< div style = " flex: 80%; " >
< p > Esta página segue os pesos e critérios da pré - seleção para mobilidade OUT da ARI / POLI encontradas no Formulário de Mobilidade OUT , disponível no link < a href = " https://ari.poli.br/document/form-mob-out/ " > https :// ari . poli . br / document / form - mob - out /</ a >.</ p >
< p id = " linkdemo " ></ p >
< form method = " post " >
< label for = " programa " > Escolha o programa / universidade que você deseja fazer mobilidade :</ label >
< select name = " programa " id = " programa " onchange = " this.form.submit() " >
< option value = " 1 " < ? php if ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 1 ){ echo " selected " ;} ?> >POLITO</option>
< option value = " 2 " < ? php if ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 2 ){ echo " selected " ;} ?> >FEUP</option>
< option value = " 3 " < ? php if ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 3 ){ echo " selected " ;} ?> >UCoimbra</option>
< option value = " 4 " < ? php if ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 4 ){ echo " selected " ;} ?> >BRAFITEC</option>
</ select >
< ? php if ( isset ( $_POST [ 'programa' ]) == FALSE ){ echo " (Fórmula Padrão-V2 ARI/POLI) " ;} ?>
< ? php if ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 1 ){ echo " (Fórmula Padrão-V2 ARI/POLI) " ;} ?>
< ? php if ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 2 ){ echo " (Fórmula Padrão-V2 ARI/POLI) " ;} ?>
< ? php if ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 3 ){ echo " (Fórmula Padrão-V2 ARI/POLI) " ;} ?>
< ? php if ( isset ( $_POST [ 'programa' ]) && $_POST [ 'programa' ] == 4 ){ echo " (Fórmula do BRAFITEC/CAPES): " ;} ?>
<!-- TIPO DE MOBILIDADE -->
< ? php imprime ( '' , '' , " <br><br> " ); ?>
2026-06-29 13:47:08 -03:00
< ? php imprime ( '' , '' , " <label>Tipo de mobilidade:</label> " ); ?>
2026-06-29 16:58:41 -03:00
< ? php imprime ( '' , '' , " <input type='radio' name='mobilidade' id='simples' value='1' required /> " ); ?>
2026-06-29 13:47:08 -03:00
< ? php imprime ( '' , '' , " <label for='simples'>Mobilidade Simples</label> " ); ?>
2026-06-29 16:58:41 -03:00
< ? php imprime ( '' , '' , " <input type='radio' name='mobilidade' id='dupla' value='2' /> " ); ?>
2026-06-29 13:13:20 -03:00
< ? php imprime ( '' , '' , " <label for='dupla'>Dupla Diplomação</label><br> " ); ?>
2026-06-29 13:47:08 -03:00
< ? php imprime ( '' , '' , " <em>Mobilidade dupla disponível apenas na seleção de primeiro semestre para início das atividades acadêmicas na Itália em Setembro.</em><br> " ); ?>
2026-06-29 13:13:20 -03:00
< br >< br >
< div id = " div_lingua " >
< span id = " spanlink " ></ span >
</ div >
</ div >
< div style = " flex: 20%; " >
2026-06-29 13:31:38 -03:00
< img src = " https://ari.poli.br/wp-content/uploads/2022/08/20220823-ilustracao-simulador.png " width = " 200px " style = " float:right " >
2026-06-29 13:13:20 -03:00
</ div >
</ div >
<!-- NOTA GERAL -->
< h3 >< b >< ? php global $h , $h_brafitec ; imprime ( $h , $h_brafitec ); ?> </b></h3>
< table style = " width:100% " >
< tr >
< td colspan = " 3 " >< br >< hr ></ td >
</ tr >
< th colspan = " 3 " >
< h3 > Histórico Escolar < ? php imprime ( " (Peso 5) " , '(Peso 7)' ); ?> </h3>
</ th >
< tr >
< td >< br ></ td >
</ tr >
<!-- MÉDIA CURRICULAR -->
< tr >
< td class = " labels " >< label for = " media " > Média curricular :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input name = " media " type = " number " step = " 0.01 " min = " 0 " id = " media " /></ td >
2026-06-29 13:13:20 -03:00
< td >< ? php imprime ( " (Peso 5) " , " (Peso 7) " ); ?> </td>
</ tr >
<!-- REPROVAÇÕES RECUPERADAS -->
< tr >
< td >< label for = " repro_rec " > Número de reprovações recuperadas :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input name = " repro_rec " type = " number " min = " 0 " id = " repro_rec " /></ td >
2026-06-29 13:13:20 -03:00
< td >< ? php imprime ( " (Peso 3) " , " (Classificatório) " ); ?> </td>
</ tr >
<!-- REPROVAÇÕES NÃO RECUPERADAs -->
< tr >
< td >< label for = " repro_nrec " > Número de reprovações não recuperadas :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input name = " repro_nrec " type = " number " min = " 0 " id = " repro_nrec " /></ td >
2026-06-29 13:13:20 -03:00
< td >< ? php imprime ( " (Peso 3) " , " (Classificatório) " ); ?> </td>
</ tr >
<!-- TOTAL DE REPROVAÇÕES -->
< tr >
< td >< label for = " repro_total " > Total de reprovações :</ label ></ td >
< td >< span id = " repro_total " > </ span ></ td >
</ tr >
<!-- PORCENTAGEM DO CURSO -->
< tr >
< td >< label > < ? php imprime ( " Está entre 50% e 80% do curso? " , " Está entre 40% e 80% do curso? " ); ?> </label></td>
2026-06-29 16:58:41 -03:00
< td >< input type = " radio " name = " porcentagem " id = " porcentagem1 " value = " 1 " />
2026-06-29 13:13:20 -03:00
< label for = " porcentagem1 " > Sim </ label >
2026-06-29 16:58:41 -03:00
< input type = " radio " name = " porcentagem " id = " porcentagem2 " value = " 0 " />
2026-06-29 13:13:20 -03:00
< label for = " porcentagem2 " > Não </ label >< br >
</ td >
< td >< ? php imprime ( " " , " (Classificatório) " ); ?> </td>
</ tr >
< tr >
< ? php imprime ( " <td><br></td> " ) ?>
</ tr >
<!-- FÓRMULAS DE NOTA DO HISTÓRICO -->
< tr >
< td colspan = " 2 " >< b >< ? php imprime ( " Nota do histórico O = [0,10]. Fórmula: $ $\ O = \frac { (Po*10*1+Ro*3+Mo*5)} { (1+3+5)} $ $ " ); ?> </b></td>
< td colspan = " 2 " >< b >< ? php imprime ( " Fórmula da nota de reprovações Ro = [0,10]. Fórmula: $ $\ Ro = \frac { 40-2*N_n-N_r} { 4} $ $ " ); ?> </b></td>
</ tr >
< tr >
< td colspan = " 2 " >
< ? php imprime ( " Po = Adicional de porcentagem (1 se entre 50% e 80%, 0 se não. Peso 1)<br> " ); ?>
< ? php imprime ( " Ro = Nota de reprovações (Peso 3)<br> " ); ?>
< ? php imprime ( " Mo = Média curricular (Peso 5)<br> " ); ?>
</ td >
< td colspan = " 2 " >
< ? php imprime ( " N<sub>n</sub> = Reprovações não recuperadas <br> " ); ?>
< ? php imprime ( " N<sub>r</sub> = Reprovações recuperadas <br> " ); ?>
</ td >
</ tr >
< ? php imprime ( " <tr> " ); ?>
< ? php imprime ( " <td><br></td> " ); ?>
< ? php imprime ( " </tr> " ); ?>
<!-- NOTA DO HISTÓRICO ESCOLAR -->
< ? php imprime ( " <tr> " ); ?>
< ? php imprime ( " <td colspan='2'><b> A nota do seu histórico escolar é: " ); global $o ; imprime ( $o ); imprime ( " </b></td> " ); ?>
< ? php imprime ( " </tr> " ); ?>
< tr >
< td colspan = " 3 " >< br >< hr ></ td >
</ tr >
< th colspan = " 3 " >
< h3 > Atividades Desenvolvidas < ? php imprime ( " (Peso 2) " ); ?> </h3>
</ th >
< tr >
< td style = " color: gray; " > ( número de semestres ) </ td >
< tr >
< tr >
< td >< br ></ td >
< tr >
<!-- PESQUISA ( IC ) -->
< tr >
< td >< label for = " ic " > Pesquisa ( IC ) :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " ic " min = " 0 " id = " ic " /></ td >
2026-06-29 13:13:20 -03:00
< td > < ? php imprime ( " " , " (Peso 1.5) " ); ?> </td>
</ tr >
<!-- EXTENSÃO -->
< tr >
< td >< label for = " extensao " > Extensão :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " extensao " min = " 0 " id = " extensao " /></ td >
2026-06-29 13:13:20 -03:00
< td > < ? php imprime ( " " , " (Peso 1) " ); ?> </td>
</ tr >
<!-- MONITORIA -->
< tr >
< td >< label for = " monitoria " > Monitoria :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " monitoria " min = " 0 " id = " monitoria " /></ td >
2026-06-29 13:13:20 -03:00
< td > < ? php imprime ( " " , " (Peso 1) " ); ?> </td>
</ tr >
< ? php imprime ( " " , " <tr> " ); ?>
<!-- ESTÁGIO NO EXTERIOR -->
< ? php imprime ( " " , " <td><label for='estagio_exterior'>Estágio no exterior:</label></td> " ); ?>
2026-06-29 16:58:41 -03:00
< ? php imprime ( " " , " <td><input type='number' name='estagio_exterior' min='0' id='estagio_exterior' /></td> " ); ?>
2026-06-29 13:13:20 -03:00
< ? php imprime ( " " , " <td>(Peso 0,5) </td> " ); ?>
< ? php imprime ( " " , " </tr> " ) ?>
< ? php imprime ( " " , " <tr> " ); ?>
<!-- ESTÁGIO -->
< ? php imprime ( " " , " <td><label for='estagio'>Estágio:</label></td> " ); ?>
2026-06-29 16:58:41 -03:00
< ? php imprime ( " " , " <td><input type='number' name='estagio' min='0' id='estagio' /></td> " ); ?>
2026-06-29 13:13:20 -03:00
< ? php imprime ( " " , " <td>(Peso 1) </td> " ); ?>
< ? php imprime ( " " , " </tr> " ) ?>
< ? php imprime ( " <tr> " ); ?>
< ? php imprime ( " <td><br></td> " ); ?>
< ? php imprime ( " </tr> " ); ?>
<!-- FÓRMULA NOTA DE ATIVIDADES -->
< tr >
< td colspan = " 2 " >< b >< ? php imprime ( " Nota de atividades S = [0,10]. Fórmula: $ $\ S = (Ps+Es+Ms)*2 $ $ " ); ?> </b></td>
</ tr >
< tr >
< td colspan = " 2 " >
< ? php imprime ( " Ps = Pesquisas (IC) por semestre <br> " ); ?>
< ? php imprime ( " Es = Extensões por semestre <br> " ); ?>
< ? php imprime ( " Ms = Monitorias por semestre <br> " ); ?>
</ td >
</ tr >
< ? php imprime ( " <tr> " ); ?>
< ? php imprime ( " <td><br></td> " ); ?>
< ? php imprime ( " </tr> " ); ?>
<!-- NOTA DAS ATIVIDADES -->
< tr >
< td colspan = " 2 " >< b >< ? php imprime ( " A nota de suas atividades acadêmicas é: " ); global $s ; imprime ( $s ); ?> </b></td>
</ tr >
< tr >
< td colspan = " 3 " >< br >< hr ></ td >
</ tr >
< th colspan = " 3 " >
< h3 > Publicações < ? php imprime ( " (Peso 3) " , " (Peso 1) " ); ?> </h3>
</ th >
< tr >
< td >< br ></ td >
</ tr >
<!-- ARTIGOS COMPLETOS EM PERÍDICOS -->
< tr >
< td >< label for = " art_periodicos " > Artigos completos em periódicos :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " art_periodicos " min = " 0 " id = " art_periodicos " /></ td >
2026-06-29 13:13:20 -03:00
< td >< ? php imprime ( " (Peso 2) " , " " ); ?> </td>
</ tr >
<!-- ARTIGOS COMPLETOS EM CONGRESSOS -->
< tr >
< td >< label for = " art_congresso " > Artigos completos em congressos :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " art_congresso " min = " 0 " id = " art_congresso " /></ td >
2026-06-29 13:13:20 -03:00
< td >< ? php imprime ( " (Peso 1) " , " " ); ?> </td>
</ tr >
<!-- CAPÍTULO DE LIVROS -->
< tr >
< td >< label for = " cap_livros " > Capítulos de livros :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " cap_livros " min = " 0 " id = " cap_livros " /></ td >
2026-06-29 13:13:20 -03:00
< td >< ? php imprime ( " (Peso 2) " , " " ); ?> </td>
</ tr >
<!-- LIVROS -->
< tr >
< td >< label for = " livros " > Livros :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " livros " min = " 0 " id = " livros " /></ td >
2026-06-29 13:13:20 -03:00
< td >< ? php imprime ( " (Peso 3) " , " " ); ?> </td>
</ tr >
<!-- RESUMOS -->
< tr >
< td >< label for = " resumos " > Resumos :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " resumos " min = " 0 " id = " resumos " /></ td >
2026-06-29 13:13:20 -03:00
< td >< ? php imprime ( " (Peso 1) " , " " ); ?> </td>
</ tr >
< ? php imprime ( " <tr> " ); ?>
< ? php imprime ( " <td><br></td> " ); ?>
< ? php imprime ( " </tr> " ); ?>
<!-- FÓRMULA NOTA DE PUBLICAÇÕES -->
< tr >
< td colspan = " 2 " >< b >< ? php imprime ( " Nota de publicações Y = [0,10]. Fórmula: $ $\ Y = \frac { (Ay*2*2+By*2*1+Cy*2*2+Ly*2*3+Ry*2*1)} { (2+1+2+3+1)} $ $ " ); ?> </b>
</ td >
</ tr >
< tr >
< td colspan = " 2 " >
< ? php imprime ( " Ay = Artigos completos em períodicos (Peso 2) <br> " ); ?>
< ? php imprime ( " By = Artigos completos em congressos (Peso 1) <br> " ); ?>
< ? php imprime ( " Cy = Capítulos de livros (Peso 2) <br> " ); ?>
< ? php imprime ( " Ly = Livros (Peso 3) <br> " ); ?>
< ? php imprime ( " Ry = Resumos (Peso 1) <br> " ); ?>
</ td >
</ tr >
< ? php imprime ( " <tr> " ); ?>
< ? php imprime ( " <td><br></td> " ); ?>
< ? php imprime ( " </tr> " ); ?>
<!-- NOTA DE PUBLICAÇÕES -->
< tr >
< td colspan = " 2 " >< b >< ? php imprime ( " A nota de suas publicações é: " ); global $y ; imprime ( $y ); ?> </b></td>
</ tr >
< tr >
< td colspan = " 3 " >< br >< hr ></ td >
</ tr >
< th colspan = " 3 " >
< h3 > Participação em Eventos < ? php imprime ( " (Peso 2) " , " (Peso 1) " ); ?> </h3>
</ th >
< tr >
< td >< br ></ td >
</ tr >
<!-- PARTICIPAÇÃO EM EVENTOS DE EXTENSÃO -->
< tr >
< td >< label for = " evento_extensao " > Extensão :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " evento_extensao " min = " 0 " id = " evento_extensao " /></ td >
2026-06-29 13:13:20 -03:00
< td > < ? php imprime ( " " , " " ); ?> </td>
</ tr >
<!-- PARTICIPAÇÃO EM EVENTOS DE PESQUISA -->
< tr >
< td >< label for = " evento_pesquisa " > Pesquisa :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " evento_pesquisa " min = " 0 " id = " evento_pesquisa " /></ td >
2026-06-29 13:13:20 -03:00
< td > < ? php imprime ( " " , " " ); ?> </td>
</ tr >
<!-- PARTICIPAÇÃO EM CONGRESSOS ACADÊMICOS -->
< tr >
< td >< label for = " congresso " > Congresso :</ label ></ td >
2026-06-29 16:58:41 -03:00
< td >< input type = " number " name = " congresso " min = " 0 " id = " congresso " /></ td >
2026-06-29 13:13:20 -03:00
< td > < ? php imprime ( " " , " " ); ?> </td>
</ tr >
< ? php imprime ( " <tr> " ); ?>
< ? php imprime ( " <td><br></td> " ); ?>
< ? php imprime ( " </tr> " ); ?>
<!-- FÓRMULA DE NOTA DE EVENTOS -->
< tr >
< td colspan = " 2 " >< b >< ? php imprime ( " Nota de eventos científicos A = [0,10]. Fórmula: $ $\ A = (Ea+Pa+Ca)*2 $ $ " ); ?> </b></td>
</ tr >
< tr >
< td colspan = " 2 " >
< ? php imprime ( " Ea = Participação em eventos de extensão<br> " ); ?>
< ? php imprime ( " Pa = Participação em envetos de pesquisa<br> " ); ?>
< ? php imprime ( " Ca = Participação em congressos científicos<br> " ); ?>
</ td >
</ tr >
< ? php imprime ( " <tr> " ); ?>
< ? php imprime ( " <td><br></td> " ); ?>
< ? php imprime ( " </tr> " ); ?>
<!-- NOTA DE EVENTOS CIENTÍFICOS -->
< tr >
< td colspan = " 2 " >< b >< ? php imprime ( " A nota de sua participação em eventos científicos é: " ); global $a ; imprime ( $a ); ?> </b></td>
</ tr >
< tr >
< td colspan = " 3 " >< br >< hr ></ td >
</ tr >
<!-- PROFICIÊNCIA NA LÍNGUA -->
< ? php imprime ( " " , " <th colspan='3'> " , " <th colspan='3'> " ); ?>
< ? php imprime ( " " , " <h3>Nível de Proficiência</h3> " , " <h3>Nível de Proficiência</h3> " ); ?>
< ? php imprime ( " " , " </th> " , " </th> " ); ?>
< ? php imprime ( " " , " <tr> <td style='color: gray;'> (Classificatório) </td> </tr> " , " <tr> <td style='color: gray;'> (Classificatório) </td> </tr> " ); ?>
< ? php imprime ( " " , " <tr> " , " <tr> " ); ?>
< ? php imprime ( " " , " <td><br></td> " , " <td><br></td> " ); ?>
< ? php imprime ( " " , " </tr> " , " </tr> " ); ?>
< ? php imprime ( " " , " <tr> " , " <tr> " ); ?>
< ? php imprime ( " " , " <td> <label> Francês: </label> </td> " , " <td> <label> Inglês: </label> </td> " ); ?>
< ? php imprime ( " " , " <td> " , " <td> " ); ?>
2026-06-29 16:53:23 -03:00
< ? php
$sie_niveis = array ( 'A1' => 1 , 'A2' => 2 , 'B1' => 3 , 'B2' => 4 , 'C1' => 5 , 'C2' => 6 );
foreach ( $sie_niveis as $sie_rotulo => $sie_valor ) {
// Frances (BRAFITEC) e Ingles (POLITO) usam name='lingua'; nunca aparecem juntos, podem compartilhar o id.
$sie_radio = " <input type='radio' name='lingua' id='lng_ { $sie_valor } ' value=' { $sie_valor } '> <label for='lng_ { $sie_valor } '> { $sie_rotulo } </label> " ;
imprime ( " " , $sie_radio , $sie_radio );
}
?>
2026-06-29 13:13:20 -03:00
< ? php imprime ( " " , " </td> " , " </td> " ); ?>
< ? php imprime ( " " , " </tr> " , " </tr> " ); ?>
< ? php imprime ( " " , " " , " <br> " ) ?>
< ? php imprime ( " " , " " , " <tr> " ) ?>
< ? php imprime ( " " , " " , " <td> <label> Italiano: </label> </td> " ) ?>
< ? php imprime ( " " , " " , " <td> " ) ?>
2026-06-29 16:53:23 -03:00
< ? php
foreach ( $sie_niveis as $sie_rotulo => $sie_valor ) {
$sie_radio2 = " <input type='radio' name='lingua2' id='lng2_ { $sie_valor } ' value=' { $sie_valor } '> <label for='lng2_ { $sie_valor } '> { $sie_rotulo } </label> " ;
imprime ( " " , " " , $sie_radio2 );
}
?>
2026-06-29 13:13:20 -03:00
< ? php imprime ( " " , " </td> " , " </td> " ) ?>
< ? php imprime ( " " , " </tr> " , " </tr> " ) ?>
< ? php imprime ( " " , " <tr> " , " <tr> " ) ?>
< ? php imprime ( " " , " <td colspan='3'><br><hr></td> " , " <td colspan='3'><br><hr></td> " ) ?>
< ? php imprime ( " " , " </tr> " , " </tr> " ) ?>
<!-- FÓRMULA DE NOTA GERAL -->
< tr >
< td colspan = " 2 " >< h3 >< b > Nota final H = [ 0 , 10 ] . Fórmula :</ b ></ h3 > < b > < ? php imprime ( " $ $\ H = \frac { (O*5+S*2+Y*3+A*2)} { (5+2+3+2)} $ $ " , " $ $\ H = \frac { (O*7)+(E*0.5)+(I*1.5)+(S*1)} { (7+0.5+1.5+1)} $ $ " ); ?> </b></td>
</ tr >
< tr >
< td colspan = " 2 " >
< ? php imprime ( " O = Nota do histórico (Peso 5) <br> " , " O = Média Curricular (Peso 7) <br> " ); ?>
< ? php imprime ( " S = Nota de atividades (Peso 2)<br> " , " E = Nota de experiência em estágio no exterior [0,10] (Peso 0,5)<br> " ); ?>
< ? php imprime ( " Y = Nota de publicações (Peso 3)<br> " , " I = Nota de participação em Iniciação Científica [0,10] (Peso 1,5)<br> " ); ?>
< ? php imprime ( " A = Nota de eventos científicos (Peso 2) <br> " , " S = Outros(monitoria, estágio, projetos de extensão, publicações, etc.) [0,10] (Peso 1) <br> " ); ?>
</ td >
</ tr >
</ table >
< br >< br >
< input type = " submit " name = " calcular " id = " calcular " value = " Calcular nota " >
< br >< br >
2026-06-29 17:34:09 -03:00
< input type = " reset " value = " Reiniciar dados " onclick = " window.location.href='<?php echo \ esc_url( \ get_permalink() ); ?>'; " />
2026-06-29 13:13:20 -03:00
< br >
</ form >
</ div >
2026-06-29 13:31:38 -03:00
</ div >
2026-06-29 13:13:20 -03:00
2026-06-29 13:31:38 -03:00
< script type = " text/javascript " >
2026-06-29 13:13:20 -03:00
function start () {
var inputReproRec = document . querySelector ( " #repro_rec " );
var inputReproNRec = document . querySelector ( " #repro_nrec " );
var inputMobilidade = document . querySelector ( " input[name=mobilidade] " );
var inputMobilidade1 = document . querySelector ( " #simples " );
var inputMobilidade2 = document . querySelector ( " #dupla " );
var inputTipoMobilidade = document . querySelector ( " #programa " );
if ( inputTipoMobilidade . value == " 1 " ) {
inputMobilidade1 . addEventListener ( 'change' , mobilidade );
inputMobilidade2 . addEventListener ( 'change' , mobilidade );
}
inputReproRec . addEventListener ( 'input' , totalRepro );
inputReproNRec . addEventListener ( 'input' , totalRepro );
totalRepro ();
}
function mobilidade () {
var inputMobilidade1 = document . querySelector ( " #simples " );
var inputMobilidade2 = document . querySelector ( " #dupla " );
var divLingua = document . querySelector ( " #div_lingua " );
var spanLink = document . querySelector ( " #spanlink " );
if ( inputMobilidade1 . checked ) {
divLingua . textContent = " Necessário comprovar Inglês B2 ou Italiano B1 " ;
var linkAri = document . createElement ( 'a' );
var texto = document . createTextNode ( " nas provas aceitas pela ARI/POLI. " );
linkAri . appendChild ( texto );
linkAri . title = " link da ari " ;
linkAri . href = " https://ari.poli.br/pt/home-pt/faq/#polito " ;
divLingua . appendChild ( linkAri );
} else if ( inputMobilidade2 . checked ) {
divLingua . textContent = " Necessário comprovar Inglês B2 " ;
var linkPolito = document . createElement ( 'a' );
var texto = document . createTextNode ( " nas provas aceitas pela POLITO. " );
linkPolito . appendChild ( texto );
linkPolito . title = " link da polito " ;
linkPolito . href = " https://didattica.polito.it/zxd/b5eda0a74558a342cf659187f06f746f/9dde3c1deee7c791026d6a0ac91322bb/d3bacd1b4a125e3fe050c0828c374cea?1640169847079 " ;
divLingua . appendChild ( linkPolito );
}
}
function totalRepro () {
var inputReproRec = document . querySelector ( " #repro_rec " );
var inputReproNRec = document . querySelector ( " #repro_nrec " );
var inputReproTotal = document . querySelector ( " #repro_total " );
var reproRec = Number ( inputReproRec . value );
var reproNRec = Number ( inputReproNRec . value );
var reproTotal = reproRec + reproNRec ;
inputReproTotal . textContent = reproTotal ;
}
start ();
</ script >
2026-06-29 13:31:38 -03:00
< ? php
return ob_get_clean ();
}
2026-06-29 13:13:20 -03:00
2026-06-29 17:14:39 -03:00
function register_assets () {
// MathJax 3 renderiza as formulas $$...$$. Registrado aqui e carregado via
// wp_enqueue_script() so quando o shortcode aparece na pagina; no rodape e async.
\wp_register_script (
'mathjax' ,
'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js' ,
array (),
'3' ,
array ( 'in_footer' => true , 'strategy' => 'async' )
);
}
\add_action ( 'wp_enqueue_scripts' , __NAMESPACE__ . '\\register_assets' );
2026-06-29 13:31:38 -03:00
\add_shortcode ( 'simulador_mob' , __NAMESPACE__ . '\\simulador_mob_shortcode' );