getState('directory'); // Parse directory to parts $parsed_dir = trim($dir,'/'); $parts = empty($parsed_dir) ? array() : explode('/', $parsed_dir); // Find the path to the parent directory if (!empty($parts)) { $copy_of_parts = $parts; array_pop($copy_of_parts); if (!empty($copy_of_parts)) { $parent_directory = '/' . implode('/', $copy_of_parts); } else { $parent_directory = '/'; } } else { $parent_directory = ''; } $options = array( 'host' => $this->getState('host'), 'port' => $this->getState('port'), 'username' => $this->getState('username'), 'password' => $this->getState('password'), 'ssl' => $this->getState('ssl'), 'passive' => $this->getState('passive'), 'directory' => $this->getState('directory'), ); $list = false; $error = ''; try { $ftp = new Ftp($options); if(!$dir) { $dir = $ftp->cwd(); $parsed_dir = trim($dir, '/'); $parts = empty($parsed_dir) ? array() : explode('/', $parsed_dir); $parent_directory = $dir; } $list = $ftp->listFolders(); } catch (\RuntimeException $e) { $error = $e->getMessage(); } $response_array = array( 'error' => $error, 'list' => $list, 'breadcrumbs' => $parts, 'directory' => $this->getState('directory'), 'parent' => $parent_directory ); return $response_array; } }