Path: blob/master/src/applications/herald/editor/HeraldRuleSerializer.php
12256 views
<?php12/**3* Serialize for RuleTransactions / Editor.4*/5final class HeraldRuleSerializer extends Phobject {6public function serializeRule(HeraldRule $rule) {7return $this->serializeRuleComponents(8(bool)$rule->getMustMatchAll(),9$rule->getConditions(),10$rule->getActions(),11$rule->getRepetitionPolicyStringConstant());12}1314public function serializeRuleComponents(15$match_all,16array $conditions,17array $actions,18$repetition_policy) {1920assert_instances_of($conditions, 'HeraldCondition');21assert_instances_of($actions, 'HeraldActionRecord');2223$conditions_array = array();24foreach ($conditions as $condition) {25$conditions_array[] = array(26'field' => $condition->getFieldName(),27'condition' => $condition->getFieldCondition(),28'value' => $condition->getValue(),29);30}3132$actions_array = array();33foreach ($actions as $action) {34$actions_array[] = array(35'action' => $action->getAction(),36'target' => $action->getTarget(),37);38}3940return array(41'match_all' => $match_all,42'conditions' => $conditions_array,43'actions' => $actions_array,44'repetition_policy' => $repetition_policy,45);46}4748public function deserializeRuleComponents(array $serialized) {49$deser_conditions = array();50foreach ($serialized['conditions'] as $condition) {51$deser_conditions[] = id(new HeraldCondition())52->setFieldName($condition['field'])53->setFieldCondition($condition['condition'])54->setValue($condition['value']);55}5657$deser_actions = array();58foreach ($serialized['actions'] as $action) {59$deser_actions[] = id(new HeraldActionRecord())60->setAction($action['action'])61->setTarget($action['target']);62}6364return array(65'match_all' => $serialized['match_all'],66'conditions' => $deser_conditions,67'actions' => $deser_actions,68'repetition_policy' => $serialized['repetition_policy'],69);70}7172}737475