// //= 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.