/** * @group FileService */ public function testCanTransferFile() { $dataroot = elgg_get_config('dataroot'); $file = new \ElggFile(); $file->owner_guid = 3; $file->setFilename("file-to-transfer.txt"); $file->setFilename("file-to-transfer.txt"); // Fail with non-existent file $this->assertFalse($file->transfer(4)); $file->open('write'); $file->write('Transfer'); $file->close(); $this->assertTrue($file->transfer(4)); $this->assertEquals(4, $file->owner_guid); $this->assertEquals("file-to-transfer.txt", $file->getFilename()); $this->assertEquals("{$dataroot}1/4/file-to-transfer.txt", $file->getFilenameOnFilestore()); $this->assertTrue($file->exists()); $this->assertFalse(file_exists("{$dataroot}1/3/file-to-transfer.txt")); $this->assertTrue($file->transfer(3, 'tmp/transferred-file.txt')); $this->assertEquals(3, $file->owner_guid); $this->assertEquals("tmp/transferred-file.txt", $file->getFilename()); $this->assertEquals("{$dataroot}1/3/tmp/transferred-file.txt", $file->getFilenameOnFilestore()); $this->assertTrue($file->exists()); $this->assertFalse(file_exists("{$dataroot}1/4/file-to-transfer.txt")); // cleanup _elgg_rmdir("{$dataroot}1/3/"); _elgg_rmdir("{$dataroot}1/4/"); }
/** * Listen to group ownership changes and update group icon ownership * This will only move the source file, the actual icons are moved by * _elgg_filestore_move_icons() * * This operation is performed in an event listener to ensure that icons * are moved when ownership changes outside of the groups/edit action flow. * * @todo #4683 proposes that icons are owned by groups and not group owners * @see _elgg_filestore_move_icons() * * @param string $event "update:after" * @param string $type "group" * @param ElggGroup $group Group entity * @return void */ function groups_update_event_listener($event, $type, $group) { /* @var $group \ElggGroup */ $original_attributes = $group->getOriginalAttributes(); if (empty($original_attributes['owner_guid'])) { return; } $previous_owner_guid = $original_attributes['owner_guid']; // In addition to standard icons, groups plugin stores a copy of the original upload $filehandler = new ElggFile(); $filehandler->owner_guid = $previous_owner_guid; $filehandler->setFilename("groups/{$group->guid}.jpg"); $filehandler->transfer($group->owner_guid); }