/** * Получить список отношений друзей используя единый кеш * * @param array $aUserId Список ID пользователей проверяемых на дружбу * @param int $sUserId ID пользователя у которого проверяем друзей * @return array */ public function GetFriendsByArraySolid($aUserId, $sUserId) { if (!is_array($aUserId)) { $aUserId = array($aUserId); } $aUserId = array_unique($aUserId); $aFriends = array(); $s = join(',', $aUserId); if (false === ($data = $this->Cache_Get("user_friend_{$sUserId}_id_{$s}"))) { $data = $this->oMapper->GetFriendsByArrayId($aUserId, $sUserId); foreach ($data as $oFriend) { $aFriends[$oFriend->getFriendId($sUserId)] = $oFriend; } $this->Cache_Set($aFriends, "user_friend_{$sUserId}_id_{$s}", array("friend_change_user_{$sUserId}"), 60 * 60 * 24 * 1); return $aFriends; } return $data; }
/** * Получить список отношений друзей используя единый кеш * * @param array $aUsersId Список ID пользователей проверяемых на дружбу * @param int $nUserId ID пользователя у которого проверяем друзей * * @return ModuleUser_EntityFriend[] */ public function GetFriendsByArraySolid($aUsersId, $nUserId) { if (!$aUsersId) { return array(); } elseif (!is_array($aUsersId)) { $aUsersId = array($aUsersId); } else { $aUsersId = array_unique($aUsersId); } $aFriends = array(); $sCacheKey = "user_friend_{$nUserId}_id_" . join(',', $aUsersId); if (false === ($data = E::ModuleCache()->Get($sCacheKey))) { $data = $this->oMapper->GetFriendsByArrayId($aUsersId, $nUserId); foreach ($data as $oFriend) { $aFriends[$oFriend->getFriendId($nUserId)] = $oFriend; } E::ModuleCache()->Set($aFriends, $sCacheKey, array("friend_change_user_{$nUserId}"), 'P1D'); return $aFriends; } return $data; }