Helllo,
Недавно я обновился до 6,2 GA с 6.1.4 с помощью патча обновления.
Даже с тех пор я не могу создать ничего, что имеет прямое отношение к дате и времени, а именно: журналы вызовов, собрания и задачи.
Когда я делаю то же самое, используя подпанель, запись просто исчезает и НИКОГДА не создается.
Когда я пытаюсь выполнить один из соответствующих модулей в разделе Активности, при отправке я получаю ошибку HTTP 500 .
Журнал ошибок Apache показывает следующее:
PHP Catchable fatal error: Argument 1 passed to TimeDate::_getUserTZ() must be
an instance of User, boolean given, called in /home/crm/include/TimeDate.php on
line 849 and defined in /home/crm/include/TimeDate.php on line 259, referer:
http://mysite/index.php?module=Leads&offset=1&stamp=1307694072083825200&return_module=Leads&action=DetailView&record=xxxxxxxxxxxx
К сожалению, это случилось с рабочим сервером, и я заметил эту проблему слишком поздно.
Как я могу это исправить? Срочно ищу вашу помощь.
Спасибо,
м ^ е
ОБНОВЛЕНИЕ 1
Мне удалось применить временный патч к этому, и он заработал ...
Строка 849 TimeDate.php является частью функции, которая выглядит следующим образом:
function to_display_date_time($date, $meridiem = true, $convert_tz = true, $user = null)
{
return $this->_convert($date,
self::DB_DATETIME_FORMAT, self::$gmtTimezone, $this->get_date_time_format($user),
$convert_tz ? $this->_getUserTZ($user) : self::$gmtTimezone, true);
}
Эта функция в свою очередь вызывает другую _getUserTZ()
, в которую предполагается передать переменную типа User
. Вместо этого он проходит null
.
Я использовал фрагмент, чтобы проверить наличие пустого $ user и присвоить ему значение, если это необходимо. Код является частью другой функции с именем _getUser()
, найденной в этом же файле ....
protected function _getUser(User $user = null)
{
if (empty($user)) {
$user = $this->user;
}
if (empty($user)) {
$user = $GLOBALS['current_user'];
}
return $user;
}
Я позаимствовал код из этой функции и вставил его внутрь to_display_date_time()
, чтобы он выглядел следующим образом:
function to_display_date_time($date, $meridiem = true, $convert_tz = true, $user = null)
{
if (empty($user)) {
$user = $this->user;
}
if (empty($user)) {
$user = $GLOBALS['current_user'];
}
return $this->_convert($date,
self::DB_DATETIME_FORMAT, self::$gmtTimezone, $this->get_date_time_format($user),
$convert_tz ? $this->_getUserTZ($user) : self::$gmtTimezone, true);
}
Теперь Звонки / Встречи снова работают ... но я все еще задаюсь вопросом, как на самом деле решить эту проблему. Мой путь должен оказаться быстрым решением для тех, кому нужно срочно исправить это.
Если кто-то может найти причину проблемы и более элегантное решение, я готов предложить вознаграждение.
Ура,
м ^ е