ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilStyleIRSSMigration.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
24
26{
28
29 public function getLabel(): string
30 {
31 return 'Migration of style images to the resource storage service.';
32 }
33
35 {
36 return 10000;
37 }
38
39 public function getPreconditions(Environment $environment): array
40 {
42 }
43
44 public function prepare(Environment $environment): void
45 {
46 $this->helper = new ilResourceStorageMigrationHelper(
48 $environment
49 );
50 }
51
52 public function step(Environment $environment): void
53 {
54 $r = $this->helper->getDatabase()->query(
55 "SELECT id FROM style_data WHERE rid IS NULL OR rid = '' LIMIT 1;"
56 );
57
58 $d = $this->helper->getDatabase()->fetchObject($r);
59 $object_id = (int) ($d->id ?? null);
60
61 $resource_owner_id = (int) ($d->owner_id ?? 6); // TODO JOIN
62
63 $style_path = $this->buildBasePath($object_id);
64
65 $rid = $this->helper->moveDirectoryToContainerResource(
66 $style_path,
67 $resource_owner_id
68 );
69
70 if ($rid !== null) {
71 $this->helper->getDatabase()->update(
72 'style_data',
73 ['rid' => ['text', $rid->serialize()]],
74 ['id' => ['integer', $object_id],]
75 );
76
77 //$this->recursiveRmDir($lm_path);
78 } else {
79 /*
80 $this->helper->getDatabase()->update(
81 'style_data',
82 ['rid' => ['text', '-']],
83 ['id' => ['integer', $object_id],]
84 );*/
85 }
86 }
87
88 private function recursiveRmDir(string $path): void
89 {
90 // recursively remove directory
91 $files = array_diff(scandir($path), ['.', '..']);
92 foreach ($files as $file) {
93 (is_dir("$path/$file")) ? $this->recursiveRmDir("$path/$file") : unlink("$path/$file");
94 }
95 }
96
97 public function getRemainingAmountOfSteps(): int
98 {
99 $r = $this->helper->getDatabase()->query(
100 "SELECT COUNT(id) AS amount FROM style_data WHERE rid IS NULL OR rid = ''"
101 );
102 $d = $this->helper->getDatabase()->fetchObject($r) ?? new stdClass();
103
104 return (int) ($d->amount ?? 0);
105 }
106
107 protected function buildBasePath(int $object_id): string
108 {
109 return CLIENT_WEB_DIR . '/sty/sty_' . $object_id;
110 }
111
112 public function getFileNameCallback(string $pattern): Closure
113 {
114 return static function (string $file_name) use ($pattern): string {
115 if (preg_match($pattern, $file_name, $matches)) {
116 return $matches[1] ?? $file_name;
117 }
118 return $file_name;
119 };
120 }
121
122 public function getRevisionNameCallback(): Closure
123 {
124 return static function (string $file_name): string {
125 return md5($file_name);
126 };
127 }
128}
getPreconditions(Environment $environment)
Objectives the migration depend on.
getRemainingAmountOfSteps()
Count up how many "things" need to be migrated.
getDefaultAmountOfStepsPerRun()
Tell the default amount of steps to be executed for one run of the migration.
ilResourceStorageMigrationHelper $helper
step(Environment $environment)
Run one step of the migration.
prepare(Environment $environment)
Prepare the migration by means of some environment.
const CLIENT_WEB_DIR
Definition: constants.php:47
An environment holds resources to be used in the setup process.
Definition: Environment.php:28
A migration is a potentially long lasting operation that can be broken into discrete steps.
Definition: Migration.php:29
$path
Definition: ltiservices.php:30