2 // Copyright (C) 2010-2011 Aron Racho <aron@mi-squred.com>
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 2
7 // of the License, or (at your option) any later version.
10 * Description of RuleCriteriaDatabaseBuilder
14 class RuleCriteriaDatabaseBuilder
extends RuleCriteriaBuilder
17 function __construct()
22 * @return RuleCriteriaType
24 function resolveRuleCriteriaType($method, $methodDetail, $value)
26 if (strpos($method, "database")) {
27 $exploded = explode("::", $value);
28 if ($exploded[0] == "LIFESTYLE") {
29 return RuleCriteriaType
::from(RuleCriteriaType
::lifestyle
);
32 if ($exploded[0] == 'CUSTOM') {
33 return RuleCriteriaType
::from(RuleCriteriaType
::custom_bucket
);
35 return RuleCriteriaType
::from(RuleCriteriaType
::custom
);
43 * @param RuleCriteriaType $ruleCriteriaType
44 * @return RuleCriteria
46 function build($ruleCriteriaType, $value, $methodDetail)
48 $exploded = explode("::", $value);
50 if ($ruleCriteriaType->code
== RuleCriteriaType
::lifestyle
) {
52 return new RuleCriteriaLifestyle($type, sizeof($exploded) > 2 ?
$exploded[2] : null);
55 if ($ruleCriteriaType->code
== RuleCriteriaType
::custom_bucket
) {
56 $category = $exploded[1];
58 $completed = $exploded[3] == "YES";
59 $frequencyComparator = $exploded[4];
60 $frequency = $exploded[5];
61 return new RuleCriteriaDatabaseBucket(
70 if ($ruleCriteriaType->code
== RuleCriteriaType
::custom
) {
71 $table = $exploded[1];
72 $column = $exploded[2];
73 $valueComparator = $exploded[3];
74 $value = $exploded[4];
75 $frequencyComparator = $exploded[5];
76 $frequency = $exploded[6];
77 return new RuleCriteriaDatabaseCustom(
92 * @param RuleCriteriaType $ruleCriteriaType
94 function newInstance($ruleCriteriaType)
96 if ($ruleCriteriaType->code
== RuleCriteriaType
::lifestyle
) {
97 return new RuleCriteriaLifestyle(null, null);
100 if ($ruleCriteriaType->code
== RuleCriteriaType
::custom_bucket
) {
101 return new RuleCriteriaDatabaseBucket("", "", true, "", "");
104 if ($ruleCriteriaType->code
== RuleCriteriaType
::custom
) {
107 $valueComparator = "";
109 $frequencyComparator = "";
111 return new RuleCriteriaDatabaseCustom("", "", "", "", "", "");