Example #1
1
 private static function getUserFromForum($userId)
 {
     if ($userId > 0 && !array_key_exists($userId, self::$users)) {
         self::$users[$userId] = \CForumUser::getListEx(array(), array("USER_ID" => $userId))->fetch();
         if (!self::$users[$userId]) {
             self::$users[$userId] = \CUser::getById($userId)->fetch();
             self::$users[$userId]["SHOW_NAME"] = \COption::getOptionString("forum", "USER_SHOW_NAME", "Y");
         }
     }
     return self::$users[$userId];
 }
Example #2
0
 public static function setOccurAsUserId($userId = 'get key')
 {
     static $key = null;
     if ($key === null) {
         $key = 'occurAs_key:' . md5(mt_rand(1000, 999999) . '-' . mt_rand(1000, 999999));
         if ($userId !== 'get key') {
             CTasksPerHitOption::set('tasks', $key, false);
         }
     }
     if ($userId !== 'get key') {
         CTaskAssert::assertLaxIntegers($userId);
         $userId = (int) $userId;
         /** @noinspection PhpDynamicAsStaticMethodCallInspection */
         $rs = CUser::getById($userId);
         if (!($rs && $rs->fetch())) {
             throw new TasksException('User not found', TasksException::TE_ITEM_NOT_FOUND_OR_NOT_ACCESSIBLE);
         }
         CTasksPerHitOption::set('tasks', $key, $userId);
     }
     return $key;
 }
Example #3
0
$GLOBALS['APPLICATION']->AddHeadScript("/bitrix/js/tasks/task-iframe-popup.js");
$GLOBALS['APPLICATION']->SetAdditionalCSS("/bitrix/js/intranet/intranet-common.css");
$GLOBALS['APPLICATION']->SetAdditionalCSS("/bitrix/js/main/core/css/core_popup.css");
$GLOBALS['APPLICATION']->SetAdditionalCSS("/bitrix/js/tasks/css/tasks.css");
$GLOBALS["APPLICATION"]->IncludeComponent('bitrix:main.calendar', '', array('SILENT' => 'Y'), null, array('HIDE_ICONS' => 'Y'));
$arPaths = array("PATH_TO_TASKS_TASK" => $arParams["PATH_TO_TASKS_TASK"], "PATH_TO_USER_PROFILE" => $arParams["PATH_TO_USER_PROFILE"]);
$loggedInUser = $USER->getId();
$createUrl = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TASKS_TASK"], array("task_id" => 0, "action" => "edit"));
$createSubtaskUrl = $createUrl . (strpos($createUrl, "?") === false ? "?" : "&") . "PARENT_ID=" . $arResult["TASK"]["ID"];
$APPLICATION->IncludeComponent("bitrix:tasks.iframe.popup", ".default", array("ON_TASK_ADDED" => "onPopupTaskAdded", "ON_TASK_CHANGED" => "onPopupTaskChanged", "ON_TASK_DELETED" => "onPopupTaskDeleted"), null, array("HIDE_ICONS" => "Y"));
if (!defined('TASKS_MUL_INCLUDED')) {
    $APPLICATION->IncludeComponent("bitrix:main.user.link", '', array("AJAX_ONLY" => "Y", "PATH_TO_SONET_USER_PROFILE" => $arParams["~PATH_TO_USER_PROFILE"], "PATH_TO_SONET_MESSAGES_CHAT" => $arParams["~PATH_TO_MESSAGES_CHAT"], "DATE_TIME_FORMAT" => $arParams["~DATE_TIME_FORMAT"], "SHOW_YEAR" => $arParams["SHOW_YEAR"], "NAME_TEMPLATE" => $arParams["~NAME_TEMPLATE"], "SHOW_LOGIN" => $arParams["SHOW_LOGIN"], "PATH_TO_CONPANY_DEPARTMENT" => $arParams["~PATH_TO_CONPANY_DEPARTMENT"], "PATH_TO_VIDEO_CALL" => $arParams["~PATH_TO_VIDEO_CALL"]), false, array("HIDE_ICONS" => "Y"));
    define('TASKS_MUL_INCLUDED', 1);
}
$loggedInUserWorkPosition = '';
if ($rs = CUser::getById($loggedInUser)) {
    if ($arUserData = $rs->fetch()) {
        $loggedInUserWorkPosition = $arUserData['WORK_POSITION'];
    }
}
$loggedInUserFormattedName = CUser::FormatName($arParams['~NAME_TEMPLATE'], array('NAME' => $USER->GetFirstName(), 'LAST_NAME' => $USER->GetLastName(), 'SECOND_NAME' => $USER->GetSecondName(), 'LOGIN' => $USER->GetLogin()), true, $bEscapeSpecChars = false);
?>
<script type="text/javascript">
BX.message({
	TASKS_PRIORITY : '<?php 
echo CUtil::JSEscape(GetMessage("TASKS_PRIORITY"));
?>
',
	TASKS_APPLY : '<?php 
echo CUtil::JSEscape(GetMessage("TASKS_APPLY"));
?>
Example #4
0
 public static function getRootSectionIdForUser($iblockId, $userId)
 {
     global $USER_FIELD_MANAGER;
     global $UF_USE_BP;
     $result = CIBlockWebdavSocnet::getSectionId($iblockId, 'user', $userId);
     if (($result = intval($result)) > 0) {
         return $result;
     }
     $fields = array('IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y', 'SOCNET_GROUP_ID' => false, 'IBLOCK_SECTION_ID' => 0, 'UF_USE_BP' => 'N', 'UF_USE_EXT_SERVICES' => CWebDavIblock::resolveDefaultUseExtServices());
     $user = CUser::getById($userId)->fetch();
     if (empty($user)) {
         return false;
     }
     $fields['NAME'] = trim($user['LAST_NAME'] . ' ' . $user['FIRST_NAME']);
     $fields['NAME'] = trim(!empty($fields["NAME"]) ? $fields['NAME'] : $user['LOGIN']);
     $fields['CREATED_BY'] = $user['ID'];
     $fields['MODIFIED_BY'] = $user['ID'];
     if (CIBlock::GetArrayByID($iblockId, "RIGHTS_MODE") === "E") {
         $tasks = CWebDavIblock::GetTasks();
         $fields['RIGHTS'] = array('n0' => array('GROUP_CODE' => 'U' . $userId, 'TASK_ID' => $tasks['X']));
     }
     $UF_USE_BP = $fields['UF_USE_BP'];
     $USER_FIELD_MANAGER->editFormAddFields('IBLOCK_' . $iblockId . '_SECTION', $fields);
     $section = new CIBlockSection();
     $sectionId = $section->add($fields);
     if (!$sectionId) {
         return false;
     }
     WDClearComponentCache(array('webdav.element.edit', 'webdav.element.hist', 'webdav.element.upload', 'webdav.element.view', 'webdav.menu', 'webdav.section.edit', 'webdav.section.list'));
     return $sectionId;
 }
Example #5
0
 public static function sendNotify(array $folderInvite)
 {
     $serverName = (CMain::IsHTTPS() ? "https" : "http") . "://" . (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", ""));
     if (empty($folderInvite['IS_DELETED']) && !empty($folderInvite['IS_APPROVED']) && $folderInvite['USER_ID'] != $folderInvite['INVITE_USER_ID'] && \Bitrix\Main\Loader::includeModule('im')) {
         $sectionToShare = CIBlockSection::getList(array(), array('ID' => $folderInvite['SECTION_ID'], 'IBLOCK_ID' => $folderInvite['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'), false, array('NAME'))->fetch();
         if (empty($sectionToShare['NAME'])) {
             return;
         }
         $notifyFields = array();
         $notifyFields['NOTIFY_MODULE'] = 'webdav';
         $notifyFields['NOTIFY_EVENT'] = "invite";
         $notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM;
         $notifyFields['FROM_USER_ID'] = $folderInvite['USER_ID'];
         $notifyFields['TO_USER_ID'] = $folderInvite['INVITE_USER_ID'];
         $notifyFields['NOTIFY_TAG'] = \Bitrix\Webdav\FolderInviteTable::getNotifyTag($folderInvite);
         $notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}";
         $uriShow = \CComponentEngine::makePathFromTemplate(CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'), array('user_id' => $folderInvite['INVITE_USER_ID'])) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'];
         $uriDisconnect = \CComponentEngine::makePathFromTemplate(CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'), array('user_id' => $folderInvite['INVITE_USER_ID'])) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'] . '#disconnect';
         $notifyFields['NOTIFY_MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_APPROVE_N1', array('#FOLDERNAME#' => '<a href="' . $uriShow . '">' . $sectionToShare['NAME'] . '</a>', '#DISCONNECT_LINK#' => '<a href="' . $uriDisconnect . '">' . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . '</a>', '#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: ''));
         $notifyFields['NOTIFY_MESSAGE_OUT'] = GetMessage('WD_SYMLINK_INVITE_TEXT_APPROVE_N1', array('#FOLDERNAME#' => $sectionToShare['NAME'] . " ({$uriShow})", '#DISCONNECT_LINK#' => "\n\n" . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . ': ' . $serverName . $uriDisconnect, '#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: ''));
         \CIMNotify::Add($notifyFields);
     } elseif (empty($folderInvite['IS_DELETED']) && $folderInvite['USER_ID'] == $folderInvite['INVITE_USER_ID'] && \Bitrix\Main\Loader::includeModule('im')) {
         $sectionToShare = CIBlockSection::getList(array(), array('ID' => $folderInvite['SECTION_ID'], 'IBLOCK_ID' => $folderInvite['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'), false, array('NAME', 'SOCNET_GROUP_ID'))->fetch();
         if (empty($sectionToShare['NAME']) || empty($sectionToShare['SOCNET_GROUP_ID'])) {
             return;
         }
         if (\Bitrix\Main\Loader::includeModule('socialnetwork')) {
             $group = CSocNetGroup::GetList(array(), array('ID' => $sectionToShare['SOCNET_GROUP_ID']), false, false, array('NAME'))->fetch();
         }
         $notifyFields = array();
         $notifyFields['NOTIFY_MODULE'] = 'webdav';
         $notifyFields['NOTIFY_EVENT'] = "invite";
         $notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM;
         $notifyFields['FROM_USER_ID'] = $folderInvite['USER_ID'];
         $notifyFields['TO_USER_ID'] = $folderInvite['INVITE_USER_ID'];
         $notifyFields['NOTIFY_TAG'] = \Bitrix\Webdav\FolderInviteTable::getNotifyTag($folderInvite);
         $notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}";
         $uriShow = \CComponentEngine::makePathFromTemplate(CWebDavSymlinkHelper::getPathPattern('group', '/company/personal/user/#user_id#/'), array('user_id' => $folderInvite['INVITE_USER_ID'])) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'];
         $uriDisconnect = \CComponentEngine::makePathFromTemplate(CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'), array('user_id' => $folderInvite['INVITE_USER_ID'])) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'] . '#disconnect';
         if (\CWebDavTools::allowAutoconnectShareGroupFolder()) {
             $notifyFields['NOTIFY_MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_N1', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '', '#GROUPNAME#' => '<a href="' . $uriShow . '">' . $group['NAME'] . '</a>', '#DISCONNECT_LINK#' => '<a href="' . $uriDisconnect . '">' . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . '</a>'));
             $notifyFields['NOTIFY_MESSAGE_OUT'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_N1', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '', '#GROUPNAME#' => $group['NAME'], '#DISCONNECT_LINK#' => "\n\n" . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . ': ' . $serverName . $uriDisconnect));
         } elseif (empty($folderInvite['IS_APPROVED'])) {
             $notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_CONFIRM;
             $notifyFields['NOTIFY_BUTTONS'] = array(array('TITLE' => GetMessage('WD_SYMLINK_INVITE_APPROVE_Y'), 'VALUE' => 'Y', 'TYPE' => 'accept'), array('TITLE' => GetMessage('WD_SYMLINK_INVITE_APPROVE_N'), 'VALUE' => 'N', 'TYPE' => 'cancel'));
             $notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_CONFIRM_N1', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#GROUPNAME#' => $group['NAME']));
         }
         \CIMNotify::Add($notifyFields);
     } elseif (!empty($folderInvite['IS_DELETED']) && \Bitrix\Main\Loader::includeModule('im')) {
         $sectionToShare = CIBlockSection::getList(array(), array('ID' => $folderInvite['SECTION_ID'], 'IBLOCK_ID' => $folderInvite['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'), false, array('NAME'))->fetch();
         if (empty($sectionToShare['NAME'])) {
             return;
         }
         $inviteUser = \CUser::getById($folderInvite['INVITE_USER_ID']);
         if ($inviteUser) {
             $inviteUser = $inviteUser->fetch();
         }
         $notifyFields = array();
         $notifyFields['NOTIFY_MODULE'] = 'webdav';
         $notifyFields['NOTIFY_EVENT'] = "invite";
         $notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM;
         $notifyFields['FROM_USER_ID'] = $folderInvite['INVITE_USER_ID'];
         $notifyFields['TO_USER_ID'] = $folderInvite['USER_ID'];
         $notifyFields['NOTIFY_TAG'] = \Bitrix\Webdav\FolderInviteTable::getNotifyTag($folderInvite);
         $notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}";
         if (CWebDavTools::getUserGender($inviteUser['PERSONAL_GENDER']) == 'F') {
             $notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_F', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#USERNAME#' => CWebDavTools::getUserName($inviteUser)));
         } else {
             $notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_M', array('#FOLDERNAME#' => $sectionToShare['NAME'], '#USERNAME#' => CWebDavTools::getUserName($inviteUser)));
         }
         \CIMNotify::Add($notifyFields);
     }
 }
Example #6
-1
    public function Authorize()
    {
        global $APPLICATION;
        $APPLICATION->RestartBuffer();
        $authError = SOCSERV_AUTHORISATION_ERROR;
        if (isset($_REQUEST["code"]) && $_REQUEST["code"] != '' && CSocServAuthManager::CheckUniqueKey()) {
            $redirect_uri = CSocServUtil::ServerName() . '/bitrix/tools/oauth/bitrix24net.php';
            if ($this->getEntityOAuth($_REQUEST["code"])->GetAccessToken($redirect_uri) !== false) {
                $arB24NetUser = $this->entityOAuth->GetCurrentUser();
                if ($arB24NetUser) {
                    if (isset($_REQUEST['checkword']) && $arB24NetUser['PROFILE_ID'] > 0) {
                        $profileId = $arB24NetUser['PROFILE_ID'];
                        $checkword = trim($_REQUEST['checkword']);
                        $dbRes = CUser::getById($profileId);
                        $arUser = $dbRes->fetch();
                        if ($arUser && !$arUser['LAST_LOGIN']) {
                            if ($arUser['CONFIRM_CODE'] == $checkword) {
                                $arUserFields = array('XML_ID' => $arB24NetUser['ID'], 'EXTERNAL_AUTH_ID' => 'socservices');
                                if ($arUser['NAME'] == '' && $arUser['LAST_NAME'] == '') {
                                    $arUserFields['NAME'] = $arB24NetUser['NAME'];
                                    $arUserFields['LAST_NAME'] = $arB24NetUser['LAST_NAME'];
                                    if (strlen($arB24NetUser['PERSONAL_PHOTO']) > 0 && self::CheckPhotoURI($arB24NetUser['PERSONAL_PHOTO'])) {
                                        $arUserFields['PERSONAL_PHOTO'] = CFile::MakeFileArray($arB24NetUser['PERSONAL_PHOTO']);
                                    }
                                }
                                $obUser = new CUser();
                                if ($obUser->update($profileId, $arUserFields)) {
                                    foreach (GetModuleEvents("main", "OnUserInitialize", true) as $arEvent) {
                                        ExecuteModuleEventEx($arEvent, array($profileId, $arUserFields));
                                    }
                                }
                            }
                        }
                    }
                    $arFields = array('EXTERNAL_AUTH_ID' => self::ID, 'XML_ID' => $arB24NetUser["ID"], 'LOGIN' => "B24_" . $arB24NetUser["ID"], 'NAME' => $arB24NetUser["NAME"], 'LAST_NAME' => $arB24NetUser["LAST_NAME"], 'EMAIL' => $arB24NetUser["EMAIL"], 'PERSONAL_WWW' => $arB24NetUser["PROFILE"], 'OATOKEN' => $this->entityOAuth->getToken(), 'REFRESH_TOKEN' => $this->entityOAuth->getRefreshToken(), 'OATOKEN_EXPIRES' => $this->entityOAuth->getAccessTokenExpires());
                    if (IsModuleInstalled('bitrix24')) {
                        $arFields['LOGIN'] = $arFields['EMAIL'];
                    }
                    if (strlen(SITE_ID) > 0) {
                        $arFields["SITE_ID"] = SITE_ID;
                    }
                    $authError = $this->AuthorizeUser($arFields);
                }
            }
        }
        $bSuccess = $authError === true;
        $aRemove = array("logout", "auth_service_error", "auth_service_id", "code", "error_reason", "error", "error_description", "check_key", "current_fieldset", "checkword");
        $url = $APPLICATION->GetCurDir() == "/login/" ? "" : $APPLICATION->GetCurDir();
        $mode = 'page';
        if (isset($_REQUEST["state"])) {
            $arState = array();
            parse_str($_REQUEST["state"], $arState);
            if (isset($arState['backurl']) || isset($arState['redirect_url'])) {
                $parseUrl = parse_url(isset($arState['redirect_url']) ? $arState['redirect_url'] : $arState['backurl']);
                $urlPath = $parseUrl["path"];
                $arUrlQuery = explode('&', $parseUrl["query"]);
                foreach ($arUrlQuery as $key => $value) {
                    foreach ($aRemove as $param) {
                        if (strpos($value, $param . "=") === 0) {
                            unset($arUrlQuery[$key]);
                            break;
                        }
                    }
                }
                $url = !empty($arUrlQuery) ? $urlPath . '?' . implode("&", $arUrlQuery) : $urlPath;
            }
            if (isset($arState['mode'])) {
                $mode = $arState['mode'];
            }
        }
        if (strlen($url) <= 0 || preg_match("'^(http://|https://|ftp://|//)'i", $url)) {
            $url = CSocServUtil::ServerName() . '/';
        }
        $url = CUtil::JSEscape($url);
        if ($bSuccess) {
            unset($_SESSION['B24_NETWORK_REDIRECT_TRY']);
        } else {
            if (IsModuleInstalled('bitrix24')) {
                if (isset($_SESSION['B24_NETWORK_REDIRECT_TRY'])) {
                    unset($_SESSION['B24_NETWORK_REDIRECT_TRY']);
                    $url = self::getUrl();
                    $url .= (strpos($url, '?') >= 0 ? '&' : '?') . 'skip_redirect=1';
                } else {
                    $_SESSION['B24_NETWORK_REDIRECT_TRY'] = true;
                    $url = '/';
                }
            } else {
                if ($authError === SOCSERV_REGISTRATION_DENY) {
                    $url = preg_match("/\\?/", $url) ? $url . '&' : $url . '?';
                    $url .= 'auth_service_id=' . self::ID . '&auth_service_error=' . $authError;
                } elseif ($bSuccess !== true) {
                    $url = isset($urlPath) ? $urlPath . '?auth_service_id=' . self::ID . '&auth_service_error=' . $authError : $GLOBALS['APPLICATION']->GetCurPageParam('auth_service_id=' . self::ID . '&auth_service_error=' . $authError, $aRemove);
                }
            }
        }
        if (CModule::IncludeModule("socialnetwork") && strpos($url, "current_fieldset=") === false) {
            $url .= (strpos($url, "?") === false ? '?' : '&') . "current_fieldset=SOCSERV";
        }
        $location = $mode == "popup" ? 'if(window.opener) window.opener.location = \'' . $url . '\'; window.close();' : 'window.location = \'' . $url . '\';';
        ?>
<script type="text/javascript">
<?php 
        echo $location;
        ?>
</script>
<?php 
        die;
    }