Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

DataObjectManager Module

Discuss the DataObjectManager module, and the related ImageGallery module.

Moderators: martimiz, UncleCheese, Sean, biapar, Willr, Ingo, swaiba, simon_w

rename $pathBeforeAbs bug when adding a new Image Gallery Page


Reply

703 Views

Avatar
slith

12 August 2010 at 9:37pm (Last edited: 12 August 2010 10:12pm), Community Member, 7 Posts

I'm running SS 2.4.1 with the latest SVN builds of DataObjectManager, SWFUpload, and Image Gallery.

After creating my initial Image Gallery Page, I tried adding a new Image Gallery Page and Firebug was giving me this error :

ERROR [Warning]: rename(/MYPATH/public_html/assets/image-gallery/New-ImageGalleryPage-2/,/MYPATH/public_html/assets/image-gallery/New-ImageGalleryPage/) [<a href='function.rename'>function.rename</a>]: No such file or directory
IN POST /admin/AddPageOptionsForm
Line 402 in /MYPATH/public_html/sapphire/filesystem/File.php

Without Firebug, I wasn't seeing any error, so it appeared like nothing was happening when I hit "Go" but the page was there if i refreshed my /admin page.

When I hit "Go" a third time it worked fine but since it had already created my second New Image Gallery Page and the "New-ImageGalleryPage-2" directory in assets/image-gallery, it would trigger the error because $pathBeforeAbs was still set to "New-ImageGalleryPage-2"

If I continued adding pages, it would continue incrementing the number after "image-gallery/New-ImageGalleryPage-#", but $pathBeforeAbs was still looking for New-ImageGalleryPage-2.

I got around this problem by running a clean install and then editing sapphire/filesystem/File.php and changing the rename() code on line 402 to first check if $pathBeforeAbs exists.

So on line 402, I changed:

// Rename file or folder
$success = rename($pathBeforeAbs, $pathAfterAbs);
if(!$success) throw new Exception("Cannot move $pathBeforeAbs to $pathAfterAbs");

to

// Rename file or folder
if(file_exists($pathBeforeAbs)){            
$success = rename($pathBeforeAbs, $pathAfterAbs);
if(!$success) throw new Exception("Cannot move $pathBeforeAbs to $pathAfterAbs");         
}   

this appears to have fixed the problem... but perhaps there is a better solution for this?