2namespace Bitrix\Calendar\Sharing;
4use Bitrix\Calendar\Internals\SharingLinkTable;
5use Bitrix\Calendar\Sharing\Link\UserLink;
6use Bitrix\Calendar\Sharing\Link\Factory;
7use Bitrix\Calendar\Sharing\Link\UserLinkMapper;
8use Bitrix\Calendar\Util;
10use Bitrix\Main\Result;
45 Factory::getInstance()->createUserLink($this->userId);
49 $result->addError(
new Error(
'Sharing is already enabled', 100010));
52 $this->userLink =
false;
71 if (!empty($userLinks))
82 $result->addError(
new Error(
'Sharing is already disabled', 100020));
85 $this->userLink =
false;
108 $updateResult = SharingLinkTable::update((
int)$link[
'ID'], [
111 if (!$updateResult->isSuccess())
138 $updateResult = SharingLinkTable::update((
int)$link[
'ID'], [
139 'FREQUENT_USE' => $link[
'FREQUENT_USE'] + 1,
141 if (!$updateResult->isSuccess())
157 public function generateUserJointLink(
array $memberIds):
Result
161 if (!$this->isEnabled())
163 $result->addError(
new Error(
'Sharing is disabled', 100050));
169 $userJointLink = Factory::getInstance()->createUserJointLink($this->userId, $memberIds);
171 $linkArray = (
new UserLinkMapper())->convertToArray($userJointLink);
174 'url' => $linkArray[
'shortUrl'],
175 'link' => $linkArray,
201 $sharingRule = $linkRuleMapper->getFromLinkObjectRule($linkObjectRule);
207 $sharingRule =
$userLink->getSharingRule();
214 'hash' => $sharingHash,
215 'rule' => $linkRuleMapper->convertToArray($sharingRule),
223 'name' => \CCalendar::GetUserName($this->userId),
224 'avatar' => \CCalendar::GetUserAvatarSrc($this->userId),
234 public function getAllUserLinkInfo():
array
236 $userLinks = $this->getUserJointLinks();
240 return array_map(
static function($userLink) use ($userLinkMapper) {
241 return $userLinkMapper->convertToArray($userLink);
285 if (!$this->userLink)
290 return $this->userLink;
301 if (!empty($linkInfo))
303 $calendarSettings = \CCalendar::GetSettings();
305 'weekStart' => \CCalendar::GetWeekStart(),
306 'workTimeStart' => $calendarSettings[
'work_time_start'],
307 'workTimeEnd' => $calendarSettings[
'work_time_end'],
308 'weekHolidays' => $calendarSettings[
'week_holidays'],
310 'hash' => $linkInfo[
'hash'],
311 'slotSize' => $linkInfo[
'rule'][
'slotSize'],
312 'ranges' => $linkInfo[
'rule'][
'ranges'],
323 self::OPTION_SORT_JOINT_LINKS_BY_FREQUENT_USE => \CUserOptions::GetOption(
325 self::OPTION_SORT_JOINT_LINKS_BY_FREQUENT_USE,
329 self::OPTION_SHARING_SETTINGS_COLLAPSED => \CUserOptions::getOption(
331 self::OPTION_SHARING_SETTINGS_COLLAPSED,
340 \CUserOptions::SetOption(
342 self::OPTION_SORT_JOINT_LINKS_BY_FREQUENT_USE,
343 $sortByFrequentUse ?
'Y' :
'N',
351 \CUserOptions::SetOption(
353 self::OPTION_SHARING_SETTINGS_COLLAPSED,
354 $isCollapsed ?
'Y' :
'N',
368 $userLinks = Factory::getInstance()->getUserLinks(
$userId);
370 return !empty($userLinks) ? array_shift($userLinks) :
null;
380 return Factory::getInstance()->getAllUserLinks($this->userId);
390 return Factory::getInstance()->getUserJointLinks($this->userId);
400 return SharingLinkTable::query()
401 ->setSelect([
'ID',
'HASH',
'OBJECT_ID',
'OBJECT_TYPE',
'ACTIVE',
'FREQUENT_USE'])
402 ->where(
'OBJECT_ID', $this->userId)
403 ->where(
'OBJECT_TYPE',
Link\Helper::USER_SHARING_TYPE)
404 ->where(
'HASH',
$hash)
405 ->where(
'ACTIVE',
'Y')
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
setSharingSettingsCollapsed(bool $isCollapsed)
const OPTION_SHARING_SETTINGS_COLLAPSED
getUserLinkByUserId(int $userId)
getUserLinkByHash(?string $hash)
const OPTION_SORT_JOINT_LINKS_BY_FREQUENT_USE
UserLink null bool $userLink
setSortJointLinksByFrequentUse(bool $sortByFrequentUse)
increaseFrequentUse(?string $hash)
deactivateUserLink(?string $hash)
static isCollabUser(int $userId)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)