public static function AddCommentToIM($arFields) { if (CModule::IncludeModule("im") && intval($arFields["USER_ID"]) > 0) { $date_text = ""; $dbReport = CTimeManReportFull::GetByID($arFields["REPORT_ID"]); if ($arReport = $dbReport->Fetch()) { $date_from = FormatDate("j F", MakeTimeStamp($arReport["DATE_FROM"], CSite::GetDateFormat("FULL", SITE_ID))); $date_to = FormatDate("j F", MakeTimeStamp($arReport["DATE_TO"], CSite::GetDateFormat("FULL", SITE_ID))); if ($date_from == $date_to) { $date_text = $date_to; } else { $date_text = $date_from . " - " . $date_to; } $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "FROM_USER_ID" => $arFields["USER_ID"], "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "timeman", "NOTIFY_EVENT" => "report_comment", "NOTIFY_TAG" => "TIMEMAN|REPORT|" . $arFields["REPORT_ID"]); $arUserIDToSend = array($arReport["USER_ID"]); $gender_suffix = ""; $dbUser = CUser::GetByID($arFields["USER_ID"]); if ($arUser = $dbUser->Fetch()) { switch ($arUser["PERSONAL_GENDER"]) { case "M": $gender_suffix = "_M"; break; case "F": $gender_suffix = "_F"; break; default: $gender_suffix = ""; } } $arManagers = CTimeMan::GetUserManagers($arReport["USER_ID"]); if (is_array($arManagers)) { $arUserIDToSend = array_merge($arUserIDToSend, $arManagers); } $reports_page = COption::GetOptionString("timeman", "WORK_REPORT_PATH", "/company/work_report.php"); $arUnFollowers = array(); $rsUnFollower = CSocNetLogFollow::GetList(array("USER_ID" => $arUserIDToSend, "CODE" => "L" . $arFields["LOG_ID"], "TYPE" => "N"), array("USER_ID")); while ($arUnFollower = $rsUnFollower->Fetch()) { $arUnFollowers[] = $arUnFollower["USER_ID"]; } $arUserIDToSend = array_diff($arUserIDToSend, $arUnFollowers); foreach ($arUserIDToSend as $user_id) { if ($arFields["USER_ID"] == $user_id) { continue; } $arMessageFields["TO_USER_ID"] = $user_id; $arTmp = CSocNetLogTools::ProcessPath(array("REPORTS_PAGE" => $reports_page), $user_id); $sender_type = $arReport["USER_ID"] == $user_id ? "1" : ($arReport["USER_ID"] == $arFields["USER_ID"] ? "2" : "3"); $arMessageFields["NOTIFY_MESSAGE"] = GetMessage("REPORT_FULL_IM_COMMENT_" . $sender_type . $gender_suffix, array("#period#" => "<a href=\"" . $arTmp["URLS"]["REPORTS_PAGE"] . "#user_id=" . $arReport["USER_ID"] . "&report=" . $arReport["ID"] . "\" class=\"bx-notifier-item-action\">" . htmlspecialcharsbx($date_text) . "</a>")); $arMessageFields["NOTIFY_MESSAGE_OUT"] = GetMessage("REPORT_FULL_IM_COMMENT_" . $sender_type . $gender_suffix, array("#period#" => htmlspecialcharsbx($date_text))) . " ( " . $arTmp["SERVER_NAME"] . $arTmp["URLS"]["REPORTS_PAGE"] . "#user_id=" . $arReport["USER_ID"] . "&report=" . $arReport["ID"] . " )#BR##BR#" . $arFields["MESSAGE"]; CIMNotify::Add($arMessageFields); } } } }
if (count($arAccessUsers['READ']) > 0) { $bCanEditAll = in_array('*', $arAccessUsers['WRITE']); $bCanReadAll = in_array('*', $arAccessUsers['READ']); $dbRes = CTimeManEntry::GetList(array(), array('ID' => $ID), false, false, array('*', 'ACTIVATED')); if ($arRes = $dbRes->Fetch()) { if ($arRes['USER_ID'] == $USER->GetID() || $bCanReadAll || in_array($arRes['USER_ID'], $arAccessUsers['READ'])) { $arRes['TIME_OFFSET'] = CTimeManUser::getDayStartOffset($arRes); $bCanEdit = $bCanEditAll || in_array($arRes['USER_ID'], $arAccessUsers['WRITE']); $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) {
public static function GetDirectAccess($USER_ID = false) { global $USER; $USER_ID = intval($USER_ID); if ($USER_ID <= 0) { $USER_ID = $USER->GetID(); } $arSDeps = CIntranetUtils::GetSubordinateDepartments($USER_ID, true); $arStruct = CIntranetUtils::GetStructure(); $arEmployees = array(); foreach ($arSDeps as $dpt) { $arCurDpt = $arStruct['DATA'][$dpt]; $employee = $arCurDpt["UF_HEAD"] ? $arCurDpt["UF_HEAD"] : (count($arCurDpt["EMPLOYEES"]) > 0 ? $arCurDpt["EMPLOYEES"][0] : false); if ($employee && $employee == $USER_ID) { foreach ($arCurDpt["EMPLOYEES"] as $empUser) { $arEmployees[] = $empUser; } } elseif ($employee) { $headManager = CTimeMan::GetUserManagers($employee); //find head manager of employee if ($USER_ID == $headManager[0]) { if ($arCurDpt["UF_HEAD"]) { $arEmployees[] = $employee; } else { foreach ($arCurDpt["EMPLOYEES"] as $empUser) { $arEmployees[] = $empUser; } } } } } return array_unique($arEmployees); }