19 declare(strict_types=1);
35 return 'Migration of files of badges to the resource storage service.';
54 $io = $environment->
getResource(Environment::RESOURCE_ADMIN_INTERACTION);
62 $this->helper->getDatabase()->setLimit(1);
63 $res = $this->helper->getDatabase()->query(
64 'SELECT id, image, image_rid FROM ' . self::TABLE_NAME .
" WHERE image_rid IS NULL OR image_rid = ''" 66 $row = $this->helper->getDatabase()->fetchObject(
$res);
74 if ($image !==
'' && $image !==
null) {
78 $this->
inform(
"Trying to move badge file $image_path for id $id to the storage service.");
79 $identification = $this->helper->movePathToStorage($image_path, ResourceCollection::NO_SPECIFIC_OWNER);
80 $this->
inform(
'Migration proceeded without error.');
81 if ($identification ===
null) {
83 'IRSS returned NULL as identification when trying to move badge ' .
84 "file $image_path for id $id to the storage service." 87 $this->
inform(
"IRSS identification for badge with id $id: {$identification->serialize()}",
true);
90 $this->
error(
"Failed to move badge file {$image_path} for id {$id} to the storage service with exception: {$e->getMessage()}");
91 $this->
error($e->getTraceAsString());
95 if ($identification ===
null) {
96 $identification =
'-';
98 $identification = $identification->serialize();
101 $this->helper->getDatabase()->update(
114 $exp = explode(
'.', $image);
115 $suffix = strtolower(array_pop($exp));
117 return $this->
getFilePath($id) .
'/img' . $id .
'.' . $suffix;
131 for ($i = 3; $i > 0; $i--) {
133 if (($tmp = (
int) ($num / $factor)) || $found) {
141 $path_string = (implode(
'/',
$path) .
'/');
144 return $path_string .
'badge_' .
$id;
149 $res = $this->helper->getDatabase()->query(
150 'SELECT COUNT(id) as amount FROM ' . self::TABLE_NAME .
" WHERE image_rid IS NULL OR image_rid = ''" 152 $row = $this->helper->getDatabase()->fetchObject(
$res);
154 return (
int) ($row->amount ?? 0);
162 return static function (
string $file_name):
string {
163 return md5($file_name);
167 private function inform(
string $text,
bool $force =
false): void
169 if ($this->io ===
null || (!$force && !$this->io->isVerbose())) {
173 $this->io->inform($text);
176 private function error(
string $text): void
178 if ($this->io ===
null) {
182 $this->io->error($text);
getRevisionNameCallback()
Wrapper around symfonies input and output facilities to provide just the functionality required for t...
getRemainingAmountOfSteps()
Count up how many "things" need to be migrated.
createLegacyPathSegmentForBadgeId(int $id)
A migration is a potentially long lasting operation that can be broken into discrete steps...
if(!file_exists('../ilias.ini.php'))
getDefaultAmountOfStepsPerRun()
Tell the default amount of steps to be executed for one run of the migration.
inform(string $text, bool $force=false)
getImagePath(int $id, string $image)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
step(Environment $environment)
Run one step of the migration.
prepare(Environment $environment)
Prepare the migration by means of some environment.
getResource(string $id)
Consumers of this method should check if the result is what they expect, e.g.
ilResourceStorageMigrationHelper $helper
getPreconditions(Environment $environment)
Objectives the migration depend on.
An environment holds resources to be used in the setup process.
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
static getPreconditions()