/** * Validate that scheduled jobs are retrieved via API call */ public function test_getscheduledjobs() { global $CFG, $DB; // Create a user. require_once $CFG->dirroot . '/user/lib.php'; $user = new stdClass(); $user->username = '******'; $user->firstname = 'rlipfirstname'; $user->lastname = 'rliplastname'; $user->mnethostid = $CFG->mnet_localhost_id; $user->email = '*****@*****.**'; $user->password = '******'; $user->timezone = -5.0; $userid = user_create_user($user); // Create a scheduled job. $data = array('plugin' => 'dhexport_version1', 'period' => '5m', 'label' => 'bogus', 'type' => 'dhexport', 'userid' => $userid); $starttime = time(); $ipid = rlip_schedule_add_job($data); $endtime = time(); // Fetch jobs. $recordset = rlip_get_scheduled_jobs($data['plugin']); // Data validation. $this->assertTrue($recordset->valid()); $current = $recordset->current(); // Ip schedule fields. $this->assertEquals($current->plugin, $data['plugin']); // User fields. $this->assertEquals($current->username, $user->username); $this->assertEquals($current->firstname, $user->firstname); $this->assertEquals($current->lastname, $user->lastname); $this->assertEquals($current->timezone, $user->timezone); $this->assertEquals($current->lastruntime, 0); // Elis scheduled task field. $this->assertGreaterThanOrEqual($starttime + 5 * MINSECS, (int) $current->nextruntime); $this->assertGreaterThanOrEqual((int) $current->nextruntime, $endtime + 5 * MINSECS); }
function display_default() { global $OUTPUT, $USER; $this->get_base_page_params(); $display_name = $this->get_ip_plugin(); // TBD: more user-friendly $ipscheds = rlip_get_scheduled_jobs($this->get_ip_plugin(), is_siteadmin() ? 0 : $USER->id); if (!empty($ipscheds) && $ipscheds->valid()) { echo $OUTPUT->notification(get_string("rlip_jobs_heading_jobs", 'local_datahub', get_string('pluginname', $display_name)), 'rlip_bold_header', 'left'); echo $OUTPUT->notification(get_string('rlip_jobs_heading_fullinstructions', 'local_datahub', $display_name), 'rlip_italic_header', 'left'); $table = new html_table(); $table->head = array(get_string('rlip_jobs_header_label', 'local_datahub'), get_string('rlip_jobs_header_owner', 'local_datahub'), get_string('rlip_jobs_header_lastran', 'local_datahub'), get_string('rlip_jobs_header_nextrun', 'local_datahub'), get_string('rlip_jobs_header_modified', 'local_datahub'), ''); $table->align = array('left', 'center', 'left', 'left', 'left', 'center'); $table->size = array('5%', '15%', '25%', '25%', '25%', '5%'); $table->data = array(); $table->rowclasses = array(); //TBD $edit = get_string('edit'); $delete = get_string('delete'); foreach ($ipscheds as $ipjob) { $ustr = "{$ipjob->username}<br/>(" . datahub_fullname($ipjob) . ')'; $tz = $ipjob->timezone; $data = unserialize($ipjob->config); $lastruntime = !empty($ipjob->lastruntime) ? userdate($ipjob->lastruntime, '', $tz) . ' (' . usertimezone($tz) . ')' : get_string('no_lastruntime', 'local_datahub'); $nextruntime = !empty($ipjob->nextruntime) ? userdate($ipjob->nextruntime, '', $tz) . ' (' . usertimezone($tz) . ')' : get_string('na', 'local_datahub'); $modified = !empty($data['timemodified']) ? userdate($data['timemodified'], '', $tz) . ' (' . usertimezone($tz) . ')' : get_string('na', 'local_datahub'); $target = $this->get_new_page(array('id' => $ipjob->id, 'plugin' => $ipjob->plugin)); $label = '<a name="edit" href="' . $target->url->out(true, array('action' => 'form')) . '">' . $data['label'] . '</a>'; $edit_link = '<a name="edit" href="' . $target->url->out(true, array('action' => 'form')) . '"><img alt="' . $edit . '" title="' . $edit . '" src="' . $OUTPUT->pix_url('t/edit') . '" /></a>'; $delete_link = '<a name="delete" href="' . $target->url->out(true, array('action' => 'delete')) . '"><img alt="' . $delete . '" title="' . $delete . '" src="' . $OUTPUT->pix_url('t/delete') . '" /></a>'; $table->rowclasses[] = ''; //TBD $table->data[] = array($label, $ustr, $lastruntime, $nextruntime, $modified, "{$edit_link} {$delete_link}"); } echo html_writer::table($table); echo $OUTPUT->notification(get_string('schedulingtime', 'local_datahub', $display_name), 'rlip_italic_header', 'left'); } else { echo $OUTPUT->notification(get_string('rlip_jobs_heading_nojobs', 'local_datahub', get_string('pluginname', $display_name)), 'rlip_bold_header', 'left'); echo $OUTPUT->notification(get_string('rlip_jobs_heading_instructions', 'local_datahub', $display_name), 'rlip_italic_header', 'left'); } echo $OUTPUT->spacer(); $submit = $this->get_new_page(array('action' => 'form', 'plugin' => $this->get_ip_plugin())); $this->add_submit_cancel_buttons($submit->url, get_string('rlip_new_job', 'local_datahub')); }