/** * Marshall a QTI File datatype into a binary string. The resulting binary string constitution * is the following: * * * The length of the file name, unsigned short. * * The file name, string. * * The length of the mime type, unsigned short. * * The mime type, string. * * The binary content of the file, string. * * @param File $file * @return string */ public static function qtiFileToString(File $file) { $string = ''; $filename = $file->getFilename(); $mimetype = $file->getMimeType(); $filenameLen = strlen($filename); $mimetypeLen = strlen($mimetype); $string .= pack('S', $filenameLen); $string .= $filename; $string .= pack('S', $mimetypeLen); $string .= $mimetype; // Avoid invalid data for serialize // (This could make me cry...) $string .= $file->getData(); return $string; }
/** * Marshall a QTI file datatype into its PCI JSON Representation. * * @param \qtism\common\datatypes\File $file * @return array */ protected function marshallFile(File $file) { $data = array('base' => array('file' => array('mime' => $file->getMimeType(), 'data' => base64_encode($file->getData())))); if ($file->hasFilename() === true) { $data['base']['file']['name'] = $file->getFilename(); } return $data; }