joomla-cms icon indicating copy to clipboard operation
joomla-cms copied to clipboard

[5.1] com_users: Simplifying empty check in login layout

Open Hackwar opened this issue 2 years ago • 12 comments

Summary of Changes

I fixed bugs in an old layout override and stumbled over this. This is a very complex way of checking if there is anything in that parameter. We could make it worse by using regex and maybe doing an !empty() check around all of this... Anyway, this check just tries to find out if the description parameter does contain anything of relevance. Relevant is everything that remains after removing spaces from beginning and end of the string, thus a trim() is enough.

Testing Instructions

Codereview

Link to documentations

Please select:

  • [ ] Documentation link for docs.joomla.org:

  • [X] No documentation changes for docs.joomla.org needed

  • [ ] Pull Request link for manual.joomla.org:

  • [X] No documentation changes for manual.joomla.org needed

Hackwar avatar Sep 08 '23 11:09 Hackwar

if you look in the history you will see that it was deliberately changed from what you are proposing to what it is now

brianteeman avatar Sep 08 '23 12:09 brianteeman

The PR in question is #9896. Even looking at the PR, I can't understand why this was merged. Regardless of that, the browser in question is EOL and not supported by us anymore. I still think that this PR is the right way to go.

Hackwar avatar Sep 08 '23 12:09 Hackwar

if you look in the history you will see that it was deliberately changed from what you are proposing to what it is now

When reading that old PR‘s code changes I can’t see that it had any trim before. It was comparing the complete unmodified string. So this PR here is not a roll back of the changes from the other PR.

richard67 avatar Sep 09 '23 08:09 richard67

@Hackwar If you want to make it work exactly the same way as the old code regarding other kinds of white space than a single space character, you could use a string with a single space as 2nd parameter for trim, then it would trim only space characters. Not sure if it needs that, but we would play safe and it still has all advantages of your code change.

richard67 avatar Sep 09 '23 09:09 richard67

interesting your change changes the behavior more then I expected:

https://3v4l.org/7LM6I (yours is $z)

HLeithner avatar Sep 09 '23 09:09 HLeithner

Hmm, the zero evaluates to false, too. Indeed a change.

richard67 avatar Sep 09 '23 10:09 richard67

This is why it is always important to look at why code was written the way that it was before changing it

brianteeman avatar Sep 09 '23 11:09 brianteeman

my suggestion is to move it to !empty(trim($value))

HLeithner avatar Sep 12 '23 14:09 HLeithner

Yes, this "changes" behavior. It actually fixes it to be in line with what people expect. The goal is to only show the text when it contains anything. Right now it only removes spaces, but would keep a line break or tab and then show the text. Yes, it also hides it, when the content is only a 0, but I would also argue, that there is no situation where someone would want a single 0 as description. The goal of this PR is to simplify the code and make it readable for people. We want to remove invisible characters of all kinds, so I'm not going to limit the functionality of trim() to just remove spaces. If that is not acceptable, then rather lets close this PR than to waste more time on this.

Hackwar avatar Sep 14 '23 09:09 Hackwar

This pull request has been automatically rebased to 5.1-dev.

HLeithner avatar Sep 30 '23 22:09 HLeithner

Seeing the logic comes back with the summary. However, it is not possible for me to perform a test. Seeing the documentation of PHP trim function, it cleans up all types of blank spaces in a string.

adj9 avatar Feb 24 '24 15:02 adj9

I have tested this item :white_check_mark: successfully on 7ca9182a8ddc2563b7668fb6aa018e0c04869bcf

I have read the code proposed in the PR, and I have checked the PHP documentation (https://www.php.net/manual/en/function.trim.php). The PR certainly brings an advantage: it recognizes and removes not only empty spaces but also other hidden special characters.

" " (ASCII 32 (0x20)), an ordinary space. "\t" (ASCII 9 (0x09)), a tab. "\n" (ASCII 10 (0x0A)), a new line (line feed). "\r" (ASCII 13 (0x0D)), a carriage return. "\0" (ASCII 0 (0x00)), the NUL-byte. "\v" (ASCII 11 (0x0B)), a vertical tab.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/41677.

lucasacchiricciardi avatar Feb 24 '24 15:02 lucasacchiricciardi

I have tested this item :white_check_mark: successfully on 7ca9182a8ddc2563b7668fb6aa018e0c04869bcf


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/41677.

viocassel avatar Mar 29 '24 17:03 viocassel

RTC


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/41677.

Quy avatar Mar 29 '24 18:03 Quy

This pull request has been automatically rebased to 5.2-dev.

HLeithner avatar Apr 24 '24 09:04 HLeithner

Thanks @Hackwar !

pe7er avatar May 07 '24 08:05 pe7er