<?php // $Id: uUpdateBibref.php,v 1.1 2005/10/27 10:11:19 geothms Exp geothms $
session_start();
$pTipoUtilizador = $_SESSION['tipoUtilizador'];
if ($pTipoUtilizador=="anonymous" || $pTipoUtilizador=="regular") { // separa por tipo de utilizador
  require('headersubUsers.inc');
  require('menusubUsers.inc');
  echo "<meta http-equiv='refresh' content='0; url=../users.php' />";
  exit;  // os utilizadores regulares e o anónimo não têm acesso a esta página
}
else {
  require('headersubAdmins.inc');
  require('menusubAdmins.inc');
}
?>




<center>
<h3 class="maketitle">Geometric theorems - Update the Proof Info</h3>
</center>

<hr/>



<?php
require('loginsub.php');
?>

<?php

//echo "<meta http-equiv=\"refresh\" content=\"2; url=../forms.php\" />";

// Obtêm os valores do formulário.
$pDemId            = $_POST['DemId'];
$pThmIdName        = $_POST['ThmIdName'];
$pPrvIdNameVersion = $_POST['PrvIdNameVersion'];
$pCode             = $_POST['Code'];
$pDateSubmission   = $_POST['DateSubmission'];
$pUserInfo         = $_POST['UserInfo'];
$pBibref           = $_POST['Bibref'];

// Obtém o identificador do Teorema
preg_match("§([A-Za-z0-9 _.]+) --([A-Za-z0-9 _.]*)§", $pThmIdName,$matches);

$pThmId   = $matches[1];

// Obtém o identificador do Provador
preg_match("§([0-9]+) --([A-Za-z0-9 _.]+) --([A-Za-z0-9 _\.]*)§", $pPrvIdNameVersion,$matches);

$pPrvId   = $matches[1];

// Obtém o identificador do Utilizador
$pUserInfo          = $_POST['UserInfo'];

preg_match("§([A-Za-z0-9 _.]+) -- ([A-Za-z0-9 _.]+) -- ([A-Za-z0-9 _.]+)§",$pUserInfo,$matches);

$pUserId = $matches[1];
//$pUserName = $matches[2];
//$pUserEmail = $matches[3];


// Formata os valores para posterior inserção na Tabela
if (!get_magic_quotes_gpc())
  { $pThmId          = addslashes('$pThmId');
    $pPrvId          = addslashes('$pPrvId');
    $pCode           = addslashes('$pCode');
    $pDateSubmission = addslashes('$pDateSubmission');
    $pUserId         = addslashes('$pUserId');
    $pBibref         = addslashes('$pBibref');
  }

//
// Esta é a versão comum a todos os provadores
//

//
// DEVIA EFECTUAR UM "LOCK TABLE" PARA IMPEDIR INCONSISTÊNCIAS
//
// e introduzir as Transacções (se calhar chega as transacções)
//

// Inicio da transacção
@ mysql_query("BEGIN");

$sqlUpdateProof = 
    "UPDATE demonstrations
        SET teoId          = '$pThmId',       
            proverId       = '$pPrvId',
            code           = '$pCode',   
            dateSubmission = '$pDateSubmission',
            userId         = '$pUserId',
            bibref         = '$pBibref'
       WHERE
            demId = $pDemId";

$resultadoUpdateProof = mysql_query($sqlUpdateProof,$ligacao);

if ($resultadoUpdateProof) {
  echo "<p>Proof Info Updated.</p>"; 
 }
 else {
   echo "<p>Error - Proof Info not updated!</p>";
   // TRANSAÇÕES - ROLLBACK
   @ mysql_query("ROLLBACK"); 
   echo "<meta http-equiv=\"refresh\" content=\"2; url=../forms.php\" />";
   exit;
 }

// Esta parte vai estar dependente do provador escolhido


if ($pPrvId==2) { // GCLCprover
  echo "<p>Processing, please wait</p>";
  flush(); 
  require('uUpdateProofGCLCprover.php');
}
elseif ($pPrvId==3) { // GCLCprover+euk2gclc 
  // ---> tenho de ver isto com mais cuidado
  echo "<p>Processing, please wait</p>";
  flush(); 
  require('uUpdateProofGCLCproverEuk.php');
}
elseif ($pPrvId==4) { //Coq+JNarboux
  echo "<p>Processing, please wait</p>";
  flush(); 
  require('uUpdateProofCoqJN.php');
}
elseif ($pPrvId==5) { // GCLCprover Wu's Method
  echo "<p>Processing, please wait</p>";
  flush(); 
  require('uUpdateProofGCLCproverWM.php');
}
elseif ($pPrvId==6) { // GCLCprover Gröbner Bases Method
  echo "<p>Processing, please wait</p>";
  flush(); 
  require('uUpdateProofGCLCproverGBM.php');
}
// Os programas que processam a demonstração fazem o fecho da transação.

echo "<meta http-equiv='refresh' content='2; url=../forms.php' />\n";
?>

<hr/>

<p>&nbsp;</p>

<?php
  require('footer.inc');
?>
