compile_check = true; $this->assign('event', $papers['event']); } function fatal($msg = 'unamedFatalError') { $this->assign('message', $msg); $this->display('index.tpl'); exit; } } ?> config_load('papers.conf'); $logbase = $smarty->get_config_vars('log'); $user = $_SERVER['REMOTE_USER']; $dthora = date('M d H:i:s'); unset($smarty); # Retira os \n's para nao estragar o log $msg = str_replace("\n", ' ', $msg); return ! system("echo $dthora $user $msg >> $logbase/$file"); } ?> 'Pré-aprovado', 'a' => 'Aprovado', 'i' => 'Indefinido', 'r' => 'Recusado', 'd' => 'Desistência' ); class Propostas { function carregar($db) { $rs = $db->conn->Execute('select * from propostas'); return $rs->GetArray(); } function _carregarPorMacrotemaImpl($db, $cond) { $rs = $db->conn->Execute('select cod from macrotemas'); $macrotemas = $rs->GetArray(); foreach ($macrotemas as $macrotema) { $mt = $macrotema['cod']; $sql = "select * from propostas where propostas.tema = $mt $cond order by titulo"; $rs = $db->conn->Execute($sql); $propostas[$mt] = $rs->GetArray(); } return $propostas; } function carregarPorMacrotemaParaAlocacao($db) { return Propostas::_carregarPorMacrotemaImpl($db, "and (tipo = 's' and (status in('a','p') and confirmada = 1) or tipo in ('c','v','p'))"); } function carregarPorMacrotema($db, $status) { if ($status) { $condStatus = 'and status in (' . join($status,',') . ')'; } else { $condStatus = ''; } return Propostas::_carregarPorMacrotemaImpl($db, $condStatus); } function encontrar($db,$cod) { $rs = $db->conn->Execute("select * from propostas where cod = $cod"); $rsa = $rs->GetArray(); return $rsa[0]; } function aprovadasPorMacrotema($db, $macrotema) { $rs = $db->conn->Execute("select count(*) as num from propostas where propostas.tema = $macrotema and propostas.status = 'a' "); $rsa = $rs->GetArray(); return $rsa[0]['num']; } function confirmacoesPorMacrotema($db) { $sql = "select tema, count(*) as total, sum(if(confirmada = 1,1,0)) as confirmadas from propostas where status in ('a','p') group by tema "; $rs = $db->conn->Execute($sql); return $rs->GetAssoc(); } function incluirPalestraConvidada($db, $fields) { $rs = $db->conn->Execute('select dthora,titulo,descricao,tema,pessoa,publicoalvo,resumo,idioma,status,tipo,confirmada, nivel_envolvimento, nivel_proposta from propostas where cod = -1'); $fields['dthora'] = time(); $sql = $db->conn->GetInsertSQL($rs,$fields); if (! $db->conn->Execute($sql)) { echo "Ocorreu um erro incluindo palestra no banco."; exit; } //$r['nivel_envolvimento'] = $_POST['nivel_envolvimento']; //$r['nivel_proposta'] = $_POST['nivel_proposta']; $rs = $db->conn->Execute('select last_insert_id() as cod'); $rsa = $rs->GetArray(); return $rsa[0]['cod']; } function copalestrantes($db, $cod) { $rs = $db->conn->Execute(" select pessoas.* from copalestrantes join pessoas on copalestrantes.pessoa = pessoas.cod where copalestrantes.proposta = $cod order by pessoas.nome "); return $rs->GetArray(); } function removerCopalestrante($db,$cod,$pessoa) { $sql = "delete from copalestrantes where proposta = $cod and pessoa = $pessoa"; $db->conn->Execute($sql); } function incluirCopalestrante($db,$cod,$pessoa) { $sql = "insert into copalestrantes values ($cod,$pessoa)"; $db->conn->Execute($sql); } function mesa($db, $cod) { $rs = $db->conn->Execute(" select pessoas.* from mesa join pessoas on mesa.pessoa = pessoas.cod where mesa.proposta = $cod "); return $rs->GetArray(); } function removerMesa($db,$cod,$pessoa) { $sql = "delete from mesa where proposta = $cod and pessoa = $pessoa"; $db->conn->Execute($sql); } function incluirMesa($db,$cod,$pessoa) { $sql = "insert into mesa values ($cod,$pessoa)"; $db->conn->Execute($sql); } function resumosAnais ($db) { $sql = "select propostas.titulo, propostas.cod as cod, nome, email, biografia, org, macrotemas.titulo as macrotema, propostas.resumo as resumo from propostas join pessoas on propostas.pessoa = pessoas.cod join macrotemas on propostas.tema = macrotemas.cod where exists (select 1 from grade where grade.proposta = propostas.cod) order by propostas.titulo "; $rs = $db->conn->Execute($sql); $celulas = $rs->GetArray(); foreach ($celulas as $celula) { extract($celula); $palestra = array(); $palestra['cod'] = $cod; $palestra['titulo'] = $titulo; $palestra['nome'] = $nome; $palestra['email'] = $email; $palestra['biografia'] = $biografia; $palestra['macrotema'] = $macrotema; $palestra['resumo'] = $resumo; $palestra['copalestrantes'] = Propostas::copalestrantes($db,$cod); $slots = Grade::celulas($db, $palestra['cod']); foreach ($slots as $slot) { $palestra['sala'][] = $slot['sala']; $palestra['dia'][] = $slot['dia']; $palestra['horario'][] = $slot['inicio']; } $resumos[] = $palestra; $rs->MoveNext(); } return $resumos; } function naoConfirmadas($db) { $rs = $db->conn->Execute("select propostas.titulo, pessoas.nome from propostas join pessoas on pessoas.cod = propostas.pessoa where tipo = 's' and propostas.status in ('a','p') and (confirmada is null or not confirmada)"); return $rs->GetArray(); } } ?> conn->Execute('select cod, titulo, espacos from macrotemas'); return $rs->GetArray(); } function encontrar($db, $cod) { $rs = $db->conn->Execute("select * from macrotemas where cod = $cod"); $rsa = $rs->GetArray(); return $rsa[0]; } } ?> conn->Execute($sql); $celulas = $rs->GetArray(); $grade = array(); $dias = array(); $salas = array(); $horarios = array(); foreach ($celulas as $celula) { extract($celula); $grade[$dia][$sala][$horario]['cod'] = $cod; $grade[$dia][$sala][$horario]['titulo'] = $titulo; $grade[$dia][$sala][$horario]['nivel_proposta'] = $nivel_proposta; $grade[$dia][$sala][$horario]['nivel_envolvimento'] = $nivel_envolvimento; $grade[$dia][$sala][$horario]['wpid'] = $wpid; $grade[$dia][$sala][$horario]['nome'] = $nome; $grade[$dia][$sala][$horario]['macrotema'] = $macrotema; $grade[$dia][$sala][$horario]['cod_macrotema'] = $cod_macrotema; $grade[$dia][$sala][$horario]['cor'] = Grade::cor($cod_macrotema); $grade[$dia][$sala][$horario]['confirmada'] = $confirmada; $grade[$dia][$sala][$horario]['copalestrantes'] = Propostas::copalestrantes($db,$cod); $grade[$dia][$sala][$horario]['mesa'] = Propostas::mesa($db,$cod); if (! in_array($dia,$dias)) { array_push($dias,$dia); } if (! in_array($sala,$salas)) { array_push($salas,$sala); } if (! in_array($horario,$horarios)) { array_push($horarios,$horario); } } sort($dias); sort($salas); sort($horarios); foreach ($dias as $dia) { foreach ($horarios as $horario) { foreach ($salas as $sala) { if (! isset($grade[$dia][$sala][$horario])) { continue; } if ($horario > 1 && $grade[$dia][$sala][$horario - 1]['cod'] == $grade[$dia][$sala][$horario]['cod']) { $first = $horario - 1; while ($grade[$dia][$sala][$first]['dumb']) { $first--; } $grade[$dia][$sala][$first]['num']++; $grade[$dia][$sala][$horario]['dumb'] = true; $grade[$dia][$sala][$horario]['num'] = 0; } else { $grade[$dia][$sala][$horario]['dumb'] = false; $grade[$dia][$sala][$horario]['num'] = 1; } } } } return $grade; } function alocar($db,$dia,$sala,$horario,$proposta) { $sql = "insert into grade values($dia,$sala,$horario,$proposta)"; $db->conn->Execute($sql); } function limpar($db,$dia,$sala,$horario) { $db->conn->Execute("delete from grade where dia = $dia and sala = $sala and horario = $horario" ); } function alocadas($db) { $rs = $db->conn->Execute('select distinct proposta from grade'); while (! $rs->EOF) { $alocadas[$rs->fields['proposta']] = 1; $rs->MoveNext(); } return $alocadas; } function estahAlocada($db, $proposta) { $rs = $db->conn->Execute("select 1 from grade where proposta = $proposta"); return ($rs->RowCount() > 0); } function celulas($db, $proposta) { $rs = $db->conn->Execute("select dias.descricao as dia , substring(horarios.inicio,1,5) as inicio, substring(horarios.final,1,5) as final, salas.descricao as sala, concat(dia,',',sala,',',horario) as cod from grade join dias on dias.numero = grade.dia join horarios on horarios.numero = grade.horario join salas on salas.numero = grade.sala where proposta = $proposta"); return $rs->GetArray(); } function conflitos($db) { $sql = "select pessoas.nome, dias.descricao as dia, substring(horarios.inicio,1,5) as horario, count(grade.sala) as count from pessoas join propostas on (propostas.pessoa = pessoas.cod or exists (select 1 from copalestrantes where copalestrantes.pessoa = pessoas.cod and copalestrantes.proposta = propostas.cod)) join grade on propostas.cod = grade.proposta join horarios on horarios.numero = grade.horario join dias on dias.numero = grade.dia group by pessoas.nome, dia, horario having count > 1;"; $rs = $db->conn->Execute($sql); return $rs->GetArray(); } function vazios($db) { $sql = "select dias.descricao as dia, salas.descricao as sala, horarios.inicio as horario from dias, salas, horarios where exists (select 1 from grade where salas.numero = grade.sala) and not exists (select 1 from grade where grade.sala = salas.numero and grade.horario = horarios.numero and grade.dia = dias.numero) order by dias.numero, salas.numero, horarios.numero"; $rs = $db->conn->Execute($sql); return $rs->GetArray(); } } ?> conn->Execute("select * from pessoas where cod = $cod"); $rsa = $rs->GetArray(); return $rsa[0]; } function incluirConvidado($db,$nome,$email,$biografia) { $rs = $db->conn->Execute('select nome,email,biografia,dthora from pessoas where cod = -1'); $r['nome'] = $nome; $r['email'] = $email; $r['biografia'] = $biografia; $r['dthora'] = time(); $sql = $db->conn->GetInsertSQL($rs,$r); if (! $db->conn->Execute($sql)) { echo "Ocorreu um erro incluindo convidado no banco."; exit; } $rs = $db->conn->Execute("select cod from pessoas where email = '$email'"); $rsa = $rs->GetArray(); return $rsa[0]['cod']; } function carregar($db) { $rs = $db->conn->Execute('select * from pessoas order by nome'); return $rs->GetArray(); } function newPassword($db, $cod) { $passwd = str_replace("\n", '', `makepasswd --chars=8`); $sql = "update pessoas set passwd = md5('$passwd') where cod = $cod"; $db->conn->Execute($sql); return $passwd; } function palestrantes($db) { $sql = " select distinct pessoas.nome, pessoas.org, pessoas.cidade, pessoas.estado, pessoas.pais, pessoas.email from pessoas join propostas on propostas.pessoa = pessoas.cod join grade on grade.proposta = propostas.cod union select distinct pessoas.nome, pessoas.org, pessoas.cidade, pessoas.estado, pessoas.pais, pessoas.email from pessoas join copalestrantes on pessoas.cod = copalestrantes.pessoa join propostas on propostas.cod = copalestrantes.proposta join grade on grade.proposta = propostas.cod order by 1 "; $rs = $db->conn->Execute($sql); return $rs->GetArray(); } } ?> conn->Execute("select * from dias"); return $rs->GetArray(); } } ?> conn->Execute("select numero, substring(inicio,1,5) as inicio, substring(final,1,5) as final from horarios order by numero"); return $rs->GetArray(); } } ?> conn->Execute("select * from salas"); return $rs->GetArray(); } function carregarNaoVazias($db) { $rs = $db->conn->Execute("select * from salas where exists (select 1 from grade where grade.sala = salas.numero)"); return $rs->GetArray(); } } ?>