function _FormatUser(&$arUser, $arPath) { global $USER, $CACHE_ABSENCE; if ($arUser['PERSONAL_PHOTO']) { $arImage = CIntranetUtils::InitImage($arUser['PERSONAL_PHOTO'], 30); $arUser['PERSONAL_PHOTO'] = $arImage['IMG']; } if ($arPath['DETAIL_URL']) { $arUser['DETAIL_URL'] = str_replace('#ID#', $arUser['ID'], $arPath['DETAIL_URL']); } $arUser["canViewProfile"] = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser['ID'], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $arUser["canMessage"] = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser['ID'], "message", CSocNetUser::IsCurrentUserModuleAdmin()); if ($arPath['MESSAGES_CHAT_URL']) { $arUser['MESSAGES_CHAT_URL'] = str_replace('#ID#', $arUser['ID'], $arPath['MESSAGES_CHAT_URL']); } $arUser['IS_ABSENT'] = CIntranetUtils::IsUserAbsent($arUser['ID']); $arUser['IS_ONLINE'] = CSocNetUser::IsOnLine($arUser['ID']); if ($arUser['IS_ABSENT']) { $maxAbsence = 0; foreach ($CACHE_ABSENCE[$arUser["ID"]] as $arAbsence) { if (MakeTimeStamp($arAbsence["DATE_TO"]) > $maxAbsence) { $arUser['ABSENT_TILL'] = $arAbsence["DATE_TO"]; } } } $arFilter = array("TO_USER_ID" => $arUser['ID'], "MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE, "FROM_USER_ID" => $USER->GetID()); $dbMessages = CSocNetMessages::GetList(array("DATE_CREATE" => "DESC"), $arFilter, false, array("nTopCount" => 1), array("ID", "DATE_CREATE")); if ($arMessages = $dbMessages->GetNext()) { $arUser['LAST_CHAT'] = $arMessages["DATE_CREATE"]; } return true; }
public function executeComponent() { global $USER, $APPLICATION; if (!CModule::IncludeModule('mail')) { ShowError(GetMessage('MAIL_MODULE_NOT_INSTALLED')); return; } if (!is_object($USER) || !$USER->IsAuthorized()) { $APPLICATION->AuthForm(''); return; } if (!CIntranetUtils::IsExternalMailAvailable()) { ShowError(GetMessage('INTR_MAIL_UNAVAILABLE')); return; } $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : null; switch ($page) { case 'domain': return $this->executeDomainPage(); break; case 'manage': return $this->executeManagePage(); break; case 'success': return $this->executeSuccessPage(); break; default: return $this->executeHomePage($page); } }
public static function execute() { global $USER; $result = array(); $error = false; if (!CModule::IncludeModule('mail')) { $error = GetMessage('MAIL_MODULE_NOT_INSTALLED'); } if ($error === false) { if (!is_object($USER) || !$USER->IsAuthorized()) { $error = GetMessage('INTR_MAIL_AUTH'); } } if ($error === false) { if (!CIntranetUtils::IsExternalMailAvailable()) { $error = GetMessage('INTR_MAIL_UNAVAILABLE'); } } if ($error === false) { $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : null; $act = isset($_REQUEST['act']) ? $_REQUEST['act'] : null; switch ($page) { case 'domain': $result = (array) self::handleDomainAction($act, $error); break; case 'manage': $result = (array) self::handleManageAction($act, $error); break; default: $result = (array) self::handleDefaultAction($act, $error); } } self::returnJson(array_merge(array('result' => $error === false ? 'ok' : 'error', 'error' => CharsetConverter::ConvertCharset($error, SITE_CHARSET, 'UTF-8')), $result)); }
/** * Check if user is head of any company departmant * @param integer $userID User ID * @return boolean */ public static function isSupervisor($userID) { if (!Loader::includeModule('intranet')) { return false; } $dbResult = \CIntranetUtils::GetSubordinateDepartmentsList($userID); return is_array($dbResult->Fetch()); }
public function executeComponent() { global $APPLICATION; $this->arParams['LAST_MAIL_CHECK'] = null; $this->arParams['IS_TIME_TO_MAIL_CHECK'] = null; $settedUp = null; if (defined('SKIP_MAIL_CHECK') && SKIP_MAIL_CHECK == true) { $settedUp = false; } if (defined('ADMIN_SECTION') && ADMIN_SECTION == true) { $settedUp = false; } if ($settedUp !== false) { $isMobileInstalled = COption::GetOptionString('main', 'wizard_mobile_installed', 'N', SITE_ID) == 'Y'; $isMobileVersion = strpos($APPLICATION->GetCurPage(), SITE_DIR . 'm/') === 0; if ($isMobileInstalled && $isMobileVersion) { $settedUp = false; } } if ($settedUp !== false) { if (!is_callable(array('CIntranetUtils', 'IsExternalMailAvailable')) || !CIntranetUtils::IsExternalMailAvailable()) { $settedUp = false; } } if ($settedUp !== false) { $lastMailCheck = CUserOptions::GetOption('global', 'last_mail_check_' . SITE_ID, null); if (isset($lastMailCheck) && intval($lastMailCheck) < 0) { $settedUp = false; } } if ($settedUp !== false) { $isTimeToMailCheck = true; if (isset($lastMailCheck)) { $settedUp = true; $isTimeToMailCheck = false; if (intval($lastMailCheck) >= 0) { $checkInterval = COption::GetOptionString('intranet', 'mail_check_period', 10) * 60; $isTimeToMailCheck = time() - intval($lastMailCheck) >= $checkInterval; } } } if ($settedUp !== false) { $this->arParams['LAST_MAIL_CHECK'] = $lastMailCheck; $this->arParams['IS_TIME_TO_MAIL_CHECK'] = $isTimeToMailCheck; } $this->arParams['SETTED_UP'] = $settedUp; $this->includeComponentTemplate(); }
private static function searchImmediateEmployeesInSubDepartments($departmentId) { $arDepartmentHeads = array(); $arQueueDepartmentsEmployees = array(); // IDs of departments where we need employees $arSubDepartments = CIntranetUtils::getSubDepartments($departmentId); if (is_array($arSubDepartments)) { foreach ($arSubDepartments as $subDepId) { $headUserId = CIntranetUtils::GetDepartmentManagerID($subDepId); if ($headUserId) { $arDepartmentHeads[] = $headUserId; } else { $arQueueDepartmentsEmployees[] = $subDepId; $result = self::searchImmediateEmployeesInSubDepartments($subDepId); $arDepartmentHeads = array_merge($arDepartmentHeads, $result['arDepartmentHeads']); $arQueueDepartmentsEmployees = array_merge($arQueueDepartmentsEmployees, $result['arQueueDepartmentsEmployees']); } } } return array('arDepartmentHeads' => $arDepartmentHeads, 'arQueueDepartmentsEmployees' => $arQueueDepartmentsEmployees); }
$arDepCacheValue[$arSect['ID']] = $arSect['NAME']; } } foreach ($arUser['UF_DEPARTMENT'] as $key => $sect) { $arDep[$sect] = $arDepCacheValue[$sect]; } } $arUser['UF_DEPARTMENT'] = $arDep; $arUser["DETAIL_URL"] = $arItem["URL"]; $arUser['IS_ONLINE'] = $bSoNet && $arUser['IS_ONLINE'] == "Y"; if ($arUser['PERSONAL_BIRTHDAY']) { $arBirthDate = ParseDateTime($arUser['PERSONAL_BIRTHDAY'], CSite::GetDateFormat('SHORT')); $arUser['IS_BIRTHDAY'] = intval($arBirthDate['MM']) == date('n') && intval($arBirthDate['DD']) == date('j'); } $arUser['IS_FEATURED'] = CIntranetUtils::IsUserHonoured($arUser['ID']); $arUser['IS_ABSENT'] = CIntranetUtils::IsUserAbsent($arUser['ID']); $arResult["SEARCH"][$i]["USER"] = $arUser; } } } $arResult['USER_PROP'] = array(); $arRes = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("USER", 0, LANGUAGE_ID); if (!empty($arRes)) { foreach ($arRes as $key => $val) { $arResult['USER_PROP'][$val["FIELD_NAME"]] = strLen($val["EDIT_FORM_LABEL"]) > 0 ? $val["EDIT_FORM_LABEL"] : $val["FIELD_NAME"]; } } } $arrDropdown = array(); $arResult["DROPDOWN_SONET"] = array(); $EntityType = array_key_exists("arrFILTER", $arParams) && in_array("socialnetwork_group", $arParams["arrFILTER"]) ? SONET_ENTITY_GROUP : SONET_ENTITY_USER;
$user_url = COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/', $_REQUEST['site_id']); $obUser = new CTimeManUser($arRes['USER_ID']); $obUser->SITE_ID = $_REQUEST['site_id']; $bReturnRes = true; $dbRes = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => $arRes['USER_ID']), array('SELECT' => array('UF_*'))); $arCurrentUser = $dbRes->GetNext(); $arCurrentUser['PHOTO'] = $arCurrentUser['PERSONAL_PHOTO'] > 0 ? CIntranetUtils::InitImage($arCurrentUser['PERSONAL_PHOTO'], 32, 0, BX_RESIZE_IMAGE_EXACT) : array(); $arManagers = CTimeMan::GetUserManagers($arRes['USER_ID']); if (!is_array($arManagers) || count($arManagers) <= 0) { $arManagers = array($arRes['USER_ID']); } $user_url = COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/', $_REQUEST['site_id']); $dbManagers = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => implode('|', $arManagers))); $arCurrentUserManagers = array(); while ($manager = $dbManagers->Fetch()) { $manager['PHOTO'] = $manager['PERSONAL_PHOTO'] > 0 ? CIntranetUtils::InitImage($manager['PERSONAL_PHOTO'], 32, 0, BX_RESIZE_IMAGE_EXACT) : array(); $arCurrentUserManagers[] = array('ID' => $manager['ID'], 'LOGIN' => $manager['LOGIN'], 'NAME' => CUser::FormatName(CSite::GetNameFormat(false), $manager, true, false), 'URL' => str_replace(array('#ID#', '#USER_ID#'), $manager['ID'], $user_url), 'WORK_POSITION' => $manager['WORK_POSITION'], 'PHOTO' => $manager['PHOTO']['CACHE']['src']); } $arRes['DATE_START'] = MakeTimeStamp($arRes['DATE_START']) - CTimeZone::GetOffset(); $arRes['DATE_FINISH'] = MakeTimeStamp($arRes['DATE_FINISH']) - CTimeZone::GetOffset(); $arInfo = array('INFO' => $arRes, 'DATE_TEXT' => FormatDate('j F Y', $arRes['DATE_START']), 'CALENDAR_ENABLED' => CBXFeatures::IsFeatureEnabled('Calendar'), 'TASKS_ENABLED' => CBXFeatures::IsFeatureEnabled('Tasks') && IsModuleInstalled('tasks')); $cur_info = $obUser->GetCurrentInfo(); if ($cur_info['ID'] == $ID) { $arInfo['STATE'] = $obUser->State(); $arInfo['EXPIRED_DATE'] = $obUser->GetExpiredRecommendedDate(); } else { $arInfo['STATE'] = 'CLOSED'; } $res = array('FROM' => array('ID' => $arCurrentUser['ID'], 'LOGIN' => $arCurrentUser['LOGIN'], 'NAME' => CUser::FormatName(CSite::GetNameFormat(false), $arCurrentUser, true, false), 'URL' => str_replace(array('#ID#', '#USER_ID#'), $arCurrentUser['ID'], $user_url), 'WORK_POSITION' => $arCurrentUser['WORK_POSITION'], 'PHOTO' => $arCurrentUser['PHOTO']['CACHE']['src']), 'TO' => array_values($arCurrentUserManagers), 'INFO' => $arInfo, 'REPORT' => '', 'CAN_EDIT' => $bCanEdit ? 'Y' : 'N', 'REPORTS' => array()); if (count($res['TO']) <= 0) { $res['TO'] = array($res['FROM']);
$show_user = "******"; if (isset($_REQUEST['show_user'])) { if ($_REQUEST['show_user'] == 'inactive') { $show_user = '******'; } elseif ($_REQUEST['show_user'] == 'fired') { $show_user = '******'; } elseif ($_REQUEST['show_user'] == 'extranet') { $show_user = '******'; } elseif ($_REQUEST['show_user'] == 'all') { $show_user = '******'; } else { $show_user = '******'; } } $arParams["show_user"] = $show_user; $outlook_link = 'javascript:' . CIntranetUtils::GetStsSyncURL(array('LINK_URL' => $APPLICATION->GetCurPage()), 'contacts', $arParams["EXTRANET_TYPE"] == "employees" ? true : false); global $USER; ?> <div class="employee-search-block"> <?php if (($USER->CanDoOperation('bitrix24_invite') && IsModuleInstalled('bitrix24') || !IsModuleInstalled("bitrix24") && $USER->CanDoOperation('edit_all_users')) && CModule::IncludeModule('intranet') && $arParams['TABLE_VIEW'] != 'group_table') { ?> <a class="webform-small-button webform-small-button-blue bx24-top-toolbar-add" href="javascript:void(0)" onclick="<?php echo CIntranetInviteDialog::ShowInviteDialogLink(); ?> "> <span class="webform-small-button-icon"></span> <span class="webform-small-button-text"><?php echo GetMessage("INTR_COMP_IS_TPL_TOOLBAR_USER_INVITE"); ?> </span>
$arResult['DEPARTMENTS'] = array(); $dbRes = CIntranetUtils::GetSubordinateDepartmentsList($arResult["User"]["ID"]); while ($arRes = $dbRes->GetNext()) { $arRes['URL'] = str_replace('#ID#', $arRes['ID'], $arParams['PATH_TO_CONPANY_DEPARTMENT']); $arResult['DEPARTMENTS'][$arRes['ID']] = $arRes; $arResult['DEPARTMENTS'][$arRes['ID']]['EMPLOYEE_COUNT'] = 0; $rsUsers = CIntranetUtils::GetDepartmentEmployees(array($arRes['ID']), $bRecursive = true); while ($arUser = $rsUsers->Fetch()) { if ($arUser['ID'] != $arResult["User"]["ID"]) { //self $arResult['DEPARTMENTS'][$arRes['ID']]['EMPLOYEE_COUNT']++; } } } //managers $arResult['MANAGERS'] = CIntranetUtils::GetDepartmentManager($arResult["User"]["UF_DEPARTMENT"], $arResult["User"]["ID"], true); if ($arParams["CACHE_TIME"] > 0) { $obCache->EndDataCache(array('DEPARTMENTS' => $arResult['DEPARTMENTS'], 'MANAGERS' => $arResult['MANAGERS'])); if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->EndTagCache(); } } } elseif ($arParams["CACHE_TIME"] > 0) { $vars = $obCache->GetVars(); $arResult['DEPARTMENTS'] = $vars['DEPARTMENTS']; $arResult['MANAGERS'] = $vars['MANAGERS']; } if (CModule::IncludeModule("extranet") && CExtranet::IsExtranetSite() && !CExtranet::IsIntranetUser()) { $arResult['MANAGERS'] = array(); } }
public function UpdateListItems($listName, $updates) { global $USER; $arStatusValues = array_flip($this->arStatusValues); $arPriorityValues = array_flip($this->arPriorityValues); if (!$listName_original = CIntranetUtils::checkGUID($listName)) return new CSoapFault('Data error', 'Wrong GUID - '.$listName); $obResponse = new CXMLCreator('Results'); $listName = ToUpper(CIntranetUtils::makeGUID($listName_original)); $arSections = CCalendarSect::GetList(array('arFilter' => array('XML_ID' => $listName_original))); if (!$arSections || !is_array($arSections[0])) return new CSoapFault( 'List not found', 'List with '.$listName.' GUID not found' ); $arSection = $arSections[0]; $bGroup = $arSection['CAL_TYPE'] == 'group'; $calType = $arSection['CAL_TYPE']; $ownerId = $arSection['OWNER_ID']; if ($bGroup) { CModule::IncludeModule('socialnetwork'); $arGroupTmp = CSocNetGroup::GetByID($arSection['SOCNET_GROUP_ID']); if ($arGroupTmp["CLOSED"] == "Y") if (COption::GetOptionString("socialnetwork", "work_with_closed_groups", "N") != "Y") return new CSoapFault('Cannot modify archive group calendar', 'Cannot modify archive group calendar'); } $obBatch = $updates->children[0]; $atrONERROR = $obBatch->getAttribute('OnError'); $atrDATEINUTC = $obBatch->getAttribute('DateInUtc'); $atrPROPERTIES = $obBatch->getAttribute('Properties'); $arChanges = $obBatch->children; $arResultIDs = array(); $dateStart = ConvertTimeStamp(strtotime('-1 hour'), 'FULL'); $arResponseRows = array(); $arReplicationIDs = array(); $userId = (is_object($USER) && $USER->GetID()) ? $USER->GetID() : 1; foreach ($arChanges as $obMethod) { $arData = array('_command' => $obMethod->getAttribute('Cmd')); foreach ($obMethod->children as $obField) { $name = $obField->getAttribute('Name'); if ($name == 'MetaInfo') $name .= '_'.$obField->getAttribute('Property'); $arData[$name] = $obField->content; } if ($arData['_command'] == 'Delete') { $obRes = new CXMLCreator('Result'); $obRes->setAttribute('ID', $obMethod->getAttribute('ID').','.$arData['_command']); $obRes->setAttribute('List', $listName); $obRes->addChild($obNode = new CXMLCreator('ErrorCode')); $res = CCalendar::DeleteEvent($arData['ID']); if ($res === true) $obNode->setData('0x00000000'); else $obNode->setData('0x81020014'); /* 0x00000000 - ok 0x81020015 - data conflict 0x81020014 - generic error such as invalid value for Field 0x81020016 - item does not exist */ $obResponse->addChild($obRes); } elseif ($arData['_command'] == 'New' || $arData['_command'] == 'Update') { $q = ToLower($arData['Description']); if (($pos = strrpos($q, '</body>')) !== false) $arData['Description'] = substr($arData['Description'], 0, $pos); if (($pos = strpos($q, '<body>')) !== false) $arData['Description'] = substr($arData['Description'], $pos + 6); $arData['Description'] = str_replace('</DIV>', "\r\n</DIV>", $arData['Description']); $arData['Description'] = str_replace(array(" ", " "), "", $arData['Description']); $arData['Description'] = preg_replace("/<![^>]*>/", '', $arData['Description']); //$arData['Description'] = strip_tags($arData['Description']); $arData['Description'] = trim($arData['Description']); $arData['Location'] = trim($arData['Location']); if (isset($arData['EventDate'])) { $arData['EventDate'] = $this->__makeTS($arData['EventDate']); $arData['EndDate'] = $this->__makeTS($arData['EndDate']) + ($arData['fAllDayEvent'] ? -86340 : 0); $TZBias = intval(date('Z', $arData['EventDate'])); } $arData['EventType'] = intval($arData['EventType']); if ($arData['EventType'] == 2) $arData['EventType'] = 0; if ($arData['EventType'] > 2 /* || ($arData['EventType'] == 1 && !$arData['RecurrenceData'])*/) return new CSoapFault( 'Unsupported event type', 'Event type unsupported' ); $arData['fRecurrence'] = intval($arData['fRecurrence']); $arData['RRULE'] = ''; $id = $arData['_command'] == 'New' ? 0 : intVal($arData['ID']); if ($arData['RecurrenceData']) { //$xmlstr = $arData['XMLTZone']; //$arData['XMLTZone'] = new CDataXML(); //$arData['XMLTZone']->LoadString($xmlstr); $xmlstr = $arData['RecurrenceData']; $obRecurData = new CDataXML(); $obRecurData->LoadString($xmlstr); /* <recurrence> <rule> <firstDayOfWeek>mo</firstDayOfWeek> <repeat> <weekly mo='TRUE' tu='TRUE' th='TRUE' sa='TRUE' weekFrequency='1' /> </repeat> <repeatForever>FALSE</repeatForever> </rule> </recurrence> <deleteExceptions>true</deleteExceptions> */ $obRecurRule = $obRecurData->tree->children[0]->children[0]; $obRecurRepeat = $obRecurRule->children[1]; $obNode = $obRecurRepeat->children[0]; $arData['RRULE'] = array(); switch($obNode->name) { case 'daily': // hack. we have no "work days" daily recurence if ($obNode->getAttribute('weekday') == 'TRUE') { $arData['RRULE']['FREQ'] = 'WEEKLY'; $arData['RRULE']['BYDAY'] = 'MO,TU,WE,TH,FR'; $arData['RRULE']['INTERVAL'] = 1; } else { $arData['RRULE']['FREQ'] = 'DAILY'; $arData['RRULE']['INTERVAL'] = $obNode->getAttribute('dayFrequency'); } $time_end = strtotime( date(date('Y-m-d', $arData['EventDate']).' H:i:s', $arData['EndDate']) ); $arData['DT_LENGTH'] = $time_end - $arData['EventDate']; break; case 'weekly': $arData['RRULE']['FREQ'] = 'WEEKLY'; $arData['RRULE']['BYDAY'] = ''; $arWeekDays = array('mo', 'tu', 'we', 'th', 'fr', 'sa', 'su'); foreach ($arWeekDays as $day => $value) { if ($obNode->getAttribute($value)) $arData['RRULE']['BYDAY'][] = strtoupper($value); } $arData['RRULE']['BYDAY'] = implode(',', $arData['RRULE']['BYDAY']); $arData['RRULE']['INTERVAL'] = $obNode->getAttribute('weekFrequency'); $time_end = strtotime(date(date('Y-m-d', $arData['EventDate']).' H:i:s', $arData['EndDate'])); $arData['DT_LENGTH'] = $time_end - $arData['EventDate']; break; case 'monthly': $arData['RRULE']['FREQ'] = 'MONTHLY'; $arData['RRULE']['INTERVAL'] = $obNode->getAttribute('monthFrequency'); $time_end = strtotime(date(date('Y-m', $arData['EventDate']).'-d H:i:s', $arData['EndDate'])); $arData['DT_LENGTH'] = $time_end - $arData['EventDate']; break; case 'yearly': $arData['RRULE']['FREQ'] = 'YEARLY'; $arData['RRULE']['INTERVAL'] = $obNode->getAttribute('yearFrequency'); $time_end = strtotime(date(date('Y', $arData['EventDate']).'-m-d H:i:s', $arData['EndDate'])); $arData['DT_LENGTH'] = $time_end - $arData['EventDate']; break; } if ($arData['DT_LENGTH'] == 0 && isset($arData['RRULE']['FREQ'])) $arData['DT_LENGTH'] = 86400; $obWhile = $obRecurRule->children[2]; if ($obWhile->name == 'repeatForever') { $arData['EndDate'] = MakeTimeStamp(''); } elseif ($obWhile->name == 'windowEnd') { $arData['EndDate'] = $this->__makeTS($obWhile->textContent()); $arData['RRULE']['UNTIL'] = ConvertTimeStamp($arData['EndDate'], 'FULL'); } } elseif($arData['fRecurrence'] == -1 && $id > 0) { $arData['RRULE'] = -1; } if (isset($arData['EventDate'])) { $skipTime = $arData['fAllDayEvent'] ? 'Y' : 'N'; $TZBias = $arData['fAllDayEvent'] ? 0 : $TZBias; $arData['EventDate'] += $TZBias; $arData['EndDate'] += $TZBias; // $arData["DT_FROM"] = ConvertTimeStamp($arData['EventDate'], 'FULL'); // $arData["DT_TO"] = ConvertTimeStamp($arData['EndDate'], 'FULL'); } else { $arData["DT_FROM"] = -1; $arData["DT_TO"] = -1; } // fields $arFields = array( "ID" => $id, 'CAL_TYPE' => $calType, 'OWNER_ID' => $ownerId, 'CREATED_BY' => $userId, 'DT_FROM_TS' => $arData['EventDate'], 'DT_TO_TS' => $arData['EndDate'], 'DT_SKIP_TIME' => $skipTime, // "DT_FROM" => $arData["DT_FROM"], // "DT_TO" => $arData["DT_TO"], 'NAME' => $arData['Title'], 'DESCRIPTION' => CCalendar::ParseHTMLToBB($arData['Description']), 'SECTIONS' => array($arSection['ID']), 'ACCESSIBILITY' => $arStatusValues[$arData['MetaInfo_BusyStatus']], 'IMPORTANCE' => $arPriorityValues[$arData['MetaInfo_Priority']], 'RRULE' => $arData['RRULE'], 'LOCATION' => CCalendar::UnParseTextLocation($arData['Location']) ); if (isset($arData['DT_LENGTH']) && $arData['DT_LENGTH'] > 0) $arFields['DT_LENGTH'] = $arData['DT_LENGTH']; $EventID = CCalendar::SaveEvent( array( 'arFields' => $arFields, 'fromWebservice' => true ) ); if ($EventID) { // dirty hack $arReplicationIDs[$EventID] = $arData['MetaInfo_ReplicationID']; $arResponseRows[$EventID] = new CXMLCreator('Result'); $arResponseRows[$EventID]->setAttribute('ID', $obMethod->getAttribute('ID').','.$arData['_command']); $arResponseRows[$EventID]->setAttribute('List', $listName); $arResponseRows[$EventID]->addChild($obNode = new CXMLCreator('ErrorCode')); $obNode->setData('0x00000000'); //$arResponseRows[$EventID]->setAttribute('Version', 3); } } } $userId = (is_object($USER) && $USER->GetID()) ? $USER->GetID() : 1; $fetchMeetings = CCalendar::GetMeetingSection($userId) == $arSection['ID']; $arEvents = CCalendarEvent::GetList( array( 'arFilter' => array( 'CAL_TYPE' => $calType, 'OWNER_ID' => $ownerId, 'SECTION' => $arSection['ID'], //'INCLUDE_INVITINGS' => 'N' ), 'getUserfields' => false, 'parseRecursion' => false, 'fetchAttendees' => false, 'fetchMeetings' => $fetchMeetings, 'userId' => $userId ) ); foreach ($arEvents as $key => $event) { if ($arResponseRows[$event['ID']]) { $obRow = $this->__getRow($event, $listName, $last_change = 0); $obRow->setAttribute('xmlns:z', "#RowsetSchema"); if ($arReplicationIDs[$event['ID']]) $obRow->setAttribute('MetaInfo_ReplicationID', $arReplicationIDs[$event['ID']]); $arResponseRows[$event['ID']]->addChild($obRow); } $obResponse->addChild($arResponseRows[$event['ID']]); } return array('UpdateListItemsResult' => $obResponse); }
public function Execute() { if (!CModule::IncludeModule("intranet")) { $this->UserType = "random"; $this->SkipAbsent = "N"; } $arUsers = array(); if ($this->UserType == "boss") { if ($this->SkipAbsent != "Y" && $this->SkipAbsent != "N") { $this->SkipAbsent = "N"; } $arUsers = $this->GetUsersList($this->UserParameter, false); if (count($arUsers) <= 0) { $this->GetUser = null; return CBPActivityExecutionStatus::Closed; } $userId = $arUsers[0]; $arUserDepartmentId = null; $dbUser = CUser::GetByID($userId); if ($arUser = $dbUser->Fetch()) { if (isset($arUser["UF_DEPARTMENT"])) { if (!is_array($arUser["UF_DEPARTMENT"])) { $arUser["UF_DEPARTMENT"] = array($arUser["UF_DEPARTMENT"]); } foreach ($arUser["UF_DEPARTMENT"] as $v) { $arUserDepartmentId[] = $v; } } } $arUserDepartments = array(); $departmentIBlockId = COption::GetOptionInt('intranet', 'iblock_structure'); foreach ($arUserDepartmentId as $departmentId) { $ar = array(); $dbPath = CIBlockSection::GetNavChain($departmentIBlockId, $departmentId); while ($arPath = $dbPath->GetNext()) { $ar[] = $arPath["ID"]; } $arUserDepartments[] = array_reverse($ar); } $arBoss = array(); foreach ($arUserDepartments as $arV) { $maxLevel = $this->MaxLevel; foreach ($arV as $level => $deptId) { if ($maxLevel > 0 && $level + 1 > $maxLevel) { break; } $dbRes = CIBlockSection::GetList(array(), array('IBLOCK_ID' => $departmentIBlockId, 'ID' => $deptId), false, array('ID', 'UF_HEAD')); while ($arRes = $dbRes->Fetch()) { if ($arRes["UF_HEAD"] == $userId || intval($arRes["UF_HEAD"]) <= 0 || $this->SkipAbsent == "Y" && CIntranetUtils::IsUserAbsent($arRes["UF_HEAD"])) { $maxLevel++; continue; } if (!in_array($arRes["UF_HEAD"], $arBoss)) { $arBoss[] = $arRes["UF_HEAD"]; } } } } $ar = array(); foreach ($arBoss as $v) { $ar[] = "user_" . $v; } if (count($ar) == 0) { $ar = null; } elseif (count($ar) == 1) { $ar = $ar[0]; } if ($ar !== null) { $this->GetUser = $ar; return CBPActivityExecutionStatus::Closed; } } else { if ($this->SkipAbsent != "Y" && $this->SkipAbsent != "N") { $this->SkipAbsent = "Y"; } $arUsers = $this->GetUsersList($this->UserParameter, $this->SkipAbsent == "Y"); if ($this->SkipAbsent == "Y") { $arUsers = array_values($arUsers); } if (count($arUsers) > 0) { $rnd = mt_rand(0, count($arUsers) - 1); $this->GetUser = "******" . $arUsers[$rnd]; return CBPActivityExecutionStatus::Closed; } } $arReserveUsers = $this->GetUsersList($this->ReserveUserParameter, $this->SkipAbsent == "Y"); if (count($arReserveUsers) > 0) { if ($this->UserType == 'random') { $this->GetUser = '******' . $arReserveUsers[0]; } else { foreach ($arReserveUsers as &$user) { $user = '******' . $user; } unset($user); $this->GetUser = $arReserveUsers; } } return CBPActivityExecutionStatus::Closed; }
: </td> <td> <?php if ($arResult['CURRENT_USER']['DEPARTMENT_TOP']) { ?> <input type="checkbox" id="only_mine_office" onclick="BXChangeFilterTop_adv(this)" <?php echo $arResult['FILTER_VALUES'][$arParams['FILTER_NAME'] . '_UF_DEPARTMENT'] == $arResult['CURRENT_USER']['DEPARTMENT_TOP'] || $arResult['FILTER_VALUES'][$arParams['FILTER_NAME'] . '_UF_DEPARTMENT'] == array($arResult['CURRENT_USER']['DEPARTMENT_TOP']) ? 'checked="checked"' : ''; ?> /> <label for="only_mine_office"><?php echo GetMessage('INTR_ISS_PARAM_DEPARTMENT_MINE'); ?> </label><br /> <?php } CIntranetUtils::ShowDepartmentFilter($arResult['UF_DEPARTMENT_field'], $arResult['bVarsFromForm']); ?> </td> </tr><tr> <?php } ?> <td class="bx-filter-caption"><?php echo GetMessage('INTR_ISS_PARAM_POST'); ?> : </td> <td><input type="text" name="<?php echo $arParams['FILTER_NAME']; ?> _POST" value="<?php echo $arResult['FILTER_VALUES'][$arParams['FILTER_NAME'] . '_POST'];
$this->SetViewTarget("sidebar_tools_2", 100); ?> <div class="sidebar-links"> <?php if ($arResult['USER_CAN_SET_HEAD'] && $current_section) { ?> <span id="blank"></span> <a href="javascript:void(0)" id="bx_head_link" onclick="ShowHeadMenu(this);" style="display: none;"><i class="sidebar-action-head"></i><b><?php echo GetMessage('INTR_IS_TPL_HEAD'); ?> <span></span></b></a> <?php } ?> <a href="javascript:<?php echo htmlspecialcharsbx(CIntranetUtils::GetStsSyncURL(array('LINK_URL' => $APPLICATION->GetCurPage()), 'contacts')); ?> " title="<?php echo GetMessage('INTR_IS_TPL_OUTLOOK_TITLE'); ?> "><i class="sidebar-action-outlook"></i><b><?php echo GetMessage('INTR_IS_TPL_OUTLOOK'); ?> </b></a> </div> <?php $this->EndViewTarget(); echo $sFilter; ?> <br /> <?php
<tr><td><li><a href="javascript:<?php echo htmlspecialcharsbx(CIntranetUtils::GetStsSyncURL(array('LINK_URL' => '/' . $USER->GetID() . '/'), 'tasks')); ?> "><?php echo GetMessage("COMPANY_TASKS"); ?> </a></td></tr> <?php if (COption::GetOptionInt("intranet", 'iblock_calendar', 0) > 0) { $dbRs = CIBlockSection::GetList(array(), array("IBLOCK_ID" => COption::GetOptionInt("intranet", 'iblock_calendar', 0), 'CREATED_BY' => $USER->GetID())); if ($arRs = $dbRs->Fetch()) { $dbRs2 = CIBlockSection::GetList(array(), array('SECTION_ID' => $arRs["ID"])); while ($arRs2 = $dbRs2->GetNext()) { ?> <tr><td><li><a href="javascript:<?php echo htmlspecialcharsbx(CIntranetUtils::GetStsSyncURL(array('ID' => $arRs2["ID"], 'LINK_URL' => 'company/personal/user/' . $USER->GetID() . '/calendar/'), 'calendar')); ?> "><?php echo GetMessage("COMPANY_CONNECT"); ?> <?php echo $arRs2["NAME"]; ?> </a></td></tr> <?php } ?> <?php } } ?>
protected static function _GetWhere($ID) { if ($SP_LIST_ID = CIntranetUtils::checkGUID($ID)) { return 'SP_LIST_ID=\'' . $SP_LIST_ID . '\''; } else { $ID = intval($ID); if ($ID <= 0) { return false; } return 'IBLOCK_ID=\'' . $ID . '\''; } }
private static function getSubUsers($userId) { static $arSubUsersIdsCache = array(); if (!isset($arSubUsersIdsCache[$userId])) { $arSubUsersIds = array(); /** @noinspection PhpDynamicAsStaticMethodCallInspection */ $rsSubUsers = CIntranetUtils::GetSubordinateEmployees($userId, $bRecursive = true, $bSkipSelf = false, $onlyActive = 'Y'); while ($ar = $rsSubUsers->fetch()) { $arSubUsersIds[] = (int) $ar['ID']; } $arSubUsersIdsCache[$userId] = $arSubUsersIds; } return $arSubUsersIdsCache[$userId]; }
} $matches = array(); if (preg_match('/^(.*?)<[a-z0-9.\\-_]+@[a-z0-9.\\-]+> \\[([\\d]+?)\\]/i', $search, $matches)) { $matches[2] = intval($matches[2]); if ($matches[2] > 0 && (!is_array($arUsersToFilter) || in_array($matches[2], $arUsersToFilter))) { $dbRes = CUser::GetByID($matches[2]); if ($arRes = $dbRes->Fetch()) { $arUsers = array(array('ID' => $arRes['ID'], 'NAME' => str_replace(array(';', ','), ' ', CIntranetUtils::FormatName($nameTemplate, $arRes, false)) . ' <' . $arRes['EMAIL'] . '>', 'UF_DEPARTMENT' => $arRes['UF_DEPARTMENT'], 'READY' => 'Y')); Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); echo CUtil::PhpToJsObject($arUsers); die; } } elseif (strlen($matches[1]) > 0) { $search = $matches[1]; } } $arUsers = array(); if (GetFilterQuery("TEST", $search)) { $arFilter = array("ACTIVE" => "Y", "CONFIRM_CODE" => false, "NAME_SEARCH" => $search); if ("I" == $EXTERNAL) { $arFilter["!UF_DEPARTMENT"] = false; } $dbRes = CUser::GetList($by = "last_name", $order = "asc", $arFilter, array("SELECT" => array("UF_DEPARTMENT"), "FIELDS" => array("ID", "NAME", "LAST_NAME", "SECOND_NAME", "EMAIL", "LOGIN"), "NAV_PARAMS" => array("nTopCount" => 10))); while ($arRes = $dbRes->Fetch()) { $arUsers[] = array("ID" => $arRes["ID"], "NAME" => str_replace(array(';', ','), ' ', CIntranetUtils::FormatName($nameTemplate, $arRes, false)) . ' <' . $arRes['EMAIL'] . '>', "UF_DEPARTMENT" => $arRes["UF_DEPARTMENT"]); } } Header('Content-Type: application/x-javascript; charset=' . LANG_CHARSET); echo CUtil::PhpToJsObject($arUsers); die; }
$notSelectedUsersId = $arParams['VALUE']; // Prevent using users, that doesn't activate it's account // http://jabber.bx/view.php?id=29118 if (IsModuleInstalled('bitrix24')) { $arFilter['CONFIRM_CODE'] = false; } $dbRes = CUser::GetList($by = 'last_name', $order = 'asc', $arFilter, array('SELECT' => array('UF_DEPARTMENT'))); while ($arRes = $dbRes->GetNext()) { if (($key = array_search($arRes['ID'], $notSelectedUsersId)) !== false) { //if user already selected, then we not select from extranet unset($notSelectedUsersId[$key]); } $arResult["CURRENT_USERS"][] = array('ID' => $arRes['ID'], 'NAME' => CUser::FormatName($arParams["NAME_TEMPLATE"], $arRes, true, false), '~NAME' => CUser::FormatName($arParams["NAME_TEMPLATE"], array("NAME" => $arRes["~NAME"], "LAST_NAME" => $arRes["~LAST_NAME"], "LOGIN" => $arRes["~LOGIN"], "SECOND_NAME" => $arRes["~SECOND_NAME"]), true, false), 'LOGIN' => $arRes['LOGIN'], 'EMAIL' => $arRes['EMAIL'], 'WORK_POSITION' => $arRes['WORK_POSITION'] ? $arRes['WORK_POSITION'] : $arRes['PERSONAL_PROFESSION'], '~WORK_POSITION' => $arRes['~WORK_POSITION'] ? $arRes['~WORK_POSITION'] : $arRes['~PERSONAL_PROFESSION'], 'PHOTO' => (string) CIntranetUtils::createAvatar($arRes, array(), $arParams['SITE_ID']), 'HEAD' => false, 'SUBORDINATE' => is_array($arSubDeps) && is_array($arRes['UF_DEPARTMENT']) && array_intersect($arRes['UF_DEPARTMENT'], $arSubDeps) ? 'Y' : 'N', 'SUPERORDINATE' => in_array($arRes["ID"], $arManagers) ? 'Y' : 'N'); } if ($notSelectedUsersId && CModule::IncludeModule('extranet')) { foreach (CIntranetUserSelectorHelper::getExtranetUsers(implode('|', $notSelectedUsersId)) as $arRes) { $arResult["CURRENT_USERS"][] = array('ID' => $arRes['ID'], 'NAME' => CUser::FormatName($arParams["NAME_TEMPLATE"], $arRes, true, false), '~NAME' => CUser::FormatName($arParams["NAME_TEMPLATE"], array("NAME" => $arRes["~NAME"], "LAST_NAME" => $arRes["~LAST_NAME"], "LOGIN" => $arRes["~LOGIN"], "SECOND_NAME" => $arRes["~SECOND_NAME"]), true, false), 'LOGIN' => $arRes['LOGIN'], 'EMAIL' => $arRes['EMAIL'], 'WORK_POSITION' => $arRes['WORK_POSITION'] ? $arRes['WORK_POSITION'] : $arRes['PERSONAL_PROFESSION'], '~WORK_POSITION' => $arRes['~WORK_POSITION'] ? $arRes['~WORK_POSITION'] : $arRes['~PERSONAL_PROFESSION'], 'PHOTO' => (string) CIntranetUtils::createAvatar($arRes, array(), $arParams['SITE_ID']), 'HEAD' => false, 'SUBORDINATE' => is_array($arSubDeps) && is_array($arRes['UF_DEPARTMENT']) && array_intersect($arRes['UF_DEPARTMENT'], $arSubDeps) ? 'Y' : 'N', 'SUPERORDINATE' => in_array($arRes["ID"], $arManagers) ? 'Y' : 'N'); } unset($arRes); } } $arResult['FIXED_USERS'] = isset($arParams['FIXED_USERS']) && is_array($arParams['FIXED_USERS']) ? $arParams['FIXED_USERS'] : array(); $groups = array(); if ($arParams["DISPLAY_TAB_GROUP"] == 'Y') { $groups = CIntranetUserSelectorHelper::getUserGroups($USER->GetID()); } $arResult["GROUPS"] = $groups; $arResult["CURRENT_USERS"] = array_values(array_filter($arResult["CURRENT_USERS"], array('CIntranetUserSelectorHelper', 'filterViewableUsers'))); $arResult["LAST_USERS"] = array_values(array_filter($arResult["LAST_USERS"], array('CIntranetUserSelectorHelper', 'filterViewableUsers'))); CUtil::InitJSCore(array("tooltip")); $this->IncludeComponentTemplate();
function GetAttachmentCollection($listName, $listItemID) { $start = microtime(true); if (!($listName_original = CIntranetUtils::checkGUID($listName))) { return new CSoapFault('Data error', 'Wrong GUID - ' . $listName); } $listName = ToUpper(CIntranetUtils::makeGUID($listName_original)); $listItemID = intval($listItemID); $dbRes = CUser::GetByID($listItemID); //$dbRes = CUser::GetList(($by="id"), ($order="asc"), array("ID_EQUAL_EXACT"=>IntVal($listItemID))); //$dbRes = $GLOBALS['DB']->Query('SELECT PERSONAL_PHOTO FROM b_user WHERE id=\''.$listItemID.'\''); $obData = new CXMLCreator('Attachments'); if (($arUser = $dbRes->Fetch()) && $arUser['PERSONAL_PHOTO']) { $arImage = self::InitImage($arUser['PERSONAL_PHOTO'], 100, 100); $obData->addChild($obAttachment = new CXMLCreator('Attachment')); $obAttachment->setData(CHTTP::URN2URI($arImage['CACHE']['src'])); //$data = '<Attachments><Attachment>http://'.$_SERVER['SERVER_NAME'].$arImage['CACHE']['src'].'</Attachment></Attachments>'; } // else // { // $data = '<Attachments></Attachments>'; // } //return array('GetAttachmentCollectionResult' => $data); return array('GetAttachmentCollectionResult' => $obData); }
public static function GetRecentList($arParams = Array()) { global $DB, $USER; $bLoadUnreadMessage = isset($arParams['LOAD_UNREAD_MESSAGE']) && $arParams['LOAD_UNREAD_MESSAGE'] == 'Y'? true: false; $bTimeZone = isset($arParams['USE_TIME_ZONE']) && $arParams['USE_TIME_ZONE'] == 'N'? false: true; $bSmiles = isset($arParams['USE_SMILES']) && $arParams['USE_SMILES'] == 'N'? false: true; $nameTemplate = COption::GetOptionString("im", "user_name_template", "#LAST_NAME# #NAME#", SITE_ID); $nameTemplateSite = CSite::GetNameFormat(false); $nameOfSite = CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser()? "ex": false; $bIntranetEnable = IsModuleInstalled('intranet') && CModule::IncludeModule('intranet')? true: false; $arRecent = Array(); $arUsers = Array(); $cache_ttl = 2592000; $cache_id = $GLOBALS['USER']->GetID(); $cache_dir = '/bx/imc/rec'.CIMMessenger::GetCachePath($cache_id); $obCache = new CPHPCache(); if($obCache->InitCache($cache_ttl, $cache_id, $cache_dir)) { $ar = $obCache->GetVars(); $arRecent = $ar['recent']; $arUsers = $ar['users']; } else { if (!$bTimeZone) CTimeZone::Disable(); $strSql = " SELECT R.ITEM_TYPE, R.ITEM_ID, R.ITEM_MID M_ID, M.AUTHOR_ID M_AUTHOR_ID, M.MESSAGE M_MESSAGE, ".$DB->DatetimeToTimestampFunction('M.DATE_CREATE')." M_DATE_CREATE, C.TITLE C_TITLE, C.AUTHOR_ID C_OWNER_ID, U.LOGIN, U.NAME, U.LAST_NAME, U.PERSONAL_PHOTO, U.SECOND_NAME, U.PERSONAL_BIRTHDAY, U.PERSONAL_GENDER FROM b_im_recent R LEFT JOIN b_user U ON R.ITEM_TYPE = '".IM_MESSAGE_PRIVATE."' AND R.ITEM_ID = U.ID LEFT JOIN b_im_chat C ON R.ITEM_TYPE = '".IM_MESSAGE_GROUP."' AND R.ITEM_ID = C.ID LEFT JOIN b_im_message M ON R.ITEM_MID = M.ID WHERE R.USER_ID = ".$USER->GetId(); if (!$bTimeZone) CTimeZone::Enable(); $toDelete = Array(); $CCTP = new CTextParser(); $CCTP->MaxStringLen = 255; $CCTP->allow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => ($bSmiles? "Y": "N"), "NL2BR" => "Y", "VIDEO" => "N", "TABLE" => "N", "CUT_ANCHOR" => "N", "ALIGN" => "N"); $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); while ($arRes = $dbRes->GetNext(true, false)) { $arRes['ITEM_TYPE'] = trim($arRes['ITEM_TYPE']); if ($arRes['M_DATE_CREATE']+2592000 < time()) { $toDelete[$arRes['ITEM_TYPE']][] = $arRes['ITEM_ID']; continue; } $itemId = $arRes['ITEM_ID']; $item = Array( 'TYPE' => $arRes['ITEM_TYPE'], 'MESSAGE' => Array( 'id' => $arRes['M_ID'], 'senderId' => $arRes['M_AUTHOR_ID'], 'date' => $arRes['M_DATE_CREATE'], 'text' => $CCTP->convertText(preg_replace("/\[s\].*?\[\/s\]/i", "", $arRes['M_MESSAGE'])) ) ); $item['MESSAGE']['text'] = preg_replace("/------------------------------------------------------(.*)------------------------------------------------------/mi", " [".GetMessage('IM_QUOTE')."] ", strip_tags(str_replace(array("<br>","<br/>","<br />", "#BR#"), Array(" "," ", " ", " "), $item['MESSAGE']['text']), "<img>")); if ($arRes['ITEM_TYPE'] == IM_MESSAGE_PRIVATE) { $arUsers[] = $arRes['ITEM_ID']; $arFileTmp = CFile::ResizeImageGet( $arRes["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false ); $item['USER'] = Array( 'id' => $arRes['ITEM_ID'], 'name' => CUser::FormatName($nameTemplateSite, $arRes, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arRes, true, false), 'avatar' => empty($arFileTmp['src'])? '/bitrix/js/im/images/blank.gif': $arFileTmp['src'], 'gender' => $arRes['PERSONAL_GENDER'] == 'F'? 'F': 'M', 'status' => 'offline', 'birthday' => $arRes['PERSONAL_BIRTHDAY'], 'profile' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('im', 'path_to_user_profile', "", $nameOfSite), array("user_id" => $arRes["ITEM_ID"])) ); } else { $itemId = 'chat'.$itemId; $item['CHAT'] = Array( 'id' => $arRes['ITEM_ID'], 'name' => $arRes["C_TITLE"], 'owner' => $arRes["C_OWNER_ID"], ); } $arRecent[$itemId] = $item; } // remove old entity if (!empty($toDelete)) { if (isset($toDelete[IM_MESSAGE_PRIVATE])) self::DeleteRecent($toDelete[IM_MESSAGE_PRIVATE]); if (isset($toDelete[IM_MESSAGE_GROUP])) self::DeleteRecent($toDelete[IM_MESSAGE_GROUP], true); } if($obCache->StartDataCache()) $obCache->EndDataCache(Array('recent' => $arRecent, 'users' => $arUsers)); } $arOnline = self::GetStatus(Array('ID' => array_values($arUsers))); foreach ($arRecent as $key => $value) { if ($value['TYPE'] != IM_MESSAGE_PRIVATE) continue; $arRecent[$key]['USER']['birthday'] = $bIntranetEnable? CIntranetUtils::IsToday($value['USER']['birthday']): false; $arRecent[$key]['USER']['status'] = isset($arOnline['users'][$value['USER']['id']])? 'online': 'offline'; } if ($bLoadUnreadMessage) { $CIMMessage = new CIMMessage(false, Array( 'hide_link' => true )); $ar = $CIMMessage->GetUnreadMessage(Array( 'LOAD_DEPARTMENT' => 'N', 'ORDER' => 'ASC', 'GROUP_BY_CHAT' => 'Y', 'USE_TIME_ZONE' => $bTimeZone? 'Y': 'N', 'USE_SMILES' => $bSmiles? 'Y': 'N' )); foreach ($ar['message'] as $data) { if (!isset($arRecent[$data['senderId']])) { $arRecent[$data['senderId']] = Array( 'TYPE' => IM_MESSAGE_PRIVATE, 'USER' => $ar['users'][$data['senderId']] ); } $arRecent[$data['senderId']]['MESSAGE'] = Array( 'id' => $data['id'], 'senderId' => $data['senderId'], 'date' => $data['date'], 'text' => preg_replace("/------------------------------------------------------(.*)------------------------------------------------------/mi", " [".GetMessage('IM_QUOTE')."] ", strip_tags(str_replace(array("<br>","<br/>","<br />", "#BR#"), Array(" ", " ", " ", " "), $data['text']), "<img>")) ); $arRecent[$data['senderId']]['COUNTER'] = $data['counter']; } $CIMChat = new CIMChat(false, Array( 'hide_link' => true )); $ar = $CIMChat->GetUnreadMessage(Array( 'ORDER' => 'ASC', 'GROUP_BY_CHAT' => 'Y', 'USER_LOAD' => 'N', 'USE_SMILES' => $bSmiles? 'Y': 'N', 'USE_TIME_ZONE' => $bTimeZone? 'Y': 'N' )); foreach ($ar['message'] as $data) { if (!isset($arRecent['chat'.$data['recipientId']])) { $arRecent['chat'.$data['recipientId']] = Array( 'TYPE' => IM_MESSAGE_GROUP, 'CHAT' => $ar['chat'] ); } $arRecent['chat'.$data['recipientId']]['MESSAGE'] = Array( 'id' => $data['id'], 'senderId' => $data['senderId'], 'date' => $data['date'], 'text' => $data['text'] ); $arRecent['chat'.$data['recipientId']]['COUNTER'] = $data['counter']; } } if (!empty($arRecent)) { sortByColumn( $arRecent, array( 'COUNTER' => array(SORT_NUMERIC, SORT_DESC), 'MESSAGE' => array(SORT_NUMERIC, SORT_DESC) ), array( 'COUNTER' => function($counter){ return !is_null($counter); }, 'MESSAGE' => function($recent){ return $recent['date']; } ), null, true ); } return $arRecent; }
function __InTaskTaskComplete($taskCompleteId, $iblockId, $taskType, $ownerId, $arTaskStatus, $arParams) { $errorMessage = ""; $taskCompleteId = IntVal($taskCompleteId); if ($taskCompleteId <= 0) { return ""; } $arTask = __InTaskGetTask($taskCompleteId, $iblockId, $taskType, $ownerId); if (!$arTask) { $errorMessage .= GetMessage("INTL_TASK_NOT_FOUND") . "."; } if (StrLen($errorMessage) <= 0) { if ($arTask["PROPS"]["TASKASSIGNEDTO"]["VALUE"] != $GLOBALS["USER"]->GetID()) { $errorMessage .= GetMessage("INTL_CAN_NOT_FINISH") . "."; } } if (StrLen($arResult["ErrorMessage"]) <= 0) { $obIB = new CIBlockElement(); $obIB->SetPropertyValueCode($taskCompleteId, $arTask["PROPS"]["TASKSTATUS"]["ID"], $arTaskStatus["COMPLETED"]["ID"]); $obIB->SetPropertyValueCode($taskCompleteId, $arTask["PROPS"]["TASKCOMPLETE"]["ID"], array(100)); $obIB->SetPropertyValueCode($taskCompleteId, $arTask["PROPS"]["TASKFINISH"]["ID"], array(Date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME)))); // added by sigurd CIntranetUtils::UpdateOWSVersion($iblockId, $taskCompleteId); $obIB->Update($taskCompleteId, array('TIMESTAMP_X' => Date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME)))); $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM, "FROM_USER_ID" => $GLOBALS["USER"]->GetID(), "TO_USER_ID" => $arTask["FIELDS"]["CREATED_BY"]); if ($arMessageFields["FROM_USER_ID"] != $arMessageFields["TO_USER_ID"]) { $path2view = ($GLOBALS["APPLICATION"]->IsHTTPS() ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_TASKS_TASK"], array("owner_id" => $arTask["PROPS"]["TASKASSIGNEDTO"]["VALUE"], "task_id" => $taskCompleteId, "action" => "view")); $arMessageFields["MESSAGE"] = str_replace(array("#URL_VIEW#", "#NAME#"), array($path2view, $arTask["FIELDS"]["NAME"]), GetMessage("INTL_FINISH_MESSAGE")); CSocNetMessages::Add($arMessageFields); } } return $errorMessage; }
} if (StrLen($arResult["FatalError"]) <= 0) { $arResult["Urls"]["User"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["User"]["ID"])); $arResult["Urls"]["UserMessages"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_USERS_MESSAGES"], array("user_id" => $arResult["User"]["ID"])); $arResult["Urls"]["VideoCall"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_VIDEO_CALL"], array("user_id" => $arResult["User"]["ID"])); if (!CModule::IncludeModule("video")) { $arResult["CurrentUserPerms"]["Operations"]["videocall"] = false; } $arResult["IS_ONLINE"] = $arResult["User"]["IS_ONLINE"] == "Y"; if ($arResult["User"]['PERSONAL_BIRTHDAY'] != '') { $arBirthDate = ParseDateTime($arResult["User"]['PERSONAL_BIRTHDAY'], CSite::GetDateFormat('SHORT')); $arResult['IS_BIRTHDAY'] = intval($arBirthDate['MM']) == date('n') && intval($arBirthDate['DD']) == date('j'); } if (CModule::IncludeModule('intranet')) { $arResult['IS_FEATURED'] = CIntranetUtils::IsUserHonoured($arResult["User"]['ID']); $arResult['IS_ABSENT'] = CIntranetUtils::IsUserAbsent($arResult["User"]['ID']); } if (intval($arResult["User"]["PERSONAL_PHOTO"]) <= 0) { switch ($arResult["User"]["PERSONAL_GENDER"]) { case "M": $suffix = "male"; break; case "F": $suffix = "female"; break; default: $suffix = "unknown"; } $arResult["User"]["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID); } $arImage = CSocNetTools::InitImage($arResult["User"]["PERSONAL_PHOTO"], 50, "/bitrix/images/socialnetwork/nopic_user_50.gif", 50, $arResult["CurrentUserPerms"]["Operations"]["viewprofile"] ? $arResult["Urls"]["User"] : "", true, 'target="_blank"');
public static function GetGratMedalUsers($arParams = array()) { global $USER; $userId = intval($USER->GetID()); if (!isset($GLOBALS["SOCNET_LOG_DESTINATION"]["GetGratMedalUsers"][$userId])) { $arSubordinateDepts = array(); if (CModule::IncludeModule("intranet")) { $arSubordinateDepts = CIntranetUtils::GetSubordinateDepartments($userId, true); } $arFilter = array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false); $arExtParams = array("FIELDS" => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "WORK_POSITION", "PERSONAL_PROFESSION", "IS_ONLINE"), "SELECT" => array("UF_DEPARTMENT")); if (isset($arParams["id"])) { if (empty($arParams["id"])) { $arFilter["ID"] = $userId; } else { $arSelect = array(); foreach ($arParams["id"] as $value) { $arSelect[] = intval($value); } $arFilter["ID"] = implode("|", $arSelect); } } $arGratUsers = array(); $arMedalUsers = array(); $dbUsers = CUser::GetList($sort_by = array("last_name" => "asc", "IS_ONLINE" => "desc"), $dummy = '', $arFilter, $arExtParams); while ($arUser = $dbUsers->GetNext()) { $sName = trim(CUser::FormatName(empty($arParams["NAME_TEMPLATE"]) ? CSite::GetNameFormat(false) : $arParams["NAME_TEMPLATE"], $arUser)); if (empty($sName)) { $sName = $arUser["~LOGIN"]; } $arFileTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array("width" => 32, "height" => 32), BX_RESIZE_IMAGE_EXACT, false); $arGratUsers['U' . $arUser["ID"]] = array("id" => "U" . $arUser["ID"], "entityId" => $arUser["ID"], "name" => $sName, "avatar" => empty($arFileTmp["src"]) ? '' : $arFileTmp["src"], "desc" => $arUser["WORK_POSITION"] ? $arUser["WORK_POSITION"] : ($arUser["PERSONAL_PROFESSION"] ? $arUser["PERSONAL_PROFESSION"] : " ")); if (count($arSubordinateDepts) > 0 && count(array_intersect($arSubordinateDepts, $arUser["UF_DEPARTMENT"])) > 0) { $arMedalUsers['U' . $arUser["ID"]] = $arGratUsers['U' . $arUser["ID"]]; } } $GLOBALS["SOCNET_LOG_DESTINATION"]["GetGratMedalUsers"][$userId] = array("GRAT" => $arGratUsers, "MEDAL" => $arMedalUsers); } return $GLOBALS["SOCNET_LOG_DESTINATION"]["GetGratMedalUsers"][$userId]; }
} $cacheDir = SITE_ID . '/intranet/user_info/'; $obUserCache = new CPHPCache(); if ($obUserCache->InitCache($cacheTtl, $cacheID, $cacheDir)) { $cacheData = $obUserCache->GetVars(); $arResult['CURRENT_USER'] = $cacheData['CURRENT_USER']; $arResult['ONLY_MINE'] = $cacheData['ONLY_MINE']; unset($cacheData); } else { global $CACHE_MANAGER; $CACHE_MANAGER->StartTagCache($cacheDir); if ($arParams['bShowFilter']) { $dbCurrentUser = CUser::GetByID($GLOBALS['USER']->GetID()); $arResult['CURRENT_USER'] = $dbCurrentUser->Fetch(); if ($arParams['bShowFilter'] = !!$arResult['CURRENT_USER']['UF_DEPARTMENT']) { $arResult['CURRENT_USER']['DEPARTMENT_TOP'] = CIntranetUtils::GetIBlockTopSection($arResult['CURRENT_USER']['UF_DEPARTMENT']); if (intval($arResult['DEPARTMENT']) == $arResult['CURRENT_USER']['DEPARTMENT_TOP']) { $arResult['ONLY_MINE'] = 'Y'; } } } $CACHE_MANAGER->RegisterTag('bx_user_intranet_info_' . $arResult['CURRENT_USER']['ID']); $CACHE_MANAGER->EndTagCache(); } if ($obUserCache->StartDataCache()) { $obUserCache->EndDataCache(array('CURRENT_USER' => $arResult['CURRENT_USER'], 'ONLY_MINE' => $arResult['ONLY_MINE'])); } foreach ($arResult['USERS'] as $key => $arUser) { if ($arUser['PERSONAL_PHOTO']) { $imageFile = CFile::GetFileArray($arUser['PERSONAL_PHOTO']); if ($imageFile !== false) {
public static function GetUserManagers($userId, $bReturnIds = false) { if (!isset(self::$userManagers[$userId])) { $rsUser = CUser::GetByID($userId); if ($arUser = $rsUser->Fetch()) { self::SetUserDepartment($userId, $arUser["UF_DEPARTMENT"]); self::$userManagers[$userId] = CIntranetUtils::GetDepartmentManager($arUser["UF_DEPARTMENT"], $arUser["ID"], true); } else { self::$userManagers[$userId] = false; } } if (!$bReturnIds) { return self::$userManagers[$userId]; } $res = array(); if (is_array(self::$userManagers[$userId])) { foreach (self::$userManagers[$userId] as $user) { $res[] = $user['ID']; } } return $res; }
function GetDepartmentManagerOld($arDepartments, $skipUserId = false, $bRecursive = false) { if (!is_array($arDepartments) || empty($arDepartments)) { return array(); } $arManagers = array(); $dbSections = CIBlockSection::GetList(array('SORT' => 'ASC'), array('ID' => $arDepartments, 'IBLOCK_ID' => COption::GetOptionInt('intranet', 'iblock_structure', 0)), false, array('ID', 'UF_HEAD', 'IBLOCK_SECTION_ID')); while ($arSection = $dbSections->Fetch()) { $bFound = false; if ($arSection["UF_HEAD"] > 0) { $dbUser = CUser::GetByID($arSection["UF_HEAD"]); $arUser = $dbUser->GetNext(); if ($arUser) { if ($arUser["ID"] != $skipUserId) { $arManagers[$arUser["ID"]] = $arUser; $bFound = true; } } } if (!$bFound && $bRecursive && $arSection['IBLOCK_SECTION_ID'] > 0) { $ar = CIntranetUtils::GetDepartmentManagerOld(array($arSection['IBLOCK_SECTION_ID']), $skipUserId, $bRecursive); $arManagers = $arManagers + $ar; } } return $arManagers; }
public static function getHeadsOfDepartments() { $companyStructure = \CIntranetUtils::getStructure(); $users = array(); foreach ($companyStructure['DATA'] as $departmentData) { if (!empty($departmentData['UF_HEAD'])) { $users[] = (int) $departmentData['UF_HEAD']; } } return array_unique($users); }
value="N"><?php echo GetMessage('TMR_FILTER_ONLY_DIRECT'); ?> </option> </select> <a href="javascript:void(0)" class="filter-reset" onclick="this.blur(); document.forms.REPORT_FILTER.show_all.value = 'Y'; window.BXTMREPORT.Filter(); return false;"></a> </span> <span class="tm-filter-item inactive"> <?php function __tmr_replace($str) { $str = preg_replace('/<option([^>]*)>' . GetMessage('MAIN_NO') . '<\\/option>/i' . BX_UTF_PCRE_MODIFIER, '<option\\1>' . GetMessage('TMR_FILTER_DEPT_0') . '</option>', $str); $str = preg_replace('/class="([^"]*)"/i', 'class="\\1" onchange="window.BXTMREPORT.Filter();"', $str); return $str; } CIntranetUtils::ShowDepartmentFilter($arResult['UF_DEPARTMENT_field'], true, false, '__tmr_replace'); ?> <script type="text/javascript"> document.forms.REPORT_FILTER.department.value = "<?php echo $arResult["DEPARTMENT_ID"]; ?> "; </script> <a href="javascript:void(0);" class="filter-reset" onclick="this.blur(); document.forms.REPORT_FILTER.department.value = ''; window.BXTMREPORT.Filter(); return false;"></a> </span> <span class="tm-settings-item" id="TMBUTTON" onclick="BXTMREPORT.InitSettingMode(this);"> <span class="tm-settings-l"></span><span class="tm-settings-c"><span class="tm-settings-icon"></span><?php echo GetMessage("TM_SETTINGS"); ?> </span><span class="tm-settings-r"></span> </span>
public function GetReportData($force = false) { $arResult = array("REPORT_INFO" => array(), "REPORT_DATA" => array()); $date = $arResult["REPORT_INFO"] = $this->GetReportInfo(); if ($date["IS_REPORT_DAY"] == "N") { return $arResult; } elseif ($date["IS_REPORT_DAY"] == "Y") { if ($date["IS_DELAY"] == "Y" && MakeTimeStamp($date["DELAY_TIME"], TM_FULL_FORMAT) < time()) { $date["IS_DELAY"] = "N"; } if (($date["IS_DELAY"] == "Y" || $date["SHOW_REPORT_FORM"] == "N") && !$force) { return $arResult; } } $datefomat = CSite::GetDateFormat("SHORT", SITE_ID); $USER_ID = $this->USER_ID; $arManagers = CTimeMan::GetUserManagers($USER_ID); $arManagers[] = $USER_ID; $user_url = COption::GetOptionString('intranet', 'path_user', '/company/personal/user/#USER_ID#/', SITE_ID); $dbManagers = CUser::GetList($by = 'ID', $order = 'ASC', array('ID' => implode('|', $arManagers))); $arCurrentUserManagers = array(); $arCurrentUser = array(); while ($manager = $dbManagers->GetNext()) { $manager['PHOTO'] = $manager['PERSONAL_PHOTO'] > 0 ? CIntranetUtils::InitImage($manager['PERSONAL_PHOTO'], 32, 0, BX_RESIZE_IMAGE_EXACT) : array(); $userData = array('ID' => $manager['ID'], 'LOGIN' => $manager['LOGIN'], 'NAME' => CUser::FormatName(CSite::GetNameFormat(false), $manager, true, false), 'URL' => str_replace(array('#ID#', '#USER_ID#'), $manager['ID'], $user_url), 'WORK_POSITION' => $manager['WORK_POSITION'], 'PHOTO' => $manager['PHOTO']['CACHE']['src']); if ($userData["ID"] == $this->USER_ID) { $arCurrentUser = $userData; } else { $arCurrentUserManagers[] = $userData; } } if (count($arCurrentUserManagers) == 0) { $arCurrentUserManagers[] = $arCurrentUser; } $arInfo = CTimeMan::GetRuntimeInfo(true); $dbReports = CTimeManReport::GetList(array('ID' => 'ASC'), array('ENTRY_ID' => $arInfo["ID"], 'REPORT_TYPE' => 'REPORT')); if ($Report = $dbReports->Fetch()) { $RTReport = $Report["REPORT"]; } $dbReport = CTimeManReportFull::GetList(array("DATE_FROM" => "DESC"), array("USER_ID" => $USER_ID, "ACTIVE" => "N"), array(), array("nTopCount" => 1)); if ($arReport = $dbReport->Fetch()) { $arInfo["REPORT_DATE_FROM"] = MakeTimeStamp($arReport["DATE_FROM"], $datefomat); $arInfo["REPORT_DATE_TO"] = MakeTimeStamp($arReport["DATE_TO"], $datefomat); //$arInfo["TASKS"] = unserialize($arReport["TASKS"]); $arInfo["REPORT"] = $arReport["REPORT"]; $arInfo["PLANS"] = $arReport["PLANS"]; if ($arReport["FILES"]) { $arInfo["FILES"] = unserialize($arReport["FILES"]); } $arInfo["REPORT_ID"] = $arReport["ID"]; if ($arInfo["REPORT_DATE_FROM"] != $arInfo["REPORT_DATE_TO"]) { $arInfo['DATE_TEXT'] = FormatDate('j F', $arInfo["REPORT_DATE_FROM"]) . " - " . FormatDate('j F', $arInfo["REPORT_DATE_TO"]); } else { $arInfo['DATE_TEXT'] = FormatDate('j F', $arInfo["REPORT_DATE_TO"]); } } else { if (isset($_SESSION['report_files']) && is_array($_SESSION['report_files'])) { $arInfo["FILES"] = $_SESSION['report_files']; } $arInfo["REPORT_DATE_FROM"] = MakeTimeStamp($date["DATE_FROM"], TM_SHORT_FORMAT); $arInfo["REPORT_DATE_TO"] = MakeTimeStamp($date["DATE_TO"], TM_SHORT_FORMAT); } $date_to = $date["DATE_TO"] ? $date["DATE_TO"] : $arReport["DATE_TO"]; $date_to = MakeTimeStamp($date_to, CSite::GetDateFormat("SHORT", SITE_ID)); $today = CTimeMan::RemoveHoursTS(time()); if ($date_to < $today) { $arInfo["TASKS"] = array(); $arInfo["EVENTS"] = array(); } $arLastTasks = array(); $arFilter = array(">=REPORT_DATE" => $date["DATE_FROM"] ? $date["DATE_FROM"] : $arReport["DATE_FROM"], "<=REPORT_DATE" => $date["DATE_TO"] ? $date["DATE_TO"] : $arReport["DATE_TO"], "USER_ID" => $USER_ID); $arTaskIDs = array(); $arEventIDs = array(); if (is_array($arInfo['PLANNER'])) { $arInfo = array_merge($arInfo, $arInfo['PLANNER']['DATA']); unset($arInfo['PLANNER']); } if (is_array($arInfo["TASKS"])) { foreach ($arInfo["TASKS"] as $task) { $arTaskIDs[] = $task["ID"]; } } if (is_array($arInfo["EVENTS"])) { foreach ($arInfo["EVENTS"] as $event) { $arEventIDs[] = $event["ID"]; } } $res = CTimeManReportDaily::GetList(array(), $arFilter); while ($day = $res->Fetch()) { $arDayTasks = unserialize($day["TASKS"]); $arDayEvents = unserialize($day["EVENTS"]); if (is_array($arDayTasks)) { foreach ($arDayTasks as $task) { if (!in_array($task["ID"], $arTaskIDs)) { $arInfo["TASKS"][] = $task; $arTaskIDs[] = $task["ID"]; } else { foreach ($arInfo["TASKS"] as $key => $cur_task) { if ($cur_task["ID"] == $task["ID"]) { $arInfo["TASKS"][$key]["TIME"] += $task["TIME"]; } } } } } if (is_array($arDayEvents)) { foreach ($arDayEvents as $event) { if (!in_array($event["ID"], $arEventIDs)) { $arInfo["EVENTS"][] = $event; $arEventIDs[] = $event["ID"]; } } } if (strlen($day["REPORT"]) > 0 && !$arInfo["REPORT_ID"]) { $day["REPORT"] = nl2br($day["REPORT"]); $arInfo["REPORT"] .= "<b>" . $day["REPORT_DATE"] . "</b><br>" . $day["REPORT"] . "<br>"; } } if ($RTReport && !$arInfo["REPORT_ID"]) { $arInfo["REPORT"] .= "<b>" . ConvertTimeStamp(time(), "SHORT") . "</b><br>" . nl2br($RTReport); } if (is_array($arInfo['EVENTS'])) { foreach ($arInfo['EVENTS'] as $key => $arEvent) { if ($arEvent['STATUS'] && $arEvent['STATUS'] != 'Y') { unset($arInfo['EVENTS'][$key]); } } $arInfo['EVENTS'] = array_values($arInfo['EVENTS']); } if (!$arInfo["REPORT_ID"]) { if ($arInfo["REPORT_DATE_FROM"] != $arInfo["REPORT_DATE_TO"]) { $arInfo['DATE_TEXT'] = FormatDate('j F', $arInfo["REPORT_DATE_FROM"]) . " - " . FormatDate('j F', $arInfo["REPORT_DATE_TO"]); } else { $arInfo['DATE_TEXT'] = FormatDate('j F', $arInfo["REPORT_DATE_TO"]); } } $arResult["REPORT_DATA"] = array('FROM' => $arCurrentUser, 'TO' => array_values($arCurrentUserManagers), 'INFO' => $arInfo, 'REPORT' => $arInfo["REPORT"], 'PLANS' => $arInfo["PLANS"], 'REPORT_ID' => $arInfo["REPORT_ID"] ? $arInfo["REPORT_ID"] : ""); return $arResult; }