/** * Получить список просмотром/чтения топиков по списку айдишников, но используя единый кеш * * @param array $aTopicId Список ID топиков * @param int $sUserId ID пользователя * @return array */ public function GetTopicsReadByArraySolid($aTopicId, $sUserId) { if (!is_array($aTopicId)) { $aTopicId = array($aTopicId); } $aTopicId = array_unique($aTopicId); $aTopicsRead = array(); $s = join(',', $aTopicId); if (false === ($data = $this->Cache_Get("topic_read_{$sUserId}_id_{$s}"))) { $data = $this->oMapperTopic->GetTopicsReadByArray($aTopicId, $sUserId); foreach ($data as $oTopicRead) { $aTopicsRead[$oTopicRead->getTopicId()] = $oTopicRead; } $this->Cache_Set($aTopicsRead, "topic_read_{$sUserId}_id_{$s}", array("topic_read_user_{$sUserId}"), 60 * 60 * 24 * 1); return $aTopicsRead; } return $data; }
/** * Получить список просмотров/чтения топиков по списку ID, но используя единый кеш * * @param array $aTopicsId - Список ID топиков * @param int $nUserId - ID пользователя * * @return array */ public function GetTopicsReadByArraySolid($aTopicsId, $nUserId) { if (!is_array($aTopicsId)) { $aTopicsId = array($aTopicsId); } $aTopicsId = array_unique($aTopicsId); $aTopicsRead = array(); $sCacheKey = "topic_read_{$nUserId}_id_" . join(',', $aTopicsId); if (false === ($data = E::ModuleCache()->Get($sCacheKey))) { $data = $this->oMapper->GetTopicsReadByArray($aTopicsId, $nUserId); foreach ($data as $oTopicRead) { $aTopicsRead[$oTopicRead->getTopicId()] = $oTopicRead; } E::ModuleCache()->Set($aTopicsRead, $sCacheKey, array("topic_read_user_{$nUserId}"), 'P1D'); return $aTopicsRead; } return $data; }