Helllo、
最近、アップグレードパッチを介して6.1.4から6.2GAにアップグレードしました。
それ以来、日付と時刻に直接関係するもの、つまり、通話記録、会議、タスクを作成することはできません。
サブパネルを使用して同じことを行うと、エントリは単に消えて、作成されることはありません。
アクティビティの下にあるそれぞれのモジュールの1つから試してみると、送信時にHTTP500エラーが発生します。
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
残念ながら、これは実稼働サーバーで発生しており、この問題に気付いたのは遅すぎました。
どうすればこれを修正できますか?緊急にあなたの助けを求めています。
ありがとう、m ^ e
更新1
これに一時的なパッチを適用して機能させることができました...TimeDate.phpの849行目は、次のような関数の一部です。
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);
}
現在、通話/会議は再び機能しています。しかし、この問題の実際の修正は何でしょうか。私のやり方は、急いでこれを修正する必要がある人にとっては迅速な解決策になるはずです。
誰かが問題の根本とよりエレガントな修正にたどり着くことができれば、私は報奨金を提供したいと思っています。
乾杯、m ^ e