From d639effd83c229ceaedae04af6f0e892714e5db4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Jul 2025 18:07:22 +0000 Subject: [PATCH] Version v0.18.0-dev --- VERSION | 2 +- asset/css/balls.less | 18 +- asset/css/compat.less | 2 +- asset/css/controls.less | 6 +- asset/css/empty-state.less | 6 +- asset/css/icinga-icons.less | 36 ++-- asset/css/item-layout.less | 14 +- asset/css/schedule-element.less | 45 +++-- asset/css/search-bar.less | 40 ++-- asset/css/search-base.less | 6 +- asset/css/search-editor.less | 12 +- asset/js/widget/FilterInput.js | 18 +- composer.lock | 172 ++++++++++++------ vendor/autoload.php | 7 +- vendor/composer/InstalledVersions.php | 45 ++++- vendor/composer/autoload_psr4.php | 2 +- vendor/composer/autoload_real.php | 10 +- vendor/composer/autoload_static.php | 14 +- vendor/composer/installed.json | 116 ++++++------ vendor/composer/installed.php | 90 +++++---- vendor/composer/platform_check.php | 5 +- vendor/ipl/sql/src/Test/TestConnection.php | 49 +++++ vendor/ipl/validator/composer.json | 6 +- vendor/ipl/validator/src/BetweenValidator.php | 29 +-- .../ipl/validator/src/CallbackValidator.php | 2 +- vendor/ipl/validator/src/CidrValidator.php | 4 + .../ipl/validator/src/DateTimeValidator.php | 6 +- .../src/DeferredInArrayValidator.php | 6 +- .../validator/src/EmailAddressValidator.php | 5 +- vendor/ipl/validator/src/FileValidator.php | 37 ++-- .../validator/src/GreaterThanValidator.php | 17 +- .../ipl/validator/src/HostnameValidator.php | 4 +- vendor/ipl/validator/src/InArrayValidator.php | 14 +- .../ipl/validator/src/LessThanValidator.php | 17 +- .../ipl/validator/src/PrivateKeyValidator.php | 7 +- .../validator/src/StringLengthValidator.php | 35 ++-- vendor/ipl/validator/src/ValidatorChain.php | 26 ++- .../ipl/validator/src/X509CertValidator.php | 6 +- .../web/src/Control/SearchBar/Suggestions.php | 6 +- .../ipl/web/src/Control/SearchBar/Terms.php | 8 +- 40 files changed, 594 insertions(+), 356 deletions(-) diff --git a/VERSION b/VERSION index 6b60281..1e3f60f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v0.17.0 +v0.18.0-dev diff --git a/asset/css/balls.less b/asset/css/balls.less index c6d5445..70ef391 100644 --- a/asset/css/balls.less +++ b/asset/css/balls.less @@ -30,7 +30,7 @@ width: 0.75em; line-height: 0; - i.icon:before { + i.icon::before { font-size: .75 - @ball-pad * 2; line-height: 1em; } @@ -48,7 +48,7 @@ i.icon { line-height: 0.3; - &:before { + &::before { font-size: 0.8 - @ball-pad * 2; line-height: 1 - @ball-pad * 2; } @@ -64,7 +64,7 @@ width: 1.5em; line-height: 1em; - i.icon:before, span { + i.icon::before, span { font-size: 1 - @ball-pad * 2; line-height: 1.5 - @ball-pad * 2; } @@ -74,7 +74,7 @@ width: 2em; height: 2em; - i.icon:before, span { + i.icon::before, span { line-height: 2 - @ball-pad * 2; } } @@ -92,7 +92,7 @@ .state-ball { .ball(); - &.state-pending:not(.ball-size-l):not(.ball-size-xl) { + &.state-pending:not(.ball-size-l, .ball-size-xl) { .ball-solid(var(--state-pending, @state-pending)); } @@ -101,7 +101,7 @@ .ball-outline(var(--state-pending, @state-pending)); } - &.state-up:not(.ball-size-l):not(.ball-size-xl) { + &.state-up:not(.ball-size-l, .ball-size-xl) { .ball-solid(var(--state-up, @state-up)); } @@ -114,7 +114,7 @@ .ball-solid(var(--state-down, @state-down)); } - &.state-ok:not(.ball-size-l):not(.ball-size-xl) { + &.state-ok:not(.ball-size-l, .ball-size-xl) { .ball-solid(var(--state-ok, @state-ok)); } @@ -149,13 +149,13 @@ // Specific icon styles &.ball-size-l i { - &.fa-sitemap:before { + &.fa-sitemap::before { font-size: 8px; // px to ignore browser min font-size } } &.ball-size-xl i { - &.fa-sitemap:before { + &.fa-sitemap::before { font-size: .857em; line-height: (2 - @ball-pad * 2) / .857; } diff --git a/asset/css/compat.less b/asset/css/compat.less index 759b380..1d06d79 100644 --- a/asset/css/compat.less +++ b/asset/css/compat.less @@ -2,7 +2,7 @@ .icinga-controls { .uploaded-files { - background-color: @default-input-bg; + background-color: var(--default-input-bg, @default-input-bg); } } diff --git a/asset/css/controls.less b/asset/css/controls.less index a37083c..ed27794 100644 --- a/asset/css/controls.less +++ b/asset/css/controls.less @@ -16,7 +16,7 @@ display: block; } - i:before { + i::before { margin: 0; } } @@ -52,7 +52,7 @@ } } - i.icon:before { + i.icon::before { color: inherit; } } @@ -69,7 +69,7 @@ height: 100%; } - i.icon:before { + i.icon::before { margin-right: 0; } } diff --git a/asset/css/empty-state.less b/asset/css/empty-state.less index 8650ebc..75879d8 100644 --- a/asset/css/empty-state.less +++ b/asset/css/empty-state.less @@ -1,5 +1,5 @@ .empty-state { - color: @empty-state-color; + color: var(--empty-state-color, @empty-state-color); } .empty-state-bar { @@ -7,6 +7,6 @@ text-align: center; .rounded-corners(); - background-color: @empty-state-bar-bg; - color: @default-text-color; + background-color: var(--empty-state-bar-bg, @empty-state-bar-bg); + color: var(--default-text-color, @default-text-color); } diff --git a/asset/css/icinga-icons.less b/asset/css/icinga-icons.less index 5b631f9..5888217 100644 --- a/asset/css/icinga-icons.less +++ b/asset/css/icinga-icons.less @@ -1,5 +1,5 @@ @font-face { - font-family: 'Icinga-Icons'; + font-family: Icinga-Icons; src: url('@{iplWebAssets}/font/icinga-icons/fonts/Icinga-Icons.ttf') format('truetype'), url('@{iplWebAssets}/font/icinga-icons/fonts/Icinga-Icons.woff') format('woff'), url('@{iplWebAssets}/font/icinga-icons/fonts/Icinga-Icons.svg') format('svg'); @@ -8,9 +8,9 @@ font-display: block; } -[class^="iicon-"]:before, [class*=" iicon-"]:before { +[class^="iicon-"]::before, [class*=" iicon-"]::before { /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'Icinga-Icons'; + font-family: Icinga-Icons; speak: none; font-style: normal; font-weight: normal; @@ -23,42 +23,42 @@ -moz-osx-font-smoothing: grayscale; } -.iicon-certificate:before { +.iicon-certificate::before { content: "\e906"; } -.iicon-filter-check-circle:before { +.iicon-filter-check-circle::before { content: "\e90b"; } -.iicon-ca-check-circle:before { +.iicon-ca-check-circle::before { content: "\e908"; } -.iicon-refresh-cert:before { +.iicon-refresh-cert::before { content: "\e909"; } -.iicon-th-list:before { +.iicon-th-list::before { content: "\e90a"; } -.iicon-icinga:before { +.iicon-icinga::before { content: "\e907"; } -.iicon-minimal:before, -.iicon-list-view-minimal:before { +.iicon-minimal::before, +.iicon-list-view-minimal::before { content: "\e900"; } -.iicon-detailed:before, -.iicon-list-view-detailed:before { +.iicon-detailed::before, +.iicon-list-view-detailed::before { content: "\e901"; } -.iicon-default:before, -.iicon-list-view-default:before { +.iicon-default::before, +.iicon-list-view-default::before { content: "\e902"; } -.iicon-grid:before { +.iicon-grid::before { content: "\e903"; } -.iicon-bracket-open:before { +.iicon-bracket-open::before { content: "\e904"; } -.iicon-bracket-close:before { +.iicon-bracket-close::before { content: "\e905"; } diff --git a/asset/css/item-layout.less b/asset/css/item-layout.less index 9a96554..e549499 100644 --- a/asset/css/item-layout.less +++ b/asset/css/item-layout.less @@ -107,8 +107,6 @@ .flowing-content("detailed"); word-break: break-word; - -webkit-hyphens: auto; - -ms-hyphens: auto; hyphens: auto; } @@ -126,7 +124,7 @@ // Style .item-layout { - color: @default-text-color-light; + color: var(--default-text-color-light, @default-text-color-light); .caption { i { @@ -134,25 +132,25 @@ } a { - color: @default-text-color; + color: var(--default-text-color, @default-text-color); } } .title { .subject { - color: @default-text-color; + color: var(--default-text-color, @default-text-color); } a { - color: @default-text-color; + color: var(--default-text-color, @default-text-color); font-weight: bold; &:hover { - color: @link-hover-color; + color: var(--link-hover-color, @link-hover-color); text-decoration: none; .subject { - color: @link-hover-color; + color: var(--link-hover-color, @link-hover-color); } } } diff --git a/asset/css/schedule-element.less b/asset/css/schedule-element.less index 1905a05..abaa352 100644 --- a/asset/css/schedule-element.less +++ b/asset/css/schedule-element.less @@ -19,7 +19,7 @@ } &:disabled { - color: @schedule-element-fields-disabled-color; + color: var(--schedule-element-fields-disabled-color, @schedule-element-fields-disabled-color); } } } @@ -39,7 +39,7 @@ .monthly, .ordinal:not(.annually) { padding: .5em; margin-left: -.5em; - border: 1px solid @schedule-element-fields-border-color; + border: 1px solid var(--schedule-element-fields-border-color, @schedule-element-fields-border-color); .rounded-corners(.75em); } @@ -56,13 +56,13 @@ pointer-events: none; label { - color: @schedule-element-fields-disabled-color; - background-color: @schedule-element-fields-disabled-bg; + color: var(--schedule-element-fields-disabled-color, @schedule-element-fields-disabled-color); + background-color: var(--schedule-element-fields-disabled-bg, @schedule-element-fields-disabled-bg); } input:checked + label { - background: @schedule-element-fields-disabled-selected-bg; - color: @schedule-element-fields-disabled-color; + background: var(--schedule-element-fields-disabled-selected-bg, @schedule-element-fields-disabled-selected-bg); + color: var(--schedule-element-fields-disabled-color, @schedule-element-fields-disabled-color); } } @@ -75,11 +75,11 @@ cursor: pointer; text-align: center; padding: .75em 0; - background: @schedule-element-fields-bg; - color: @schedule-element-fields-color; + background: var(--schedule-element-fields-bg, @schedule-element-fields-bg); + color: var(--schedule-element-fields-color, @schedule-element-fields-color); &:hover { - background-color: @schedule-element-fields-hover-bg; + background-color: var(--schedule-element-fields-hover-bg, @schedule-element-fields-hover-bg); } &:focus { @@ -88,27 +88,27 @@ } input:checked + label { - background-color: @schedule-element-fields-selected-bg; - color: @schedule-element-fields-selected-color; + background-color: var(--schedule-element-fields-selected-bg, @schedule-element-fields-selected-bg); + color: var(--schedule-element-fields-selected-color, @schedule-element-fields-selected-color); } input:checked + label:hover { - background-color: @schedule-element-fields-selected-hover-bg; - border-color: @schedule-element-fields-selected-hover-bg; + background-color: var(--schedule-element-fields-selected-hover-bg, @schedule-element-fields-selected-hover-bg); + border-color: var(--schedule-element-fields-selected-hover-bg, @schedule-element-fields-selected-hover-bg); } } &.multiple-fields { li:not(:last-child) label { - border-right: 1px solid @schedule-element-fields-border-color; + border-right: 1px solid var(--schedule-element-fields-border-color, @schedule-element-fields-border-color); } input:focus + label { - box-shadow: inset 0 0 0 3px @schedule-element-fields-outline-color; + box-shadow: inset 0 0 0 3px var(--schedule-element-fields-outline-color, @schedule-element-fields-outline-color); } input:checked:focus + label { - box-shadow: inset 0 0 0 3px @schedule-element-fields-selected-outline-color; + box-shadow: inset 0 0 0 3px var(--schedule-element-fields-selected-outline-color, @schedule-element-fields-selected-outline-color); } } @@ -128,7 +128,7 @@ } &:focus-within { - outline: 3px solid @schedule-element-fields-outline-color; + outline: 3px solid var(--schedule-element-fields-outline-color, @schedule-element-fields-outline-color); outline-offset: 2px; } @@ -137,7 +137,7 @@ } input:checked + label:hover { - background-color: @schedule-element-fields-selected-bg; + background-color: var(--schedule-element-fields-selected-bg, @schedule-element-fields-selected-bg); } } } @@ -145,20 +145,17 @@ .note { display: none; padding: .5em; - background: @schedule-element-keyboard-note-bg; + background: var(--schedule-element-keyboard-note-bg, @schedule-element-keyboard-note-bg); .rounded-corners(.25em); text-align: center; margin-top: 1em; line-height: 1.25; } - /* .weekly */ - .weekly { } - /* .monthly styles */ .monthly { li label { - border-top: 1px solid @schedule-element-fields-border-color; + border-top: 1px solid var(--schedule-element-fields-border-color, @schedule-element-fields-border-color); } li:first-child, @@ -205,6 +202,6 @@ padding-top: 0.5625em; p { - color: @schedule-element-fields-disabled-color; + color: var(--schedule-element-fields-disabled-color, @schedule-element-fields-disabled-color); } } diff --git a/asset/css/search-bar.less b/asset/css/search-bar.less index 6ad1aec..deb5f9e 100644 --- a/asset/css/search-bar.less +++ b/asset/css/search-bar.less @@ -11,8 +11,8 @@ } // Submit button styles - input[type=submit], - button[type=submit], + input[type="submit"], + button[type="submit"], button:not([type]) { background: var(--primary-button-bg, @primary-button-bg); color: var(--primary-button-color, @primary-button-color); @@ -26,20 +26,20 @@ } // Hide the submit button, it must exist, but shouldn't be shown to the user - input[type=submit][value="hidden"] { + input[type="submit"][value="hidden"] { display: none; } // Left-most search dropdown style button.search-options { - i.icon:before { + i.icon::before { font-size: 1.2em; margin-right: 0; color: var(--control-color, @control-color); } &:disabled { - i.icon:before { + i.icon::before { color: var(--control-disabled-color, @control-disabled-color); } } @@ -52,7 +52,7 @@ background-color: var(--search-condition-remove-bg, @search-condition-remove-bg); color: var(--search-condition-remove-color, @search-condition-remove-color); - &:after { + &::after { content: ""; position: absolute; width: .4em; @@ -77,7 +77,7 @@ .terms > .filter-condition:first-child button { border-radius: 0 .4em .4em 0; - &:before { + &::before { content: ""; position: absolute; width: .4em; @@ -92,14 +92,14 @@ border-bottom-right-radius: .4em; } - &:after { + &::after { content: none; } } - .logical_operator, - .grouping_operator_open, - .grouping_operator_close { + .logical-operator, + .grouping-operator-open, + .grouping-operator-close { input { .rounded-corners(); background-color: var(--search-logical-operator-bg, @search-logical-operator-bg); @@ -108,9 +108,9 @@ } .operator, - .logical_operator, - .grouping_operator_open, - .grouping_operator_close { + .logical-operator, + .grouping-operator-open, + .grouping-operator-close { input { text-align: center; } @@ -153,7 +153,7 @@ li { display: inline; - &:not(:first-of-type):before { + &:not(:first-of-type)::before { display: inline; content: ', '; } @@ -193,12 +193,12 @@ left: ~"calc(-2em - 2px)"; // That's min-width + margin-right of an operator line-height: 16/12; // 16 (px) desired / default font size (px) - i:before { + i::before { margin-right: 0; } } - &:not(._hover_delay):hover button { + &:not([data-hover-delay]):hover button { display: inline; } } @@ -210,9 +210,9 @@ } label { - &.logical_operator, - &.grouping_operator_open, - &.grouping_operator_close { + &.logical-operator, + &.grouping-operator-open, + &.grouping-operator-close { margin-left: 1px; // adds up to 2px with the previous term margin-right: 2px; } diff --git a/asset/css/search-base.less b/asset/css/search-base.less index 1e41ee2..50e7fc7 100644 --- a/asset/css/search-base.less +++ b/asset/css/search-base.less @@ -78,8 +78,8 @@ fieldset:disabled .term-input-area [data-drag-initiator] { } .remove-action { - background: @search-term-remove-action-bg; - color: @search-term-remove-action-color; + background: var(--search-term-remove-action-bg, @search-term-remove-action-bg); + color: var(--search-term-remove-action-color, @search-term-remove-action-color); .rounded-corners(0.25em); } } @@ -370,7 +370,7 @@ fieldset:disabled .term-input-area [data-drag-initiator] { padding: 0; li.suggestion-title { - padding: 1.25em .625em 0 .625em; + padding: 1.25em .625em 0; } li.failure-message { diff --git a/asset/css/search-editor.less b/asset/css/search-editor.less index d32d31c..81803da 100644 --- a/asset/css/search-editor.less +++ b/asset/css/search-editor.less @@ -28,7 +28,7 @@ .rounded-corners(0); } - i.icon:before { + i.icon::before { color: var(--search-editor-control-color, @search-editor-control-color); } @@ -110,7 +110,7 @@ border-top-right-radius: 0; } - &:before { + &::before { // The left pointing arrow border-bottom: 1px solid var(--search-editor-context-menu-border-color, @search-editor-context-menu-border-color); border-left: 1px solid var(--search-editor-context-menu-border-color, @search-editor-context-menu-border-color); @@ -118,7 +118,7 @@ } } - &:hover i.icon:before { + &:hover i.icon::before { .rounded-corners(); background: var(--primary-button-bg, @primary-button-bg); color: var(--primary-button-color, @primary-button-color); @@ -202,7 +202,7 @@ margin-left: .5em; } - i.icon:before { + i.icon::before { margin: 0; font-size: 1.5em; line-height: 1.5; @@ -227,7 +227,7 @@ white-space: nowrap; } - &:before { + &::before { // The left pointing arrow content: ""; display: block; @@ -246,7 +246,7 @@ display: block; } - i.icon:before { + i.icon::before { padding: ((28/18)-1)/2em; // (Container pixels / default font size) - line height / (padding-top,padding-bottom) line-height: 1; } diff --git a/asset/js/widget/FilterInput.js b/asset/js/widget/FilterInput.js index fad3da0..3f1d947 100644 --- a/asset/js/widget/FilterInput.js +++ b/asset/js/widget/FilterInput.js @@ -13,7 +13,7 @@ define(["../notjQuery", "BaseInput"], function ($, BaseInput) { * * @type {{}} */ - this.negationOperator = { label: '!', search: '!', class: 'logical_operator', type: 'negation_operator' }; + this.negationOperator = { label: '!', search: '!', class: 'logical-operator', type: 'negation_operator' }; /** * Supported grouping operators @@ -21,8 +21,8 @@ define(["../notjQuery", "BaseInput"], function ($, BaseInput) { * @type {{close: {}, open: {}}} */ this.grouping_operators = { - open: { label: '(', search: '(', class: 'grouping_operator_open', type: 'grouping_operator' }, - close: { label: ')', search: ')', class: 'grouping_operator_close', type: 'grouping_operator' } + open: { label: '(', search: '(', class: 'grouping-operator-open', type: 'grouping_operator' }, + close: { label: ')', search: ')', class: 'grouping-operator-close', type: 'grouping_operator' } }; /** @@ -33,8 +33,8 @@ define(["../notjQuery", "BaseInput"], function ($, BaseInput) { * @type {{}[]} */ this.logical_operators = [ - { label: '&', search: '&', class: 'logical_operator', type: 'logical_operator', default: true }, - { label: '|', search: '|', class: 'logical_operator', type: 'logical_operator' }, + { label: '&', search: '&', class: 'logical-operator', type: 'logical_operator', default: true }, + { label: '|', search: '|', class: 'logical-operator', type: 'logical_operator' }, ]; /** @@ -958,7 +958,7 @@ define(["../notjQuery", "BaseInput"], function ($, BaseInput) { label.dataset.type = termData.type; if (! termData.class) { - label.classList.add(termData.type); + label.classList.add(termData.type.replace('_', '-')); } if (termData.counterpart >= 0) { @@ -1256,11 +1256,11 @@ define(["../notjQuery", "BaseInput"], function ($, BaseInput) { let label = event.currentTarget; if (['column', 'operator', 'value'].includes(label.dataset.type)) { - // This adds a class to delay the remove button. If it's shown instantly upon hover + // This adds an attr to delay the remove button. If it's shown instantly upon hover // it's too easy to accidentally click it instead of the desired grouping operator. - label.parentNode.classList.add('_hover_delay'); + label.parentNode.dataset.hoverDelay = ""; setTimeout(function () { - label.parentNode.classList.remove('_hover_delay'); + delete label.parentNode.dataset.hoverDelay; }, 500); } diff --git a/composer.lock b/composer.lock index ef2fd4c..d1e3e79 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a455b1a65c7b995734d820bdba5a58b2", + "content-hash": "7a1692c86b6fc70eaaf43c4bee3673aa", "packages": [ { "name": "brick/math", @@ -475,16 +475,16 @@ }, { "name": "ipl/html", - "version": "v0.8.2", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-html.git", - "reference": "e18bdf11abca5e477100e2c7d190ef5f424d0d98" + "reference": "946f5c06265f64a90cd74d7df8833a353a90d9a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-html/zipball/e18bdf11abca5e477100e2c7d190ef5f424d0d98", - "reference": "e18bdf11abca5e477100e2c7d190ef5f424d0d98", + "url": "https://api.github.com/repos/Icinga/ipl-html/zipball/946f5c06265f64a90cd74d7df8833a353a90d9a5", + "reference": "946f5c06265f64a90cd74d7df8833a353a90d9a5", "shasum": "" }, "require": { @@ -499,6 +499,7 @@ "ipl/stdlib": "dev-main", "ipl/validator": "dev-main" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -516,22 +517,22 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-html/issues", - "source": "https://github.com/Icinga/ipl-html/tree/v0.8.2" + "source": "https://github.com/Icinga/ipl-html/tree/main" }, - "time": "2025-05-21T09:00:03+00:00" + "time": "2025-06-12T11:57:29+00:00" }, { "name": "ipl/i18n", - "version": "v0.2.2", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-i18n.git", - "reference": "a2b6109c5a93f86ce46d5dc351dbe75e8502cf8c" + "reference": "692c33cf46fb8a4511da613dbf97c6216c345cc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-i18n/zipball/a2b6109c5a93f86ce46d5dc351dbe75e8502cf8c", - "reference": "a2b6109c5a93f86ce46d5dc351dbe75e8502cf8c", + "url": "https://api.github.com/repos/Icinga/ipl-i18n/zipball/692c33cf46fb8a4511da613dbf97c6216c345cc5", + "reference": "692c33cf46fb8a4511da613dbf97c6216c345cc5", "shasum": "" }, "require": { @@ -543,6 +544,7 @@ "require-dev": { "ipl/stdlib": "dev-main" }, + "default-branch": true, "type": "library", "autoload": { "files": [ @@ -567,13 +569,13 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-i18n/issues", - "source": "https://github.com/Icinga/ipl-i18n/tree/v0.2.2" + "source": "https://github.com/Icinga/ipl-i18n/tree/main" }, - "time": "2024-04-08T12:28:47+00:00" + "time": "2025-06-12T11:57:41+00:00" }, { "name": "ipl/orm", - "version": "v0.7.0", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-orm.git", @@ -596,6 +598,7 @@ "ipl/sql": "dev-main", "ipl/stdlib": "dev-main" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -621,16 +624,16 @@ }, { "name": "ipl/scheduler", - "version": "v0.1.2", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-scheduler.git", - "reference": "6119afdea07b1390bd728e350e0d80b26ec8d6ba" + "reference": "3e4e8db870239d213b1dfd5d79d59fc7784b4c34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-scheduler/zipball/6119afdea07b1390bd728e350e0d80b26ec8d6ba", - "reference": "6119afdea07b1390bd728e350e0d80b26ec8d6ba", + "url": "https://api.github.com/repos/Icinga/ipl-scheduler/zipball/3e4e8db870239d213b1dfd5d79d59fc7784b4c34", + "reference": "3e4e8db870239d213b1dfd5d79d59fc7784b4c34", "shasum": "" }, "require": { @@ -650,6 +653,7 @@ "suggest": { "ext-ev": "Improves performance, efficiency and avoids system limitations. Highly recommended! (See https://www.php.net/manual/en/intro.ev.php for details)" }, + "default-branch": true, "type": "library", "autoload": { "files": [ @@ -673,22 +677,22 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-scheduler/issues", - "source": "https://github.com/Icinga/ipl-scheduler/tree/v0.1.2" + "source": "https://github.com/Icinga/ipl-scheduler/tree/main" }, - "time": "2023-08-30T14:14:23+00:00" + "time": "2025-06-12T11:58:09+00:00" }, { "name": "ipl/sql", - "version": "v0.7.1", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-sql.git", - "reference": "e80f1b712c4b96099b0bf9096e6efe317a165e3b" + "reference": "d668799c89fe25af974db8cb249d1f100002e615" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-sql/zipball/e80f1b712c4b96099b0bf9096e6efe317a165e3b", - "reference": "e80f1b712c4b96099b0bf9096e6efe317a165e3b", + "url": "https://api.github.com/repos/Icinga/ipl-sql/zipball/d668799c89fe25af974db8cb249d1f100002e615", + "reference": "d668799c89fe25af974db8cb249d1f100002e615", "shasum": "" }, "require": { @@ -699,6 +703,7 @@ "require-dev": { "ipl/stdlib": "dev-main" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -717,22 +722,22 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-sql/issues", - "source": "https://github.com/Icinga/ipl-sql/tree/v0.7.1" + "source": "https://github.com/Icinga/ipl-sql/tree/main" }, - "time": "2024-06-25T09:55:43+00:00" + "time": "2025-06-12T11:58:24+00:00" }, { "name": "ipl/stdlib", - "version": "v0.14.0", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-stdlib.git", - "reference": "bf5fc8f40b86bd90337db6f3be389be2a93fa64a" + "reference": "dca0319664db9b575254215b3f5dbbd87a3387bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-stdlib/zipball/bf5fc8f40b86bd90337db6f3be389be2a93fa64a", - "reference": "bf5fc8f40b86bd90337db6f3be389be2a93fa64a", + "url": "https://api.github.com/repos/Icinga/ipl-stdlib/zipball/dca0319664db9b575254215b3f5dbbd87a3387bd", + "reference": "dca0319664db9b575254215b3f5dbbd87a3387bd", "shasum": "" }, "require": { @@ -740,6 +745,7 @@ "ext-openssl": "*", "php": ">=7.2" }, + "default-branch": true, "type": "library", "autoload": { "files": [ @@ -756,22 +762,22 @@ "description": "ipl Standard Library", "support": { "issues": "https://github.com/Icinga/ipl-stdlib/issues", - "source": "https://github.com/Icinga/ipl-stdlib/tree/v0.14.0" + "source": "https://github.com/Icinga/ipl-stdlib/tree/main" }, - "time": "2024-04-22T08:47:08+00:00" + "time": "2025-06-12T11:59:06+00:00" }, { "name": "ipl/validator", - "version": "v0.5.0", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-validator.git", - "reference": "a601fae0ed330e63cea50e4a2a6659ca1ad97bde" + "reference": "eac5c6c114d8007db5c24ae159fe6f55e89a946b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-validator/zipball/a601fae0ed330e63cea50e4a2a6659ca1ad97bde", - "reference": "a601fae0ed330e63cea50e4a2a6659ca1ad97bde", + "url": "https://api.github.com/repos/Icinga/ipl-validator/zipball/eac5c6c114d8007db5c24ae159fe6f55e89a946b", + "reference": "eac5c6c114d8007db5c24ae159fe6f55e89a946b", "shasum": "" }, "require": { @@ -780,11 +786,14 @@ "ipl/i18n": ">=0.2.0", "ipl/stdlib": ">=0.12.0", "php": ">=7.2", - "psr/http-message": "~1.0" + "psr/http-message": "^1.1" }, "require-dev": { - "guzzlehttp/psr7": "^1" + "guzzlehttp/psr7": "^1", + "ipl/i18n": "dev-main", + "ipl/stdlib": "dev-main" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -799,22 +808,22 @@ "homepage": "https://github.com/Icinga/ipl-validator", "support": { "issues": "https://github.com/Icinga/ipl-validator/issues", - "source": "https://github.com/Icinga/ipl-validator/tree/v0.5.0" + "source": "https://github.com/Icinga/ipl-validator/tree/main" }, - "time": "2023-03-21T15:59:00+00:00" + "time": "2025-06-12T11:59:27+00:00" }, { "name": "ipl/web", - "version": "v0.11.1", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-web.git", - "reference": "af3a8a7be5e924f0ad841baf1471d296329aa1e7" + "reference": "f5a6cf1f454ba2ed4a2c20e243c4c585e7d59621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-web/zipball/af3a8a7be5e924f0ad841baf1471d296329aa1e7", - "reference": "af3a8a7be5e924f0ad841baf1471d296329aa1e7", + "url": "https://api.github.com/repos/Icinga/ipl-web/zipball/f5a6cf1f454ba2ed4a2c20e243c4c585e7d59621", + "reference": "f5a6cf1f454ba2ed4a2c20e243c4c585e7d59621", "shasum": "" }, "require": { @@ -837,6 +846,7 @@ "ipl/stdlib": "dev-main", "shardj/zf1-future": "^1.22" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -854,9 +864,9 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-web/issues", - "source": "https://github.com/Icinga/ipl-web/tree/v0.11.1" + "source": "https://github.com/Icinga/ipl-web/tree/main" }, - "time": "2025-06-12T11:58:42+00:00" + "time": "2025-07-24T13:32:25+00:00" }, { "name": "psr/http-factory", @@ -1628,15 +1638,73 @@ } ], "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, + "aliases": [ + { + "package": "ipl/html", + "version": "dev-main", + "alias": "99.x-dev", + "alias_normalized": "99.9999999.9999999.9999999-dev" + }, + { + "package": "ipl/i18n", + "version": "dev-main", + "alias": "99.x-dev", + "alias_normalized": "99.9999999.9999999.9999999-dev" + }, + { + "package": "ipl/orm", + "version": "dev-main", + "alias": "99.x-dev", + "alias_normalized": "99.9999999.9999999.9999999-dev" + }, + { + "package": "ipl/scheduler", + "version": "dev-main", + "alias": "99.x-dev", + "alias_normalized": "99.9999999.9999999.9999999-dev" + }, + { + "package": "ipl/sql", + "version": "dev-main", + "alias": "99.x-dev", + "alias_normalized": "99.9999999.9999999.9999999-dev" + }, + { + "package": "ipl/stdlib", + "version": "dev-main", + "alias": "99.x-dev", + "alias_normalized": "99.9999999.9999999.9999999-dev" + }, + { + "package": "ipl/validator", + "version": "dev-main", + "alias": "99.x-dev", + "alias_normalized": "99.9999999.9999999.9999999-dev" + }, + { + "package": "ipl/web", + "version": "dev-main", + "alias": "99.x-dev", + "alias_normalized": "99.9999999.9999999.9999999-dev" + } + ], + "minimum-stability": "dev", + "stability-flags": { + "ipl/html": 20, + "ipl/i18n": 20, + "ipl/orm": 20, + "ipl/scheduler": 20, + "ipl/sql": 20, + "ipl/stdlib": 20, + "ipl/validator": 20, + "ipl/web": 20 + }, + "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.2" + "php": ">=7.2" }, - "platform-dev": [], + "platform-dev": {}, "platform-overrides": { "php": "8.2" }, diff --git a/vendor/autoload.php b/vendor/autoload.php index 917cad0..5c3658e 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -14,12 +14,9 @@ if (PHP_VERSION_ID < 50600) { echo $err; } } - trigger_error( - $err, - E_USER_ERROR - ); + throw new RuntimeException($err); } require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInita455b1a65c7b995734d820bdba5a58b2::getLoader(); +return ComposerAutoloaderInit7a1692c86b6fc70eaaf43c4bee3673aa::getLoader(); diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php index 51e734a..2052022 100644 --- a/vendor/composer/InstalledVersions.php +++ b/vendor/composer/InstalledVersions.php @@ -26,12 +26,23 @@ use Composer\Semver\VersionParser; */ class InstalledVersions { + /** + * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to + * @internal + */ + private static $selfDir = null; + /** * @var mixed[]|null * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null */ private static $installed; + /** + * @var bool + */ + private static $installedIsLocalDir; + /** * @var bool|null */ @@ -309,6 +320,24 @@ class InstalledVersions { self::$installed = $data; self::$installedByVendor = array(); + + // when using reload, we disable the duplicate protection to ensure that self::$installed data is + // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, + // so we have to assume it does not, and that may result in duplicate data being returned when listing + // all installed packages for example + self::$installedIsLocalDir = false; + } + + /** + * @return string + */ + private static function getSelfDir() + { + if (self::$selfDir === null) { + self::$selfDir = strtr(__DIR__, '\\', '/'); + } + + return self::$selfDir; } /** @@ -322,19 +351,27 @@ class InstalledVersions } $installed = array(); + $copiedLocalDir = false; if (self::$canGetVendors) { + $selfDir = self::getSelfDir(); foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + $vendorDir = strtr($vendorDir, '\\', '/'); if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ $required = require $vendorDir.'/composer/installed.php'; - $installed[] = self::$installedByVendor[$vendorDir] = $required; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; + self::$installedByVendor[$vendorDir] = $required; + $installed[] = $required; + if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { + self::$installed = $required; + self::$installedIsLocalDir = true; } } + if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { + $copiedLocalDir = true; + } } } @@ -350,7 +387,7 @@ class InstalledVersions } } - if (self::$installed !== array()) { + if (self::$installed !== array() && !$copiedLocalDir) { $installed[] = self::$installed; } diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 17b6290..b04662e 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -22,7 +22,7 @@ return array( 'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'), 'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'), 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), - 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src', $vendorDir . '/psr/http-factory/src'), + 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 'Evenement\\' => array($vendorDir . '/evenement/evenement/src'), 'Doctrine\\Deprecations\\' => array($vendorDir . '/doctrine/deprecations/src'), diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index cbf456d..02157ed 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInita455b1a65c7b995734d820bdba5a58b2 +class ComposerAutoloaderInit7a1692c86b6fc70eaaf43c4bee3673aa { private static $loader; @@ -24,16 +24,16 @@ class ComposerAutoloaderInita455b1a65c7b995734d820bdba5a58b2 require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInita455b1a65c7b995734d820bdba5a58b2', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit7a1692c86b6fc70eaaf43c4bee3673aa', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInita455b1a65c7b995734d820bdba5a58b2', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit7a1692c86b6fc70eaaf43c4bee3673aa', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInita455b1a65c7b995734d820bdba5a58b2::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit7a1692c86b6fc70eaaf43c4bee3673aa::getInitializer($loader)); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInita455b1a65c7b995734d820bdba5a58b2::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit7a1692c86b6fc70eaaf43c4bee3673aa::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 438297c..b7f4ac5 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInita455b1a65c7b995734d820bdba5a58b2 +class ComposerStaticInit7a1692c86b6fc70eaaf43c4bee3673aa { public static $files = array ( 'a2c78434f64e5f5ed402f42eee19c025' => __DIR__ . '/..' . '/ipl/stdlib/src/functions_include.php', @@ -139,8 +139,8 @@ class ComposerStaticInita455b1a65c7b995734d820bdba5a58b2 ), 'Psr\\Http\\Message\\' => array ( - 0 => __DIR__ . '/..' . '/psr/http-message/src', - 1 => __DIR__ . '/..' . '/psr/http-factory/src', + 0 => __DIR__ . '/..' . '/psr/http-factory/src', + 1 => __DIR__ . '/..' . '/psr/http-message/src', ), 'GuzzleHttp\\Psr7\\' => array ( @@ -194,10 +194,10 @@ class ComposerStaticInita455b1a65c7b995734d820bdba5a58b2 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInita455b1a65c7b995734d820bdba5a58b2::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInita455b1a65c7b995734d820bdba5a58b2::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInita455b1a65c7b995734d820bdba5a58b2::$prefixesPsr0; - $loader->classMap = ComposerStaticInita455b1a65c7b995734d820bdba5a58b2::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit7a1692c86b6fc70eaaf43c4bee3673aa::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit7a1692c86b6fc70eaaf43c4bee3673aa::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit7a1692c86b6fc70eaaf43c4bee3673aa::$prefixesPsr0; + $loader->classMap = ComposerStaticInit7a1692c86b6fc70eaaf43c4bee3673aa::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 0d9ead0..444f874 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -490,17 +490,17 @@ }, { "name": "ipl/html", - "version": "v0.8.2", - "version_normalized": "0.8.2.0", + "version": "dev-main", + "version_normalized": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-html.git", - "reference": "e18bdf11abca5e477100e2c7d190ef5f424d0d98" + "reference": "946f5c06265f64a90cd74d7df8833a353a90d9a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-html/zipball/e18bdf11abca5e477100e2c7d190ef5f424d0d98", - "reference": "e18bdf11abca5e477100e2c7d190ef5f424d0d98", + "url": "https://api.github.com/repos/Icinga/ipl-html/zipball/946f5c06265f64a90cd74d7df8833a353a90d9a5", + "reference": "946f5c06265f64a90cd74d7df8833a353a90d9a5", "shasum": "" }, "require": { @@ -515,7 +515,8 @@ "ipl/stdlib": "dev-main", "ipl/validator": "dev-main" }, - "time": "2025-05-21T09:00:03+00:00", + "time": "2025-06-12T11:57:29+00:00", + "default-branch": true, "type": "library", "installation-source": "dist", "autoload": { @@ -534,23 +535,23 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-html/issues", - "source": "https://github.com/Icinga/ipl-html/tree/v0.8.2" + "source": "https://github.com/Icinga/ipl-html/tree/main" }, "install-path": "../ipl/html" }, { "name": "ipl/i18n", - "version": "v0.2.2", - "version_normalized": "0.2.2.0", + "version": "dev-main", + "version_normalized": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-i18n.git", - "reference": "a2b6109c5a93f86ce46d5dc351dbe75e8502cf8c" + "reference": "692c33cf46fb8a4511da613dbf97c6216c345cc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-i18n/zipball/a2b6109c5a93f86ce46d5dc351dbe75e8502cf8c", - "reference": "a2b6109c5a93f86ce46d5dc351dbe75e8502cf8c", + "url": "https://api.github.com/repos/Icinga/ipl-i18n/zipball/692c33cf46fb8a4511da613dbf97c6216c345cc5", + "reference": "692c33cf46fb8a4511da613dbf97c6216c345cc5", "shasum": "" }, "require": { @@ -562,7 +563,8 @@ "require-dev": { "ipl/stdlib": "dev-main" }, - "time": "2024-04-08T12:28:47+00:00", + "time": "2025-06-12T11:57:41+00:00", + "default-branch": true, "type": "library", "installation-source": "dist", "autoload": { @@ -588,14 +590,14 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-i18n/issues", - "source": "https://github.com/Icinga/ipl-i18n/tree/v0.2.2" + "source": "https://github.com/Icinga/ipl-i18n/tree/main" }, "install-path": "../ipl/i18n" }, { "name": "ipl/orm", - "version": "v0.7.0", - "version_normalized": "0.7.0.0", + "version": "dev-main", + "version_normalized": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-orm.git", @@ -619,6 +621,7 @@ "ipl/stdlib": "dev-main" }, "time": "2025-07-10T06:16:16+00:00", + "default-branch": true, "type": "library", "installation-source": "dist", "autoload": { @@ -645,17 +648,17 @@ }, { "name": "ipl/scheduler", - "version": "v0.1.2", - "version_normalized": "0.1.2.0", + "version": "dev-main", + "version_normalized": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-scheduler.git", - "reference": "6119afdea07b1390bd728e350e0d80b26ec8d6ba" + "reference": "3e4e8db870239d213b1dfd5d79d59fc7784b4c34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-scheduler/zipball/6119afdea07b1390bd728e350e0d80b26ec8d6ba", - "reference": "6119afdea07b1390bd728e350e0d80b26ec8d6ba", + "url": "https://api.github.com/repos/Icinga/ipl-scheduler/zipball/3e4e8db870239d213b1dfd5d79d59fc7784b4c34", + "reference": "3e4e8db870239d213b1dfd5d79d59fc7784b4c34", "shasum": "" }, "require": { @@ -675,7 +678,8 @@ "suggest": { "ext-ev": "Improves performance, efficiency and avoids system limitations. Highly recommended! (See https://www.php.net/manual/en/intro.ev.php for details)" }, - "time": "2023-08-30T14:14:23+00:00", + "time": "2025-06-12T11:58:09+00:00", + "default-branch": true, "type": "library", "installation-source": "dist", "autoload": { @@ -700,23 +704,23 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-scheduler/issues", - "source": "https://github.com/Icinga/ipl-scheduler/tree/v0.1.2" + "source": "https://github.com/Icinga/ipl-scheduler/tree/main" }, "install-path": "../ipl/scheduler" }, { "name": "ipl/sql", - "version": "v0.7.1", - "version_normalized": "0.7.1.0", + "version": "dev-main", + "version_normalized": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-sql.git", - "reference": "e80f1b712c4b96099b0bf9096e6efe317a165e3b" + "reference": "d668799c89fe25af974db8cb249d1f100002e615" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-sql/zipball/e80f1b712c4b96099b0bf9096e6efe317a165e3b", - "reference": "e80f1b712c4b96099b0bf9096e6efe317a165e3b", + "url": "https://api.github.com/repos/Icinga/ipl-sql/zipball/d668799c89fe25af974db8cb249d1f100002e615", + "reference": "d668799c89fe25af974db8cb249d1f100002e615", "shasum": "" }, "require": { @@ -727,7 +731,8 @@ "require-dev": { "ipl/stdlib": "dev-main" }, - "time": "2024-06-25T09:55:43+00:00", + "time": "2025-06-12T11:58:24+00:00", + "default-branch": true, "type": "library", "installation-source": "dist", "autoload": { @@ -747,23 +752,23 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-sql/issues", - "source": "https://github.com/Icinga/ipl-sql/tree/v0.7.1" + "source": "https://github.com/Icinga/ipl-sql/tree/main" }, "install-path": "../ipl/sql" }, { "name": "ipl/stdlib", - "version": "v0.14.0", - "version_normalized": "0.14.0.0", + "version": "dev-main", + "version_normalized": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-stdlib.git", - "reference": "bf5fc8f40b86bd90337db6f3be389be2a93fa64a" + "reference": "dca0319664db9b575254215b3f5dbbd87a3387bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-stdlib/zipball/bf5fc8f40b86bd90337db6f3be389be2a93fa64a", - "reference": "bf5fc8f40b86bd90337db6f3be389be2a93fa64a", + "url": "https://api.github.com/repos/Icinga/ipl-stdlib/zipball/dca0319664db9b575254215b3f5dbbd87a3387bd", + "reference": "dca0319664db9b575254215b3f5dbbd87a3387bd", "shasum": "" }, "require": { @@ -771,7 +776,8 @@ "ext-openssl": "*", "php": ">=7.2" }, - "time": "2024-04-22T08:47:08+00:00", + "time": "2025-06-12T11:59:06+00:00", + "default-branch": true, "type": "library", "installation-source": "dist", "autoload": { @@ -789,23 +795,23 @@ "description": "ipl Standard Library", "support": { "issues": "https://github.com/Icinga/ipl-stdlib/issues", - "source": "https://github.com/Icinga/ipl-stdlib/tree/v0.14.0" + "source": "https://github.com/Icinga/ipl-stdlib/tree/main" }, "install-path": "../ipl/stdlib" }, { "name": "ipl/validator", - "version": "v0.5.0", - "version_normalized": "0.5.0.0", + "version": "dev-main", + "version_normalized": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-validator.git", - "reference": "a601fae0ed330e63cea50e4a2a6659ca1ad97bde" + "reference": "eac5c6c114d8007db5c24ae159fe6f55e89a946b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-validator/zipball/a601fae0ed330e63cea50e4a2a6659ca1ad97bde", - "reference": "a601fae0ed330e63cea50e4a2a6659ca1ad97bde", + "url": "https://api.github.com/repos/Icinga/ipl-validator/zipball/eac5c6c114d8007db5c24ae159fe6f55e89a946b", + "reference": "eac5c6c114d8007db5c24ae159fe6f55e89a946b", "shasum": "" }, "require": { @@ -814,12 +820,15 @@ "ipl/i18n": ">=0.2.0", "ipl/stdlib": ">=0.12.0", "php": ">=7.2", - "psr/http-message": "~1.0" + "psr/http-message": "^1.1" }, "require-dev": { - "guzzlehttp/psr7": "^1" + "guzzlehttp/psr7": "^1", + "ipl/i18n": "dev-main", + "ipl/stdlib": "dev-main" }, - "time": "2023-03-21T15:59:00+00:00", + "time": "2025-06-12T11:59:27+00:00", + "default-branch": true, "type": "library", "installation-source": "dist", "autoload": { @@ -835,23 +844,23 @@ "homepage": "https://github.com/Icinga/ipl-validator", "support": { "issues": "https://github.com/Icinga/ipl-validator/issues", - "source": "https://github.com/Icinga/ipl-validator/tree/v0.5.0" + "source": "https://github.com/Icinga/ipl-validator/tree/main" }, "install-path": "../ipl/validator" }, { "name": "ipl/web", - "version": "v0.11.1", - "version_normalized": "0.11.1.0", + "version": "dev-main", + "version_normalized": "dev-main", "source": { "type": "git", "url": "https://github.com/Icinga/ipl-web.git", - "reference": "af3a8a7be5e924f0ad841baf1471d296329aa1e7" + "reference": "f5a6cf1f454ba2ed4a2c20e243c4c585e7d59621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Icinga/ipl-web/zipball/af3a8a7be5e924f0ad841baf1471d296329aa1e7", - "reference": "af3a8a7be5e924f0ad841baf1471d296329aa1e7", + "url": "https://api.github.com/repos/Icinga/ipl-web/zipball/f5a6cf1f454ba2ed4a2c20e243c4c585e7d59621", + "reference": "f5a6cf1f454ba2ed4a2c20e243c4c585e7d59621", "shasum": "" }, "require": { @@ -874,7 +883,8 @@ "ipl/stdlib": "dev-main", "shardj/zf1-future": "^1.22" }, - "time": "2025-06-12T11:58:42+00:00", + "time": "2025-07-24T13:32:25+00:00", + "default-branch": true, "type": "library", "installation-source": "dist", "autoload": { @@ -893,7 +903,7 @@ ], "support": { "issues": "https://github.com/Icinga/ipl-web/issues", - "source": "https://github.com/Icinga/ipl-web/tree/v0.11.1" + "source": "https://github.com/Icinga/ipl-web/tree/main" }, "install-path": "../ipl/web" }, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 20f37e4..72f81a7 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'icinga/icinga-php-library', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'ac844e6464137f2e3b53a663dfb3a6d00599f24b', + 'reference' => '516c5b689e07b51aa1c3037728d912237a43d468', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -76,82 +76,106 @@ 'icinga/icinga-php-library' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'ac844e6464137f2e3b53a663dfb3a6d00599f24b', + 'reference' => '516c5b689e07b51aa1c3037728d912237a43d468', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => false, ), 'ipl/html' => array( - 'pretty_version' => 'v0.8.2', - 'version' => '0.8.2.0', - 'reference' => 'e18bdf11abca5e477100e2c7d190ef5f424d0d98', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => '946f5c06265f64a90cd74d7df8833a353a90d9a5', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/html', - 'aliases' => array(), + 'aliases' => array( + 0 => '99.x-dev', + 1 => '9999999-dev', + ), 'dev_requirement' => false, ), 'ipl/i18n' => array( - 'pretty_version' => 'v0.2.2', - 'version' => '0.2.2.0', - 'reference' => 'a2b6109c5a93f86ce46d5dc351dbe75e8502cf8c', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => '692c33cf46fb8a4511da613dbf97c6216c345cc5', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/i18n', - 'aliases' => array(), + 'aliases' => array( + 0 => '99.x-dev', + 1 => '9999999-dev', + ), 'dev_requirement' => false, ), 'ipl/orm' => array( - 'pretty_version' => 'v0.7.0', - 'version' => '0.7.0.0', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', 'reference' => '4893731e82c9a3859e8ea05c4c21d84f067d7cfb', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/orm', - 'aliases' => array(), + 'aliases' => array( + 0 => '99.x-dev', + 1 => '9999999-dev', + ), 'dev_requirement' => false, ), 'ipl/scheduler' => array( - 'pretty_version' => 'v0.1.2', - 'version' => '0.1.2.0', - 'reference' => '6119afdea07b1390bd728e350e0d80b26ec8d6ba', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => '3e4e8db870239d213b1dfd5d79d59fc7784b4c34', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/scheduler', - 'aliases' => array(), + 'aliases' => array( + 0 => '99.x-dev', + 1 => '9999999-dev', + ), 'dev_requirement' => false, ), 'ipl/sql' => array( - 'pretty_version' => 'v0.7.1', - 'version' => '0.7.1.0', - 'reference' => 'e80f1b712c4b96099b0bf9096e6efe317a165e3b', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => 'd668799c89fe25af974db8cb249d1f100002e615', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/sql', - 'aliases' => array(), + 'aliases' => array( + 0 => '99.x-dev', + 1 => '9999999-dev', + ), 'dev_requirement' => false, ), 'ipl/stdlib' => array( - 'pretty_version' => 'v0.14.0', - 'version' => '0.14.0.0', - 'reference' => 'bf5fc8f40b86bd90337db6f3be389be2a93fa64a', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => 'dca0319664db9b575254215b3f5dbbd87a3387bd', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/stdlib', - 'aliases' => array(), + 'aliases' => array( + 0 => '99.x-dev', + 1 => '9999999-dev', + ), 'dev_requirement' => false, ), 'ipl/validator' => array( - 'pretty_version' => 'v0.5.0', - 'version' => '0.5.0.0', - 'reference' => 'a601fae0ed330e63cea50e4a2a6659ca1ad97bde', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => 'eac5c6c114d8007db5c24ae159fe6f55e89a946b', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/validator', - 'aliases' => array(), + 'aliases' => array( + 0 => '99.x-dev', + 1 => '9999999-dev', + ), 'dev_requirement' => false, ), 'ipl/web' => array( - 'pretty_version' => 'v0.11.1', - 'version' => '0.11.1.0', - 'reference' => 'af3a8a7be5e924f0ad841baf1471d296329aa1e7', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => 'f5a6cf1f454ba2ed4a2c20e243c4c585e7d59621', 'type' => 'library', 'install_path' => __DIR__ . '/../ipl/web', - 'aliases' => array(), + 'aliases' => array( + 0 => '99.x-dev', + 1 => '9999999-dev', + ), 'dev_requirement' => false, ), 'mtdowling/cron-expression' => array( diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index d32d90c..14bf88d 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -19,8 +19,7 @@ if ($issues) { echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; } } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR + throw new \RuntimeException( + 'Composer detected issues in your platform: ' . implode(' ', $issues) ); } diff --git a/vendor/ipl/sql/src/Test/TestConnection.php b/vendor/ipl/sql/src/Test/TestConnection.php index 981696b..913070f 100644 --- a/vendor/ipl/sql/src/Test/TestConnection.php +++ b/vendor/ipl/sql/src/Test/TestConnection.php @@ -13,4 +13,53 @@ class TestConnection extends Connection { $this->adapter = new TestAdapter(); } + + public function connect() + { + return $this; + } + + public function beginTransaction() + { + throw new \LogicException('Transactions are not supported by the test connection'); + } + + public function commitTransaction() + { + throw new \LogicException('Transactions are not supported by the test connection'); + } + + public function rollbackTransaction() + { + throw new \LogicException('Transactions are not supported by the test connection'); + } + + public function prepexec($stmt, $values = null) + { + if (PHP_MAJOR_VERSION >= 8) { + return new class extends \PDOStatement { + public function getIterator(): \Iterator + { + return new \ArrayIterator([]); + } + + public function setFetchMode($mode, ...$args): bool + { + return true; + } + }; + } else { + return new class extends \PDOStatement { + public function getIterator(): \Iterator + { + return new \ArrayIterator([]); + } + + public function setFetchMode($mode, $params = null): bool + { + return true; + } + }; + } + } } diff --git a/vendor/ipl/validator/composer.json b/vendor/ipl/validator/composer.json index 51ba68d..260b7d9 100644 --- a/vendor/ipl/validator/composer.json +++ b/vendor/ipl/validator/composer.json @@ -10,7 +10,7 @@ "ext-openssl": "*", "ipl/stdlib": ">=0.12.0", "ipl/i18n": ">=0.2.0", - "psr/http-message": "~1.0" + "psr/http-message": "^1.1" }, "autoload": { "psr-4": { @@ -23,6 +23,8 @@ } }, "require-dev": { - "guzzlehttp/psr7": "^1" + "guzzlehttp/psr7": "^1", + "ipl/stdlib": "dev-main", + "ipl/i18n": "dev-main" } } diff --git a/vendor/ipl/validator/src/BetweenValidator.php b/vendor/ipl/validator/src/BetweenValidator.php index 3d7faaf..c8dc026 100644 --- a/vendor/ipl/validator/src/BetweenValidator.php +++ b/vendor/ipl/validator/src/BetweenValidator.php @@ -12,10 +12,10 @@ class BetweenValidator extends BaseValidator { use Translation; - /** @var mixed Min value */ + /** @var int|float Min value */ protected $min; - /** @var mixed Max value */ + /** @var int|float Max value */ protected $max; /** @@ -33,14 +33,14 @@ class BetweenValidator extends BaseValidator * * Required options: * - * - min: (scalar) Minimum border - * - max: (scalar) Maximum border + * - min: (int|float) Minimum border + * - max: (int|float) Maximum border * * Optional options: * * - inclusive: (bool) Whether inclusive border values, default true * - * @param array $options + * @param array{min: int|float, max: int|float, inclusive?: bool} $options * * @throws Exception When required option is missing */ @@ -58,7 +58,7 @@ class BetweenValidator extends BaseValidator /** * Return the min option * - * @return mixed + * @return int|float */ public function getMin() { @@ -68,7 +68,7 @@ class BetweenValidator extends BaseValidator /** * Set the min option * - * @param mixed $min + * @param int|float $min * * @return $this */ @@ -82,7 +82,7 @@ class BetweenValidator extends BaseValidator /** * Return the max option * - * @return mixed + * @return int|float */ public function getMax() { @@ -92,7 +92,7 @@ class BetweenValidator extends BaseValidator /** * Set the max option * - * @param mixed $max + * @param int|float $max * * @return $this */ @@ -120,14 +120,19 @@ class BetweenValidator extends BaseValidator * * @return $this */ - public function setInclusive($inclusive = true): self + public function setInclusive(bool $inclusive = true): self { - $this->inclusive = (bool) $inclusive; + $this->inclusive = $inclusive; return $this; } - public function isValid($value) + /** + * @param int|float $value + * + * @return bool + */ + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); diff --git a/vendor/ipl/validator/src/CallbackValidator.php b/vendor/ipl/validator/src/CallbackValidator.php index 611a45e..29b8e7f 100644 --- a/vendor/ipl/validator/src/CallbackValidator.php +++ b/vendor/ipl/validator/src/CallbackValidator.php @@ -35,7 +35,7 @@ class CallbackValidator extends BaseValidator $this->callback = $callback; } - public function isValid($value) + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); diff --git a/vendor/ipl/validator/src/CidrValidator.php b/vendor/ipl/validator/src/CidrValidator.php index 32c1162..248c589 100644 --- a/vendor/ipl/validator/src/CidrValidator.php +++ b/vendor/ipl/validator/src/CidrValidator.php @@ -12,6 +12,10 @@ class CidrValidator extends BaseValidator { use Translation; + /** + * @param string $value + * @return bool + */ public function isValid($value): bool { $this->clearMessages(); diff --git a/vendor/ipl/validator/src/DateTimeValidator.php b/vendor/ipl/validator/src/DateTimeValidator.php index 1e35d61..602724b 100644 --- a/vendor/ipl/validator/src/DateTimeValidator.php +++ b/vendor/ipl/validator/src/DateTimeValidator.php @@ -23,9 +23,9 @@ class DateTimeValidator extends BaseValidator * * @param bool $local */ - public function __construct($local = true) + public function __construct(bool $local = true) { - $this->local = (bool) $local; + $this->local = $local; } /** @@ -35,7 +35,7 @@ class DateTimeValidator extends BaseValidator * * @return bool */ - public function isValid($value) + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); diff --git a/vendor/ipl/validator/src/DeferredInArrayValidator.php b/vendor/ipl/validator/src/DeferredInArrayValidator.php index 55b9b83..fa0ba5d 100644 --- a/vendor/ipl/validator/src/DeferredInArrayValidator.php +++ b/vendor/ipl/validator/src/DeferredInArrayValidator.php @@ -15,7 +15,7 @@ class DeferredInArrayValidator extends InArrayValidator * * **Required parameter:** * - * - `callback`: (`callable`) The callback to create haystack + * - `callback`: (`callable`) The callback to create the haystack * * **Optional parameter:** * @@ -23,8 +23,8 @@ class DeferredInArrayValidator extends InArrayValidator * * * `strict`: (`bool`) Whether the types of the needle in the haystack should also match, default `false` * - * @param callable $callback Validation callback - * @param array $options + * @param callable $callback The callback to create the haystack + * @param array{haystack?: mixed[], strict?: bool} $options */ public function __construct(callable $callback, array $options = []) { diff --git a/vendor/ipl/validator/src/EmailAddressValidator.php b/vendor/ipl/validator/src/EmailAddressValidator.php index 52c3697..e9dc2a7 100644 --- a/vendor/ipl/validator/src/EmailAddressValidator.php +++ b/vendor/ipl/validator/src/EmailAddressValidator.php @@ -40,7 +40,7 @@ class EmailAddressValidator extends BaseValidator * 'mx' => If an MX check should be enabled, boolean * 'deep' => If a deep MX check should be enabled, boolean * - * @param array $options + * @param array{max?: bool, deep?: bool} $options * * @throws Exception */ @@ -266,7 +266,8 @@ class EmailAddressValidator extends BaseValidator //decode IDN domain name $decodedHostname = idn_to_ascii($hostname, 0, INTL_IDNA_VARIANT_UTS46); - $result = getmxrr($decodedHostname, $mxHosts); + $result = $decodedHostname && getmxrr($decodedHostname, $mxHosts); + if (! $result) { $this->addMessage(sprintf( $this->translate("'%s' does not appear to have a valid MX record for the email address '%s'"), diff --git a/vendor/ipl/validator/src/FileValidator.php b/vendor/ipl/validator/src/FileValidator.php index 8c5b90e..bc435cc 100644 --- a/vendor/ipl/validator/src/FileValidator.php +++ b/vendor/ipl/validator/src/FileValidator.php @@ -34,6 +34,8 @@ class FileValidator extends BaseValidator * - maxSize: (int) Maximum allowed file size, by default no limit * - maxFileNameLength: (int) Maximum allowed file name length, by default no limit * - mimeType: (array) Allowed mime types, by default no restriction + * + * @param array{minSize?: int, maxSize?: int, maxFileNameLength?: int, mimeType?: string[]} $options */ public function __construct(array $options = []) { @@ -160,7 +162,11 @@ class FileValidator extends BaseValidator return $this; } - public function isValid($value) + /** + * @param UploadedFileInterface|UploadedFileInterface[] $value + * @return bool + */ + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); @@ -185,7 +191,7 @@ class FileValidator extends BaseValidator if ($this->getMaxSize() && $file->getSize() > $this->getMaxSize()) { $this->addMessage(sprintf( $this->translate('File %s is bigger than the allowed maximum size of %d'), - $file->getClientFileName(), + $file->getClientFilename(), $this->getMaxSize() )); @@ -195,7 +201,7 @@ class FileValidator extends BaseValidator if ($this->getMinSize() && $file->getSize() < $this->getMinSize()) { $this->addMessage(sprintf( $this->translate('File %s is smaller than the minimum required size of %d'), - $file->getClientFileName(), + $file->getClientFilename(), $this->getMinSize() )); @@ -205,7 +211,7 @@ class FileValidator extends BaseValidator if ($this->getMaxFileNameLength()) { $strValidator = new StringLengthValidator(['max' => $this->getMaxFileNameLength()]); - if (! $strValidator->isValid($file->getClientFilename())) { + if (! $strValidator->isValid($file->getClientFilename() ?? '')) { $this->addMessage(sprintf( $this->translate('File name is longer than the allowed length of %d characters.'), $this->maxFileNameLength @@ -217,26 +223,29 @@ class FileValidator extends BaseValidator if (! empty($this->getAllowedMimeTypes())) { $hasAllowedMimeType = false; - foreach ($this->getAllowedMimeTypes() as $type) { - $fileMimetype = $file->getClientMediaType(); - if (($pos = strpos($type, '/*')) !== false) { // image/* - $typePrefix = substr($type, 0, $pos); - if (Str::startsWith($fileMimetype, $typePrefix)) { + $fileMimetype = $file->getClientMediaType(); + + if ($fileMimetype) { + foreach ($this->getAllowedMimeTypes() as $type) { + if (($pos = strpos($type, '/*')) !== false) { // image/* + $typePrefix = substr($type, 0, $pos); + if (Str::startsWith($fileMimetype, $typePrefix)) { + $hasAllowedMimeType = true; + break; + } + } elseif ($fileMimetype === $type) { // image/png $hasAllowedMimeType = true; break; } - } elseif ($fileMimetype === $type) { // image/png - $hasAllowedMimeType = true; - break; } } if (! $hasAllowedMimeType) { $this->addMessage(sprintf( $this->translate('File %s is of type %s. Only %s allowed.'), - $file->getClientFileName(), + $file->getClientFilename(), $file->getClientMediaType(), - implode(', ', $this->allowedMimeTypes) + implode(', ', $this->allowedMimeTypes ?? []) )); $isValid = false; diff --git a/vendor/ipl/validator/src/GreaterThanValidator.php b/vendor/ipl/validator/src/GreaterThanValidator.php index e5de3d0..177fa42 100644 --- a/vendor/ipl/validator/src/GreaterThanValidator.php +++ b/vendor/ipl/validator/src/GreaterThanValidator.php @@ -11,14 +11,16 @@ class GreaterThanValidator extends BaseValidator { use Translation; - /** @var mixed Comparison value for greater than */ + /** @var int|float Comparison value for greater than */ protected $min; /** * Create a new GreaterThanValidator * * Optional options: - * - min: (scalar) Comparison value for greater than, default 0 + * - min: (int|float) Comparison value for greater than, default 0 + * + * @param array{min?: int|float} $options */ public function __construct(array $options = []) { @@ -28,7 +30,7 @@ class GreaterThanValidator extends BaseValidator /** * Get the min option * - * @return mixed + * @return int|float */ public function getMin() { @@ -38,7 +40,7 @@ class GreaterThanValidator extends BaseValidator /** * Set the min option * - * @param mixed $min + * @param int|float $min * * @return $this */ @@ -49,7 +51,12 @@ class GreaterThanValidator extends BaseValidator return $this; } - public function isValid($value) + /** + * @param int|float $value + * + * @return bool + */ + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); diff --git a/vendor/ipl/validator/src/HostnameValidator.php b/vendor/ipl/validator/src/HostnameValidator.php index 3bb9b66..8c658d0 100644 --- a/vendor/ipl/validator/src/HostnameValidator.php +++ b/vendor/ipl/validator/src/HostnameValidator.php @@ -18,7 +18,7 @@ class HostnameValidator extends BaseValidator * * @return boolean */ - public function isValid($value) + public function isValid($value): bool { $this->clearMessages(); @@ -26,7 +26,7 @@ class HostnameValidator extends BaseValidator if (filter_var($asciiHostname, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) === false) { $this->addMessage(sprintf( $this->translate("%s is not a valid host name."), - $value ?? '' + $value )); return false; diff --git a/vendor/ipl/validator/src/InArrayValidator.php b/vendor/ipl/validator/src/InArrayValidator.php index f8c18ef..f3e67e7 100644 --- a/vendor/ipl/validator/src/InArrayValidator.php +++ b/vendor/ipl/validator/src/InArrayValidator.php @@ -11,7 +11,7 @@ class InArrayValidator extends BaseValidator { use Translation; - /** @var array The array */ + /** @var ?mixed[] The array */ protected $haystack; /** @var bool Whether the types of the needle in the haystack should also match */ @@ -25,7 +25,7 @@ class InArrayValidator extends BaseValidator * * `haystack`: (`array`) The array * * `strict`: (`bool`) Whether the types of the needle in the haystack should also match, default `false` * - * @param array $options + * @param array{haystack?: mixed[], strict?: bool} $options */ public function __construct(array $options = []) { @@ -39,7 +39,7 @@ class InArrayValidator extends BaseValidator /** * Get the haystack * - * @return array + * @return mixed[] */ public function getHaystack(): array { @@ -49,7 +49,7 @@ class InArrayValidator extends BaseValidator /** * Set the haystack * - * @param array $haystack + * @param mixed[] $haystack * * @return $this */ @@ -84,7 +84,7 @@ class InArrayValidator extends BaseValidator return $this; } - public function isValid($value) + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); @@ -110,9 +110,9 @@ class InArrayValidator extends BaseValidator /** * Get the values from the specified array that are not present in the haystack * - * @param array $values + * @param mixed[] $values * - * @return array Values not found in the haystack + * @return mixed[] Values not found in the haystack */ protected function findInvalid(array $values = []): array { diff --git a/vendor/ipl/validator/src/LessThanValidator.php b/vendor/ipl/validator/src/LessThanValidator.php index 68e3daf..db80e1a 100644 --- a/vendor/ipl/validator/src/LessThanValidator.php +++ b/vendor/ipl/validator/src/LessThanValidator.php @@ -11,14 +11,16 @@ class LessThanValidator extends BaseValidator { use Translation; - /** @var mixed Comparison value for less than */ + /** @var int|float Comparison value for less than */ protected $max; /** * Create a new LessThanValidator * * Optional options: - * - max: (int) Comparison value for less than, default 0 + * - max: (int|float) Comparison value for less than, default 0 + * + * @param array{max?: int|float} $options */ public function __construct(array $options = []) { @@ -28,7 +30,7 @@ class LessThanValidator extends BaseValidator /** * Get the max option * - * @return mixed + * @return int|float */ public function getMax() { @@ -38,7 +40,7 @@ class LessThanValidator extends BaseValidator /** * Set the max option * - * @param mixed $max + * @param int|float $max * * @return $this */ @@ -49,7 +51,12 @@ class LessThanValidator extends BaseValidator return $this; } - public function isValid($value) + /** + * @param int|float $value + * + * @return bool + */ + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); diff --git a/vendor/ipl/validator/src/PrivateKeyValidator.php b/vendor/ipl/validator/src/PrivateKeyValidator.php index b629398..a207170 100644 --- a/vendor/ipl/validator/src/PrivateKeyValidator.php +++ b/vendor/ipl/validator/src/PrivateKeyValidator.php @@ -11,7 +11,12 @@ class PrivateKeyValidator extends BaseValidator { use Translation; - public function isValid($value) + /** + * @param string $value + * + * @return bool + */ + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); diff --git a/vendor/ipl/validator/src/StringLengthValidator.php b/vendor/ipl/validator/src/StringLengthValidator.php index 57df1eb..d4dd44b 100644 --- a/vendor/ipl/validator/src/StringLengthValidator.php +++ b/vendor/ipl/validator/src/StringLengthValidator.php @@ -13,10 +13,10 @@ class StringLengthValidator extends BaseValidator { use Translation; - /** @var mixed Minimum required length */ + /** @var int Minimum required length */ protected $min; - /** @var mixed Maximum required length */ + /** @var ?int Maximum required length */ protected $max; /** @var ?string Encoding to use */ @@ -26,9 +26,11 @@ class StringLengthValidator extends BaseValidator * Create a new StringLengthValidator * * Optional options: - * - min: (scalar) Minimum required string length, default 0 - * - max: (scalar) Maximum required string length, default null - * - encoding: (string) Encoding type, default null + * - min: (int) Minimum required string length, default 0 + * - max: (int) Maximum required string length, default none + * - encoding: (string) Encoding type, default none + * + * @param array{min?: int, max?: int, encoding?: string} $options */ public function __construct(array $options = []) { @@ -41,9 +43,9 @@ class StringLengthValidator extends BaseValidator /** * Get the minimum required string length * - * @return mixed + * @return int */ - public function getMin() + public function getMin(): int { return $this->min; } @@ -51,13 +53,13 @@ class StringLengthValidator extends BaseValidator /** * Set the minimum required string length * - * @param mixed $min + * @param int $min * * @return $this * * @throws LogicException When the $min is greater than the $max value */ - public function setMin($min): self + public function setMin(int $min): self { if ($this->getMax() !== null && $min > $this->getMax()) { throw new LogicException( @@ -77,9 +79,9 @@ class StringLengthValidator extends BaseValidator /** * Get the maximum required string length * - * @return mixed + * @return ?int */ - public function getMax() + public function getMax(): ?int { return $this->max; } @@ -87,13 +89,13 @@ class StringLengthValidator extends BaseValidator /** * Set the minimum required string length * - * @param mixed $max + * @param ?int $max * * @return $this * * @throws LogicException When the $min is greater than the $max value */ - public function setMax($max): self + public function setMax(?int $max): self { if ($max !== null && $this->getMin() > $max) { throw new LogicException( @@ -143,7 +145,12 @@ class StringLengthValidator extends BaseValidator return $this; } - public function isValid($value) + /** + * @param string $value + * + * @return bool + */ + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); diff --git a/vendor/ipl/validator/src/ValidatorChain.php b/vendor/ipl/validator/src/ValidatorChain.php index 2860a12..8f0b9f3 100644 --- a/vendor/ipl/validator/src/ValidatorChain.php +++ b/vendor/ipl/validator/src/ValidatorChain.php @@ -15,6 +15,7 @@ use UnexpectedValueException; use function ipl\Stdlib\get_php_type; +/** @implements IteratorAggregate */ class ValidatorChain implements Countable, IteratorAggregate, Validator { use Messages; @@ -23,10 +24,10 @@ class ValidatorChain implements Countable, IteratorAggregate, Validator /** Default priority at which validators are added */ const DEFAULT_PRIORITY = 1; - /** @var PriorityQueue Validator chain */ + /** @var PriorityQueue Validator chain */ protected $validators; - /** @var SplObjectStorage Validators that break the chain on failure */ + /** @var SplObjectStorage Validators that break the chain on failure */ protected $validatorsThatBreakTheChain; /** @@ -43,7 +44,7 @@ class ValidatorChain implements Countable, IteratorAggregate, Validator /** * Get the validators that break the chain * - * @return SplObjectStorage + * @return SplObjectStorage */ public function getValidatorsThatBreakTheChain() { @@ -76,7 +77,7 @@ class ValidatorChain implements Countable, IteratorAggregate, Validator /** * Add the validators from the given validator specification to the chain * - * @param iterable $validators + * @param static|Traversable $validators * * @return $this * @@ -149,7 +150,7 @@ class ValidatorChain implements Countable, IteratorAggregate, Validator * * @return $this */ - public function addValidatorLoader($namespace, $postfix = null) + public function addValidatorLoader($namespace, $postfix = '') { $this->addPluginLoader('validator', $namespace, $postfix); @@ -221,6 +222,10 @@ class ValidatorChain implements Countable, IteratorAggregate, Validator { $validatorsThatBreakTheChain = $validatorChain->getValidatorsThatBreakTheChain(); + /** + * @var int $priority + * @var Validator $validator + */ foreach ($validatorChain->validators->yieldAll() as $priority => $validator) { $this->add($validator, $validatorsThatBreakTheChain->contains($validator), $priority); } @@ -236,11 +241,14 @@ class ValidatorChain implements Countable, IteratorAggregate, Validator /** * Export the chain as array * - * @return array + * @return Validator[] */ public function toArray() { - return array_values(iterator_to_array($this)); + /** @var Validator[] $validators */ + $validators = iterator_to_array($this); + + return array_values($validators); } public function count(): int @@ -251,7 +259,7 @@ class ValidatorChain implements Countable, IteratorAggregate, Validator /** * Get an iterator for traversing the validators * - * @return Validator[]|PriorityQueue + * @return PriorityQueue */ public function getIterator(): Traversable { @@ -259,7 +267,7 @@ class ValidatorChain implements Countable, IteratorAggregate, Validator return clone $this->validators; } - public function isValid($value) + public function isValid($value): bool { $this->clearMessages(); diff --git a/vendor/ipl/validator/src/X509CertValidator.php b/vendor/ipl/validator/src/X509CertValidator.php index 7dfc4f7..0fc9677 100644 --- a/vendor/ipl/validator/src/X509CertValidator.php +++ b/vendor/ipl/validator/src/X509CertValidator.php @@ -11,7 +11,11 @@ class X509CertValidator extends BaseValidator { use Translation; - public function isValid($value) + /** + * @param String $value + * @return bool + */ + public function isValid($value): bool { // Multiple isValid() calls must not stack validation messages $this->clearMessages(); diff --git a/vendor/ipl/web/src/Control/SearchBar/Suggestions.php b/vendor/ipl/web/src/Control/SearchBar/Suggestions.php index 82420b1..cf5ff7b 100644 --- a/vendor/ipl/web/src/Control/SearchBar/Suggestions.php +++ b/vendor/ipl/web/src/Control/SearchBar/Suggestions.php @@ -125,7 +125,7 @@ abstract class Suggestions extends BaseHtmlElement $logicalSep = [ 'label' => QueryString::getRuleSymbol($filter), 'search' => QueryString::getRuleSymbol($filter), - 'class' => 'logical_operator', + 'class' => 'logical-operator', 'type' => 'logical_operator' ]; @@ -136,14 +136,14 @@ abstract class Suggestions extends BaseHtmlElement 'search' => '(', 'label' => '(', 'type' => 'grouping_operator', - 'class' => 'grouping_operator_open' + 'class' => 'grouping-operator-open' ]; $terms = array_merge($terms, $this->filterToTerms($child)); $terms[] = [ 'search' => ')', 'label' => ')', 'type' => 'grouping_operator', - 'class' => 'grouping_operator_close' + 'class' => 'grouping-operator-close' ]; } else { /** @var Filter\Condition $child */ diff --git a/vendor/ipl/web/src/Control/SearchBar/Terms.php b/vendor/ipl/web/src/Control/SearchBar/Terms.php index c81e336..c7a9ce8 100644 --- a/vendor/ipl/web/src/Control/SearchBar/Terms.php +++ b/vendor/ipl/web/src/Control/SearchBar/Terms.php @@ -81,7 +81,7 @@ class Terms extends BaseHtmlElement if ($i > 0) { $logicalOperator = QueryString::getRuleSymbol($filters); $this->assembleTerm([ - 'class' => 'logical_operator', + 'class' => 'logical-operator', 'type' => 'logical_operator', 'search' => $logicalOperator, 'label' => $logicalOperator @@ -110,7 +110,7 @@ class Terms extends BaseHtmlElement if ($chain instanceof Filter\None) { $this->assembleTerm([ - 'class' => 'logical_operator', + 'class' => 'logical-operator', 'type' => 'negation_operator', 'search' => '!', 'label' => '!' @@ -119,7 +119,7 @@ class Terms extends BaseHtmlElement if ($wrap) { $opening = $this->assembleTerm([ - 'class' => 'grouping_operator_open', + 'class' => 'grouping-operator-open', 'type' => 'grouping_operator', 'search' => '(', 'label' => '(' @@ -130,7 +130,7 @@ class Terms extends BaseHtmlElement if ($wrap) { $closing = $this->assembleTerm([ - 'class' => 'grouping_operator_close', + 'class' => 'grouping-operator-close', 'type' => 'grouping_operator', 'search' => ')', 'label' => ')'