@@ -29,6 +29,7 @@ abstract class Tracker_ScalarModelBase extends Tracker_AppModel
29
29
public function __construct ()
30
30
{
31
31
parent ::__construct ();
32
+
32
33
$ this ->_name = 'tracker_scalar ' ;
33
34
$ this ->_key = 'scalar_id ' ;
34
35
$ this ->_mainData = array (
@@ -57,41 +58,42 @@ public function __construct()
57
58
'child_column ' => 'user_id ' ,
58
59
),
59
60
);
61
+
60
62
$ this ->initialize ();
61
63
}
62
64
63
65
/**
64
66
* Associate the given scalar and item.
65
67
*
66
- * @param Tracker_ScalarDao $scalar scalar DAO
67
- * @param ItemDao $item item DAO
68
+ * @param Tracker_ScalarDao $scalarDao scalar DAO
69
+ * @param ItemDao $itemDao item DAO
68
70
* @param string $label label
69
71
*/
70
- abstract public function associateItem ($ scalar , $ item , $ label );
72
+ abstract public function associateItem ($ scalarDao , $ itemDao , $ label );
71
73
72
74
/**
73
75
* Return the items associated with the given scalar.
74
76
*
75
- * @param Tracker_ScalarDao $scalar scalar DAO
77
+ * @param Tracker_ScalarDao $scalarDao scalar DAO
76
78
* @return array array of associative arrays with keys "item" and "label"
77
79
*/
78
- abstract public function getAssociatedItems ($ scalar );
80
+ abstract public function getAssociatedItems ($ scalarDao );
79
81
80
82
/**
81
83
* Return any other scalars from the same submission as the given scalar.
82
84
*
83
- * @param Tracker_ScalarDao $scalar scalar DAO
85
+ * @param Tracker_ScalarDao $scalarDao scalar DAO
84
86
* @return array scalar DAOs
85
87
*/
86
- abstract public function getOtherScalarsFromSubmission ($ scalar );
88
+ abstract public function getOtherScalarsFromSubmission ($ scalarDao );
87
89
88
90
/**
89
91
* Return any other values from the same submission as the given scalar.
90
92
*
91
- * @param Tracker_ScalarDao $scalar scalar DAO
93
+ * @param Tracker_ScalarDao $scalarDao scalar DAO
92
94
* @return array associative array with keys equal to the metric names
93
95
*/
94
- abstract public function getOtherValuesFromSubmission ($ scalar );
96
+ abstract public function getOtherValuesFromSubmission ($ scalarDao );
95
97
96
98
/**
97
99
* Return a scalar given a trend id, submit time, and user id.
@@ -114,11 +116,11 @@ abstract public function getDistinctBranches();
114
116
* Add a new scalar to the trend. If overwrite is true, and a scalar already exists on the trend with the same
115
117
* submit time and user, then this will replace that scalar.
116
118
*
117
- * @param Tracker_TrendDao $trend trend DAO
119
+ * @param Tracker_TrendDao $trendDao trend DAO
118
120
* @param string $submitTime submit time
119
121
* @param string $producerRevision producer revision
120
122
* @param float $value scalar value
121
- * @param UserDao $user user DAO
123
+ * @param UserDao $userDao user DAO
122
124
* @param bool $overwrite true if a scalar with the same trend, submit time, and user should be overwritten
123
125
* @param bool $official true if the submission containing the scalar should be official
124
126
* @param string $buildResultsUrl build results URL
@@ -128,47 +130,75 @@ abstract public function getDistinctBranches();
128
130
* @return Tracker_ScalarDao scalar DAO
129
131
*/
130
132
public function addToTrend (
131
- $ trend ,
133
+ $ trendDao ,
132
134
$ submitTime ,
133
135
$ producerRevision ,
134
136
$ value ,
135
- $ user ,
137
+ $ userDao ,
136
138
$ overwrite = true ,
137
139
$ official = true ,
138
140
$ buildResultsUrl = '' ,
139
141
$ branch = '' ,
140
142
$ params = null ,
141
143
$ extraUrls = null
142
144
) {
143
- if ($ overwrite ) {
144
- $ dao = $ this ->getByTrendAndTimestamp ($ trend ->getKey (), $ submitTime , $ user ->getKey ());
145
- if ($ dao ) {
146
- $ this ->delete ($ dao );
145
+ if ($ overwrite === true ) {
146
+ $ scalarDao = $ this ->getByTrendAndTimestamp ($ trendDao ->getKey (), $ submitTime , $ userDao ->getKey ());
147
+
148
+ if ($ scalarDao !== false ) {
149
+ $ this ->delete ($ scalarDao );
147
150
}
148
151
}
149
152
150
- if (is_array ($ params )) {
153
+ if (empty ($ params )) {
154
+ $ params = null ;
155
+ } elseif (is_array ($ params )) {
151
156
$ params = json_encode ($ params );
152
157
}
153
- if (is_array ($ extraUrls )) {
158
+
159
+ if (empty ($ extraUrls )) {
160
+ $ extraUrls = null ;
161
+ } elseif (is_array ($ extraUrls )) {
154
162
$ extraUrls = json_encode ($ extraUrls );
155
163
}
156
164
157
- /** @var Tracker_ScalarDao $scalar */
158
- $ scalar = MidasLoader::newDao ('ScalarDao ' , $ this ->moduleName );
159
- $ scalar ->setTrendId ($ trend ->getKey ());
160
- $ scalar ->setSubmitTime ($ submitTime );
161
- $ scalar ->setProducerRevision ($ producerRevision );
162
- $ scalar ->setValue ($ value );
163
- $ scalar ->setUserId ($ user instanceof UserDao ? $ user ->getKey () : -1 );
164
- $ scalar ->setOfficial ($ official ? 1 : 0 );
165
- $ scalar ->setBuildResultsUrl ($ buildResultsUrl );
166
- $ scalar ->setBranch (trim ($ branch ));
167
- $ scalar ->setParams ($ params );
168
- $ scalar ->setExtraUrls ($ extraUrls );
169
-
170
- $ this ->save ($ scalar );
171
-
172
- return $ scalar ;
165
+ $ userId = (is_null ($ userDao ) || $ userDao === false ) ? -1 : $ userDao ->getKey ();
166
+
167
+ /** @var Tracker_ScalarDao $scalarDao */
168
+ $ scalarDao = MidasLoader::newDao ('ScalarDao ' , $ this ->moduleName );
169
+ $ scalarDao ->setTrendId ($ trendDao ->getKey ());
170
+ $ scalarDao ->setSubmitTime ($ submitTime );
171
+ $ scalarDao ->setProducerRevision ($ producerRevision );
172
+ $ scalarDao ->setValue ($ value );
173
+ $ scalarDao ->setUserId ($ userId );
174
+ $ scalarDao ->setOfficial ((int ) $ official );
175
+ $ scalarDao ->setBuildResultsUrl ($ buildResultsUrl );
176
+ $ scalarDao ->setBranch (trim ($ branch ));
177
+ $ scalarDao ->setParams ($ params );
178
+ $ scalarDao ->setExtraUrls ($ extraUrls );
179
+ $ this ->save ($ scalarDao );
180
+
181
+ return $ scalarDao ;
182
+ }
183
+
184
+ /**
185
+ * Check whether the given policy is valid for the given scalar and user.
186
+ *
187
+ * @param Tracker_ScalarDao $scalarDao scalar DAO
188
+ * @param null|UserDao $userDao user DAO
189
+ * @param int $policy policy
190
+ * @return bool true if the given policy is valid for the given scalar and user
191
+ */
192
+ public function policyCheck ($ scalarDao , $ userDao = null , $ policy = MIDAS_POLICY_READ )
193
+ {
194
+ if (is_null ($ scalarDao ) || $ scalarDao === false ) {
195
+ return false ;
196
+ }
197
+
198
+ /** @var Tracker_TrendModel $trendModel */
199
+ $ trendModel = MidasLoader::loadModel ('Trend ' , $ this ->moduleName );
200
+ $ trendDao = $ scalarDao ->getTrend ();
201
+
202
+ return $ trendModel ->policyCheck ($ trendDao , $ userDao , $ policy );
173
203
}
174
204
}
0 commit comments