File "class-wp-filesystem-direct.php"

Full path: /home/kosmetik/public_html/wp-includes/wp-admin/includes/class-wp-filesystem-direct.php
File size: 8.57 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

class WP_Filesystem_Direct extends WP_Filesystem_Base
{
    public function __construct($arg)
    {
        $this->method = 'direct';
        $this->errors = new WP_Error();
    }
    public function get_contents($file)
    {
        return @file_get_contents($file);
    }
    public function get_contents_array($file)
    {
        return @file($file);
    }
    public function put_contents($file, $contents, $mode = false)
    {
        $fp = @fopen($file, 'wb');
        if (!$fp) {
            return false;
        }
        mbstring_binary_safe_encoding();
        $data_length = strlen($contents);
        $bytes_written = fwrite($fp, $contents);
        reset_mbstring_encoding();
        fclose($fp);
        if ($data_length !== $bytes_written) {
            return false;
        }
        $this->chmod($file, $mode);
        return true;
    }
    public function cwd()
    {
        return getcwd();
    }
    public function chdir($dir)
    {
        return @chdir($dir);
    }
    public function chgrp($file, $group, $recursive = false)
    {
        if (!$this->exists($file)) {
            return false;
        }
        if (!$recursive) {
            return chgrp($file, $group);
        }
        if (!$this->is_dir($file)) {
            return chgrp($file, $group);
        }
        $file = trailingslashit($file);
        $filelist = $this->dirlist($file);
        foreach ($filelist as $filename) {
            $this->chgrp($file . $filename, $group, $recursive);
        }
        return true;
    }
    public function chmod($file, $mode = false, $recursive = false)
    {
        if (!$mode) {
            if ($this->is_file($file)) {
                $mode = FS_CHMOD_FILE;
            } elseif ($this->is_dir($file)) {
                $mode = FS_CHMOD_DIR;
            } else {
                return false;
            }
        }
        if (!$recursive || !$this->is_dir($file)) {
            return chmod($file, $mode);
        }
        $file = trailingslashit($file);
        $filelist = $this->dirlist($file);
        foreach ((array) $filelist as $filename => $filemeta) {
            $this->chmod($file . $filename, $mode, $recursive);
        }
        return true;
    }
    public function chown($file, $owner, $recursive = false)
    {
        if (!$this->exists($file)) {
            return false;
        }
        if (!$recursive) {
            return chown($file, $owner);
        }
        if (!$this->is_dir($file)) {
            return chown($file, $owner);
        }
        $filelist = $this->dirlist($file);
        foreach ($filelist as $filename) {
            $this->chown($file . '/' . $filename, $owner, $recursive);
        }
        return true;
    }
    public function owner($file)
    {
        $owneruid = @fileowner($file);
        if (!$owneruid) {
            return false;
        }
        if (!function_exists('posix_getpwuid')) {
            return $owneruid;
        }
        $ownerarray = posix_getpwuid($owneruid);
        if (!$ownerarray) {
            return false;
        }
        return $ownerarray['name'];
    }
    public function getchmod($file)
    {
        return substr(decoct(@fileperms($file)), -3);
    }
    public function group($file)
    {
        $gid = @filegroup($file);
        if (!$gid) {
            return false;
        }
        if (!function_exists('posix_getgrgid')) {
            return $gid;
        }
        $grouparray = posix_getgrgid($gid);
        if (!$grouparray) {
            return false;
        }
        return $grouparray['name'];
    }
    public function copy($source, $destination, $overwrite = false, $mode = false)
    {
        if (!$overwrite && $this->exists($destination)) {
            return false;
        }
        $rtval = copy($source, $destination);
        if ($mode) {
            $this->chmod($destination, $mode);
        }
        return $rtval;
    }
    public function move($source, $destination, $overwrite = false)
    {
        if (!$overwrite && $this->exists($destination)) {
            return false;
        }
        if (@rename($source, $destination)) {
            return true;
        }
        if ($this->copy($source, $destination, $overwrite) && $this->exists($destination)) {
            $this->delete($source);
            return true;
        } else {
            return false;
        }
    }
    public function delete($file, $recursive = false, $type = false)
    {
        if (empty($file)) {
            return false;
        }
        $file = str_replace('\\', '/', $file);
        if ('f' === $type || $this->is_file($file)) {
            return @unlink($file);
        }
        if (!$recursive && $this->is_dir($file)) {
            return @rmdir($file);
        }
        $file = trailingslashit($file);
        $filelist = $this->dirlist($file, true);
        $retval = true;
        if (is_array($filelist)) {
            foreach ($filelist as $filename => $fileinfo) {
                if (!$this->delete($file . $filename, $recursive, $fileinfo['type'])) {
                    $retval = false;
                }
            }
        }
        if (file_exists($file) && !@rmdir($file)) {
            $retval = false;
        }
        return $retval;
    }
    public function exists($file)
    {
        return @file_exists($file);
    }
    public function is_file($file)
    {
        return @is_file($file);
    }
    public function is_dir($path)
    {
        return @is_dir($path);
    }
    public function is_readable($file)
    {
        return @is_readable($file);
    }
    public function is_writable($file)
    {
        return @is_writable($file);
    }
    public function atime($file)
    {
        return @fileatime($file);
    }
    public function mtime($file)
    {
        return @filemtime($file);
    }
    public function size($file)
    {
        return @filesize($file);
    }
    public function touch($file, $time = 0, $atime = 0)
    {
        if (0 == $time) {
            $time = time();
        }
        if (0 == $atime) {
            $atime = time();
        }
        return touch($file, $time, $atime);
    }
    public function mkdir($path, $chmod = false, $chown = false, $chgrp = false)
    {
        $path = untrailingslashit($path);
        if (empty($path)) {
            return false;
        }
        if (!$chmod) {
            $chmod = FS_CHMOD_DIR;
        }
        if (!@mkdir($path)) {
            return false;
        }
        $this->chmod($path, $chmod);
        if ($chown) {
            $this->chown($path, $chown);
        }
        if ($chgrp) {
            $this->chgrp($path, $chgrp);
        }
        return true;
    }
    public function rmdir($path, $recursive = false)
    {
        return $this->delete($path, $recursive);
    }
    public function dirlist($path, $include_hidden = true, $recursive = false)
    {
        if ($this->is_file($path)) {
            $limit_file = basename($path);
            $path = dirname($path);
        } else {
            $limit_file = false;
        }
        if (!$this->is_dir($path) || !$this->is_readable($path)) {
            return false;
        }
        $dir = dir($path);
        if (!$dir) {
            return false;
        }
        $ret = array();
        while (false !== ($entry = $dir->read())) {
            $struc = array();
            $struc['name'] = $entry;
            if ('.' === $struc['name'] || '..' === $struc['name']) {
                continue;
            }
            if (!$include_hidden && '.' === $struc['name'][0]) {
                continue;
            }
            if ($limit_file && $struc['name'] != $limit_file) {
                continue;
            }
            $struc['perms'] = $this->gethchmod($path . '/' . $entry);
            $struc['permsn'] = $this->getnumchmodfromh($struc['perms']);
            $struc['number'] = false;
            $struc['owner'] = $this->owner($path . '/' . $entry);
            $struc['group'] = $this->group($path . '/' . $entry);
            $struc['size'] = $this->size($path . '/' . $entry);
            $struc['lastmodunix'] = $this->mtime($path . '/' . $entry);
            $struc['lastmod'] = gmdate('M j', $struc['lastmodunix']);
            $struc['time'] = gmdate('h:i:s', $struc['lastmodunix']);
            $struc['type'] = $this->is_dir($path . '/' . $entry) ? 'd' : 'f';
            if ('d' === $struc['type']) {
                if ($recursive) {
                    $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive);
                } else {
                    $struc['files'] = array();
                }
            }
            $ret[$struc['name']] = $struc;
        }
        $dir->close();
        unset($dir);
        return $ret;
    }
}