<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */

# Updates information of indicadores and logros
# @author Vladimir Támara
# Public domain. 2004. No warranties. http://structio.sourceforge.net/sigue

require "auth/confcol.php";
require "confsigue.php";

session_start();
if (!isset($_SESSION["autenticado"])||$_SESSION["autenticado"]==false) {
  require "header.php";
  require "footer.php";
  exit;
}

require "showLogInd.php";
require_once "filter.php";
require_once "confsigue.php";

/** Decides if an XML identification is valid.
    @return empty string if it is valid. error message otherwise. */
function valid_id($id) {
	if ($id!="" && strpos($id,".")===false && 
		strpos($id," ")===false) {
		return "";
	}
	return "Identificador vacío o con caracteres inválidos (punto o espacio)";
}

/** Decides if an XML identification is valid.
    @return empty string if it is valid. error message otherwise. */
function valid_logro($logro) { 
	global $ISPELL,$ISPELLCOL;
	$dict=$GLOBALS['DIRCOL']."/".$GLOBALS['DICCOL'];

	if ($logro=="") {
		return "El logro no puede ser vacío";
	}		
	if ($ISPELL!="") {
//		$cmd="echo \"".escapeshellcmd($logro)."\" | sed -e \"s|Á|'A|g;s|É|'E|g;s|Í|'I|g;s|Ó|'O|g;s|Ú|'U|g;s|Ñ|~N|g;s|ñ|~n|g;s|á|'a|g;s|é|'e|g;s|í|'i|g;s|ó|'o|g;s|ú|'u|g\" | $ISPELL -l";
		if ($GLOBALS['DICCOL']!="") {
			$cmd="echo \"".escapeshellcmd($logro)."\" | $ISPELL -d spanish -Tlatin1 -p$dict -l";
		}
		else {
			$cmd="echo \"".escapeshellcmd($logro)."\" | $ISPELL -l";
		}
        //echo $cmd;
		$r=`$cmd`;
		if ($r!="") {
			return "Errores ortográficos en logro: $r<br>".
				$GLOBALS['PALABRA_DESCONOCIDA'];
		}
	}
	return "";
}

function valid_indicador($ind) {
	return valid_logro($ind);
}

$mine=explode(":",$_SESSION["curso"]);
$my_sec=$mine[4];
$path_sec=$GLOBALS['DIRCOL']."/planest/".$_SESSION['año']."/".$my_sec;
$my_cla=substr($my_sec,0,strrpos($my_sec,".")).".cla";
$path_cla=$GLOBALS['DIRCOL']."/planest/".$_SESSION['año']."/".$my_cla;
$nomasig=$mine[6];
$nomgrado=$mine[2];

$submit=$_POST['submit'];
$ps=strpos($submit,'_');
$tpar="";
$par=array();
if ($ps===false) {
	$a=$submit;
} else {
	$a=substr($submit,0,$ps);
	$tpar=substr($submit,$ps+1);
	$par=explode(".",$tpar);
}

$msg="";
switch ($a) {
	case "añadirl":
		$idlog=$_POST['idlog'];
		$textolog=$_POST['textolog'];
		$nmsg=valid_id($idlog);
		$pasa=true;
		if ($nmsg!="") {
			$msg.=$nmsg."<br>";
			$pasa=false;
		} 
		$nmsg=valid_logro($textolog);
		if ($nmsg!="") {
			$msg.=$nmsg."<br>";
			$pasa &= !isset($ISPELL) || $GLOBALS['ISPELL_PASA'];
		} 
		if ($msg=="" || $pasa) {
			#Añadir logro	
			$_POST['idlog']="";
			$_POST['textolog']="";
			runext("$REPBIN/edcla",array($path_cla,"añadir",
				 "Logro","$idlog","$textolog"));
		}
		break;
	case "eliml":
		$idlog=$tpar;
		runext("$REPBIN/edcla",array($path_cla,"eliminar","Logro", 
			$idlog));
		break;

	case "añadiri":
		$idlog=$tpar;
		$idind=$_POST["idind_$idlog"];
		$textoind=$_POST["textoind_$idlog"];
		$recuperable=$_POST["rec_$idlog"];
		$nmsg=valid_id($idind);
		$pasa=true;
		if ($nmsg!="") {
			$msg.="$nmsg<br>";
			$pasa=false;
		} 
		$nmsg=valid_indicador($textoind);
		if ($nmsg!="") {
			$msg.="$nmsg<br>";
			$pasa &= !isset($ISPELL) || $GLOBALS['ISPELL_PASA'];
		} 
		if ($msg=="" || $pasa) {
			$_POST["idind_$idlog"]="";
			$_POST["textoind_$idlog"]="";
			$_POST["rec_$idlog"]="";
			runext("$REPBIN/edcla",array($path_cla,"añadir",
				"Indicador","$idlog.$idind",$textoind));
			if ($recuperable=="no") {
				runext("$REPBIN/edcla",array($path_cla,
					"añadir_anotación","Indicador",
					"$idlog.$idind", "Recuperable",
					"no"," "));
			}
		}
		break;
	case "elimi":
		$idind=$tpar;
		runext("$REPBIN/edcla",array($path_cla, "eliminar", 
			"Indicador", $idind));
		break;

	case "añadirr":
		$idind=$tpar;
		$iper=$_POST["ref_".strtr($idind,".","*")];
		$per=$_SESSION['siguientes'][$iper];
		runext("$REPBIN/edsec",array($path_sec,"añadir_ref",
			 "Periodo", $per, "Indicador", $idind));
		break;
	case "elimr":
		$idind=$par[1].".".$par[2];
		$per=$par[0];
		runext("$REPBIN/edsec", array($path_sec, "eliminar_ref",
			 "Periodo", $per, "Indicador", $idind));
		break;
}

showLogInd($GLOBALS['DIRCOL'],$nomasig,$nomgrado,$_SESSION['teacher'],
        $my_sec,$my_cla,$_SESSION['año'],$_SESSION['siguientes'],$msg);
?>
