/** * Displays the results of an evaluation as long as the user requesting the * page is an instructor of the event. * */ public function evaluationResultsAction() { $get = Zend_Registry::get('getFilter'); if (!isset($get->eventId)) { throw new Ot_Exception_Input('msg-error-eventIdNotSet'); } $event = new Event(); $thisEvent = $event->find($get->eventId); if (is_null($thisEvent)) { throw new Ot_Exception_Data('msg-error-noEvent'); } $this->view->event = $thisEvent->toArray(); $workshop = new Workshop(); $thisWorkshop = $workshop->find($thisEvent->workshopId); if (is_null($thisWorkshop)) { throw new Ot_Exception_Data('msg-error-noWorkshop'); } $this->view->workshop = $thisWorkshop->toArray(); $location = new Location(); $thisLocation = $location->find($thisEvent->locationId); if (is_null($thisLocation)) { throw new Ot_Exception_Data('msg-error-noLocation'); } $this->view->location = $thisLocation->toArray(); $instructor = new Event_Instructor(); $instructors = $instructor->getInstructorsForEvent($thisEvent->eventId); $instructorList = array(); foreach ($instructors as $i) { $instructorList[] = $i['firstName'] . ' ' . $i['lastName']; } $this->view->instructors = $instructorList; $this->_checkValidViewer($instructors); if ($thisEvent['evaluationType'] == 'custom') { // get the evaluationId from the eventId $evaluation = new Evaluation(); $where = $evaluation->getAdapter()->quoteInto('eventId = ?', $thisEvent->eventId); $evaluations = $evaluation->fetchAll($where); if ($evaluations->count() == 0) { $this->view->noEvaluationsYet = true; } $this->view->totalEvaluations = $evaluations->count(); $ca = new Ot_Custom(); $questions = $ca->getAttributesForObject('evaluations'); foreach ($questions as &$q) { $q['options'] = $ca->convertOptionsToArray($q['options']); $answers = array(); foreach ($evaluations as $e) { $tmpAnswers = $ca->getData($q['objectId'], $e->evaluationId); $tmp = array(); foreach ($tmpAnswers as $ta) { $tmp[$ta['attribute']['attributeId']] = $ta['value']; } $answers[] = $tmp; } if ($q['type'] == 'ranking' || $q['type'] == 'select' || $q['type'] == 'radio') { foreach ($q['options'] as $value) { $answerCount = 0; foreach ($answers as $a) { if ($a[$q['attributeId']] == $value) { $answerCount++; } } $q['results'][] = array('answerLabel' => $value, 'answerCount' => $answerCount); } } else { foreach ($answers as $a) { $q['results'][] = $a[$q['attributeId']]; } } } $this->view->evaluationResults = $questions; } elseif ($thisEvent['evaluationType'] == 'google') { $evaluationKeys = new Evaluation_Key(); $keys = $evaluationKeys->find($get->eventId); if (is_null($keys)) { throw new Ot_Exception_Data('msg-error-noFormKey'); } $this->view->keys = $keys->toArray(); } $this->view->headScript()->appendFile($this->view->baseUrl() . '/scripts/jquery.gchart.min.js'); }
/** * Handles the evaluation for an event. Shows the user the evaluation and * saves the data from the evaluation. * */ public function indexAction() { $get = Zend_Registry::get('getFilter'); if (!isset($get->eventId)) { throw new Ot_Exception_Input('msg-error-eventIdNotSet'); } $event = new Event(); $eu = new Evaluation_User(); $evaluation = new Evaluation(); $thisEvent = $event->find($get->eventId); if (is_null($thisEvent)) { throw new Ot_Exception_Data('msg-error-noEvent'); } $this->view->event = $thisEvent->toArray(); $thisAccount = Zend_Auth::getInstance()->getIdentity(); $status = $event->getStatusOfUserForEvent($thisAccount->accountId, $thisEvent->eventId); if ($status == "instructor") { throw new Ot_Exception_Access('msg-error-cannotEval'); } if ($status != "attending") { throw new Ot_Exception_Access('msg-error-notAttended'); } $config = Zend_Registry::get('config'); $endDt = strtotime($thisEvent->date . " " . $thisEvent->endTime); if (time() > $endDt + $config->user->numHoursEvaluationAvailability->val * 3600) { throw new Ot_Exception_Access('msg-error-evalEnded'); } if ($eu->hasCompleted($thisAccount->accountId, $thisEvent->eventId)) { throw new Ot_Exception_Access('msg-error-alreadyEval'); } $workshop = new Workshop(); $thisWorkshop = $workshop->find($thisEvent->workshopId); if (is_null($thisWorkshop)) { throw new Ot_Exception_Data('msg-error-noWorkshop'); } $this->view->workshop = $thisWorkshop->toArray(); $instructor = new Event_Instructor(); $instructors = $instructor->getInstructorsForEvent($thisEvent->eventId); $inst = array(); foreach ($instructors as $i) { $inst[] = $i['firstName'] . ' ' . $i['lastName']; } $this->view->instructors = $inst; // lookup the location of the event $location = new Location(); $thisLocation = $location->find($thisEvent->locationId); if (is_null($thisLocation)) { throw new Ot_Exception_Data('msg-error-noLocation'); } $this->view->location = $thisLocation->toArray(); if ($thisEvent->evaluationType == 'custom') { $form = $evaluation->form(); $this->view->form = $form; } if ($this->_request->isPost()) { if ($thisEvent->evaluationType == 'custom') { if ($form->isValid($_POST)) { $custom = new Ot_Custom(); $attributes = $custom->getAttributesForObject('evaluations'); $data = array(); foreach ($attributes as $a) { $data[$a['attributeId']] = is_null($form->getValue('custom_' . $a['attributeId'])) ? '' : $form->getValue('custom_' . $a['attributeId']); } // custom attributes is the custom array that will be save by the CustomAttributes model $evaluation->saveEvaluation($thisEvent->eventId, $thisAccount->accountId, $data); $this->_helper->flashMessenger->addMessage('msg-info-evalThanks'); $this->_redirect('/'); } } elseif ($thisEvent->evaluationType == 'google' && isset($_POST['googleSubmit'])) { $eu = new Evaluation_User(); $dba = $eu->getAdapter(); $dba->beginTransaction(); $data = array('eventId' => $get->eventId, 'accountId' => $thisAccount->accountId); try { $eu->insert($data); } catch (Exception $e) { $dba->rollBack(); throw $e; } $dba->commit(); $this->_helper->flashMessenger->addMessage('msg-info-evalThanks'); $this->_redirect('/'); } } if ($thisEvent->evaluationType == 'google') { $evaluationKeys = new Evaluation_Key(); $keys = $evaluationKeys->find($get->eventId); if (is_null($keys)) { throw new Ot_Exception_Data('msg-error-noFormKey'); } $this->view->keys = $keys->toArray(); } $this->_helper->pageTitle('workshop-evaluate-index:title'); }
public function form() { $form = new Zend_Form(); $form->setAttrib('id', 'workshopForm')->setDecorators(array('FormElements', array('HtmlTag', array('tag' => 'div', 'class' => 'eval_form')), 'Form')); $ca = new Ot_Custom(); $custom = $ca->getAttributesForObject('evaluations', 'Zend_Form'); foreach ($custom as $c) { $form->addElement($c['formRender']); } $submit = $form->createElement('submit', 'submitButton', array('label' => 'Submit Evaluation')); $submit->setDecorators(array(array('ViewHelper', array('helper' => 'formSubmit')))); $cancel = $form->createElement('button', 'cancel', array('label' => 'Cancel')); $cancel->setAttrib('id', 'cancel'); $cancel->setDecorators(array(array('ViewHelper', array('helper' => 'formButton')))); $form->setElementDecorators(array('ViewHelper', 'Errors', array('HtmlTag', array('tag' => 'div', 'class' => 'elm')), array('Label', array('tag' => 'span'))))->addElements(array($submit, $cancel)); return $form; }