- Timestamp:
- 06/19/2020 10:34:26 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/class-wp-filesystem-direct.php
r48031 r48089 65 65 public function put_contents( $file, $contents, $mode = false ) { 66 66 $fp = @fopen( $file, 'wb' ); 67 67 68 if ( ! $fp ) { 68 69 return false; … … 126 127 return false; 127 128 } 129 128 130 if ( ! $recursive ) { 129 131 return chgrp( $file, $group ); 130 132 } 133 131 134 if ( ! $this->is_dir( $file ) ) { 132 135 return chgrp( $file, $group ); 133 136 } 137 134 138 // Is a directory, and we want recursive. 135 139 $file = trailingslashit( $file ); 136 140 $filelist = $this->dirlist( $file ); 141 137 142 foreach ( $filelist as $filename ) { 138 143 $this->chgrp( $file . $filename, $group, $recursive ); … … 168 173 return chmod( $file, $mode ); 169 174 } 175 170 176 // Is a directory, and we want recursive. 171 177 $file = trailingslashit( $file ); 172 178 $filelist = $this->dirlist( $file ); 179 173 180 foreach ( (array) $filelist as $filename => $filemeta ) { 174 181 $this->chmod( $file . $filename, $mode, $recursive ); … … 193 200 return false; 194 201 } 202 195 203 if ( ! $recursive ) { 196 204 return chown( $file, $owner ); 197 205 } 206 198 207 if ( ! $this->is_dir( $file ) ) { 199 208 return chown( $file, $owner ); 200 209 } 210 201 211 // Is a directory, and we want recursive. 202 212 $filelist = $this->dirlist( $file ); 213 203 214 foreach ( $filelist as $filename ) { 204 215 $this->chown( $file . '/' . $filename, $owner, $recursive ); 205 216 } 217 206 218 return true; 207 219 } … … 217 229 public function owner( $file ) { 218 230 $owneruid = @fileowner( $file ); 231 219 232 if ( ! $owneruid ) { 220 233 return false; 221 234 } 235 222 236 if ( ! function_exists( 'posix_getpwuid' ) ) { 223 237 return $owneruid; 224 238 } 239 225 240 $ownerarray = posix_getpwuid( $owneruid ); 241 226 242 if ( ! $ownerarray ) { 227 243 return false; 228 244 } 245 229 246 return $ownerarray['name']; 230 247 } … … 254 271 public function group( $file ) { 255 272 $gid = @filegroup( $file ); 273 256 274 if ( ! $gid ) { 257 275 return false; 258 276 } 277 259 278 if ( ! function_exists( 'posix_getgrgid' ) ) { 260 279 return $gid; 261 280 } 281 262 282 $grouparray = posix_getgrgid( $gid ); 283 263 284 if ( ! $grouparray ) { 264 285 return false; 265 286 } 287 266 288 return $grouparray['name']; 267 289 } … … 286 308 287 309 $rtval = copy( $source, $destination ); 310 288 311 if ( $mode ) { 289 312 $this->chmod( $destination, $mode ); 290 313 } 314 291 315 return $rtval; 292 316 } … … 315 339 if ( $this->copy( $source, $destination, $overwrite ) && $this->exists( $destination ) ) { 316 340 $this->delete( $source ); 341 317 342 return true; 318 343 } else { … … 338 363 return false; 339 364 } 365 340 366 $file = str_replace( '\\', '/', $file ); // For Win32, occasional problems deleting files otherwise. 341 367 … … 343 369 return @unlink( $file ); 344 370 } 371 345 372 if ( ! $recursive && $this->is_dir( $file ) ) { 346 373 return @rmdir( $file ); … … 352 379 353 380 $retval = true; 381 354 382 if ( is_array( $filelist ) ) { 355 383 foreach ( $filelist as $filename => $fileinfo ) { … … 481 509 $time = time(); 482 510 } 511 483 512 if ( 0 == $atime ) { 484 513 $atime = time(); 485 514 } 515 486 516 return touch( $file, $time, $atime ); 487 517 } … … 504 534 // Safe mode fails with a trailing slash under certain PHP versions. 505 535 $path = untrailingslashit( $path ); 536 506 537 if ( empty( $path ) ) { 507 538 return false; … … 515 546 return false; 516 547 } 548 517 549 $this->chmod( $path, $chmod ); 550 518 551 if ( $chown ) { 519 552 $this->chown( $path, $chown ); 520 553 } 554 521 555 if ( $chgrp ) { 522 556 $this->chgrp( $path, $chgrp ); 523 557 } 558 524 559 return true; 525 560 } … … 577 612 578 613 $dir = dir( $path ); 614 579 615 if ( ! $dir ) { 580 616 return false; … … 620 656 $ret[ $struc['name'] ] = $struc; 621 657 } 658 622 659 $dir->close(); 623 660 unset( $dir ); 661 624 662 return $ret; 625 663 }
Note: See TracChangeset
for help on using the changeset viewer.