ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
ilFileObjectToStorageMigrationRunner Class Reference
+ Collaboration diagram for ilFileObjectToStorageMigrationRunner:

Public Member Functions

 __construct (Filesystem $file_system, ilDBInterface $database, string $log_file_path)
 ilFileObjectToStorageMigration constructor. More...
 
 migrate (ilFileObjectToStorageDirectory $item)
 
 getMigrateToNewObjectId ()
 
 setMigrateToNewObjectId (?int $migrate_to_new_object_id)
 

Protected Attributes

 $movement_implementation
 
 $consumer_factory
 
 $storage_manager
 
 $resource_builder
 
 $migration_log_handle
 
 $file_system
 
 $database
 
 $keep_originals = false
 
 $migrate_to_new_object_id = null
 
 $stakeholder
 

Private Member Functions

 logMigratedFile (int $object_id, string $rid, int $version, string $old_path, string $status, string $movement_implementation, string $aditional_info=null)
 
 getResource (ilFileObjectToStorageDirectory $item)
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilFileObjectToStorageMigrationRunner::__construct ( Filesystem  $file_system,
ilDBInterface  $database,
string  $log_file_path 
)

ilFileObjectToStorageMigration constructor.

Parameters
Filesystem$file_system
ilDBInterface$database

Definition at line 70 of file class.ilFileObjectToStorageMigrationRunner.php.

References $builder, $database, and $file_system.

71  {
72  $this->file_system = $file_system;
73  $this->database = $database;
74  $this->migration_log_handle = fopen($log_file_path, 'ab');
75 
76  $storage_handler = new MaxNestingFileSystemStorageHandler($this->file_system, Location::STORAGE, true);
77  $storage_handler_factory = new StorageHandlerFactory([
78  $storage_handler
79  ]);
80 
81  $this->movement_implementation = $storage_handler->movementImplementation();
82 
83  $revisionDBRepository = new RevisionDBRepository($database);
84  $resourceDBRepository = new ResourceDBRepository($database);
85  $informationDBRepository = new InformationDBRepository($database);
86  $stakeholderDBRepository = new StakeholderDBRepository($database);
88  $storage_handler_factory,
89  $revisionDBRepository,
90  $resourceDBRepository,
91  $informationDBRepository,
92  $stakeholderDBRepository,
93  new LockHandlerilDB($database)
94  );
95  $this->resource_builder = $builder;
96  $this->storage_manager = new Manager($builder, new StandardRepositoryPreloader(
97  $resourceDBRepository,
98  $revisionDBRepository,
99  $informationDBRepository,
100  $stakeholderDBRepository
101  ));
102  $this->consumer_factory = new ConsumerFactory($storage_handler_factory);
103  $this->stakeholder = new ilObjFileStakeholder();
104  }
Class ilObjFileStakeholder.
$builder
Definition: parser.php:5
Class StorageManager.
Definition: Manager.php:21

Member Function Documentation

◆ getMigrateToNewObjectId()

ilFileObjectToStorageMigrationRunner::getMigrateToNewObjectId ( )
Returns
int|null

Definition at line 210 of file class.ilFileObjectToStorageMigrationRunner.php.

References $migrate_to_new_object_id.

Referenced by migrate().

+ Here is the caller graph for this function:

◆ getResource()

ilFileObjectToStorageMigrationRunner::getResource ( ilFileObjectToStorageDirectory  $item)
private
Parameters
ilFileObjectToStorageDirectory$item
Returns
StorableResource
Exceptions

Definition at line 192 of file class.ilFileObjectToStorageMigrationRunner.php.

References $d, and ilFileObjectToStorageDirectory\getObjectId().

Referenced by migrate().

194  : StorableResource {
195  $r = $this->database->queryF("SELECT rid FROM file_data WHERE file_id = %s", ['integer'],
196  [$item->getObjectId()]);
197  $d = $this->database->fetchObject($r);
198 
199  if (isset($d->rid) && $d->rid !== '' && ($resource_identification = $this->storage_manager->find($d->rid)) && $resource_identification !== null) {
200  $resource = $this->resource_builder->get($resource_identification);
201  } else {
202  $resource = $this->resource_builder->newBlank();
203  }
204  return $resource;
205  }
for($i=6; $i< 13; $i++) for($i=1; $i< 13; $i++) $d
Definition: date.php:296
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ logMigratedFile()

ilFileObjectToStorageMigrationRunner::logMigratedFile ( int  $object_id,
string  $rid,
int  $version,
string  $old_path,
string  $status,
string  $movement_implementation,
string  $aditional_info = null 
)
private

Definition at line 167 of file class.ilFileObjectToStorageMigrationRunner.php.

Referenced by migrate().

175  : void {
176  fputcsv($this->migration_log_handle, [
177  $object_id,
178  $old_path,
179  $rid,
180  $version,
181  $status,
183  $aditional_info
184  ], ";");
185  }
+ Here is the caller graph for this function:

◆ migrate()

ilFileObjectToStorageMigrationRunner::migrate ( ilFileObjectToStorageDirectory  $item)

Definition at line 109 of file class.ilFileObjectToStorageMigrationRunner.php.

References Vendor\Package\$e, $movement_implementation, getMigrateToNewObjectId(), ilFileObjectToStorageDirectory\getObjectId(), getResource(), ilFileObjectToStorageDirectory\getVersions(), logMigratedFile(), and ilFileObjectToStorageDirectory\tearDown().

Referenced by ilObjFileDAV\handleFileUpload(), and ilFileVersionsGUI\migrate().

109  : void
110  {
111  $resource = $this->getResource($item);
112 
113  $object_id = $this->getMigrateToNewObjectId() ?? $item->getObjectId();
114  foreach ($item->getVersions() as $version) {
115  try {
116  $status = 'success';
117  $aditional_info = '';
118 
119  $stream = Streams::ofResource(fopen($version->getPath(), 'rb'));
120 
121  $info_resolver = new ilFileObjectToStorageInfoResolver(
122  $stream,
123  $version->getVersion(),
124  $version->getOwner(),
125  $version->getTitle(),
126  (new DateTimeImmutable())->setTimestamp($version->getCreationDateTimestamp())
127  );
128 
129  $this->resource_builder->appendFromStream(
130  $resource,
131  $stream,
132  $info_resolver,
133  $this->keep_originals
134  );
135  } catch (Throwable $t) {
136  $status = 'failed';
137  $aditional_info = $t->getMessage();
138  }
139 
140  $this->logMigratedFile(
141  $object_id,
142  $resource->getIdentification()->serialize(),
143  $version->getVersion(),
144  $version->getPath(),
145  $status,
147  $aditional_info
148  );
149  }
150  $resource->addStakeholder($this->stakeholder);
151  try {
152  $this->resource_builder->store($resource);
153  $this->database->manipulateF(
154  'UPDATE file_data SET rid = %s WHERE file_id = %s',
155  ['text', 'integer'],
156  [$resource->getIdentification()->serialize(), $object_id]
157  );
158  } catch (FileNamePolicyException $e) {
159  // continue
160  }
161 
162  if (null === $this->getMigrateToNewObjectId()) {
163  $item->tearDown();
164  }
165  }
logMigratedFile(int $object_id, string $rid, int $version, string $old_path, string $status, string $movement_implementation, string $aditional_info=null)
Class ilFileObjectToStorageInfoResolver.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setMigrateToNewObjectId()

ilFileObjectToStorageMigrationRunner::setMigrateToNewObjectId ( ?int  $migrate_to_new_object_id)
Parameters
int | null$migrate_to_new_object_id
Returns
ilFileObjectToStorageMigrationRunner

Definition at line 219 of file class.ilFileObjectToStorageMigrationRunner.php.

References $migrate_to_new_object_id.

Referenced by ilObjFile\doCreate().

220  {
221  $this->migrate_to_new_object_id = $migrate_to_new_object_id;
222  $this->keep_originals = true;
223  return $this;
224  }
+ Here is the caller graph for this function:

Field Documentation

◆ $consumer_factory

ilFileObjectToStorageMigrationRunner::$consumer_factory
protected

◆ $database

ilFileObjectToStorageMigrationRunner::$database
protected

Definition at line 51 of file class.ilFileObjectToStorageMigrationRunner.php.

Referenced by __construct().

◆ $file_system

ilFileObjectToStorageMigrationRunner::$file_system
protected

Definition at line 47 of file class.ilFileObjectToStorageMigrationRunner.php.

Referenced by __construct().

◆ $keep_originals

ilFileObjectToStorageMigrationRunner::$keep_originals = false
protected

◆ $migrate_to_new_object_id

ilFileObjectToStorageMigrationRunner::$migrate_to_new_object_id = null
protected

◆ $migration_log_handle

ilFileObjectToStorageMigrationRunner::$migration_log_handle
protected

◆ $movement_implementation

ilFileObjectToStorageMigrationRunner::$movement_implementation
protected

Definition at line 26 of file class.ilFileObjectToStorageMigrationRunner.php.

Referenced by migrate().

◆ $resource_builder

ilFileObjectToStorageMigrationRunner::$resource_builder
protected

◆ $stakeholder

ilFileObjectToStorageMigrationRunner::$stakeholder
protected

◆ $storage_manager

ilFileObjectToStorageMigrationRunner::$storage_manager
protected

The documentation for this class was generated from the following file: