27 $homecuSharedLibrary = dirname(__FILE__) .
"/../../shared/library";
28 $homecuMonitorLibrary = dirname(__FILE__) .
"/../../monitor/library";
30 $importValues = Array();
38 require_once(
"$homecuMonitorLibrary/cu_top.i");
39 require_once(
"$homecuMonitorLibrary/ck_hticket.i");
40 require_once(
"$homecuSharedLibrary/dms_imp_val.i");
42 require_once(
"$homecuSharedLibrary/sFeatureMnu.i");
53 $importFieldAry = Array (
54 "cu" => array(
'filter' => FILTER_SANITIZE_STRING),
55 "api_action" => array(
'filter' => FILTER_VALIDATE_REGEXP,
'options' => array(
'options' => array(
'regexp' =>
'/ignore|update|read|delete|settings/')))
66 HCU_ImportVars($importValues,
'', $importFieldAry);
67 switch ($importValues[
'api_action']) {
76 $retVal = Array(
"homecuData"=>Array());
79 $iconListAry = GetFeatureMenuIcons();
80 $retVal[
'homecuData'][
'menuicons'] = ($iconListAry[
'code'] ==
'000' ? $iconListAry[
'data'] : Array());
83 $platformListAry = GetFeatureMenuPlatforms();
84 $retVal[
'homecuData'][
'menuplatforms'] = ($platformListAry[
'code'] ==
'000' ? $platformListAry[
'data'] : Array());
87 $featureListAry = GetFeatureList($dbh);
88 $retVal[
'homecuData'][
'features'] = ($featureListAry[
'code'] ==
'000' ? $featureListAry[
'data'] : Array());
91 $screenListAry = GetBankingScripts();
92 $retVal[
'homecuData'][
'scripts'] = ($screenListAry[
'code'] ==
'000' ? $screenListAry[
'data'] : Array());
95 $langListAry = GetSelectLang($dbh, $importValues[
'cu']);
97 $retVal[
'homecuData'][
'lang'] = ($langListAry[
'code'] ==
'000' ? $langListAry[
'data'] : Array(
"en_US" =>
true));
100 LocalPrintJson($retVal);
107 $featureMenuResults = FetchFeatureMenu($dbh, $importValues[
'cu']);
108 if ($featureMenuResults[
'code'] ==
'000') {
109 if (count($featureMenuResults[
'data']) == 0) {
110 $featureMenuResults = FetchDefaultFeatureMenu($dbh, $importValues[
'cu']);
111 if ($featureMenuResults[
'code'] !=
'000') {
113 throw new ErrorException (
"Unable to retrieve menu list");
118 throw new ErrorException (
"Unable to retrieve menu list");
123 if (is_array($featureMenuResults[
'data'])) {
124 $dataStoreMenu = $featureMenuResults[
'data'];
128 $lastParentId =
null;
130 for ($menuIdx = 0; $menuIdx < count($dataStoreMenu); $menuIdx++) {
132 $itemType = HCU_array_key_value(
'MenuItemType', $dataStoreMenu[$menuIdx]);
133 $menuItemId = HCU_array_key_value(
'MenuItemId', $dataStoreMenu[$menuIdx]);
135 if ( $itemType !=
'D' && $lastParentId !== $menuItemId ) {
137 if ($lastItemType ==
'H') {
139 $menuList[] = LocalAddItem($gridOrder++, -9999, $lastParentId);
143 $lastParentId = $menuItemId;
144 $lastItemType = $itemType;
148 $newMenuItem = $dataStoreMenu[$menuIdx];
150 $newMenuItem[
'GridOrder'] = $gridOrder++;
151 $menuList[] = $newMenuItem;
155 if ($lastItemType ==
'H') {
157 $menuList[] = LocalAddItem($gridOrder++, -9999, $lastParentId);
160 $menuList[] = LocalAddItem($gridOrder, -9999,
null);
164 $retVal[
'homecuData'][
'featuremenu'] = $menuList;
169 LocalPrintJson($retVal);
193 $retVal = Array(
"homecuData"=>Array());
195 $updateValues = Array();
196 $importFieldAry = Array (
197 "data_deleted" => array(
'filter' => FILTER_SANITIZE_STRING),
198 "data_updated" => array(
'filter' => FILTER_SANITIZE_STRING)
200 HCU_ImportVars($updateValues,
'', $importFieldAry);
207 $delRecords = HCU_JsonDecode(html_entity_decode($updateValues[
'data_deleted']));
209 $updRecords = HCU_JsonDecode(html_entity_decode($updateValues[
'data_updated']));
213 if (!db_work($dbh, HOMECU_WORK_BEGIN)) {
215 throw new ErrorException (
'Could not start transaction', 950);
220 if (count($delRecords) > 0) {
223 for ($delIdx = 0; $delIdx < count($delRecords); $delIdx++) {
225 if (HCU_array_key_exists(
"MenuItemId", $delRecords[$delIdx])) {
228 $delMenuId = intval(HCU_array_key_value(
"MenuItemId", $delRecords[$delIdx]));
229 if ($delMenuId > 0) {
230 $recordValues = Array(
231 'cu' => $importValues[
'cu'],
232 'menu_item_id' => $delMenuId
236 $updDel = FeatureMenuDeleteItem($dbh, $recordValues);
239 throw new Exception (
'Unable to delete MenuItemId ' . $delMenuId, 951);
250 usort($updRecords,
function ($item1, $item2) {
254 return $item1[
'GridOrder'] <=> $item2[
'GridOrder'];
261 $newParentIdLookup = Array();
262 $platformList = Array(
"D" =>
"dsk",
"M" =>
"mbl",
"A" =>
"app");
263 $cuLangOptions = GetSelectLang($dbh, $importValues[
'cu']);
264 $langList = $cuLangOptions[
'data'];
266 if (count($updRecords) > 0) {
268 for ($recIdx = 0; $recIdx < count($updRecords); $recIdx++) {
269 if (HCU_array_key_exists(
"MenuItemId", $updRecords[$recIdx])) {
270 $curRecord = $updRecords[$recIdx];
278 $menuId = HCU_array_key_value(
"MenuItemId", $curRecord);
279 $parentId = HCU_array_key_value(
"ParentId", $curRecord);
281 if ($menuId != -9999) {
283 $recordValues = Array();
308 $recordValues[
'menu_item_id'] =
'nextval';
310 $recordValues[
'menu_item_id'] = $menuId;
314 $recordValues[
'cu'] = $importValues[
'cu'];
317 $recordValues[
'display_order'] = intval(HCU_array_key_value(
'DisplayOrder', $curRecord));
320 $recordValues[
'menu_item_type'] = HCU_array_key_value(
'MenuItemType', $curRecord);
323 $recordValues[
'feature_code'] = HCU_array_key_value(
'FeatureCode', $curRecord);
326 if ($recordValues[
'menu_item_type'] ==
'D') {
328 $tempParentId = intval(HCU_array_key_value(
'ParentId', $curRecord));
329 if ($tempParentId < 0) {
331 if (HCU_array_key_exists($tempParentId, $newParentIdLookup)) {
332 $tempParentId = HCU_array_key_value($tempParentId, $newParentIdLookup);
335 throw new Exception (
'Unable to relate child to parent', 952);
341 $recordValues[
'parent_item_id'] =
'null';
342 $tempParentId =
'null';
344 $recordValues[
'parent_item_id'] = $tempParentId;
348 $tempMenuPlatform = Array();
349 reset($platformList);
350 foreach ($platformList as $platKey => $platField) {
351 $platFieldName =
'details_platform_' . $platField;
352 if (HCU_array_key_exists($platFieldName, $curRecord)) {
354 if (HCU_array_key_value($platFieldName, $curRecord)) {
355 $tempMenuPlatform[] = $platKey;
360 $recordValues[
'menu_item_platform'] = HCU_JsonEncode($tempMenuPlatform);
363 $tempMenuAttr = Array();
369 foreach ($langList as $langKey => $langVal) {
372 $tempLang[$langKey] = HCU_array_key_value(
'details_display_' . $langKey, $curRecord);
375 $tempMenuAttr[
'display'] = $tempLang;
380 if ($recordValues[
'menu_item_type'] !=
'D') {
381 $tempIcon = HCU_array_key_value(
'details_fa_icon', $curRecord);
383 $tempMenuAttr[
'fa-icon'] = $tempIcon;
384 $tempMenuAttr[
'collapseGroup'] = (HCU_array_key_value(
'details_collapse_group', $curRecord) == 1 ? 1 : 0);
386 $tempMenuAttr[
"memAcctFilter"]= HCU_array_key_exists(
"details_memacct_filter", $curRecord) ? $curRecord[
"details_memacct_filter"] :
"";
389 if ($recordValues[
'menu_item_type'] !=
'H') {
391 $tempMenuAttr[
'href'] = HCU_array_key_value(
'details_href', $curRecord);
394 $tempMenuAttr[
'hrefUrlQuery'] = (HCU_array_key_value(
'details_hrefUrlQuery', $curRecord) == 1 ? 1 : 0);
397 $tempMenuAttr[
'target'] = (HCU_array_key_value(
'details_target', $curRecord) == 1 ? 1 : 0);
400 $tempMenuAttr[
'externalMsg'] = (HCU_array_key_value(
'details_message', $curRecord) == 1 ? 1 : 0);
403 $tempMenuAttr[
'hrefExtraParam'] = HCU_array_key_value(
'details_hrefExtraParam', $curRecord);
406 $recordValues[
'menu_item_attr'] = HCU_JsonEncode($tempMenuAttr);
412 $insertRow = FeatureMenuUpdateItem($dbh, ($menuId < 0 ?
"INSERT" :
"UPDATE"), $recordValues);
413 if ($insertRow ===
false) {
414 throw new Exception (
'Unable to insert Menu Item', 953);
417 $tempMenuId = intval(HCU_array_key_value(
'menu_item_id', $insertRow));
424 $newParentIdLookup[$menuId] = $tempMenuId;
438 if (db_work($dbh, HOMECU_WORK_COMMIT)) {
440 $status[] =
"Menu Updated";
441 if ($recCountDel > 0) {
442 $status[] =
"$recCountDel Item(s) Deleted";
444 if ($recCountIns > 0) {
445 $status[] =
"$recCountIns Item(s) Inserted";
447 if ($recCountUpd > 0) {
448 $status[] =
"$recCountUpd Item(s) Updated";
450 $retVal[
'homecuData'][
'status'] = $status;
452 $retVal[
'homecuData'][
'featuresave'][
'updateId'] = $newParentIdLookup;
454 LocalPrintJson($retVal);
456 throw new Exception (
'Unable to commit!', 954);
460 }
catch (Exception $errWork) {
463 $rollbackWork = db_work($dbh, HOMECU_WORK_ROLLBACK);
464 throw new ErrorException (
"Error during update!", 955);
469 $retVal[
'homecuData'][
'featureignore'] =
true;
470 LocalPrintJson($retVal);
475 throw new ErrorException (
'Invalid API Action', 910);
480 }
catch ( Error $e) {
484 }
catch (ErrorException $e) {
487 $retVal[
'homecuData'] = Array();
488 $retVal[
'homecuErrors'] = Array($e->getMessage());
490 LocalPrintJson($retVal);
500 function LocalPrintJson($jsonDataArray) {
502 header(
'Content-type: application/json');
504 print HCU_JsonEncode(Array(
"Results" => Array($jsonDataArray)));
515 function LocalAddItem($pGridOrder, $pMenuItemId, $pParentId) {
517 return Array(
'GridOrder' => $pGridOrder,
'MenuItemId' => $pMenuItemId,
'ParentId' => $pParentId);