Use a data provider instead of calling the function manually everytime
Fix code layout before fixing the function
Use md5() of the original name instead of uniqid() for slugifying

Previously we used uniqid() here.
However this means that the behaviour is not reproducable, so
when uploading files into a "empty" folder, the folders name is
different.

If there would be a md5() hash collition, the deduplicate check
will spot this and append an index later, so this should not be
a problem.

Fix #6722