mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-07-01 05:55:02 +03:00
This commit is contained in:
parent
a2d60c7ebb
commit
1cb89df83b
|
@ -234,30 +234,37 @@ class LsTopic extends Module {
|
|||
*
|
||||
* @param unknown_type $aTopicId
|
||||
*/
|
||||
public function GetTopicsByArrayId($aTopicId) {
|
||||
public function GetTopicsByArrayId($aTopicId) {
|
||||
if (!is_array($aTopicId)) {
|
||||
$aTopicId=array($aTopicId);
|
||||
}
|
||||
$aTopicId=array_unique($aTopicId);
|
||||
$aTopics=array();
|
||||
$aTopics=array();
|
||||
$aTopicIdNotNeedQuery=array();
|
||||
/**
|
||||
* Делаем мульти-запрос к кешу
|
||||
*/
|
||||
$aCacheKeys=func_array_change_value($aTopicId,'topic_');
|
||||
$aCacheKeys=func_build_cache_keys($aTopicId,'topic_');
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
/**
|
||||
* проверяем что досталось из кеша
|
||||
*/
|
||||
foreach ($aCacheKeys as $sKey ) {
|
||||
if (isset($data[$sKey])) {
|
||||
$aTopics[$data[$sKey]->getId()]=$data[$sKey];
|
||||
*/
|
||||
foreach ($aCacheKeys as $sValue => $sKey ) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if ($data[$sKey]) {
|
||||
$aTopics[$data[$sKey]->getId()]=$data[$sKey];
|
||||
} else {
|
||||
$aTopicIdNotNeedQuery[]=$sValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Смотрим каких топиков не было в кеше и делаем запрос в БД
|
||||
*/
|
||||
$aTopicIdNeedQuery=array_diff($aTopicId,array_keys($aTopics));
|
||||
$aTopicIdNeedQuery=array_diff($aTopicId,array_keys($aTopics));
|
||||
$aTopicIdNeedQuery=array_diff($aTopicIdNeedQuery,$aTopicIdNotNeedQuery);
|
||||
$aTopicIdNeedStore=$aTopicIdNeedQuery;
|
||||
if ($data = $this->oMapperTopic->GetTopicsByArrayId($aTopicIdNeedQuery)) {
|
||||
foreach ($data as $oTopic) {
|
||||
/**
|
||||
|
@ -265,9 +272,16 @@ class LsTopic extends Module {
|
|||
*/
|
||||
$aTopics[$oTopic->getId()]=$oTopic;
|
||||
$this->Cache_Set($oTopic, "topic_{$oTopic->getId()}", array("topic_update_{$oTopic->getId()}"), 60*60*24*4);
|
||||
$aTopicIdNeedStore=array_diff($aTopicIdNeedStore,array($oTopic->getId()));
|
||||
}
|
||||
}
|
||||
return $aTopics;
|
||||
/**
|
||||
* Сохраняем в кеш запросы не вернувшие результата
|
||||
*/
|
||||
foreach ($aTopicIdNeedStore as $sId) {
|
||||
$this->Cache_Set(null, "topic_{$sId}", array("topic_update_{$sId}"), 60*60*24*4);
|
||||
}
|
||||
return $aTopics;
|
||||
}
|
||||
/**
|
||||
* Получает список топиков из избранного
|
||||
|
@ -715,25 +729,32 @@ class LsTopic extends Module {
|
|||
$aTopicId=array($aTopicId);
|
||||
}
|
||||
$aTopicId=array_unique($aTopicId);
|
||||
$aTopicsVote=array();
|
||||
$aTopicsVote=array();
|
||||
$aTopicIdNotNeedQuery=array();
|
||||
/**
|
||||
* Делаем мульти-запрос к кешу
|
||||
*/
|
||||
$aCacheKeys=func_array_change_value($aTopicId,'topic_vote_','_'.$sUserId);
|
||||
$aCacheKeys=func_build_cache_keys($aTopicId,'topic_vote_','_'.$sUserId);
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
/**
|
||||
* проверяем что досталось из кеша
|
||||
*/
|
||||
foreach ($aCacheKeys as $sKey ) {
|
||||
if (isset($data[$sKey])) {
|
||||
$aTopicsVote[$data[$sKey]->getTopicId()]=$data[$sKey];
|
||||
*/
|
||||
foreach ($aCacheKeys as $sValue => $sKey ) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if ($data[$sKey]) {
|
||||
$aTopicsVote[$data[$sKey]->getTopicId()]=$data[$sKey];
|
||||
} else {
|
||||
$aTopicIdNotNeedQuery[]=$sValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Смотрим каких топиков не было в кеше и делаем запрос в БД
|
||||
*/
|
||||
$aTopicIdNeedQuery=array_diff($aTopicId,array_keys($aTopicsVote));
|
||||
$aTopicIdNeedQuery=array_diff($aTopicId,array_keys($aTopicsVote));
|
||||
$aTopicIdNeedQuery=array_diff($aTopicIdNeedQuery,$aTopicIdNotNeedQuery);
|
||||
$aTopicIdNeedStore=$aTopicIdNeedQuery;
|
||||
if ($data = $this->oMapperTopic->GetTopicsVoteByArray($aTopicIdNeedQuery,$sUserId)) {
|
||||
foreach ($data as $oTopicVote) {
|
||||
/**
|
||||
|
@ -741,8 +762,15 @@ class LsTopic extends Module {
|
|||
*/
|
||||
$aTopicsVote[$oTopicVote->getTopicId()]=$oTopicVote;
|
||||
$this->Cache_Set($oTopicVote, "topic_vote_{$oTopicVote->getTopicId()}_{$oTopicVote->getVoterId()}", array(), 60*60*24*4);
|
||||
$aTopicIdNeedStore=array_diff($aTopicIdNeedStore,array($oTopicVote->getTopicId()));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Сохраняем в кеш запросы не вернувшие результата
|
||||
*/
|
||||
foreach ($aTopicIdNeedStore as $sId) {
|
||||
$this->Cache_Set(null, "topic_vote_{$sId}_{$sUserId}", array(), 60*60*24*4);
|
||||
}
|
||||
return $aTopicsVote;
|
||||
}
|
||||
/**
|
||||
|
@ -779,25 +807,32 @@ class LsTopic extends Module {
|
|||
$aTopicId=array($aTopicId);
|
||||
}
|
||||
$aTopicId=array_unique($aTopicId);
|
||||
$aFavouriteTopics=array();
|
||||
$aFavouriteTopics=array();
|
||||
$aTopicIdNotNeedQuery=array();
|
||||
/**
|
||||
* Делаем мульти-запрос к кешу
|
||||
*/
|
||||
$aCacheKeys=func_array_change_value($aTopicId,'favourite_topic_','_'.$sUserId);
|
||||
$aCacheKeys=func_build_cache_keys($aTopicId,'favourite_topic_','_'.$sUserId);
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
/**
|
||||
* проверяем что досталось из кеша
|
||||
*/
|
||||
foreach ($aCacheKeys as $sKey ) {
|
||||
if (isset($data[$sKey])) {
|
||||
$aFavouriteTopics[$data[$sKey]->getTopicId()]=$data[$sKey];
|
||||
*/
|
||||
foreach ($aCacheKeys as $sValue => $sKey ) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if ($data[$sKey]) {
|
||||
$aFavouriteTopics[$data[$sKey]->getTopicId()]=$data[$sKey];
|
||||
} else {
|
||||
$aTopicIdNotNeedQuery[]=$sValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Смотрим каких топиков не было в кеше и делаем запрос в БД
|
||||
*/
|
||||
$aTopicIdNeedQuery=array_diff($aTopicId,array_keys($aFavouriteTopics));
|
||||
$aTopicIdNeedQuery=array_diff($aTopicId,array_keys($aFavouriteTopics));
|
||||
$aTopicIdNeedQuery=array_diff($aTopicIdNeedQuery,$aTopicIdNotNeedQuery);
|
||||
$aTopicIdNeedStore=$aTopicIdNeedQuery;
|
||||
if ($data = $this->oMapperTopic->GetFavouriteTopicsByArray($aTopicIdNeedQuery,$sUserId)) {
|
||||
foreach ($data as $oFavouriteTopic) {
|
||||
/**
|
||||
|
@ -805,8 +840,15 @@ class LsTopic extends Module {
|
|||
*/
|
||||
$aFavouriteTopics[$oFavouriteTopic->getTopicId()]=$oFavouriteTopic;
|
||||
$this->Cache_Set($oFavouriteTopic, "favourite_topic_{$oFavouriteTopic->getTopicId()}_{$oFavouriteTopic->getUserId()}", array(), 60*60*24*4);
|
||||
$aTopicIdNeedStore=array_diff($aTopicIdNeedStore,array($oFavouriteTopic->getTopicId()));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Сохраняем в кеш запросы не вернувшие результата
|
||||
*/
|
||||
foreach ($aTopicIdNeedStore as $sId) {
|
||||
$this->Cache_Set(null, "favourite_topic_{$sId}_{$sUserId}", array(), 60*60*24*4);
|
||||
}
|
||||
return $aFavouriteTopics;
|
||||
}
|
||||
/**
|
||||
|
@ -877,25 +919,32 @@ class LsTopic extends Module {
|
|||
$aTopicId=array($aTopicId);
|
||||
}
|
||||
$aTopicId=array_unique($aTopicId);
|
||||
$aTopicsRead=array();
|
||||
$aTopicsRead=array();
|
||||
$aTopicIdNotNeedQuery=array();
|
||||
/**
|
||||
* Делаем мульти-запрос к кешу
|
||||
*/
|
||||
$aCacheKeys=func_array_change_value($aTopicId,'topic_read_','_'.$sUserId);
|
||||
$aCacheKeys=func_build_cache_keys($aTopicId,'topic_read_','_'.$sUserId);
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
/**
|
||||
* проверяем что досталось из кеша
|
||||
*/
|
||||
foreach ($aCacheKeys as $sKey ) {
|
||||
if (isset($data[$sKey])) {
|
||||
$aTopicsRead[$data[$sKey]->getTopicId()]=$data[$sKey];
|
||||
*/
|
||||
foreach ($aCacheKeys as $sValue => $sKey ) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if ($data[$sKey]) {
|
||||
$aTopicsRead[$data[$sKey]->getTopicId()]=$data[$sKey];
|
||||
} else {
|
||||
$aTopicIdNotNeedQuery[]=$sValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Смотрим каких топиков не было в кеше и делаем запрос в БД
|
||||
*/
|
||||
$aTopicIdNeedQuery=array_diff($aTopicId,array_keys($aTopicsRead));
|
||||
$aTopicIdNeedQuery=array_diff($aTopicId,array_keys($aTopicsRead));
|
||||
$aTopicIdNeedQuery=array_diff($aTopicIdNeedQuery,$aTopicIdNotNeedQuery);
|
||||
$aTopicIdNeedStore=$aTopicIdNeedQuery;
|
||||
if ($data = $this->oMapperTopic->GetTopicsReadByArray($aTopicIdNeedQuery,$sUserId)) {
|
||||
foreach ($data as $oTopicRead) {
|
||||
/**
|
||||
|
@ -903,8 +952,15 @@ class LsTopic extends Module {
|
|||
*/
|
||||
$aTopicsRead[$oTopicRead->getTopicId()]=$oTopicRead;
|
||||
$this->Cache_Set($oTopicRead, "topic_read_{$oTopicRead->getTopicId()}_{$oTopicRead->getUserId()}", array(), 60*60*24*4);
|
||||
$aTopicIdNeedStore=array_diff($aTopicIdNeedStore,array($oTopicRead->getTopicId()));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Сохраняем в кеш запросы не вернувшие результата
|
||||
*/
|
||||
foreach ($aTopicIdNeedStore as $sId) {
|
||||
$this->Cache_Set(null, "topic_read_{$sId}_{$sUserId}", array(), 60*60*24*4);
|
||||
}
|
||||
return $aTopicsRead;
|
||||
}
|
||||
/**
|
||||
|
|
|
@ -77,25 +77,32 @@ class LsUser extends Module {
|
|||
$aUserId=array($aUserId);
|
||||
}
|
||||
$aUserId=array_unique($aUserId);
|
||||
$aUsers=array();
|
||||
$aUsers=array();
|
||||
$aUserIdNotNeedQuery=array();
|
||||
/**
|
||||
* Делаем мульти-запрос к кешу
|
||||
*/
|
||||
$aCacheKeys=func_array_change_value($aUserId,'user_');
|
||||
$aCacheKeys=func_build_cache_keys($aUserId,'user_');
|
||||
if (false !== ($data = $this->Cache_Get($aCacheKeys))) {
|
||||
/**
|
||||
* проверяем что досталось из кеша
|
||||
*/
|
||||
foreach ($aCacheKeys as $sKey ) {
|
||||
if (isset($data[$sKey])) {
|
||||
$aUsers[$data[$sKey]->getId()]=$data[$sKey];
|
||||
*/
|
||||
foreach ($aCacheKeys as $sValue => $sKey ) {
|
||||
if (array_key_exists($sKey,$data)) {
|
||||
if ($data[$sKey]) {
|
||||
$aUsers[$data[$sKey]->getId()]=$data[$sKey];
|
||||
} else {
|
||||
$aUserIdNotNeedQuery[]=$sValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Смотрим каких юзеров не было в кеше и делаем запрос в БД
|
||||
* Смотрим каких топиков не было в кеше и делаем запрос в БД
|
||||
*/
|
||||
$aUserIdNeedQuery=array_diff($aUserId,array_keys($aUsers));
|
||||
$aUserIdNeedQuery=array_diff($aUserId,array_keys($aUsers));
|
||||
$aUserIdNeedQuery=array_diff($aUserIdNeedQuery,$aUserIdNotNeedQuery);
|
||||
$aUserIdNeedStore=$aUserIdNeedQuery;
|
||||
if ($data = $this->oMapper->GetUsersByArrayId($aUserIdNeedQuery)) {
|
||||
foreach ($data as $oUser) {
|
||||
/**
|
||||
|
@ -103,8 +110,15 @@ class LsUser extends Module {
|
|||
*/
|
||||
$aUsers[$oUser->getId()]=$oUser;
|
||||
$this->Cache_Set($oUser, "user_{$oUser->getId()}", array("user_update_{$oUser->getId()}"), 60*60*24*4);
|
||||
$aUserIdNeedStore=array_diff($aUserIdNeedStore,array($oUser->getId()));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Сохраняем в кеш запросы не вернувшие результата
|
||||
*/
|
||||
foreach ($aUserIdNeedStore as $sId) {
|
||||
$this->Cache_Set(null, "user_{$sId}", array("user_update_{$oUser->getId()}"), 60*60*24*4);
|
||||
}
|
||||
return $aUsers;
|
||||
}
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue