Browse Source

store the user's timezone after their location is found

pull/82/head
Aaron Parecki 8 years ago
parent
commit
3310a85ac8
No known key found for this signature in database GPG Key ID: 276C2817346D6056
  1. 3
      composer.json
  2. 73
      composer.lock
  3. 19
      controllers/controllers.php
  4. 1
      public/index.php
  5. 2
      schema/migrations/0003.sql
  6. 3
      schema/mysql.sql
  7. 5
      views/new-post.php

3
composer.json

@ -12,7 +12,8 @@
"abraham/twitteroauth": "*", "abraham/twitteroauth": "*",
"andreyco/instagram": "3.*", "andreyco/instagram": "3.*",
"p3k/multipart": "*", "p3k/multipart": "*",
"tantek/cassis": "*"
"tantek/cassis": "*",
"p3k/timezone": "*"
}, },
"autoload": { "autoload": {
"files": [ "files": [

73
composer.lock

@ -4,8 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "4756e7ef0035b8f768f07d252adbdc17",
"content-hash": "f4709cc6bd166e3759fbedbfbaa7752e",
"content-hash": "4ec77b1fe4974da5d6a392ec0d362858",
"packages": [ "packages": [
{ {
"name": "abraham/twitteroauth", "name": "abraham/twitteroauth",
@ -59,7 +58,7 @@
"social", "social",
"twitter" "twitter"
], ],
"time": "2016-12-12 17:42:13"
"time": "2016-12-12T17:42:13+00:00"
}, },
{ {
"name": "andreyco/instagram", "name": "andreyco/instagram",
@ -102,7 +101,7 @@
"api", "api",
"instagram" "instagram"
], ],
"time": "2016-07-17 23:42:10"
"time": "2016-07-17T23:42:10+00:00"
}, },
{ {
"name": "barnabywalters/mf-cleaner", "name": "barnabywalters/mf-cleaner",
@ -142,7 +141,7 @@
} }
], ],
"description": "Cleans up microformats2 array structures", "description": "Cleans up microformats2 array structures",
"time": "2014-10-06 23:11:15"
"time": "2014-10-06T23:11:15+00:00"
}, },
{ {
"name": "firebase/php-jwt", "name": "firebase/php-jwt",
@ -186,7 +185,7 @@
], ],
"description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
"homepage": "https://github.com/firebase/php-jwt", "homepage": "https://github.com/firebase/php-jwt",
"time": "2015-06-22 23:26:39"
"time": "2015-06-22T23:26:39+00:00"
}, },
{ {
"name": "indieauth/client", "name": "indieauth/client",
@ -225,7 +224,7 @@
} }
], ],
"description": "IndieAuth Client Library", "description": "IndieAuth Client Library",
"time": "2016-02-08 23:56:31"
"time": "2016-02-08T23:56:31+00:00"
}, },
{ {
"name": "indieweb/date-formatter", "name": "indieweb/date-formatter",
@ -268,7 +267,7 @@
"microformats", "microformats",
"microformats2" "microformats2"
], ],
"time": "2015-10-28 00:32:39"
"time": "2015-10-28T00:32:39+00:00"
}, },
{ {
"name": "indieweb/link-rel-parser", "name": "indieweb/link-rel-parser",
@ -314,7 +313,7 @@
"indieweb", "indieweb",
"microformats2" "microformats2"
], ],
"time": "2013-12-23 00:14:58"
"time": "2013-12-23T00:14:58+00:00"
}, },
{ {
"name": "indieweb/mention-client", "name": "indieweb/mention-client",
@ -353,7 +352,7 @@
], ],
"description": "Client library for sending webmention and pingback notifications", "description": "Client library for sending webmention and pingback notifications",
"homepage": "https://github.com/indieweb/mention-client-php", "homepage": "https://github.com/indieweb/mention-client-php",
"time": "2015-04-03 11:21:06"
"time": "2015-04-03T11:21:06+00:00"
}, },
{ {
"name": "j4mie/idiorm", "name": "j4mie/idiorm",
@ -411,7 +410,7 @@
"orm", "orm",
"query builder" "query builder"
], ],
"time": "2013-12-12 10:25:27"
"time": "2013-12-12T10:25:27+00:00"
}, },
{ {
"name": "mf2/mf2", "name": "mf2/mf2",
@ -464,7 +463,7 @@
"parser", "parser",
"semantic" "semantic"
], ],
"time": "2015-07-12 14:10:01"
"time": "2015-07-12T14:10:01+00:00"
}, },
{ {
"name": "mpratt/relativetime", "name": "mpratt/relativetime",
@ -512,7 +511,7 @@
"time", "time",
"time-ago" "time-ago"
], ],
"time": "2015-12-24 12:43:04"
"time": "2015-12-24T12:43:04+00:00"
}, },
{ {
"name": "p3k/multipart", "name": "p3k/multipart",
@ -548,7 +547,49 @@
} }
], ],
"description": "Multipart Encoding Library", "description": "Multipart Encoding Library",
"time": "2015-07-16 19:28:02"
"time": "2015-07-16T19:28:02+00:00"
},
{
"name": "p3k/timezone",
"version": "0.1.0",
"source": {
"type": "git",
"url": "https://github.com/aaronpk/p3k-timezone.git",
"reference": "68d3490d896f98cf0727dc937f0bb6b045050c83"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aaronpk/p3k-timezone/zipball/68d3490d896f98cf0727dc937f0bb6b045050c83",
"reference": "68d3490d896f98cf0727dc937f0bb6b045050c83",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"type": "library",
"autoload": {
"files": [
"src/p3k/Timezone.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Aaron Parecki",
"homepage": "https://aaronparecki.com"
}
],
"description": "Find the timezone of a given location",
"homepage": "https://github.com/aaronpk/p3k-timezone",
"keywords": [
"date",
"p3k",
"timezone"
],
"time": "2017-01-12T17:30:08+00:00"
}, },
{ {
"name": "saltybeagle/savant3", "name": "saltybeagle/savant3",
@ -626,7 +667,7 @@
"rest", "rest",
"router" "router"
], ],
"time": "2012-12-13 02:15:50"
"time": "2012-12-13T02:15:50+00:00"
}, },
{ {
"name": "tantek/cassis", "name": "tantek/cassis",
@ -649,7 +690,7 @@
] ]
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
"time": "2016-04-04 15:31:04"
"time": "2016-04-04T15:31:04+00:00"
} }
], ],
"packages-dev": [], "packages-dev": [],

19
controllers/controllers.php

@ -213,6 +213,25 @@ $app->post('/prefs', function() use($app) {
))); )));
}); });
$app->post('/prefs/timezone', function() use($app) {
// Called when the interface finds the user's location.
// Look up the timezone for this location and store it as their default.
$timezone = false;
if($user=require_login($app)) {
$params = $app->request()->params();
$timezone = p3k\Timezone::timezone_for_location($params['latitude'], $params['longitude']);
if($timezone) {
$user->default_timezone = $timezone;
$user->save();
}
}
$app->response()['Content-type'] = 'application/json';
$app->response()->body(json_encode(array(
'result' => 'ok',
'timezone' => $timezone,
)));
});
$app->get('/add-to-home', function() use($app) { $app->get('/add-to-home', function() use($app) {
$params = $app->request()->params(); $params = $app->request()->params();
header("Cache-Control: no-cache, must-revalidate"); header("Cache-Control: no-cache, must-revalidate");

1
public/index.php

@ -13,6 +13,7 @@ $app = new \Slim\Slim(array(
require 'controllers/auth.php'; require 'controllers/auth.php';
require 'controllers/controllers.php'; require 'controllers/controllers.php';
require 'controllers/micropub.php';
require 'controllers/static.php'; require 'controllers/static.php';
require 'controllers/editor.php'; require 'controllers/editor.php';
require 'controllers/hooks.php'; require 'controllers/hooks.php';

2
schema/migrations/0003.sql

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN `default_timezone` VARCHAR(255);

3
schema/mysql.sql

@ -21,6 +21,7 @@ CREATE TABLE `users` (
`twitter_token_secret` text, `twitter_token_secret` text,
`twitter_username` varchar(255) DEFAULT NULL, `twitter_username` varchar(255) DEFAULT NULL,
`instagram_access_token` text, `instagram_access_token` text,
`email_username` varchar(255) DEFAULT NULL,
`email_username` vacrchar(255) DEFAULT NULL,
`default_timezone` vacrchar(255) DEFAULT NULL,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

5
views/new-post.php

@ -532,6 +532,11 @@ $(function(){
$("#note_location_img").show(); $("#note_location_img").show();
$("#note_location_msg").addClass("img-visible"); $("#note_location_msg").addClass("img-visible");
$.post("/prefs/timezone", {
latitude: position.coords.latitude,
longitude: position.coords.longitude
});
}, function(err){ }, function(err){
if(err.code == 1) { if(err.code == 1) {
location_error("The website was not able to get permission"); location_error("The website was not able to get permission");

Loading…
Cancel
Save