/** * Configure after successfull mount. * * @return void * @author Dmitry (dio) Levashov **/ protected function configure() { $this->aroot = realpath($this->root); $root = $this->stat($this->root); if ($this->options['quarantine']) { $this->attributes[] = ['pattern' => '~^' . preg_quote(DIRECTORY_SEPARATOR . $this->options['quarantine']) . '$~', 'read' => FALSE, 'write' => FALSE, 'locked' => TRUE, 'hidden' => TRUE]; } // chek thumbnails path if ($this->options['tmbPath']) { $this->options['tmbPath'] = strpos($this->options['tmbPath'], DIRECTORY_SEPARATOR) === FALSE ? $this->root . DIRECTORY_SEPARATOR . $this->options['tmbPath'] : $this->_normpath($this->options['tmbPath']); } parent::configure(); // if no thumbnails url - try detect it if ($root['read'] && !$this->tmbURL && $this->URL) { if (strpos($this->tmbPath, $this->root) === 0) { $this->tmbURL = $this->URL . str_replace(DIRECTORY_SEPARATOR, '/', substr($this->tmbPath, strlen($this->root) + 1)); if (preg_match("|[^/?&=]\$|", $this->tmbURL)) { $this->tmbURL .= '/'; } } } // check quarantine dir if (!empty($this->options['quarantine'])) { $this->quarantine = $this->root . DIRECTORY_SEPARATOR . $this->options['quarantine']; if (!is_dir($this->quarantine) && !$this->_mkdir($this->root, $this->options['quarantine']) || !is_writable($this->quarantine)) { $this->archivers['extract'] = []; $this->disabled[] = 'extract'; } } else { $this->archivers['extract'] = []; $this->disabled[] = 'extract'; } }
/** * Configure after successfull mount. * * @return void * @author Dmitry (dio) Levashov **/ protected function configure() { parent::configure(); if (!empty($this->options['tmpPath'])) { if ((is_dir($this->options['tmpPath']) || @mkdir($this->options['tmpPath'], 0755, true)) && is_writable($this->options['tmpPath'])) { $this->tmp = $this->options['tmpPath']; } } if (!$this->tmp && $this->tmbPath) { $this->tmp = $this->tmbPath; } if (!$this->tmp) { $this->disabled[] = 'mkfile'; $this->disabled[] = 'paste'; $this->disabled[] = 'duplicate'; $this->disabled[] = 'upload'; $this->disabled[] = 'edit'; $this->disabled[] = 'archive'; $this->disabled[] = 'extract'; } // echo $this->tmp; }
/** * Return file mimetype * * @param string $path file path * @return string * @author Dmitry (dio) Levashov **/ protected function mimetype($path, $name = '') { $type = ''; if ($this->mimeDetect == 'finfo') { if ($type = @finfo_file($this->finfo, $path)) { if ($name === '') { $name = $path; } $ext = FALSE === ($pos = strrpos($name, '.')) ? '' : substr($name, $pos + 1); if ($ext && preg_match('~^application/(?:octet-stream|(?:x-)?zip)~', $type)) { if (isset(VolumeDriver::$mimetypes[$ext])) { $type = VolumeDriver::$mimetypes[$ext]; } } } } elseif ($type == 'mime_content_type') { $type = mime_content_type($path); } else { $type = VolumeDriver::mimetypeInternalDetect($path); } $type = explode(';', $type); $type = trim($type[0]); if (in_array($type, ['application/x-empty', 'inode/x-empty'])) { // finfo return this mime for empty files $type = 'text/plain'; } elseif ($type == 'application/x-zip') { // http://elrte.org/redmine/issues/163 $type = 'application/zip'; } return $type == 'unknown' && $this->mimeDetect != 'internal' ? VolumeDriver::mimetypeInternalDetect($path) : $type; }