本文整理汇总了PHP中F::Array_FlipIntKeys方法的典型用法代码示例。如果您正苦于以下问题:PHP F::Array_FlipIntKeys方法的具体用法?PHP F::Array_FlipIntKeys怎么用?PHP F::Array_FlipIntKeys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类F
的用法示例。
在下文中一共展示了F::Array_FlipIntKeys方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: GetTopicsIdByRegexp
/**
* Поиск текста по топикам
*
* @param string $sRegExp
* @param int $iCount
* @param int $iCurrPage
* @param int $iPerPage
* @param array $aParams
*
* @return array
*/
public function GetTopicsIdByRegexp($sRegExp, &$iCount, $iCurrPage, $iPerPage, $aParams)
{
$aData = $this->PrepareRegExp($sRegExp);
$aWeight = array();
// Обработка возможного фильтра. Пока параметр один - это разрешённые блоги для пользователя
// но на будущее условия разделены
if (isset($aParams['aFilter']) && is_array($aParams['aFilter']) && !empty($aParams['aFilter'])) {
// Если определён список типов/ид. разрешённых блогов
if (isset($aParams['aFilter']['blog_type']) && is_array($aParams['aFilter']['blog_type']) && !empty($aParams['aFilter']['blog_type'])) {
$sWhere = '';
$aBlogTypes = array();
$aOrClauses = array();
$aParams['aFilter']['blog_type'] = F::Array_FlipIntKeys($aParams['aFilter']['blog_type'], 0);
foreach ($aParams['aFilter']['blog_type'] as $sType => $aBlogsId) {
if ($aBlogsId) {
if ($sType == '*') {
$aOrClauses[] = "(t.blog_id IN ('" . join("','", $aBlogsId) . "'))";
} else {
$aOrClauses[] = "b.blog_type='" . $sType . "' AND t.blog_id IN ('" . join("','", $aBlogsId) . "')";
}
} else {
$aBlogTypes[] = "'" . $sType . "'";
}
}
if ($aBlogTypes) {
$aOrClauses[] = '(b.blog_type IN (' . join(',', $aBlogTypes) . '))';
}
if ($aOrClauses) {
$sWhere .= ' AND (' . join(' OR ', $aOrClauses) . ')';
}
}
}
$aWeight[] = "(LOWER(t.topic_title) REGEXP " . $this->oDb->escape($aData['regexp']['phrase']) . ")*" . $aData['rates']['phrase'] * $aData['rates']['title'];
$aWeight[] = "(LOWER(tc.topic_text_source) REGEXP " . $this->oDb->escape($aData['regexp']['phrase']) . ")*" . $aData['rates']['phrase'];
foreach ($aData['words'] as $sWord) {
$aWeight[] = "(LOWER(t.topic_title) REGEXP " . $this->oDb->escape($sWord) . ")*" . $aData['rates']['words'] * $aData['rates']['title'];
$aWeight[] = "(LOWER(tc.topic_text_source) REGEXP " . $this->oDb->escape($sWord) . ")*" . $aData['rates']['words'];
}
$sWeight = implode('+', $aWeight);
$aResult = array();
$sql = "\n SELECT t.topic_id,\n {$sWeight} AS weight\n FROM ?_topic AS t\n INNER JOIN ?_topic_content AS tc ON tc.topic_id=t.topic_id\n " . (C::Get('module.search.accessible') ? 'INNER JOIN ?_blog AS b ON b.blog_id=t.blog_id' : '') . "\n WHERE \n (topic_publish=1)\n " . $sWhere . "\n AND topic_index_ignore=0\n AND (\n (LOWER(t.topic_title) REGEXP ?)\n OR (LOWER(tc.topic_text_source) REGEXP ?)\n )\n ORDER BY\n weight DESC,\n t.topic_id ASC\n LIMIT ?d, ?d\n ";
$aRows = $this->oDb->selectPage($iCount, $sql, $aData['regexp']['words'], $aData['regexp']['words'], ($iCurrPage - 1) * $iPerPage, $iPerPage);
if ($aRows) {
foreach ($aRows as $aRow) {
$aResult[] = $aRow['topic_id'];
}
}
return $aResult;
}
示例2: GetTopicsAdditionalData
/**
* Получает дополнительные данные(объекты) для топиков по их ID
*
* @param array|int $aTopicId Список ID топиков
* @param array|null $aAllowData Список типов дополнительных данных, которые нужно подключать к топикам
*
* @return ModuleTopic_EntityTopic[]
*/
public function GetTopicsAdditionalData($aTopicId, $aAllowData = null)
{
if (!is_array($aTopicId)) {
$aTopicId = array($aTopicId);
}
// * Получаем "голые" топики
$aTopics = $this->GetTopicsByArrayId($aTopicId);
if (!$aTopics) {
return array();
}
if (is_null($aAllowData)) {
$aAllowData = $this->aAdditionalData;
}
$aAllowData = F::Array_FlipIntKeys($aAllowData);
// * Формируем ID дополнительных данных, которые нужно получить
$aUserId = array();
$aBlogId = array();
$aTopicId = array();
$aPhotoMainId = array();
/** @var ModuleTopic_EntityTopic $oTopic */
foreach ($aTopics as $oTopic) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oTopic->getUserId();
}
if (isset($aAllowData['blog'])) {
$aBlogId[] = $oTopic->getBlogId();
}
$aTopicId[] = $oTopic->getId();
if ($oTopic->getPhotosetMainPhotoId()) {
$aPhotoMainId[] = $oTopic->getPhotosetMainPhotoId();
}
}
if ($aUserId) {
$aUserId = array_unique($aUserId);
}
if ($aBlogId) {
$aBlogId = array_unique($aBlogId);
}
/**
* Получаем дополнительные данные
*/
$aTopicsVote = array();
$aFavouriteTopics = array();
$aTopicsQuestionVote = array();
$aTopicsRead = array();
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? E::ModuleUser()->GetUsersAdditionalData($aUserId, $aAllowData['user']) : E::ModuleUser()->GetUsersAdditionalData($aUserId);
$aBlogs = isset($aAllowData['blog']) && is_array($aAllowData['blog']) ? E::ModuleBlog()->GetBlogsAdditionalData($aBlogId, $aAllowData['blog']) : E::ModuleBlog()->GetBlogsAdditionalData($aBlogId);
if (isset($aAllowData['vote']) && $this->oUserCurrent) {
$aTopicsVote = E::ModuleVote()->GetVoteByArray($aTopicId, 'topic', $this->oUserCurrent->getId());
$aTopicsQuestionVote = $this->GetTopicsQuestionVoteByArray($aTopicId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['favourite']) && $this->oUserCurrent) {
$aFavouriteTopics = $this->GetFavouriteTopicsByArray($aTopicId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['fields'])) {
$aTopicFieldValues = $this->GetTopicValuesByArrayId($aTopicId);
}
if (isset($aAllowData['comment_new']) && $this->oUserCurrent) {
$aTopicsRead = $this->GetTopicsReadByArray($aTopicId, $this->oUserCurrent->getId());
}
$aPhotosetMainPhotos = $this->GetTopicPhotosByArrayId($aPhotoMainId);
// * Добавляем данные к результату - списку топиков
/** @var ModuleTopic_EntityTopic $oTopic */
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($aTopicFieldValues[$oTopic->getId()])) {
//.........这里部分代码省略.........
示例3: GetUsersAdditionalData
/**
* Получает дополнительные данные(объекты) для юзеров по их ID
*
* @param array|int $aUsersId - Список ID пользователей
* @param array $aAllowData - Список типоd дополнительных данных для подгрузки у пользователей
*
* @return ModuleUser_EntityUser[]
*/
public function GetUsersAdditionalData($aUsersId, $aAllowData = null)
{
if (!$aUsersId) {
return array();
}
if (!is_array($aUsersId)) {
$aUsersId = array($aUsersId);
} else {
$aUsersId = array_unique($aUsersId);
}
if (sizeof($aUsersId) == 1) {
$iUserId = reset($aUsersId);
if ($this->oUserCurrent && $this->oUserCurrent->getId() == $iUserId) {
return array($iUserId => $this->oUserCurrent);
}
}
if (is_null($aAllowData)) {
$aAllowData = $this->aAdditionalData;
}
$aAllowData = F::Array_FlipIntKeys($aAllowData);
// * Получаем юзеров
$aUsers = $this->GetUsersByArrayId($aUsersId);
// * Получаем дополнительные данные
$aSessions = array();
$aFriends = array();
$aVote = array();
$aGeoTargets = array();
$aNotes = array();
if (isset($aAllowData['session'])) {
$aSessions = $this->GetSessionsByArrayId($aUsersId);
}
if (isset($aAllowData['friend']) && $this->oUserCurrent) {
$aFriends = $this->GetFriendsByArray($aUsersId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['vote']) && $this->oUserCurrent) {
$aVote = E::ModuleVote()->GetVoteByArray($aUsersId, 'user', $this->oUserCurrent->getId());
}
if (isset($aAllowData['geo_target'])) {
$aGeoTargets = E::ModuleGeo()->GetTargetsByTargetArray('user', $aUsersId);
}
if (isset($aAllowData['note']) && $this->oUserCurrent) {
$aNotes = $this->GetUserNotesByArray($aUsersId, $this->oUserCurrent->getId());
}
$aAvatars = E::ModuleUploader()->GetMediaObjects('profile_avatar', $aUsersId, null, array('target_id'));
// * Добавляем данные к результату
/** @var ModuleUser_EntityUser $oUser */
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);
}
if (isset($aGeoTargets[$oUser->getId()])) {
$aTargets = $aGeoTargets[$oUser->getId()];
$oUser->setGeoTarget(isset($aTargets[0]) ? $aTargets[0] : null);
} else {
$oUser->setGeoTarget(null);
}
if (isset($aAllowData['note'])) {
if (isset($aNotes[$oUser->getId()])) {
$oUser->setUserNote($aNotes[$oUser->getId()]);
} else {
$oUser->setUserNote(false);
}
}
if (isset($aAvatars[$oUser->getId()])) {
$oUser->setMediaResources('profile_avatar', $aAvatars[$oUser->getId()]);
} else {
$oUser->setMediaResources('profile_avatar', array());
}
}
return $aUsers;
}
示例4: GetTalksAdditionalData
/**
* Получает дополнительные данные(объекты) для разговоров по их ID
*
* @param array $aTalkId Список ID сообщений
* @param array|null $aAllowData Список дополнительных типов подгружаемых в объект
*
* @return array
*/
public function GetTalksAdditionalData($aTalkId, $aAllowData = null)
{
if (!$aTalkId) {
return array();
}
if (is_null($aAllowData)) {
$aAllowData = $this->aAdditionalData;
}
$aAllowData = F::Array_FlipIntKeys($aAllowData);
if (!is_array($aTalkId)) {
$aTalkId = array($aTalkId);
}
// * Получаем "голые" разговоры
$aTalks = $this->GetTalksByArrayId($aTalkId);
// * Формируем ID дополнительных данных, которые нужно получить
if (isset($aAllowData['favourite']) && $this->oUserCurrent) {
$aFavouriteTalks = E::ModuleFavourite()->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']) && $oTalk->getCommentIdLast()) {
$aCommentLastId[] = $oTalk->getCommentIdLast();
}
}
// * Получаем дополнительные данные
$aTalkUsers = array();
$aCommentLast = array();
if (isset($aAllowData['user']) && is_array($aAllowData['user'])) {
$aUsers = E::ModuleUser()->GetUsersAdditionalData($aUserId, $aAllowData['user']);
} else {
$aUsers = E::ModuleUser()->GetUsersAdditionalData($aUserId);
}
if (isset($aAllowData['talk_user']) && $this->oUserCurrent) {
$aTalkUsers = $this->GetTalkUsersByArray($aTalkId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['comment_last'])) {
$aCommentLast = E::ModuleComment()->GetCommentsAdditionalData($aCommentLastId, array());
}
// Добавляем данные к результату - списку разговоров
/** @var ModuleTalk_EntityTalk $oTalk */
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() && isset($aCommentLast[$oTalk->getCommentIdLast()])) {
$oTalk->setCommentLast($aCommentLast[$oTalk->getCommentIdLast()]);
} else {
$oTalk->setCommentLast(null);
}
}
return $aTalks;
}
示例5: EventDashboard
public function EventDashboard()
{
$this->sMainMenuItem = 'info';
$aDashboardWidgets = array('admin_dashboard_updates' => array('name' => 'admin_dashboard_updates', 'key' => 'admin.dashboard.updates', 'status' => Config::Val('admin.dashboard.updates', true), 'label' => E::ModuleLang()->Get('action.admin.dashboard_updates_title')), 'admin_dashboard_news' => array('name' => 'admin_dashboard_news', 'key' => 'admin.dashboard.news', 'status' => Config::Val('admin.dashboard.news', true), 'label' => E::ModuleLang()->Get('action.admin.dashboard_news_title')));
if ($this->IsPost('widgets')) {
$aWidgets = F::Array_FlipIntKeys($this->GetPost('widgets'));
$aConfig = array();
foreach ($aDashboardWidgets as $aDashboardWidget) {
if (isset($aWidgets[$aDashboardWidget['name']])) {
$aConfig[$aDashboardWidget['key']] = 1;
} else {
$aConfig[$aDashboardWidget['key']] = 0;
}
}
Config::WriteCustomConfig($aConfig);
R::Location('admin');
}
$this->_setTitle(E::ModuleLang()->Get('action.admin.menu_info_dashboard'));
$this->SetTemplateAction('info/index');
$this->sMenuItem = $this->_getMode(0, 'index');
$aData = array('e-alto' => ALTO_VERSION, 'e-uniq' => E::ModuleSecurity()->GetUniqKey());
$aPlugins = E::ModulePlugin()->GetPluginsList(true);
foreach ($aPlugins as $oPlugin) {
$aData['p-' . $oPlugin->GetId()] = $oPlugin->GetVersion();
}
$aSkins = E::ModuleSkin()->GetSkinsList();
foreach ($aSkins as $oSkin) {
$aData['s-' . $oSkin->GetId()] = $oSkin->GetVersion();
}
E::ModuleViewer()->Assign('sUpdatesRequest', base64_encode(http_build_query($aData)));
E::ModuleViewer()->Assign('sUpdatesRefresh', true);
E::ModuleViewer()->Assign('aDashboardWidgets', $aDashboardWidgets);
}
示例6: GetBlogsAdditionalData
/**
* Получает дополнительные данные(объекты) для блогов по их ID
*
* @param array|int $aBlogsId - Список ID блогов
* @param array $aAllowData - Список типов дополнительных данных, которые нужно получить для блогов
* @param array $aOrder - Порядок сортировки
*
* @return array
*/
public function GetBlogsAdditionalData($aBlogsId, $aAllowData = null, $aOrder = null)
{
if (!$aBlogsId) {
return array();
}
if (is_null($aAllowData)) {
$aAllowData = $this->aAdditionalData;
}
$aAllowData = F::Array_FlipIntKeys($aAllowData);
if (!is_array($aBlogsId)) {
$aBlogsId = array($aBlogsId);
}
// * Получаем блоги
$aBlogs = $this->GetBlogsByArrayId($aBlogsId, $aOrder);
if (!$aBlogs || is_array($aAllowData) && empty($aAllowData)) {
// additional data not required
return $aBlogs;
}
$sCacheKey = 'Blog_GetBlogsAdditionalData_' . md5(serialize(array($aBlogsId, $aAllowData, $aOrder)));
if (false !== ($data = E::ModuleCache()->Get($sCacheKey, 'tmp'))) {
return $data;
}
// * Формируем 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']) ? E::ModuleUser()->GetUsersAdditionalData($aUserId, $aAllowData['owner']) : E::ModuleUser()->GetUsersAdditionalData($aUserId);
if (isset($aAllowData['relation_user']) && $this->oUserCurrent) {
$aBlogUsers = $this->GetBlogUsersByArrayBlog($aBlogsId, $this->oUserCurrent->getId());
}
if (isset($aAllowData['vote']) && $this->oUserCurrent) {
$aBlogsVote = E::ModuleVote()->GetVoteByArray($aBlogsId, 'blog', $this->oUserCurrent->getId());
}
$aBlogTypes = $this->GetBlogTypes();
if (isset($aAllowData['media'])) {
$aAvatars = E::ModuleUploader()->GetMediaObjects('blog_avatar', $aBlogsId, null, array('target_id'));
}
// * Добавляем данные к результату - списку блогов
/** @var ModuleBlog_EntityBlog $oBlog */
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->setCurrentUserRole($aBlogUsers[$oBlog->getId()]->getUserRole());
}
if (isset($aBlogsVote[$oBlog->getId()])) {
$oBlog->setVote($aBlogsVote[$oBlog->getId()]);
} else {
$oBlog->setVote(null);
}
if (isset($aBlogTypes[$oBlog->getType()])) {
$oBlog->setBlogType($aBlogTypes[$oBlog->getType()]);
}
if (isset($aAllowData['media'])) {
// Sets blogs avatars
if (isset($aAvatars[$oBlog->getId()])) {
$oBlog->setMediaResources('blog_avatar', $aAvatars[$oBlog->getId()]);
} else {
$oBlog->setMediaResources('blog_avatar', array());
}
}
}
// Saves only for executing session, so any additional tags no required
E::ModuleCache()->Set($aBlogs, $sCacheKey, array(), 'P1D', 'tmp');
return $aBlogs;
}
示例7: buildFilter
/**
* Строит строку условий для SQL запроса топиков
*
* @param array $aFilter Фильтр
*
* @return string
*/
protected function buildFilter($aFilter)
{
$sWhere = '';
if (isset($aFilter['topic_date_more'])) {
$sWhere .= " AND ((t.topic_date_show IS NOT NULL AND t.topic_date_show > " . $this->oDb->escape($aFilter['topic_date_more']) . ")";
$sWhere .= " OR (t.topic_date_show IS NULL AND t.topic_date_add > " . $this->oDb->escape($aFilter['topic_date_more']) . "))";
}
if (isset($aFilter['topic_publish'])) {
$sWhere .= " AND (t.topic_publish = " . ($aFilter['topic_publish'] ? 1 : 0) . ")";
$sWhere .= " AND (t.topic_date_show IS NULL OR t.topic_date_show <= '" . F::Now() . "')";
}
if (isset($aFilter['topic_index_ignore'])) {
$sWhere .= " AND (";
$sWhere .= "t.topic_index_ignore=" . ($aFilter['topic_index_ignore'] ? 1 : 0);
if (!$aFilter['topic_index_ignore']) {
$sWhere .= " OR t.topic_index_ignore IS NULL";
}
$sWhere .= ") ";
}
if (isset($aFilter['topic_rating']) && is_array($aFilter['topic_rating'])) {
$sPublishIndex = '';
if (isset($aFilter['topic_rating']['publish_index']) && $aFilter['topic_rating']['publish_index'] == 1) {
$sPublishIndex = " OR topic_publish_index=1 ";
}
if ($aFilter['topic_rating']['type'] == 'top') {
$sWhere .= " AND ( t.topic_rating >= " . (double) $aFilter['topic_rating']['value'] . " {$sPublishIndex} ) ";
} else {
$sWhere .= " AND ( t.topic_rating < " . (double) $aFilter['topic_rating']['value'] . " ) ";
}
}
if (isset($aFilter['topic_new'])) {
$sWhere .= " AND (";
$sWhere .= "(t.topic_date_show IS NOT NULL AND t.topic_date_show >= '" . $aFilter['topic_new'] . "' AND t.topic_date_show <='" . F::Now() . "')";
$sWhere .= " OR (t.topic_date_show IS NULL AND t.topic_date_add >= '" . $aFilter['topic_new'] . "')";
$sWhere .= ")";
}
if (isset($aFilter['user_id'])) {
$sWhere .= is_array($aFilter['user_id']) ? " AND t.user_id IN(" . implode(', ', $aFilter['user_id']) . ")" : " AND t.user_id = " . (int) $aFilter['user_id'];
}
if (isset($aFilter['blog_id'])) {
if (!is_array($aFilter['blog_id'])) {
$aFilter['blog_id'] = array($aFilter['blog_id']);
}
$sWhere .= " AND t.blog_id IN ('" . join("','", $aFilter['blog_id']) . "')";
}
if (isset($aFilter['topic_id']) && is_array($aFilter['topic_id'])) {
$sWhere .= " AND t.topic_id IN ('" . join("','", $aFilter['topic_id']) . "')";
}
if (isset($aFilter['blog_type']) && is_array($aFilter['blog_type'])) {
$aBlogTypes = array();
$aOrClauses = array();
$aFilter['blog_type'] = F::Array_FlipIntKeys($aFilter['blog_type'], 0);
foreach ($aFilter['blog_type'] as $sType => $aBlogsId) {
if ($aBlogsId) {
// 'type'=>array('id1', 'id2') - blog type & blogs id
if ($sType == '*') {
$aOrClauses[] = "(t.blog_id IN ('" . join("','", $aBlogsId) . "'))";
} else {
$aOrClauses[] = "b.blog_type='" . $sType . "' AND t.blog_id IN ('" . join("','", $aBlogsId) . "')";
}
} else {
// blog type only
$aBlogTypes[] = "'" . $sType . "'";
}
}
if ($aBlogTypes) {
$aOrClauses[] = '(b.blog_type IN (' . join(',', $aBlogTypes) . '))';
}
if ($aOrClauses) {
$sWhere .= ' AND (' . join(' OR ', $aOrClauses) . ')';
}
}
if (isset($aFilter['blog_type_exclude']) && is_array($aFilter['blog_type_exclude'])) {
$sWhere .= " AND (b.blog_type NOT IN ('" . join("','", $aFilter['blog_type_exclude']) . "'))";
}
if (isset($aFilter['topic_type'])) {
if (!is_array($aFilter['topic_type'])) {
$aFilter['topic_type'] = array($aFilter['topic_type']);
}
$sWhere .= " AND t.topic_type IN (" . join(",", array_map(array($this->oDb, 'escape'), $aFilter['topic_type'])) . ")";
}
return $sWhere;
}
示例8: GetWallAdditionalData
/**
* Получение записей по ID с дополнительные связаными данными
*
* @param array $aWallId - Список ID сообщений
* @param array $aAllowData - Список типов дополнительных данных для подгрузки в сообщения стены
*
* @return array
*/
public function GetWallAdditionalData($aWallId, $aAllowData = null)
{
if (!$aWallId) {
return array();
}
if (is_null($aAllowData)) {
$aAllowData = $this->aAdditionalData;
}
$aAllowData = F::Array_FlipIntKeys($aAllowData);
if (!is_array($aWallId)) {
$aWallId = array($aWallId);
}
$aWalls = $this->GetWallsByArrayId($aWallId);
// * Формируем ID дополнительных данных, которые нужно получить
$aUserId = array();
$aWallUserId = array();
$aWallReplyId = array();
foreach ($aWalls as $oWall) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oWall->getUserId();
}
if (isset($aAllowData['wall_user'])) {
$aWallUserId[] = $oWall->getWallUserId();
}
// * Список последних записей хранится в строке через запятую
if (isset($aAllowData['reply']) && !$oWall->getPid() && $oWall->getLastReply()) {
$aReply = explode(',', trim($oWall->getLastReply()));
$aWallReplyId = array_merge($aWallReplyId, $aReply);
}
}
// * Получаем дополнительные данные
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? E::ModuleUser()->GetUsersAdditionalData($aUserId, $aAllowData['user']) : E::ModuleUser()->GetUsersAdditionalData($aUserId);
$aWallUsers = isset($aAllowData['wall_user']) && is_array($aAllowData['wall_user']) ? E::ModuleUser()->GetUsersAdditionalData($aWallUserId, $aAllowData['wall_user']) : E::ModuleUser()->GetUsersAdditionalData($aWallUserId);
$aWallReply = array();
if (isset($aAllowData['reply']) && 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());
}
if (isset($aWallUsers[$oWall->getWallUserId()])) {
$oWall->setWallUser($aWallUsers[$oWall->getWallUserId()]);
} else {
$oWall->setWallUser(null);
}
$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;
}
示例9: _eventConfigParams
/**
* Site settings > Config parameters
*
* @param string $sSelectedSection
*/
protected function _eventConfigParams($sSelectedSection)
{
$this->SetTemplateAction('settings/params');
$aFields = F::IncludeFile(Config::Get('path.dir.config') . 'actions/admin.settings.php', false, true);
foreach ($aFields as $nSec => $aSection) {
foreach ($aSection as $nKey => $aItem) {
$aItem['text'] = E::ModuleLang()->Text($aItem['label']);
if (isset($aItem['help'])) {
$aItem['help'] = E::ModuleLang()->Text($aItem['help']);
}
if (isset($aItem['config'])) {
$aItem['value'] = Config::Get($aItem['config'], Config::LEVEL_CUSTOM);
$aItem['config'] = str_replace('.', '--', $aItem['config']);
if (!isset($aItem['valtype']) && isset($aItem['type']) && $aItem['type'] == 'checkbox') {
$aItem['valtype'] = 'boolean';
}
}
if (!empty($aItem['type'])) {
if ($aItem['type'] == 'password') {
$aItem['valtype'] = 'string';
} elseif ($aItem['type'] == 'select' && !empty($aItem['options'])) {
$aItem['options'] = F::Array_FlipIntKeys($aItem['options'], null);
foreach ($aItem['options'] as $sValue => $sText) {
if (is_null($sText)) {
$aItem['options'][$sValue] = $sValue;
} else {
$aItem['options'][$sValue] = E::ModuleLang()->Text($sText);
}
}
}
}
$aFields[$nSec][$nKey] = $aItem;
}
}
if (($aData = $this->GetPost()) && isset($aFields[$sSelectedSection])) {
$this->_eventConfigSave($aFields[$sSelectedSection], $aData);
}
if (!isset($aFields[$sSelectedSection])) {
$sSelectedSection = F::Array_FirstKey($aFields);
$this->_saveMode(0, $sSelectedSection);
}
E::ModuleViewer()->Assign('aFields', $aFields[$sSelectedSection]);
}
示例10: func_array_simpleflip
function func_array_simpleflip(&$arr, $sDefValue = 1)
{
$arr = F::Array_FlipIntKeys($arr, $sDefValue);
}
示例11: GetBlogsIdByCriteria
/**
* Возвращает список ID блогов по заданным критериям
*
* Общая структура массива критериев
* $aCriteria = array(
* 'filter' => array(..),
* 'order' => array(..),
* 'limit' => array(..),
* );
*
* Возвращаемое значение:
* array('data' => array(), 'total' => int)
*
* @param array $aCriteria
*
* @return array
*/
public function GetBlogsIdByCriteria($aCriteria = array())
{
if (isset($aCriteria['filter'])) {
$aFilter = $aCriteria['filter'];
} else {
$aFilter = array();
}
if (isset($aFilter['not_blog_id'])) {
if (!is_array($aFilter['not_blog_id'])) {
$aFilter['not_blog_id'] = array(intval($aFilter['not_blog_id']));
}
}
if (isset($aFilter['blog_title_like'])) {
if (substr($aFilter['blog_title_like'], -1) !== '%') {
$aFilter['blog_title_like'] .= '%';
}
}
if (isset($aFilter['exclude_type']) && !isset($aFilter['not_blog_type'])) {
$aFilter['not_blog_type'] = $aFilter['exclude_type'];
}
if (isset($aFilter['include_type']) && !isset($aFilter['blog_type'])) {
$aFilter['blog_type'] = $aFilter['include_type'];
}
// Сортировка
$sSqlOrder = '';
if (isset($aCriteria['order'])) {
$aOrderAllow = array('blog_id', 'blog_title', 'blog_rating', 'blog_count_user', 'blog_count_topic');
if (!is_array($aCriteria['order'])) {
$aCriteria['order'] = array($aCriteria['order']);
}
$aOrders = F::Array_FlipIntKeys($aCriteria['order'], 'ASC');
$aOrderList = array();
foreach ($aOrders as $sField => $sWay) {
$sField = strtolower(trim($sField));
if (strpos($sField, ' ')) {
list($sField, $sWay) = explode(' ', $sField, 2);
}
if (in_array($sField, $aOrderAllow)) {
$aOrderList[] = $sField . ' ' . (strtoupper($sWay) == 'DESC' ? 'DESC' : 'ASC');
}
}
if ($aOrderList) {
$sSqlOrder = 'ORDER BY ' . implode(',', $aOrderList);
}
}
// Установка лимита
$sSqlLimit = '';
list($nOffset, $nLimit) = $this->_prepareLimit($aCriteria);
// Если задан ID блога, то всегда устанавливаем лимит
if (isset($aFilter['blog_id']) && !is_array($aFilter['blog_id'])) {
$nOffset = false;
$nLimit = 1;
}
// Формируем строку лимита и автосчетчик общего числа записей
if ($nOffset !== false && $nLimit !== false) {
$sSqlLimit = 'LIMIT ' . $nOffset . ', ' . $nLimit;
$nCalcTotal = static::CRITERIA_CALC_TOTAL_AUTO;
} elseif ($nLimit != false && $nLimit != 1) {
$sSqlLimit = 'LIMIT ' . $nLimit;
$nCalcTotal = static::CRITERIA_CALC_TOTAL_AUTO;
} else {
$nCalcTotal = static::CRITERIA_CALC_TOTAL_SKIP;
}
// Обрабатываем опции
if (isset($aCriteria['options']) && is_array($aCriteria['options'])) {
if (array_key_exists('calc_total', $aCriteria['options'])) {
if ($aCriteria['options']['calc_total'] != static::CRITERIA_CALC_TOTAL_AUTO) {
$nCalcTotal = $aCriteria['options']['calc_total'];
}
// Если требуется только подсчет записей, то строку лимита принудительно устанавливаем в 0
// Запрос с LIMIT 0 отрабатывает моментально
if ($aCriteria['options']['calc_total'] != static::CRITERIA_CALC_TOTAL_ONLY) {
$sSqlLimit = 'LIMIT 0';
}
}
}
// Необходимость JOIN'ов
$aBlogTypeFields = array('allow_add', 'min_rate_add', 'allow_list', 'min_rate_list', 'acl_read', 'min_rate_read', 'acl_write', 'min_rate_write', 'acl_comment', 'min_rate_comment', 'index_ignore', 'membership');
if ($aFilter && array_intersect(array_keys($aFilter), $aBlogTypeFields)) {
$bBlogTypeJoin = true;
} else {
$bBlogTypeJoin = false;
}
//.........这里部分代码省略.........
示例12: GetCommentsAdditionalData
/**
* Получает дополнительные данные(объекты) для комментов по их ID
*
* @param array|int $aCommentId Список ID комментов
* @param array|null $aAllowData Список типов дополнительных данных, которые нужно получить для комментариев
* @param array $aAdditionalData Predefined additional data
*
* @return array
*/
public function GetCommentsAdditionalData($aCommentId, $aAllowData = null, $aAdditionalData = array())
{
if (!$aCommentId) {
return array();
}
if (is_null($aAllowData)) {
$aAllowData = $this->aAdditionalData;
}
$aAllowData = F::Array_FlipIntKeys($aAllowData);
if (!is_array($aCommentId)) {
$aCommentId = array($aCommentId);
}
// * Получаем комменты
$aComments = $this->GetCommentsByArrayId($aCommentId);
// * Формируем ID дополнительных данных, которые нужно получить
$aUserId = array();
$aTargetTypeId = array();
foreach ($aComments as $oComment) {
if (isset($aAllowData['user'])) {
$aUserId[] = $oComment->getUserId();
}
if (isset($aAllowData['target'])) {
$aTargetTypeId[$oComment->getTargetType()][] = $oComment->getTargetId();
}
}
// * Получаем дополнительные данные
if ($aUserId) {
$aUsers = isset($aAllowData['user']) && is_array($aAllowData['user']) ? E::ModuleUser()->GetUsersAdditionalData($aUserId, $aAllowData['user']) : E::ModuleUser()->GetUsersAdditionalData($aUserId);
}
// * В зависимости от типа target_type достаем данные
$aTargets = array();
foreach ($aTargetTypeId as $sTargetType => $aTargetId) {
if (isset($aAdditionalData['target'][$sTargetType])) {
// predefined targets' data
$aTargets[$sTargetType] = $aAdditionalData['target'][$sTargetType];
} else {
if (isset($aTargetTypeId['topic']) && $aTargetTypeId['topic']) {
// load targets' data
$aTargets['topic'] = E::ModuleTopic()->GetTopicsAdditionalData($aTargetTypeId['topic'], array('blog' => array('owner' => array(), 'relation_user'), 'user' => array()));
} else {
// we don't know how to get targets' data
$aTargets['topic'] = array();
}
}
}
if (isset($aAllowData['vote']) && $this->oUserCurrent) {
$aVote = E::ModuleVote()->GetVoteByArray($aCommentId, 'comment', $this->oUserCurrent->getId());
} else {
$aVote = array();
}
if (isset($aAllowData['favourite']) && $this->oUserCurrent) {
$aFavouriteComments = E::ModuleFavourite()->GetFavouritesByArray($aCommentId, 'comment', $this->oUserCurrent->getId());
} else {
$aFavouriteComments = array();
}
// * Добавляем данные к результату
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;
}