Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2890898
CalendarTimeUtil.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Advanced/Developer...
View Handle
View Hovercard
Size
2 KB
Referenced Files
None
Subscribers
None
CalendarTimeUtil.php
View Options
<?php
/**
* This class is useful for generating various time objects, relative to the
* user and their timezone.
*
* For now, the class exposes two sets of static methods for the two main
* calendar views - one for the conpherence calendar widget and one for the
* user profile calendar view. These have slight differences such as
* conpherence showing both a three day "today 'til 2 days from now" *and*
* a Sunday -> Saturday list, whilst the profile view shows a more simple
* seven day rolling list of events.
*/
final
class
CalendarTimeUtil
extends
Phobject
{
public
static
function
getCalendarEventEpochs
(
PhabricatorUser
$user
,
$start_day_str
=
'Sunday'
,
$days
=
9
)
{
$objects
=
self
::
getStartDateTimeObjects
(
$user
,
$start_day_str
)
;
$start_day
=
$objects
[
'start_day'
]
;
$end_day
=
clone
$start_day
;
$end_day
->
modify
(
'+'
.
$days
.
' days'
)
;
return
array
(
'start_epoch'
=>
$start_day
->
format
(
'U'
)
,
'end_epoch'
=>
$end_day
->
format
(
'U'
)
,
)
;
}
public
static
function
getCalendarWeekTimestamps
(
PhabricatorUser
$user
)
{
return
self
::
getTimestamps
(
$user
,
'Today'
,
7
)
;
}
public
static
function
getCalendarWidgetTimestamps
(
PhabricatorUser
$user
)
{
return
self
::
getTimestamps
(
$user
,
'Sunday'
,
9
)
;
}
/**
* Public for testing purposes only. You should probably use one of the
* functions above.
*/
public
static
function
getTimestamps
(
PhabricatorUser
$user
,
$start_day_str
,
$days
)
{
$objects
=
self
::
getStartDateTimeObjects
(
$user
,
$start_day_str
)
;
$start_day
=
$objects
[
'start_day'
]
;
$timestamps
=
array
(
)
;
for
(
$day
=
0
;
$day
<
$days
;
$day
++
)
{
$timestamp
=
clone
$start_day
;
$timestamp
->
modify
(
sprintf
(
'+%d days'
,
$day
)
)
;
$timestamps
[
]
=
$timestamp
;
}
return
array
(
'today'
=>
$objects
[
'today'
]
,
'epoch_stamps'
=>
$timestamps
,
)
;
}
private
static
function
getStartDateTimeObjects
(
PhabricatorUser
$user
,
$start_day_str
)
{
$timezone
=
new
DateTimeZone
(
$user
->
getTimezoneIdentifier
(
)
)
;
$today_epoch
=
PhabricatorTime
::
parseLocalTime
(
'today'
,
$user
)
;
$today
=
new
DateTime
(
'@'
.
$today_epoch
)
;
$today
->
setTimezone
(
$timezone
)
;
if
(
strtolower
(
$start_day_str
)
==
'today'
||
$today
->
format
(
'l'
)
==
$start_day_str
)
{
$start_day
=
clone
$today
;
}
else
{
$start_epoch
=
PhabricatorTime
::
parseLocalTime
(
'last '
.
$start_day_str
,
$user
)
;
$start_day
=
new
DateTime
(
'@'
.
$start_epoch
)
;
$start_day
->
setTimezone
(
$timezone
)
;
}
return
array
(
'today'
=>
$today
,
'start_day'
=>
$start_day
,
)
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sun, Jan 19, 14:18 (3 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1125426
Default Alt Text
CalendarTimeUtil.php (2 KB)
Attached To
Mode
rP Phorge
Attached
Detach File
Event Timeline
Log In to Comment