Ошибочный тип даты

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Создание поля даты в профиле даёт ошибку в БД

#1 22 мая 2015 в 02:20
Добрый день, друзья!
Создание нового поля даты в Профилях Пользователей приводит к неточному выбору типа данных в БД.
В БД попадает поле типа timestamp, из-за чего невозможно ввести даты ранее 1970 года.
Понятно, что на многих сайтах немалая часть пользователей даже не сможет ввести дату своего рождения!
Даже если это будет один пользователь – безобразие беспредельное!

Как исправить этот грубый косяк?

Имеется два способа, если у вас уже работает сайт (по-умному, конечно, надо исправить дистрибутив):

1. Вы исправляете тип поля прямо в Базе Данных.
Заходите в нужную таблицу в режиме «Структура», находите нужное поле и выбираете из выпадающего списка либо date, либо datetime.
Этот способ хорош, но он повлияет только на одно уже созданное поле. Все следующие поля, которые вы создадите, это не повлияет...

2. Находите файл ..\system\fields\date.php
В самом начале находите строку:
  1. public $sql = 'timestamp NULL DEFAULT NULL';
Вместо слова timestamp вписываете нужный вам тип поля, например:
  1. public $sql = 'datetime NULL DEFAULT NULL';
Проблема решена, но в Базе Данных останется неправильный тип!
Поэтому либо исправьте тип в БД так, как это описано выше в п.1, либо в Админке удалите это поле и создайте его заново.

NB!
Второй способ полностью решает проблему для всех дальнейших действий, но помните, что он может перестать работать, если обновление затронет исправленный файл (разумеется, если разработчики не исправят эту недоработку в будущих версиях).
#2 2 августа 2015 в 19:10
Решено, закрываю.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.