diff --git a/openml_OS/models/api/v1/Api_evaluation.php b/openml_OS/models/api/v1/Api_evaluation.php index 736b3079a..26733307d 100644 --- a/openml_OS/models/api/v1/Api_evaluation.php +++ b/openml_OS/models/api/v1/Api_evaluation.php @@ -207,7 +207,7 @@ private function evaluation_list($segs, $user_id) { // TODO: remove dependency on task_inputs and dataset table // TODO (2): transform into subquery where all columns except evaluation_fold are obtained in subquery (along with limit requirements, as MYSQL query optimizer does not seem to understand this query has an upper limit to the number of obtained runs that need to be inspected) $sql = - 'SELECT r.rid, r.task_id, r.start_time, s.implementation_id, s.sid, f.name AS `function`, i.fullName, d.did, d.name, e.evaluation_engine_id, ' . $columns . ' ' . + 'SELECT r.rid, r.task_id, r.start_time, r.uploader, s.implementation_id, s.sid, f.name AS `function`, i.fullName, d.did, d.name, e.evaluation_engine_id, ' . $columns . ' ' . 'FROM run r, ' . $eval_table . ' e, algorithm_setup s, implementation i, dataset d, task t, task_inputs ti, math_function f ' . 'WHERE r.setup = s.sid ' . 'AND e.source = r.rid ' . diff --git a/openml_OS/models/api/v1/Api_user.php b/openml_OS/models/api/v1/Api_user.php index 076963688..8b278802c 100644 --- a/openml_OS/models/api/v1/Api_user.php +++ b/openml_OS/models/api/v1/Api_user.php @@ -15,6 +15,13 @@ function __construct() { function bootstrap($format, $segments, $request_type, $user_id) { $this->outputFormat = $format; + + # http://test.openml.org/api/v1/user/list/uploader/1,2 + if (count($segments) >= 1 && $segments[0] == 'list') { + array_shift($segments); + $this->username_list($segments); + return; + } /*$getpost = array('get','post'); @@ -74,5 +81,27 @@ function bootstrap($format, $segments, $request_type, $user_id) { $this->_xmlContents( 'user-delete', array( 'user' => $user ) ); } */ + + private function username_list($segs) + { + # pass uploader list to get username list + $legal_filters = array('uploader'); + $query_string = array(); + for ($i = 0; $i < count($segs); $i += 2) { + $query_string[$segs[$i]] = urldecode($segs[$i+1]); + if (in_array($segs[$i], $legal_filters) == false) { + $this->returnError(370, $this->version, $this->openmlGeneralErrorCode, 'Legal filter operators: ' . implode(',', $legal_filters) .'. Found illegal filter: ' . $segs[$i]); + return; + } + } + $uploader_id = element('uploader', $query_string); + $sql = 'SELECT `username`,`id` FROM `users` WHERE `id` In ('. $uploader_id.')'; + $users = $this->Author->query($sql); + $this->xmlContents('user-name', $this->version, array('users' => $users)); + } + } + + + ?> diff --git a/openml_OS/views/pages/api_new/v1/xml/evaluations.tpl.php b/openml_OS/views/pages/api_new/v1/xml/evaluations.tpl.php index dcc5bf231..d11116b28 100644 --- a/openml_OS/views/pages/api_new/v1/xml/evaluations.tpl.php +++ b/openml_OS/views/pages/api_new/v1/xml/evaluations.tpl.php @@ -2,6 +2,7 @@ rid; ?> + uploader; ?> task_id; ?> sid; ?> implementation_id; ?> diff --git a/openml_OS/views/pages/api_new/v1/xml/user-name.tpl.php b/openml_OS/views/pages/api_new/v1/xml/user-name.tpl.php new file mode 100644 index 000000000..8836f8c58 --- /dev/null +++ b/openml_OS/views/pages/api_new/v1/xml/user-name.tpl.php @@ -0,0 +1,8 @@ + + + + id ?> + username ?> + + +