function testRowMethods() { $id = $this->addRow(); $tr = new Test(); $loaded = $tr->load($id); $this->assert($updatedRow = $loaded, "Test->load() failed: " . var_export($loaded, 1)); $exp = $tr->export(); $this->assert($updatedRow = $exp, "Test->export() failed: " . var_export($exp, 1)); $newname = 'test updated again'; $tr->name = $newname; $save = $tr->save(); $this->assert($save, "Test->save() failed: " . var_export($tr->getErrorList(), 1)); $this->assert(Test::count() == 1, "Test::count() failed"); $tr->name = null; $this->assert(!$tr->save(), "Test->save() should have failed (required name rule should fail)!"); $tr->name = array('123'); $this->assert(!$tr->save(), "Test->save() should have failed (string name rule should fail)!"); $tr2 = new Test(); $tr2->name = '000 second row'; // three zeroes - to ensure it sorts above the first one $this->assert($tr2->save(), 'Test->save() failed: ' . var_export($tr->getErrorList(), 1)); $s = Test::findAll(); $s->setOrder('name'); $s->paginate(1, 1); $all = $s->export()->fetchAll(); $this->assert(1 == count($all), 'Select->count() failed after pagination'); $this->assert($tr2->name == $all[0]->name, 'Select->export() failed ordering'); }
/** * @before _secure, _admin */ public function all() { $this->seo(array("title" => "Manage Medical Test", "view" => $this->getLayoutView())); $view = $this->getActionView(); $page = RequestMethods::get("page", 1); $limit = RequestMethods::get("limit", 10); $medicaltests = Test::all(array(), array("id", "title", "live"), "created", "desc", $limit, $page); $count = Test::count(); $view->set("medicaltests", $medicaltests); $view->set("page", $page); $view->set("count", $count); $view->set("limit", $limit); }
<?php require_once "TestClass.php"; Test::$count = Test::$count + 1; echo Test::$count;
public function upload_solution($task_set_id = 0) { $this->usermanager->student_login_protected_redirect(); $task_set = $this->get_task_set_by_id($course, $group, $student, $task_set_id); $task_sets = $this->filter_valid_task_sets($task_set); $filtered_task_set = count($task_sets) == 1 ? $task_sets[0] : new Task_set(); if ($filtered_task_set->id == intval($task_set_id) && $this->can_upload_file($filtered_task_set, $course)) { $allowed_file_types_array = trim($filtered_task_set->allowed_file_types) != '' ? array_map('trim', explode(',', $filtered_task_set->allowed_file_types)) : array(); $config['upload_path'] = 'private/uploads/solutions/task_set_' . intval($task_set_id) . '/'; $config['allowed_types'] = 'zip' . (count($allowed_file_types_array) ? '|' . implode('|', $allowed_file_types_array) : ''); $config['max_size'] = intval($this->config->item('maximum_solition_filesize')); $current_version = $filtered_task_set->get_student_file_next_version($student->id); $config['file_name'] = $student->id . '_' . $this->normalize_student_name($student) . '_' . substr(md5(time() . rand(-500000, 500000)), 0, 4) . '_' . $current_version . '.zip'; @mkdir($config['upload_path'], DIR_READ_MODE, TRUE); $this->load->library('upload', $config); if ($this->upload->do_upload('file')) { $upload_data = $this->upload->data(); $mimes = $this->upload->mimes_types('zip'); if (is_array($mimes) && !in_array($upload_data['file_type'], $mimes) || is_string($mimes) && $upload_data['file_type'] != $mimes) { if (!$this->zip_plain_file_to_archive($upload_data['full_path'], $upload_data['client_name'], $upload_data['file_path'])) { $this->messages->add_message('lang:tasks_task_error_cant_zip_file', Messages::MESSAGE_TYPE_ERROR); redirect(create_internal_url('tasks/task/' . intval($task_set_id))); die; } } $this->_transaction_isolation(); $this->db->trans_begin(); $solution = new Solution(); $solution->where('task_set_id', $filtered_task_set->id); $solution->where('student_id', $student->id); $solution->get(); $revalidate = 1; if ($course->test_scoring_deadline >= date('Y-m-d H:i:s') && $filtered_task_set->enable_tests_scoring == 1 && $filtered_task_set->allowed_test_types != '') { $test_types = explode(',', $filtered_task_set->allowed_test_types); $tests = new Test(); $tests->where_related('task/task_set', 'id', $filtered_task_set->id); $tests->where('enabled', 1); $tests->where('enable_scoring', 1); $tests->where_in('type', $test_types); $revalidate = $tests->count() > 0 ? 0 : 1; } if ($solution->exists()) { $solution->ip_address = $_SERVER["REMOTE_ADDR"]; $solution->revalidate = $revalidate; $solution->save(); } else { $solution = new Solution(); $solution->ip_address = $_SERVER["REMOTE_ADDR"]; $solution->revalidate = $revalidate; $solution->save(array('student' => $student, 'task_set' => $filtered_task_set)); } $solution_version = new Solution_version(); $solution_version->ip_address = $_SERVER["REMOTE_ADDR"]; $solution_version->version = $current_version; $solution_version->save($solution); if ($this->db->trans_status()) { $log = new Log(); $log->add_student_solution_upload_log(sprintf($this->lang->line('tasks_task_solution_upload_log_message'), $config['file_name']), $student, $solution->id); $this->db->trans_commit(); $this->messages->add_message('lang:tasks_task_solution_uploaded', Messages::MESSAGE_TYPE_SUCCESS); $this->_action_success(); $this->output->set_internal_value('task_set_id', $solution->task_set_id); } else { $this->db->trans_rollback(); @unlink($config['upload_path'] . $config['file_name']); $this->messages->add_message('lang:tasks_task_solution_canceled_due_db_error', Messages::MESSAGE_TYPE_ERROR); } redirect(create_internal_url('tasks/task/' . intval($task_set_id))); } else { $this->parser->assign('file_error_message', $this->upload->display_errors('', '')); $this->task($task_set_id); } } else { $this->messages->add_message('lang:tasks_task_error_cant_upload_solution', Messages::MESSAGE_TYPE_ERROR); redirect(create_internal_url('tasks/task/' . intval($task_set_id))); } }