-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.php
More file actions
executable file
·360 lines (304 loc) · 22.1 KB
/
index.php
File metadata and controls
executable file
·360 lines (304 loc) · 22.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
<?php
/*
_
|_) _ _ _ _|_. _ _ Copyright (C) 2012-2022
| | (_|(_ | |(_(_) John F. Arroyave Gutiérrez
www.practico.org [email protected]
All rights reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
--- TRADUCCION NO OFICIAL DE LA LICENCIA ---
Esta es una traducción no oficial de la Licencia Pública General de
GNU al español. No ha sido publicada por la Free Software Foundation
y no establece los términos jurídicos de distribución del software
publicado bajo la GPL 3 de GNU, solo la GPL de GNU original en inglés
lo hace. De todos modos, esperamos que esta traducción ayude a los
hispanohablantes a comprender mejor la GPL de GNU:
Este programa es software libre: puede redistribuirlo y/o modificarlo
bajo los términos de la Licencia General Pública de GNU publicada por
la Free Software Foundation, ya sea la versión 3 de la Licencia, o
(a su elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil pero SIN
NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD
o CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia General
Pública de GNU para más detalles.
Usted ha debido de recibir una copia de la Licencia General Pública de
GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>
<pre><b>
Importante: Si usted esta visualizando este mensaje en su navegador,
entonces PHP no esta instalado correctamente en su servidor web!</b></pre>
Title: Modulo Articulador
Ubicacion *[index.php]*. Archivo que contiene llamados a los demas
modulos y procesos de validacion de cabeceras.
Operaciones resumidas:
(start code)
Inicio variables de session
Inclusion de archivo de configuracion
Definicion de variables y parametros de funcionamiento
Inclusion de conexiones PDO y funciones comunes
Validacion de credenciales y datos de sesion
Inclusion de marco superior
Inclusion de modulos segun accion
Proyeccion de contenidos centrales por cada modulo (externo)
Inclusion de funciones personalizadas
Inclusion de marco inferior
(end)
*/
//Permite WebServices propios mediante el acceso a este script en solicitudes Cross-Domain
header('Access-Control-Allow-Origin: *');
//header('X-Frame-Options: deny: sameorigin'); // Acepta: deny|sameorigin|allow-from https://example.com/ Por defecto es ALLOWALL
//header('Content-Security-Policy: frame-ancestors <source> <source>;'); //Si no esta permite todo. A diferencia de X-Frame-Options puede permitir varios origenes
//header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
//header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
//header("Allow: GET, POST, OPTIONS, PUT, DELETE");
//if($_SERVER['REQUEST_METHOD'] == "OPTIONS") { die(); }
header('Content-type: text/html; charset=utf-8');
header('X-XSS-Protection:0');
//Cabeceras para evitar el error de err_cache_miss al hacer clic en el boton de atras del navegador
//header('Cache-Control: no cache'); //No guarda cache de sitio
//session_cache_limiter('private_no_expire'); // Define el limitador de cache actual. El valor public tambien opera
// Inicio de la sesion
@session_start();
//Determina si es un primer inicio o no hay configuracion
if (!file_exists('core/configuracion.php')) {
header('Location: ins/');
die();
}
else include 'core/configuracion.php';
//Incluye idioma espanol, o sobreescribe vbles por configuracion de usuario
include 'inc/practico/idiomas/es.php';
include 'inc/practico/idiomas/'.$IdiomaPredeterminado.'.php';
//Determina si la plataforma se encuentra en modo DEMO
$PCO_ModoDEMO=0;
if (file_exists('DEMO') && @$PCO_WSOn!=1)
{ $PCO_ModoDEMO=1; echo '<script language="JavaScript"> PCO_ModoDEMO=1; </script>'; }
//Activa errores del preprocesador en modo de depuracion (configuracion.php)
if ($ModoDepuracion && isset($_SESSION['PCOSESS_SesionAbierta']) && $_SESSION['PCOSESS_SesionAbierta'])
{
include_once 'core/comunes.php';
if (PCO_EsAdministrador($_SESSION['PCOSESS_LoginUsuario']))
{
ini_set('display_errors', 1);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_DEPRECATED | E_STRICT | E_USER_DEPRECATED | E_USER_ERROR | E_USER_WARNING); //Otras disponibles | E_PARSE | E_CORE_ERROR | E_CORE_WARNING |
}
}
else
error_reporting(0);
// Establece la zona horaria por defecto para la aplicacion
date_default_timezone_set($ZonaHoraria);
// Datos de fecha, hora para algunas operaciones
$PCO_FechaOperacion=date('Ymd');
$PCO_FechaOperacionGuiones=date('Y-m-d');
$PCO_HoraOperacion=date('His');
$PCO_HoraOperacionPuntos=date('H:i');
//Detecta version PHP para determinar algunas operaciones asociadas a versiones de dependencias diferenciales
$PCO_ArregloVersionPHP=explode(".",PHP_VERSION);
$PCO_VersionMayorPHP=$PCO_ArregloVersionPHP[0];
$PCO_VersionMenorPHP=$PCO_ArregloVersionPHP[1];
$PCO_VersionGeneralPHP=$PCO_VersionMayorPHP.'.'.$PCO_VersionMenorPHP;
// Define cadena con usuarios Administradores/disenadores. Obsoleta desde 16.2 Confirmada eliminacion en 17.1
if (!isset($PCOVAR_Administradores)) $PCOVAR_Administradores="admin";
// Recupera variables recibidas para su uso como globales (equivale a register_globals=on en php.ini)
if (!ini_get('register_globals'))
{
$PCO_NumeroParametros = count($_REQUEST);
$PCO_NombresParametros = array_keys($_REQUEST);// obtiene los nombres de las varibles
$PCO_ValoresParametros = array_values($_REQUEST);// obtiene los valores de las varibles
// crea las variables y les asigna el valor
for($i=0;$i<$PCO_NumeroParametros;$i++)
{
${$PCO_NombresParametros[$i]}=$PCO_ValoresParametros[$i];
//Si alguna de las variables proviene de un combo multiple la transforma a su variable original
if (strstr($PCO_NombresParametros[$i],"PCO_ComboMultiple_")!=FALSE)
${substr($PCO_NombresParametros[$i], strlen("PCO_ComboMultiple_"))}=$PCO_ValoresParametros[$i];
}
// Agrega ademas las variables de sesion
if (!empty($_SESSION)) extract($_SESSION);
}
//Si el idioma seleccionado por el usuario es diferente al predeterminado lo incluye
if(isset($PCOSESS_IdiomaUsuario) && @$PCOSESS_IdiomaUsuario!=$IdiomaPredeterminado && @$PCOSESS_IdiomaUsuario!="")
include 'inc/practico/idiomas/'.$PCOSESS_IdiomaUsuario.'.php';
// Verifica algunas variables minimas de trabajo en el primer inicio para evitar NOTICE y WARNINGs
if (!isset($PCO_Accion)) $PCO_Accion="";
if (!isset($PCOSESS_SesionAbierta)) $PCOSESS_SesionAbierta=0;
// Inicia las conexiones con la BD y las deja listas para las operaciones
include_once 'core/conexiones.php';
// Incluye definiciones comunes de la base de datos
include_once 'inc/practico/def_basedatos.php';
// Incluye archivo con algunas funciones comunes usadas por la herramienta
include_once 'core/comunes.php';
// Datos direccion IP para algunas operaciones
$PCO_DireccionAuditoria=PCO_ObtenerIPCliente();
//Ejecuta cualquier posible enlace corto que se reciba
if (isset($_GET["e"]) || isset($_POST["e"]) )
if ($_GET["e"]!="" || $_POST["e"]!="")
{
$URLCorta=$_GET["e"]; if ($URLCorta=="") $URLCorta=$_POST["e"];
//Busca posible URL corta con ese codigo
$PCO_RegistroURLCorta=PCO_EjecutarSQL("SELECT id,{$ListaCamposSinID_acortadorurls} FROM {$TablasCore}acortadorurls WHERE url_corta=? ","$URLCorta")->fetch(); //http://192.168.0.63/practico/?q=g
if ($PCO_RegistroURLCorta["id"]!="")
{
PCO_EjecutarSQLUnaria("UPDATE core_acortadorurls SET contador_uso=contador_uso+1 WHERE id='".$PCO_RegistroURLCorta["id"]."' ");
if ($PCO_RegistroURLCorta["tipo_redireccion"]=="301")
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$PCO_RegistroURLCorta["url_larga"]);
}
else
{
$PCO_ErrorTitulo="ERROR en enlace $URLCorta";
$PCO_ErrorDescripcion="<hr><li>El enlace corto solicitado no existe<li>The shortened link that you are asking for doesnt exists";
}
}
// Genera conexiones individuales o conexiones para replicacion de transacciones
include_once 'core/conexiones_extra.php';
// Incluye archivo con funciones de correo electronico
include_once 'core/correos.php';
// Establece funciones propias para el manejo de errores y excepciones
set_exception_handler('PCO_ManejadorExcepciones');
set_error_handler('PCO_ManejadorErrores');
// Almacena tiempo de inicio para calculo de tiempos de ejecucion del script (informados a los Administradores)
if(PCO_EsAdministrador(@$PCOSESS_LoginUsuario) && $PCO_Accion!="")
$tiempo_inicio_script = PCO_ObtenerMicrotime();
// Importa autmaticamente definiciones de elementos internos en XML cuando encuentra alguna dentro de xml/
if(PCO_EsAdministrador(@$PCOSESS_LoginUsuario) || PCO_EsDesplegador(@$PCOSESS_LoginUsuario))
{ PCO_ImportarDefinicionesXML(0); PCO_ImportarScriptsPHP(0); }
// Incluye configuraciones OAuth
include_once 'core/ws_oauth.php';
// Determina si al momento de ejecucion se encuentra activado el modo webservices
include_once 'core/ws_nucleo.php';
//Ejecuta cualquier trabajo Cron definido
include_once 'core/cron.php';
//Permite ejecucion de PostAcciones de formulario definidas y protegidas por parametros como la llave de paso u otros segun desarrollador
include_once 'core/formularios_post.php';
PCO_LimpiarEntradas(); // Evita XSS
// Incluye clases para procesar archivos en csv, xls, ods, pdf, otros
require_once 'inc/phpexcel/Classes/PHPExcel.php';
//require_once 'inc/phpspreadsheet/src/Bootstrap.php';
//require_once 'inc/phpspreadsheet/src/PhpSpreadsheet/Spreadsheet.php';
// Incluye archivo que puede tener funciones personalizadas llamadas mediante acciones de formularios
if (PCO_BuscarErroresSintaxisPHP('mod/personalizadas_pre.php')==0)
include 'mod/personalizadas_pre.php';
// Valida llaves de paso y permisos de accion
if ($PCO_Accion!= "" && $PCO_Accion!="Iniciar_login" && $PCO_Accion!="Terminar_sesion" && $PCO_Accion!="Mensaje_cierre_sesion" && $PCO_Accion!="PCO_VerMonitoreo" && $PCO_Accion!="PCO_RecuperarContrasena" && $PCO_Accion!="PCO_AgregarUsuarioAutoregistro" && $PCO_Accion!="PCO_GuardarUsuarioAutoregistro")
{
// Verifica autenticidad de la sesion mediante llave de paso
if (MD5($LlaveDePaso)!=$LlaveDePasoUsuario) {
header('Location: index.php?accion=Terminar_sesion');
exit(1);
}
// Valida permisos asignados al usuario actual para la accion llamada a ejecutar
if (!PCO_PermisoAccion($PCO_Accion)) {
echo $MULTILANG_SecErrorTit.'<hr>'.$MULTILANG_SecErrorDes.'<hr>[US=<b>'.$PCOSESS_LoginUsuario.'</b>|CMD=<b>'.$PCO_Accion.'</b>|IP=<b>'.$PCO_DireccionAuditoria.'</b>|DTE=<b>'.$PCO_FechaOperacionGuiones.' '.$PCO_HoraOperacionPuntos.'</b>]';
PCO_Auditar("SEC: Intento de acceso no autorizado CMD=$PCO_Accion");
exit(1);
}
}
// Inicia la presentacion de la pagina si no esta activado el fullscreen
if (@$Presentar_FullScreen!=1) $Presentar_FullScreen="";
if (@$Precarga_EstilosBS!=1) $Precarga_EstilosBS="";
if (@$Presentar_FullScreen!=1)
{
include 'core/marco_arriba.php';
}
else if (@$Precarga_EstilosBS==1) //Valida si el FullScreen al menos requiere de estilos BootStrap basicos
{
include 'core/marco_arriba_bs.php';
//Inicia lo basico de la pagina
echo '<body oncontextmenu="return false;">';
//Incluye formularios de uso comun para transporte de datos
include_once 'core/marco_forms.php';
echo ' <div id="wrapper">
<!-- CONTENIDO DE APLICACION -->
<div id="page-wrapper"> <!-- ANTES page-wrapper-->
<div class="container-fluid">
<div class="row">
<div class="col col-xs-12 col-sm-12 col-md-12 col-lg-12">
<!--<br>-->';
}
// Prueba que todas las extensiones requeridas se encuentren habilitadas
PCO_VerificarExtensionesPHP();
// Valida existencia de versiones nuevas cuando un Administrador esta logueado
//PCO_BuscarActualizaciones(@$PCOSESS_LoginUsuario,$PCO_Accion);
// Presenta mensajes con errores generales cuando son encontrados durante la ejecucion
if (@$PCO_ErrorTitulo!="") {
if (@$PCO_ErrorIcono=="") $PCO_ErrorIcono='fa-thumbs-down';
if (@$PCO_ErrorEstilo=="") $PCO_ErrorEstilo='alert-danger';
PCO_Mensaje($PCO_ErrorTitulo, $PCO_ErrorDescripcion, '', 'fa fa-fw fa-2x '.$PCO_ErrorIcono, 'alert alert-dismissible '.$PCO_ErrorEstilo);
//Detiene ejecucion del script (util despues de popups de solo mensajes en operaciones)
if (@$PCO_ErrorAutoclose=="1") echo '<script type="" language="JavaScript"> window.close(); </script>';
if (@$PCO_ErrorDetener=="1") die();
}
// Si existe el directorio de instalacion y no es modo fullscreen presenta un mensaje constante de advertencia en el escritorio
if (@file_exists('ins') && PCO_EsAdministrador(@$PCOSESS_LoginUsuario) && @$Presentar_FullScreen!=1 && $PCO_Accion=="PCO_VerMenu")
PCO_Mensaje($MULTILANG_TituloInsExiste, $MULTILANG_TextoInsExiste, '', 'fa fa-exclamation-triangle fa-5x texto-rojo texto-blink', 'alert alert-warning alert-dismissible');
//Despliega escritorio de los Administradores
if (PCO_EsAdministrador(@$PCOSESS_LoginUsuario) && $PCOSESS_SesionAbierta && $PCO_Accion=="PCO_VerMenu")
include_once 'core/marco_admin.php';
/* ################################################################## */
// Cuando no se tiene ninguna accion para procesar se carga la pagina de inicio de sesion
if ($PCO_Accion=="" && $PCOSESS_SesionAbierta==0) PCO_VentanaLogin();
if ($PCO_Accion=="" && $PCOSESS_SesionAbierta==1 && @$Presentar_FullScreen!=1) echo '<script type="" language="JavaScript"> document.PCO_FormVerMenu.submit(); </script>';
// Incluye los archivos necesarios dependiendo de las funciones requeridas
if ($PCO_Accion=="PCO_ExportarInforme" || $PCO_Accion=="PCO_ConfirmarImportacionInforme" || $PCO_Accion=="PCO_AnalizarImportacionInforme" || $PCO_Accion=="PCO_ImportarInforme" || $PCO_Accion=="PCO_DefinirCopiaInformes" || $PCO_Accion=="PCO_ClonarDisenoInforme" || $PCO_Accion=="PCO_AdministrarInformes" || $PCO_Accion=="PCO_GuardarInforme" || $PCO_Accion=="PCO_EditarInforme" || $PCO_Accion=="PCO_EliminarInforme" || $PCO_Accion=="PCO_EliminarInformeTabla" || $PCO_Accion=="PCO_GuardarInformeTabla" || $PCO_Accion=="PCO_EliminarInformeCampo" || $PCO_Accion=="PCO_GuardarInformeCampo" || $PCO_Accion=="PCO_GuardarInformeCondicion" || $PCO_Accion=="PCO_EliminarInformeCondicion" || $PCO_Accion=="PCO_MisInformes" || $PCO_Accion=="PCO_ActualizarGraficoInforme" || $PCO_Accion=="PCO_ActualizarAgrupamientoInforme" || $PCO_Accion=="PCO_GuardarAccionInforme" || $PCO_Accion=="PCO_EliminarRegistroInforme" || $PCO_Accion=="PCO_EliminarAccionInforme")
{ include "core/informes.php"; }
if ($PCO_Accion=="PCO_GuardarUsuarioAutoregistro" || $PCO_Accion=="PCO_AgregarUsuarioAutoregistro" || $PCO_Accion=="PCO_CopiarInformes" || $PCO_Accion=="PCO_RecuperarContrasena" || $PCO_Accion=="PCO_ResetearContrasena" || $PCO_Accion=="PCO_ActualizarContrasena" || $PCO_Accion=="PCO_CambiarContrasena" || $PCO_Accion=="PCO_GuardarUsuario" || $PCO_Accion=="PCO_EliminarUsuario" || $PCO_Accion=="PCO_CambiarEstadoUsuario" || $PCO_Accion=="PCO_PermisosUsuario" || $PCO_Accion=="PCO_AgregarPermiso" || $PCO_Accion=="PCO_EliminarPermiso" || $PCO_Accion=="PCO_InformesUsuario" || $PCO_Accion=="PCO_AgregarInformeUsuario" || $PCO_Accion=="PCO_EliminarInformeUsuario" || $PCO_Accion=="PCO_CopiarPermisos")
{ include "core/usuarios.php"; }
if ($PCO_Accion=="PCO_EjecutarImportacionCSV" || $PCO_Accion=="PCO_EscogerTablaImportacionCSV" || $PCO_Accion=="PCO_AnalizarImportacionCSV" || $PCO_Accion== "PCO_ConfirmarImportacionTabla" || $PCO_Accion== "PCO_ImportarTabla" || $PCO_Accion== "PCO_CopiarTabla" || $PCO_Accion== "PCO_DefinirCopiaTablas" || $PCO_Accion=="PCO_GuardarCrearTablaAsistente" || $PCO_Accion=="PCO_AsistenteTablas" || $PCO_Accion=="PCO_AdministrarTablas" || $PCO_Accion=="PCO_GuardarCrearTabla" || $PCO_Accion=="PCO_EliminarTabla" || $PCO_Accion=="PCO_EditarTabla" || $PCO_Accion=="PCO_GuardarCrearCampo" || $PCO_Accion=="PCO_EliminarCampoTabla")
{ include "core/tablas.php"; }
if ($PCO_Accion=="PCO_EjecutarPostAccionForm" || $PCO_Accion=="PCO_DesplazarObjetosForm" || $PCO_Accion=="PCO_EditarEventoObjeto" || $PCO_Accion=="PCO_ConfirmarImportacionFormulario" || $PCO_Accion=="PCO_AnalizarImportacionFormulario" || $PCO_Accion=="PCO_ImportarFormulario" || $PCO_Accion=="PCO_DefinirCopiaFormularios" || $PCO_Accion=="PCO_ActualizarDatosFormulario" || $PCO_Accion=="PCO_ActualizarFormulario" || $PCO_Accion=="PCO_CopiarFormulario" || $PCO_Accion=="PCO_AdministrarFormularios" || $PCO_Accion=="PCO_GuardarFormulario" || $PCO_Accion=="PCO_EliminarFormulario" || $PCO_Accion=="PCO_EditarFormulario" || $PCO_Accion=="PCO_EliminarCampoFormulario" || $PCO_Accion=="PCO_GuardarAccionFormulario" || $PCO_Accion=="PCO_EliminarAccionFormulario" || $PCO_Accion=="PCO_GuardarDatosFormulario" || $PCO_Accion=="PCO_EliminarDatosFormulario")
{ include "core/formularios.php"; }
if ($PCO_Accion=="PCO_BuscarPermisosPractico" || $PCO_Accion=="PCO_VerMenu" || $PCO_Accion=="PCOFUNC_AdministrarMenu" || $PCO_Accion=="PCO_EliminarMenu")
{ include "core/menus.php"; }
if ($PCO_Accion=="Iniciar_login" || $PCO_Accion=="Terminar_sesion" || $PCO_Accion=="Mensaje_cierre_sesion")
{ include "core/sesion.php"; }
if ($PCO_Accion=="PCO_CargarObjeto" || $PCO_Accion=="guardar_configuracion" || $PCO_Accion=="PCO_GuardarConfiguracionOAuth" || $PCO_Accion=="exportacion_masiva_objetos")
{ include "core/objetos.php"; }
if ($PCO_Accion=="actualizar_practico" || $PCO_Accion=="cargar_archivo" || $PCO_Accion=="analizar_parche" || $PCO_Accion=="aplicar_parche")
{ include "core/actualizacion.php"; }
if ($PCO_Accion=="PCO_VerMonitoreo")
{ include "core/monitoreo.php"; }
if ($PCO_Accion=="cambiar_estado_campo" || $PCO_Accion=="valor_campo_tabla" || $PCO_Accion=="PCO_ObtenerOpcionesComboBox" || $PCO_Accion=="PCO_ObtenerOpcionesAjaxSelect" || $PCO_Accion=="PCO_ObtenerEstadoServidorWeb" || $PCO_Accion=="PCO_ObtenerEstadoMotorBasedatos")
{ include "core/ajax.php"; }
if ($PCO_Accion=="PCO_LimpiarCacheSQL" || $PCO_Accion=="PCO_ReportarBugs" || $PCO_Accion=="mantenimiento_tablas" || $PCO_Accion=="limpiar_temporales" || $PCO_Accion=="limpiar_backups")
{ include "core/mantenimiento.php"; }
if ($PCO_Accion=="PCO_ExplorarTablerosGantt" || $PCO_Accion=="PCO_ExplorarTablerosKanbanResumido" || $PCO_Accion=="AceptarPruebasTareaKanban" || $PCO_Accion=="EliminarTableroKanban" || $PCO_Accion=="GuardarCreacionKanban" || $PCO_Accion=="ArchivarTareaKanban" || $PCO_Accion=="PCO_ExplorarTablerosKanban" || $PCO_Accion=="EliminarTareaKanban" || $PCO_Accion=="GuardarPersonalizacionKanban")
{ include "core/kanban.php"; }
/* ################################################################## */
// Incluye archivo que puede tener funciones personalizadas llamadas mediante acciones de formularios. Incluye compatibilidad hacia atras en personalizadas.php
if (file_exists('mod/personalizadas.php')) include 'mod/personalizadas.php';
if (PCO_BuscarErroresSintaxisPHP('mod/personalizadas_pos.php')==0)
include 'mod/personalizadas_pos.php';
// Incluye otros modulos que residan sobre carpetas en mod/* cuya entrada es index.php
$directorio_modulos=opendir('mod');
while (($PCOVAR_Elemento=readdir($directorio_modulos))!=false) {
//Lo procesa solo si es directorio
if (is_dir('mod/'.$PCOVAR_Elemento) && $PCOVAR_Elemento!="." && $PCOVAR_Elemento!="..") {
//Busca la entrada del modulo sino muestra error
if (file_exists('mod/'.$PCOVAR_Elemento.'/index.php'))
{
//Incluye el archivo menos algunos modulos especiales de la herramienta que se ejecutan por separado
if ($PCOVAR_Elemento!="pcoder" && $PCOVAR_Elemento!="pmydb")
{
if (PCO_BuscarErroresSintaxisPHP('mod/'.$PCOVAR_Elemento.'/index.php')==0)
include 'mod/'.$PCOVAR_Elemento.'/index.php';
}
}
else
PCO_Mensaje($MULTILANG_ErrorTiempoEjecucion, $MULTILANG_ErrorModulo.'<br><b>'.$MULTILANG_Detalles.': '.$PCOVAR_Elemento.'</b>', '', 'fa fa-times fa-5x icon-red texto-blink', 'alert alert-danger alert-dismissible');
}
}
/* ################################################################## */
// Finaliza el contenido central y presenta el pie de pagina de aplicacion
// siempre y cuando no se esta en fullscreen. Si la precarga esta activa tambien lo incluye
if (@$Presentar_FullScreen!=1 || @$Precarga_EstilosBS==1)
{
include 'core/marco_abajo.php';
}