PHP8.4 deprecation notices fix attempt - #1

Merged
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices
Dec 20, 2024
Merged

PHP8.4 deprecation notices fix attempt#1
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices

Conversation

@NielBuys

Copy link
Copy Markdown
Owner

Attempt to Fix below issues
bcit-ci#6302
bcit-ci#6300
bcit-ci#6300

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Changes not tested on php8.4 yet. But it should remove notices. Changes works on my php8.3 environment.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

On my fork I have bumped the minimum php version to 7.4. That's the reason I have not pushed this pull request to the main repository.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Thanks for the heads up. I haven't tested my changes with PHP 8.4 yet; I've only researched and made the updates. I'll look into session.sid_length and set up a test environment for PHP 8.4.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

@jamieburchell

Copy link
Copy Markdown

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

Yup, that forces the params for <PHP9, but it will still trigger a deprecation error. CI4 gets around that in a different way

@jamieburchell

jamieburchell commented Oct 9, 2024

Copy link
Copy Markdown

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

After reviewing it, I believe you're right; it will still trigger the deprecation notice. I think it’s a good idea to add the @ symbol in front of ini_set. I will make that change and then test to see if it works.

@jamieburchell

Copy link
Copy Markdown

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

Thanks, I agree that it's a good idea to clean up some of the older PHP version code. I've created a patch file from your commit and will review it. I’ll let you know if I encounter any issues.

@NielBuys
NielBuys merged commit fc90b48 into developDec 20, 2024
@NielBuys
NielBuys deleted the tasks/php8_4_deprecation_notices branch December 20, 2024 07:29
@rhickmott

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

It can still be backwards compatible. I don't think there's really that many nullable types in Code Ignitor but this error can be removed by removing the types from the very few functions that use them to maintain backwards compatibility.
Optionally where needed, a check can be made in code to validate or cast to the required typing or check for nulls.

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Only if you directly try to set these parameters using ini_set.
You can check the version for PHP easily in the offending method.
The code "being there" isn't the problem unless it's a function being removed and then you an add in a dummy function if it doesen't exist in the base language.

elseif( PHP_VERSION_ID >= 80400 ) {
#PHP 8.4 REMOVES SETTING OF BIRS PER CHARACTER AND SESSION LENGTH
$bits_per_character = 4;
$sid_length = 32;
}

There is already code in system\librarys\Session\Session for handling legacy versions prior to 7.0.1 in this manor.

The above are the defaults for the session ID which have been 32 Character SSID ( 160bit ) since at least PHP 7.0.1 judging by the code. It looks like the plan it to enforce this default going forward and by the comments it looks like CI was happy with this setting.

// Add as many more characters as necessary to reach at least 160 bits

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@NielBuys@jamieburchell@rhickmott
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

PHP8.4 deprecation notices fix attempt - #1

Merged
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices
Dec 20, 2024
Merged

PHP8.4 deprecation notices fix attempt#1
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices

Conversation

@NielBuys

Copy link
Copy Markdown
Owner

Attempt to Fix below issues
bcit-ci#6302
bcit-ci#6300
bcit-ci#6300

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Changes not tested on php8.4 yet. But it should remove notices. Changes works on my php8.3 environment.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

On my fork I have bumped the minimum php version to 7.4. That's the reason I have not pushed this pull request to the main repository.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Thanks for the heads up. I haven't tested my changes with PHP 8.4 yet; I've only researched and made the updates. I'll look into session.sid_length and set up a test environment for PHP 8.4.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

@jamieburchell

Copy link
Copy Markdown

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

Yup, that forces the params for <PHP9, but it will still trigger a deprecation error. CI4 gets around that in a different way

@jamieburchell

jamieburchell commented Oct 9, 2024

Copy link
Copy Markdown

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

After reviewing it, I believe you're right; it will still trigger the deprecation notice. I think it’s a good idea to add the @ symbol in front of ini_set. I will make that change and then test to see if it works.

@jamieburchell

Copy link
Copy Markdown

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

Thanks, I agree that it's a good idea to clean up some of the older PHP version code. I've created a patch file from your commit and will review it. I’ll let you know if I encounter any issues.

@NielBuys
NielBuys merged commit fc90b48 into developDec 20, 2024
@NielBuys
NielBuys deleted the tasks/php8_4_deprecation_notices branch December 20, 2024 07:29
@rhickmott

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

It can still be backwards compatible. I don't think there's really that many nullable types in Code Ignitor but this error can be removed by removing the types from the very few functions that use them to maintain backwards compatibility.
Optionally where needed, a check can be made in code to validate or cast to the required typing or check for nulls.

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Only if you directly try to set these parameters using ini_set.
You can check the version for PHP easily in the offending method.
The code "being there" isn't the problem unless it's a function being removed and then you an add in a dummy function if it doesen't exist in the base language.

elseif( PHP_VERSION_ID >= 80400 ) {
#PHP 8.4 REMOVES SETTING OF BIRS PER CHARACTER AND SESSION LENGTH
$bits_per_character = 4;
$sid_length = 32;
}

There is already code in system\librarys\Session\Session for handling legacy versions prior to 7.0.1 in this manor.

The above are the defaults for the session ID which have been 32 Character SSID ( 160bit ) since at least PHP 7.0.1 judging by the code. It looks like the plan it to enforce this default going forward and by the comments it looks like CI was happy with this setting.

// Add as many more characters as necessary to reach at least 160 bits

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@NielBuys@jamieburchell@rhickmott
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

PHP8.4 deprecation notices fix attempt - #1

Merged
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices
Dec 20, 2024
Merged

PHP8.4 deprecation notices fix attempt#1
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices

Conversation

@NielBuys

Copy link
Copy Markdown
Owner

Attempt to Fix below issues
bcit-ci#6302
bcit-ci#6300
bcit-ci#6300

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Changes not tested on php8.4 yet. But it should remove notices. Changes works on my php8.3 environment.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

On my fork I have bumped the minimum php version to 7.4. That's the reason I have not pushed this pull request to the main repository.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Thanks for the heads up. I haven't tested my changes with PHP 8.4 yet; I've only researched and made the updates. I'll look into session.sid_length and set up a test environment for PHP 8.4.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

@jamieburchell

Copy link
Copy Markdown

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

Yup, that forces the params for <PHP9, but it will still trigger a deprecation error. CI4 gets around that in a different way

@jamieburchell

jamieburchell commented Oct 9, 2024

Copy link
Copy Markdown

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

After reviewing it, I believe you're right; it will still trigger the deprecation notice. I think it’s a good idea to add the @ symbol in front of ini_set. I will make that change and then test to see if it works.

@jamieburchell

Copy link
Copy Markdown

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

Thanks, I agree that it's a good idea to clean up some of the older PHP version code. I've created a patch file from your commit and will review it. I’ll let you know if I encounter any issues.

@NielBuys
NielBuys merged commit fc90b48 into developDec 20, 2024
@NielBuys
NielBuys deleted the tasks/php8_4_deprecation_notices branch December 20, 2024 07:29
@rhickmott

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

It can still be backwards compatible. I don't think there's really that many nullable types in Code Ignitor but this error can be removed by removing the types from the very few functions that use them to maintain backwards compatibility.
Optionally where needed, a check can be made in code to validate or cast to the required typing or check for nulls.

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Only if you directly try to set these parameters using ini_set.
You can check the version for PHP easily in the offending method.
The code "being there" isn't the problem unless it's a function being removed and then you an add in a dummy function if it doesen't exist in the base language.

elseif( PHP_VERSION_ID >= 80400 ) {
#PHP 8.4 REMOVES SETTING OF BIRS PER CHARACTER AND SESSION LENGTH
$bits_per_character = 4;
$sid_length = 32;
}

There is already code in system\librarys\Session\Session for handling legacy versions prior to 7.0.1 in this manor.

The above are the defaults for the session ID which have been 32 Character SSID ( 160bit ) since at least PHP 7.0.1 judging by the code. It looks like the plan it to enforce this default going forward and by the comments it looks like CI was happy with this setting.

// Add as many more characters as necessary to reach at least 160 bits

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@NielBuys@jamieburchell@rhickmott
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

PHP8.4 deprecation notices fix attempt - #1

Merged
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices
Dec 20, 2024
Merged

PHP8.4 deprecation notices fix attempt#1
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices

Conversation

@NielBuys

Copy link
Copy Markdown
Owner

Attempt to Fix below issues
bcit-ci#6302
bcit-ci#6300
bcit-ci#6300

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Changes not tested on php8.4 yet. But it should remove notices. Changes works on my php8.3 environment.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

On my fork I have bumped the minimum php version to 7.4. That's the reason I have not pushed this pull request to the main repository.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Thanks for the heads up. I haven't tested my changes with PHP 8.4 yet; I've only researched and made the updates. I'll look into session.sid_length and set up a test environment for PHP 8.4.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

@jamieburchell

Copy link
Copy Markdown

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

Yup, that forces the params for <PHP9, but it will still trigger a deprecation error. CI4 gets around that in a different way

@jamieburchell

jamieburchell commented Oct 9, 2024

Copy link
Copy Markdown

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

After reviewing it, I believe you're right; it will still trigger the deprecation notice. I think it’s a good idea to add the @ symbol in front of ini_set. I will make that change and then test to see if it works.

@jamieburchell

Copy link
Copy Markdown

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

Thanks, I agree that it's a good idea to clean up some of the older PHP version code. I've created a patch file from your commit and will review it. I’ll let you know if I encounter any issues.

@NielBuys
NielBuys merged commit fc90b48 into developDec 20, 2024
@NielBuys
NielBuys deleted the tasks/php8_4_deprecation_notices branch December 20, 2024 07:29
@rhickmott

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

It can still be backwards compatible. I don't think there's really that many nullable types in Code Ignitor but this error can be removed by removing the types from the very few functions that use them to maintain backwards compatibility.
Optionally where needed, a check can be made in code to validate or cast to the required typing or check for nulls.

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Only if you directly try to set these parameters using ini_set.
You can check the version for PHP easily in the offending method.
The code "being there" isn't the problem unless it's a function being removed and then you an add in a dummy function if it doesen't exist in the base language.

elseif( PHP_VERSION_ID >= 80400 ) {
#PHP 8.4 REMOVES SETTING OF BIRS PER CHARACTER AND SESSION LENGTH
$bits_per_character = 4;
$sid_length = 32;
}

There is already code in system\librarys\Session\Session for handling legacy versions prior to 7.0.1 in this manor.

The above are the defaults for the session ID which have been 32 Character SSID ( 160bit ) since at least PHP 7.0.1 judging by the code. It looks like the plan it to enforce this default going forward and by the comments it looks like CI was happy with this setting.

// Add as many more characters as necessary to reach at least 160 bits

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@NielBuys@jamieburchell@rhickmott
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

PHP8.4 deprecation notices fix attempt - #1

Merged
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices
Dec 20, 2024
Merged

PHP8.4 deprecation notices fix attempt#1
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices

Conversation

@NielBuys

Copy link
Copy Markdown
Owner

Attempt to Fix below issues
bcit-ci#6302
bcit-ci#6300
bcit-ci#6300

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Changes not tested on php8.4 yet. But it should remove notices. Changes works on my php8.3 environment.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

On my fork I have bumped the minimum php version to 7.4. That's the reason I have not pushed this pull request to the main repository.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Thanks for the heads up. I haven't tested my changes with PHP 8.4 yet; I've only researched and made the updates. I'll look into session.sid_length and set up a test environment for PHP 8.4.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

@jamieburchell

Copy link
Copy Markdown

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

Yup, that forces the params for <PHP9, but it will still trigger a deprecation error. CI4 gets around that in a different way

@jamieburchell

jamieburchell commented Oct 9, 2024

Copy link
Copy Markdown

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

After reviewing it, I believe you're right; it will still trigger the deprecation notice. I think it’s a good idea to add the @ symbol in front of ini_set. I will make that change and then test to see if it works.

@jamieburchell

Copy link
Copy Markdown

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

Thanks, I agree that it's a good idea to clean up some of the older PHP version code. I've created a patch file from your commit and will review it. I’ll let you know if I encounter any issues.

@NielBuys
NielBuys merged commit fc90b48 into developDec 20, 2024
@NielBuys
NielBuys deleted the tasks/php8_4_deprecation_notices branch December 20, 2024 07:29
@rhickmott

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

It can still be backwards compatible. I don't think there's really that many nullable types in Code Ignitor but this error can be removed by removing the types from the very few functions that use them to maintain backwards compatibility.
Optionally where needed, a check can be made in code to validate or cast to the required typing or check for nulls.

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Only if you directly try to set these parameters using ini_set.
You can check the version for PHP easily in the offending method.
The code "being there" isn't the problem unless it's a function being removed and then you an add in a dummy function if it doesen't exist in the base language.

elseif( PHP_VERSION_ID >= 80400 ) {
#PHP 8.4 REMOVES SETTING OF BIRS PER CHARACTER AND SESSION LENGTH
$bits_per_character = 4;
$sid_length = 32;
}

There is already code in system\librarys\Session\Session for handling legacy versions prior to 7.0.1 in this manor.

The above are the defaults for the session ID which have been 32 Character SSID ( 160bit ) since at least PHP 7.0.1 judging by the code. It looks like the plan it to enforce this default going forward and by the comments it looks like CI was happy with this setting.

// Add as many more characters as necessary to reach at least 160 bits

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@NielBuys@jamieburchell@rhickmott
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

PHP8.4 deprecation notices fix attempt - #1

Merged
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices
Dec 20, 2024
Merged

PHP8.4 deprecation notices fix attempt#1
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices

Conversation

@NielBuys

Copy link
Copy Markdown
Owner

Attempt to Fix below issues
bcit-ci#6302
bcit-ci#6300
bcit-ci#6300

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Changes not tested on php8.4 yet. But it should remove notices. Changes works on my php8.3 environment.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

On my fork I have bumped the minimum php version to 7.4. That's the reason I have not pushed this pull request to the main repository.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Thanks for the heads up. I haven't tested my changes with PHP 8.4 yet; I've only researched and made the updates. I'll look into session.sid_length and set up a test environment for PHP 8.4.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

@jamieburchell

Copy link
Copy Markdown

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

Yup, that forces the params for <PHP9, but it will still trigger a deprecation error. CI4 gets around that in a different way

@jamieburchell

jamieburchell commented Oct 9, 2024

Copy link
Copy Markdown

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

After reviewing it, I believe you're right; it will still trigger the deprecation notice. I think it’s a good idea to add the @ symbol in front of ini_set. I will make that change and then test to see if it works.

@jamieburchell

Copy link
Copy Markdown

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

Thanks, I agree that it's a good idea to clean up some of the older PHP version code. I've created a patch file from your commit and will review it. I’ll let you know if I encounter any issues.

@NielBuys
NielBuys merged commit fc90b48 into developDec 20, 2024
@NielBuys
NielBuys deleted the tasks/php8_4_deprecation_notices branch December 20, 2024 07:29
@rhickmott

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

It can still be backwards compatible. I don't think there's really that many nullable types in Code Ignitor but this error can be removed by removing the types from the very few functions that use them to maintain backwards compatibility.
Optionally where needed, a check can be made in code to validate or cast to the required typing or check for nulls.

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Only if you directly try to set these parameters using ini_set.
You can check the version for PHP easily in the offending method.
The code "being there" isn't the problem unless it's a function being removed and then you an add in a dummy function if it doesen't exist in the base language.

elseif( PHP_VERSION_ID >= 80400 ) {
#PHP 8.4 REMOVES SETTING OF BIRS PER CHARACTER AND SESSION LENGTH
$bits_per_character = 4;
$sid_length = 32;
}

There is already code in system\librarys\Session\Session for handling legacy versions prior to 7.0.1 in this manor.

The above are the defaults for the session ID which have been 32 Character SSID ( 160bit ) since at least PHP 7.0.1 judging by the code. It looks like the plan it to enforce this default going forward and by the comments it looks like CI was happy with this setting.

// Add as many more characters as necessary to reach at least 160 bits

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@NielBuys@jamieburchell@rhickmott
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

PHP8.4 deprecation notices fix attempt - #1

Merged
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices
Dec 20, 2024
Merged

PHP8.4 deprecation notices fix attempt#1
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices

Conversation

@NielBuys

Copy link
Copy Markdown
Owner

Attempt to Fix below issues
bcit-ci#6302
bcit-ci#6300
bcit-ci#6300

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Changes not tested on php8.4 yet. But it should remove notices. Changes works on my php8.3 environment.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

On my fork I have bumped the minimum php version to 7.4. That's the reason I have not pushed this pull request to the main repository.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Thanks for the heads up. I haven't tested my changes with PHP 8.4 yet; I've only researched and made the updates. I'll look into session.sid_length and set up a test environment for PHP 8.4.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

@jamieburchell

Copy link
Copy Markdown

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

Yup, that forces the params for <PHP9, but it will still trigger a deprecation error. CI4 gets around that in a different way

@jamieburchell

jamieburchell commented Oct 9, 2024

Copy link
Copy Markdown

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

After reviewing it, I believe you're right; it will still trigger the deprecation notice. I think it’s a good idea to add the @ symbol in front of ini_set. I will make that change and then test to see if it works.

@jamieburchell

Copy link
Copy Markdown

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

Thanks, I agree that it's a good idea to clean up some of the older PHP version code. I've created a patch file from your commit and will review it. I’ll let you know if I encounter any issues.

@NielBuys
NielBuys merged commit fc90b48 into developDec 20, 2024
@NielBuys
NielBuys deleted the tasks/php8_4_deprecation_notices branch December 20, 2024 07:29
@rhickmott

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

It can still be backwards compatible. I don't think there's really that many nullable types in Code Ignitor but this error can be removed by removing the types from the very few functions that use them to maintain backwards compatibility.
Optionally where needed, a check can be made in code to validate or cast to the required typing or check for nulls.

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Only if you directly try to set these parameters using ini_set.
You can check the version for PHP easily in the offending method.
The code "being there" isn't the problem unless it's a function being removed and then you an add in a dummy function if it doesen't exist in the base language.

elseif( PHP_VERSION_ID >= 80400 ) {
#PHP 8.4 REMOVES SETTING OF BIRS PER CHARACTER AND SESSION LENGTH
$bits_per_character = 4;
$sid_length = 32;
}

There is already code in system\librarys\Session\Session for handling legacy versions prior to 7.0.1 in this manor.

The above are the defaults for the session ID which have been 32 Character SSID ( 160bit ) since at least PHP 7.0.1 judging by the code. It looks like the plan it to enforce this default going forward and by the comments it looks like CI was happy with this setting.

// Add as many more characters as necessary to reach at least 160 bits

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@NielBuys@jamieburchell@rhickmott
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

PHP8.4 deprecation notices fix attempt - #1

Merged
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices
Dec 20, 2024
Merged

PHP8.4 deprecation notices fix attempt#1
NielBuys merged 2 commits into
developfrom
tasks/php8_4_deprecation_notices

Conversation

@NielBuys

Copy link
Copy Markdown
Owner

Attempt to Fix below issues
bcit-ci#6302
bcit-ci#6300
bcit-ci#6300

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Changes not tested on php8.4 yet. But it should remove notices. Changes works on my php8.3 environment.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

@jamieburchell

jamieburchell commented Oct 8, 2024

Copy link
Copy Markdown

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

On my fork I have bumped the minimum php version to 7.4. That's the reason I have not pushed this pull request to the main repository.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Thanks for the heads up. I haven't tested my changes with PHP 8.4 yet; I've only researched and made the updates. I'll look into session.sid_length and set up a test environment for PHP 8.4.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

@jamieburchell

Copy link
Copy Markdown

The session.sid_length section of the code was sourced from the pull request (codeigniter4/CodeIgniter4#9139) for CodeIgniter 4, which was referenced in issue bcit-ci#6300.

Yup, that forces the params for <PHP9, but it will still trigger a deprecation error. CI4 gets around that in a different way

@jamieburchell

jamieburchell commented Oct 9, 2024

Copy link
Copy Markdown

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

At this point and assuming it stops the deprecation notice, I think I'd be tempted to simply prefix the ini_set call for session.sid_length and session.sid_bits_per_character with the error suppression character '@'.

After reviewing it, I believe you're right; it will still trigger the deprecation notice. I think it’s a good idea to add the @ symbol in front of ini_set. I will make that change and then test to see if it works.

@jamieburchell

Copy link
Copy Markdown

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

@NielBuys

Copy link
Copy Markdown
OwnerAuthor

@NielBuys I was feeling brave and decided to go all-out in my branch and remove code supporting < PHP 7.4. It might benefit you and your repo. Comments welcome too!

Thanks, I agree that it's a good idea to clean up some of the older PHP version code. I've created a patch file from your commit and will review it. I’ll let you know if I encounter any issues.

@NielBuys
NielBuys merged commit fc90b48 into developDec 20, 2024
@NielBuys
NielBuys deleted the tasks/php8_4_deprecation_notices branch December 20, 2024 07:29
@rhickmott

Copy link
Copy Markdown

Should probably bump the required PHP version to 7.1 if using nullable types. I personally don't care about anything < PHP 8.2, but I'm not sure if these PRs are supposed to be compatible with the PHP version mentioned in composer.json.

It can still be backwards compatible. I don't think there's really that many nullable types in Code Ignitor but this error can be removed by removing the types from the very few functions that use them to maintain backwards compatibility.
Optionally where needed, a check can be made in code to validate or cast to the required typing or check for nulls.

Won't there still be deprecation notices in PHP 8.4 because session.sid_length is still being used?

Only if you directly try to set these parameters using ini_set.
You can check the version for PHP easily in the offending method.
The code "being there" isn't the problem unless it's a function being removed and then you an add in a dummy function if it doesen't exist in the base language.

elseif( PHP_VERSION_ID >= 80400 ) {
#PHP 8.4 REMOVES SETTING OF BIRS PER CHARACTER AND SESSION LENGTH
$bits_per_character = 4;
$sid_length = 32;
}

There is already code in system\librarys\Session\Session for handling legacy versions prior to 7.0.1 in this manor.

The above are the defaults for the session ID which have been 32 Character SSID ( 160bit ) since at least PHP 7.0.1 judging by the code. It looks like the plan it to enforce this default going forward and by the comments it looks like CI was happy with this setting.

// Add as many more characters as necessary to reach at least 160 bits

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@NielBuys@jamieburchell@rhickmott