wp/wp-admin/includes/class-wp-filesystem-direct.php
changeset 16 a86126ab1dd4
parent 9 177826044cd9
child 18 be944660c56a
--- a/wp/wp-admin/includes/class-wp-filesystem-direct.php	Tue Oct 22 16:11:46 2019 +0200
+++ b/wp/wp-admin/includes/class-wp-filesystem-direct.php	Tue Dec 15 13:49:49 2020 +0100
@@ -64,6 +64,7 @@
 	 */
 	public function put_contents( $file, $contents, $mode = false ) {
 		$fp = @fopen( $file, 'wb' );
+
 		if ( ! $fp ) {
 			return false;
 		}
@@ -95,7 +96,7 @@
 	 * @return string|false The current working directory on success, false on failure.
 	 */
 	public function cwd() {
-		return @getcwd();
+		return getcwd();
 	}
 
 	/**
@@ -125,15 +126,19 @@
 		if ( ! $this->exists( $file ) ) {
 			return false;
 		}
+
 		if ( ! $recursive ) {
-			return @chgrp( $file, $group );
+			return chgrp( $file, $group );
 		}
+
 		if ( ! $this->is_dir( $file ) ) {
-			return @chgrp( $file, $group );
+			return chgrp( $file, $group );
 		}
-		// Is a directory, and we want recursive
+
+		// Is a directory, and we want recursive.
 		$file     = trailingslashit( $file );
 		$filelist = $this->dirlist( $file );
+
 		foreach ( $filelist as $filename ) {
 			$this->chgrp( $file . $filename, $group, $recursive );
 		}
@@ -149,7 +154,7 @@
 	 * @param string    $file      Path to the file.
 	 * @param int|false $mode      Optional. The permissions as octal number, usually 0644 for files,
 	 *                             0755 for directories. Default false.
-	 * @param bool      $recursive Optional. If set to true, changes file group recursively.
+	 * @param bool      $recursive Optional. If set to true, changes file permissions recursively.
 	 *                             Default false.
 	 * @return bool True on success, false on failure.
 	 */
@@ -165,11 +170,13 @@
 		}
 
 		if ( ! $recursive || ! $this->is_dir( $file ) ) {
-			return @chmod( $file, $mode );
+			return chmod( $file, $mode );
 		}
-		// Is a directory, and we want recursive
+
+		// Is a directory, and we want recursive.
 		$file     = trailingslashit( $file );
 		$filelist = $this->dirlist( $file );
+
 		foreach ( (array) $filelist as $filename => $filemeta ) {
 			$this->chmod( $file . $filename, $mode, $recursive );
 		}
@@ -192,17 +199,22 @@
 		if ( ! $this->exists( $file ) ) {
 			return false;
 		}
+
 		if ( ! $recursive ) {
-			return @chown( $file, $owner );
+			return chown( $file, $owner );
 		}
+
 		if ( ! $this->is_dir( $file ) ) {
-			return @chown( $file, $owner );
+			return chown( $file, $owner );
 		}
-		// Is a directory, and we want recursive
+
+		// Is a directory, and we want recursive.
 		$filelist = $this->dirlist( $file );
+
 		foreach ( $filelist as $filename ) {
 			$this->chown( $file . '/' . $filename, $owner, $recursive );
 		}
+
 		return true;
 	}
 
@@ -216,13 +228,21 @@
 	 */
 	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'];
 	}
 
@@ -250,13 +270,21 @@
 	 */
 	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'];
 	}
 
@@ -279,9 +307,11 @@
 		}
 
 		$rtval = copy( $source, $destination );
+
 		if ( $mode ) {
 			$this->chmod( $destination, $mode );
 		}
+
 		return $rtval;
 	}
 
@@ -308,6 +338,7 @@
 
 		if ( $this->copy( $source, $destination, $overwrite ) && $this->exists( $destination ) ) {
 			$this->delete( $source );
+
 			return true;
 		} else {
 			return false;
@@ -320,30 +351,34 @@
 	 * @since 2.5.0
 	 *
 	 * @param string       $file      Path to the file or directory.
-	 * @param bool         $recursive Optional. If set to true, changes file group recursively.
+	 * @param bool         $recursive Optional. If set to true, deletes files and folders recursively.
 	 *                                Default false.
 	 * @param string|false $type      Type of resource. 'f' for file, 'd' for directory.
 	 *                                Default false.
 	 * @return bool True on success, false on failure.
 	 */
 	public function delete( $file, $recursive = false, $type = false ) {
-		if ( empty( $file ) ) { // Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem.
+		if ( empty( $file ) ) {
+			// Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem.
 			return false;
 		}
-		$file = str_replace( '\\', '/', $file ); // for win32, occasional problems deleting files otherwise
 
-		if ( 'f' == $type || $this->is_file( $file ) ) {
+		$file = str_replace( '\\', '/', $file ); // For Win32, occasional problems deleting files otherwise.
+
+		if ( 'f' === $type || $this->is_file( $file ) ) {
 			return @unlink( $file );
 		}
+
 		if ( ! $recursive && $this->is_dir( $file ) ) {
 			return @rmdir( $file );
 		}
 
-		// At this point it's a folder, and we're in recursive mode
+		// At this point it's a folder, and we're in recursive mode.
 		$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'] ) ) {
@@ -470,13 +505,15 @@
 	 * @return bool True on success, false on failure.
 	 */
 	public function touch( $file, $time = 0, $atime = 0 ) {
-		if ( $time == 0 ) {
+		if ( 0 == $time ) {
 			$time = time();
 		}
-		if ( $atime == 0 ) {
+
+		if ( 0 == $atime ) {
 			$atime = time();
 		}
-		return @touch( $file, $time, $atime );
+
+		return touch( $file, $time, $atime );
 	}
 
 	/**
@@ -496,6 +533,7 @@
 	public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) {
 		// Safe mode fails with a trailing slash under certain PHP versions.
 		$path = untrailingslashit( $path );
+
 		if ( empty( $path ) ) {
 			return false;
 		}
@@ -507,13 +545,17 @@
 		if ( ! @mkdir( $path ) ) {
 			return false;
 		}
+
 		$this->chmod( $path, $chmod );
+
 		if ( $chown ) {
 			$this->chown( $path, $chown );
 		}
+
 		if ( $chgrp ) {
 			$this->chgrp( $path, $chgrp );
 		}
+
 		return true;
 	}
 
@@ -564,11 +606,12 @@
 			$limit_file = false;
 		}
 
-		if ( ! $this->is_dir( $path ) ) {
+		if ( ! $this->is_dir( $path ) || ! $this->is_readable( $path ) ) {
 			return false;
 		}
 
-		$dir = @dir( $path );
+		$dir = dir( $path );
+
 		if ( ! $dir ) {
 			return false;
 		}
@@ -579,11 +622,11 @@
 			$struc         = array();
 			$struc['name'] = $entry;
 
-			if ( '.' == $struc['name'] || '..' == $struc['name'] ) {
+			if ( '.' === $struc['name'] || '..' === $struc['name'] ) {
 				continue;
 			}
 
-			if ( ! $include_hidden && '.' == $struc['name'][0] ) {
+			if ( ! $include_hidden && '.' === $struc['name'][0] ) {
 				continue;
 			}
 
@@ -598,11 +641,11 @@
 			$struc['group']       = $this->group( $path . '/' . $entry );
 			$struc['size']        = $this->size( $path . '/' . $entry );
 			$struc['lastmodunix'] = $this->mtime( $path . '/' . $entry );
-			$struc['lastmod']     = date( 'M j', $struc['lastmodunix'] );
-			$struc['time']        = date( 'h:i:s', $struc['lastmodunix'] );
+			$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 ( 'd' === $struc['type'] ) {
 				if ( $recursive ) {
 					$struc['files'] = $this->dirlist( $path . '/' . $struc['name'], $include_hidden, $recursive );
 				} else {
@@ -612,8 +655,10 @@
 
 			$ret[ $struc['name'] ] = $struc;
 		}
+
 		$dir->close();
 		unset( $dir );
+
 		return $ret;
 	}
 }