2namespace Bitrix\Landing\Connector;
4use Bitrix\Landing\Binding;
5use Bitrix\Landing\Copy\Integration\Group;
6use Bitrix\Landing\Manager;
7use Bitrix\Landing\Restriction;
8use Bitrix\Landing\Rights;
9use Bitrix\Landing\Site;
10use Bitrix\Main\Config\Option;
11use Bitrix\Main\Loader;
12use Bitrix\Main\Localization\Loc;
14Loc::loadMessages(__FILE__);
40 public static function getBindingRow(
int $groupId,
bool $checkAccess =
true)
46 $groupId = intval($groupId);
47 $bindings = Binding\Group::getList($groupId);
51 $bindings = array_pop($bindings);
53 if ($bindings[
'ENTITY_TYPE'] ==
Binding\Entity::ENTITY_TYPE_SITE)
56 $bindings[
'ENTITY_ID'],
77 if (Option::get(Group::MODULE_ID, Group::CHECKER_OPTION . $groupId,
'') ==
'Y')
83 if (!
Restriction\Manager::isAllowed(
'limit_crm_free_knowledge_base_project'))
85 $asset = \Bitrix\Main\Page\Asset::getInstance();
88 'var KnowledgeCreate = function()
90 ' .
Restriction\Manager::getActionCode(
'limit_crm_free_knowledge_base_project') .
'
96 return 'javascript:void(KnowledgeCreate());';
100 $groupId = intval($groupId);
108 $link = $bindings[
'PUBLIC_URL'];
113 else if ($returnCreateLink && self::canCreateNewBinding($groupId))
115 \CJSCore::init(
'sidepanel');
116 $link =
SITE_DIR . str_replace(
'#groupId#', $groupId, self::PATH_GROUP_BINDING);
130 $groupId = intval($groupId);
132 if ($bindings[
'TITLE'])
134 $title = $bindings[
'TITLE'];
149 \
Bitrix\
Main\ModuleManager::isModuleInstalled(
'intranet')
154 $socNetFeaturesSettings[self::SETTINGS_CODE] = [
156 'title' => Loc::getMessage(
'LANDING_CONNECTOR_SN_TITLE'),
157 'operation_titles' => [
169 'minoperation' => [
'read'],
183 $groupId = self::getGroupIdByFeatureId($id);
192 $binding = new \Bitrix\Landing\Binding\Group($groupId);
207 if (!isset(
$result[
'Group'][
'ID']))
211 if (!isset(
$result[
'Urls'][
'View']))
218 !Loader::includeModule(
'intranet')
228 if (!empty(
$result[
'ActiveFeatures']))
230 $enable = array_key_exists(
261 $result[
'CanView'][self::SETTINGS_CODE] = $enable;
262 $result[
'Title'][self::SETTINGS_CODE] = Loc::getMessage(
'LANDING_CONNECTOR_SN_TITLE') .
$title;
272 if (\
Bitrix\
Main\Loader::includeModule(
'extranet'))
274 return \CExtranet::isExtranetSite();
288 if (
$request->get(
'tab') == self::SETTINGS_CODE_SHORT)
294 $asset = \Bitrix\Main\Page\Asset::getInstance();
297 'BX.ready(function(){BX.SidePanel.Instance.open(\'' . \CUtil::jsEscape(
$url) .
'\');});
',
312 public static function getTabUrl(int $groupId, ?string $pagePath = null, bool $generalPath = false): ?string
314 static $groupPath = null;
316 if ($groupPath === null)
318 $groupPath = Option::get('socialnetwork
', 'group_path_template
', '', SITE_ID);
319 if (mb_substr($groupPath, -1) == '/
')
321 $groupPath .= 'general/
';
325 if ($groupId && $groupPath)
327 $groupPath = str_replace('#group_id#
', $groupId, $groupPath);
335 if ($groupId && $groupPath)
337 $uri = new \Bitrix\Main\Web\Uri($groupPath);
339 'tab
' => self::SETTINGS_CODE_SHORT
347 return $uri->getUri();
359 public static function userInGroup(int $groupId): bool
361 if (\Bitrix\Main\Loader::includeModule('socialnetwork
'))
363 return \CSocNetUserToGroup::getUserRole(
364 Manager::getUserId(),
366 ) <= SONET_ROLES_USER;
380 public static function canPerformOperation(int $groupId, string $operation): bool
382 if ($groupId && \Bitrix\Main\Loader::includeModule('socialnetwork
'))
384 return \CSocNetFeaturesPerms::canPerformOperation(
385 Manager::getUserId(),
402 public static function canCreateNewBinding(int $groupId): bool
404 $operation = Rights::ACCESS_TYPES['edit
'];
405 return self::userInGroup($groupId) && self::canPerformOperation($groupId, $operation);
413 public static function onSocNetGroupDelete($groupId)
415 \Bitrix\Landing\Site\Type::setScope(
416 \Bitrix\Landing\Site\Type::SCOPE_CODE_GROUP
418 $bindings = Binding\Group::getList($groupId);
419 foreach ($bindings as $binding)
421 if ($binding['ENTITY_TYPE
'] == Binding\Group::ENTITY_TYPE_SITE)
423 Site::delete($binding['ENTITY_ID
'], true)->isSuccess();
434 private static function getGroupIdByFeatureId(int $featureId): ?int
436 static $featureToGroup = null;
438 if ($featureToGroup === null)
440 $res = \CSocNetFeatures::getList(
443 'ENTITY_TYPE
' => SONET_ENTITY_GROUP,
444 'FEATURE
' => self::SETTINGS_CODE,
449 while ($row = $res->fetch())
451 $featureToGroup[$row['ID
']] = $row['ENTITY_ID
'];
455 return $featureToGroup[$featureId] ?? null;
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
static getSiteIdByGroupId(int $groupId)
static onSocNetFeaturesUpdate(int $id, array $fields)
const SETTINGS_CODE_SHORT
static onFillSocNetFeaturesList(&$socNetFeaturesSettings)
static processTabHit($url)
static getSocNetMenuTitle($groupId)
static getBindingRow(int $groupId, bool $checkAccess=true)
static getSocNetMenuUrl($groupId, $returnCreateLink=true)
static onFillSocNetMenu(&$result)
static hasAccessForSite($siteId, $accessType, $deleted=false)
static setScope($scope, array $params=[])
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
const SITE_DIR(!defined('LANG'))
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
const SONET_ROLES_AUTHORIZED