Example #1
0
 function upload($doc, $docinfo)
 {
     global $Conf;
     if (is_object($doc)) {
         $doc = clone $doc;
         if (!$this->load($doc) && !get($doc, "error_html")) {
             set_error_html($doc, "The uploaded file was empty.");
         }
     } else {
         $doc = self::file_upload_json($doc);
     }
     if (get($doc, "error")) {
         return $doc;
     }
     // Check if paper one of the allowed mimetypes.
     if (!get($doc, "mimetype")) {
         $doc->mimetype = "application/octet-stream";
     }
     // Sniff content since MacOS browsers supply bad mimetypes.
     if ($m = Mimetype::sniff(self::content($doc))) {
         $doc->mimetype = $m;
     }
     if ($m = Mimetype::lookup($doc->mimetype)) {
         $doc->mimetypeid = $m->mimetypeid;
     }
     $mimetypes = $this->mimetypes($doc, $docinfo);
     for ($i = 0; $i < count($mimetypes); ++$i) {
         if ($mimetypes[$i]->mimetype === $doc->mimetype) {
             break;
         }
     }
     if ($i >= count($mimetypes) && count($mimetypes)) {
         $e = "I only accept " . htmlspecialchars(Mimetype::description($mimetypes)) . " files.";
         $e .= " (Your file has MIME type “" . htmlspecialchars($doc->mimetype) . "” and starts with “" . htmlspecialchars(substr($doc->content, 0, 5)) . "”.)<br />Please convert your file to a supported type and try again.";
         return set_error_html($doc, $e);
     }
     if (!get($doc, "timestamp")) {
         $doc->timestamp = time();
     }
     $this->store($doc, $docinfo);
     return $doc;
 }