* @author Eike Foken */ class Jobs extends CI_Controller { /** * Constructor. */ public function __construct() { parent::__construct(); $this->load->model('job'); $this->load->model('experiment'); $this->load->model('program'); } /** * Starts a job for the specified experiment. * * @param string $experimentId */ public function start($experimentId = '') { $experiment = $this->experiment->getByID($experimentId); if (isset($experiment['id'])) { // execute program runner $program = $this->program->getById($experiment['program_id']); $this->load->library('program_runner', array('program_driver' => $program['driver'])); $this->program_runner->createJob($experiment['id']); redirect('experiments/detail/' . $experiment['id']); } else { show_404(); } } /** * Get jobs belonging to projects owned by the user. */ public function getOwn() { $query = $this->db->order_by('progress', 'desc') ->get_where('jobs', array('started_by' => $this->session->userdata('user_id'))); $jobs = $query->result_array(); for($i=0; $idb->select('name')->get_where('projects', array('id' => $jobs[$i]['project_id']))->row()->name; $progress = $jobs[$i]['progress']; switch($progress) { case -1: $progress = _('waiting'); break; case -2: $progress = _('failed'); break; case 100: $progress = _('done'); break; default: $progress = $progress . "%"; break; } $jobs[$i]['progress'] = $progress; } $this->output ->set_content_type('application/json') ->set_output(json_encode( array( 'count' => count($jobs), 'jobs' => $jobs ) )); } /** * Get a list of results that the owner has not yet seen. * @todo not yet verified */ public function get_unseen_results() { $results = $this->job->getUnseenResults(); $this->output ->set_content_type('application/json') ->set_output(json_encode( array( 'count' => count($results), 'results' => $results ) )); } }