%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/socialnetwork/lib/integration/main/uiselector/ |
Current File : //home/bitrix/www/bitrix/modules/socialnetwork/lib/integration/main/uiselector/entities.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage socialnetwork * @copyright 2001-2017 Bitrix */ namespace Bitrix\Socialnetwork\Integration\Main\UISelector; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Loader; use Bitrix\Main\ModuleManager; Loc::loadMessages(__FILE__); class Entities { const EXTRANET_CONTEXT_EXTERNAL = 'E'; const EXTRANET_CONTEXT_INTERNAL = 'I'; public static function getData($options = array()) { $result = array( 'ITEMS' => array(), 'ITEMS_LAST' => array(), 'DEST_SORT' => array() ); $filterParams = array( "DEST_CONTEXT" => $options["context"], "ALLOW_EMAIL_INVITATION" => (isset($options["allowEmailInvitation"]) && $options["allowEmailInvitation"] == "Y") ); if (!empty($options['contextCode'])) { $filterParams["CODE_TYPE"] = $options['contextCode']; } $dataAdditional = array(); $destSortData = \CSocNetLogDestination::getDestinationSort($filterParams, $dataAdditional); $result["DEST_SORT"] = $destSortData; $lastItems = $items = array(); \CSocNetLogDestination::fillLastDestination( $destSortData, $lastItems, array( "EMAILS" => ( ( isset($options["allowAddUser"]) && $options["allowAddUser"] == 'Y' ) || ( isset($options["allowSearchEmailUsers"]) && $options["allowSearchEmailUsers"] == 'Y' ) || ( isset($options["allowEmailInvitation"]) && $options["allowEmailInvitation"] == 'Y' ) ? 'Y' : 'N' ), "DATA_ADDITIONAL" => $dataAdditional ) ); if ( !Handler::isExtranetUser() && \Bitrix\Socialnetwork\ComponentHelper::getAllowToAllDestination() && (!isset($options["enableAll"]) || $options["enableAll"] != 'N') ) { $lastItems['GROUPS'] = array( 'UA' => true ); $items['GROUPS'] = array( 'UA' => array( 'id' => 'UA', 'name' => ( ModuleManager::isModuleInstalled('intranet') ? Loc::getMessage("MPF_DESTINATION_3") : Loc::getMessage("MPF_DESTINATION_4") ) ) ); } $result["ITEMS_LAST"] = $lastItems; if ($options["enableSonetgroups"] != 'N') { $limitReached = false; $sonetGroupsList = \Bitrix\Socialnetwork\ComponentHelper::getSonetGroupAvailable(array( 'limit' => 100 ), $limitReached); $result["SONETGROUPS_LIMITED"] = ($limitReached ? 'Y' : 'N'); if( !empty($lastItems['SONETGROUPS']) && !empty($sonetGroupsList) ) { $lastSonetGroupsList = array(); foreach ($lastItems['SONETGROUPS'] as $value) { if (!array_key_exists($value, $sonetGroupsList)) { $lastSonetGroupsList[] = intval(substr($value, 2)); } } if (!empty($lastSonetGroupsList)) { $sonetGroupsAdditionalList = \CSocNetLogDestination::getSocnetGroup(array( 'features' => array("blog", array("premoderate_post", "moderate_post", "write_post", "full_post")), 'id' => $lastSonetGroupsList )); if (!empty($sonetGroupsAdditionalList)) { $sonetGroupsList = array_merge($sonetGroupsList, $sonetGroupsAdditionalList); } } } $items['SONETGROUPS'] = $sonetGroupsList; } if (Handler::isExtranetUser()) { $result['EXTRANET_USER'] = 'Y'; $items['USERS'] = \CSocNetLogDestination::getExtranetUser(); } else { $lastUserList = array(); if(!empty($lastItems['USERS'])) { foreach ($lastItems['USERS'] as $value) { $lastUserList[] = str_replace('U', '', $value); } } $result['EXTRANET_USER'] = 'N'; if (!empty($lastUserList)) { $items['USERS'] = \CSocNetLogDestination::getUsers(array( 'id' => $lastUserList, 'CRM_ENTITY' => ModuleManager::isModuleInstalled('crm') )); if ( isset($options['extranetContext']) && in_array($options['extranetContext'], array(self::EXTRANET_CONTEXT_INTERNAL, self::EXTRANET_CONTEXT_EXTERNAL)) ) { foreach($items['USERS'] as $key => $value) { if (isset($value["isExtranet"])) { if ( ( $value["isExtranet"] == 'Y' && $options['extranetContext'] == self::EXTRANET_CONTEXT_INTERNAL ) || ( $value["isExtranet"] == 'N' && $options['extranetContext'] == self::EXTRANET_CONTEXT_EXTERNAL ) ) { unset($items['USERS'][$key]); } } } } } if ( ( isset($options["allowAddUser"]) && $options["allowAddUser"] == 'Y' ) || ( isset($options["allowSearchEmailUsers"]) && $options["allowSearchEmailUsers"] == 'Y' ) || ( isset($options["allowEmailInvitation"]) && $options["allowEmailInvitation"] == 'Y' ) ) { $items['LAST'] = $result["ITEMS_LAST"]; \CSocNetLogDestination::fillEmails($items); $result["ITEMS_LAST"] = $items['LAST']; unset($items['LAST']); } } if ( $options["enableDepartments"] == "Y" && ModuleManager::isModuleInstalled('intranet') && !Handler::isExtranetUser() ) { $structure = \CSocNetLogDestination::getStucture(array("LAZY_LOAD" => true)); $items['DEPARTMENT'] = $structure['department']; $items['DEPARTMENT_RELATION'] = $structure['department_relation']; } $result["ITEMS"] = $items; $lastItems = array(); foreach($result["ITEMS_LAST"] as $group => $items) { $i = 0; foreach($result["ITEMS_LAST"][$group] as $key => $value) { $lastItems[$group][$key] = ++$i; } } $result["ITEMS_LAST"] = $lastItems; return $result; } public static function getList($params = array()) { $itemsSelected = $params['itemsSelected']; $entities = array( 'USERS' => array(), 'SONETGROUPS' => array(), 'GROUPS' => array(), 'DEPARTMENTS' => array() ); $sonetGroupIdList = $userIdList = $departmentIdList = array(); foreach ($itemsSelected as $code => $entityGroup) { if ($entityGroup == 'users') { $userIdList[] = str_replace('U', '', $code); } elseif ($entityGroup == 'sonetgroups') { $sonetGroupIdList[] = str_replace('SG', '', $code); } elseif ($entityGroup == 'department') { $departmentIdList[] = str_replace('DR', '', $code); } } if (!empty($userIdList)) { $entities['USERS'] = self::getUsers(array('id' => $userIdList)); } if (!empty($sonetGroupIdList)) { $entities['SONETGROUPS'] = self::getSonetgroups(array('id' => $sonetGroupIdList)); } if (!empty($departmentIdList)) { $entities['DEPARTMENTS'] = self::getDepartments(array('id' => $departmentIdList)); } if ( !Handler::isExtranetUser() && \Bitrix\Socialnetwork\ComponentHelper::getAllowToAllDestination() ) { $entities['GROUPS'] = array( 'UA' => array( 'id' => 'UA', 'name' => ( ModuleManager::isModuleInstalled('intranet') ? Loc::getMessage("MPF_DESTINATION_3") : Loc::getMessage("MPF_DESTINATION_4") ) ) ); } else { $entities['GROUPS'] = array(); } return $entities; } protected static function getUsers($params = array()) { return \CSocNetLogDestination::getUsers($params); } protected static function getSonetgroups($params = array()) { return \CSocNetLogDestination::getSocnetGroup($params); } protected static function getDepartments($params = array()) { $result = array(); if ( !empty($params['id']) && is_array($params['id']) && Loader::includeModule('intranet') ) { $departmentsList = \CIntranetUtils::getDepartmentsData($params['id']); foreach($departmentsList as $id => $name) { $result['DR'.$id] = array( 'id' => 'DR'.$id, 'entityId' => $id, 'name' => htmlspecialcharsbx($name), 'parent' => false ); } } return $result; } public static function getDepartmentData($requestFields = array()) { return array( 'USERS' => \CSocNetLogDestination::getUsers( array( 'deportament_id' => $requestFields['DEPARTMENT_ID'], "NAME_TEMPLATE" => Handler::getNameTemplate($requestFields) ) ), 'dataOnly' => true ); } }