elFinder::get PHP Метод

get() защищенный Метод

Return file content
Автор: Dmitry (dio) Levashov
protected get ( array $args ) : array
$args array command arguments
Результат array
    protected function get($args)
    {
        $target = $args['target'];
        $volume = $this->volume($target);
        $enc = false;
        if (!$volume || ($file = $volume->file($target)) == false) {
            return array('error' => $this->error(self::ERROR_OPEN, '#' . $target, self::ERROR_FILE_NOT_FOUND));
        }
        if (($content = $volume->getContents($target)) === false) {
            return array('error' => $this->error(self::ERROR_OPEN, $volume->path($target), $volume->error()));
        }
        $mime = isset($file['mime']) ? $file['mime'] : '';
        if ($mime && strtolower(substr($mime, 0, 4)) === 'text') {
            $enc = '';
            if (!$args['conv'] || $args['conv'] == '1') {
                // detect encoding
                if ($content === '') {
                    $enc = '';
                } else {
                    if (function_exists('mb_detect_encoding')) {
                        if ($enc = mb_detect_encoding($content, mb_detect_order(), true)) {
                            $encu = strtoupper($enc);
                            if ($encu === 'UTF-8' || $encu === 'ASCII') {
                                $enc = '';
                            }
                        } else {
                            $enc = 'unknown';
                        }
                    } else {
                        if (!preg_match('//u', $content)) {
                            $enc = 'unknown';
                        }
                    }
                    if ($enc === 'unknown') {
                        $enc = $volume->getOption('encoding');
                        if (!$enc || strtoupper($enc) === 'UTF-8') {
                            $enc = 'unknown';
                        }
                    }
                    if ($enc && $enc !== 'unknown') {
                        $utf8 = iconv($enc, 'UTF-8', $content);
                        if ($utf8 === false && function_exists('mb_convert_encoding')) {
                            $utf8 = mb_convert_encoding($content, 'UTF-8', $enc);
                            if (mb_convert_encoding($utf8, $enc, 'UTF-8') !== $content) {
                                $enc = 'unknown';
                            }
                        } else {
                            if ($utf8 === false || iconv('UTF-8', $enc, $utf8) !== $content) {
                                $enc = 'unknown';
                            }
                        }
                        if ($enc !== 'unknown') {
                            $content = $utf8;
                        }
                    }
                    if ($enc) {
                        if ($args['conv'] == '1') {
                            $args['conv'] = $enc === 'unknown' ? '' : $enc;
                        } else {
                            if ($enc === 'unknown') {
                                return array('doconv' => $enc);
                            }
                        }
                    }
                }
            }
            if ($args['conv']) {
                $enc = $args['conv'];
                if (strtoupper($enc) !== 'UTF-8') {
                    $_content = $content;
                    $content = iconv($enc, 'UTF-8', $content);
                    if ($content === false && function_exists('mb_convert_encoding')) {
                        $content = mb_convert_encoding($_content, 'UTF-8', $enc);
                    }
                } else {
                    $enc = '';
                }
            }
        }
        if ($enc !== false) {
            if ($content !== false) {
                $json = json_encode($content);
            }
            if ($content === false || $json === false || strlen($json) < strlen($content)) {
                return array('error' => $this->error(self::ERROR_CONV_UTF8, self::ERROR_NOT_UTF8_CONTENT, $volume->path($target)));
            }
        }
        $res = array('content' => $content);
        if ($enc) {
            $res['encoding'] = $enc;
        }
        return $res;
    }