From 11a895f2469ae6452751c1273d6b8ef93be1e1bd Mon Sep 17 00:00:00 2001 From: Karsten Heiken Date: Wed, 28 Sep 2011 19:17:17 +0200 Subject: [PATCH 1/2] Fix adding the status to job->getById --- application/models/job.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/application/models/job.php b/application/models/job.php index 5b89bfe..677030a 100644 --- a/application/models/job.php +++ b/application/models/job.php @@ -113,16 +113,16 @@ class Job extends CI_Model { */ public function getById($job_id) { $job = $this->db->get_where('jobs', array('id' => $job_id))->row_array(); - return array_map(function($var) { - if ($var['started_at'] == '0000-00-00 00:00:00') { - $var['status'] = 'pending'; - } else if ($var['finished_at'] == '0000-00-00 00:00:00') { - $var['status'] = 'running'; - } else { - $var['status'] = 'complete'; - } - return $var; - }, $job); + + if ($job['started_at'] == '0000-00-00 00:00:00') { + $job['status'] = 'pending'; + } else if ($job['finished_at'] == '0000-00-00 00:00:00') { + $job['status'] = 'running'; + } else { + $job['status'] = 'complete'; + } + + return $job; } /** From 9ca81ab7729d2b2995497433f3891b5d34022b1d Mon Sep 17 00:00:00 2001 From: Karsten Heiken Date: Wed, 28 Sep 2011 19:18:20 +0200 Subject: [PATCH 2/2] Handle the upload of results --- application/controllers/xmlrpc.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/application/controllers/xmlrpc.php b/application/controllers/xmlrpc.php index dfaf765..c1f58b2 100644 --- a/application/controllers/xmlrpc.php +++ b/application/controllers/xmlrpc.php @@ -64,6 +64,8 @@ class Xmlrpc extends MY_Controller { */ function _get_job($request) { $this->load->model('job'); + $this->load->model('experiment'); + $parameters = $request->output_parameters(); $server = $this->server->getBySecret($parameters[0]); @@ -79,10 +81,14 @@ class Xmlrpc extends MY_Controller { 'server' => $server->id, ); $this->job->update($job->id, $update); + + // which project does this job belong to? + $experiment = $this->experiment->getById($job->experiment_id); $response = array(array( 'success' => array('true', 'string'), 'new_job' => array('true', 'string'), 'job_id' => array($job->id, 'string'), + 'project_id' => array($experiment['project_id'], 'string'), 'experiment_id' => array($job->experiment_id, 'string'), ), 'struct'); } else { @@ -132,6 +138,8 @@ class Xmlrpc extends MY_Controller { */ function _job_done($request) { $this->load->model('job'); + $this->load->model('experiment'); + $parameters = $request->output_parameters(); $server = $this->server->getBySecret($parameters[0]); @@ -141,6 +149,23 @@ class Xmlrpc extends MY_Controller { $parameters = $parameters[1]; $job_id = $parameters[0]; + $files_uploaded = $parameters[1]; + + $job = $this->job->getById($job_id); + $experiment = $this->experiment->getById($job['experiment_id']); + $project = $this->project->getById($experiment['project_id']); + + if($files_uploaded) { + foreach (glob("/tmp/sp_incoming/" . $job_id . "/*") as $filename) { + $job_dir = FCPATH . 'uploads/' . $experiment['project_id'] . '/' . $experiment['id'] . '/' . $job['id']; + if(!is_dir($job_dir)) + mkdir($job_dir); + + $pathinfo = pathinfo($filename); + $newpath = FCPATH . 'uploads/' . $experiment['project_id'] . '/' . $experiment['id'] . '/' . $job['id'] . '/' . $pathinfo['basename']; + copy($filename, $newpath); + } + } $update = array( 'finished_at' => mysql_now(),