ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ilFileObjectToStorageMigrationRunner Class Reference
+ Collaboration diagram for ilFileObjectToStorageMigrationRunner:

Public Member Functions

 __construct (Filesystem $file_system, ilResourceStorageMigrationHelper $irss_helper, string $log_file_name)
 
 migrate (ilFileObjectToStorageDirectory $item)
 
 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.

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

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  }
+ 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.

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

References $d, and ilFileObjectToStorageDirectory\getObjectId().

Referenced by migrate().

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

Referenced by migrate().

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
+ Here is the caller graph for this function:

◆ migrate()

ilFileObjectToStorageMigrationRunner::migrate ( ilFileObjectToStorageDirectory  $item)

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

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

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,
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)
Class ilFileObjectToStorageInfoResolver.
$version
Definition: plugin.php:24
+ 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.

References $migrate_to_new_object_id.

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

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

Referenced by migrate().

◆ $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: