Пример #1
0
 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;
 }
Пример #2
0
 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);
     }
 }
Пример #3
0
 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));
 }
Пример #4
0
 /**
  * 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());
 }
Пример #5
0
 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();
 }
Пример #6
0
 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);
 }
Пример #7
0
                            $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;
Пример #8
0
 $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']);
Пример #9
0
$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>
Пример #10
0
         $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();
     }
 }
Пример #11
0
	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("&#10;", "&#13;"), "", $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);
	}
Пример #12
0
 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;
 }
Пример #13
0
: </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'];
Пример #14
0
$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 
Пример #15
0
<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 
    }
}
?>
Пример #16
0
 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 . '\'';
     }
 }
Пример #17
0
 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];
 }
Пример #18
0
    }
    $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;
}
Пример #19
0
    $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();
Пример #20
0
 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);
 }
Пример #21
0
	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;
	}
Пример #22
0
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;
}
Пример #23
0
 }
 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"');
Пример #24
0
 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"] : "&nbsp;"));
             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];
 }
Пример #25
0
}
$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) {
Пример #26
0
 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;
 }
Пример #27
0
 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;
 }
Пример #28
0
 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);
 }
Пример #29
0
 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>
Пример #30
0
 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;
 }