Example #1
0
$langTemplate = 'TutorUpload_Controller';
Language::loadLanguageFile('de', $langTemplate, 'json', dirname(__FILE__) . '/');
if (isset($_POST['action']) && $_POST['action'] == 'TutorUpload') {
    if (isset($_FILES['MarkingFile'])) {
        $file = $_FILES['MarkingFile'];
        $error = $file['error'];
        if ($error == 0) {
            $filePath = $file['tmp_name'];
            $displayName = $file['name'];
            $type = $file["type"];
            // checks file ending
            if (MimeReader::get_mime($filePath) == "application/zip") {
                // creates the JSON object containing the file
                $file = new File();
                $file->setBody(Reference::createReference($filePath));
                $file->setTimeStamp(time());
                $file->setDisplayName($displayName);
                $file = File::encodeFile($file);
                // sends the JSON object to the logic
                $URI = $logicURI . "/tutor/user/{$uid}/course/{$cid}";
                $error = http_post_data($URI, $file, true, $message);
                if ($message == "201" || $message == "200") {
                    $successmsg = Language::Get('main', 'sucessFileUpload', $langTemplate);
                    $notifications[] = MakeNotification('success', $successmsg);
                } else {
                    $errors = @json_decode($error);
                    if ($errors !== null) {
                        foreach ($errors as $err) {
                            $notifications[] = MakeNotification('error', $err);
                        }
                    } else {
Example #2
0
 /**
  * Adds a user's submission to the database and filesystem
  *
  * Called then this component receives an HTTP POST request to
  * /submission(/)
  * The request body should contain a JSON object representing a submission.
  *
  * @author Till Uhlig
  * @date 2014
  */
 public function addSubmission()
 {
     $body = $this->app->request->getBody();
     $submission = Submission::decodeSubmission($body);
     $file = $submission->getFile();
     if (!isset($file) || $file == array()) {
         $file = new File();
     }
     if ($file->getTimeStamp() === null) {
         $file->setTimeStamp(time());
     }
     ///echo File::encodeFile($file);return;
     // upload file to filesystem
     $result = Request::routeRequest('POST', '/file', array(), File::encodeFile($file), $this->_file, 'file');
     ///var_dump($result);
     ///echo $result['content'];return;
     if ($result['status'] >= 200 && $result['status'] <= 299) {
         // file is uploaded
         $newFile = File::decodeFile($result['content']);
         $file->setAddress($newFile->getAddress());
         $file->setHash($newFile->getHash());
         $file->setFileId($newFile->getFileId());
         $file->setBody(null);
         $submission->setFile($file);
         // upload submission to database
         if ($submission->getId() === null) {
             //echo Submission::encodeSubmission($submission);return;
             $result = Request::routeRequest('POST', '/submission', array(), Submission::encodeSubmission($submission), $this->_submission, 'submission');
         } else {
             $result['status'] = 201;
             $result['content'] = Submission::encodeSubmission($submission);
         }
         //var_dump($result);
         if ($result['status'] >= 200 && $result['status'] <= 299) {
             // submission is uploaded
             $newsubmission = Submission::decodeSubmission($result['content']);
             $submission->setId($newsubmission->getId());
             // select new submission
             if ($submission->getSelectedForGroup() == '1') {
                 $selectedSubmission = SelectedSubmission::createSelectedSubmission($submission->getLeaderId(), $submission->getId(), $submission->getExerciseId());
                 $result = Request::routeRequest('POST', '/selectedsubmission', array(), SelectedSubmission::encodeSelectedSubmission($selectedSubmission), $this->_selectedSubmission, 'selectedsubmission');
                 if ($result['status'] >= 200 && $result['status'] <= 299) {
                     $this->app->response->setBody(Submission::encodeSubmission($submission));
                     $this->app->response->setStatus(201);
                     $this->app->stop();
                 } else {
                     $result = Request::routeRequest('PUT', '/selectedsubmission/leader/' . $submission->getLeaderId() . '/exercise/' . $submission->getExerciseId(), $this->app->request->headers->all(), SelectedSubmission::encodeSelectedSubmission($selectedSubmission), $this->_selectedSubmission, 'selectedsubmission');
                     if ($result['status'] >= 200 && $result['status'] <= 299) {
                         $this->app->response->setBody(Submission::encodeSubmission($submission));
                         $this->app->response->setStatus(201);
                         $this->app->stop();
                     }
                 }
             } else {
                 $this->app->response->setBody(Submission::encodeSubmission($submission));
                 $this->app->response->setStatus(201);
                 $this->app->stop();
             }
         }
     }
     Logger::Log('POST AddSubmission failed', LogLevel::ERROR);
     $this->app->response->setBody(Submission::encodeSubmission(new Submission()));
     $this->app->response->setStatus(409);
     $this->app->stop();
 }
Example #3
0
 /**
  * Adds a new marking.
  *
  * Called when this component receives an HTTP POST request to
  * /marking(/).
  * The request body should contain a JSON object representing the new marking.
  *
  * @author Till Uhlig
  * @date 2014
  */
 public function addMarking()
 {
     $header = $this->app->request->headers->all();
     $body = $this->app->request->getBody();
     $markings = Marking::decodeMarking($body);
     $this->app->response->setStatus(201);
     // always been an array
     $arr = true;
     if (!is_array($markings)) {
         $markings = array($markings);
         $arr = false;
     }
     // this array contains the inserted objects
     $res = array();
     foreach ($markings as $marking) {
         if ($marking->getDate() === null) {
             $marking->setDate(time());
         }
         $file = $marking->getFile();
         if (!isset($file)) {
             $file = new File();
         }
         if ($file->getTimeStamp() === null) {
             $file->setTimeStamp(time());
         }
         // upload file to filesystem
         $result = Request::routeRequest('POST', '/file', $this->app->request->headers->all(), File::encodeFile($file), $this->_file, 'file');
         // checks the correctness of the query
         if ($result['status'] >= 200 && $result['status'] <= 299) {
             // file is uploaded
             $newFile = File::decodeFile($result['content']);
             $file->setAddress($newFile->getAddress());
             $file->setHash($newFile->getHash());
             $file->setFileId($newFile->getFileId());
             $file->setBody(null);
             $marking->setFile($file);
             // upload marking to database
             if ($marking->getId() === null) {
                 $result = Request::routeRequest('POST', '/marking', $this->app->request->headers->all(), Marking::encodeMarking($marking), $this->_marking, 'marking');
             } else {
                 $result = Request::routeRequest('PUT', '/marking/marking/' . $marking->getId(), $this->app->request->headers->all(), Marking::encodeMarking($marking), $this->_marking, 'marking');
             }
             if ($result['status'] >= 200 && $result['status'] <= 299) {
                 // marking is uploaded
                 $newmarking = Marking::decodeMarking($result['content']);
                 if (is_array($newmarking)) {
                     $newmarking = $newmarking[0];
                 }
                 if ($newmarking->getId() !== null) {
                     $marking->setId($newmarking->getId());
                 }
                 $res[] = $marking;
                 if (isset($result['headers']['Content-Type'])) {
                     $this->app->response->headers->set('Content-Type', $result['headers']['Content-Type']);
                 }
             } else {
                 Logger::Log('POST AddMarking failed', LogLevel::ERROR);
                 $this->app->response->setStatus(isset($result['status']) ? $result['status'] : 409);
                 $this->app->response->setBody(Marking::encodeMarking($res));
                 $this->app->stop();
             }
         } else {
             Logger::Log('POST AddMarking failed', LogLevel::ERROR);
             $this->app->response->setStatus(isset($result['status']) ? $result['status'] : 409);
             $this->app->response->setBody(Marking::encodeMarking($res));
             $this->app->stop();
         }
     }
     if (!$arr && count($res) == 1) {
         $this->app->response->setBody(Marking::encodeMarking($res[0]));
     } else {
         $this->app->response->setBody(Marking::encodeMarking($res));
     }
 }