Example #1
0
//
//= str absolute path
Event::listen(VANE_NS . 'file.path', function ($path) {
    if ("{$path}" === '' or strpbrk($path[0], '\\/') === false) {
        return \Bundle::path('vanemart') . 'storage/files/' . $path;
    } else {
        return $path;
    }
});
// Fired when a local path for storing new File's data needs to be generated.
//
//* $name str - user-supplied custom name, e.g. used on upload.
//
//= str non-existing file system path
Event::listen(VANE_NS . 'file.new.path', function ($name) {
    list($name, $ext) = S::chopTo('.', $name);
    $name = substr(Str::slug($name), 0, 50);
    "{$ext}" === '' or $ext = '.' . Str::slug($ext);
    File::safeName($name . $ext);
    $base = File::storage();
    $result = "{$base}{$name['0']}/{$name}{$ext}";
    if (file_exists($result)) {
        $i = 1;
        do {
            $result = "{$base}{$name['0']}/{$name}-" . ++$i . $ext;
        } while (file_exists($result));
    }
    return $result;
});
// Fired when a new unique File ID (UNSIGNED INT) needs to be generated.
// Make it as random as possible.