Skip to content

Commit

Permalink
Fixed #3641 by hardening the migration in question.
Browse files Browse the repository at this point in the history
  • Loading branch information
andris-sevcenko committed Jan 18, 2019
1 parent d54bbd5 commit b67f939
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 14 deletions.
1 change: 1 addition & 0 deletions CHANGELOG-v3.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
- Fixed a bug where soft-deleted sections and entry types were still showing up in the Control Panel. ([#3648](https://github.com/craftcms/cms/issues/3648))
- Fixed a bug where an update to Craft 3.1 would fail with a database error in some scenarios.
- Fixed a bug where Plugin Store’s Try buttons would appear as disabled when they should be enabled. ([#3619](https://github.com/craftcms/cms/issues/3619))
- Fixed an error that occurred when updating to Craft 3.1 if there were any relational fields that were missing some expected settings. ([#3641](https://github.com/craftcms/cms/issues/3641))

### Security
- Fixed two XSS vulnerabilities.
Expand Down
28 changes: 14 additions & 14 deletions src/migrations/m180516_153000_uids_in_field_settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,14 @@ public function safeUp()

switch ($field['type']) {
case Assets::class:
if (strpos($settings['defaultUploadLocationSource'], ':') !== false) {
if (!empty($settings['defaultUploadLocationSource']) && strpos($settings['defaultUploadLocationSource'], ':') !== false) {
list(, $folderIds[]) = explode(':', $settings['defaultUploadLocationSource']);
}
if (strpos($settings['singleUploadLocationSource'], ':') !== false) {
if (!empty($settings['singleUploadLocationSource']) && strpos($settings['singleUploadLocationSource'], ':') !== false) {
list(, $folderIds[]) = explode(':', $settings['singleUploadLocationSource']);
}

if (is_array($settings['sources'])) {
if (!empty($settings['sources']) && is_array($settings['sources'])) {
foreach ($settings['sources'] as $source) {
if (strpos($source, ':') !== false) {
list(, $folderIds[]) = explode(':', $source);
Expand All @@ -64,7 +64,7 @@ public function safeUp()

break;
case Entries::class:
if (is_array($settings['sources'])) {
if (!empty($settings['sources']) && is_array($settings['sources'])) {
foreach ($settings['sources'] as $source) {
if (strpos($source, ':') !== false) {
list(, $sectionIds[]) = explode(':', $source);
Expand All @@ -74,7 +74,7 @@ public function safeUp()

break;
case Users::class:
if (is_array($settings['sources'])) {
if (!empty($settings['sources']) && is_array($settings['sources'])) {
foreach ($settings['sources'] as $source) {
if (strpos($source, ':') !== false) {
list(, $userGroupIds[]) = explode(':', $source);
Expand All @@ -84,13 +84,13 @@ public function safeUp()

break;
case Categories::class:
if (strpos($settings['source'], ':') !== false) {
if (!empty($settings['source']) && strpos($settings['source'], ':') !== false) {
list(, $categoryGroupIds[]) = explode(':', $settings['source']);
}

break;
case Tags::class:
if (strpos($settings['source'], ':') !== false) {
if (!empty($settings['source']) && strpos($settings['source'], ':') !== false) {
list(, $tagGroupIds[]) = explode(':', $settings['source']);
}

Expand Down Expand Up @@ -147,18 +147,18 @@ public function safeUp()

switch ($field['type']) {
case Assets::class:
if (strpos($settings['defaultUploadLocationSource'], ':') !== false) {
if (!empty($settings['defaultUploadLocationSource']) && strpos($settings['defaultUploadLocationSource'], ':') !== false) {
$default = explode(':', $settings['defaultUploadLocationSource']);
$settings['defaultUploadLocationSource'] = isset($folders[$default[1]]) ? $default[0] . ':' . $folders[$default[1]] : null;
}

if (strpos($settings['singleUploadLocationSource'], ':') !== false) {
if (!empty($settings['singleUploadLocationSource']) && strpos($settings['singleUploadLocationSource'], ':') !== false) {
$single = explode(':', $settings['singleUploadLocationSource']);
$settings['singleUploadLocationSource'] = isset($folders[$single[1]]) ? $single[0] . ':' . $folders[$single[1]] : null;
}


if (is_array($settings['sources'])) {
if (!empty($settings['sources']) && is_array($settings['sources'])) {
$newSources = [];

foreach ($settings['sources'] as $source) {
Expand All @@ -175,7 +175,7 @@ public function safeUp()

break;
case Entries::class:
if (is_array($settings['sources'])) {
if (!empty($settings['sources']) && is_array($settings['sources'])) {
$newSources = [];

foreach ($settings['sources'] as $source) {
Expand All @@ -192,7 +192,7 @@ public function safeUp()

break;
case Users::class:
if (is_array($settings['sources'])) {
if (!empty($settings['sources']) && is_array($settings['sources'])) {
$newSources = [];

foreach ($settings['sources'] as $source) {
Expand All @@ -210,14 +210,14 @@ public function safeUp()

break;
case Categories::class:
if (strpos($settings['source'], ':') !== false) {
if (!empty($settings['source']) && strpos($settings['source'], ':') !== false) {
$source = explode(':', $settings['source']);
$settings['source'] = $source[0] . ':' . ($categoryGroups[$source[1]] ?? $source[1]);
}

break;
case Tags::class:
if (strpos($settings['source'], ':') !== false) {
if (!empty($settings['source']) && strpos($settings['source'], ':') !== false) {
$source = explode(':', $settings['source']);
$settings['source'] = $source[0] . ':' . ($tagGroups[$source[1]] ?? $source[1]);
}
Expand Down

0 comments on commit b67f939

Please sign in to comment.