header("Content-Type: text/html; charset=UTF-8");
session_start();
if ($_SERVER['REQUEST_METHOD']=='GET') {
header('Expires: ' . gmdate("D, d M Y H:i:s", time()+1000) . ' GMT');
header('Cache-Control: Private');
}
include_once("app.conf.php");
if (!defined(_SYSTEM_PATH)) {
define('_SYSTEM_PATH', "../");
}
include_once(_SYSTEM_PATH."lib/dbconnector.lib.class.php");
include_once(_SYSTEM_PATH."lib/usuario.lib.php");
include_once(_SYSTEM_PATH."lib/common.lib.php");
// Inicialización de paametros para XSL's
$xslParams = $_XSL;
$_SESSION['~run'] = rand(1,999999);
if (!isset($_REQUEST['t'])) {
acceso();
}
if ($_SESSION['~logged-in']!=1 and $_REQUEST['t']!='descarga') {
// Aborta
$rq = htmlspecialchars($_SERVER['REQUEST_URI']);
$xslt = "accesoDenegado.xsl";
echo xsltTransform("$rq", _SYSTEM_PATH."xslt/".$xslt, $xslParams);
exit;
}
$db = new dbconnector(USR_DBHOST, TRUE, USR_DBUSER, USR_DBPASS, USR_DBNAME);
$FILE_PATH="/home/sintesis_informativa";
// Verificación de permisos de ejecución de programa
if (permisoPrograma($db, $_SESSION['~claveAcceso'], basename(__FILE__))<1 and $_REQUEST['t']!='descarga') {
$xslt = "accesoDenegado.xsl";
echo xsltTransform('', _SYSTEM_PATH."xslt/".$xslt, $xslParams);
exit;
}
// ERRORES GENERALES MAS ERRORES DEL MODULO
define(_MODULO_SINTINFO, -1010);
$_ERRORS = $_ERRORS + array(
_MODULO_SINTINFO-8 => 'El archivo %s no es un PDF. Intente con otro archivo.',
_MODULO_SINTINFO-9 => 'Error de Sistema. No se puede cargar el archivo %s. Favor de reportar este error al departamento de sistemas.',
);
setlocale(LC_TIME, "es_MX");
// Determinar punto de retorno en caso de solicitar un callback
if(isset($_REQUEST['cb'])) {
if($_REQUEST['cb']=='1') {
if(isset($_SESSION['~callback'])) $_REQUEST['t']=$_SESSION['~callback'];
}
}
// CICLO DE PROCESO
$loop=TRUE;
while ($loop) {
stopWatch($utime=false);
$loop=FALSE;
switch ($_REQUEST['t']) {
// Permisos:
// consulta 8
// publicacion 16
default:
case 'menu':
authorization(8, 'errorCaptura.xsl', $xslParams);
$xslt = "sintinfoMenu.xsl";
$xmlU = "".$_SESSION['~claveAcceso']."";
$xmlL = listFiles($FILE_PATH,'/\.pdf$/');
$xml = ''.$xmlU.$xmlL.'';
break;
case 'descarga':
// Para evitar broncas en el sitio publico, se deja sin permisos la descarga
//authorization(8, 'errorCaptura.xsl', $xslParams);
downloadFile($FILE_PATH.'/'.$_REQUEST['f']);
break;
case 'publicar':
authorization(16, 'errorCaptura.xsl', $xslParams);
$xslt = "sintinfoPublicar.xsl";
$xmlU = "".$_SESSION['~claveAcceso']."";
$xml = ''.$xmlU.''.ini_get('upload_max_filesize').'';
break;
case 'upload':
authorization(16, 'errorCaptura.xsl', $xslParams);
$type=explode('.',basename($_FILES['userfile']['name']));
if($type[1]!='pdf') $err[basename($_FILES['userfile']['name'])]= _MODULO_SINTINFO - 8;
exitOnError($err,'errorCaptura.xsl',$xslParams);
$xslt = "sintinfoPublicar.xsl";
$uploaddir = $FILE_PATH.'/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$xmlL.="CARGA:";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
$xmlL.="Archivo cargado satisfactoriamente";
$uid = getmyuid();
$gid = getmygid();
//print "sudo chown -R $uid:$gid "._SYSTEM_PATH."
";
$chown = shell_exec("sudo chown -R $uid:$gid ".$FILE_PATH);
errlog($chown);
//print "sudo chmod -R ug+r "._SYSTEM_PATH."
";
$chmod1 = shell_exec("sudo chmod -R ug+r ".$FILE_PATH);
errlog($chmod1);
//print "sudo chmod -R go-w "._SYSTEM_PATH."
";
$chmod2 = shell_exec("sudo chmod -R go-w ".$FILE_PATH);
errlog($chmod2);
} else {
$err[basename($_FILES['userfile']['name'])] = _MODULO_SINTINFO - 9;
}
exitOnError($err,'errorCaptura.xsl',$xslParams);
errlog("UPLOAD DE SINTESIS INFOMRATICA REALIZADA SATISGFACTORIAMENTE");
$xmlU = "".$_SESSION['~claveAcceso']."";
$xml = ''.$xmlU.$xmlL.''.ini_get('upload_max_filesize').'';
break;
case 'salir':
$_SESSION['~logged-in'] = 0;
$xslt = "acceso.xsl";
$xml = acceso();
break;
}
}
$xslParams = array_merge($xslParams, array('callback' => $_REQUEST['t']));
echo xsltTransform($xml, _SYSTEM_PATH."xslt/".$xslt, $xslParams);
exit;
function listFiles($path='.', $regexp='/./') {
if(is_dir($path)) {
if($handle = opendir($path)) {
while(false!==($file=readdir($handle))) {
if($file != "." && $file != ".." && $file[0] != ".") {
//print $file."
";
if(!is_dir($path . "/" . $file) && preg_match($regexp,$file)) {
$fileArr[] = array('name'=>$file, 'size'=>round(filesize($path."/".$file)/1024,1));
}
}
}
}
if(is_array($fileArr)) {
$sa = sort_by($fileArr, 'name', 'desc');
foreach ($sa as $key => $val) {
$xml.= "".$val['name']."";
}
}
}
return "".$xml."";
}
// OJO: Revisar esta funcion, que no se usa pero se antoja
function sort_by($array, $keyname = null, $sortby) {
$myarray = $inarray = array();
# First store the keyvalues in a seperate array
foreach ($array as $i => $befree) {
$myarray[$i] = $array[$i][$keyname];
}
# Sort the new array by
switch ($sortby) {
case 'asc':
# Sort an array and maintain index association...
asort($myarray);
break;
case 'desc':
# Sort an array in reverse order and maintain index association
arsort($myarray);
break;
case 'nat':
# Sort an array using a case insensitive "natural order" algorithm
natcasesort($myarray);
break;
}
# Rebuild the old array
foreach ( $myarray as $key=> $befree) {
$inarray[$key] = $array[$key];
}
return $inarray;
}
?>