public function pay(Marker $marker, $marks, $amount) { if (!is_numeric($amount)) { throw new Exception('ContractPayment requires amount as a number'); } if (!is_array($marks)) { if (!$marks instanceof Mark) { throw new Exception('ContractPayment requires either an array of Marks, or a Mark as second argument'); } // put the single script in an array $marks = array($marks); } // get each mark's key, and set status to paid foreach ($marks as $mark) { if (!$marks instanceof Mark) { throw new Exception('ContractPayment requires either an array of Marks as second argument'); } $markIDs[] = $mark->getKey(); } $markIDs = serialize($markIDs); $this->set('marker', $marker->getKey()); $this->set('marks', $markIDs); $this->set('amount', $amount); $this->set('dateSent', null); if (!($result = $this->create())) { throw new Exception('Could not create new contract payment'); } foreach ($marks as $mark) { $mark->paid(); $mark->update(); } return $result; }
function panel() { $this->load->model('marker'); $this->load->model('assessment'); $this->load->library('validation'); $this->load->model('mark'); $this->load->model('markerPref'); // form submit names $updatePref = 'updatePref'; $markerEmail = $this->session->userdata($this->_sessionAuthVar); $marker = new Marker(); $marker->retrieve($markerEmail); $markerPref = new MarkerPref(); $markerPref->retrieve($markerEmail); // do this first due to the hacky implementation - it will result in doubled validation // messages for every other form if ($this->_updatePref($marker, $markerPref)) { $viewData['checkpoints'][] = 'You have successfully updated your job update preferences'; } // assessment fix required? $requireFix = array("*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**"); $viewData['assessmentFix'] = false; if (in_array($this->_getUser(), $requireFix)) { $viewData['assessmentFix'] = true; } $this->load->model('assessmentFix'); if ($viewData['assessmentFix']) { $assessmentFix = new AssessmentFix(); $assessmentFix->setKey($this->_getUser()); if ($assessmentFix->retrieve()) { $viewData['assessmentFix'] = false; } } if ($this->input->post('assessmentFix')) { if ($this->_checkToken()) { $this->load->library('validation'); $rules['requireFix'] = 'required'; $fields['requireFix'] = 'yes or no'; $this->validation->set_rules($rules); $this->validation->set_fields($fields); if ($this->validation->run() === true) { $assessmentFix = new AssessmentFix(); $assessmentFix->requireFix($this->input->post('requireFix')); $assessmentFix->setKey($this->_getUser()); $assessmentFix->create(); $viewData['checkpoints'][] = 'You have registered for the assessment fix. You will paid a re-assessment bounty when you submit your assessment.'; $viewData['assessmentFix'] = false; } } } if ($this->input->post('changePassword')) { if ($this->_checkToken()) { $this->load->library('validation'); $rules['currentPassword'] = '******'; $rules['newPassword'] = '******'; $rules['newPasswordRepeat'] = 'required|matches[newPassword]'; $fields['currentPassword'] = '******'; $fields['newPassword'] = '******'; $fields['newPasswordRepeat'] = 'new password repeated'; $this->validation->set_rules($rules); $this->validation->set_fields($fields); if ($this->validation->run() === true) { $marker = new Marker(); $marker->setKey($this->_getUser()); $marker->retrieve(); if ($marker->get('password') === $marker->makePass($this->input->post('currentPassword'))) { $marker->set('password', $marker->makePass($this->input->post('newPassword'))); $viewData['checkpoints'][] = 'You have successfully changed your password.'; $marker->update(); } else { $viewData['errors'][] = 'You did not enter your current password correctly.'; } } } } $viewData['token'] = $this->_token(); $viewData['markerPref'] = $markerPref; if ($this->session->flashdata('action')) { $viewData['checkpoints'][] = $this->session->flashdata('action'); } $viewData['marker'] = $marker; $headData['js'][] = 'eb_ui'; $viewData['assessment'] = false; $viewData[$updatePref] = $updatePref; if ($this->assessment->retrieve($marker->getKey())) { $viewData['assessment'] = true; } $this->load->view('html_head.php', $headData); $this->load->view('page_head.php', array('bodyId' => 'my account', 'userAuth' => @$this->session->userdata('email'), 'markerAuth' => @$this->session->userdata('markerEmail'), 'site_pages' => $this->config->item('site_pages'))); $this->load->view('marker/panel', $viewData); $this->load->view('footer.php', array('site_base' => $this->config->item('base_url'))); }