Как отключить отображение даты регистрации и последнего визита в профилях пользователей?

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X
#16 30 января 2022 в 10:33

Ещё раз говорю алгоритм (в код cms, как я понял, никто не лез :D ):

Panda58dev

Я в прошлом программист на С++, C#, Пайтоне и так по мелочи — на Делфи ещё, Матлабе, PHP, JS и многом другом. Ну и дата-инженер, чуть-чуть — дата сайнтист.

Могу предлположить, что библиотека Pandas языка Python Вам может быть тоже близка ))


В код движка не лезу. Но Ваши аргументы и подход — выглядит более логичным и целостным, чем мнения других участников именно данной дискуссии.

Добавлено спустя 5 минут

Но, опять же, иногда встречаются случаи, когда тернарники более уместны, чем полные условия. 

Panda58dev

На мой взгляд, тернарные операторы уместны тогда, когда внутри операндов (составных частей оператора, аргументов оператора) — выражения относительно простые и читабельные внешне, а также просты с позиции выполняемого кода.

Плюс тернарные операции более уместны в более структурированных и условно «хардкордных» языках, например, в С++.

А в оперсорсных проектах и в PHP-движках, которые развиваются десятилетиями, читабельность и простота — важнее визуальной компактности кода.

Поэтому да, я бы тоже писал данную логику условно «на IF-ах», а не на тернарниках.

#17 30 января 2022 в 10:38

библиотека Pandas языка Python

Владимир Переверзев

Боюсь что из Python единственное что я знаю — это фреймворк «Django», т.к. будучи ещё «интерном» часто спорил о полезности этого фреймворка :) Я на нём писал, но буквально сотню строк. Всё таки моя специализация — PHP, но один умный человек сказал мне: «Не важно сколько ты знаешь языков, важно на сколько хорошо ты понимаешь алгоритмику!».

Добавлено спустя 1 минуту

А в оперсорсных проектах и в PHP-движках, которые развиваются десятилетиями, читабельность и простота — важнее визуальной компактности кода.

Владимир Переверзев

Как говорил Михаил Калашников:
«Всё нужное просто, всё сложное не нужно.» :)

#18 30 января 2022 в 11:14

Как говорил Михаил Калашников:
«Всё нужное просто, всё сложное не нужно.» :)

Panda58dev

Сложно — значит ложно.
KISS — keep it simple, stupid

#19 30 января 2022 в 11:52

Во-первых: я использую xampp; во-вторых: я таки знаю php, не в идеале, конечно, но тему про массивы знаю)
 IamB, Вы — определили массив $a, а я говорил про случай, когда он не определён.

Panda58dev

IamB написал всё правильно. И чтобы такого не было, раз мы добавляем опцию, нужно переделать, заодно прибавив читаемости.

Присланный вами пул не годится в таком виде. Заменить надо на что-то вроде:

  1. $fields = [];
  2.  
  3. if (!empty($this->options['show_reg_data'])){
  4.  
  5. $fields['date_reg'] = [
  6. 'title' => LANG_USERS_PROFILE_REGDATE,
  7. 'text' => string_date_age_max($profile['date_reg'], true)
  8. ];
  9. }

Надеюсь, понятно почему так, а не как вы сделали?

Вы не торопитесь, вроде никто же не гонит :)

#20 30 января 2022 в 12:30

В этом случае, если ни одно условие не выполнено, то массив даже не будет создан, из чего выходит, что любой перебор, несуществующего массива выдаёт ошибку. Сначала «уведомление»: Undefined variable, потом «предупреждение»: Invalid argument supplied for foreach()

Panda58dev

Вы говорите о чём-то своём. А я говорил о конкретном случае.

Подчёркиваю: текст ниже пишет человек не обладающий знаниями программера!

Смотрим сюда: https://github.com/instantsoft/icms2/blob/master/templates/modern/controllers/users/profile_view.tpl.php#L77 и видим, что цикл запускается без какой-либо проверки. При текущем раскладе в системе она, возможно, и не нужна (переменная точно определена и содержит массив). Я бы даже в этом случае проверку ставил (на случай изменения переменной из стороннего компонента). В  случае же появления опций на вывод полей, переменная может либо содержать пустой массив (надеюсь, утверждение, что такого быть не может, уже не актуально?) либо вообще не быть определённой. Потому теперь перед foreach необходимость проверки, что эта $sys_fields существует и что она содержит не пустой массив, уже даже обсуждать нет смысла. Об этом я и говорил выше.

#21 30 января 2022 в 12:52

Я бы даже в этом случае проверку ставил (на случай изменения переменной из стороннего компонента).

Олег Васильевич я

Нет никакого смысла ставить проверку, утяжеляя читаемость. Там всегда должен быть массив, пусть даже пустой (в этом случае просто не будет перебора). А если сторонний компонент (хук) эту переменную сделает, внезапно, строковой или иной, отличной от массива, тогда человек, сделавший это, неправ и непонятно, что им двигало.

#22 30 января 2022 в 14:13

 Олег Васильевич я, понял, до этого Вас не понял. Вы правы :)
 Fuze, ну вроде понятно...

И так, подведём итоги

Надо сделать сейчас:

  •  Опцию переключения отображения даты регистрации в профиле пользователя;
  •  Опцию переключения отображения поля «Последний визит» в профиле пользователя;
  •  Определить в начале скрипта массив, что бы ненароком не сломать всё и вся.

Сделать как будет время:

  • Пользовательское переключение отображения своей даты регистрации;
  • Пользовательское переключение отображения своего поля «Последний визит».

Если всё так — сейчас буду делать, если есть замечания, прошу их высказать, желательно с подробными доводами :)

Добавлено спустя 1 час

Ну в принципе, оно работает:
ИзображениеИзображение

Изображение

 Fuze, почему то, когда из под админа смотрю профиль (должен показывать IP-шник), выдаёт ошибку, мол "Call to undefined function string_ip_to_location()", хотя версия CMS 2.15.1, из-за чего может быть?

#23 30 января 2022 в 14:32

почему то, когда из под админа смотрю профиль (должен показывать IP-шник), выдаёт ошибку, мол "Call to undefined function string_ip_to_location()", хотя версия CMS 2.15.1, из-за чего может быть?

Panda58dev

Функция есть. Вероятно вы как-то не все файлы обновили.

#24 30 января 2022 в 14:38

 Fuze, да, так и есть, спасибо :)

Добавлено спустя 2 минуты

Обновил pull request: ссылка 

#25 30 января 2022 в 15:11

Нет никакого смысла ставить проверку, утяжеляя читаемость. Там всегда должен быть массив, пусть даже пустой (в этом случае просто не будет перебора)

Fuze

Ок. Учту для себя

#26 30 января 2022 в 15:14

Ок. Учту для себя

Олег Васильевич я

Я написал выше исключительно для обсуждаемого примера) Всё зависит от ситуации и контекста. Текущий пример не означает, что в других местах можно тоже не проверять.

#27 30 января 2022 в 15:20

Я написал выше исключительно для обсуждаемого примера) Всё зависит от ситуации и контекста. Текущий пример не означает, что в других местах можно тоже не проверять.

Fuze

Да понял я. Спорить, с беспрекословным гуру не собираюсь. Но, если уж на то пошло, не согласен с этим примером. Моя логика в данном случае такая: коль переменная передаётся в файл из вне (а не определена в нем же), проверять надо.

#28 30 января 2022 в 16:30

А вот тернарники осуждаю

Panda58dev

А начиная с php7 вообще можно вот так писать.

  1. $myvariable = $ar['some_element'] ?? NULL;
#29 30 января 2022 в 18:38

 Ris, имхо, только сумасшедший так будет писать :) В любом случае, встречая это в коде, который нужно отладить, я бы разработчику добра не желал)

#30 30 января 2022 в 20:32

 Ris, имхо, только сумасшедший так будет писать :)

Panda58dev

А вы дерзки на язык.

В любом случае, встречая это в коде, который нужно отладить, я бы разработчику добра не желал)

Panda58dev

Во-первых, обоснуйте. Во-вторых, а ну как все, кто так пишет, пожелает вам того же.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.