// * Pedro Henrique Azevedo Vanderlei de Mendonça // Data: 2022-07-01 /* ------------------------------------------------------------------------ */ namespace Beco\SimuladorMobOut; if ( ! defined( 'ABSPATH' ) ) { exit; } /* ------------------------------------------------------------------------ */ //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; // 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] !== '') { // 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])); } else { $entradas[$campo] = 0; } } } /* ------------------------------------------------------------------------ */ //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; } function simulador_mob_shortcode() { \wp_enqueue_script( 'mathjax' ); if ($_SERVER['REQUEST_METHOD'] == 'POST'){ //var_dump($_POST); if (isset($_POST["calcular"])) { validar_entrada(); global $entradas; 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){ 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); } } } ob_start(); ?>

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 https://ari.poli.br/document/form-mob-out/.


"); ?> Tipo de mobilidade: "); ?>  "); ?> Mobilidade Simples  "); ?>  "); ?> Dupla Diplomação
"); ?> Mobilidade dupla disponível apenas na seleção de primeiro semestre para início das atividades acadêmicas na Itália em Setembro.
"); ?>


") ?> "); ?>
"); ?> "); ?> "); ?> A nota do seu histórico escolar é: "); global $o; imprime($o); imprime("");?> "); ?> "); ?> "); ?> ");?> (Peso 0,5) "); ?> ") ?> "); ?> "); ?> ");?> (Peso 1) "); ?> ") ?> "); ?>
"); ?> "); ?> "); ?>
"); ?> "); ?> "); ?>
"); ?> "); ?> "); ?>
"); ?> "); ?> "); ?>
"); ?> "); ?> "); ?>
"); ?> "); ?> ", ""); ?> ", ""); ?> ",""); ?>
", ""); ?> ", ""); ?> ", ""); ?> ", ""); ?> ", ""); ?> ", ""); ?> ") ?> ") ?> ") ?> ") ?> $sie_valor) { $sie_radio2 = " "; imprime("", "", $sie_radio2); } ?> ", "") ?> ", "") ?> ", "") ?>

", "") ?> ", "") ?>


Histórico Escolar



"); ?> "); ?> "); ?> n = Reprovações não recuperadas
"); ?> r = Reprovações recuperadas
"); ?>


Atividades Desenvolvidas

(número de semestres)

"); ?> "); ?> "); ?>


Publicações


"); ?> "); ?> "); ?> "); ?> "); ?>


Participação em Eventos


"); ?> "); ?> "); ?>


"); ?> Nível de Proficiência", "

Nível de Proficiência

"); ?> ", "
(Classificatório)
(Classificatório)

"); ?> 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 = " "; imprime("", $sie_radio, $sie_radio); } ?> ", "


Nota final H = [0,10]. Fórmula:

", "O = Média Curricular (Peso 7)
"); ?> ", "E = Nota de experiência em estágio no exterior [0,10] (Peso 0,5)
"); ?> ", "I = Nota de participação em Iniciação Científica [0,10] (Peso 1,5)
"); ?> ", "S = Outros(monitoria, estágio, projetos de extensão, publicações, etc.) [0,10] (Peso 1)
"); ?>





true, 'strategy' => 'async' ) ); } \add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\\register_assets' ); \add_shortcode( 'simulador_mob', __NAMESPACE__ . '\\simulador_mob_shortcode' );