ILIAS  trunk Revision v11.0_alpha-1713-gd8962da2f67
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
class.ilStyleIRSSMigration.php
Go to the documentation of this file.
1 <?php
2 
19 declare(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 }
step(Environment $environment)
Run one step of the migration.
A migration is a potentially long lasting operation that can be broken into discrete steps...
Definition: Migration.php:28
getPreconditions(Environment $environment)
Objectives the migration depend on.
ilResourceStorageMigrationHelper $helper
$path
Definition: ltiservices.php:29
prepare(Environment $environment)
Prepare the migration by means of some environment.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getRemainingAmountOfSteps()
Count up how many "things" need to be migrated.
const CLIENT_WEB_DIR
Definition: constants.php:47
getDefaultAmountOfStepsPerRun()
Tell the default amount of steps to be executed for one run of the migration.
An environment holds resources to be used in the setup process.
Definition: Environment.php:27
$r