/** * 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[] = array('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'] = array(); $this->disabled[] = 'extract'; } } else { $this->archivers['extract'] = array(); $this->disabled[] = 'extract'; } }
/** * Return file mimetype * * @param string $path file path * @return string * @author Dmitry (dio) Levashov * */ protected function mimetype($path) { $type = ''; if ($this->mimeDetect == 'finfo') { $type = @finfo_file($this->finfo, $path); } elseif ($type == 'mime_content_type') { $type = mime_content_type($path); } else { $type = \app\src\elFinder\elFinderVolumeDriver::mimetypeInternalDetect($path); } $type = explode(';', $type); $type = trim($type[0]); if ($type == 'application/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' ? \app\src\elFinder\elFinderVolumeDriver::mimetypeInternalDetect($path) : $type; }
/** * Return debug info for client * * @return array * @author Dmitry (dio) Levashov * */ public function debug() { $debug = parent::debug(); $debug['sqlCount'] = $this->sqlCnt; if ($this->dbError) { $debug['dbError'] = $this->dbError; } return $debug; }