transfer() публичный Метод

This is an alternative to using rename() which fails to move files to a non-existent directory under new owner's filestore directory
public transfer ( integer $owner_guid, string $filename = null ) : boolean
$owner_guid integer New owner's guid
$filename string New filename (uses old filename if not set)
Результат boolean
Пример #1
0
 /**
  * @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/");
 }
Пример #2
0
/**
 * 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);
}