From 82ca7be281868fa9c6d8255279f6e8b969e4e58e Mon Sep 17 00:00:00 2001 From: Mzhelskiy Maxim Date: Tue, 4 May 2010 09:04:39 +0000 Subject: [PATCH] fix talk --- classes/modules/talk/Talk.class.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/classes/modules/talk/Talk.class.php b/classes/modules/talk/Talk.class.php index 02f8bb58..131ea3ce 100644 --- a/classes/modules/talk/Talk.class.php +++ b/classes/modules/talk/Talk.class.php @@ -193,6 +193,9 @@ class LsTalk extends Module { * @param unknown_type $aTalkId */ public function GetTalksByArrayId($aTalkId) { + if (Config::Get('sys.cache.solid')) { + return $this->GetTalksByArrayIdSolid($aTalkId); + } if (!is_array($aTalkId)) { $aTalkId=array($aTalkId); } @@ -245,6 +248,23 @@ class LsTalk extends Module { $aTalks=func_array_sort_by_keys($aTalks,$aTalkId); return $aTalks; } + public function GetTalksByArrayIdSolid($aTalkId) { + if (!is_array($aTalkId)) { + $aTalkId=array($aTalkId); + } + $aTalkId=array_unique($aTalkId); + $aTalks=array(); + $s=join(',',$aTalkId); + if (false === ($data = $this->Cache_Get("talk_id_{$s}"))) { + $data = $this->oMapper->GetTalksByArrayId($aTalkId); + foreach ($data as $oTalk) { + $aTalks[$oTalk->getId()]=$oTalk; + } + $this->Cache_Set($aTalks, "talk_id_{$s}", array("update_talk_user","talk_new"), 60*60*24*1); + return $aTalks; + } + return $data; + } /** * Получить список отношений разговор-юзер по списку айдишников *