public function save($id = null)
 {
     if (permission("reports", "extra")) {
         if ($_POST) {
             if (@empty($_POST["import_time"])) {
                 $_POST["import_time"] = date("Y-m-d");
             }
             $data = new Result($id);
             $data->from_array($_POST);
             $data->save();
             if (@$_POST["file_path"]) {
                 $data->file_size = @filesize($data->file_path);
                 $data->save();
             }
             $type = $id ? 'edit' : 'add';
             // for logs.
             save_logs($type, $data->id);
         }
     }
     redirect("admin/reports");
 }
 public function actionimportExcelTable($id, $issueId)
 {
     //step id
     if (isset($_FILES['Excel'])) {
         $post = Result::model()->importExcelTable($_FILES['Excel']);
         //throw new CHttpException(403,$_FILES['File']);
         Yii::import('ext.phpexcel.IOFactory');
         Yii::import('ext.phpexcel.*');
         Yii::import('ext.phpexcel.XPHPExcel');
         Yii::import('ext.phpexcel.shared.string');
         $newsheet = XPHPExcel::createPHPExcel();
         //$inputFileName='c:\inetpub\wwwroot\vector2014\protected\extensions\examples\reader\sampledata\book1.xlsx';
         $inputFileName = $post["tmp_name"];
         Result::model()->alsjkd($inputFileName);
         //var_dump($post);
         try {
             $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
         } catch (PHPExcel_Reader_Exception $e) {
             die('Error loading file: ' . $e->getMessage());
         }
         $sheet = $objPHPExcel->getSheet(0);
         $highestRow = $sheet->getHighestRow();
         $highestColumnIndex = $sheet->getHighestColumn();
         $index = array('A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, 'G' => 7, 'H' => 8);
         $highestColumn = $index[$highestColumnIndex];
         $index = array_slice($index, 0, $highestColumn);
         $element = new Element();
         $element->stepId = $id;
         $element->typeId = 13;
         $element->save();
         $elementId = $element->id;
         $step = $this->loadModel($id);
         for ($row = 1; $row <= $highestRow; $row++) {
             $rows[] = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow('A', $row)->getValue();
         }
         $columns = array();
         //for ($column =1 ; $column<=$highestColumn; $column++){
         foreach ($index as $key => $position) {
             $columns[] = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($position, 1)->getValue();
         }
         $salida = $step->addGrid($element, $rows, $columns);
         $issue = new Issue();
         //$travelerId= $step->travelerId;
         for ($row = 1; $row <= $highestRow; $row++) {
             foreach ($index as $key => $position) {
                 if ($row >= 1 && $position > 0) {
                     $result = new Result();
                     $result->elementId = $elementId;
                     $result->issueId = $issueId;
                     $result->value = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($position, $row)->getValue();
                     //throw new CHttpException(403, 'row: '.$row.'. Columna: '.$position.'.Value: '.$result->value);
                     $result->colonne = $position - 1;
                     $result->ligne = $row - 2;
                     $result->save();
                 }
                 //throw new CHttpException (403,"exception: ". $iasdasdeId);
                 //$objPHPExcel->getActiveSheet()->getCellByColumnAndRow('A',$row)->getValue();
             }
         }
         $alsdjk = $LKSJAD;
     } else {
         $alsdjk = $LKSJAD;
         throw new CHttpException(403, "Error in the file");
     }
 }
    $select_eval_edit = Security::remove_XSS($_GET['selecteval']);
    $resultedit = Result::load($edit_res_xml);
    $edit_res_form = new EvalForm(EvalForm::TYPE_RESULT_EDIT, $eval[0], $resultedit[0], 'edit_result_form', null, api_get_self() . '?editres=' . $resultedit[0]->get_id() . '&selecteval=' . $select_eval_edit . '&' . api_get_cidreq());
    if ($edit_res_form->validate()) {
        $values = $edit_res_form->exportValues();
        $result = new Result();
        $resultlog = new Result();
        $resultlog->add_result__log($values['hid_user_id'], $select_eval_edit);
        $result->set_id($edit_res_xml);
        $result->set_user_id($values['hid_user_id']);
        $result->set_evaluation_id($select_eval_edit);
        $row_value = isset($values['score']) ? (double) $values['score'] : 0;
        if (!empty($row_value) || $row_value == 0) {
            $result->set_score(floatval(number_format($row_value, api_get_setting('gradebook_number_decimals'))));
        }
        $result->save();
        unset($result);
        header('Location: gradebook_view_result.php?selecteval=' . $select_eval_edit . '&editresmessage=&' . api_get_cidreq());
        exit;
    }
}
$file_type = null;
if (isset($_GET['import'])) {
    $interbreadcrumb[] = array('url' => 'gradebook_view_result.php?selecteval=' . Security::remove_XSS($_GET['selecteval']) . '&' . api_get_cidreq(), 'name' => get_lang('ViewResult'));
    $import_result_form = new DataForm(DataForm::TYPE_IMPORT, 'import_result_form', null, api_get_self() . '?import=&selecteval=' . Security::remove_XSS($_GET['selecteval']), '_blank', '');
    if (!$import_result_form->validate()) {
        Display::display_header(get_lang('Import'));
    }
    $eval[0]->check_lock_permissions();
    if ($_POST['formSent']) {
        if (!empty($_FILES['import_file']['name'])) {
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function actionUpdate($id)
 {
     //this parameter is the issueId!
     Result::model()->cleanRecords();
     //clean old remaining records
     $this->layout = "//layouts/column1";
     $issue = $this->loadIssue($id);
     $redirect = false;
     $issueId = $id;
     //checking if the document is already opened
     $opened = Opendocs::model()->find("issueId={$issueId}");
     //if there has been any
     if (isset($_POST['Result']) or isset($_POST['Checks']) or isset($_POST['Table']) or isset($_POST['File'])) {
         $redirect = true;
         //true means it is actually saving a document. False means is opening the update view
     }
     if (isset($opened)) {
         //the issue has a record in open docs
         $now = time();
         $morethanyesterday = strtotime($opened->createTime);
         $morethanyesterday = $morethanyesterday + 86400;
         if ($now < $morethanyesterday) {
             //less than 24h
             $user = User::model()->findByPk($opened->userId);
             if ($opened->userId == Yii::app()->user->id) {
                 //actual user is the issue's owner
                 if ($redirect) {
                     // the user is on the update view already and has clicked "save" button
                     //saving process:
                     if (isset($_POST['Result'])) {
                         //Result::model()->reset($id);//RESET
                         $redirect = true;
                         $post = $_POST['Result'];
                         if (isset($post['elementid'])) {
                             $elementId = $post['elementid'];
                             foreach ($elementId as $key => $value) {
                                 //if ($value != '') {
                                 if (is_array($value)) {
                                     foreach ($value as $option) {
                                         $model = new Result();
                                         $model->elementId = $key;
                                         $model->issueId = $issueId;
                                         if ($model->value != $option) {
                                             $model->value = $option;
                                             $model->save();
                                         }
                                     }
                                 } else {
                                     $model = Result::model()->find("elementId = {$key} and issueId = {$issueId}");
                                     if ($model === null) {
                                         $model = new Result();
                                         $model->elementId = $key;
                                         $model->issueId = $issueId;
                                     }
                                     if ($model->value != $value) {
                                         $model->value = $value;
                                         $model->save();
                                     }
                                 }
                                 //}
                             }
                         }
                     }
                     if (isset($_POST['Checks'])) {
                         //For Checkboxes: once one is selected there must be at least one checked option. It's impossible to uncheck all of them.
                         // that's the way is supposed to be. Keep track record.
                         $redirect = true;
                         $typeId = 6;
                         $post = $_POST['Checks'];
                         $values = array();
                         if (isset($post['elementid'])) {
                             $elementId = $post['elementid'];
                             foreach ($elementId as $key => $value) {
                                 if (is_array($value)) {
                                     foreach ($value as $option) {
                                         $values[] = $option;
                                         $model = new Result();
                                         $model->elementId = $key;
                                         $model->issueId = $issueId;
                                         if (in_array($option, $value)) {
                                             $what = Element::doesExist($key, $issueId, $option);
                                             if ($what < 1) {
                                                 $model->value = $option;
                                                 $model->save();
                                             }
                                         }
                                     }
                                 }
                                 $statement = " ";
                                 foreach ($values as $cond) {
                                     $statement .= " and t.value NOT like '{$cond}'";
                                 }
                                 $statement = "issueId= {$issueId} and elementId = {$key} " . $statement;
                                 $criteria = new CDbCriteria();
                                 $criteria->condition = $statement;
                                 //"issueId = $issueId and elementId = $key and value NOT LIKE ('$values')";
                                 $modelo = Result::model()->findAll($criteria);
                                 foreach ($modelo as $borrar) {
                                     $borrar->delete();
                                 }
                             }
                         }
                     }
                     if (isset($_POST['Table'])) {
                         //Result::model()->resetTable($id);
                         //Result::model()->setTableOFF($id);
                         $redirect = true;
                         $tables = $_POST['Table'];
                         foreach ($tables as $key => $value) {
                             $elementId = $key;
                             foreach ($value as $row => $array) {
                                 foreach ($array as $column => $response) {
                                     if ($elementId != "xxx") {
                                         $res = Result::model()->find("elementId = {$elementId} and issueId = {$issueId} and colonne = {$column} and ligne = {$row}");
                                         if ($res === null) {
                                             $res = new Result();
                                             $res->elementId = $elementId;
                                             $res->issueId = $issueId;
                                             $res->colonne = $column;
                                             $res->ligne = $row;
                                             //if($response!=null || $response!="" || !isset($response)){
                                         }
                                         if ($response != $res->value) {
                                             $res->value = $response;
                                             $res->save();
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     if (isset($_FILES['File'])) {
                         //throw new CHttpException(403, "update de resultcontroller");
                         foreach ($_FILES['File']['name']['elementid'] as $key => $value) {
                             if (is_array($value)) {
                                 foreach ($value as $k => $v) {
                                     if ($v != '') {
                                         $rnd = rand(0, 99999);
                                         $tmpname = $_FILES['File']['tmp_name']['elementid'][$key][$k];
                                         $fichier = "{$rnd}-" . preg_replace("/[^a-zA-Z0-9\\/_|.-]/", "_", $v);
                                         $extensions = 'img';
                                         $fileType = CFileHelper::getMimeType($v);
                                         //this makes sure it is an image, getimagesize doesn't work
                                         if (move_uploaded_file($tmpname, Yii::app()->params['dfs'] . "/result/" . $fichier)) {
                                             $file = new File();
                                             if (strpos($fileType, 'image') !== false) {
                                                 $image = 1;
                                             } else {
                                                 $image = 0;
                                             }
                                             $file->image = $image;
                                             $file->userId = Yii::app()->user->id;
                                             $file->fileSelected = $v;
                                             $file->link = "result/" . $fichier;
                                             if ($file->save()) {
                                                 $fileId = $file->id;
                                                 $res = new Result();
                                                 $res->elementId = $key;
                                                 $res->issueId = $issueId;
                                                 $res->fileId = $fileId;
                                                 $res->value = $file->id;
                                                 $res->save();
                                             }
                                         }
                                     }
                                 }
                             } else {
                                 if ($value != '') {
                                     $tmp = $_FILES['File']['tmp_name']['elementid'][$key];
                                     $rnd = rand(0, 99999);
                                     $fichier = "{$rnd}-" . preg_replace("/[^a-zA-Z0-9\\/_|.-]/", "_", $value);
                                     if (@getimagesize($tmp)) {
                                         $image = 1;
                                     } else {
                                         $image = 0;
                                     }
                                     if (move_uploaded_file($tmp, Yii::app()->params['dfs'] . "result/" . $fichier)) {
                                         //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
                                         $file = new File();
                                         $file->image = $image;
                                         $file->userId = Yii::app()->user->id;
                                         $file->fileSelected = $value;
                                         $file->link = "result/" . $fichier;
                                         if ($file->save()) {
                                             $fileId = $file->id;
                                             $res = new Result();
                                             $res->elementId = $key;
                                             $res->issueId = $issueId;
                                             $res->fileId = $fileId;
                                             $res->value = $file->id;
                                             $res->save();
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     //delete record in opendocs and exit to view
                     $opened->delete();
                     //the document has been saved and exit. Then the opendoc item has to be deleted
                     $this->redirect(array('issue/view', 'id' => $issueId));
                 } else {
                     //user is accessing the update view of an issue. He's the owner of the issue therefore he can access it.
                     //creates a new opened doc item and access the update view
                     $opened->createTime = new CDbExpression('NOW()');
                     $opened->save();
                     $this->render('update', array('model' => $issue, 'traveler' => $issue->traveler, 'issueId' => $issueId));
                 }
             } else {
                 //less than 24h, not the owner. Then the user has to access the unlocking view if he still wants to access the update view
                 $this->render('open', array('user' => $user, 'opened' => $opened, 'issueId' => $issueId));
             }
         } else {
             //opendocs record is older than 24h.
             if ($redirect) {
                 //the user is on the update view already and has clicked "save" button
                 if (isset($_POST['Result'])) {
                     //Result::model()->reset($id);//RESET
                     $redirect = true;
                     $post = $_POST['Result'];
                     if (isset($post['elementid'])) {
                         $elementId = $post['elementid'];
                         foreach ($elementId as $key => $value) {
                             //if ($value != '') {
                             if (is_array($value)) {
                                 foreach ($value as $option) {
                                     $model = new Result();
                                     $model->elementId = $key;
                                     $model->issueId = $issueId;
                                     if ($model->value != $option) {
                                         $model->value = $option;
                                         $model->save();
                                     }
                                 }
                             } else {
                                 $model = Result::model()->find("elementId = {$key} and issueId = {$issueId}");
                                 if ($model === null) {
                                     $model = new Result();
                                     $model->elementId = $key;
                                     $model->issueId = $issueId;
                                 }
                                 if ($model->value != $value) {
                                     $model->value = $value;
                                     $model->save();
                                 }
                             }
                             //}
                         }
                     }
                 }
                 if (isset($_POST['Checks'])) {
                     //Result::model()->resetBox($id);//RESET
                     $redirect = true;
                     $typeId = 6;
                     $post = $_POST['Checks'];
                     $values = array();
                     if (isset($post['elementid'])) {
                         $elementId = $post['elementid'];
                         foreach ($elementId as $key => $value) {
                             if (is_array($value)) {
                                 foreach ($value as $option) {
                                     $values[] = $option;
                                     $model = new Result();
                                     $model->elementId = $key;
                                     $model->issueId = $issueId;
                                     if (in_array($option, $value)) {
                                         $what = Element::doesExist($key, $issueId, $option);
                                         if ($what < 1) {
                                             $model->value = $option;
                                             $model->save();
                                         }
                                     }
                                 }
                             }
                             $statement = " ";
                             foreach ($values as $cond) {
                                 $statement .= " and t.value NOT like '{$cond}'";
                             }
                             $statement = "issueId= {$issueId} and elementId = {$key} " . $statement;
                             $criteria = new CDbCriteria();
                             $criteria->condition = $statement;
                             //"issueId = $issueId and elementId = $key and value NOT LIKE ('$values')";
                             $modelo = Result::model()->findAll($criteria);
                             foreach ($modelo as $borrar) {
                                 $borrar->delete();
                             }
                         }
                     }
                 }
                 if (isset($_POST['Table'])) {
                     //Result::model()->resetTable($id);
                     //Result::model()->setTableOFF($id);
                     $redirect = true;
                     $tables = $_POST['Table'];
                     foreach ($tables as $key => $value) {
                         $elementId = $key;
                         foreach ($value as $row => $array) {
                             foreach ($array as $column => $response) {
                                 if ($elementId != "xxx") {
                                     $res = Result::model()->find("elementId = {$elementId} and issueId = {$issueId} and colonne = {$column} and ligne = {$row}");
                                     if ($res === null) {
                                         $res = new Result();
                                         $res->elementId = $elementId;
                                         $res->issueId = $issueId;
                                         $res->colonne = $column;
                                         $res->ligne = $row;
                                         //if($response!=null || $response!="" || !isset($response)){
                                     }
                                     if ($response != $res->value) {
                                         $res->value = $response;
                                         $res->save();
                                     }
                                 }
                             }
                         }
                     }
                 }
                 if (isset($_FILES['File'])) {
                     //throw new CHttpException(403, "update de resultcontroller");
                     foreach ($_FILES['File']['name']['elementid'] as $key => $value) {
                         if (is_array($value)) {
                             foreach ($value as $k => $v) {
                                 if ($v != '') {
                                     $rnd = rand(0, 99999);
                                     $tmpname = $_FILES['File']['tmp_name']['elementid'][$key][$k];
                                     $fichier = "{$rnd}-" . preg_replace("/[^a-zA-Z0-9\\/_|.-]/", "_", $v);
                                     if (move_uploaded_file($tmpname, Yii::app()->params['dfs'] . "/result/" . $fichier)) {
                                         $file = new File();
                                         if (@getimagesize($tmpname)) {
                                             $image = 1;
                                         } else {
                                             $image = 0;
                                         }
                                         $file->image = $image;
                                         $file->userId = Yii::app()->user->id;
                                         $file->fileSelected = $v;
                                         $file->link = "result/" . $fichier;
                                         if ($file->save()) {
                                             $fileId = $file->id;
                                             $res = new Result();
                                             $res->elementId = $key;
                                             $res->issueId = $issueId;
                                             $res->fileId = $fileId;
                                             $res->value = $file->id;
                                             $res->save();
                                         }
                                     }
                                 }
                             }
                         } else {
                             if ($value != '') {
                                 $tmp = $_FILES['File']['tmp_name']['elementid'][$key];
                                 $rnd = rand(0, 99999);
                                 $fichier = "{$rnd}-" . preg_replace("/[^a-zA-Z0-9\\/_|.-]/", "_", $value);
                                 if (@getimagesize($tmp)) {
                                     $image = 1;
                                 } else {
                                     $image = 0;
                                 }
                                 if (move_uploaded_file($tmp, Yii::app()->params['dfs'] . "/result/" . $fichier)) {
                                     //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
                                     $file = new File();
                                     $file->image = $image;
                                     $file->userId = Yii::app()->user->id;
                                     $file->fileSelected = $value;
                                     $file->link = "result/" . $fichier;
                                     if ($file->save()) {
                                         $fileId = $file->id;
                                         $res = new Result();
                                         $res->elementId = $key;
                                         $res->issueId = $issueId;
                                         $res->fileId = $fileId;
                                         $res->value = $file->id;
                                         $res->save();
                                     }
                                 }
                             }
                         }
                     }
                 }
                 //delete record in opendocs and exit to view
                 $opened->delete();
                 $this->redirect(array('issue/view', 'id' => $issueId));
             } else {
                 //user is accessing the update view of an issue
                 //delete old opendocs record and create a new one
                 $opened->delete();
                 $model = new Opendocs();
                 $model->issueId = $issueId;
                 $model->userId = Yii::app()->user->id;
                 $model->createTime = new CDbExpression('GETDATE()');
                 $model->save();
                 $this->render('update', array('model' => $issue, 'traveler' => $issue->traveler, 'issueId' => $issueId));
             }
         }
     } else {
         //there is not previous opendocs record. Then no restrictions.
         if ($redirect) {
             //user is saving the issue
             if (isset($_POST['Result'])) {
                 //Result::model()->reset($id);//RESET
                 $redirect = true;
                 $post = $_POST['Result'];
                 if (isset($post['elementid'])) {
                     $elementId = $post['elementid'];
                     foreach ($elementId as $key => $value) {
                         //if ($value != '') {
                         if (is_array($value)) {
                             foreach ($value as $option) {
                                 $model = new Result();
                                 $model->elementId = $key;
                                 $model->issueId = $issueId;
                                 if ($model->value != $option) {
                                     $model->value = $option;
                                     $model->save();
                                 }
                             }
                         } else {
                             $model = Result::model()->find("elementId = {$key} and issueId = {$issueId}");
                             if ($model === null) {
                                 $model = new Result();
                                 $model->elementId = $key;
                                 $model->issueId = $issueId;
                             }
                             if ($model->value != $value) {
                                 $model->value = $value;
                                 $model->save();
                             }
                         }
                         //}
                     }
                 }
             }
             if (isset($_POST['Checks'])) {
                 //Result::model()->resetBox($id);//RESET
                 $redirect = true;
                 $typeId = 6;
                 $post = $_POST['Checks'];
                 $values = array();
                 if (isset($post['elementid'])) {
                     $elementId = $post['elementid'];
                     foreach ($elementId as $key => $value) {
                         if (is_array($value)) {
                             foreach ($value as $option) {
                                 $values[] = $option;
                                 $model = new Result();
                                 $model->elementId = $key;
                                 $model->issueId = $issueId;
                                 if (in_array($option, $value)) {
                                     $what = Element::doesExist($key, $issueId, $option);
                                     if ($what < 1) {
                                         $model->value = $option;
                                         $model->save();
                                     }
                                 }
                             }
                         }
                         $statement = " ";
                         foreach ($values as $cond) {
                             $statement .= " and t.value NOT like '{$cond}'";
                         }
                         $statement = "issueId= {$issueId} and elementId = {$key} " . $statement;
                         $criteria = new CDbCriteria();
                         $criteria->condition = $statement;
                         //"issueId = $issueId and elementId = $key and value NOT LIKE ('$values')";
                         $modelo = Result::model()->findAll($criteria);
                         foreach ($modelo as $borrar) {
                             $borrar->delete();
                         }
                     }
                 }
             }
             if (isset($_POST['Table'])) {
                 //Result::model()->resetTable($id);
                 //Result::model()->setTableOFF($id);
                 $redirect = true;
                 $tables = $_POST['Table'];
                 foreach ($tables as $key => $value) {
                     $elementId = $key;
                     foreach ($value as $row => $array) {
                         foreach ($array as $column => $response) {
                             if ($elementId != "xxx") {
                                 $res = Result::model()->find("elementId = {$elementId} and issueId = {$issueId} and colonne = {$column} and ligne = {$row}");
                                 if ($res === null) {
                                     $res = new Result();
                                     $res->elementId = $elementId;
                                     $res->issueId = $issueId;
                                     $res->colonne = $column;
                                     $res->ligne = $row;
                                     //if($response!=null || $response!="" || !isset($response)){
                                 }
                                 if ($response != $res->value) {
                                     $res->value = $response;
                                     $res->save();
                                 }
                             }
                         }
                     }
                 }
             }
             if (isset($_FILES['File'])) {
                 //throw new CHttpException(403, "update de resultcontroller");
                 foreach ($_FILES['File']['name']['elementid'] as $key => $value) {
                     if (is_array($value)) {
                         foreach ($value as $k => $v) {
                             if ($v != '') {
                                 $rnd = rand(0, 99999);
                                 $tmpname = $_FILES['File']['tmp_name']['elementid'][$key][$k];
                                 $fichier = "{$rnd}-" . preg_replace("/[^a-zA-Z0-9\\/_|.-]/", "_", $v);
                                 $fileType = CFileHelper::getMimeType($v);
                                 //this makes sure it is an image, getimagesize doesn't work
                                 $noexe = CFileHelper::getExtension($v);
                                 if (strpos($noexe, 'py') !== false or strpos($noexe, 'exe') !== false) {
                                     throw new CHttpException(403, "Forbidden type of file");
                                 }
                                 if (move_uploaded_file($tmpname, Yii::app()->params['dfs'] . "/result/" . $fichier)) {
                                     $file = new File();
                                     if (strpos($fileType, 'image') !== false) {
                                         $image = 1;
                                     } else {
                                         $image = 0;
                                     }
                                     $file->image = $image;
                                     $file->userId = Yii::app()->user->id;
                                     $file->fileSelected = $v;
                                     $file->link = "result/" . $fichier;
                                     if ($file->save()) {
                                         $fileId = $file->id;
                                         $res = new Result();
                                         $res->elementId = $key;
                                         $res->issueId = $issueId;
                                         $res->fileId = $fileId;
                                         $res->value = $file->id;
                                         $res->save();
                                     }
                                 }
                             }
                         }
                     } else {
                         if ($value != '') {
                             $tmp = $_FILES['File']['tmp_name']['elementid'][$key];
                             $rnd = rand(0, 99999);
                             $fichier = "{$rnd}-" . preg_replace("/[^a-zA-Z0-9\\/_|.-]/", "_", $value);
                             $fileType = CFileHelper::getMimeType($v);
                             //this makes sure it is an image, getimagesize doesn't work
                             $noexe = CFileHelper::getExtension($v);
                             if (strpos($noexe, 'py') !== false or strpos($noexe, 'exe') !== false) {
                                 throw new CHttpException(403, "Forbidden type of file");
                             }
                             if (move_uploaded_file($tmp, Yii::app()->params['dfs'] . "/result/" . $fichier)) {
                                 //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
                                 $file = new File();
                                 if (strpos($fileType, 'image') !== false) {
                                     $image = 1;
                                 } else {
                                     $image = 0;
                                 }
                                 $file->image = $image;
                                 $file->userId = Yii::app()->user->id;
                                 $file->fileSelected = $value;
                                 $file->link = "result/" . $fichier;
                                 if ($file->save()) {
                                     $fileId = $file->id;
                                     $res = new Result();
                                     $res->elementId = $key;
                                     $res->issueId = $issueId;
                                     $res->fileId = $fileId;
                                     $res->value = $file->id;
                                     $res->save();
                                 }
                             }
                         }
                     }
                 }
             }
             $this->redirect(array('issue/view', 'id' => $issueId));
         } else {
             //user is trying to access the update view. Then create a new record in opendocs and access update view
             $model = new Opendocs();
             $model->issueId = $issueId;
             $model->userId = Yii::app()->user->id;
             $model->createTime = new CDbExpression('GETDATE()');
             $model->save();
             $this->render('update', array('model' => $issue, 'traveler' => $issue->traveler, 'issueId' => $issueId));
         }
     }
 }
 public function actionSave($id)
 {
     // Получаем куки для опроса
     /*
             define('COOKIE_NAME', 'poll_genplanmos_ru');
             $isCookie = isset(Yii::app()->request->cookies[COOKIE_NAME]->value);
             
             $pollCookie = $isCookie ? 
            Yii::app()->request->cookies[COOKIE_NAME] :  
            new CHttpCookie(COOKIE_NAME, ''); 
            
             $pollCookieValue = $isCookie? CJSON::decode($pollCookie->value) : array();
     * 
     */
     // Авторизован ли пользователь
     if (Yii::app()->user->isAuthenticated() === false) {
         $this->redirect(Yii::app()->user->loginUrl);
     }
     if (($user = Yii::app()->user->getProfile()) === null) {
         Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'User not found.'));
         Yii::app()->user->logout();
         $this->redirect((array) '/user/account/login');
     }
     $poll = Poll::model()->active()->with(array('questions' => array('scopes' => 'active')))->findByPK((int) $id);
     if (!$poll) {
         throw new CHttpException(404, Yii::t('PollModule.poll', 'Страница не найдена'));
     }
     // Поиск результата
     $result = Result::model()->find('t.user_id = :user_id AND t.poll_id = :poll_id', array(':user_id' => $user->id, ':poll_id' => $poll->id));
     if ($result !== null) {
         throw new CHttpException(403, Yii::t('PollModule.poll', 'Вы уже проходили данный опрос'));
     }
     $result = new Result();
     $result->user_id = $user->id;
     $result->poll_id = $poll->id;
     // Обработка результата
     if (($data = Yii::app()->getRequest()->getPost('question')) !== null) {
         // Формирование списка ответов
         $answers = array();
         foreach ($poll->questions as $question) {
             $formValue = isset($data[$question->id]) ? $data[$question->id] : null;
             switch ($question->type) {
                 case Question::TYPE_VARIANT:
                     $answer = new Answer();
                     $answer->question_id = $question->id;
                     $answer->variant_id = $formValue !== null ? (int) $formValue : $formValue;
                     $answers[] = $answer;
                     break;
                 case Question::TYPE_MULTIPLE:
                     // Просматриваем полученные ответы
                     if (!isset($formValue) || !is_array($formValue)) {
                         break;
                     }
                     foreach ($formValue as $value) {
                         $answer = new Answer();
                         $answer->question_id = $question->id;
                         $answer->variant_id = (int) $value;
                         $answers[] = $answer;
                     }
                     break;
                 default:
                     $answer = new Answer();
                     $answer->question_id = $question->id;
                     $answer->value = $formValue !== null ? $formValue : '';
                     $answers[] = $answer;
                     break;
             }
             $result->answers = $answers;
         }
         if ($result->validate()) {
             $result->save();
             Yii::app()->ajax->success(array('html' => $this->widget('application.modules.poll.widgets.PollWidget', array('model_id' => $poll->id), true)));
         } else {
             Yii::app()->ajax->failure(array('message' => '', 'errors' => $result->getErrors()));
         }
     }
 }
 public function get_result()
 {
     require_once "application/libraries/simple_html_dom.php";
     ini_set('error_reporting', E_ALL);
     ini_set('display_errors', 1);
     ini_set("allow_url_fopen", TRUE);
     $html = new Simple_HTML_DOM($this->result_list);
     if (empty($html)) {
         echo "ไม่สามารถดึงข้อมูลได้";
     } else {
         $num = count($html->find("table[width=500] tbody tr td a"));
         $x = 3;
         for ($i = 0; $i < $num; $i++) {
             $result_type_id = 0;
             //	set default
             $links = iconv("tis-620", "utf-8", $html->find("table[width=500] tbody tr td a", $i)->href);
             $file_name = str_replace("Data/", "", $links);
             if (stripos(trim(iconv("tis-620", "utf-8", $html->find("table[width=500] tbody tr td a", $i)->plaintext)), "สัปดาห์")) {
                 $result_type_id = 1;
             }
             if (stripos(trim(iconv("tis-620", "utf-8", $html->find("table[width=500] tbody tr td a", $i)->plaintext)), "เดือน")) {
                 $result_type_id = 2;
             }
             if (!file_exists("uploads/results/" . $file_name)) {
                 if (!file_exists("uploads/results")) {
                     $maskdir = @umask(0);
                     @mkdir("uploads/results", 0777);
                     @umask($maskdir);
                 }
                 $data = @file_get_contents("http://164.115.100.119/rpt_m/" . $links);
                 @file_put_contents("uploads/results/" . $file_name, $data);
                 $title = trim(iconv("tis-620", "utf-8", $html->find("table[width=500] tbody tr td a", $i)->plaintext));
                 $date = @trim(iconv("tis-620", "utf-8", $html->find("table[width=500] tbody tr", $x)->children(2)->plaintext));
                 $date .= " " . @trim(iconv("tis-620", "utf-8", $html->find("table[width=500] tbody tr", $x)->children(2)->next_sibling()->plaintext));
                 $foo = new Result();
                 $foo->title = $title . " (กส.9)";
                 $foo->result_type_id = $result_type_id;
                 $foo->deposits = 2;
                 $foo->file_path = "uploads/results/{$file_name}";
                 $foo->import_time = $date;
                 $foo->show_date = $date;
                 $foo->file_size = filesize($foo->file_path);
                 $foo->save();
             }
             $x++;
         }
     }
 }
 static function transaction_33($original_data, $web_service_details)
 {
     global $data_list;
     $data = Migration::soap_call($web_service_details, 'notaDetalles', array('uididpersona' => $original_data['item_id'], 'uididprograma' => $original_data['orig_id'], 'intIdSede' => $original_data['branch_id']));
     if ($data['error'] == false) {
         $uidIdPrograma = $original_data['orig_id'];
         $uidIdPersona = $original_data['item_id'];
         $score = $data['name'];
         $session_id = self::get_session_id_by_programa_id($uidIdPrograma, $data_list);
         $user_id = self::get_user_id_by_persona_id($uidIdPersona, $data_list);
         if (empty($user_id)) {
             return array('message' => "User does not exists in DB: {$uidIdPersona}", 'status_id' => self::TRANSACTION_STATUS_FAILED);
         }
         if (empty($session_id)) {
             return array('message' => "Session does not exists in DB: {$uidIdPrograma}", 'status_id' => self::TRANSACTION_STATUS_FAILED);
         }
         $course_list = SessionManager::get_course_list_by_session_id($session_id);
         if (!empty($course_list)) {
             $course_data = current($course_list);
             if (isset($course_data['code'])) {
                 $gradebook = new Gradebook();
                 $gradebook = $gradebook->get_first(array('where' => array('course_code = ? AND session_id = ?' => array($course_data['code'], $session_id))));
                 error_log("Looking gradebook in course code:  {$course_data['code']} - session_id: {$session_id}");
                 if (!empty($gradebook)) {
                     //Check if gradebook exists
                     $eval = new Evaluation();
                     $evals_found = $eval->load(null, null, null, $gradebook['id'], null, null);
                     //Try to create a gradebook evaluation
                     if (empty($evals_found)) {
                         error_log("Trying to create a new evaluation in course code:  {$course_data['code']} - session_id: {$session_id}");
                         $params = array('session_id' => $session_id, 'gradebook_description' => 'Evaluación General', 'gradebook_evaluation_type_id' => 0);
                         self::create_gradebook_evaluation($params);
                         $evals_found = $eval->load(null, null, null, $gradebook['id'], null, null);
                     }
                     if (!empty($evals_found)) {
                         $evaluation = current($evals_found);
                         $eval_id = $evaluation->get_id();
                         error_log("Gradebook exists: {$gradebook['id']} eval_id: {$eval_id}");
                         //Eval found
                         $res = new Result();
                         $check_result = Result::load(null, $user_id, $eval_id);
                         if (!empty($check_result) && isset($check_result[0])) {
                             // Gradebook result found. Updating...
                             $res->set_evaluation_id($eval_id);
                             $res->set_user_id($user_id);
                             $res->set_score($score);
                             $res->set_id($check_result[0]->get_id());
                             $res->save();
                             $eval_result = Result::load(null, $user_id, $eval_id);
                             return array('entity' => 'gradebook_evaluation_result', 'before' => $check_result, 'after' => $eval_result, 'message' => "Gradebook result edited ", 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL);
                         } else {
                             // Gradebook result not found. Creating...
                             // @todo disable when moving to production
                             $res->set_evaluation_id($eval_id);
                             $res->set_user_id($user_id);
                             //if no scores are given, don't set the score
                             $res->set_score($score);
                             $res->add();
                             $eval_result = Result::load(null, $user_id, $eval_id);
                             //$message = "Gradebook result not modified because gradebook result does not exist for user_id: $user_id - eval_id: $eval_id - gradebook_id: {$gradebook['id']} - course: {$course_data['code']} - session_id: $session_id";
                             return array('entity' => 'gradebook_evaluation_result', 'before' => null, 'after' => $eval_result, 'message' => "Gradebook result added because it did not exist for update", 'status_id' => self::TRANSACTION_STATUS_SUCCESSFUL);
                         }
                     } else {
                         $message = "Evaluation not found in gradebook: {$gradebook['id']} : in course: {$course_data['code']} - session_id: {$session_id}";
                     }
                 } else {
                     $message = "Gradebook does not exists in course: {$course_data['code']} - session_id: {$session_id}";
                 }
             } else {
                 $message = "Something is wrong with the course ";
             }
         } else {
             $message = "NO course found for session id: {$session_id}";
         }
         return array('message' => $message, 'status_id' => self::TRANSACTION_STATUS_FAILED);
     } else {
         return $data;
     }
 }
 public function actionimportExcelTable($id, $issueId)
 {
     //step id
     if (isset($_FILES['Excel'])) {
         $post = Result::model()->importExcelTable($_FILES['Excel']);
         //var_dump($post);
         Yii::import('ext.phpexcel.IOFactory');
         Yii::import('ext.phpexcel.*');
         Yii::import('ext.phpexcel.XPHPExcel');
         Yii::import('ext.phpexcel.shared.string');
         $newsheet = XPHPExcel::createPHPExcel();
         $inputFileName = $post;
         try {
             $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
         } catch (PHPExcel_Reader_Exception $e) {
             die('Error loadinng file: ' . $post);
             //$e->getMessage());
         }
         $sheet = $objPHPExcel->getSheet(0);
         $highestRow = $sheet->getHighestRow();
         $highestColumnIndex = $sheet->getHighestColumn();
         $index = array('A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, 'G' => 7, 'H' => 8);
         $highestColumn = $index[$highestColumnIndex];
         $index = array_slice($index, 0, $highestColumn);
         $element = new Element();
         $element->stepId = $id;
         $element->typeId = 13;
         $element->save();
         $elementId = $element->id;
         $step = $this->loadModel($id);
         for ($row = 1; $row <= $highestRow; $row++) {
             $rows[] = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow('A', $row)->getValue();
         }
         $columns = array();
         foreach ($index as $key => $position) {
             $columns[] = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($position, 1)->getValue();
         }
         //$salida=$step->addGrid($element, $rows, $columns);
         $issue = new Issue();
         for ($row = 1; $row <= $highestRow; $row++) {
             foreach ($index as $key => $position) {
                 if ($row >= 1 && $position > 0) {
                     $result = new Result();
                     $result->elementId = $elementId;
                     $result->issueId = $issueId;
                     $result->value = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($position, $row)->getValue();
                     $result->colonne = $position - 1;
                     $result->ligne = $row - 2;
                     throw new CHttpException(403, 'row: ' . $result->ligne . '. Columna: ' . $result->colonne . '.Value: ' . $result->value);
                     $result->save();
                 }
             }
         }
         //$this->redirect(array('view','id'=>$id));
     } else {
         throw new CHttpException(403, "Failure loading file");
     }
 }
 public function add_result()
 {
     $requirements = ['exp_id', 'user_id', 'data'];
     $check = self::check_requirements($requirements);
     if ($check) {
         return Error::make(0, 100, $check);
     }
     $experiment = Experiment::where('exp_id', '=', Input::get('exp_id'))->first();
     if (is_null($experiment)) {
         return Error::make(1, 10);
     }
     $user = User::where('user_id', '=', Input::get('user_id'))->first();
     if (is_null($user)) {
         return Error::make(1, 1);
     }
     if (Input::has('result_id')) {
         $res = Result::where('result_id', '=', Input::get('result_id'))->first();
         if (intval(Input::get('exp_id')) != intval($res->exp_id)) {
             return Error::make(1, 11);
         }
         if (intval(Input::get('user_id')) != intval($res->user_id)) {
             return Error::make(1, 12);
         }
     }
     $columns = json_decode($experiment->specifications, true)["columns"];
     $results = json_decode(Input::get('data'), true);
     foreach ($results as $reading) {
         foreach ($columns as $column) {
             if (array_key_exists($column["title"], $reading)) {
                 if (!is_null($column["subcolumns"]) && sizeof($column["subcolumns"]) > 0) {
                     foreach ($column["subcolumns"] as $subcolumn) {
                         if (!array_key_exists($subcolumn["title"], $reading[$column["title"]])) {
                             return Error::make(101, 101, "Column " . $column["title"] . " has missing subcolumn " . $subcolumn["title"]);
                         }
                     }
                 }
             } else {
                 return Error::make(101, 101, "Missing column " . $column["title"]);
             }
         }
     }
     if (Input::has('result_id')) {
         try {
             Result::where('result_id', '=', intval(Input::get('result_id')))->update(array('data' => json_encode($results)));
             return Error::success("Results successfully updated", array('result_id' => intval(Input::get('result_id'))));
         } catch (Exception $e) {
             return Error::make(101, 101, $e->getMessage());
         }
     } else {
         $res = new Result();
         $res->data = json_encode($results);
         $res->user_id = intval(Input::get('user_id'));
         $res->exp_id = intval(Input::get('exp_id'));
         try {
             $res->save();
             return Error::success("Result successfully added!", array('result_id' => $res->id));
         } catch (Exception $e) {
             return Error::make(101, 101, $e->getMessage());
         }
     }
 }
 public function submitExam($id)
 {
     $questions = $this->getExamData($id);
     $marks = 0;
     for ($i = 0; $i <= $questions['size']; $i = $i + 2) {
         if (trim(Input::get('opt' . $i)) === trim($questions['opt' . $i][4])) {
             $marks = $marks + 2;
         }
     }
     $result = new Result();
     $result->marks = $marks;
     $result->studentloginid = Session::get('user')->id;
     $result->examdate = date(1);
     $result->examid = $id;
     $result->attempt = 1;
     if ($result->save()) {
         return 'your marks are ' . $marks;
     } else {
         return 'try again';
     }
 }
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id the ID of the model to be updated
  */
 public function actionUpdate($id)
 {
     //$id corresponds to issueID NOT TO id!!!!!!!!!!!!
     $keys = Result::model()->encontrarPorId($id);
     $todos = implode(" , ", $keys);
     //$keysCont=0;
     //Result::model()->encontrarPorId($id);
     $this->layout = "//layouts/column1";
     $issue = $this->loadIssue($id);
     $redirect = false;
     $issueId = $id;
     //checking if the document is already opened
     $opened = Opendocs::model()->find("issueId={$issueId}");
     if (isset($_POST['Result'])) {
         //Result::model()->reset($id);//RESET
         $redirect = true;
         $post = $_POST['Result'];
         if (isset($post['elementid'])) {
             $elementId = $post['elementid'];
             foreach ($elementId as $key => $value) {
                 //if ($value != '') {
                 if (is_array($value)) {
                     foreach ($value as $option) {
                         $model = new Result();
                         $model->elementId = $key;
                         $model->issueId = $issueId;
                         if ($model->value != $option) {
                             $model->value = $option;
                             $model->save();
                         }
                     }
                 } else {
                     $model = Result::model()->find("elementId = {$key} and issueId = {$issueId}");
                     if ($model === null) {
                         $model = new Result();
                         $model->elementId = $key;
                         $model->issueId = $issueId;
                     }
                     if ($model->value != $value) {
                         $model->value = $value;
                         $model->save();
                     }
                 }
                 //}
             }
         }
     }
     if (isset($_POST['Checks'])) {
         //Result::model()->resetBox($id);//RESET
         $redirect = true;
         $typeId = 6;
         $post = $_POST['Checks'];
         $values = array();
         if (isset($post['elementid'])) {
             $elementId = $post['elementid'];
             foreach ($elementId as $key => $value) {
                 if (is_array($value)) {
                     foreach ($value as $option) {
                         $values[] = $option;
                         $model = new Result();
                         $model->elementId = $key;
                         $model->issueId = $issueId;
                         if (in_array($option, $value)) {
                             $what = Element::doesExist($key, $issueId, $option);
                             if ($what < 1) {
                                 $model->value = $option;
                                 $model->save();
                             }
                         }
                     }
                 }
                 $statement = " ";
                 foreach ($values as $cond) {
                     $statement .= " and t.value NOT like '{$cond}'";
                 }
                 $statement = "issueId= {$issueId} and elementId = {$key} " . $statement;
                 $criteria = new CDbCriteria();
                 $criteria->condition = $statement;
                 //"issueId = $issueId and elementId = $key and value NOT LIKE ('$values')";
                 $modelo = Result::model()->findAll($criteria);
                 foreach ($modelo as $borrar) {
                     $borrar->delete();
                 }
             }
         }
     }
     if (isset($_POST['Table'])) {
         //Result::model()->resetTable($id);
         //Result::model()->setTableOFF($id);
         $redirect = true;
         $tables = $_POST['Table'];
         foreach ($tables as $key => $value) {
             $elementId = $key;
             foreach ($value as $row => $array) {
                 foreach ($array as $column => $response) {
                     if ($elementId != "xxx") {
                         $res = Result::model()->find("elementId = {$elementId} and issueId = {$issueId} and colonne = {$column} and ligne = {$row}");
                         if ($res === null) {
                             $res = new Result();
                             $res->elementId = $elementId;
                             $res->issueId = $issueId;
                             $res->colonne = $column;
                             $res->ligne = $row;
                             //if($response!=null || $response!="" || !isset($response)){
                         }
                         if ($response != $res->value) {
                             $res->value = $response;
                             $res->save();
                         }
                     }
                 }
             }
         }
     }
     //else Result::model()->resetTable($id);
     //resetEmptyTable($id);
     if (isset($_FILES['File'])) {
         foreach ($_FILES['File']['name']['elementid'] as $key => $value) {
             if (is_array($value)) {
                 foreach ($value as $k => $v) {
                     if ($v != '') {
                         $rnd = rand(0, 99999);
                         $tmpname = $_FILES['File']['tmp_name']['elementid'][$key][$k];
                         $fichier = "{$rnd}-" . preg_replace("/[^a-zA-Z0-9\\/_|.-]/", "_", $v);
                         if (move_uploaded_file($tmpname, Yii::app()->params['dfs'] . "/result/" . $fichier)) {
                             $file = new File();
                             if (@getimagesize($tmpname)) {
                                 $image = 1;
                             } else {
                                 $image = 0;
                             }
                             $file->image = $image;
                             $file->userId = Yii::app()->user->id;
                             $file->fileSelected = $v;
                             $file->link = "result/" . $fichier;
                             if ($file->save()) {
                                 $fileId = $file->id;
                                 $res = new Result();
                                 $res->elementId = $key;
                                 $res->issueId = $issueId;
                                 $res->fileId = $fileId;
                                 $res->value = $file->id;
                                 $res->save();
                             }
                         }
                     }
                 }
             } else {
                 if ($value != '') {
                     $tmp = $_FILES['File']['tmp_name']['elementid'][$key];
                     $rnd = rand(0, 99999);
                     $fichier = "{$rnd}-" . preg_replace("/[^a-zA-Z0-9\\/_|.-]/", "_", $value);
                     if (@getimagesize($tmp)) {
                         $image = 1;
                     } else {
                         $image = 0;
                     }
                     if (move_uploaded_file($tmp, Yii::app()->params['dfs'] . "/result/" . $fichier)) {
                         //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
                         $file = new File();
                         $file->image = $image;
                         $file->userId = Yii::app()->user->id;
                         $file->fileSelected = $value;
                         $file->link = "result/" . $fichier;
                         if ($file->save()) {
                             $fileId = $file->id;
                             $res = new Result();
                             $res->elementId = $key;
                             $res->issueId = $issueId;
                             $res->fileId = $fileId;
                             $res->value = $file->id;
                             $res->save();
                         }
                     }
                 }
             }
         }
     }
     if (isset($opened) && $redirect == false) {
         //si no se ha modificado nada y hay item
         if ($opened->userId != Yii::app()->user->id) {
             $now = time();
             $morethanyesterday = strtotime($opened->createTime);
             $morethanyesterday = $morethanyesterday + 86400;
             if ($now < $morethanyesterday) {
                 //si hay un registro con menos de 24h
                 $user = User::model()->findByPk($opened->userId);
                 $this->render('open', array('user' => $user, 'opened' => $opened, 'issueId' => $issueId));
             }
         } else {
             $opened->createTime = new CDbExpression('GETDATE()');
             $opened->save();
             $this->render('update', array('model' => $issue, 'traveler' => $issue->traveler, 'issueId' => $issueId));
         }
     } else {
         if ($redirect) {
             //si han habido cambios, es decir, se ha dado a guardar!!
             $opened->delete();
             $this->redirect(array('issue/view', 'id' => $issueId));
         }
     }
     if (!isset($opened)) {
         $model = new Opendocs();
         $model->issueId = $issueId;
         $model->userId = Yii::app()->user->id;
         $model->createTime = new CDbExpression('GETDATE()');
         $model->save();
         $this->render('update', array('model' => $issue, 'traveler' => $issue->traveler, 'issueId' => $issueId));
     }
 }
Exemple #12
0
 /**
  * Store the answer
  *
  * @return mixed
  */
 public function storeAction()
 {
     $token = $this->getToken();
     if (!$token) {
         return Redirect::route('info')->with('message', 'Токен не найден');
     }
     if ($token->status != Token::TOKEN_STATUS_STARTED) {
         return Redirect::route('token.index', ['token' => $token->token]);
     }
     if (!$this->isTokenValid($token)) {
         Session::forget('token_string');
         $token->status = Token::TOKEN_STATUS_EXPIRED;
         $token->save();
         return Redirect::route('info')->with('message', 'Время теста истекло, ответ не засчитан');
     }
     $questionId = Session::get('question_id', false);
     $testAnswers = Session::get('test_answers', []);
     if (!$questionId || !is_numeric($questionId)) {
         return Redirect::route('info')->with('message', 'Ошибка данных сессии.');
     }
     $question = Question::find((int) $questionId);
     if (!$question) {
         return Redirect::route('info')->with('message', 'Ошибка данных сессии. Вопрос не найден.');
     }
     $data = Input::all();
     $result = new Result();
     $result->token = $token->token;
     $result->test_id = $token->test->id;
     $result->question_id = (int) $questionId;
     $result->q_text = $question->text;
     $result->q_image = $question->image;
     /**
      * Process the answer depending on question type
      */
     switch ($question->type) {
         case Question::TYPE_RADIO:
             if (!isset($data['answer']) || !$data['answer']) {
                 return Redirect::route('info')->with('message', 'Ожидается ответ.');
             }
             foreach ($testAnswers as $id => $hash) {
                 if ($hash == $data['answer']) {
                     $answer = Answer::find($id);
                 }
             }
             if (!$answer) {
                 return Redirect::route('info')->with('message', 'Такой ответ не найден.');
             }
             $result->a_text = $answer->text;
             $result->a_image = $answer->image;
             $result->is_correct = $answer->is_correct;
             $result->weight = $answer->weight;
             break;
         case Question::TYPE_CHECKBOX:
             $answer = isset($data['answer']) ? $data['answer'] : [];
             // has to be an array
             if (!is_array($answer)) {
                 return Redirect::route('info')->with('message', 'Ответ должен быть массивом.');
             }
             $answer_ = $answer;
             // we need to find real answer ids
             $answer = [];
             foreach ($testAnswers as $id => $hash) {
                 foreach ($answer_ as $a_) {
                     if ($hash == $a_) {
                         $answer[] = Answer::find($id)->id;
                     }
                 }
             }
             if (!empty($answer)) {
                 $answers = DB::table('answer')->whereIn('id', $answer)->get();
             } else {
                 $answers = [];
             }
             $isThereACorrectAnswer = false;
             $correctNum = 0;
             // Is there at least one correct answer?
             foreach ($question->answers as $ans) {
                 if ($ans->is_correct) {
                     $isThereACorrectAnswer = true;
                     $correctNum++;
                 }
             }
             $result->a_text = '';
             if (!$isThereACorrectAnswer && count($answers) > 0) {
                 // There are no correct answers, but user have chosen something
                 $result->is_correct = false;
             } elseif (!$isThereACorrectAnswer && count($answers) == 0) {
                 $result->is_correct = true;
             } elseif ($isThereACorrectAnswer && count($answers) == 0) {
                 $result->is_correct = false;
             } elseif ($isThereACorrectAnswer && count($answers) > 0 && count($answers) != $correctNum) {
                 $result->is_correct = false;
             } elseif ($isThereACorrectAnswer && count($answers) > 0 && count($answers) == $correctNum) {
                 // check if all correct answers selected
                 $result->is_correct = true;
                 $result->weight = 0;
                 foreach ($question->answers as $ans) {
                     if (!$ans->is_correct) {
                         continue;
                     }
                     if (!in_array($ans->id, $answer)) {
                         $result->is_correct = false;
                     }
                     $result->a_text .= $ans->text . ';';
                     $result->a_image = $ans->image;
                     $result->weight += $ans->weight;
                 }
                 if (!$result->is_correct) {
                     $result->weight = 0;
                 }
             }
             break;
         case Question::TYPE_STRING:
             if (!isset($data['answer']) || !$data['answer']) {
                 $result->a_text = '';
                 $result->is_correct = false;
             } else {
                 $result->a_text = trim($data['answer']);
                 $result->is_correct = true;
                 $result->weight = 1;
             }
             break;
     }
     $result->save();
     Session::forget('question_id');
     return Redirect::route('test.index');
 }