ILIAS  release_8 Revision v8.24
ilFileObjectToStorageMigrationRunner Class Reference
+ Collaboration diagram for ilFileObjectToStorageMigrationRunner:

Public Member Functions

 __construct (Filesystem $file_system, ilResourceStorageMigrationHelper $irss_helper, string $log_file_name)
 
 migrate (ilFileObjectToStorageDirectory $item)
 @inheritDoc More...
 
 getMigrateToNewObjectId ()
 
 setMigrateToNewObjectId (?int $migrate_to_new_object_id)
 

Protected Attributes

string $movement_implementation = ''
 
ConsumerFactory $consumer_factory
 
Manager $storage_manager
 
ResourceBuilder $resource_builder
 
 $migration_log_handle
 
Filesystem $file_system
 
ilDBInterface $database
 
bool $keep_originals = false
 
int $migrate_to_new_object_id = null
 
ResourceStakeholder $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,
ilResourceStorageMigrationHelper  $irss_helper,
string  $log_file_name 
)

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

59 {
60 $this->file_system = $file_system;
61 $this->database = $irss_helper->getDatabase();
62
63 $legacy_directory = $irss_helper->getClientDataDir() . '/ilFile/';
64 if (is_dir($legacy_directory)) {
65 $this->migration_log_handle = fopen($legacy_directory . $log_file_name, 'ab');
66 } else {
67 $this->migration_log_handle = false;
68 }
69
70 $this->resource_builder = $irss_helper->getResourceBuilder();
71 $this->storage_manager = $irss_helper->getManager();
72 $this->stakeholder = $irss_helper->getStakeholder();
73 }

References $file_system, ilResourceStorageMigrationHelper\getClientDataDir(), ilResourceStorageMigrationHelper\getDatabase(), ilResourceStorageMigrationHelper\getManager(), ilResourceStorageMigrationHelper\getResourceBuilder(), and ilResourceStorageMigrationHelper\getStakeholder().

+ Here is the call graph for this function:

Member Function Documentation

◆ getMigrateToNewObjectId()

ilFileObjectToStorageMigrationRunner::getMigrateToNewObjectId ( )
Returns
int|null

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

Referenced by migrate().

+ Here is the caller graph for this function:

◆ getResource()

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

ILIAS\ResourceStorage\Resource\ResourceNotFoundException

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

172 $r = $this->database->queryF(
173 "SELECT rid FROM file_data WHERE file_id = %s",
174 ['integer'],
175 [$item->getObjectId()]
176 );
177 $d = $this->database->fetchObject($r);
178
179 if (isset($d->rid) && $d->rid !== '' && ($resource_identification = $this->storage_manager->find(
180 $d->rid
181 )) && $resource_identification !== null) {
182 $resource = $this->resource_builder->get($resource_identification);
183 } else {
184 $resource = $this->resource_builder->newBlank();
185 }
186 return $resource;
187 }
for( $i=6;$i< 13;$i++) for($i=1; $i< 13; $i++) $d
Definition: date.php:296

Referenced by migrate().

+ 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 141 of file class.ilFileObjectToStorageMigrationRunner.php.

149 : void {
150 if (!$this->migration_log_handle) {
151 return;
152 }
153 fputcsv($this->migration_log_handle, [
154 $object_id,
155 $old_path,
156 $rid,
157 $version,
158 $status,
160 $aditional_info
161 ], ";");
162 }
$version
Definition: plugin.php:24

Referenced by migrate().

+ Here is the caller graph for this function:

◆ migrate()

ilFileObjectToStorageMigrationRunner::migrate ( ilFileObjectToStorageDirectory  $item)

@inheritDoc

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

78 : void
79 {
80 $resource = $this->getResource($item);
81
82 $object_id = $this->getMigrateToNewObjectId() ?? $item->getObjectId();
83 foreach ($item->getVersions() as $version) {
84 try {
85 $status = 'success';
86 $aditional_info = '';
87
88 $stream = Streams::ofResource(fopen($version->getPath(), 'rb'));
89
90 $info_resolver = new ilFileObjectToStorageInfoResolver(
91 $stream,
92 $version->getVersion(),
93 $version->getOwner(),
94 $version->getTitle(),
95 (new DateTimeImmutable())->setTimestamp($version->getCreationDateTimestamp())
96 );
97
98 $this->resource_builder->appendFromStream(
99 $resource,
100 $stream,
101 $info_resolver,
102 $this->keep_originals
103 );
104 } catch (Throwable $t) {
105 $status = 'failed';
106 $aditional_info = $t->getMessage();
107 }
108
109 $this->logMigratedFile(
110 $object_id,
111 $resource->getIdentification()->serialize(),
112 $version->getVersion(),
113 $version->getPath(),
114 $status,
115 $this->movement_implementation,
116 $aditional_info
117 );
118 }
119 $resource->addStakeholder($this->stakeholder);
120 try {
121 $this->resource_builder->store($resource);
122 $this->database->manipulateF(
123 'UPDATE file_data SET rid = %s WHERE file_id = %s',
124 ['text', 'integer'],
125 [$resource->getIdentification()->serialize(), $object_id]
126 );
127 } catch (FileNamePolicyException $e) {
128 // continue
129 $this->database->manipulateF(
130 'UPDATE file_data SET rid = %s WHERE file_id = %s',
131 ['text', 'integer'],
132 ['error', $object_id]
133 );
134 }
135
136 if (null === $this->getMigrateToNewObjectId()) {
137 $item->tearDown();
138 }
139 }
logMigratedFile(int $object_id, string $rid, int $version, string $old_path, string $status, string $movement_implementation, string $aditional_info=null)

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

+ Here is the call 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 201 of file class.ilFileObjectToStorageMigrationRunner.php.

202 {
203 $this->migrate_to_new_object_id = $migrate_to_new_object_id;
204 $this->keep_originals = true;
205 return $this;
206 }

Field Documentation

◆ $consumer_factory

ConsumerFactory ilFileObjectToStorageMigrationRunner::$consumer_factory
protected

◆ $database

ilDBInterface ilFileObjectToStorageMigrationRunner::$database
protected

◆ $file_system

Filesystem ilFileObjectToStorageMigrationRunner::$file_system
protected

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

Referenced by __construct().

◆ $keep_originals

bool ilFileObjectToStorageMigrationRunner::$keep_originals = false
protected

◆ $migrate_to_new_object_id

int ilFileObjectToStorageMigrationRunner::$migrate_to_new_object_id = null
protected

◆ $migration_log_handle

ilFileObjectToStorageMigrationRunner::$migration_log_handle
protected

◆ $movement_implementation

string ilFileObjectToStorageMigrationRunner::$movement_implementation = ''
protected

◆ $resource_builder

ResourceBuilder ilFileObjectToStorageMigrationRunner::$resource_builder
protected

◆ $stakeholder

ResourceStakeholder ilFileObjectToStorageMigrationRunner::$stakeholder
protected

◆ $storage_manager

Manager ilFileObjectToStorageMigrationRunner::$storage_manager
protected

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