quick minor path updates (#1968)
[openemr.git] / interface / super / rules / library / RuleCriteriaDatabaseBuilder.php
blob6f7d9b4fee9a263b4a6d46f24efc2a48ad98251a
1 <?php
2 // Copyright (C) 2010-2011 Aron Racho <aron@mi-squred.com>
3 //
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.
9 /**
10 * Description of RuleCriteriaDatabaseBuilder
12 * @author aron
14 class RuleCriteriaDatabaseBuilder extends RuleCriteriaBuilder
17 function __construct()
21 /**
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);
34 } else {
35 return RuleCriteriaType::from(RuleCriteriaType::custom);
39 return null;
42 /**
43 * @param RuleCriteriaType $ruleCriteriaType
44 * @return RuleCriteria
46 function build($ruleCriteriaType, $value, $methodDetail)
48 $exploded = explode("::", $value);
50 if ($ruleCriteriaType->code == RuleCriteriaType::lifestyle) {
51 $type = $exploded[1];
52 return new RuleCriteriaLifestyle($type, sizeof($exploded) > 2 ? $exploded[2] : null);
55 if ($ruleCriteriaType->code == RuleCriteriaType::custom_bucket) {
56 $category = $exploded[1];
57 $item = $exploded[2];
58 $completed = $exploded[3] == "YES";
59 $frequencyComparator = $exploded[4];
60 $frequency = $exploded[5];
61 return new RuleCriteriaDatabaseBucket(
62 $category,
63 $item,
64 $completed,
65 $frequencyComparator,
66 $frequency
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(
78 $table,
79 $column,
80 $valueComparator,
81 $value,
82 $frequencyComparator,
83 $frequency
87 return null;
90 /**
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) {
105 $table = "";
106 $column = "";
107 $valueComparator = "";
108 $value = "";
109 $frequencyComparator = "";
110 $frequency = "";
111 return new RuleCriteriaDatabaseCustom("", "", "", "", "", "");
114 return null;