WP_Filesystem_Base::search_for_folder() publicWP 2.7.0

Locates folder на remote filesystem.

Expects Windows sanitized path.

Метод класу: WP_Filesystem_Base{}

Хуків немає.

Повертає

Строку|false. Місце розташування remote path, false to cease looping.

Використання

$WP_Filesystem_Base = новий  WP_Filesystem_Base ();
$WP_Filesystem_Base -> search_for_folder ( $folder , $base , $loop );
$folder (рядок) (обов’язковий)
The folder to locate.
$base (рядок)
Докладно до початку пошуку від.

За замовчуванням: ‘.’

$loop (true|false)
Якщо функція була використана. Internal use only.

Типово: false

список змін

З версії 2.7.0Введено.

Код WP_Filesystem_Base::search_for_folder() WP 6.2

public  function  search_for_folder ( $folder , $base = '.' , $loop = false )   {
	 if ( empty ( $base ) || '.' === $base ) {
		 $base = trailingslashit ( $this -> cwd ( )));
	}

	$ folder = untrailingslashit ($ folder);

	if ( $this ->verbose) {
		 /* translators: 1: Folder to locate, 2: Folder to start searching from. */ 
		printf ( "n" . __ ( 'Looking for %1$s in %2$s' ) . "<br />n" , $folder , $base );
	}

	$ folder_parts = explode ( '/' , $ folder );
	$ folder_part_keys = array_keys ($ folder_parts);
	$last_index = array_pop ($ folder_part_keys);
	$last_path = $folder_parts [ $last_index ];

	$files = $this -> dirlist ( $base );

	foreach ( $folder_parts  as  $index => $key ) {
		 if ( $index === $last_index ) {
			 continue ; // We want this to be caught the next code block.
		}

		/*
		 * Working from /home/ to /user/ to /wordpress/ see if that file exists within
		 * the current folder, If it's found, зміна into it і follow through looking
		 * for it. Якщо це неможливо WordPress down, що route, вона продовжується надалі
		 * folder level, and see if that matches, and so on. If it reaches the end, and still
		 * Cant find it, it'll return false for entire function.
		 */ 
		if ( isset ( $files [ $key ] ) ) {

			// Let's try that folder: 
			$newdir = trailingslashit ( path_join ( $base , $key ));

			if ( $this ->verbose) {
				 /* translators: %s: Directory name. */ 
				printf ( "n" . __ ( 'Changing to %s' ) . "<br />n" , $newdir );
			}

			// Тільки search for remaining path tokens in directory, no full path again. 
			$newfolder = implode ( '/' , array_slice ( $folder_parts , $index + 1 ));
			$ret = $this -> search_for_folder ( $newfolder , $newdir , $loop );

			if ($ ret) {
				 return  $ ret ;
			}
		}
	}

	// Тільки check this as a last resort, to prevent locating the incorrect install. 
	// All above procedures will fail quickly if this is the right branch to take. 
	if ( isset ( $files [ $last_path ] ) ) {
		 if ( $this ->verbose) {
			 /* translators: %s: Directory name. */ 
			printf ( "n" . __ ( 'Found %s' ) . "<br />n" , $base . $last_path );
		}

		return  trailingslashit ( $base . $last_path );
	}

	// Prevent this function from looping again. 
	// Немає потреби у процесі, якщо ми вже вивчалися в `/`. 
	if ( $loop || '/' === $base ) {
		 return  false ;
	}

	// Як останній останній світ, Змінити назад до / якщо folder wasn't found. 
	// Це дає змогу, коли CWD є /home/user/ but WP is at /var/www/.... 
	return  $this -> search_for_folder ( $folder , '/' , true );

}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *