Hani Posted November 19, 2013 Posted November 19, 2013 When calling rename() on a file where the same filename already exists in that pagefiles array, the unique name given to the target file doesn't follow the same convention used when uploading a file using WireUpload. Is there a reason or was this just a carryover from old version of PW that never got revised? For example, I have two files in a file field. The first being called "los_angeles.jpg" and the second called "new_york.jpg". If I rename "new_york.jpg" (using rename() via the API, of course), the file ends up being called "1_angeles.jpg". If I were to upload a duplicate of "los_angeles.jpg" to the field normally from within ProcessWire, the file ends up being called "los_angeles-1.jpg" - which is arguably the better result. To fix this, I tweaked the cleanBasename function in Pagefiles.php in the core (gasp!). I replaced the following: while(is_file($path . $basename)) { $basename = (++$n) . "_" . preg_replace('/^\d+_/', '', $basename); } With: $p = pathinfo($basename); while(is_file($path . $basename)) { $n++; $basename = "$p[filename]-$n.$p[extension]"; } I don't think there are any negative trickle-down implications for doing this. Is this something we can get changed in an upcoming build? Side note: just had to share that by inspecting the code, I learned about the pathinfo() function - which for some reason, I never knew about. What an amazing little function! Whenever I have needed to get a file's name and extension before, I'd do something that now seems embarrassingly amateurish (and now laughable): $filename = 'myfilename.jpg'; $name = substr($filename , 0, strrpos( $filename , '.') ); $ext = end( explode('.',$filename) ); 1
ryan Posted November 23, 2013 Posted November 23, 2013 I think that this change should be okay, I can't think of any potential side effects here. I make the same change here–thanks!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now