/** * Merge Membership2 rules. * * Merge every rule model with Membership2/visitor membership rules. * This ensure rules are consistent with Membership2 rules. * * @since 1.0.0 * @internal */ public function merge_protection_rules() { if ($this->is_base()) { // This is the visitor membership, no need to merge anything. return; } $base_rules = self::get_base()->_rules; foreach ($base_rules as $key => $base_rule) { try { // Key could be "type" of "site:type" format. $rule_type = MS_Rule::rule_type($key); $rule = $this->get_rule($rule_type); $rule->protect_undefined_items($base_rule, true); $this->set_rule($rule_type, $rule); } catch (Exception $e) { MS_Helper_Debug::log($e); } } $this->_rules = apply_filters('ms_model_membership_merge_protection_rules', $this->_rules, $this); }