18 function _ValidateParseUserAuditRow($row, $Cu, $dbh) {
20 if (!isset($row) || !is_array($row)) {
21 throw new exception (
"Row is invalid.", 2);
23 if (!isset($Cu) || !is_string($Cu)) {
24 throw new exception (
"Cu is invalid.", 3);
27 throw new exception (
"Dbh is invalid.", 4);
29 if (!HCU_array_key_exists(
"before", $row) || !HCU_array_key_exists(
"after", $row)) {
30 throw new exception (
"Row is not valid.", 1);
33 $auditaction = HCU_array_key_value(
"actioncode", $row);
35 if (in_array($auditaction, array(
"U_DEL_U",
"U_DEL_G",
"U_DEL_A"))) {
39 $before = HCU_JsonDecode($row[
"before"],
false);
40 if (!is_array($before)) {
42 }
else if (!HCU_array_key_exists(
"deldata", $before)) {
43 throw new exception (
"Delete audit is invalid.", 5);
48 $before = HCU_JsonDecode($row[
"before"],
false);
49 if (!is_array($before)) {
50 throw new exception(
"Before JSON is not valid.", 13);
52 $after = HCU_JsonDecode($row[
"after"],
false);
53 if (!is_array($after)) {
54 throw new exception(
"After JSON is not valid.", 14);
60 $returnArray = array(
"status" =>
"000",
"error" =>
"",
"data" => array(
"details" => $details,
"before" => $before,
"after" => $after,
"isDelete" => $isDelete,
"auditaction" => $auditaction));
61 }
catch (exception $e) {
62 $returnArray = array(
"status" => $e->getCode(),
"error" => $e->getMessage());
81 function _ValidateTable ($table, $after, $tableDefinition) {
84 if (!isset($table) || !is_string($table)) {
85 throw new exception (
"Table is invalid.", 1);
87 if (!isset($after) || !is_array($after)) {
88 throw new exception (
"After is invalid.", 2);
90 if (!isset($tableDefinition) || !is_array($tableDefinition)) {
91 throw new exception (
"Table definition is invalid.", 3);
94 $afterTable = HCU_array_key_exists($table, $after) ? $after[$table] :
null;
96 if (!isset($afterTable) || !is_array($afterTable)) {
97 throw new exception(
"Table mismatch.", 15);
100 $label = isset($tableDefinition[
"_label"]) ? $tableDefinition[
"_label"] : $table;
101 $newTableRow = array(
"table" => $table,
"label" => $label,
"rows" => array());
103 $dontDoTableForeach =
false;
105 $returnArray = array(
"status" =>
"000",
"error" =>
"",
"data" => array(
"afterTable" => $afterTable,
"newTableRow" => $newTableRow,
"dontDoTableForeach" => $dontDoTableForeach));
106 }
catch (exception $e) {
107 $returnArray = array(
"status" => $e->getCode(),
"error" => $e->getMessage());
126 function _DoGroupAudit ($table, $newTableRow, $changedRows, $afterTable) {
128 if (!isset($table) || $table !==
"group") {
129 throw new exception (
"Table isn't \"group\".", 4);
131 if (!isset($newTableRow) || !is_array($newTableRow)) {
132 throw new exception (
"New table row isn't valid.", 5);
134 if (!isset($changedRows) || !is_array($changedRows)) {
135 throw new exception (
"Changed Rows isn't valid.", 6);
137 if (!isset($afterTable) || !is_array($afterTable)) {
138 throw new exception (
"After table isn't valid.", 7);
140 $dontDoTableForeach =
true;
145 foreach($changedRows as $changedRow) {
146 $thisGroupName = HCU_array_key_value(
"group_name", $changedRow);
147 if ($thisGroupName) {
150 if ($groupName ===
false && $thisGroupName !==
false) {
151 $groupName = $thisGroupName;
156 foreach($afterTable as $changedRow) {
157 $thisGroupName = HCU_array_key_value(
"group_name", $changedRow);
158 if ($thisGroupName) {
161 if ($groupName ===
false && $thisGroupName !==
false) {
162 $groupName = $thisGroupName;
167 if ($groupName !==
false) {
168 $newTableRow[
"altDesc"] =
"<b>$groupName</b> " . ($isAdded ? ($isRemoved ?
"was changed." :
"was added.") : ($isRemoved ?
"was removed." :
"was changed."));
169 $dontDoTableForeach =
true;
171 throw new exception (
"Group audit is invalid.", 3);
174 $returnArray = array(
"status" =>
"000",
"error" =>
"",
"data" => array(
"newTableRow" => $newTableRow,
"dontDoTableForeach" => $dontDoTableForeach));
175 }
catch (exception $e) {
176 $returnArray = array(
"status" => $e->getCode(),
"error" => $e->getMessage());
195 function ParseUserAuditRow($row, $Cu, $dbh, $changedOnly =
false) {
199 $results = _ValidateParseUserAuditRow($row, $Cu, $dbh);
201 if ($results[
"status"] !==
"000") {
202 throw new exception (
"User Audit Row is invalid.", 1);
204 extract($results[
"data"]);
207 $deldata = HCU_array_key_value(
"deldata", $before);
209 if ($auditaction ==
"U_DEL_U") {
211 if ($deldata ===
false) {
212 $msg =
"User was deleted.";
213 }
else if (!HCU_array_key_exists(
"user_name", $deldata)) {
214 throw new exception (
"Delete user audit is invalid.", 4);
216 $msg =
"User <b>" . trim($deldata[
"user_name"]) .
"</b> was deleted.";
219 }
else if ($auditaction ==
"U_DEL_G") {
221 if ($deldata ===
false) {
222 $msg =
"Group was deleted.";
223 }
else if (!HCU_array_key_exists(
"group_name", $deldata)) {
224 throw new exception (
"Delete group audit is invalid.", 5);
226 $msg =
"Group <b>" . trim($deldata[
"group_name"]) .
"</b> was deleted.";
229 }
else if ($auditaction ==
"U_DEL_A") {
231 if ($deldata ===
false) {
232 $msg =
"Account was deleted.";
233 }
else if (!HCU_array_key_exists(
"accountnumber", $deldata)) {
234 throw new exception (
"Delete account audit is invalid.", 6);
236 $msg =
"Account <b>" . trim($deldata[
"accountnumber"]) .
"</b> was deleted.";
242 throw new exception (
"Delete audit is invalid.", 7);
245 $newTableRow[
"altDesc"] = $msg;
246 $details[] = $newTableRow;
248 foreach($before as $table => $changedRows) {
249 $tableDefinition = GetTableDefinition (array(
"cu" => $Cu), $table)[$table];
251 $results = _ValidateTable ($table, $after, $tableDefinition);
252 if ($results[
"status"] !==
"000") {
253 throw new exception (
"Table row is invalid.", 2);
255 extract($results[
"data"]);
259 $results = _DoGroupAudit ($table, $newTableRow, $changedRows, $afterTable);
260 if ($results[
"status"] !==
"000") {
261 throw new exception (
"Group audit is invalid.", 3);
263 extract($results[
"data"]);
267 if (!$dontDoTableForeach) {
268 $results = ParseUserAuditTable($changedRows, $afterTable, $tableDefinition, $table, $dbh, $Cu, $changedOnly);
269 if ($results[
"status"] !==
"000") {
270 throw new exception($results[
"error"], $results[
"status"]);
272 $newTableRow[
"rows"] = $results[
"returnedRows"];
273 $newTableRow[
"type"] = $results[
"returnedType"];
277 $details[] = $newTableRow;
281 $returnArray = array(
"status" =>
"000",
"error" =>
"",
"details" => $details);
282 }
catch (exception $e) {
283 $returnArray = array(
"status" => $e->getCode(),
"error" => $e->getMessage());
303 function _ValidateParseUserAuditTable ($changedRows, $afterTable, $tableDefinition, $table, $dbh, $Cu) {
305 if (!isset($changedRows) || !is_array($changedRows)) {
306 throw new exception (
"Changed rows is not valid.", 1);
308 if (!isset($afterTable) || !is_array($afterTable)) {
309 throw new exception (
"After table is not valid.", 2);
311 if (!isset($tableDefinition) || !is_array($tableDefinition)) {
312 throw new exception (
"Table definition is not valid.", 3);
314 if (!isset($table) || !is_string($table)) {
315 throw new exception (
"Table is not valid.", 4);
318 throw new exception (
"Dbh is not valid.", 5);
320 if (!isset($Cu) || !is_string($Cu)) {
321 throw new exception (
"Cu is not valid.", 6);
324 $returnArray = array(
"status" =>
"000",
"error" =>
"");
325 }
catch (exception $e) {
326 $returnArray = array(
"status" => $e->getCode(),
"error" => $e->getMessage());
350 function ParseUserAuditTable($changedRows, $afterTable, $tableDefinition, $table, $dbh, $Cu, $changedOnly) {
356 $results = _ValidateParseUserAuditTable ($changedRows, $afterTable, $tableDefinition, $table, $dbh, $Cu);
357 if ($results[
"status"] !==
"000") {
358 throw new exception (
"Validate failed.", 1);
361 case "memberacctrights":
362 $results = GetMemberAcctRightsDescrs($changedRows, $afterTable);
363 if ($results[
"status"] !==
"000") {
364 throw new exception($results[
"error"], $results[
"status"]);
366 $returnedType =
"desc";
367 $returnedRows = $results[
"returnedRows"];
375 foreach($changedRows as $j => $beforeRow) {
376 $afterRow = $afterTable[$j];
378 if (!isset($afterRow)) {
379 throw new exception(
"Table mismatch.", 16);
382 $beforeEmpty = count($beforeRow) == 0;
383 $afterEmpty = count($afterRow) == 0;
384 if ($beforeEmpty && $afterEmpty) {
388 $results = ParseAuditValueRow($beforeEmpty, $afterEmpty, $afterRow, $beforeRow, $tableDefinition, $table, $dbh, $Cu, $changedOnly);
389 if ($results[
"status"] !==
"000") {
390 throw new exception($results[
"error"], $results[
"status"]);
392 $combinedRow = $results[
"combinedRow"];
394 $type = $afterEmpty ?
"remove" : ($beforeEmpty ?
"add" :
"update");
395 $combinedRow = [
"type" => $type,
"values" => $combinedRow];
396 $tableTypeMap[$type] = $type;
398 $returnedRows[] = $combinedRow;
401 $returnedType = count($tableTypeMap) > 1 ?
"mixed" : current($tableTypeMap);
405 $returnArray = [
"status" =>
"000",
"error" =>
"",
"returnedRows" => $returnedRows,
"returnedType" => $returnedType];
406 }
catch (exception $e) {
407 $returnArray = [
"status" => $e->getCode(),
"error" => $e->getMessage()];
424 function GetMemberAcctRightsDescrs($changedRows, $afterTable) {
425 $returnedRows = array();
428 if (!isset($changedRows) || !is_array($changedRows)) {
429 throw new exception (
"Changed Rows is not valid.", 1);
431 if (!isset($afterTable) || !is_array($afterTable)) {
432 throw new exception (
"After table is not valid.", 2);
434 foreach($changedRows as $beforeRow) {
435 if (count($beforeRow) == 0) {
438 $right = HCU_array_key_value(
"whichright", $beforeRow);
439 $accountnumber = HCU_array_key_value(
"accountnumber", $beforeRow);
440 if ($right ===
false) {
441 throw new exception (
"Before right is not found.", 5);
443 if ($accountnumber ===
false) {
444 throw new exception (
"Before accountnumber is not found.", 10);
446 $key = trim($accountnumber) .
"|" . trim($right);
448 $rightMap[$key] = array(
"before" => $beforeRow);
451 foreach($afterTable as $afterRow) {
452 if (count($afterRow) == 0) {
455 $right = HCU_array_key_value(
"whichright", $afterRow);
456 $accountnumber = HCU_array_key_value(
"accountnumber", $afterRow);
457 if ($right ===
false) {
458 throw new exception (
"After right is not found.", 6);
460 if ($accountnumber ===
false) {
461 throw new exception (
"After accountnumber is not found.", 11);
463 $key = trim($accountnumber) .
"|" . trim($right);
464 if (!HCU_array_key_exists($key, $rightMap)) {
465 $rightMap[$key] = array(
"before" => array(),
"after" => $afterRow);
467 $rightMap[$key][
"after"] = $afterRow;
472 if (count($rightMap) == 0) {
473 throw new exception (
"Member acct audit doesn't have any information.", 9);
475 foreach($rightMap as $key => $rightStuff) {
476 $rightRightMap = array(
"ACCESS" =>
"access",
"ES" =>
"eStatement",
"RDC" =>
"RDC",
"BP" =>
"BillPay");
478 $beforeRow = HCU_array_key_value(
"before", $rightStuff);
479 $afterRow = HCU_array_key_value(
"after", $rightStuff);
480 $beforeEmpty = $beforeRow ===
false || count($beforeRow) == 0;
481 $afterEmpty = $afterRow ===
false || count($afterRow) == 0;
484 $beforePlatform = $beforeEmpty || !HCU_array_key_exists(
"platform", $beforeRow) ? array() : (!isset($beforeRow[
"platform"]) ? array(
"A",
"D") : HCU_JsonDecode($beforeRow[
"platform"]));
485 $afterPlatform = $afterEmpty || !HCU_array_key_exists(
"platform", $afterRow) ? array() : (!isset($afterRow[
"platform"]) ? array(
"A",
"D") : HCU_JsonDecode($afterRow[
"platform"]));
487 foreach($beforePlatform as $platformType) {
488 if (!in_array($platformType, array(
"A",
"D"))) {
489 throw new exception (
"Before platform is invalid.", 7);
493 foreach($afterPlatform as $platformType) {
494 if (!in_array($platformType, array(
"A",
"D"))) {
495 throw new exception (
"After platform is invalid.", 8);
499 $whichright = explode(
"|", $key);
500 $whichright = $whichright[1];
502 $right = HCU_array_key_exists($whichright, $rightRightMap) ? $rightRightMap[$whichright] :
false;
503 $account = HCU_array_key_exists(
"accountnumber", $beforeRow) ? $beforeRow[
"accountnumber"] : HCU_array_key_value(
"accountnumber", $afterRow);
505 if ($right ===
false) {
506 throw new exception (
"Right is not valid.", 3);
508 if ($account ===
false) {
509 throw new exception (
"Account is not valid.", 4);
512 $altDesc =
"<b>" . trim($account) .
"</b>: ";
513 if ($whichright ==
"ACCESS") {
514 $beforeAllowed = HCU_array_key_value(
"allowed", $beforeRow) ==
"t";
515 $afterAllowed = HCU_array_key_value(
"allowed", $afterRow) ==
"t";
516 $added = ($beforeEmpty && !$afterEmpty) || (!$beforeAllowed && $afterAllowed);
517 $removed = (!$beforeEmpty && $afterEmpty) || ($beforeAllowed && !$afterAllowed);
520 $altDesc .=
"Added $right rights.";
521 }
else if ($removed) {
522 $altDesc .=
"Removed $right rights.";
527 }
else if ($beforeEmpty) {
529 $hasDesktop = in_array(
"D", $afterPlatform);
530 $hasApps = in_array(
"A", $afterPlatform);
531 $altDesc .=
"Added $right rights" . ($hasDesktop ? ($hasApps ?
"." :
" for desktop.") : ($hasApps ?
" for the apps." :
"."));
535 $hasDesktop = in_array(
"D", $beforePlatform);
536 $hasApps = in_array(
"A", $beforePlatform);
537 $altDesc .=
"Removed $right rights" . ($hasDesktop ? ($hasApps ?
"." :
" for desktop.") : ($hasApps ?
" for the apps." :
"."));
539 $hasBDesktop = in_array(
"D", $beforePlatform);
540 $hasBApps = in_array(
"A", $beforePlatform);
541 $hasADesktop = in_array(
"D", $afterPlatform);
542 $hasAApps = in_array(
"A", $afterPlatform);
543 $fromDesc = $hasBDesktop ? ($hasBApps ?
"all" :
"desktop") : ($hasBApps ?
"apps" :
"none");
544 $toDesc = $hasADesktop ? ($hasAApps ?
"all" :
"desktop") : ($hasAApps ?
"apps" :
"none");
545 $altDesc .=
"Changed $right rights from $fromDesc to $toDesc.";
549 $returnedRows[] = array(
"type" =>
"desc",
"value" => array(),
"altDesc" => $altDesc);
552 $returnArray = array(
"status" =>
"000",
"error" =>
"",
"returnedRows" => $returnedRows);
553 }
catch (exception $e) {
554 $returnArray = array(
"status" => $e->getCode(),
"error" => $e->getMessage());
578 function ParseAuditValueRow($beforeEmpty, $afterEmpty, $afterRow, $beforeRow, $tableDefinition, $table, $dbh, $Cu, $changedOnly) {
580 $combinedRow = array();
585 if (!isset($afterRow) || !is_array($afterRow)) {
586 throw new exception (
"After row is not valid.", 1);
588 foreach($afterRow as $colName => $colValue) {
590 $colDef = $tableDefinition[
"_cols"][$colName];
591 if (!isset($colDef)) {
592 throw new exception(
"Table mismatch.", 17);
595 $permTable = $table ===
"cuusers" ?
"user" : $table;
596 $visibility = GetAuditColVisibility($colName, $permTable);
598 if ($visibility ==
"none") {
601 $restrictVisibility = $visibility ==
"hidden";
603 $label = isset($colDef[
"label"]) ? $colDef[
"label"] : $colName;
604 $results = GetCustomValue($colName, $permTable,
null, $colValue, $restrictVisibility, $label, $dbh, $Cu,
false);
606 if ($results[
"isCustom"]) {
608 foreach($results[
"customValueArray"] as $row) {
610 $combinedRow[] = $row;
614 $combinedRow = array_merge($combinedRow, $results[
"customValueArray"]);
619 $afterValue = !isset($colValue) || trim($colValue) ==
"" ? true : $colValue;
624 $afterValue = $afterValue ===
true ?
"--" : trim($afterValue);
628 switch($colDef[
"type"]) {
630 $beforeValue = GetAuditTime($dbh, $beforeValue, $Cu,
false, $tz);
631 $afterValue = GetAuditTime($dbh, $afterValue, $Cu,
false, $tz);
633 case DBTYPE_TIMESTAMPTZ:
634 case DBTYPE_TIMESTAMP:
635 case DBTIMESTAMP_USENOW:
636 $beforeValue = GetAuditTime($dbh, $beforeValue, $Cu,
true, $tz);
637 $afterValue = GetAuditTime($dbh, $afterValue, $Cu,
true, $tz);
642 if (!$changedOnly || ($changedOnly && !$restrictVisibility)) {
643 $combinedRow[] = array(
"col" => trim($colName),
"before" => $beforeValue,
"after" => $afterValue,
"label" => trim($label),
"same" => $restrictVisibility);
652 if (!isset($beforeRow) || !is_array($beforeRow)) {
653 throw new exception (
"Before row is not valid.", 2);
655 foreach($beforeRow as $colName => $colValue) {
656 $colDef = $tableDefinition[
"_cols"][$colName];
657 if (!isset($colDef)) {
658 throw new exception(
"Table mismatch.", 18);
662 $permTable = $table ===
"cuusers" ?
"user" : $table;
663 $visibility = GetAuditColVisibility($colName, $permTable);
664 if ($visibility ==
"none") {
667 $restrictVisibility = $visibility ==
"hidden";
669 $beforeValue = trim($colValue) ==
"" ?
"--" : $colValue;
674 if (!HCU_array_key_exists($colName, $afterRow)) {
677 }
else if (trim($afterRow[$colName]) ==
"") {
679 $same = strcmp($beforeValue, $afterValue) === 0;
681 $afterValue = trim($afterRow[$colName]);
682 $same = strcmp(trim($beforeValue), trim($afterValue)) === 0;
686 $label = isset($colDef[
"label"]) ? $colDef[
"label"] : $colName;
687 $results = GetCustomValue($colName, $permTable, $colValue, $afterValue, $afterEmpty ? $restrictVisibility :
false, $label, $dbh, $Cu, $same);
689 if ($results[
"isCustom"]) {
691 foreach($results[
"customValueArray"] as $row) {
693 $combinedRow[] = $row;
697 $combinedRow = array_merge($combinedRow, $results[
"customValueArray"]);
704 switch($colDef[
"type"]) {
706 $beforeValue = GetAuditTime($dbh, $beforeValue, $Cu,
false, $tz);
707 $afterValue = GetAuditTime($dbh, $afterValue, $Cu,
false, $tz);
709 case DBTYPE_TIMESTAMPTZ:
710 case DBTYPE_TIMESTAMP:
711 case DBTIMESTAMP_USENOW:
712 $beforeValue = GetAuditTime($dbh, $beforeValue, $Cu,
true, $tz);
713 $afterValue = GetAuditTime($dbh, $afterValue, $Cu,
true, $tz);
717 $show = $visibility ==
"always" ? true : ($afterEmpty ? !$restrictVisibility : !$same);
718 if (!$changedOnly || ($changedOnly && $show)) {
719 $combinedRow[] = array(
"col" => trim($colName),
"before" => $beforeValue,
"after" => $afterValue,
"label" => trim($label),
"same" => !$show);
725 $returnArray = array(
"status" =>
"000",
"error" =>
"",
"combinedRow" => $combinedRow);
726 }
catch (exception $e) {
727 $returnArray = array(
"status" => $e->getCode(),
"error" => $e->getMessage());
746 function GetAuditColVisibility($col, $table) {
747 $key =
"$table | $col";
748 $visibility =
"visible";
750 case "user | group_id":
751 case "user | contact":
752 case "user | user_id":
753 case "user | primary_account":
754 case "user | challenge_quest_id":
755 case "user | schedule_code":
756 case "user | pkattempt":
757 case "user | is_group_primary":
758 case "useraccounts | display_order":
759 case "useraccounts | user_id":
760 case "useraccounts | display_qty":
761 case "useraccounts | display_qty_type":
762 case "useraccount | display_order":
763 case "useraccount | user_id":
764 case "useraccount | display_qty":
765 case "useraccount | display_qty_type":
766 case "memberacct | primary_user":
767 case "memberacct | balance_stamp":
768 case "memberacct | balance_attempt":
769 case "memberacct | allowenroll":
770 case "userrights | user_id":
771 case "usercontact | contact_id":
772 $visibility =
"none";
774 case "user | user_name":
776 case "useraccounts | accountnumber":
777 case "useraccounts | accounttype":
778 case "useraccounts | display_name":
779 case "useraccounts | certnumber":
780 case "useraccount | accountnumber":
781 case "useraccount | accounttype":
782 case "useraccount | display_name":
783 case "useraccount | certnumber":
784 case "alert | accountnumber":
785 case "alert | accounttype":
786 case "alert | certnumber":
787 case "alert | emailtype":
788 case "alert | notifyto":
789 case "alert | notifymsg":
790 case "alert | lastalert":
791 case "alert | alertstatus":
792 $visibility =
"visible";
794 case "userrights | feature_code":
795 $visibility =
"always";
797 case substr($key, 0, strlen(
"alert | ")) ==
"alert | ":
798 $visibility =
"none";
800 case substr($key, 0, strlen(
"user | ")) ==
"user | ":
801 case substr($key, 0, strlen(
"useraccounts | ")) ==
"useraccounts | ":
802 case substr($key, 0, strlen(
"useraccount | ")) ==
"useraccount | ":
803 case substr($key, 0, strlen(
"userrights | ")) ==
"userrights | ":
804 $visibility =
"hidden";
807 $visibility =
"visible";
829 function GetCustomValue($colName, $table, $beforeValue, $afterValue, $restrictVisibility, $label, $dbh, $Cu, $same) {
830 $key =
"$table | $colName";
832 $customValueArray = array();
833 $beforeEmpty = !isset($beforeValue) || $beforeValue ==
"--" || $beforeValue ==
"";
834 $afterEmpty = !isset($afterValue) || $afterValue ==
"--" || $afterValue ==
"";
837 case "user | userflags":
838 $before = $beforeEmpty ?
"" : (GetUserFlagsValue(
"MEM_FORCE_RESET") & intval($beforeValue) == 0 ?
"N" :
"Y");
839 $after = $afterEmpty ?
"" : (GetUserFlagsValue(
"MEM_FORCE_RESET") & intval($afterValue) == 0 ?
"N" :
"Y");
840 $show = $restrictVisibility ? false : !$afterEmpty && $before != $after;
841 $customValueArray[] = array(
"label" =>
"Force Reset",
"before" => $before,
"after" => $after,
"same" => !$show);
842 $before = $beforeEmpty ?
"" : (GetUserFlagsValue(
"MEM_ASKBPAY") & intval($beforeValue) == 0 ?
"N" :
"Y");
843 $after = $afterEmpty ?
"" : (GetUserFlagsValue(
"MEM_ASKBPAY") & intval($afterValue) == 0 ?
"N" :
"Y");
844 $show = $restrictVisibility ? false : !$afterEmpty && $before != $after;
845 $customValueArray[] = array(
"label" =>
"Ask BillPay",
"before" => $before,
"after" => $after,
"same" => !$show);
847 case "useraccount | recordtype":
848 case "useraccounts | recordtype":
849 $beforeValue = in_array($beforeValue, array(
"D",
"T")) ?
"Deposit" : (in_array($beforeValue, array(
"L",
"P")) ?
"Loan" : $beforeValue);
850 $afterValue = in_array($afterValue, array(
"D",
"T")) ?
"Deposit" : (in_array($afterValue, array(
"L",
"P")) ?
"Loan" : $afterValue);
851 $show = $restrictVisibility ? false : !$afterEmpty && $beforeValue != $afterValue;
852 $customValueArray[] = array(
"col" => trim($colName),
"before" => $beforeValue,
"after" => $afterValue,
"label" => trim($label),
"same" => !$show);
854 case "user | mfaquest":
855 $before = $beforeEmpty ? array() : HCU_JsonDecode($beforeValue);
856 $after = $afterEmpty ? array() : HCU_JsonDecode($afterValue);
858 $beforeAnswerArray = HCU_array_key_value(
"answers", $before);
859 $afterAnswerArray = HCU_array_key_value(
"answers", $after);
860 $challengeChange = array();
861 if ($beforeAnswerArray !==
false || $afterAnswerArray !==
false) {
862 if ($beforeAnswerArray !==
false) {
863 foreach($beforeAnswerArray as $key => $value) {
864 $challengeChange [$key] = array(
"before" => $value);
868 if ($afterAnswerArray !==
false) {
869 foreach($afterAnswerArray as $key => $value) {
870 if (!HCU_array_key_exists($key, $challengeChange)) {
871 $challengeChange [$key] = array(
"after" => $value);
873 $challengeChange [$key][
"after"] = $value;
879 foreach($challengeChange as $key => $row) {
880 if (!HCU_array_key_exists(
"before", $row)) {
881 $challengeChange [$key] [
"before"] =
"";
882 }
else if (!isset($row[
"before"]) || trim($row[
"before"]) ==
"") {
883 $challengeChange [$key] [
"before"] =
"--";
886 if (!HCU_array_key_exists(
"after", $row)) {
887 $challengeChange [$key] [
"after"] =
"";
888 }
else if (!isset($row[
"after"]) || trim($row[
"after"]) ==
"") {
889 $challengeChange [$key] [
"after"] =
"--";
892 $challengeChange [$key] [
"label"] =
"Challenge Question #$key";
893 $show = $restrictVisibility ? false : !$afterEmpty && $challengeChange [$key] [
"before"] != $challengeChange [$key] [
"after"];
894 $challengeChange [$key] [
"same"] = !$show;
898 $beforeMFADate = HCU_array_key_value(
"mfadate", $before);
899 $afterMFADate = HCU_array_key_value(
"mfadate", $after);
902 if ($beforeMFADate !==
false || $afterMFADate !==
false) {
904 if ($beforeMFADate !==
false) {
905 if (!isset($beforeMFADate) || trim($beforeMFADate) ==
"") {
907 }
else if (intval($beforeMFADate) == 0) {
910 $beforeTime = GetAuditTime($dbh, $beforeMFADate, $Cu,
true, $tz);
913 $dateArray = array(
"before" => $beforeTime);
916 if ($afterMFADate !==
false) {
917 if (!isset($afterMFADate) || trim($afterMFADate) ==
"") {
919 }
else if (intval($afterMFADate) == 0) {
922 $afterTime = GetAuditTime($dbh, $afterMFADate, $Cu,
true, $tz);
925 if (isset($dateArray)) {
926 $dateArray[
"after"] = $afterTime;
928 $dateArray = array(
"after" => $afterTime);
932 if (!HCU_array_key_exists(
"before", $dateArray)) {
933 $dateArray[
"before"] =
"";
936 if (!HCU_array_key_exists(
"after", $dateArray)) {
937 $dateArray[
"after"] =
"";
940 $dateArray[
"label"] =
"MFA Date";
941 $show = $restrictVisibility ? false : !$afterEmpty && $dateArray[
"before"] != $dateArray[
"after"];
942 $dateArray[
"same"] = !$show;
945 if (count($challengeChange) > 0) {
946 $customValueArray = array_values($challengeChange);
948 if (isset($dateArray)) {
949 $customValueArray[] = $dateArray;
952 case "usercontact | phones":
953 $before = $beforeEmpty ? array() : HCU_JsonDecode($beforeValue);
954 $after = $afterEmpty ? array() : HCU_JsonDecode($afterValue);
955 $phoneArray = array();
956 if ($before !==
false && HCU_array_key_exists(
"mobile", $before) && is_array($before[
"mobile"])) {
957 foreach($before[
"mobile"] as $phone) {
958 $key = preg_replace(
'/\D+/',
'', $phone);
959 if (!HCU_array_key_exists($key, $phoneArray)) {
960 $phoneArray[$key] = array(
"before" => $phone);
964 if ($after !==
false && HCU_array_key_exists(
"mobile", $after) && is_array($after[
"mobile"])) {
965 foreach($after[
"mobile"] as $phone) {
966 $key = preg_replace(
'/\D+/',
'', $phone);
967 if (!HCU_array_key_exists($key, $phoneArray)) {
968 $phoneArray[$key] = array(
"after" => $phone);
970 $phoneArray[$key][
"after"] = $phone;
976 foreach($phoneArray as $key => $row) {
977 $phoneArray[$key][
"label"] =
"Phone #" . $index++;
978 if (!isset($row[
"before"])) {
979 $phoneArray[$key][
"before"] =
"--";
982 if (!isset($row[
"after"])) {
983 $phoneArray[$key][
"after"] =
"--";
985 $show = $restrictVisibility ? false : !$afterEmpty && $phoneArray[$key][
"before"] != $phoneArray[$key][
"after"];
986 $phoneArray[$key][
"same"] = !$show;
988 $customValueArray = array_values($phoneArray);
990 case "user | passwd":
991 $passwordMask =
"********";
992 $show = $restrictVisibility ? false : !$same;
993 $before = $beforeValue ==
"--" ?
"--" : $passwordMask;
994 $after = $afterValue ==
"--" ?
"--" : $passwordMask;
996 $customValueArray[] = array(
"col" => trim($colName),
"before" => $before,
"after" => $after,
"label" => trim($label),
"same" => !$show);
998 case "user | msg_tx":
999 $before = $beforeEmpty ? 0 : GetMsgTxValue(
"MSGTX_FORCE_EM") & intval($beforeValue);
1000 $after = $afterEmpty ? 0 : GetMsgTxValue(
"MSGTX_FORCE_EM") & intval($afterValue);
1001 $before = $before === 0 ?
"N" :
"Y";
1002 $after = $after === 0 ?
"N" :
"Y";
1003 $show = $restrictVisibility ? false : !$afterEmpty && $before != $after;
1004 $customValueArray[] = array(
"label" =>
"Force Email",
"before" => $before,
"after" => $after,
"same" => !$show);
1006 case "alert | alerttype":
1008 switch ($beforeValue) {
1010 $before =
"Balance";
1013 $before =
"Transaction";
1022 $before = $beforeValue;
1025 switch ($afterValue) {
1030 $after =
"Transaction";
1039 $after = $afterValue;
1042 $show = $restrictVisibility ? false : !$same;
1043 $customValueArray[] = array(
"col" => trim($colName),
"before" => $before,
"after" => $after,
"label" => trim($label),
"same" => !$show);
1045 case "alert | emailtype":
1046 switch ($beforeValue) {
1054 $before = $beforeValue;
1057 switch ($afterValue) {
1065 $after = $afterValue;
1068 $show = $restrictVisibility ? false : !$same;
1069 $customValueArray[] = array(
"col" => trim($colName),
"before" => $before,
"after" => $after,
"label" => trim($label),
"same" => !$show);
1072 case "alert | alertstatus":
1073 switch ($beforeValue) {
1081 $before = $beforeValue;
1084 switch ($afterValue) {
1092 $after = $afterValue;
1095 $show = $restrictVisibility ? false : !$same;
1096 $customValueArray[] = array(
"col" => trim($colName),
"before" => $before,
"after" => $after,
"label" => trim($label),
"same" => !$show);
1099 case "useraccount | view_balances":
1100 case "useraccount | view_transactions":
1101 case "useraccount | int_deposit":
1102 case "useraccount | int_withdraw":
1103 case "useraccount | ext_deposit":
1104 case "useraccount | ext_withdraw":
1105 case "useraccounts | view_balances":
1106 case "useraccounts | view_transactions":
1107 case "useraccounts | int_deposit":
1108 case "useraccounts | int_withdraw":
1109 case "useraccounts | ext_deposit":
1110 case "useraccounts | ext_withdraw":
1111 switch ($beforeValue) {
1119 $before = $beforeValue;
1122 switch ($afterValue) {
1130 $after = $afterValue;
1133 $show = $restrictVisibility ? false : !$same;
1134 $customValueArray[] = array(
"col" => trim($colName),
"before" => $before,
"after" => $after,
"label" => trim($label),
"same" => !$show);
1138 $customValueArray = array();
1142 return array(
"isCustom" => $isCustom,
"customValueArray" => $customValueArray);
1157 function GetAuditTime($dbh, $value, $Cu, $setTimezone, &$tz) {
1158 if ($value ==
"" || $value ==
"--") {
1161 if ($setTimezone && !isset($tz)) {
1162 $tz = GetCreditUnionTimezone($dbh, $Cu);
1166 if(is_numeric($value)) {
1167 $value =
"@" . intval($value);
1169 $dateTime =
new DateTime($value);
1172 if ($setTimezone && isset($value)) {
1173 $dateTime->setTimezone(
new DateTimeZone($tz));
1176 $format = $setTimezone ?
"n/j/Y g:i A" :
"n/j/Y";
1178 return $dateTime->format($format);