%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/calendar/classes/general/ |
| Current File : /home/bitrix/www/bitrix/modules/calendar/classes/general/calendar_user_settings.php |
<?
class CCalendarUserSettings
{
private static
$settings = array(
'view' => 'month',
'CalendarSelCont' => false,
'SPCalendarSelCont' => false,
'meetSection' => false,
'crmSection' => false,
'showDeclined' => false,
'denyBusyInvitation' => false,
'collapseOffHours' => 'Y',
'showWeekNumbers' => 'N',
'showTasks' => 'Y',
'showCompletedTasks' => 'N'
);
public static function Set($settings = array(), $userId = false)
{
if (!$userId)
$userId = CCalendar::GetUserId();
if (!$userId)
return;
if ($settings === false)
{
CUserOptions::SetOption("calendar", "user_settings", false, false, $userId);
}
elseif(is_array($settings))
{
$curSet = self::Get($userId);
foreach($settings as $key => $val)
{
if (isset(self::$settings[$key]))
$curSet[$key] = $val;
}
CUserOptions::SetOption("calendar", "user_settings", $curSet, false, $userId);
}
}
public static function Get($userId = false)
{
if (!$userId)
$userId = CCalendar::GetUserId();
$resSettings = self::$settings;
if ($userId)
{
$settings = CUserOptions::GetOption("calendar", "user_settings", false, $userId);
if (is_array($settings))
{
if (isset($settings['view']))
$resSettings['view'] = $settings['view'];
$resSettings['tabId'] = $settings['view'];
if (isset($settings['showDeclined']))
$resSettings['showDeclined'] = !!$settings['showDeclined'];
if (isset($settings['meetSection']) && $settings['meetSection'] > 0)
$resSettings['meetSection'] = intVal($settings['meetSection']);
if (isset($settings['crmSection']) && $settings['crmSection'] > 0)
$resSettings['crmSection'] = intVal($settings['crmSection']);
if (isset($settings['denyBusyInvitation']))
$resSettings['denyBusyInvitation'] = !!$settings['denyBusyInvitation'];
if (isset($settings['lastUsedSection']) && $settings['lastUsedSection'] > 0)
$resSettings['lastUsedSection'] = intVal($settings['lastUsedSection']);
if (isset($settings['collapseOffHours']))
$resSettings['collapseOffHours'] = $settings['collapseOffHours'];
if (isset($settings['showWeekNumbers']))
$resSettings['showWeekNumbers'] = $settings['showWeekNumbers'];
if (isset($settings['showTasks']))
$resSettings['showTasks'] = $settings['showTasks'];
if (isset($settings['showCompletedTasks']))
$resSettings['showCompletedTasks'] = $settings['showCompletedTasks'];
}
$resSettings['timezoneName'] = CCalendar::GetUserTimezoneName($userId);
$resSettings['timezoneOffsetUTC'] = CCalendar::GetCurrentOffsetUTC($userId);
$resSettings['timezoneDefaultName'] = '';
// We don't have default timezone for this offset for this user
// We will ask him but we should suggest some suitable for his offset
// We will ask him but we should suggest some suitable for his offset
if (!$resSettings['timezoneName'])
{
$resSettings['timezoneDefaultName'] = CCalendar::GetGoodTimezoneForOffset($resSettings['timezoneOffsetUTC']);
}
$workTime = CUserOptions::GetOption("calendar", "workTime", false, $userId);
if ($workTime)
{
$resSettings['work_time_start'] = $workTime['start'].'.00';
$resSettings['work_time_end'] = $workTime['end'].'.00';
}
}
return $resSettings;
}
public static function getFormSettings($formType, $userId = false)
{
if (!$userId)
$userId = CCalendar::GetUserId();
$defaultValues = array(
'slider_main' => array(
'pinnedFields' => implode(',',array('location', 'rrule'))
)
);
if (!isset($defaultValues[$formType]))
$defaultValues[$formType] = false;
//CUserOptions::DeleteOption("calendar", $formType);
$settings = CUserOptions::GetOption("calendar", $formType, $defaultValues[$formType], $userId);
if (!is_array($settings['pinnedFields']))
$settings['pinnedFields'] = explode(',', $settings['pinnedFields']);
return $settings;
}
public static function getTrackingUsers($userId = false, $params = array())
{
if (!$userId)
$userId = CCalendar::GetUserId();
$res = array();
$str = CUserOptions::GetOption("calendar", "superpose_tracking_users", false, $userId);
if ($str !== false && CheckSerializedData($str))
{
$ids = unserialize($str);
if (is_array($ids) && count($ids) > 0)
{
foreach($ids as $id)
{
if (intVal($id) > 0)
{
$res[] = intVal($id);
}
}
}
}
if ($params && isset($params['userList']))
{
$params['userList'] = array_unique($params['userList']);
$diff = array_diff($params['userList'], $res);
if (count($diff) > 0)
{
$res = array_merge($res, $diff);
self::setTrackingUsers($userId, $res);
}
}
$res = \Bitrix\Main\UserTable::getList(
array(
'filter' => array('ID' => $res),
'select' => array('ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME')
)
);
$trackedUsers = array();
while ($user = $res->fetch())
{
$user['FORMATTED_NAME'] = CCalendar::GetUserName($user);
$trackedUsers[] = $user;
}
return $trackedUsers;
}
public static function setTrackingUsers($userId = false, $value = array())
{
if (!$userId)
$userId = CCalendar::GetUserId();
if (!is_array($value))
$value = array();
CUserOptions::SetOption("calendar", "superpose_tracking_users", serialize($value), false, $userId);
}
public static function getTrackingGroups($userId = false, $params = array())
{
$res = array();
$str = CUserOptions::GetOption("calendar", "superpose_tracking_groups", false, $userId);
if ($str !== false && CheckSerializedData($str))
{
$ids = unserialize($str);
if (is_array($ids) && count($ids) > 0)
{
foreach($ids as $id)
{
if (intVal($id) > 0)
{
$res[] = intVal($id);
}
}
}
}
if ($params && isset($params['groupList']))
{
$params['groupList'] = array_unique($params['groupList']);
$diff = array_diff($params['groupList'], $res);
if (count($diff) > 0)
{
$res = array_merge($res, $diff);
self::setTrackingGroups($userId, $res);
}
}
return $res;
}
public static function setTrackingGroups($userId = false, $value = array())
{
if (!$userId)
$userId = CCalendar::GetUserId();
if (!is_array($value))
$value = array();
CUserOptions::SetOption("calendar", "superpose_tracking_groups", serialize($value), false, $userId);
}
public static function getHiddenSections($userId = false)
{
$res = array();
if (class_exists('CUserOptions') && $userId > 0)
{
//CUserOptions::DeleteOption("calendar", "hidden_sections");
$res = CUserOptions::GetOption("calendar", "hidden_sections", false, $userId);
if ($res !== false && is_array($res) && isset($res['hidden_sections']))
$res = explode(',', $res['hidden_sections']);
}
if (!is_array($res))
$res = array();
return $res;
}
public static function getSectionCustomization($userId = false)
{
$res = array(
// 'tasks' => array(
// 'name' => 'awdawd',
// 'color' => '#FF0000'
// )
);
if (class_exists('CUserOptions') && $userId > 0)
{
//CUserOptions::DeleteOption("calendar", "hidden_sections");
// $res = CUserOptions::GetOption("calendar", "hidden_sections", false, $userId);
// if ($res !== false && is_array($res) && isset($res['hidden_sections']))
// $res = explode(',', $res['hidden_sections']);
}
return $res;
}
}
?>