本文整理汇总了PHP中func_array_simpleflip函数的典型用法代码示例。如果您正苦于以下问题:PHP func_array_simpleflip函数的具体用法?PHP func_array_simpleflip怎么用?PHP func_array_simpleflip使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了func_array_simpleflip函数的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: InitComponentsList
/**
* Инициализация начального списка необходимых для загрузки компонентов
*/
public function InitComponentsList()
{
if ($aList = Config::Get('components') and is_array($aList)) {
func_array_simpleflip($aList, array());
$this->aComponentsList = array_merge_recursive($this->aComponentsList, $aList);
}
}
示例2: GetBlogsAdditionalData
/**
* Получает дополнительные данные(объекты) для блогов по их ID
*
*/
public function GetBlogsAdditionalData($aBlogId, $aAllowData = array('vote', 'owner' => array(), 'relation_user'))
{
func_array_simpleflip($aAllowData);
if (!is_array($aBlogId)) {
$aBlogId = array($aBlogId);
}
/**
* Получаем блоги
*/
$aBlogs = $this->GetBlogsByArrayId($aBlogId);
/**
* Формируем ID дополнительных данных, которые нужно получить
*/
$aUserId = array();
foreach ($aBlogs as $oBlog) {
if (isset($aAllowData['owner'])) {
$aUserId[] = $oBlog->getOwnerId();
}
}
/**
* Получаем дополнительные данные
*/
$aBlogUsers = array();
$aBlogsVote = array();
$aUsers = isset($aAllowData['owner']) && is_array($aAllowData['owner']) ? $this->User_GetUsersAdditionalData($aUserId, $aAllowData['owner']) : $this->User_GetUsersAdditionalData($aUserId);
if (isset($aAllowData['relation_user']) and $this->oUserCurrent) {
$aBlogUsers = $this->GetBlogUsersByArrayBlog($aBlogId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['vote']) and $this->oUserCurrent) {
$aBlogsVote = $this->Vote_GetVoteByArray($aBlogId, 'blog', $this->oUserCurrent->getId());
}
/**
* Добавляем данные к результату - списку блогов
*/
foreach ($aBlogs as $oBlog) {
if (isset($aUsers[$oBlog->getOwnerId()])) {
$oBlog->setOwner($aUsers[$oBlog->getOwnerId()]);
} else {
$oBlog->setOwner(null);
// или $oBlog->setOwner(new ModuleUser_EntityUser());
}
if (isset($aBlogUsers[$oBlog->getId()])) {
$oBlog->setUserIsJoin(true);
$oBlog->setUserIsAdministrator($aBlogUsers[$oBlog->getId()]->getIsAdministrator());
$oBlog->setUserIsModerator($aBlogUsers[$oBlog->getId()]->getIsModerator());
} else {
$oBlog->setUserIsJoin(false);
$oBlog->setUserIsAdministrator(false);
$oBlog->setUserIsModerator(false);
}
if (isset($aBlogsVote[$oBlog->getId()])) {
$oBlog->setVote($aBlogsVote[$oBlog->getId()]);
} else {
$oBlog->setVote(null);
}
}
return $aBlogs;
}
示例3: GetUsersAdditionalData
/**
* Получает дополнительные данные(объекты) для юзеров по их ID
*
*/
public function GetUsersAdditionalData($aUserId, $aAllowData = array('vote', 'session', 'friend'))
{
func_array_simpleflip($aAllowData);
if (!is_array($aUserId)) {
$aUserId = array($aUserId);
}
/**
* Получаем юзеров
*/
$aUsers = $this->GetUsersByArrayId($aUserId);
/**
* Получаем дополнительные данные
*/
$aSessions = array();
$aFriends = array();
$aVote = array();
if (isset($aAllowData['session'])) {
$aSessions = $this->GetSessionsByArrayId($aUserId);
}
if (isset($aAllowData['friend']) and $this->oUserCurrent) {
$aFriends = $this->GetFriendsByArray($aUserId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['vote']) and $this->oUserCurrent) {
$aVote = $this->Vote_GetVoteByArray($aUserId, 'user', $this->oUserCurrent->getId());
}
/**
* Добавляем данные к результату
*/
foreach ($aUsers as $oUser) {
if (isset($aSessions[$oUser->getId()])) {
$oUser->setSession($aSessions[$oUser->getId()]);
} else {
$oUser->setSession(null);
// или $oUser->setSession(new ModuleUser_EntitySession());
}
if ($aFriends && isset($aFriends[$oUser->getId()])) {
$oUser->setUserFriend($aFriends[$oUser->getId()]);
} else {
$oUser->setUserFriend(null);
}
if (isset($aVote[$oUser->getId()])) {
$oUser->setVote($aVote[$oUser->getId()]);
} else {
$oUser->setVote(null);
}
}
return $aUsers;
}
示例4: GetQuestionAdditionalData
public function GetQuestionAdditionalData($aQuestionId, $aAllowData = null, $aOrder = null)
{
if (is_null($aAllowData)) {
$aAllowData = array('owner' => array());
}
func_array_simpleflip($aAllowData);
if (!is_array($aQuestionId)) {
$aQuestionId = array($aQuestionId);
}
$aQuestion = $this->GetQuestionByArrayId($aQuestionId, $aOrder);
$aCategoryId = array();
foreach ($aQuestion as $oQuestion) {
$aCategoryId[] = $oQuestion->getCategoryId();
}
$aCategories = $this->PluginReceptiondesk_Category_GetCategoryAdditionalData($aCategoryId);
foreach ($aQuestion as $oQuestion) {
if (isset($aCategories[$oQuestion->getCategoryId()])) {
$oQuestion->setCategory($aCategories[$oQuestion->getCategoryId()]);
} else {
$oQuestion->setCategory(null);
}
}
return $aQuestion;
}
示例5: GetItemsByFilter
/**
* Получить список сущностей по фильтру
*
* @param array $aFilter Фильтр
* @param string|null $sEntityFull Название класса сущности
* @return array
*/
public function GetItemsByFilter($aFilter = array(), $sEntityFull = null)
{
if (is_null($aFilter)) {
$aFilter = array();
}
$sEntityFull = $this->_NormalizeEntityRootName($sEntityFull);
$aFilter = $this->_applyScopes($sEntityFull, $aFilter);
/**
* Хук для возможности изменения фильтра
*/
$this->RunBehaviorHook('module_orm_GetItemsByFilter_before', array('aFilter' => &$aFilter, 'sEntityFull' => $sEntityFull), true);
// Если параметр #cache указан и пуст, значит игнорируем кэширование для запроса
if (array_key_exists('#cache', $aFilter) && !$aFilter['#cache']) {
$aEntities = $this->oMapperORM->GetItemsByFilter($aFilter, $sEntityFull);
} else {
$aFilterCache = $aFilter;
unset($aFilterCache['#with']);
$sCacheKey = $sEntityFull . '_items_by_filter_' . serialize($aFilterCache);
$aCacheTags = array($sEntityFull . '_save', $sEntityFull . '_delete');
$iCacheTime = 60 * 60 * 24;
// скорее лучше хранить в свойстве сущности, для возможности выборочного переопределения
// переопределяем из параметров
if (isset($aFilter['#cache'][0])) {
$sCacheKey = $aFilter['#cache'][0];
}
if (isset($aFilter['#cache'][1])) {
$aCacheTags = $aFilter['#cache'][1];
}
if (isset($aFilter['#cache'][2])) {
$iCacheTime = $aFilter['#cache'][2];
}
if (false === ($aEntities = $this->Cache_Get($sCacheKey))) {
$aEntities = $this->oMapperORM->GetItemsByFilter($aFilter, $sEntityFull);
$this->Cache_Set($aEntities, $sCacheKey, $aCacheTags, $iCacheTime);
}
}
/**
* Если необходимо подцепить связанные данные
*/
if (count($aEntities) and isset($aFilter['#with'])) {
if (!is_array($aFilter['#with'])) {
$aFilter['#with'] = array($aFilter['#with']);
}
/**
* Приводим значение к единой форме ассоциативного массива: array('user'=>array(), 'topic'=>array('blog_id'=>123) )
*/
func_array_simpleflip($aFilter['#with'], array());
/**
* Формируем список примари ключей
*/
$aEntityPrimaryKeys = array();
foreach ($aEntities as $oEntity) {
$aEntityPrimaryKeys[] = $oEntity->_getPrimaryKeyValue();
}
$oEntityEmpty = Engine::GetEntity($sEntityFull);
$aRelations = $oEntityEmpty->_getRelations();
foreach ($aFilter['#with'] as $sRelationName => $aRelationFilter) {
if (!isset($aRelations[$sRelationName])) {
continue;
}
/**
* Если нужна дополнительная обработка через коллбек
* Параметр в обработчике должен приниматься по ссылке
*/
if (isset($aRelationFilter['#callback-filter']) and $aRelationFilter['#callback-filter'] instanceof Closure) {
$callback = $aRelationFilter['#callback-filter'];
$callback($aEntities, $aRelationFilter);
}
/**
* Если необходимо, то выставляем сразу нужное значение и не делаем никаких запросов
*/
if (isset($aRelationFilter['#value-set'])) {
foreach ($aEntities as $oEntity) {
$oEntity->_setData(array($sRelationName => $aRelationFilter['#value-set']));
}
continue;
}
/**
* Чистим фильтр от коллбека, иначе он может пройти дальше по цепочке вызовов
*/
unset($aRelationFilter['#callback-filter']);
$sRelType = $aRelations[$sRelationName]['type'];
$sRelEntity = $this->Plugin_GetRootDelegater('entity', $aRelations[$sRelationName]['rel_entity']);
// получаем корневую сущность, без учета наследников
$sRelKey = $aRelations[$sRelationName]['rel_key'];
if (!array_key_exists($sRelationName, $aRelations) or !in_array($sRelType, array(EntityORM::RELATION_TYPE_BELONGS_TO, EntityORM::RELATION_TYPE_HAS_ONE, EntityORM::RELATION_TYPE_HAS_MANY, EntityORM::RELATION_TYPE_MANY_TO_MANY))) {
throw new Exception("The entity <{$sEntityFull}> not have relation <{$sRelationName}>");
}
/**
* Делаем общий запрос по всем ключам
*/
$oRelEntityEmpty = Engine::GetEntity($sRelEntity);
$sRelModuleName = Engine::GetModuleName($sRelEntity);
//.........这里部分代码省略.........
示例6: GetTopicsAdditionalData
/**
* Получает дополнительные данные(объекты) для топиков по их ID
*
* @param array $aTopicId Список ID топиков
* @param array|null $aAllowData Список типов дополнительных данных, которые нужно подключать к топикам
* @return array
*/
public function GetTopicsAdditionalData($aTopicId, $aAllowData = null)
{
if (is_null($aAllowData)) {
$aAllowData = array('user' => array(), 'blog' => array('owner' => array(), 'relation_user'), 'vote', 'favourite', 'comment_new', 'properties');
}
func_array_simpleflip($aAllowData);
if (!is_array($aTopicId)) {
$aTopicId = array($aTopicId);
}
/**
* Получаем "голые" топики
*/
$aTopics = $this->GetTopicsByArrayId($aTopicId);
/**
* Формируем ID дополнительных данных, которые нужно получить
*/
$aUserId = array();
$aBlogId = array();
foreach ($aTopics as $oTopic) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oTopic->getUserId();
}
if (isset($aAllowData['blog'])) {
$aBlogId = array_merge($aBlogId, $oTopic->getBlogIds());
}
}
/**
* Получаем дополнительные данные
*/
$aTopicsVote = array();
$aFavouriteTopics = array();
$aTopicsRead = array();
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? $this->User_GetUsersAdditionalData($aUserId, $aAllowData['user']) : $this->User_GetUsersAdditionalData($aUserId);
$aBlogs = isset($aAllowData['blog']) && is_array($aAllowData['blog']) ? $this->Blog_GetBlogsAdditionalData($aBlogId, $aAllowData['blog']) : $this->Blog_GetBlogsAdditionalData($aBlogId);
if (isset($aAllowData['vote']) and $this->oUserCurrent) {
$aTopicsVote = $this->Vote_GetVoteByArray($aTopicId, 'topic', $this->oUserCurrent->getId());
}
if (isset($aAllowData['favourite']) and $this->oUserCurrent) {
$aFavouriteTopics = $this->GetFavouriteTopicsByArray($aTopicId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['comment_new']) and $this->oUserCurrent) {
$aTopicsRead = $this->GetTopicsReadByArray($aTopicId, $this->oUserCurrent->getId());
}
/**
* Добавляем данные к результату - списку топиков
*/
foreach ($aTopics as $oTopic) {
if (isset($aUsers[$oTopic->getUserId()])) {
$oTopic->setUser($aUsers[$oTopic->getUserId()]);
} else {
$oTopic->setUser(null);
// или $oTopic->setUser(new ModuleUser_EntityUser());
}
$aBlogsTopic = array();
foreach ($oTopic->getBlogIds() as $iBlogId) {
if (isset($aBlogs[$iBlogId])) {
$aBlogsTopic[] = $aBlogs[$iBlogId];
}
}
$oTopic->setBlogs($aBlogsTopic);
if (isset($aTopicsVote[$oTopic->getId()])) {
$oTopic->setVote($aTopicsVote[$oTopic->getId()]);
} else {
$oTopic->setVote(null);
}
if (isset($aFavouriteTopics[$oTopic->getId()])) {
$oTopic->setFavourite($aFavouriteTopics[$oTopic->getId()]);
} else {
$oTopic->setFavourite(null);
}
if (isset($aTopicsRead[$oTopic->getId()])) {
$oTopic->setCountCommentNew($oTopic->getCountComment() - $aTopicsRead[$oTopic->getId()]->getCommentCountLast());
$oTopic->setDateRead($aTopicsRead[$oTopic->getId()]->getDateRead());
} else {
$oTopic->setCountCommentNew(0);
$oTopic->setDateRead(date("Y-m-d H:i:s"));
}
}
/**
* Цепляем дополнительные поля
*/
if (isset($aAllowData['properties'])) {
$this->Property_RewriteGetItemsByFilter($aTopics, array('#properties' => true));
}
return $aTopics;
}
示例7: GetTopicsAdditionalData
/**
* Получает дополнительные данные(объекты) для топиков по их ID
*
* @param array $aTopicId Список ID топиков
* @param array|null $aAllowData Список типов дополнительных данных, которые нужно подключать к топикам
* @return array
*/
public function GetTopicsAdditionalData($aTopicId, $aAllowData = null)
{
if (is_null($aAllowData)) {
$aAllowData = array('user' => array(), 'blog' => array('owner' => array(), 'relation_user'), 'vote', 'favourite', 'comment_new');
}
func_array_simpleflip($aAllowData);
if (!is_array($aTopicId)) {
$aTopicId = array($aTopicId);
}
/**
* Получаем "голые" топики
*/
$aTopics = $this->GetTopicsByArrayId($aTopicId);
/**
* Формируем ID дополнительных данных, которые нужно получить
*/
$aUserId = array();
$aBlogId = array();
$aTopicIdQuestion = array();
$aPhotoMainId = array();
foreach ($aTopics as $oTopic) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oTopic->getUserId();
}
if (isset($aAllowData['blog'])) {
$aBlogId[] = $oTopic->getBlogId();
}
if ($oTopic->getType() == 'question') {
$aTopicIdQuestion[] = $oTopic->getId();
}
if ($oTopic->getType() == 'photoset' and $oTopic->getPhotosetMainPhotoId()) {
$aPhotoMainId[] = $oTopic->getPhotosetMainPhotoId();
}
}
/**
* Получаем дополнительные данные
*/
$aTopicsVote = array();
$aFavouriteTopics = array();
$aTopicsQuestionVote = array();
$aTopicsRead = array();
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? $this->User_GetUsersAdditionalData($aUserId, $aAllowData['user']) : $this->User_GetUsersAdditionalData($aUserId);
$aBlogs = isset($aAllowData['blog']) && is_array($aAllowData['blog']) ? $this->Blog_GetBlogsAdditionalData($aBlogId, $aAllowData['blog']) : $this->Blog_GetBlogsAdditionalData($aBlogId);
if (isset($aAllowData['vote']) and $this->oUserCurrent) {
$aTopicsVote = $this->Vote_GetVoteByArray($aTopicId, 'topic', $this->oUserCurrent->getId());
$aTopicsQuestionVote = $this->GetTopicsQuestionVoteByArray($aTopicIdQuestion, $this->oUserCurrent->getId());
}
if (isset($aAllowData['favourite']) and $this->oUserCurrent) {
$aFavouriteTopics = $this->GetFavouriteTopicsByArray($aTopicId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['comment_new']) and $this->oUserCurrent) {
$aTopicsRead = $this->GetTopicsReadByArray($aTopicId, $this->oUserCurrent->getId());
}
$aPhotosetMainPhotos = $this->GetTopicPhotosByArrayId($aPhotoMainId);
/**
* Добавляем данные к результату - списку топиков
*/
foreach ($aTopics as $oTopic) {
if (isset($aUsers[$oTopic->getUserId()])) {
$oTopic->setUser($aUsers[$oTopic->getUserId()]);
} else {
$oTopic->setUser(null);
// или $oTopic->setUser(new ModuleUser_EntityUser());
}
if (isset($aBlogs[$oTopic->getBlogId()])) {
$oTopic->setBlog($aBlogs[$oTopic->getBlogId()]);
} else {
$oTopic->setBlog(null);
// или $oTopic->setBlog(new ModuleBlog_EntityBlog());
}
if (isset($aTopicsVote[$oTopic->getId()])) {
$oTopic->setVote($aTopicsVote[$oTopic->getId()]);
} else {
$oTopic->setVote(null);
}
if (isset($aFavouriteTopics[$oTopic->getId()])) {
$oTopic->setFavourite($aFavouriteTopics[$oTopic->getId()]);
} else {
$oTopic->setFavourite(null);
}
if (isset($aTopicsQuestionVote[$oTopic->getId()])) {
$oTopic->setUserQuestionIsVote(true);
} else {
$oTopic->setUserQuestionIsVote(false);
}
if (isset($aTopicsRead[$oTopic->getId()])) {
$oTopic->setCountCommentNew($oTopic->getCountComment() - $aTopicsRead[$oTopic->getId()]->getCommentCountLast());
$oTopic->setDateRead($aTopicsRead[$oTopic->getId()]->getDateRead());
} else {
$oTopic->setCountCommentNew(0);
$oTopic->setDateRead(date("Y-m-d H:i:s"));
}
if (isset($aPhotosetMainPhotos[$oTopic->getPhotosetMainPhotoId()])) {
//.........这里部分代码省略.........
示例8: GetCommentsAdditionalData
/**
* Получает дополнительные данные(объекты) для комментов по их ID
*
* @param array $aCommentId Список ID комментов
* @param array|null $aAllowData Список типов дополнительных данных, которые нужно получить для комментариев
* @return array
*/
public function GetCommentsAdditionalData($aCommentId, $aAllowData = null)
{
if (is_null($aAllowData)) {
$aAllowData = array('vote', 'target', 'favourite', 'user' => array());
}
func_array_simpleflip($aAllowData);
if (!is_array($aCommentId)) {
$aCommentId = array($aCommentId);
}
/**
* Получаем комменты
*/
$aComments = $this->GetCommentsByArrayId($aCommentId);
/**
* Формируем ID дополнительных данных, которые нужно получить
*/
$aUserId = array();
$aTargetId = array('topic' => array(), 'talk' => array());
foreach ($aComments as $oComment) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oComment->getUserId();
}
if (isset($aAllowData['target'])) {
$aTargetId[$oComment->getTargetType()][] = $oComment->getTargetId();
}
}
/**
* Получаем дополнительные данные
*/
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? $this->User_GetUsersAdditionalData($aUserId, $aAllowData['user']) : $this->User_GetUsersAdditionalData($aUserId);
/**
* В зависимости от типа target_type достаем данные
*/
$aTargets = array();
//$aTargets['topic']=isset($aAllowData['target']) && is_array($aAllowData['target']) ? $this->Topic_GetTopicsAdditionalData($aTargetId['topic'],$aAllowData['target']) : $this->Topic_GetTopicsAdditionalData($aTargetId['topic']);
$aTargets['topic'] = $this->Topic_GetTopicsAdditionalData($aTargetId['topic'], array('blog' => array('owner' => array()), 'user' => array()));
$aVote = array();
if (isset($aAllowData['vote']) and $this->oUserCurrent) {
$aVote = $this->Vote_GetVoteByArray($aCommentId, 'comment', $this->oUserCurrent->getId());
}
if (isset($aAllowData['favourite']) and $this->oUserCurrent) {
$aFavouriteComments = $this->Favourite_GetFavouritesByArray($aCommentId, 'comment', $this->oUserCurrent->getId());
}
/**
* Добавляем данные к результату
*/
foreach ($aComments as $oComment) {
if (isset($aUsers[$oComment->getUserId()])) {
$oComment->setUser($aUsers[$oComment->getUserId()]);
} else {
$oComment->setUser(null);
// или $oComment->setUser(new ModuleUser_EntityUser());
}
if (isset($aTargets[$oComment->getTargetType()][$oComment->getTargetId()])) {
$oComment->setTarget($aTargets[$oComment->getTargetType()][$oComment->getTargetId()]);
} else {
$oComment->setTarget(null);
}
if (isset($aVote[$oComment->getId()])) {
$oComment->setVote($aVote[$oComment->getId()]);
} else {
$oComment->setVote(null);
}
if (isset($aFavouriteComments[$oComment->getId()])) {
$oComment->setIsFavourite(true);
} else {
$oComment->setIsFavourite(false);
}
}
return $aComments;
}
示例9: GetTalksAdditionalData
/**
* Получает дополнительные данные(объекты) для разговоров по их ID
*
* @param array $aTalkId Список ID сообщений
* @param array|null $aAllowData Список дополнительных типов подгружаемых в объект
* @return array
*/
public function GetTalksAdditionalData($aTalkId, $aAllowData = null)
{
if (is_null($aAllowData)) {
$aAllowData = array('user', 'talk_user', 'favourite', 'comment_last');
}
func_array_simpleflip($aAllowData);
if (!is_array($aTalkId)) {
$aTalkId = array($aTalkId);
}
/**
* Получаем "голые" разговоры
*/
$aTalks = $this->GetTalksByArrayId($aTalkId);
/**
* Формируем ID дополнительных данных, которые нужно получить
*/
if (isset($aAllowData['favourite']) and $this->oUserCurrent) {
$aFavouriteTalks = $this->Favourite_GetFavouritesByArray($aTalkId, 'talk', $this->oUserCurrent->getId());
}
$aUserId = array();
$aCommentLastId = array();
foreach ($aTalks as $oTalk) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oTalk->getUserId();
}
if (isset($aAllowData['comment_last']) and $oTalk->getCommentIdLast()) {
$aCommentLastId[] = $oTalk->getCommentIdLast();
}
}
/**
* Получаем дополнительные данные
*/
$aTalkUsers = array();
$aCommentLast = array();
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? $this->User_GetUsersAdditionalData($aUserId, $aAllowData['user']) : $this->User_GetUsersAdditionalData($aUserId);
if (isset($aAllowData['talk_user']) and $this->oUserCurrent) {
$aTalkUsers = $this->GetTalkUsersByArray($aTalkId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['comment_last'])) {
$aCommentLast = $this->Comment_GetCommentsAdditionalData($aCommentLastId, array());
}
/**
* Добавляем данные к результату - списку разговоров
*/
foreach ($aTalks as $oTalk) {
if (isset($aUsers[$oTalk->getUserId()])) {
$oTalk->setUser($aUsers[$oTalk->getUserId()]);
} else {
$oTalk->setUser(null);
// или $oTalk->setUser(new ModuleUser_EntityUser());
}
if (isset($aTalkUsers[$oTalk->getId()])) {
$oTalk->setTalkUser($aTalkUsers[$oTalk->getId()]);
} else {
$oTalk->setTalkUser(null);
}
if (isset($aFavouriteTalks[$oTalk->getId()])) {
$oTalk->setIsFavourite(true);
} else {
$oTalk->setIsFavourite(false);
}
if ($oTalk->getCommentIdLast() and isset($aCommentLast[$oTalk->getCommentIdLast()])) {
$oTalk->setCommentLast($aCommentLast[$oTalk->getCommentIdLast()]);
} else {
$oTalk->setCommentLast(null);
}
}
return $aTalks;
}
示例10: GetWallAdditionalData
/**
* Получение записей по ID с дополнительные связаными данными
*
* @param $aWallId
* @param array $aAllowData
*
* @return array
*/
public function GetWallAdditionalData($aWallId, $aAllowData = array('user' => array(), 'reply'))
{
func_array_simpleflip($aAllowData);
if (!is_array($aWallId)) {
$aWallId = array($aWallId);
}
$aWalls = $this->GetWallsByArrayId($aWallId);
/**
* Формируем ID дополнительных данных, которые нужно получить
*/
$aUserId = array();
$aWallReplyId = array();
foreach ($aWalls as $oWall) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oWall->getUserId();
}
/**
* Список последних записей хранится в строке через запятую
*/
if (isset($aAllowData['reply']) and is_null($oWall->getPid()) and $oWall->getLastReply()) {
$aReply = explode(',', trim($oWall->getLastReply()));
$aWallReplyId = array_merge($aWallReplyId, $aReply);
}
}
/**
* Получаем дополнительные данные
*/
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? $this->User_GetUsersAdditionalData($aUserId, $aAllowData['user']) : $this->User_GetUsersAdditionalData($aUserId);
$aWallReply = array();
if (isset($aAllowData['reply']) and count($aWallReplyId)) {
$aWallReply = $this->GetWallAdditionalData($aWallReplyId, array('user' => array()));
}
/**
* Добавляем данные к результату
*/
foreach ($aWalls as $oWall) {
if (isset($aUsers[$oWall->getUserId()])) {
$oWall->setUser($aUsers[$oWall->getUserId()]);
} else {
$oWall->setUser(null);
// или $oWall->setUser(new ModuleUser_EntityUser());
}
$aReply = array();
if ($oWall->getLastReply()) {
$aReplyId = explode(',', trim($oWall->getLastReply()));
foreach ($aReplyId as $iReplyId) {
if (isset($aWallReply[$iReplyId])) {
$aReply[] = $aWallReply[$iReplyId];
}
}
}
$oWall->setLastReplyWall($aReply);
}
return $aWalls;
}
示例11: GetPostsAdditionalData
/**
* Получает дополнительные данные(объекты) для постов
*
* @param array $aPosts Список топиков
* @param array|null $aAllowData Список дополнительных данных, которые нужно подключать к топикам
* @return array
*/
public function GetPostsAdditionalData($aPosts, $aAllowData = null)
{
if (is_null($aAllowData)) {
$aAllowData = array('vote');
}
if (is_string($aAllowData)) {
$aAllowData = explode(',', $aAllowData);
}
func_array_simpleflip($aAllowData);
$sOne = false;
if (!is_array($aPosts)) {
$sOne = $aPosts->getId();
$aPosts = array($sOne => $aPosts);
}
$aPostId = array();
$aUsersId = array();
/**
* Формируем ID дополнительных данных, которые нужно получить
*/
foreach ($aPosts as $oPost) {
$aPostId[] = $oPost->getId();
$aUsersId[$oPost->getUserId()] = 1;
}
/**
* Получаем дополнительные данные
*/
$aVote = array();
$aUsers = array();
if (isset($aAllowData['vote']) && $this->oUserCurrent) {
$aVote = $this->Vote_GetVoteByArray($aPostId, 'forum_post', $this->oUserCurrent->getId());
}
if ($aUsersId) {
//добавь кеш
$aUsers = $this->GetUserItemsByArrayUserId(array_keys($aUsersId));
}
/**
* Добавляем данные к результату - списку топиков
*/
foreach ($aPosts as $oPost) {
if (isset($aVote[$oPost->getId()])) {
$oPost->setVote($aVote[$oPost->getId()]);
} else {
$oPost->setVote(null);
}
if (isset($aUsers[$oPost->getUserId()])) {
$oPost->setUserForum($aUsers[$oPost->getUserId()]);
} else {
$oPost->setUserForum(null);
}
}
return $sOne ? $aPosts[$sOne] : $aPosts;
}
示例12: GetImagesAdditionalData
/**
* Get images additional data
*
* @param array $aImagesId
* @param array $aAllowData
* @return array
*/
public function GetImagesAdditionalData($aImagesId, $aAllowData = array('user' => array(), 'vote', 'favourite', 'comment_new'))
{
func_array_simpleflip($aAllowData);
if (!is_array($aImagesId)) {
$aImagesId = array($aImagesId);
}
$aImages = $this->GetImagesByArrayId($aImagesId);
$aUserId = array();
foreach ($aImages as $oImage) {
/* @var $oImage PluginLsgallery_ModuleImage_EntityImage */
if (isset($aAllowData['user'])) {
$aUserId[] = $oImage->getUserId();
}
}
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? $this->User_GetUsersAdditionalData($aUserId, $aAllowData['user']) : $this->User_GetUsersAdditionalData($aUserId);
if (isset($aAllowData['favourite']) && $this->oUserCurrent) {
$aFavouriteImages = $this->GetFavouriteImagesByArray($aImagesId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['comment_new']) && $this->oUserCurrent) {
$aImagesRead = $this->GetImagesReadByArray($aImagesId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['vote']) && $this->oUserCurrent) {
$aImagesVote = $this->Vote_GetVoteByArray($aImagesId, 'image', $this->oUserCurrent->getId());
}
foreach ($aImages as $oImage) {
if (isset($aUsers[$oImage->getUserId()])) {
$oImage->setUser($aUsers[$oImage->getUserId()]);
} else {
$oImage->setUser(null);
}
if (isset($aFavouriteImages[$oImage->getId()])) {
$oImage->setIsFavourite(true);
} else {
$oImage->setIsFavourite(false);
}
if (isset($aImagesRead[$oImage->getId()])) {
$oImage->setCountCommentNew($oImage->getCountComment() - $aImagesRead[$oImage->getId()]->getCommentCountLast());
$oImage->setDateRead($aImagesRead[$oImage->getId()]->getDateRead());
} else {
$oImage->setCountCommentNew(0);
$oImage->setDateRead(date("Y-m-d H:i:s"));
}
if (isset($aImagesVote[$oImage->getId()])) {
$oImage->setVote($aImagesVote[$oImage->getId()]);
} else {
$oImage->setVote(null);
}
}
return $aImages;
}
示例13: GetAlbumsAdditionalData
/**
* Get albums additional data
*
* @todo Подтягивание картинок
* @param array $aAlbumsId
* @param array $aAllowData
* @return array
*/
public function GetAlbumsAdditionalData($aAlbumsId, $aAllowData = array('user' => array(), 'cover' => array()))
{
func_array_simpleflip($aAllowData);
if (!is_array($aAlbumsId)) {
$aAlbumsId = array($aAlbumsId);
}
$aAlbums = $this->GetAlbumsByArrayId($aAlbumsId);
$aUserId = array();
$aImageId = array();
foreach ($aAlbums as $oAlbum) {
/* @var $oAlbum PluginLsgallery_ModuleAlbum_EntityAlbum */
if (isset($aAllowData['user'])) {
$aUserId[] = $oAlbum->getUserId();
}
if (isset($aAllowData['cover'])) {
$aImageId[] = $oAlbum->getCoverId();
}
}
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? $this->User_GetUsersAdditionalData($aUserId, $aAllowData['user']) : $this->User_GetUsersAdditionalData($aUserId);
$aImages = isset($aAllowData['cover']) && is_array($aAllowData['cover']) ? $this->PluginLsgallery_Image_GetImagesAdditionalData($aImageId, $aAllowData['cover']) : $this->PluginLsgallery_Image_GetImagesAdditionalData($aUserId);
foreach ($aAlbums as $oAlbum) {
if (isset($aUsers[$oAlbum->getUserId()])) {
$oAlbum->setUser($aUsers[$oAlbum->getUserId()]);
} else {
$oAlbum->setUser(null);
}
if (isset($aImages[$oAlbum->getCoverId()])) {
$oAlbum->setCover($aImages[$oAlbum->getCoverId()]);
} else {
$oAlbum->setCover(null);
}
}
return $aAlbums;
}