Files
Facilitor/APPL/CAD/obj_search.asp
Jos Groot Lipman 92e0fa1b3c FSN#37620 FALSE-positive SQL-injection en XSS duidelijker maken
svn path=/Website/trunk/; revision=30557
2016-09-05 15:05:58 +00:00

161 lines
6.3 KiB
Plaintext

<%@ language="javascript"%>
<% /*
$Revision$
$Id$
File: CAD/obj_search.asp
Description: Zoek object via code
Parameters: objCode: de door de gebruiker ingevoerde zoekcode
loc_key: optioneel, standaard zoeken we *met* loc_key omdat dat sneller is
discs: nog niet getest. Denkbaar is om alleen te zoeken op
disciplines die aan staan
Context: Modal vanuit zoekknopje op hoofdscherm
Result: Als de gebruiker op een regel klikt wordt via closeModal
allerlei keys van object opgeleverd
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="fgii.inc" -->
<!-- #include file="../Shared/json2.js" -->
<%
var autfunction = "WEB_INSUSE";
var oRs;
var sql = "";
var i=0;
var objCode = getQParam("objCode");
var loc_key = getQParamInt( "loc_key", -1);
var discs = getQParamIntArray("discs", []); // Komma separated list of ins_discipline_keys
// not tested (yet)
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function objView(row)
{
var objData = eval('(' + row.getAttribute("ROWDATA") + ')');
objData.success = true;
FcltMgr.closeDetail(window, objData);
}
</script>
</head>
<body class="modal" id="mod_obj_search" style="width:600px" >
<% // Zoek de omschrijving van de locatie er bij of 'alle'
if( loc_key != -1)
{
var sql = "SELECT alg_locatie_code, "
+ " alg_locatie_omschrijving "
+ " FROM alg_locatie "
+ " WHERE alg_locatie_key = " + loc_key;
var oRs = Oracle.Execute(sql);
descr = oRs("alg_locatie_code").value + "-" + oRs("alg_locatie_omschrijving").value;
}
else
descr = L("lcl_all");
%>
<table width="100%">
<tr>
<td class="label"><label><%=L("lcl_location")%></label>:&nbsp;</td><td><%=safe.html(descr)%></td>
<% if (loc_key != -1)
{ %>
<td align="right" valign="center">
<form>
<input type=hidden name=objCode value=<%=safe.htmlattr(objCode)%>>
<input type=hidden name=discs value=<%=discs.join(",")%>>
<input type=submit value="<%=L("lcl_all")%>">
</form>
</td>
<% } %>
</tr>
</table>
<%
sql = "SELECT o.alg_plaatsaanduiding plaats, alg_ruimte_omschrijving"
+ ", s.ins_srtdeel_code || '-' ||" + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " soort"
+ ", g.ins_deel_omschrijving"
+ ", g.ins_deel_key"
+ ", s.ins_srtdeel_key"
+ ", g.ins_discipline_key"
+ ", g.ins_alg_locatie_key"
+ ", l.alg_locatie_omschrijving"
+ ", o.alg_gebouw_key"
+ ", o.alg_gebouw_omschrijving"
+ ", o.alg_verdieping_key"
+ ", o.alg_verdieping_omschrijving"
+ ", g.ins_alg_ruimte_key"
+ ", l.alg_district_key"
+ ", ins_deel_upper" // filtering only
+ " FROM ins_deel g, alg_ruimte ar,"
+ " ins_v_alg_overzicht o,"
+ " ins_srtdeel s, alg_locatie l, alg_district di " // I added this for alg_district_key (FSN#1082)
+ " WHERE g.ins_deel_verwijder IS NULL"
+ " AND (g.ins_deel_vervaldatum IS NULL OR g.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " AND g.ins_deel_module = 'INS'"
+ " AND g.ins_deel_parent_key IS NULL"
+ " AND o.alg_ruimte_key = ar.alg_ruimte_key"
+ " AND o.alg_onroerendgoed_keys = g.ins_alg_ruimte_key"
+ " AND o.alg_onroerendgoed_type = g.ins_alg_ruimte_type"
+ " AND g.ins_alg_ruimte_type IN ('R', 'W')"
+ " AND o.alg_locatie_key = g.ins_alg_locatie_key"
+ " AND o.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND s.ins_srtdeel_key = g.ins_srtdeel_key";
if (loc_key != -1) sql = sql + " AND g.ins_alg_locatie_key = " + loc_key;
sql = sql + " AND g.ins_deel_upper LIKE " + safe.quoted_sql_wild(objCode + "%")
if(discs.length > 0 && discs.join(",").indexOf("-1") == -1)
{
sql = sql + " and ins_discipline_key IN (" + discs.join(",") + ")";
// Veronderstel dat autorisatie dan wel goed zit
}
else
{
sql = discx3d (sql, "g.ins_discipline_key", "di.alg_district_key", "l.alg_district_key",
"l.alg_locatie_key", "o.alg_gebouw_key", "o.alg_verdieping_key",
"o.alg_ruimte_key", "b.prs_bedrijf_key", "b.prs_afdeling_key",
autfunction, discs.join(","), 0);
}
sql = sql + " order by ins_deel_omschrijving";
function fnrowData(oRs)
{
var data = {loc_key: oRs("ins_alg_locatie_key").value,
loc_oms: oRs("alg_locatie_omschrijving").value,
bld_key: oRs("alg_gebouw_key").value,
bld_oms: oRs("alg_gebouw_omschrijving").value,
flr_key: oRs("alg_verdieping_key").value,
flr_oms: oRs("alg_verdieping_omschrijving").value,
rui_key: oRs("ins_alg_ruimte_key").value,
disc_key: oRs("ins_discipline_key").value
};
return JSON.stringify(data);
}
var rst = new ResultsetTable({keyColumn: "ins_alg_ruimte_key",
ID: "objlist",
sql: sql,
rowData: fnrowData,
noPrint: true
});
rst.addColumn(new Column({caption: L("lcl_obj_identification"), content: "ins_deel_omschrijving"}));
rst.addColumn(new Column({caption: L("lcl_obj_sort"), content: "soort"}));
rst.addColumn(new Column({caption: L("lcl_obj_position"), content: "plaats"}));
rst.addColumn(new Column({caption: L("lcl_descr"), content: "alg_ruimte_omschrijving"}));
rst.addAction({ action: "objView", isDefault: true});
var cnt = rst.processResultset();
%>
</body>
</html>