From 1b4dda491a74e50986ae5b51ab42bdc3c2a64147 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 7 Feb 2012 18:32:04 +0100 Subject: [PATCH] MINOR Moving File->OwnerID setting to model layer --- filesystem/File.php | 3 +++ forms/FileIFrameField.php | 1 - forms/UploadField.php | 1 - tests/filesystem/FileTest.php | 22 ++++++++++++++++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/filesystem/File.php b/filesystem/File.php index b557cb67c..e1b6b9ef7 100644 --- a/filesystem/File.php +++ b/filesystem/File.php @@ -351,6 +351,9 @@ class File extends DataObject { protected function onBeforeWrite() { parent::onBeforeWrite(); + // Set default owner + if(!$this->ID) $this->OwnerID = (Member::currentUser() ? Member::currentUser()->ID : 0); + // Set default name if(!$this->getField('Name')) $this->Name = "new-" . strtolower($this->class); } diff --git a/forms/FileIFrameField.php b/forms/FileIFrameField.php index 4e66b0464..f23d255bb 100644 --- a/forms/FileIFrameField.php +++ b/forms/FileIFrameField.php @@ -200,7 +200,6 @@ class FileIFrameField extends FileField { $this->form->getRecord()->{$this->getName() . 'ID'} = $fileObject->ID; - $fileObject->OwnerID = (Member::currentUser() ? Member::currentUser()->ID : 0); $fileObject->write(); } diff --git a/forms/UploadField.php b/forms/UploadField.php index c2429127c..e10268206 100644 --- a/forms/UploadField.php +++ b/forms/UploadField.php @@ -447,7 +447,6 @@ class UploadField extends FileField { $return['error'] = implode(' '.PHP_EOL, $this->upload->getErrors()); } else { $file = $this->upload->getFile(); - $file->OwnerID = (Member::currentUser() ? Member::currentUser()->ID : 0); $file->write(); $this->attachFile($file); $file = $this->customiseFile($file); diff --git a/tests/filesystem/FileTest.php b/tests/filesystem/FileTest.php index e89baa1d7..feb8f8d7f 100644 --- a/tests/filesystem/FileTest.php +++ b/tests/filesystem/FileTest.php @@ -295,6 +295,28 @@ class FileTest extends SapphireTest { File::$class_for_file_extension = $orig; } + + function testSetsOwnerOnFirstWrite() { + Session::set('loggedInAs', null); + $member1 = new Member(); + $member1->write(); + $member2 = new Member(); + $member2->write(); + + $file1 = new File(); + $file1->write(); + $this->assertEquals(0, $file1->OwnerID, 'Owner not written when no user is logged in'); + + $member1->logIn(); + $file2 = new File(); + $file2->write(); + $this->assertEquals($member1->ID, $file2->OwnerID, 'Owner written when user is logged in'); + + $member2->logIn(); + $file2->forceChange(); + $file2->write(); + $this->assertEquals($member1->ID, $file2->OwnerID, 'Owner not overwritten on existing files'); + } /////////////////////////////////////////////////////////////////////////////////////////////////////////////