\org_openpsa_directmarketing_campaign_ruleresolver

Resolves smart-campaign rules array to one or more QB instances with correct constraints, and merges the results.

Rules array structure: array( 'type' => 'AND', 'classes' => array ( array ( 'type' => 'OR', 'class' => 'org_openpsa_contacts_person_dba', 'rules' => array ( array ( 'property' => 'email', 'match' => 'LIKE', 'value' => '%@%' ), array ( 'property' => 'handphone', 'match' => '<>', 'value' => '' ), ), ), array ( 'type' => 'AND', 'class' => 'midgard_parameter', 'rules' => array ( array ( 'property' => 'domain', 'match' => '=', 'value' => 'openpsa_test' ), array ( 'property' => 'name', 'match' => '=', 'value' => 'param_match' ), array ( 'property' => 'value', 'match' => '=', 'value' => 'bar' ), ), ), ), ),

NOTE: subgroups are processed before rules, subgroups must match class of parent group until midgard core has the new infinite JOINs system. The root level group array is named 'classes' because there should never be two groups on this level using the same class

Summary

Methods
Properties
Constants
__construct()
get_mc()
parse()
resolve()
execute()
build_property_map()
list_object_properties()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
resolve_rule_group()
add_rules()
add_person_rule()
add_parameter_rule()
add_group_rule()
add_misc_rule()
$mc
N/A

Properties

$mc

$mc : 

Type

Methods

__construct()

__construct() 

parse()

parse(string  $ruleset) : array

Parameters

string $ruleset

Throws

\midcom_error

Returns

array

resolve()

resolve(array  $rules) : boolean

Recurses trough the rules array and creates QB instances & constraints as needed

Parameters

array $rules

rules array

Returns

boolean —

indicating success/failure

execute()

execute() : array

Executes the collector instantiated via resolve, merges results

Returns

array —

Person data

list_object_properties()

list_object_properties(\midcom_core_dbaobject  $object, \midcom_services_i18n_l10n  $l10n) 

List object's properties for JS rule builder

PONDER: Should we support schema somehow (only for non-parameter keys), this would practically require manual parsing...

Parameters

\midcom_core_dbaobject $object
\midcom_services_i18n_l10n $l10n

resolve_rule_group()

resolve_rule_group(array  $group) : boolean

Resolves the rules in a single rule group

Parameters

array $group

single group from rules array

Returns

boolean —

indicating success/failure

add_rules()

add_rules(array  $rules, string  $class) 

Iterates over passed rules for given class and calls functions to add rules to the querybuilder/collector

Parameters

array $rules

array containing rules

string $class

containing name of class for the rules

add_person_rule()

add_person_rule(array  $rule) 

Adds rule directly to the querybuilder

Parameters

array $rule

contains the rule

add_parameter_rule()

add_parameter_rule(array  $rules) 

Adds parameter rule to the querybuilder

Parameters

array $rules

array containing rules for the parameter

add_group_rule()

add_group_rule(array  $rule) 

Adds a group-rule to the querybuilder

Parameters

array $rule

contains the group-rule

add_misc_rule()

add_misc_rule(array  $rule, string  $class, string  $person_property) 

Adds a passed rule for the passed class to the querybuilder

Parameters

array $rule

contains the rule

string $class

name of the class the rule will be added to

string $person_property

contains the name of the property of the passed class which links to the person