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;
 }
 public function mimetypes($doc = null, $docinfo = null)
 {
     global $Opt;
     if ($this->dtype > 0 && !$this->option) {
         return null;
     }
     $otype = $this->option ? $this->option->type : "pdf";
     $mimetypes = array();
     if (PaperOption::type_takes_pdf($otype)) {
         $mimetypes[] = Mimetype::lookup(".pdf");
     }
     if (!$this->option && !defval($Opt, "disablePS")) {
         $mimetypes[] = Mimetype::lookup(".ps");
     }
     if ($otype == "slides") {
         $mimetypes[] = Mimetype::lookup(".ppt");
         $mimetypes[] = Mimetype::lookup(".pptx");
     }
     if ($otype == "video") {
         $mimetypes[] = Mimetype::lookup(".mp4");
         $mimetypes[] = Mimetype::lookup(".avi");
     }
     return $mimetypes;
 }