17 header(
'Content-Type: application/json');
20 $monLibrary= dirname(__FILE__) .
"/../library";
21 require_once(
"$monLibrary/cu_top.i");
24 "action" => array(
'filter' => FILTER_SANITIZE_STRING),
25 "featureList" => array(
'filter' => FILTER_SANITIZE_STRING),
26 "featureCode" => array(
'filter' => FILTER_SANITIZE_STRING),
27 "featureDescription" => array(
'filter' => FILTER_SANITIZE_STRING),
28 "featureLimit" => array(
'filter' => FILTER_SANITIZE_STRING),
31 HCU_ImportVars($MON_VARS,
"", $var_ok );
33 $action = isset($MON_VARS[
'action']) ? $MON_VARS[
'action'] :
null;
34 $featureList = isset($MON_VARS[
'featureList']) ? $MON_VARS[
'featureList'] :
null;
35 $featureCode = isset($MON_VARS[
'featureCode']) ? $MON_VARS[
'featureCode'] :
null;
36 $featureDescription = isset($MON_VARS[
'featureDescription']) ? $MON_VARS[
'featureDescription'] :
null;
37 $featureLimit = isset($MON_VARS[
'featureLimit']) ? $MON_VARS[
'featureLimit'] :
null;
44 case "feature_create":
47 $aryResult = FeatureCreate($SYSENV, $dbh, $featureCode, $featureDescription, $featureLimit);
53 $aryResult = FeatureReadList($SYSENV, $dbh);
59 $aryResult = FeatureEdit($SYSENV, $dbh, $featureCode, $featureDescription, $featureLimit);
62 case "feature_delete":
65 $aryResult = FeatureDelete($SYSENV, $dbh, $featureList);
68 case "feature_enable":
71 $aryResult = FeatureEnable($SYSENV, $dbh, $featureList);
74 case "feature_disable":
77 $aryResult = FeatureDisable($SYSENV, $dbh, $featureList);
83 throw new Exception(
"Feature Action: ( $action ) unknown");
87 }
catch (Exception $e) {
90 $aryReply[
'errors'] = $e->getMessage();
92 $aryResult[
'data'] = array();
93 $aryResult[
'info'] = array();
96 $aryReply[
'action'] = $action;
97 if (isset($aryResult[
'data']) && count($aryResult[
'data'])) $aryReply[
'data'] = $aryResult[
'data'];
98 if (isset($aryResult[
'info']) && count($aryResult[
'info'])) $aryReply[
'info'] = $aryResult[
'info'];
100 print json_encode(Array(
"Results" => $aryReply));
110 function FeatureSetup($pData) {
112 $dataReturn = array();
114 if ($pData ==
null) {
return $dataReturn; }
116 foreach ($pData as $key => $value) {
119 $feature[
'featureCode'] = trim($value[
'feature_code']);
120 $feature[
'featureDescription'] = trim($value[
'description']);
121 $feature[
'featureLimit'] = trim($value[
'limit_type']);
122 $feature[
'featureEnabled'] = $value[
'enabled'] ==
't' ? true :
false;
124 $dataReturn[] = $feature;
140 function FeatureInUse($pDbh, $pFeature) {
143 $sqlSelectFm =
"SELECT feature_code FROM cu_featuremenu 144 WHERE btrim(feature_code) = $pFeature";
147 $sqlSelectRs = db_query($sqlSelectFm, $pDbh);
148 $numSelectRs = pg_num_rows($sqlSelectRs);
150 return $numSelectRs != 0;
164 function FeatureDelete($pEnv, $pDbh, $pFeatures) {
166 $sqlReturn = array();
170 $featureAry = array();
171 $featureList = explode(
',', $pFeatures);
173 foreach ($featureList as $key => $value) {
175 $feature =
"'" . prep_save($value, 10) .
"'";
176 $inUse = FeatureInUse($pDbh, $feature);
180 $sqlReturn[
'info'][] =
"( $feature ) cannot be deleted, it is currently in use\n";
182 array_push($featureAry, $feature);
183 $sqlReturn[
'info'][] =
"( $feature ) was deleted successfully\n";
188 $features = implode(
",", $featureAry);
191 $sqlDelete =
"DELETE FROM cu_feature 192 WHERE feature_code IN ($features) 193 RETURNING feature_code, description, limit_type, enabled";
196 $sqlDeleteRs = db_query($sqlDelete, $pDbh);
198 $pEnv[
'logger']->error(db_last_error());
199 throw new Exception(
"Feature deleted has failed");
202 $sqlDataRs = db_fetch_all($sqlDeleteRs);
203 $sqlReturn[
'data'] = FeatureSetup($sqlDataRs);
219 function FeatureEnable($pEnv, $pDbh, $pFeatures) {
221 $sqlReturn = array();
225 $featureList = explode(
',', $pFeatures);
227 foreach ($featureList as $key => $value) {
229 $featureList[$key] =
"'" . prep_save($value, 10) .
"'";
233 $features = implode(
",", $featureList);
236 $sqlUpdate =
"UPDATE cu_feature 238 WHERE feature_code IN ($features) 239 RETURNING feature_code, description, limit_type, enabled";
242 $sqlUpdateRs = db_query($sqlUpdate, $pDbh);
244 $pEnv[
'logger']->error(db_last_error());
245 throw new Exception(
"Feature update has failed");
249 $sqlDataRs = db_fetch_all($sqlUpdateRs);
250 $sqlReturn[
'data'] = FeatureSetup($sqlDataRs);
251 $sqlReturn[
'info'][] =
"Feature update was successful\n";
268 function FeatureDisable($pEnv, $pDbh, $pFeatures) {
270 $sqlReturn = array();
274 $featureList = explode(
',', $pFeatures);
277 foreach ($featureList as $key => $value) {
278 $featureList[$key] =
"'" . prep_save($value, 10) .
"'";
282 $features = implode(
",", $featureList);
285 $sqlUpdate =
"UPDATE cu_feature 287 WHERE feature_code IN ($features) 288 RETURNING feature_code, description, limit_type, enabled";
291 $sqlUpdateRs = db_query($sqlUpdate, $pDbh);
293 $pEnv[
'logger']->error(db_last_error());
294 throw new Exception(
"Feature update has failed");
298 $sqlDataRs = db_fetch_all($sqlUpdateRs);
299 $sqlReturn[
'data'] = FeatureSetup($sqlDataRs);
300 $sqlReturn[
'info'][] =
"Feature update was successful\n";
316 function FeatureEdit($pEnv, $pDbh, $pCode, $pDescription, $pLimit) {
319 $code = strtoupper($pCode);
320 $code = prep_save($code, 10);
322 $desc = html_entity_decode($pDescription, ENT_QUOTES);
323 $desc = prep_save($desc, 255);
325 $limit = strtoupper($pLimit);
326 $limit = prep_save($limit, 1);
329 $sqlUpdate =
"UPDATE cu_feature 330 SET (description, limit_type) = ('$desc', '$limit') 331 WHERE feature_code = '$code' 332 RETURNING feature_code, description, limit_type, enabled";
335 $sqlUpdateRs = db_query($sqlUpdate, $pDbh);
337 $pEnv[
'logger']->error(db_last_error());
338 throw new Exception(
"Feature update has failed");
342 $sqlDataRs = db_fetch_all($sqlUpdateRs);
343 $sqlReturn[
'data'] = FeatureSetup($sqlDataRs);
344 $sqlReturn[
'info'][] =
"Feature update was successful\n";
360 function FeatureCreate($pEnv, $pDbh, $pCode, $pDescription, $pLimit) {
363 $code = strtoupper($pCode);
364 $code = prep_save($code, 10);
366 $desc = html_entity_decode($pDescription, ENT_QUOTES);
367 $desc = prep_save($desc, 255);
369 $limit = strtoupper($pLimit);
370 $limit = prep_save($limit, 1);
373 $sqlInsert =
"INSERT INTO cu_feature 374 (feature_code, description, limit_type, category, enabled) 376 ('$code', '$desc', '$limit', null, FALSE) 377 RETURNING feature_code, description, limit_type, enabled";
380 $sqlInsertRs = db_query($sqlInsert, $pDbh);
382 $pEnv[
'logger']->error(db_last_error());
383 throw new Exception(
"Feature add has failed");
387 $sqlDataRs = db_fetch_all($sqlInsertRs);
388 $sqlReturn[
'data'] = FeatureSetup($sqlDataRs);
389 $sqlReturn[
'info'][] =
"Feature add was successful\n";
402 function FeatureReadList($pEnv, $pDbh) {
405 $sqlSelect =
"SELECT feature_code, description, limit_type, enabled 409 $sqlSelectRs = db_query($sqlSelect, $pDbh);
411 $pEnv[
'logger']->error(db_last_error());
412 throw new Exception(
"Failed to read feature list");
416 $sqlDataRs = db_fetch_all($sqlSelectRs);
417 $sqlReturn[
'data'] = FeatureSetup($sqlDataRs);