ElggDiskFilestore::open PHP Méthode

open() public méthode

Open a file for reading, writing, or both.
public open ( ElggFile $file, string $mode ) : resource
$file ElggFile The file to open
$mode string read, write, or append.
Résultat resource File pointer resource
    public function open(\ElggFile $file, $mode)
    {
        $fullname = $this->getFilenameOnFilestore($file);
        // Split into path and name
        $ls = strrpos($fullname, "/");
        if ($ls === false) {
            $ls = 0;
        }
        $path = substr($fullname, 0, $ls);
        if ($mode === 'read' && !file_exists($fullname)) {
            return false;
        }
        // Try to create the dir for valid write modes
        if ($mode == 'write' || $mode == 'append') {
            try {
                $this->makeDirectoryRoot($path);
            } catch (Exception $e) {
                _elgg_services()->logger->warn("Couldn't create directory: {$path}");
                return false;
            }
        }
        switch ($mode) {
            case "read":
                $mode = "rb";
                break;
            case "write":
                $mode = "w+b";
                break;
            case "append":
                $mode = "a+b";
                break;
            default:
                $msg = "Unrecognized file mode '" . $mode . "'";
                throw new \InvalidParameterException($msg);
        }
        return fopen($fullname, $mode);
    }