ajaxConditionals.php
3.93 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
<?php
require_once("../../../../../config/dmsDefaults.php");
require_once(KT_DIR . "/presentation/Html.inc");
require_once(KT_LIB_DIR . "/templating/templating.inc.php");
require_once(KT_LIB_DIR . "/documentmanagement/DocumentField.inc");
require_once(KT_LIB_DIR . "/database/dbutil.inc");
require_once(KT_LIB_DIR . "/util/ktutil.inc");
require_once(KT_LIB_DIR . "/dispatcher.inc.php");
$sectionName = "Administration";
require_once(KT_DIR . "/presentation/webpageTemplate.inc");
require_once(KT_LIB_DIR . "/metadata/fieldset.inc.php");
class AjaxConditionalAdminDispatcher extends KTDispatcher {
function do_main() {
return "Ajax Error.";
}
// a lot simpler than the standard dispatcher, this DOESN'T include a large amount of "other" stuff ... we are _just_ called to handle
// input/output of simple HTML components.
function handleOutput($data) {
print $data;
}
function do_getMasterFieldForSet() {
global $default;
$fieldset_id = KTUtil::arrayGet($_REQUEST, 'fieldset_id');
if (empty($fieldset_id)) {
return "Ajax error: No fieldset specified.";
}
$oFieldset = KTFieldset::get($fieldset_id);
if (PEAR::isError($oFieldset)) {
return "Ajax error: No such fieldset (".$fieldset_id.")";
}
$oField = KTMetadataUtil::getMasterField($oFieldset);
if (PEAR::isError($oField)) {
return "Ajax Error (subselect check).";
}
$master_field_id = $oField->getId();
$aFreeLookups = MetaData::getByDocumentField($oField);
$oTemplating = new KTTemplating;
$oTemplate = $oTemplating->loadTemplate("ktcore/metadata/conditional/conditional_ajax_masterfield");
$aTemplateData = array(
"master_field_id" => $master_field_id,
"free_lookups" => $aFreeLookups,
);
return $oTemplate->render($aTemplateData);
}
function do_getFieldFromSet() {
global $default;
$fieldset_id = KTUtil::arrayGet($_REQUEST, 'fieldset_id');
$field_id = KTUtil::arrayGet($_REQUEST, 'field_id');
if (empty($fieldset_id)) {
return "Ajax error: No fieldset specified.";
}
if (empty($field_id)) {
return "Ajax error: No field specified.";
}
$oFieldset = KTFieldset::get($fieldset_id);
if (PEAR::isError($oFieldset)) {
return "Ajax error: No such fieldset (".$fieldset_id.")";
}
$oField = DocumentField::get($field_id);
if (PEAR::isError($oField)) {
return "Ajax error: No such field (".$field_id.")";
}
$master_field_id = $oFieldset->getMasterField();
$sQuery = "SELECT md_look.id AS lookup_id, md_look.name AS lookup_val FROM $default->metadata_table AS md_look
WHERE md_look.document_field_id = ?";
$aParams = array($field_id);
$res = DBUtil::getResultArray(array($sQuery, $aParams));
if (PEAR::isError($res)) {
return "Ajax Error (subselect for lookups).";
}
$sQuery = "SELECT md_cond.id AS rule_id, md_cond.name AS rule_name FROM $default->md_condition_table AS md_cond
WHERE md_cond.document_field_id = ? AND md_cond.name IS NOT NULL";
$aParams = array($field_id);
$rulesets = DBUtil::getResultArray(array($sQuery, $aParams));
if (PEAR::isError($rulesets)) {
return "Ajax Error (subselect for rulesets).";
}
$oTemplating = new KTTemplating;
$oTemplate = $oTemplating->loadTemplate("ktcore/conditional_ajax_subfield");
$aTemplateData = array(
"field_id" => $field_id,
"fieldset_id" => $fieldset_id,
"lookups" => $res,
"rulesets" => $rulesets,
);
return $oTemplate->render($aTemplateData);
}
}
$oDispatcher = new AjaxConditionalAdminDispatcher();
$oDispatcher->dispatch();
?>