/** * @action csv upload page * @view examresult/upload */ public function action_upload() { $view = View::factory('examresult/upload')->bind('form', $form)->bind('success', $success)->bind('warning', $warning); $errors = array(); if ($this->request->method() === 'POST' && $this->request->post()) { $examgroup_id = $this->request->post('examgroup_id'); $exams = Model_Examgroup::get_exams($examgroup_id); $students = Model_Examgroup::get_students($examgroup_id); $csv = new Examresult_Csv($_FILES['csv_file'], $exams, $students); if ($csv->validate()) { $datasets = $csv->datasets(); Model_Examresult::save_results($datasets); $success = 'Results uploaded successfully. Click <a href="%s">here</a> to view them'; $success = sprintf($success, Url::site('examresult/edit/examgroup_id/' . $examgroup_id)); } else { $errors = array('csv_file' => $csv->errors('invalid_extension')); $warning = $csv->errors('warning'); } } $form = new Stickyform('examresult/upload', array('enctype' => 'multipart/form-data'), $errors); $form->default_data = array('examgroup_id' => '', 'csv_file' => ''); $form->posted_data = $this->request->post(); $examgroups = ORM::factory('examgroup')->find_all()->as_array('id', 'name'); $form->append('Select Exam Group:', 'examgroup_id', 'select', array('options' => $examgroups, 'attributes' => array('id' => 'examgroup_id')))->append('CSV File:', 'csv_file', 'file')->append('Upload', 'upload', 'submit', array('attributes' => array('class' => 'button')))->process(); $this->content = $view; Breadcrumbs::add(array('Exams', Url::site('exam'))); Breadcrumbs::add(array('Manage Results', Url::site('examresult/upload'))); }