Zach Copley
33df392289
- Had to remove checking read vs. read-write in OAuth authenticated methods
...
- Will now pick up source attr from OAuth app
2010-01-14 02:41:11 +00:00
Zach Copley
bbde4d42cc
Check for read vs. read-write access on OAuth authenticated API mehtods.
2010-01-14 02:41:10 +00:00
Zach Copley
38269a6579
Revoke access token UI
2010-01-14 02:41:10 +00:00
Zach Copley
9f3c47ccb4
Fix approval date and label on apps list
2010-01-14 02:41:09 +00:00
Zach Copley
6c8bf36fe1
Make sure applications are really looked up by consumer key
2010-01-14 02:41:09 +00:00
Zach Copley
7c34ac8cc2
Rework application registration workflow to be more private
2010-01-14 02:41:09 +00:00
Zach Copley
42a82a024a
OAuth 1.0 working now
2010-01-14 02:41:09 +00:00
Sarven Capadisli
881e1c50b9
Updated markup for application edit form; image, radios
2010-01-14 02:41:08 +00:00
Sarven Capadisli
7ffa258196
A little minimization
2010-01-14 02:41:08 +00:00
Sarven Capadisli
69bb4efe00
Added vcard and photo classes
2010-01-14 02:41:07 +00:00
Sarven Capadisli
2b78c061fc
Moved application image inside the anchor
2010-01-14 02:41:07 +00:00
Sarven Capadisli
bf53456710
Added missing end tag
2010-01-14 02:41:07 +00:00
Zach Copley
61b3f56647
Make API auth handle OAuth requests w/access tokens
2010-01-14 02:41:07 +00:00
Sarven Capadisli
c80652824a
Fixed tabbing
2010-01-14 02:41:07 +00:00
Sarven Capadisli
284301db81
Updated class for application list
2010-01-14 02:41:06 +00:00
Sarven Capadisli
c6bdbd478b
Updated markup for application edit form submits
2010-01-14 02:41:06 +00:00
Zach Copley
31c5ebb95c
Better detial in connected OAuth applications list
2010-01-14 02:41:06 +00:00
Zach Copley
d8abad7478
Exchanging authorized request tokens for access tokens working
2010-01-14 02:41:06 +00:00
Zach Copley
aba299c5d1
Workflow for request tokens and authorizing request tokens
2010-01-14 02:41:05 +00:00
Zach Copley
2e23638615
Action for issuing a request token
2010-01-14 02:41:05 +00:00
Zach Copley
bcbe013385
Stubs for API OAuth token exchange stuff
2010-01-14 02:41:05 +00:00
Zach Copley
b14a97f5f9
Add icons/icon upload to Oauth apps
2010-01-14 02:41:05 +00:00
Zach Copley
dad67b030f
Workflow for registering new OAuth apps pretty much done.
2010-01-14 02:41:04 +00:00
Zach Copley
f802542885
Reorganized the OAuth app URLs and more work on the register app workflow
2010-01-14 02:41:04 +00:00
Zach Copley
5bff6651ba
Started work on interface for displaying connected OAuth apps
2010-01-14 02:41:04 +00:00
Sarven Capadisli
085406ea88
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-14 01:50:21 +00:00
Sarven Capadisli
acc48289e5
Update geo location UI for notice form where the geo data info is only
...
visible on @title of the enable/disable button.
2010-01-14 01:48:57 +00:00
Evan Prodromou
fba840ed56
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-13 17:30:22 -08:00
Evan Prodromou
52bbb2262a
rev version in lib/common.php
2010-01-13 17:29:58 -08:00
Brion Vibber
82e57b6204
Fix for dbqueuehandler: if a queue is unrecognized, discard entries rather than attempting to re-run them forever!
2010-01-13 16:33:03 -08:00
Evan Prodromou
464ce741a4
remove session info in syslog
2010-01-13 16:19:20 -08:00
Brion Vibber
0e1f2d4b47
Fix regressions in XMPP output during inbox refactoring
...
- NOTICE_INBOX_SOURCE_* constants moved to common.php since Notice_inbox.php not always loaded
- fixed typo in User::staticGet() call which caused user #1 to receive messages once for each subscriber instead of for him/herself
- 'continue' -> 'continue 2' inside switch() statement to fix loop escape (PHP considers switch() a looping construct for break & continue)
2010-01-13 18:17:36 +00:00
Sarven Capadisli
2000d2d36b
Added timeout error handling for geo location
2010-01-13 15:36:42 +00:00
Sarven Capadisli
9b2fdefe39
Using a JSON object for NoticeDataGeo text instead
2010-01-13 15:21:43 +00:00
Evan Prodromou
430bd69312
add events for subscribing to people and joining groups
2010-01-13 02:16:13 -08:00
Evan Prodromou
23599da91e
refactor jabber broadcast for notice_inbox removal
2010-01-13 01:13:49 -08:00
Evan Prodromou
155e4ef4f3
remove some debugging statements from util.php
2010-01-12 23:58:25 -08:00
Evan Prodromou
cc25d3baf0
ws changes for phpcs
2010-01-12 23:56:21 -08:00
Evan Prodromou
e34ece8b06
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-12 23:25:25 -08:00
Brion Vibber
ec145b73fc
Major refactoring of queue handlers to support running multiple sites in one daemon.
...
Key changes:
* Initialization code moved from common.php to StatusNet class;
can now switch configurations during runtime.
* As a consequence, configuration files must now be idempotent...
Be careful with constant, function or class definitions.
* Control structure for daemons/QueueManager/QueueHandler has been refactored;
the run loop is now managed by IoMaster run via scripts/queuedaemon.php
IoManager subclasses are woken to handle socket input or polling, and may
cover multiple sites.
* Plugins can implement notice queue handlers more easily by registering a
QueueHandler class; no more need to add a daemon.
The new QueueDaemon runs from scripts/queuedaemon.php:
* This replaces most of the old *handler.php scripts; they've been refactored
to the bare handler classes.
* Spawns multiple child processes to spread load; defaults to CPU count on
Linux and Mac OS X systems, or override with --threads=N
* When multithreaded, child processes are automatically respawned on failure.
* Threads gracefully shut down and restart when passing a soft memory limit
(defaults to 90% of memory_limit), limiting damage from memory leaks.
* Support for UDP-based monitoring: http://www.gitorious.org/snqmon
Rough control flow diagram:
QueueDaemon -> IoMaster -> IoManager
QueueManager [listen or poll] -> QueueHandler
XmppManager [ping & keepalive]
XmppConfirmManager [poll updates]
Todo:
* Respawning features not currently available running single-threaded.
* When running single-site, configuration changes aren't picked up.
* New sites or config changes affecting queue subscriptions are not yet
handled without a daemon restart.
* SNMP monitoring output to integrate with general tools (nagios, ganglia)
* Convert XMPP confirmation message sends to use stomp queue instead of polling
* Convert xmppdaemon.php to IoManager?
* Convert Twitter status, friends import polling daemons to IoManager
* Clean up some error reporting and failure modes
* May need to adjust queue priorities for best perf in backlog/flood cases
Detailed code history available in my daemon-work branch:
http://www.gitorious.org/~brion/statusnet/brion-fixes/commits/daemon-work
2010-01-12 20:45:09 -08:00
Brion Vibber
2b10e359fe
Avoid PHP notice when outputting API data for remote users; no $user means no $user->timezone :)
...
Trying to get property of non-object (/srv/com.leuksman.status/lib/api.php:171)
2010-01-12 12:28:24 -08:00
Evan Prodromou
392bc728c7
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-12 12:11:37 -08:00
Brion Vibber
cbc3c7b141
Ticket 2152: avoid fatal when php.ini disables dl via disabled_functions (function_exists returns false even though it exists and cannot be redefined)
2010-01-12 07:24:43 -08:00
Evan Prodromou
7e5c15fa80
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-11 16:23:48 -08:00
Zach Copley
3a9e24e077
Fix format specifier on page title
2010-01-11 23:21:09 +00:00
Evan Prodromou
57ac912519
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-11 15:12:13 -08:00
Evan Prodromou
5d676352c3
strip out session ID from root URL
2010-01-11 15:09:46 -08:00
Sarven Capadisli
c7b768b4c8
Removed period
2010-01-11 16:33:46 +01:00
Evan Prodromou
8809e577b2
Merge branch 'sessionidparam' into 0.9.x
...
Conflicts:
lib/command.php
2010-01-11 00:45:26 -08:00
Evan Prodromou
ae7469a127
accept session from
2010-01-11 08:39:02 +00:00
Evan Prodromou
e0eb51e4bb
add session ID to local URL when server parts differ
2010-01-10 23:51:57 -08:00
Evan Prodromou
dd7195346c
Sever -> server in error message
2010-01-10 22:59:50 -08:00
Evan Prodromou
ad63a9518c
Sever -> server in error message
2010-01-10 22:59:32 -08:00
Evan Prodromou
15b88697a7
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-10 14:18:54 -08:00
Evan Prodromou
866dfa6822
Merge branch 'master' into 0.9.x
...
Conflicts:
classes/Memcached_DataObject.php
2010-01-10 14:18:19 -08:00
Evan Prodromou
7aa43f3c93
defaultDesign was undefined; fixed that
2010-01-10 14:10:31 -08:00
Evan Prodromou
6fdd52467d
catch exceptions from snapshot
2010-01-10 14:06:52 -08:00
Zach Copley
63eddf216f
Fix routes for social graph API methods -- this takes care of Ticket #2151
2010-01-10 14:03:10 -08:00
Evan Prodromou
8cf1ef862d
catch exceptions from snapshot
2010-01-10 13:54:26 -08:00
Evan Prodromou
30409f7bad
debugging code to find passed-in objects in munge_password
2010-01-10 12:07:49 -08:00
Siebrand Mazeland
4af6b7f5c3
Lots of tiny message changes.
...
* Mostly punctuation updates so that the same message is used consistently in all of StatusNet.
* Some cases of "Title Case" removed, because that does not appear to be used consistently.
2010-01-10 12:26:24 +01:00
Siebrand Mazeland
0c4dbf1588
Merge branch '0.9.x' of git://gitorious.org/statusnet/mainline into 0.9.x
2010-01-10 01:46:39 +01:00
Siebrand Mazeland
b0aea3f9c1
* L10n updates: consistent puctuation
...
* i18n updates: number parameters if more than one are being used
2010-01-10 01:45:58 +01:00
Craig Andrews
7dde17862a
i18n work in the mail handler
2010-01-09 19:04:53 -05:00
Evan Prodromou
ed5828f30e
Redirect to a one-time-password when ssl and regular server are different
2010-01-09 15:26:06 -08:00
Craig Andrews
055f3fdddb
Add an IMAP daemon so StatusNet can process incoming user posts via catch-all mailbox (in addition to the pre-existing script alias method)
2010-01-08 18:52:43 -05:00
Sarven Capadisli
8901e01692
Added i18n text for @title values in geo sharing actions
2010-01-08 18:07:02 +00:00
Sarven Capadisli
54c18e68da
Some code cleaning for geo UI
2010-01-08 13:58:23 +00:00
Sarven Capadisli
0fcd91cf1e
Using json2.js
2010-01-08 13:26:48 +00:00
Evan Prodromou
2aa0ab9777
let system administrators disallow certain admin panels
2010-01-08 01:00:29 -08:00
Evan Prodromou
505cd382f3
ptiturl.com correct name
2010-01-07 23:38:19 -08:00
Evan Prodromou
9693b2cf2f
add default plugin version information
2010-01-07 17:33:46 -08:00
Evan Prodromou
4a4ac7a108
add a version action to give credit and list plugins
2010-01-07 17:26:40 -08:00
Evan Prodromou
2c33e61b94
add default plugins and load them
2010-01-07 16:13:36 -08:00
Ciaran Gultnieks
14421d9db3
Correction to previous commit
2010-01-07 21:01:07 +00:00
Ciaran Gultnieks
deeaafe712
Fixes to bugs where non-local messages were being wrong put in the public timeline and public xmpp feed
2010-01-07 20:59:31 +00:00
Evan Prodromou
f4fa785fb7
Revert "Ticket 2107: remove "not implemented" items from sms/xmpp help; nobody likes being told what they can't do!"
...
This reverts commit 5d9a2eb17e
.
These are commands that are/were implemented by Twitter, and we don't
(yet) implemented. People will be looking for that information.
2010-01-06 23:24:24 -08:00
Brion Vibber
5d9a2eb17e
Ticket 2107: remove "not implemented" items from sms/xmpp help; nobody likes being told what they can't do!
...
Also broke up the localized help message into line-by-line pieces to ease translation maintenance.
2010-01-06 14:42:46 -08:00
Craig Andrews
541053e84b
The structure return by parse_url is an associative array, not an object.
2010-01-06 17:08:01 -05:00
Zach Copley
d6db8e5817
Don't output notices from deleted users.
2010-01-06 13:43:46 -08:00
Zach Copley
013e6dfdd4
Don't output notices from deleted users.
2010-01-06 13:40:28 -08:00
Zach Copley
9960ec2143
Support an 'extra' clause when definining a column (e.g.: 'on update
...
CURRENT_TIMESTAMP').
2010-01-05 23:19:13 -08:00
Brion Vibber
aff78e5121
Cache fixes:
...
* We now cache negative lookups; clear them in Memcached_DataObject->insert()
* Mark file.url as a unique key in statusnet.ini so its negative lookups are cleared properly (first save of a notice with a new URL was failing due to double-insert)
* Now using serialization for default in-process cache instead of just saving objects; avoids potential corruption if you save an object to cache, change the original object, then fetch the same key from cache again
2010-01-05 15:05:53 -08:00
Craig Andrews
250bcfa8dc
Require users to login to view attachments on private sites
...
Thank you jeff-themovie for this implementation!
2010-01-05 17:49:28 -05:00
Craig Andrews
9e2e0605ed
Move Authorization and Authentication plugin structures into core, instead of as plugins.
...
This move makes sense as you can addPlugin('Authentication') for example - these are abstract classes designed to be implemented, not used directly.
2010-01-05 13:56:22 -05:00
Brion Vibber
16254c14c8
Typo fix in the new default in-process cache; spewed notice warnings on deletion, breaking XHR responses.
2010-01-05 09:54:43 -08:00
Brion Vibber
af95005bc4
Ticket 2141: bugs with weighted popularity lists across year boundary.
...
Consolidated several separate implementations of the same weighting algorithm into common_sql_weight() and fixed some bugs...
For MySQL, now using timestampdiff() instead of subtraction for the comparison, so we get sane results when the year doesn't match, and utc_timestamp() rather than now() so we don't get negative ages for recent items with local server timezone.
Unknown whether the same problems affect PostgreSQL, but note that it lacks the timestampdiff() SQL function.
2010-01-04 13:01:17 -08:00
Evan Prodromou
6add2693b0
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-04 10:55:21 -10:00
Evan Prodromou
a1821ec8af
default value for cache::get() changed from null to false
2010-01-04 09:59:47 -10:00
Brion Vibber
6911e1c797
Ticket 2141: bugs with weighted popularity lists across year boundary.
...
Consolidated several separate implementations of the same weighting algorithm into common_sql_weight() and fixed some bugs...
For MySQL, now using timestampdiff() instead of subtraction for the comparison, so we get sane results when the year doesn't match, and utc_timestamp() rather than now() so we don't get negative ages for recent items with local server timezone.
Unknown whether the same problems affect PostgreSQL, but note that it lacks the timestampdiff() SQL function.
2010-01-04 11:55:27 -08:00
Brion Vibber
783a2e249b
Fix for auto_increment parameter in auto-created tables via checkschema.
...
Update FeedSub plugin for non-Plugin_DataObject setup and working checkschema updates.
2010-01-04 10:30:58 -08:00
Evan Prodromou
bfa3aa0e7f
Remove logging from default cache
2010-01-03 11:28:15 -10:00
Evan Prodromou
de74c64490
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2010-01-02 21:35:46 -10:00
Evan Prodromou
cc5534d180
First version of Memcache plugin
2010-01-02 21:16:59 -10:00
Evan Prodromou
1e1062ca9c
Make cache.php PHPCS-clean
2010-01-02 21:00:42 -10:00
Evan Prodromou
65d07b657d
invert if for cache handling
2010-01-02 20:37:30 -10:00
Evan Prodromou
e1de1bf0fe
fix default array implementation checks
2010-01-02 20:32:56 -10:00
Evan Prodromou
c5d23e27a6
Make caching a plugin system
2010-01-02 20:26:33 -10:00
Evan Prodromou
3b912ac97e
fixup memcache functions
2010-01-02 16:27:04 -10:00
Sarven Capadisli
ec5850d26a
Changed location share representation to be more like the file
...
attachment. Init UI. Probably a little buggy.
2010-01-03 00:33:41 +00:00
Evan Prodromou
a9d8359208
Merge branch 'master' into 0.9.x
...
Conflicts:
classes/Memcached_DataObject.php
2010-01-01 11:20:25 -10:00
Sarven Capadisli
01dbee2ba5
Initial UI for geo location share option in notice form
2009-12-31 18:41:10 +00:00
Sarven Capadisli
dde6415a6a
Moved JavaScript dependant stuff out of noticeform.
2009-12-31 18:08:21 +00:00
Sarven Capadisli
8872d91483
Removed style information out of HTML
2009-12-31 16:44:24 +00:00
Sarven Capadisli
0320bf2fb3
Use the location setting profile as secondary
2009-12-31 15:46:43 +00:00
Sarven Capadisli
8e6a8961d9
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2009-12-31 14:37:23 +00:00
Sarven Capadisli
c986f59143
If user is sharing their location (based on profile setting), then
...
enable it for form notice by default. This can be overriden by the
cookie to preserve states.
2009-12-31 14:34:07 +00:00
Sarven Capadisli
4efa841ba3
If user doesn't want to share their location (which is globally set
...
from their profile settings), don't bother to output form data for
lat/long in the notice form.
2009-12-31 14:24:27 +00:00
Sarven Capadisli
923e27b01a
Fix to grab and use the actual lat/lon values from the user profile
2009-12-31 14:23:11 +00:00
Sarven Capadisli
5871480844
Moved shareLocation data from formActions() to formData()
2009-12-31 12:52:39 +00:00
Sarven Capadisli
4985582880
Fixed Event end name
2009-12-31 12:43:33 +00:00
Craig Andrews
1e9c03e199
Enable memcache automatic compression, starting at 20k and only if compression gain is greater than 20%.
...
Allows storage of larger objects (over 1mb in size uncompressed), such as huge LDAP schemas.
Should also improve cache efficiency (allows more stuff to be stored in same memory) and reduce network latency (less data transfer)
2009-12-30 19:29:38 -05:00
Siebrand Mazeland
024704e0b7
Remove trailing space in checkbox text.
2009-12-30 20:26:23 +01:00
Craig Andrews
98ce7daf56
Implement user interface for user to preview what location they are sharing with a notice
2009-12-29 16:18:52 -05:00
Evan Prodromou
360fdb219d
don't show notices with deleted profiles
2009-12-29 12:25:41 -08:00
Evan Prodromou
e119362fde
Merge branch 'locshunt' into 0.9.x
2009-12-28 15:49:27 -08:00
Evan Prodromou
39bdda9c7e
More configuration options for location sharing
2009-12-28 14:43:34 -08:00
Evan Prodromou
bb93d6b1c7
remove namespace setting from location; it's unused
2009-12-28 14:21:07 -08:00
Evan Prodromou
da5db060e8
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2009-12-23 14:31:56 -08:00
Sarven Capadisli
05c1ad8b32
Updated Repeat notice option submit button style
2009-12-23 15:59:31 -05:00
Evan Prodromou
1adce16dd8
don't email replies to yourself
2009-12-23 09:00:05 -08:00
Evan Prodromou
185e229f79
Merge branch 'master' into 0.9.x
2009-12-22 22:12:15 -08:00
Evan Prodromou
f6bf952980
Merge branch 'testing'
2009-12-22 16:44:19 -08:00
Evan Prodromou
30c2e2ce83
update to rc2
2009-12-22 16:41:39 -08:00
Evan Prodromou
a2cb0a033f
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2009-12-22 08:53:50 -08:00
Brion Vibber
a06af3f125
Ticket 1982: define LC_MESSAGES and friends if PHP didn't predefine them for us. (Known problem on Win32)
2009-12-21 09:06:07 -08:00
Brion Vibber
f987273f11
Ignore user language settings that aren't listed in language config; we'll then fall back to current autodetection. This prevents the surprises where your profile suddenly switches to Arabic because it was selected by default due to lack of a match in the drop-down box.
2009-12-21 06:57:10 -08:00
Siebrand Mazeland
7e6efd1065
Localisation updates for !StatusNet from !translatewiki.net !sntrans
...
* Adding Persian language
2009-12-20 15:52:43 +01:00
Brion Vibber
b244ac6462
Ignore user language settings that aren't listed in language config; we'll then fall back to current autodetection. This prevents the surprises where your profile suddenly switches to Arabic because it was selected by default due to lack of a match in the drop-down box.
2009-12-19 15:29:53 -05:00
Evan Prodromou
530673b3cd
Merge branch '0.9.x' into testing
2009-12-16 22:14:41 -05:00
Brion Vibber
dc4bedd25a
Add some doc comments and fixmes in util.php
2009-12-16 09:27:48 -05:00
Brion Vibber
0158f4f73d
PHP 5.3 closure-based implementation of curry(); old implementation used as fallback for older PHP versions. Added unit tests to confirm they both work!
2009-12-16 09:27:48 -05:00
Evan Prodromou
2a1468ec8b
Merge branch '0.9.x' into testing
2009-12-15 16:24:52 -05:00
Evan Prodromou
608d1b206a
Don't show repeater avatar in notice lists
2009-12-15 16:08:44 -05:00
Evan Prodromou
797a0d79fb
create a method for notification for new messages, and use it
2009-12-15 10:31:25 -05:00
Evan Prodromou
19bb9a04d1
add mail notification for dm command results
2009-12-15 10:18:27 -05:00
Sarven Capadisli
27d0e8f0a4
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
2009-12-14 18:34:16 -05:00
Evan Prodromou
43ee2ec42f
default for login command is disabled
2009-12-14 18:09:30 -05:00
Sarven Capadisli
f8b187d5a4
Initial representation for repeated notice
2009-12-14 18:09:08 -05:00
Evan Prodromou
607e98ee11
make sure id of <li> in notice list is unique
2009-12-14 17:48:14 -05:00
Evan Prodromou
d22364b35e
had the order of <status> and <retweeted_status> wrong in api output
2009-12-14 17:11:34 -05:00
Evan Prodromou
9384a6e242
fix error with cached repeat of deleted original in api output
2009-12-14 16:40:56 -05:00
Evan Prodromou
6ff13d6828
move full-featured timeline to apitimelinehome.php
2009-12-14 16:10:16 -05:00
Evan Prodromou
9d2a605d0e
correct link for repeat attribution in noticelist
2009-12-14 15:42:53 -05:00
Zach Copley
a199bd808a
Fix issue with favorited/following always being set to false
2009-12-14 18:16:45 +00:00
Sarven Capadisli
7dc9f7ad06
Init UI for Repeated by
2009-12-13 20:00:09 -05:00
Siebrand Mazeland
745e35ac1f
(Puctuation) consistency in clientError() calls.
2009-12-13 18:55:17 +01:00
Siebrand Mazeland
954eb411e0
Localisation updates for !StatusNet from !translatewiki.net !sntrans
...
* add Interlingua (ia)
2009-12-13 18:31:14 +01:00
Craig Andrews
bed4e1c9e9
Add repeat command
2009-12-12 21:25:21 -05:00
Evan Prodromou
304ba80a0f
make sure to show repeats correctly when original is deleted
2009-12-12 16:33:38 -05:00