ILIAS  release_8 Revision v8.23
ilResourceStorageMigrationHelper Class Reference

Class ilResourceStorageMigrationHelper. More...

+ Collaboration diagram for ilResourceStorageMigrationHelper:

Public Member Functions

 __construct (ResourceStakeholder $stakeholder, Environment $environment)
 ilResourceStorageMigrationHelper constructor. More...
 
 getClientDataDir ()
 
 getDatabase ()
 
 getStakeholder ()
 
 getResourceBuilder ()
 
 getCollectionBuilder ()
 
 getManager ()
 
 moveFilesOfPatternToCollection (string $absolute_base_path, string $pattern, int $resource_owner_id, int $collection_owner_user_id=ResourceCollection::NO_SPECIFIC_OWNER, ?Closure $file_name_callback=null, ?Closure $revision_name_callback=null)
 
 movePathToStorage (string $absolute_path, int $owner_user_id, ?Closure $file_name_callback=null, ?Closure $revision_name_callback=null)
 

Static Public Member Functions

static getPreconditions ()
 

Protected Attributes

string $client_data_dir
 
ilDBInterface $database
 
ResourceBuilder $resource_builder
 
CollectionBuilder $collection_builder
 
ResourceStakeholder $stakeholder
 
Manager $manager
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilResourceStorageMigrationHelper::__construct ( ResourceStakeholder  $stakeholder,
Environment  $environment 
)

ilResourceStorageMigrationHelper constructor.

Parameters
string$client_data_dir
ilDBInterface$database

PhpFieldAssignmentTypeMismatchInspection

Definition at line 54 of file class.ilResourceStorageMigrationHelper.php.

References $client_data_dir, $client_id, $container, $data_dir, Vendor\Package\$f, $stakeholder, InitResourceStorage\D_REPOSITORY_PRELOADER, and ILIAS\Setup\Environment\getResource().

57  {
58  $this->stakeholder = $stakeholder;
60  $db = $environment->getResource(Environment::RESOURCE_DATABASE);
61  $ilias_ini = $environment->getResource(Environment::RESOURCE_ILIAS_INI);
62  $client_id = $environment->getResource(Environment::RESOURCE_CLIENT_ID);
63  $data_dir = $ilias_ini->readVariable('clients', 'datadir');
64  $client_data_dir = "{$data_dir}/{$client_id}";
65  if (!defined("CLIENT_WEB_DIR")) {
66  define("CLIENT_WEB_DIR", dirname(__DIR__, 4) . "/data/" . $client_id);
67  }
68  if (!defined("ILIAS_WEB_DIR")) {
69  define("ILIAS_WEB_DIR", dirname(__DIR__, 4));
70  }
71  if (!defined("CLIENT_ID")) {
72  define("CLIENT_ID", $client_id);
73  }
74  $this->client_data_dir = $client_data_dir;
75  $this->database = $db;
76 
77  // Build Container
78  $init = new InitResourceStorage();
79  $container = new Container();
80  $container['ilDB'] = $db;
81  $storageConfiguration = new LocalConfig($client_data_dir);
83  $container['filesystem.storage'] = $f->getLocal($storageConfiguration);
84 
85  $this->resource_builder = $init->getResourceBuilder($container);
86  $this->collection_builder = new CollectionBuilder(
87  new CollectionDBRepository($db)
88  );
89 
90  $this->manager = new Manager(
91  $this->resource_builder,
92  $this->collection_builder,
94  );
95  }
Responsible for loading the Resource Storage into the dependency injection container of ILIAS...
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:31
$container
Definition: wac.php:14
getResource(string $id)
Consumers of this method should check if the result is what they expect, e.g.
$client_id
Definition: ltiauth.php:68
Class StorageManager.
Definition: Manager.php:39
+ Here is the call graph for this function:

Member Function Documentation

◆ getClientDataDir()

ilResourceStorageMigrationHelper::getClientDataDir ( )

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

References $client_data_dir.

Referenced by ilFileObjectToStorageMigrationHelper\__construct(), and ilFileObjectToStorageMigrationRunner\__construct().

109  : string
110  {
111  return $this->client_data_dir;
112  }
+ Here is the caller graph for this function:

◆ getCollectionBuilder()

ilResourceStorageMigrationHelper::getCollectionBuilder ( )

Definition at line 129 of file class.ilResourceStorageMigrationHelper.php.

References $collection_builder.

Referenced by getManager(), and moveFilesOfPatternToCollection().

+ Here is the caller graph for this function:

◆ getDatabase()

ilResourceStorageMigrationHelper::getDatabase ( )

◆ getManager()

ilResourceStorageMigrationHelper::getManager ( )

Definition at line 134 of file class.ilResourceStorageMigrationHelper.php.

References $manager, getCollectionBuilder(), and movePathToStorage().

Referenced by ilFileObjectToStorageMigrationRunner\__construct().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPreconditions()

static ilResourceStorageMigrationHelper::getPreconditions ( )
static
Returns
[]|[]|[]

Definition at line 100 of file class.ilResourceStorageMigrationHelper.php.

Referenced by ilBibliographicStorageMigration\getPreconditions(), and ilFileObjectToStorageMigration\getPreconditions().

+ Here is the caller graph for this function:

◆ getResourceBuilder()

ilResourceStorageMigrationHelper::getResourceBuilder ( )

Definition at line 124 of file class.ilResourceStorageMigrationHelper.php.

References $resource_builder.

Referenced by ilFileObjectToStorageMigrationRunner\__construct().

+ Here is the caller graph for this function:

◆ getStakeholder()

ilResourceStorageMigrationHelper::getStakeholder ( )

Definition at line 119 of file class.ilResourceStorageMigrationHelper.php.

References $stakeholder.

Referenced by ilFileObjectToStorageMigrationRunner\__construct().

+ Here is the caller graph for this function:

◆ moveFilesOfPatternToCollection()

ilResourceStorageMigrationHelper::moveFilesOfPatternToCollection ( string  $absolute_base_path,
string  $pattern,
int  $resource_owner_id,
int  $collection_owner_user_id = ResourceCollection::NO_SPECIFIC_OWNER,
?Closure  $file_name_callback = null,
?Closure  $revision_name_callback = null 
)

Definition at line 172 of file class.ilResourceStorageMigrationHelper.php.

References getCollectionBuilder(), and movePathToStorage().

180  $collection = $this->getCollectionBuilder()->new($collection_owner_user_id);
181 
182  $regex_iterator = new RecursiveRegexIterator(
183  new RecursiveDirectoryIterator($absolute_base_path),
184  $pattern,
185  RecursiveRegexIterator::MATCH
186  );
187 
188  foreach ($regex_iterator as $file_info) {
189  if (!$file_info->isFile()) {
190  continue;
191  }
192  $resource_id = $this->movePathToStorage(
193  $file_info->getRealPath(),
194  $resource_owner_id,
195  $file_name_callback,
196  $revision_name_callback
197  );
198  if ($resource_id !== null) {
199  $collection->add($resource_id);
200  }
201  }
202  if ($collection->count() === 0) {
203  return null;
204  }
205 
206  if ($this->getCollectionBuilder()->store($collection)) {
207  return $collection->getIdentification();
208  }
209  return null;
210  }
movePathToStorage(string $absolute_path, int $owner_user_id, ?Closure $file_name_callback=null, ?Closure $revision_name_callback=null)
+ Here is the call graph for this function:

◆ movePathToStorage()

ilResourceStorageMigrationHelper::movePathToStorage ( string  $absolute_path,
int  $owner_user_id,
?Closure  $file_name_callback = null,
?Closure  $revision_name_callback = null 
)

Definition at line 212 of file class.ilResourceStorageMigrationHelper.php.

References Vendor\Package\$e.

Referenced by getManager(), and moveFilesOfPatternToCollection().

218  try {
219  // in some cases fopen throws a warning instead of returning false
220  $open_path = fopen($absolute_path, 'rb');
221  } catch (Throwable $e) {
222  return null;
223  }
224 
225  if ($open_path === false) {
226  return null;
227  }
228  $stream = Streams::ofResource($open_path);
229 
230  // create new resource from legacy files stream
231  $revision_title = $revision_name_callback !== null
232  ? $revision_name_callback(basename($absolute_path))
233  : basename($absolute_path);
234 
235  $file_name = $file_name_callback !== null
236  ? $file_name_callback(basename($absolute_path))
237  : null;
238 
239  $resource = $this->resource_builder->newFromStream(
240  $stream,
241  new StreamInfoResolver(
242  $stream,
243  1,
244  $owner_user_id,
245  $revision_title,
246  $file_name
247  ),
248  false
249  );
250 
251  // add bibliographic stakeholder and store resource
252  $resource->addStakeholder($this->stakeholder);
253  $this->resource_builder->store($resource);
254 
255  return $resource->getIdentification();
256  }
+ Here is the caller graph for this function:

Field Documentation

◆ $client_data_dir

string ilResourceStorageMigrationHelper::$client_data_dir
protected

Definition at line 42 of file class.ilResourceStorageMigrationHelper.php.

Referenced by __construct(), and getClientDataDir().

◆ $collection_builder

CollectionBuilder ilResourceStorageMigrationHelper::$collection_builder
protected

Definition at line 45 of file class.ilResourceStorageMigrationHelper.php.

Referenced by getCollectionBuilder().

◆ $database

ilDBInterface ilResourceStorageMigrationHelper::$database
protected

Definition at line 43 of file class.ilResourceStorageMigrationHelper.php.

Referenced by getDatabase().

◆ $manager

Manager ilResourceStorageMigrationHelper::$manager
protected

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

Referenced by getManager().

◆ $resource_builder

ResourceBuilder ilResourceStorageMigrationHelper::$resource_builder
protected

Definition at line 44 of file class.ilResourceStorageMigrationHelper.php.

Referenced by getResourceBuilder().

◆ $stakeholder

ResourceStakeholder ilResourceStorageMigrationHelper::$stakeholder
protected

Definition at line 46 of file class.ilResourceStorageMigrationHelper.php.

Referenced by __construct(), and getStakeholder().


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