- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/main/uiselector/projects.php
- Класс: BitrixSocialnetworkIntegrationMainUISelectorProjects
- Вызов: Projects::getData
public function getData($params = array())
{
$result = array(
'ITEMS' => array(),
'ITEMS_LAST' => array(),
'ITEMS_HIDDEN' => array(),
'ADDITIONAL_INFO' => array(
'SORT_SELECTED' => 300
)
);
$entityType = Handler::ENTITY_TYPE_PROJECTS;
$options = (!empty($params['options']) ? $params['options'] : array());
$lastItems = (!empty($params['lastItems']) ? $params['lastItems'] : array());
$selectedItems = (!empty($params['selectedItems']) ? $params['selectedItems'] : array());
$limitReached = false;
$projectsList = BitrixSocialnetworkComponentHelper::getSonetGroupAvailable(array(
'limit' => 100,
'useProjects' => 'Y'
), $limitReached);
$projectsList = $projectsList['PROJECTS'];
$result['ADDITIONAL_INFO']['LIMITED'] = ($limitReached ? 'Y' : 'N');
$lastProjectsList = array();
if(!empty($lastItems[$entityType]))
{
$result["ITEMS_LAST"] = array_values($lastItems[$entityType]);
foreach ($lastItems[$entityType] as $value)
{
$lastProjectsList[] = str_replace('SG', '', $value);
}
}
$selectedProjectsList = array();
if(!empty($selectedItems[Handler::ENTITY_TYPE_SONETGROUPS]))
{
foreach ($selectedItems[Handler::ENTITY_TYPE_SONETGROUPS] as $value)
{
$selectedProjectsList[] = str_replace('SG', '', $value);
}
}
if (!empty($lastProjectsList))
{
$filter = array(
'features' => array("blog", array("premoderate_post", "moderate_post", "write_post", "full_post")),
'id' => $lastProjectsList,
'useProjects' => 'Y'
);
if (!empty($options['siteId']))
{
$filter['site_id'] = $options['siteId'];
}
$projectsAdditionalList = CSocNetLogDestination::getSocnetGroup($filter);
if (!empty($projectsAdditionalList))
{
$projectsAdditionalList = $projectsAdditionalList['PROJECTS'];
$projectsList = array_merge($projectsList, $projectsAdditionalList);
}
}
if (!empty($selectedProjectsList))
{
// available to post
$filter = array(
'features' => array("blog", array("premoderate_post", "moderate_post", "write_post", "full_post")),
'id' => $selectedProjectsList,
'useProjects' => 'Y'
);
if (!empty($options['siteId']))
{
$filter['site_id'] = $options['siteId'];
}
$projectsAdditionalList = CSocNetLogDestination::getSocnetGroup($filter);
if (!empty($projectsAdditionalList))
{
$projectsAdditionalList = $projectsAdditionalList['PROJECTS'];
$projectsList = array_merge($projectsList, $projectsAdditionalList);
}
}
if (!empty($selectedItems[Handler::ENTITY_TYPE_SONETGROUPS]))
{
$hiddenItemsList = array_diff($selectedItems[Handler::ENTITY_TYPE_SONETGROUPS], array_keys($projectsList));
$hiddenItemsList = array_map(function($code) { return preg_replace('/^SG(d+)$/', '$1', $code); }, $hiddenItemsList);
if (!empty($hiddenItemsList))
{
$isCurrentUserModuleAdmin = CSocNetUser::isCurrentUserModuleAdmin();
$res = BitrixSocialnetworkWorkgroupTable::getList(array(
'filter' => array(
"@ID" => $hiddenItemsList,
'PROJECT' => 'Y'
),
'select' => array("ID", "NAME", "DESCRIPTION", "OPENED")
));
$extranetGroupsIdList = BitrixSocialnetworkComponentHelper::getExtranetSonetGroupIdList();
while($groupFields = $res->fetch())
{
if (
$groupFields['OPENED'] == "Y"
|| $isCurrentUserModuleAdmin
)
{
$projectsList['SG'.$groupFields["ID"]] = array(
"id" => 'SG'.$groupFields["ID"],
"entityId" => $groupFields["ID"],
"name" => $groupFields["NAME"],
"desc" => $groupFields["DESCRIPTION"],
"isExtranet" => (in_array($groupFields["ID"], $extranetGroupsIdList) ? 'Y' : 'N')
);
}
elseif (
$groupFields['VISIBLE'] == "Y"
&& !Handler::isExtranetUser()
)
{
$projectsList['SG'.$groupFields["ID"]] = array(
"id" => 'SG'.$groupFields["ID"],
"entityId" => $groupFields["ID"],
"name" => $groupFields["NAME"],
"desc" => $groupFields["DESCRIPTION"],
"isExtranet" => (in_array($groupFields["ID"], $extranetGroupsIdList) ? 'Y' : 'N'),
"selectable" => 'N'
);
}
else
{
$result['ITEMS_HIDDEN'][] = 'SG'.$groupFields["ID"];
}
}
}
}
$result['ITEMS'] = $projectsList;
return $result;
}