1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-23 14:00:56 +01:00

Fix Herald to accept new JSON encoding of sparse arrays

Summary: JX.JSON was recently changed to use JSON.stringify (the native
implementation) if it is available. The native implementation has a behavioral
difference from the Javelin implementation, in that it does not compact sparse
arrays. Ignore nulls resulting from removals when processing the encoded action
and condition lists.
Test Plan: Removed conditions from Herald rules.
Reviewed By: aran
Reviewers: aran, cpojer, jungejason
CC: aran, epriestley
Differential Revision: 606
This commit is contained in:
epriestley 2011-07-07 12:35:31 -07:00
parent 49310391e0
commit 62532ef26d

View file

@ -93,6 +93,12 @@ class HeraldRuleController extends HeraldController {
$conditions = array(); $conditions = array();
foreach ($data['conditions'] as $condition) { foreach ($data['conditions'] as $condition) {
if ($condition === null) {
// We manage this as a sparse array on the client, so may receive
// NULL if conditions have been removed.
continue;
}
$obj = new HeraldCondition(); $obj = new HeraldCondition();
$obj->setFieldName($condition[0]); $obj->setFieldName($condition[0]);
$obj->setFieldCondition($condition[1]); $obj->setFieldCondition($condition[1]);
@ -149,6 +155,11 @@ class HeraldRuleController extends HeraldController {
$actions = array(); $actions = array();
foreach ($data['actions'] as $action) { foreach ($data['actions'] as $action) {
if ($action === null) {
// Sparse on the client; removals can give us NULLs.
continue;
}
$obj = new HeraldAction(); $obj = new HeraldAction();
$obj->setAction($action[0]); $obj->setAction($action[0]);