forked from pasosdeJesus/SIVeL
-
Notifications
You must be signed in to change notification settings - Fork 1
/
detalle.php
128 lines (112 loc) · 3.56 KB
/
detalle.php
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
<?php
// vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker fileencoding=utf-8:
/**
* Permite editar o agregar registros a una tabla
* Referencias: http://www.21st.de/downloads/rapidprototyping.pdf
*
* PHP version 5
*
* @category SIVeL
* @package SIVeL
* @author Vladimir Támara <[email protected]>
* @copyright 2004 Dominio público. Sin garantías.
* @license https://www.pasosdejesus.org/dominio_publico_colombia.html Dominio Público. Sin garantías.
* @version CVS: $Id: detalle.php,v 1.60.2.5 2011/10/22 14:57:56 vtamara Exp $
* @link http://sivel.sf.net
*/
/**
* Permite editar o agregar registros a una tabla
*/
require_once "aut.php";
require_once $_SESSION['dirsitio'] . '/conf.php';
require_once "misc.php";
require_once "misc_caso.php";
require_once "DB/DataObject/FormBuilder.php";
$aut_usuario = "";
autenticaUsuario($dsn, $accno, $aut_usuario, 11);
if (!isset($_REQUEST['tabla'])) {
die('Por favor especificar parametro "tabla"');
}
$tabla = var_req_escapa('tabla');
actGlobales();
$u = html_menu_toma_url($GLOBALS['menu_tablas_basicas']);
if (!in_array($tabla, $u)) {
die("La tabla '$tabla' no es básica");
}
$d = objeto_tabla($tabla);
$db = $d->getDatabaseConnection();
if (isset($_GET['id'])) {
$a = explode(',', var_escapa($_GET['id'], $db));
foreach ($a as $v) {
$r = explode('=', $v);
$n = $r[0];
$d->$n = $r[1];
}
if ($d->find()!=1) {
die("Se esperaba un sólo registro");
}
$d->fetch();
}
$d->fb_addFormHeader = true;
$d->useMutators = true;
$d->hidePrimaryKey = false;
$b =& DB_DataObject_FormBuilder::create($d);
$b->useMutators = true;
$b->createSubmit = 0;
$f = $b->getForm(htmlspecialchars($_SERVER['REQUEST_URI']));
$f->setRequiredNote($mreq);
$ed = array();
if (!isset($_GET['id'])) {
$e =& $f->createElement('submit', 'añadir', 'Añadir');
$ed[] =& $e;
} else {
$e =& $f->createElement('submit', 'actualizar', 'Actualizar');
$ed[] =& $e;
$e =& $f->createElement('submit', 'eliminar', 'Eliminar');
$ed[] =& $e;
$f->addElement('hidden', 'tabla', $tabla);
}
$f->addGroup($ed, null, '', ' ', false);
$f->addElement(
'header', null,
'<div align = "right"><a href = "index.php">Menú Principal</a></div>'
);
if ($f->validate()) {
if (!$d->masValidaciones($f->_submitValues)) {
echo "No pasaron validaciones adicionales";
} else if (!verifica_sin_CSRF($f->_submitValues)) {
die("Datos enviados no pasaron verificación CSRF");
} else {
$res = null;
if (isset($f->_submitValues['actualizar'])
|| isset($f->_submitValues['añadir'])
) {
if (isset($f->_submitValues['actualizar'])) {
$b->forceQueryType(
DB_DATAOBJECT_FORMBUILDER_QUERY_FORCEUPDATE
);
} else {
$b->forceQueryType(
DB_DATAOBJECT_FORMBUILDER_QUERY_FORCEINSERT
);
}
$res = $f->process(array($b, 'processForm'), false);
} else {
foreach ($f->_submitValues as $k => $v) {
$d->$k = $v;
}
$res =& $d->delete();
}
if (PEAR::isError($res)) {
echo_esc($res->getMessage());
} else {
// prevenimos HRHS
// http://www.securiteam.com/securityreviews/5WP0E2KFGK.html
$ntabla = str_replace(array("\n", "\r"), array("", ""), $tabla);
header('Location: tabla.php?tabla=' . $ntabla);
}
}
}
agrega_control_CSRF($f);
echo $f->toHtml();
?>