WP_Filesystem_Base::find_folder() – Locates a folder on the remote filesystem.

You appear to be a bot. Output may be restricted

Description

Locates a folder on the remote filesystem.

Assumes that on Windows systems, Stripping off the Drive letter is OK Sanitizes \\ to / in Windows filepaths.

Usage

$string|false = WP_Filesystem_Base::find_folder( $folder );

Parameters

$folder
( string ) required – the folder to locate.

Returns

string|false The location of the remote path, false on failure.

Source

File name: wordpress/wp-admin/includes/class-wp-filesystem-base.php
Lines:

1 to 69 of 69
  public function find_folder( $folder ) {
    if ( isset( $this->cache[ $folder ] ) ) {
      return $this->cache[ $folder ];
    }

    if ( stripos( $this->method, 'ftp' ) !== false ) {
      $constant_overrides = array(
        'FTP_BASE'        => ABSPATH,
        'FTP_CONTENT_DIR' => WP_CONTENT_DIR,
        'FTP_PLUGIN_DIR'  => WP_PLUGIN_DIR,
        'FTP_LANG_DIR'    => WP_LANG_DIR,
      );

      // Direct matches ( folder = CONSTANT/ ).
      foreach ( $constant_overrides as $constant => $dir ) {
        if ( ! defined( $constant ) ) {
          continue;
        }

        if ( $folder === $dir ) {
          return trailingslashit( constant( $constant ) );
        }
      }

      // Prefix matches ( folder = CONSTANT/subdir ),
      foreach ( $constant_overrides as $constant => $dir ) {
        if ( ! defined( $constant ) ) {
          continue;
        }

        if ( 0 === stripos( $folder, $dir ) ) { // $folder starts with $dir.
          $potential_folder = preg_replace( '#^' . preg_quote( $dir, '#' ) . '/#i', trailingslashit( constant( $constant ) ), $folder );
          $potential_folder = trailingslashit( $potential_folder );

          if ( $this->WP_Filesystem_Base::is_dir( $potential_folder ) ) {
            $this->cache[ $folder ] = $potential_folder;

            return $potential_folder;
          }
        }
      }
    } elseif ( 'direct' === $this->method ) {
      $folder = str_replace( '\\', '/', $folder ); // Windows path sanitisation.

      return trailingslashit( $folder );
    }

    $folder = preg_replace( '|^([a-z]{1}):|i', '', $folder ); // Strip out Windows drive letter if it's there.
    $folder = str_replace( '\\', '/', $folder ); // Windows path sanitisation.

    if ( isset( $this->cache[ $folder ] ) ) {
      return $this->cache[ $folder ];
    }

    if ( $this->WP_Filesystem_Base::exists( $folder ) ) { // Folder exists at that absolute path.
      $folder                 = trailingslashit( $folder );
      $this->cache[ $folder ] = $folder;

      return $folder;
    }

    $return = $this->WP_Filesystem_Base::search_for_folder( $folder );

    if ( $return ) {
      $this->cache[ $folder ] = $return;
    }

    return $return;
  }
 

 View on GitHub View on Trac