filePublic = $filePublic; $this->filePrivate = $filePrivate; $this->directoryPublic = $directoryPublic; $this->directoryPrivate = $directoryPrivate; $this->defaultForDirectories = $defaultForDirectories; } public function forFile(string $visibility): int { PortableVisibilityGuard::guardAgainstInvalidInput($visibility); return $visibility === Visibility::PUBLIC ? $this->filePublic : $this->filePrivate; } public function forDirectory(string $visibility): int { PortableVisibilityGuard::guardAgainstInvalidInput($visibility); return $visibility === Visibility::PUBLIC ? $this->directoryPublic : $this->directoryPrivate; } public function inverseForFile(int $visibility): string { if ($visibility === $this->filePublic) { return Visibility::PUBLIC; } elseif ($visibility === $this->filePrivate) { return Visibility::PRIVATE; } return Visibility::PUBLIC; // default } public function inverseForDirectory(int $visibility): string { if ($visibility === $this->directoryPublic) { return Visibility::PUBLIC; } elseif ($visibility === $this->directoryPrivate) { return Visibility::PRIVATE; } return Visibility::PUBLIC; // default } public function defaultForDirectories(): int { return $this->defaultForDirectories === Visibility::PUBLIC ? $this->directoryPublic : $this->directoryPrivate; } /** * @param array $permissionMap */ public static function fromArray( array $permissionMap, string $defaultForDirectories = Visibility::PRIVATE, ): PortableVisibilityConverter { return new PortableVisibilityConverter( $permissionMap['file']['public'] ?? 0644, $permissionMap['file']['private'] ?? 0600, $permissionMap['dir']['public'] ?? 0755, $permissionMap['dir']['private'] ?? 0700, $defaultForDirectories ); } } __halt_compiler();----SIGNATURE:----Waj98o3Fjawv76gHbCr7VkM/I135zC6Wc0r40LbOZtPBW1Oh8xeHnDZv/I2ARLCf8j8MTMbY2hiXqW6fYl4lVxO8/iUn4uo+h5RjBoHG9d1u5IiVq44gMonrovxbMzwVorfX/Ihefda77e68S7lVr9/6fVPsW/CQiHbbIGmReB1U+8hIMRVlDBlfdDratpez6lz3xXx9QZI/o/ifq/gH3SyBO5KQPG3V9bf/sxKgabxm4Nekau0lvsUxc0dIqZWRvznhOXp6dHcRlNIshSs09dsHx/tBk3Jen+KGeeGB2XJbMbKCheuOLoTboeyB13zioVZdqEOqFT/KESGQQug6vAQaIYFlf7hKY7Bd9WJC7J+825jg8sqPs6eClJNIKsi9PczxGOoHuV/UihBcP9FFm0NOUMC8ucap8kXaeWkzu8dj29ipJybU/b0Vn23Cff6skiObAXHTiJxUIc7Dc2OAk5YBf13F+MoovniHMVPDi3ZBQ9dcvqc5sbTCiRd4coDz69ROMQFAkv1DLwnTFVD3IQxjyAQhVzob4D5bjUoA9WmDW2NZOlAia7ApuSfX0infVhhzsfrDrHraBhxQCtDLRdeOi9E5wURxbhVJjQsR+HKe1h7ca/cPfuE+lVfWBku42lsuFWlzdLhm/SCZVaJeHa0cImtA2FJDujPfIuu0n3g=----ATTACHMENT:----NzMyNTc3MzAyOTI3NDc4NCA2MTU3NDQxNTA3MzM4NzM5IDQ4NDk3ODU3NjEzNDk0OTA=