Неверно выводит Дату рождения

Неверно выводит Дату рождения

 
Посетитель
small user social cms
Медаль
Сообщений: 380
В настройках профиля указываю дату рождения 15 сентября сохраняю, выводит в профиле 14 сентября.Такое было ещо в движке 1.9 и такое осталось в 1.10.1 и это на только в одном месяце и дате а я так понимаю в нескольких так как сегодня получил от пользователя письмо с описаниям такой же проблемы.Подскажите пожалуйста как поправить?
Я меняю валюту на сайте obmenka. Рекомендую! Возможен вывод в наличные деньги.
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
Поздравляю. Вы нашли баг.
Могу ошибиться, но пока вижу только одну причину такого поведения движка. Дело в том, что дата дня рождения форматируется методом ядра движка dateFormat(). Это можно увидеть в файле модели компонента users, строка 362:
Код PHP:
  1. $user['fbirthdate'] = cmsCore::dateFormat($user['birthdate']);
А в методе dateFormat() в файле /core/cms.php в строке 2730 - 2731 видим:
Код PHP:
  1. // формируем входную $date с учетом смещения
  2. $date = date('Y-m-d H:i:s', strtotime($date)+($inConf->timediff*3600));
Это означает, что дата дня рождения форматируется со смещением, установленным в админке, в настройках сайта, во вкладке Время. Конечно же, день рождения должен формироваться без смещения. Судя по всему, у вас стоит отрицательное смещение(15 выводится как 14-е).
Как исправить?
1 вариант: Уберите смещение времени в админке;
2 вариант: Вводим новый параметр в метод, указывающий, форматировать дату без смещения.
Для этого в файле /core/cms.php заменяем строку 2724
Код PHP:
  1. static function dateFormat($date, $is_full_m = true, $is_time=false, $is_now_time = true){
на
Код PHP:
  1. static function dateFormat($date, $is_full_m = true, $is_time=false, $is_now_time = true, $is_diff = true){
В этом же файле, строку 2731
Код PHP:
  1. $date = date('Y-m-d H:i:s', strtotime($date)+($inConf->timediff*3600));
заменяем на
Код PHP:
  1.  
  2. if($is_diff){
  3. $date = date('Y-m-d H:i:s', strtotime($date)+($inConf->timediff*3600));
  4. }else{
  5. $date = date('Y-m-d H:i:s', strtotime($date));
  6. }
  7.  
В файле модели /components/users/model.php находим строку 362
Код PHP:
  1. $user['fbirthdate'] = cmsCore::dateFormat($user['birthdate']);
и меняем на:
Код PHP:
  1. $user['fbirthdate'] = cmsCore::dateFormat($user['birthdate'], true, false, true, false);
Вроде всё. Если не сложно, можете написать в багтрекер.
Хватит париться, живи как нравится!
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 380
Марат:
. Если не сложно, можете написать в багтрекер.
Я им никогда не пользовался, ещо не туда напишу,лучше уж вы если не сложно.
Я меняю валюту на сайте obmenka. Рекомендую! Возможен вывод в наличные деньги.
Посетитель
small user social cms
Медаль
Сообщений: 380
Спасибо огромное, внес изменения в файлы и все заработало как надо.
Я меняю валюту на сайте obmenka. Рекомендую! Возможен вывод в наличные деньги.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: