static function getTypes($params = []): array
{
static $intranetInstalled = null;
static $extranetInstalled = null;
static $landingInstalled = null;
if ($intranetInstalled === null)
{
$intranetInstalled = ModuleManager::isModuleInstalled('intranet');
}
if ($extranetInstalled === null)
{
$extranetInstalled = static::isExtranetInstalled();
}
if ($landingInstalled === null)
{
$landingInstalled = ModuleManager::isModuleInstalled('landing');
}
$currentExtranetSite = (
!empty($params)
&& isset($params['currentExtranetSite'])
&& $params['currentExtranetSite']
);
$categoryList = [];
if (!empty($params['category']) && is_array($params['category']))
{
$categoryList = $params['category'];
}
$entityOptions = [];
if (!empty($params['entityOptions']) && is_array($params['entityOptions']))
{
$entityOptions = $params['entityOptions'];
}
$fullMode = (
!empty($params)
&& isset($params['fullMode'])
&& $params['fullMode']
);
$result = [];
$sort = 0;
if (
$intranetInstalled
&& (
empty($categoryList)
|| in_array('projects', $categoryList, true)
)
)
{
if (!$currentExtranetSite)
{
if (self::checkEntityOption([ 'project', 'open', '!extranet', '!landing' ], $entityOptions))
{
$result['project-open'] = array(
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_OPEN'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_OPEN_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_OPEN_DESC2'),
'VISIBLE' => 'Y',
'OPENED' => 'Y',
'PROJECT' => 'Y',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'N',
'TILE_CLASS' => 'social-group-tile-item-cover-open social-group-tile-item-icon-project-open'
);
}
if (self::checkEntityOption([ 'project', '!open', '!extranet', '!landing' ], $entityOptions))
{
$result['project-closed'] = array(
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_DESC'),
'VISIBLE' => 'N',
'OPENED' => 'N',
'PROJECT' => 'Y',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'N',
'TILE_CLASS' => 'social-group-tile-item-cover-close social-group-tile-item-icon-project-close'
);
}
if (self::checkEntityOption([ 'project', 'scrum', '!extranet', '!landing' ], $entityOptions))
{
$result['project-scrum'] = [
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM2'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_DESC2'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_DESC2'),
'VISIBLE' => 'N',
'OPENED' => 'N',
'PROJECT' => 'Y',
'SCRUM_PROJECT' => 'Y',
'EXTERNAL' => 'N',
'TILE_CLASS' => 'social-group-tile-item-cover-scrum social-group-tile-item-icon-project-scrum'
];
}
if (
$fullMode
&& self::checkEntityOption([ 'project', '!open', '!extranet', '!landing' ], $entityOptions)
)
{
$result['project-closed-visible'] = array(
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_VISIBLE'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_VISIBLE_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_CLOSED_VISIBLE_DESC'),
'VISIBLE' => 'Y',
'OPENED' => 'N',
'PROJECT' => 'Y',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'N',
'TILE_CLASS' => ''
);
}
}
if (
$extranetInstalled
&& self::checkEntityOption([ 'project', 'scrum', 'extranet', '!landing' ], $entityOptions)
)
{
$result['project-scrum-extranet'] = [
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_EXTERNAL'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_EXTERNAL_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_SCRUM_EXTERNAL_DESC'),
'VISIBLE' => 'N',
'OPENED' => 'N',
'PROJECT' => 'Y',
'SCRUM_PROJECT' => 'Y',
'EXTERNAL' => 'Y',
'TILE_CLASS' => 'social-group-tile-item-cover-scrum social-group-tile-item-icon-project-scrum'
];
}
if (
$extranetInstalled
&& self::checkEntityOption([ 'project', 'extranet', '!landing' ], $entityOptions)
)
{
$result['project-external'] = array(
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_EXTERNAL'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_EXTERNAL_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_PROJECT_EXTERNAL_DESC'),
'VISIBLE' => 'N',
'OPENED' => 'N',
'PROJECT' => 'Y',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'Y',
'TILE_CLASS' => 'social-group-tile-item-cover-outer social-group-tile-item-icon-project-outer'
);
}
}
if (
!$currentExtranetSite
&& (
empty($categoryList)
|| in_array('groups', $categoryList)
)
)
{
if (self::checkEntityOption([ '!project', 'open', '!extranet', '!landing' ], $entityOptions))
{
$result['group-open'] = array(
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_OPEN'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_OPEN_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_OPEN_DESC2'),
'VISIBLE' => 'Y',
'OPENED' => 'Y',
'PROJECT' => 'N',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'N',
'TILE_CLASS' => 'social-group-tile-item-cover-open social-group-tile-item-icon-group-open'
);
}
if (self::checkEntityOption([ '!project', '!open', '!extranet', '!landing' ], $entityOptions))
{
$result['group-closed'] = array(
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_DESC'),
'VISIBLE' => 'N',
'OPENED' => 'N',
'PROJECT' => 'N',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'N',
'TILE_CLASS' => 'social-group-tile-item-cover-close social-group-tile-item-icon-group-close'
);
if ($fullMode)
{
$result['group-closed-visible'] = array(
'SORT' => $sort = $sort + 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_VISIBLE'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_VISIBLE_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_CLOSED_VISIBLE_DESC'),
'VISIBLE' => 'Y',
'OPENED' => 'N',
'PROJECT' => 'N',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'N',
'TILE_CLASS' => ''
);
}
}
}
if (
$extranetInstalled
&& self::checkEntityOption([ '!project', 'extranet', '!landing' ], $entityOptions)
)
{
$result['group-external'] = array(
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_EXTERNAL'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_EXTERNAL_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_EXTERNAL_DESC'),
'VISIBLE' => 'N',
'OPENED' => 'N',
'PROJECT' => 'N',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'Y',
'TILE_CLASS' => 'social-group-tile-item-cover-outer social-group-tile-item-icon-group-outer'
);
}
if (
$landingInstalled
&& self::checkEntityOption([ '!project', 'landing', '!extranet' ], $entityOptions)
)
{
$result['group-landing'] = array(
'SORT' => $sort += 10,
'NAME' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_LANDING'),
'DESCRIPTION' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_LANDING_DESC'),
'DESCRIPTION2' => Loc::getMessage('SOCIALNETWORK_ITEM_WORKGROUP_TYPE_GROUP_LANDING_DESC'),
'VISIBLE' => 'N',
'OPENED' => 'N',
'PROJECT' => 'N',
'SCRUM_PROJECT' => 'N',
'EXTERNAL' => 'N',
'LANDING' => 'Y',
'TILE_CLASS' => 'social-group-tile-item-cover-public social-group-tile-item-icon-group-public'
);
}
return $result;
}