/**
  * Upload file chunk
  *
  * @param object Media
  **/
 protected function uploadChunk($model)
 {
     $result = ["code" => 0, "message" => "Unknown error."];
     $sid = $model->id;
     $model_subfolder = $model->category_id . '/' . $sid;
     $model_tmp_folder = public_path() . '/assets/medias/tmp/' . $model_subfolder;
     $model_folder = public_path() . '/assets/medias/' . $model_subfolder;
     $fileName = $this->checkRequest("name", $_FILES["file"]["name"]);
     $filePath = $model_tmp_folder . "/{$fileName}";
     $chunk = $this->checkRequest("chunk");
     $chunks = $this->checkRequest("chunks");
     // Create the directory
     $this->checkFolder($model_tmp_folder);
     // Open temp file
     $out = @fopen("{$filePath}.part", $chunk == 0 ? "wb" : "ab");
     if ($out) {
         // Read binary input stream and append it to temp file
         $sin = @fopen($_FILES['file']['tmp_name'], "rb");
         if ($sin) {
             while ($buff = fread($sin, 4096)) {
                 fwrite($out, $buff);
             }
         } else {
             $result["message"] = Lang::get('redminportal::messages.upload_error_failed_to_open_input_stream');
             return json_encode($result);
         }
         @fclose($sin);
         @fclose($out);
         @unlink($_FILES['file']['tmp_name']);
     } else {
         $result["message"] = Lang::get('redminportal::messages.upload_error_failed_to_open_output_stream');
         return json_encode($result);
     }
     // Check if file has been uploaded
     if (!$chunks || $chunk == $chunks - 1) {
         // Strip the temp .part suffix off
         rename("{$filePath}.part", $filePath);
         $this->saveMedia($model, $filePath);
         $file = new FileInfo($filePath);
         // Delete old media
         $file->deleteFiles($model_folder);
         // Create the directory
         $this->checkFolder($model_folder);
         $file->move($model_folder, $fileName);
         // Delete tmp media
         $file->deleteFiles($model_tmp_folder);
     }
     $result["code"] = 1;
     $result["message"] = Lang::get('redminportal::messages.upload_success');
     return json_encode($result);
 }