Skip to content

Commit af50648

Browse files
Merge pull request #6465 from christianbeeznest/fixes-updates103
Internal: Add migration for user_session_display_mode and course_sequence_valid_only_in_same_session settings - refs BT#22586
2 parents 40b3fca + 4e60337 commit af50648

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<?php
2+
3+
/* For licensing terms, see /license.txt */
4+
5+
declare(strict_types=1);
6+
7+
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
8+
9+
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
10+
use Doctrine\DBAL\Schema\Schema;
11+
12+
final class Version20250713185400 extends AbstractMigrationChamilo
13+
{
14+
public function getDescription(): string
15+
{
16+
return 'Insert or update platform settings for user_session_display_mode and course_sequence_valid_only_in_same_session.';
17+
}
18+
19+
public function up(Schema $schema): void
20+
{
21+
$settings = [
22+
[
23+
'variable' => 'user_session_display_mode',
24+
'selected_value' => 'card',
25+
'title' => 'Default display mode for My Sessions page',
26+
'comment' => 'Defines the default visual style for showing sessions on the My Sessions page. Options: card (visual blocks), list (classic view).',
27+
'category' => 'session',
28+
],
29+
[
30+
'variable' => 'course_sequence_valid_only_in_same_session',
31+
'selected_value' => 'false',
32+
'title' => 'Course sequence validation only in the same session',
33+
'comment' => 'If enabled, course dependencies are enforced only within the same session and do not block other sessions or standalone courses.',
34+
'category' => 'course',
35+
],
36+
];
37+
38+
foreach ($settings as $setting) {
39+
$sqlCheck = \sprintf(
40+
"SELECT COUNT(*) as count
41+
FROM settings
42+
WHERE variable = '%s'
43+
AND subkey IS NULL
44+
AND access_url = 1",
45+
addslashes($setting['variable'])
46+
);
47+
48+
$stmt = $this->connection->executeQuery($sqlCheck);
49+
$result = $stmt->fetchAssociative();
50+
51+
if ($result && (int) $result['count'] > 0) {
52+
$this->addSql(\sprintf(
53+
"UPDATE settings
54+
SET selected_value = '%s',
55+
title = '%s',
56+
comment = '%s',
57+
category = '%s'
58+
WHERE variable = '%s'
59+
AND subkey IS NULL
60+
AND access_url = 1",
61+
addslashes($setting['selected_value']),
62+
addslashes($setting['title']),
63+
addslashes($setting['comment']),
64+
addslashes($setting['category']),
65+
addslashes($setting['variable'])
66+
));
67+
$this->write(\sprintf('Updated setting: %s', $setting['variable']));
68+
} else {
69+
$this->addSql(\sprintf(
70+
"INSERT INTO settings
71+
(variable, subkey, type, category, selected_value, title, comment, access_url_changeable, access_url_locked, access_url)
72+
VALUES
73+
('%s', NULL, NULL, '%s', '%s', '%s', '%s', 1, 0, 1)",
74+
addslashes($setting['variable']),
75+
addslashes($setting['category']),
76+
addslashes($setting['selected_value']),
77+
addslashes($setting['title']),
78+
addslashes($setting['comment'])
79+
));
80+
$this->write(\sprintf('Inserted setting: %s', $setting['variable']));
81+
}
82+
}
83+
}
84+
85+
public function down(Schema $schema): void
86+
{
87+
$variables = [
88+
'user_session_display_mode',
89+
'course_sequence_valid_only_in_same_session',
90+
];
91+
92+
foreach ($variables as $variable) {
93+
$this->addSql(\sprintf(
94+
"DELETE FROM settings
95+
WHERE variable = '%s'
96+
AND subkey IS NULL
97+
AND access_url = 1",
98+
addslashes($variable)
99+
));
100+
$this->write(\sprintf('Removed setting: %s.', $variable));
101+
}
102+
}
103+
}

0 commit comments

Comments
 (0)