Merge branch 'release/0.18'

This commit is contained in:
Jonny Barnes 2019-01-27 21:10:05 +00:00
commit b9fb0f7427
245 changed files with 10881 additions and 9709 deletions

11
.gitignore vendored
View file

@ -3,14 +3,13 @@
/public/storage
/storage/*.key
/vendor
/.idea
/.vagrant
Homestead.yaml
.env
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.env
# Custom paths in /public
/public/coverage
/public/files
/public/keybase.txt
/coverage
/LegacyTests

View file

@ -35,6 +35,7 @@ env:
php:
- 7.2
- 7.3
before_install:
- printf "\n" | pecl install imagick
@ -43,7 +44,7 @@ before_install:
- psql -U travis -c 'create database travis_ci_test'
- psql -U travis -d travis_ci_test -c 'create extension postgis'
- travis_retry composer self-update --preview
- pear install pear/PHP_CodeSniffer && phpenv rehash
- curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
install:
- if [[ $setup = 'basic' ]]; then travis_retry composer install --no-interaction --prefer-dist; fi
@ -63,7 +64,7 @@ before_script:
#- sleep 5
script:
- php vendor/bin/phpunit --coverage-text
- phpcs
- php vendor/bin/phpunit
- php phpcs.phar
#- php artisan dusk
- php vendor/bin/security-checker security:check --end-point=http://security.sensiolabs.org/check_lock

View file

@ -0,0 +1,7 @@
<?php
namespace App\Exceptions;
class TwitterContentException extends \Exception
{
}

View file

@ -14,7 +14,7 @@ class Kernel extends HttpKernel
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
@ -58,11 +58,30 @@ class Kernel extends HttpKernel
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'micropub.token' => \App\Http\Middleware\VerifyMicropubToken::class,
'myauth' => \App\Http\Middleware\MyAuthMiddleware::class,
'cors' => \App\Http\Middleware\CorsHeaders::class,
];
/**
* The priority-sorted list of middleware.
*
* This forces non-global middleware to always be in the given order.
*
* @var array
*/
protected $middlewarePriority = [
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\Authenticate::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
];
}

View file

@ -0,0 +1,21 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}

View file

@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
class CheckForMaintenanceMode extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}

View file

@ -10,7 +10,7 @@ use Illuminate\Bus\Queueable;
use Thujohn\Twitter\Facades\Twitter;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Exception\RequestException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Jonnybarnes\WebmentionsParser\Authorship;
@ -60,7 +60,7 @@ class ProcessLike implements ShouldQueue
],
]
);
} catch (ClientException $exception) {
} catch (RequestException $exception) {
//no biggie
}

View file

@ -67,7 +67,7 @@ class ProcessWebMention implements ShouldQueue
return;
}
if ($webmention->type == 'like-of') {
if ($parser->checkLikeOf($microformats, $note->longurl) == false) {
if ($parser->checkLikeOf($microformats, $this->note->longurl) == false) {
// it doesn’t so delete
$webmention->delete();
@ -75,7 +75,7 @@ class ProcessWebMention implements ShouldQueue
} // note we don’t need to do anything if it still is a like
}
if ($webmention->type == 'repost-of') {
if ($parser->checkRepostOf($microformats, $note->longurl) == false) {
if ($parser->checkRepostOf($microformats, $this->note->longurl) == false) {
// it doesn’t so delete
$webmention->delete();

View file

@ -4,11 +4,16 @@ declare(strict_types=1);
namespace App\Models;
use League\CommonMark\Environment;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Cviebrock\EloquentSluggable\Sluggable;
use League\CommonMark\CommonMarkConverter;
use Illuminate\Database\Eloquent\SoftDeletes;
use League\CommonMark\Block\Element\FencedCode;
use League\CommonMark\Block\Element\IndentedCode;
use Spatie\CommonMarkHighlighter\FencedCodeRenderer;
use Spatie\CommonMarkHighlighter\IndentedCodeRenderer;
class Article extends Model
{
@ -57,15 +62,12 @@ class Article extends Model
*/
public function getHtmlAttribute(): string
{
$markdown = new CommonMarkConverter();
$html = $markdown->convertToHtml($this->main);
// changes <pre><code>[lang] ~> <pre><code data-language="lang">
$match = '/<pre><code>\[(.*)\]\n/';
$replace = '<pre><code class="language-$1">';
$text = preg_replace($match, $replace, $html);
$default = preg_replace('/<pre><code>/', '<pre><code class="language-markdown">', $text);
$environment = Environment::createCommonMarkEnvironment();
$environment->addBlockRenderer(FencedCode::class, new FencedCodeRenderer());
$environment->addBlockRenderer(IndentedCode::class, new IndentedCodeRenderer());
$commonMarkConverter = new CommonMarkConverter([], $environment);
return $default;
return $commonMarkConverter->convertToHtml($this->main);
}
/**

View file

@ -5,12 +5,13 @@ declare(strict_types=1);
namespace App\Models;
use Mf2;
use HTMLPurifier;
use HTMLPurifier_Config;
use App\Traits\FilterHtml;
use Illuminate\Database\Eloquent\Model;
class Like extends Model
{
use FilterHtml;
protected $fillable = ['url'];
/**
@ -48,27 +49,11 @@ class Like extends Model
$mf2 = Mf2\parse($value, $this->url);
if (array_get($mf2, 'items.0.properties.content.0.html')) {
return $this->filterHTML(
return $this->filterHtml(
$mf2['items'][0]['properties']['content'][0]['html']
);
}
return $value;
}
/**
* Filter some HTML with HTMLPurifier.
*
* @param string $html
* @return string
*/
private function filterHTML(string $html): string
{
$config = HTMLPurifier_Config::createDefault();
$config->set('Cache.SerializerPath', storage_path() . '/HTMLPurifier');
$config->set('HTML.TargetBlank', true);
$purifier = new HTMLPurifier($config);
return $purifier->purify($html);
}
}

View file

@ -9,16 +9,19 @@ use Twitter;
use Normalizer;
use GuzzleHttp\Client;
use Laravel\Scout\Searchable;
use League\CommonMark\Converter;
use League\CommonMark\DocParser;
use Jonnybarnes\IndieWeb\Numbers;
use League\CommonMark\Environment;
use League\CommonMark\HtmlRenderer;
use Illuminate\Database\Eloquent\Model;
use Jonnybarnes\EmojiA11y\EmojiModifier;
use Illuminate\Database\Eloquent\Builder;
use League\CommonMark\CommonMarkConverter;
use App\Exceptions\TwitterContentException;
use Illuminate\Database\Eloquent\SoftDeletes;
use League\CommonMark\Block\Element\FencedCode;
use League\CommonMark\Block\Element\IndentedCode;
use Jonnybarnes\CommonmarkLinkify\LinkifyExtension;
use Spatie\CommonMarkHighlighter\FencedCodeRenderer;
use Spatie\CommonMarkHighlighter\IndentedCodeRenderer;
class Note extends Model
{
@ -362,21 +365,20 @@ class Note extends Model
*
* That is we swap the contacts names for their known Twitter handles.
*
* @return string|null
* @return string
*/
public function getTwitterContentAttribute(): ?string
public function getTwitterContentAttribute(): string
{
if ($this->contacts === null) {
return null;
}
if (count($this->contacts) === 0) {
return null;
// check for contacts
if ($this->contacts === null || count($this->contacts) === 0) {
throw new TwitterContentException('There are no contacts for this note');
}
// here we check the matched contact from the note corresponds to a contact
// in the database
if (count(array_unique(array_values($this->contacts))) === 1
&& array_unique(array_values($this->contacts))[0] === null) {
return null;
throw new TwitterContentException('The matched contact is not in the database');
}
// swap in twitter usernames
@ -513,7 +515,9 @@ class Note extends Model
{
$environment = Environment::createCommonMarkEnvironment();
$environment->addExtension(new LinkifyExtension());
$converter = new Converter(new DocParser($environment), new HtmlRenderer($environment));
$environment->addBlockRenderer(FencedCode::class, new FencedCodeRenderer());
$environment->addBlockRenderer(IndentedCode::class, new IndentedCodeRenderer());
$converter = new CommonMarkConverter([], $environment);
return $converter->convertToHtml($note);
}
@ -530,7 +534,7 @@ class Note extends Model
$latlng = $latitude . ',' . $longitude;
return Cache::get($latlng, function () use ($latlng, $latitude, $longitude) {
$guzzle = new Client();
$guzzle = resolve(Client::class);
$response = $guzzle->request('GET', 'https://nominatim.openstreetmap.org/reverse', [
'query' => [
'format' => 'json',
@ -542,9 +546,13 @@ class Note extends Model
'headers' => ['User-Agent' => 'jonnybarnes.uk via Guzzle, email jonny@jonnybarnes.uk'],
]);
$json = json_decode((string) $response->getBody());
if (isset($json->address->town)) {
if (isset($json->address->suburb)) {
$locality = $json->address->suburb;
if (isset($json->address->city)) {
$locality .= ', ' . $json->address->city;
}
$address = '<span class="p-locality">'
. $json->address->town
. $locality
. '</span>, <span class="p-country-name">'
. $json->address->country
. '</span>';
@ -553,7 +561,11 @@ class Note extends Model
return $address;
}
if (isset($json->address->city)) {
$address = $json->address->city . ', ' . $json->address->country;
$address = '<span class="p-locality">'
. $json->address->city
. '</span>, <span class="p-country-name">'
. $json->address->country
. '</span>';
Cache::forever($latlng, $address);
return $address;

View file

@ -6,14 +6,15 @@ namespace App\Models;
use Cache;
use Twitter;
use HTMLPurifier;
use HTMLPurifier_Config;
use App\Traits\FilterHtml;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Database\Eloquent\Model;
use Jonnybarnes\WebmentionsParser\Authorship;
class WebMention extends Model
{
use FilterHtml;
/**
* The database table used by the model.
*
@ -92,7 +93,7 @@ class WebMention extends Model
}
$microformats = json_decode($this->mf2, true);
if (isset($microformats['items'][0]['properties']['content'][0]['html'])) {
return $this->filterHTML($microformats['items'][0]['properties']['content'][0]['html']);
return $this->filterHtml($microformats['items'][0]['properties']['content'][0]['html']);
}
return null;
@ -130,20 +131,4 @@ class WebMention extends Model
return $url;
}
/**
* Filter the HTML in a reply webmention.
*
* @param string $html
* @return string
*/
private function filterHTML(string $html): string
{
$config = HTMLPurifier_Config::createDefault();
$config->set('Cache.SerializerPath', storage_path() . '/HTMLPurifier');
$config->set('HTML.TargetBlank', true);
$purifier = new HTMLPurifier($config);
return $purifier->purify($html);
}
}

View file

@ -139,18 +139,7 @@ class NoteService
*/
private function getCheckin(array $request): ?Place
{
$location = array_get($request, 'properties.location.0');
if (array_get($location, 'type.0') === 'h-card') {
try {
$place = resolve(PlaceService::class)->createPlaceFromCheckin(
$location
);
} catch (\InvalidArgumentException $e) {
return null;
}
return $place;
}
$location = array_get($request, 'location');
if (is_string($location) && starts_with($location, config('app.url'))) {
return Place::where(
'slug',
@ -162,10 +151,21 @@ class NoteService
)
)->first();
}
if (array_get($request, 'properties.checkin')) {
if (array_get($request, 'checkin')) {
try {
$place = resolve(PlaceService::class)->createPlaceFromCheckin(
array_get($request, 'properties.checkin.0')
array_get($request, 'checkin')
);
} catch (\InvalidArgumentException $e) {
return null;
}
return $place;
}
if (array_get($location, 'type.0') === 'h-card') {
try {
$place = resolve(PlaceService::class)->createPlaceFromCheckin(
$location
);
} catch (\InvalidArgumentException $e) {
return null;

24
app/Traits/FilterHtml.php Normal file
View file

@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace App\Traits;
use HtmlSanitizer\Sanitizer;
trait FilterHtml
{
public function filterHtml(string $html): string
{
return Sanitizer::create([
'extensions' => [
'basic',
'code',
'image',
'list',
'table',
'extra',
],
])->sanitize($html);
}
}

View file

@ -12,7 +12,7 @@
*/
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
/*

View file

@ -1,621 +0,0 @@
# Changelog
## Version 0.17.1 (2018-10-12)
- Remove settinga and code for syndicatong to Facebook (issue#88)
## Version 0.17
- Update the underlying Laravel framework to release 5.7
## Version 0.16.6
- Improve micropub media endpoint by inlining the initial upload to S3 so the returned URL will never 404
## Version 0.16.5
- Hotfix: adding a new note meant some tests were running against the wrong note
## Version 0.16.4
- Improve CSP headers
- Fix the map style menu in mapbox maps
## Version 0.16.3 (2018-04-12)
- Improve JSON feed conformance
## Version 0.16.2 (2018-04-07)
- Add CORS headers as necessary in the Laravel app (as oppose to using nginx)
- Add CSP headers
## Version 0.16.1 (2018-02-17)
- Fix issue where OwnYourSwarm requests include h-adr block for location
## Version 0.16 (2018-02-16)
- Update Laravel to 5.6
- Fix issue with creating alternative Facebook content when no contacts
## Version 0.15.7 (2018-02-01)
- Send tokens as a json response
## Version 0.15.6 (2018-01-27)
- Fix uploading files sent to the media endpoint to S3
## Version 0.15.5 (2018-01-21)
- Formally bump PHP requirement to 7.2
- Add [a11y.css](https://github.com/ffoodd/a11y.css)
- Make some a11y improvements
- Fix: remove a css property that caused words to be split at a line-break
## Version 0.15.4
- Improve code-base by liberal use of `strict_types`
- Added some basic CSS text styling
## Version 0.15.3 (2018-01-12)
- Improve `likes`, including adding a new section in the admin cp
- Add the ability to POSSE the like of a Tweet
## Version 0.15.2 (2018-01-11)
- Update micropub endpoint to support access tokens being sent in either acceptable form
- Improve admin control panel forms
## Version 0.15.1 (2018-01-06)
- Update dependencies and recompile frontend assets, fix tests
- Only normalise tags in the URL, not in the actual link text
- Make sure when a note has no content, null is saved to the db, not `''`
## Version 0.15 (2017-12-24)
- Add simple checkins, i.e. checkins with no note content, for now add a default note for these
## Version 0.14 (2017-12-22)
- Tests
- Refactor
- More tests, seriously, code-coverage to now above 90%
## Version 0.13.1 (2017-11-20)
- A small fix when adding a new bookmark
## Version 0.13 (2017-11-17)
- Update Browsershot to v3, uses puppeteer to control Chrome
- Improve bookmarks syndication
## Version 0.12.6.1 (2017-11-13)
- `.1` fixes a typo
- Fix issue with generating image links from images uploaded to `/api/media`
## Version 0.12.5 (2017-11-09)
- Fix style of tags on bookmarks page that had been visited
- Fix style of notes listed on `/notes/tagged/tag`
- Move code manging tagging of notes to NoteObserver
## Version 0.12.4 (2017-11-07)
- Pull in newer version of my linkify extension to fix errors
## Version 0.12.3 (2017-11-07)
- Add a link to the `colours.js` so the colour scheme can be changed
## Version 0.12.2 (2017-11-07)
- Limit screen size of images in notes
## Version 0.12.1 (2017-11-07)
- Change font
## Version 0.12 (2017-11-07)
- New style
- Here we improve the sass code as well, better modularisation
- Colour schemes are now selectable and stored in the session
- Added a typekit font again
## Version 0.11.2 (2017-10-22)
- This hotfix removes reference to a dev package not installed on production
## Version 0.11.1 (2017-10-22)
- Improve eloquent queries for rendering notes with contacts
## Version 0.11 (2017-10-19)
- No more built-in micropub client
## Version 0.10 (20017-10-13)
- Bookmarks!
- They can only be added via micropub
- A screenshot is taken
- The page is saved to the internet archive
## Version 0.9 (2017-10-06)
- Add support for `likes` (issue#69)
- Only included links on truncated syndicated notes https://brid.gy/about#omit-link
## Version 0.8.1 (2017-09-16)
- Order notes by latest (issue#70)
- AcitivtyStream support is now indicated with HTTP Link headers
## Version 0.8 (2017-09-16)
- Improve embedding of tweets (issue#66)
- Allow for “responsive” images (issue#62)
## Version 0.7.3 (2017-09-13)
- Fix a test
## Version 0.7.2 (2017-09-13)
- Small AS2.0 improvements
## Version 0.7.1 (2017-09-13)
- Add content-negotiated AS data for homepage and single notes
## Version 0.7 (2017-09-08)
- Add Laravel Horizon
## Version 0.6 (2017-09-06)
- Update laravel version to 5.5
- Improve .travis.yml and add back dusk tests
## Version 0.5.28 (2017-08-20)
- Improve Swarm checkin code to allow checkins without text
+ this required a change in the notes table schema
- Improve code by bringing in latest changes in laravel/laravel
- Improve POSSE compatability with bridgy and silos
## Version 0.5.27 (2017-07-24)
- Just a bump in dependency versions used
## Version 0.5.26 (2017-07-20)
- Remove some file checking to see if we can get uploads working again
## Version 0.5.25 (2017-07-20)
- Update npm dev dependencies to use local installs over global installs
- Improve contact info display in note mentions by using hovercards
- Add some error messages when trying to upload media to aid debugging
## Version 0.5.24 (2017-07-13)
- Add my `commonmark-linkify` extension
- Some minor tweaks, including logging of micropub media requests
## Version 0.5.23 (2017-07-07)
- Add emoji 5.0 support with newer `emoji-a11y` package
- Places can be “added” to a note in the mp-client again, (issue#47)
## Version 0.5.22 (2017-07-06)
- A small improvement to the piwik tracking script
## Version 0.5.21 (2017-07-04)
- Better logging of micropub requests
- fix a style issue with images
## Version 0.5.20 (2017-06-30)
- Transition to using a JSON column for external urls of places
## Version 0.5.19 (2017-06-27)
- Fix error in App\\WebMention.php
## Version 0.5.18 (2017-06-23)
- Minor change in deploy script to speed things up
## Version 0.5.17 (2017-06-22)
- Lots of code tidying, especially in the notes controller
- Fix issue#53 regarding uploading photos
## Version 0.5.16 (2017-06-17)
- Allow place `slug`s to be re-generated
- Add syndication links for swarm and instagram
- Move bio to its own template, next step database?
## Version 0.5.15 (2017-06-17)
- Add support for ownyourgram.com sending h-card locations
- change sluggable implementation
- Add tests for uploading new articles from .md files
- Fix issue with maps not loading geojson data
## Version 0.5.14 (2017-06-11)
- Remove some Log statements in-appropriate for porduction
## Version 0.5.13 (2017-06-11)
- Fix issues around using ownyourgram.com
## Version 0.5.12 (2017-06-11)
- Add ability to delete notes
## Version 0.5.11 (2017-06-11)
- to help with micropub clients, log requests made to micropub endpoint
## Version 0.5.10 (2017-06-09)
- Add a link to instagram account
- Add syndication feeds for articles/notes, supporting RSS/Atom/JSON (issue#52)
## Version 0.5.9 (2017-05-31)
- Mapping improvements
- Basic place merging
## Version 0.5.8 (2017-05-21)
- Hotfix: if Carbon can’t parse the supplied published date of a webmention, use the Model’s `updated_at` value
## Version 0.5.7 (2017-05-19)
- Hotfix: make sure `mpSyndicateTo` variable exists when accessed in if statements
## Version 0.5.6 (2017-05-19)
- Update micropub code to support html-form and json syntax for mp-syndicate-to and photos
## Version 0.5.5 (2017-05-19)
- improve test suite
- Syndication should now work
## Version 0.5.4 (2017-05-18)
- Fix issues with using the indieauth client
## Version 0.5.3 (2017-05-18)
- Tweak config page and get token method to better handle/show errors
## Version 0.5.2 (2017-05-18)
- Fix variable issues in making client page
## Version 0.5.1 (2017-05-18)
- Fix issue on micropub create page when not logged in
## Version 0.5 (2017-05-18)
- Update micropub client to allow indieweb users
- Update micropub endpoint to allow for entry updates
- Add support for checkins, so we can use ownyourswarm
## Version 0.4.2 (2017-03-24)
- fixed issue#47, only the slug was being sent by client, which was messing up endpoint code
- minor changes to es6 code, bet lint-staged working again
- Make processed article content its own fake attribute, articles can now be uploaded as a file
## Version 0.4.1 (2017-03-18)
- Improve HTML Purification, target=blank rel-nofollow and rel-noopener should
now be added to external links
- Better handling of javascript compilation/minification and source-map generation
## Version 0.4 (2017-03-18)
- Media endpoint added
## Version 0.3.6 (2017-03-07)
- Pull in Piwik’s own piwik.js manually, again for CSP
## Version 0.3.5 (2017-03-07)
- Move piwik code into its own js file to allow for CSP
## Version 0.3.4 (2017-03-07)
- Remove document.write to allow CSP to work
## Version 0.3.3 (2017-03-03)
- Fix issue when accessing /admin
## Version 0.3.2 (2017-03-03)
- Remove route closures to allow route:cache-ing
## Version 0.3.1 (2017-03-03)
- Correct command to restart daemon queues in deploy.sh
- Improve Admin CP by “resource”-ifying the controllers
## Version 0.3 (2017-03-02)
- convert env() calls to config() calls for cacheing
- refactor routes and give important one names
- Add Dusk tests
- Add a deploy script
- Add a .editorconfig file
- Bump to PHP 7.1 to start using nullable return types and strict types
## Version 0.2.5 (2017-02-15)
- Small fix for homepage bio, removed confusing un-needed view that caused fix to be necessary
## Version 0.2.4 (2017-02-15)
- Make embedded youtube iframe a dynamic size
- Add Piwik tracking code
- Minor profile tweaks
## Version 0.2.3 (2017-02-05)
- Autolink/embed youtube videos and spotify links
## Version 0.2.2 (2017-02-05)
- Fix: allow syndication to work again (issue#42)
## Version 0.2.1 (2017-02-03)
- Add css for emoji labels
## Version 0.2 (2017-02-03)
- Update `syndicate-to` property to `mp-syndicate-to`
- Add my emoji-a11y dependency
- Upgrade to Laravel 5.4
## Version 0.1.7 (2017-01-27)
- Add a rel=me link to my own domain in my h-card.
## Version 0.1.6 (2017-01-27)
- Update the webmention parser to a version with a verified fix
## Version 0.1.5 (2017-01-27)
- Update the webmention parser version to fix a bug with displaying webmentions
## Version 0.1.4 (2017-01-27)
- Fix: refactor code slightly to allow multiple maps to be added to a page
## Version 0.1.3 (2017-01-26)
- cleanup frontend assets, update compressed versions
## Version 0.1.2 (2017-01-26)
- Improve syndication flow when working out which targets to use
- Use webpack/babel/es6 (this was a big one, code wise, functionality now basically the same though)
## Version 0.1.1 (2016-12-10)
- Fix: use correct link for footer iwc icon
## Version 0.1 (2016-12-10)
- Much better testing of micropub endpoints locally and on TravisCI
- Updating README
- Add IWC logo to footer
## Version 0.0.18 (2016-12-08)
- Some minor style tweaks
- Fix some validation issues
- Switch to Makefile for front-end build tasks
- Switch to Postgres based search
- Update travis to use aforementioned search and php 7.1
- Move syndication targets into a config file (issue#27)
## Version 0.0.17 (2016-11-25)
- Add a basic search feature using Laravel Scout and Algolia (issue#38)
- Get CI testing working with algolia
- Slightly better layout of replies
## Version 0.0.16.3 (2016-11-25)
- StyleCI fix
## Version 0.0.16.2 (2016-11-25)
- improved contact h-cards
- Better look in /contacts
- h-cards now have person-tags (issue#36)
- maps now have zoom controls (issue#37)
## Version 0.0.16.1 (2016-11-22)
- Break words
- Added a footer to all pages
- Added a colophon page
## Version 0.0.16 (2016-11-22)
- Much simpler website design
- Update mapbox to use Mapbox GL JS, things can be improved
- Make the homepage show notes, as well as bio (issue#16)
## Verison 0.0.15.13 (2016-11-08)
- Link to the source of a reply correctly (issue#33)
## Version 0.0.15.12 (2016-11-07)
- Fix micropub client in-reply-to name
## Version 0.0.15.11 (2016-11-07)
- Fix send webmention
## Version 0.0.15.10 (2016-11-07)
- Update typekit’s sri hash
## Version 0.0.15.9 (2016-11-07)
- Hotfix: not using cerated variable of foreach loop
## Version 0.0.15.8 (2016-11-07)
- Hotfix: facebook’s love-of appears as an in-reply-to without a published date
## Version 0.0.15.7 (2016-11-07)
- Add a reply icon in note metadata
- Allow notes to be deleted
## Version 0.0.15.6 (2016-11-03)
- Remove reply/like/repost links, not needed without indie-action
- Add facebook syndication link (issue#29)
## Version 0.0.15.5 (2016-10-31)
- Fix: update note view to use longitude in h-card for a place
## Version 0.0.15.4 (2016-10-26)
- Use an array with `syndicate-to` to allow multiple values
## Version 0.0.15.3 (2016-10-26)
- Fix: didn’t import the namespace for the facebook job
## Version 0.0.15.2 (2016-10-26)
- Fix: syntax error introduced in v0.0.15.1
## Version 0.0.15.1 (2016-10-26)
- Add facebook as a syndication target
## Version 0.0.15 (2016-10-26)
- Modify SyndicateToTwitter to use bridgy publish
- Add a SyndicateToFacebook job which also uses bridgy publish (issue#24)
- Modify views to facilitate bridgy publish (issue#26)
## Version 0.0.14.13 (2016-10-26)
- Fix: correct the syntax of Link headers (issue#25)
## Version 0.0.14.12 (2016-10-24)
- Attempt to fix some HTML validation issues
## Version 0.0.14.11 (2016-10-24)
- Having used `yarn` for npm packages, we now also use it for bower packages
- Update typekit sri hash
- Hide co-ordinates, in data tags, we want them to be read by machines, but not humans
- Use `h-card` for “places”, and`h-adr` for reverse lookup location name
## Version 0.0.14.10 (2016-10-21)
- Fix: Trying to get brid.gy markup compatibility
## Version 0.0.14.9 (2016-10-21)
- Include co-ordinates with notes and markup with appropriate microformats
- Add correct microformats for photos
## Version 0.0.14.8 (2016-10-20)
- Use the correct namespace
## Version 0.0.14.7 (2016-10-20)
- Add needed namespace (issue#23)
## Version 0.0.14.6 (2016-10-20)
- issue#23 again, also pinning against a tagged webmentions-parser release
## Version 0.0.14.5 (2016-10-20)
- Fix an issue in the save profile image job (issue#23)
## Version 0.0.14.4 (2016-10-19)
- Fix a bad explode() call in the syndicate job
## Version 0.0.14.3 (2016-10-19)
- Allow co-ordinates to be used for note location, reverse geocode place name will be used (w/o map)
- Switch from npm to yarn
## Version 0.0.14.2 (2016-10-17)
- Update .lock, particularly trying to get medialibrary working
## Version 0.0.14.1 (2016-10-10)
- Allow files uploaded to the client to be sent to the endoint without needing to use `media-tmp`
## Version 0.0.14 (2016-10-07)
- Fix image upload for notes
- Allow co-ordinates to be sent by the client as a geo: URI
- Allow endpoint to process geo: URIs for location
## Version 0.0.13.9 (2016-10-06)
- Hotfix, add missing semi-colon
## Version 0.0.13.8 (2016-10-06)
- Create a Place model instance in SyndicateToTwitter job to force laravel to access postgis methods
## Version 0.0.13.7 (2016-10-05)
- Use the correct `laravel-postgis` method call during syndication
## Version 0.0.13.6 (2016-10-05)
- Syndicate lat/lng values (issue#22)
## Version 0.0.13.5 (2016-10-05)
- Places can now be added to a new note created via micropub
## Version 0.0.13.4 (2016-10-03)
- Better working code for places in newnote.js (issue#21)
* In aid of this add ability to run micropub code locally
## Version 0.0.13.3 (2016-10-03)
- Use the actual results of places in `newnote.js` (issue#21)
## Version 0.0.13.2 (2016-10-03)
- Fix issues with fetch API and places when using micropub client
## Version 0.0.13.1 (2016-10-01)
- Add support for accuracy/uncertainty in geo URIs (issue#20,issue#9)
- Add some places tests
## Version 0.0.13 (2016-09-26)
- Better places support, particularly with micropub (issue#9)
- Uglify javascript for better performance (issue#19)
- Auto-link Spotify links (issue#18)
## Version 0.0.12 (2016-09-21)
- Better indication of number of replies to a note (issue#17)
- Use generic twitter status URL so my own profile name isn’t hardcoded (issue#14)
## Version 0.0.11.9 (2016-09-21)
- Fix: Correctly parse microformats data for single note view
## Version 0.0.11.8 (2016-09-21)
- Fix: remove index.html from generated url
## Version 0.0.11.7 (2016-09-21)
- Fix: need to create necessary directories first
## Version 0.0.11.6 (2016-09-20)
- Fix: save webmention HTML to correct location
## Version 0.0.11.5 (2016-09-20)
- Fix job dispatching to more in line with Laravel 5.3 practices
## Version 0.0.11.4 (2016-09-19)
- Better console output for the new webmention commands
## Version 0.0.11.3 (2016-09-19)
- Simplify how we filter/cache reply html
- Better handling of webmention reply HTML cache
## Version 0.0.11.2 (2016-09-19)
- Update Typekit’s javascript sri hash
## Version 0.0.11.1 (2016-09-17)
- Fix a syntax issue in the download webmention job
## Version 0.0.11 (2016-09-17)
- update linked GPG key (issue#7)
- Added `integrity` values to external assets (issue#10)
- Move Mapbox links into own sub-view (issue#11)
- Updated Mapbox version (issue#12)
- Massive refactor of webmention code, allowing for re-parse command (issue#8)
- Add license file (issue#13)
## Version 0.0.10 (2016-09-10)
- Add an artisan command for Sensiolab’s security check
- Remove `filp/whoops`, just use Laravel’s error reporting
- Better TokenMismatchException handling (issue#5)
## Version 0.0.9.2 (2016-09-08)
- Remove Piwik
- Updated some bower dependencies
- Tidy some `.git*` files
## Version 0.0.9.1 (2016-09-07)
- Fix an issue with syndicating notes.
## Version 0.0.9 (2016-09-06)
- Adding `jsonb` column to store webmentions’ microformats.
* As of L5.2 this needs a custom command to drop NOT NULL from content, L5.3 should allow a fix for this
- Refactor receiving webmention code
- Refactor sending webmention code to pass `webmention.rocks`
- Update to use Laravel 5.3
## Version 0.0.8.5 (2016-07-18)
- Set the size of the `textarea` in a form better
- Update to latest Guzzle to fix CVE-2016-5385
## Version 0.0.8.4 (2016-07-18)
- Make the revised non-elixir asset links absolute
## Version 0.0.8.3 (2016-07-18)
- Dump `laravel-elixir`, use gulp natively. Also this means using nginx and etags for cache-busting
## Version 0.0.8.2 (2016-07-15)
- Improve syndication parsing to allow better name display on new note form
## Version 0.0.8.1 (2016-07-13)
- Fix an issue in the syndication target parsing method
## Version 0.0.8 (2016-07-13)
- Allow new notes to be made by a JSON request from a micropub client
- Add DependencyCI support
## Version 0.0.7.1 (2016-07-04)
- Minor style fixes
## Version 0.0.7 (2016-07-04)
- Use JSON for syndication endpoint query response
- Use JSON for all micropub requests
- Add support for `q=config` query of the micropub endpoint
## Version 0.0.6.3 (2016-06-29)
- Fix an issue with dispatching the syndication job
## Version 0.0.6.2 (2016-06-28)
- Fix an issue with sending webmentions
## Version 0.0.6 (2016-06-28)
- Better use of `laravel-postgis`
- Change style for inline mini-profile images
## Version 0.0.5 (2016-06-23)
- Automatically send webmentions
- Change `mp-syndicate-to` to `syndicate-to`
## Version 0.0.4 (2016-06-21)
- Move bower components into their own subdir
- Move my js into `resources/`, apply an eslint pre-commit hook
- Better guplfile, next thing is to add cleanup of old compressed files
- Update `spatie/laravel-medialibrary` to v4, tweak associated code
- Merge in upstream changes
- Add a stylelint lint-staged hook
## Version 0.0.3 (2013-06-09)
- Better tag normalisation code organisation
- Remove `jonnybarnes/unicode-tools` dependency and clean up relevant code
## Version 0.0.2 (2016-05-25)
- Fix issue#1: tagged notes page needs the tag from the URL normalising.
## Version 0.0.1 (2016-05-25)
- Initial release

View file

@ -1,13 +1,16 @@
{
"name": "jonnybarnes/jonnybarnes.uk",
"description": "The code for jonnybanres.uk, based on Laravel 5.4",
"keywords": ["framework", "laravel", "indieweb"],
"license": "CC0-1.0",
"type": "project",
"description": "The code for jonnybanres.uk, based on Laravel 5.4",
"keywords": [
"framework",
"laravel",
"indieweb"
],
"license": "CC0-1.0",
"require": {
"php": ">=7.2.0",
"cviebrock/eloquent-sluggable": "~4.3",
"ezyang/htmlpurifier": "~4.6",
"fideloper/proxy": "~4.0",
"guzzlehttp/guzzle": "~6.0",
"indieauth/client": "~0.1",
@ -30,28 +33,40 @@
"ramsey/uuid": "^3.5",
"sensiolabs/security-checker": "^5.0",
"spatie/browsershot": "~3.0",
"spatie/commonmark-highlighter": "^1.0",
"tgalopin/html-sanitizer": "^1.1",
"thujohn/twitter": "~2.0"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"barryvdh/laravel-debugbar": "~3.0",
"codedungeon/phpunit-result-printer": "^0.22.0",
"codedungeon/phpunit-result-printer": "^0.24.0",
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"jakub-onderka/php-parallel-lint": "^1.0.0",
"laravel/dusk": "^4.0",
"mockery/mockery": "~1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "~7.0",
"symfony/thanks": "~1.0"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"helpers.php"
]
@ -61,29 +76,18 @@
"Tests\\": "tests"
}
},
"extra": {
"laravel": {
"dont-discover": [
]
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
"@php artisan key:generate --ansi"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
},
"minimum-stability": "dev",
"prefer-stable": true
}
}

1644
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -54,6 +54,8 @@ return [
'url' => env('APP_URL', 'http://localhost'),
'asset_url' => env('ASSET_URL', null),
/*
|--------------------------------------------------------------------------
| Application Long URL
@ -126,6 +128,19 @@ return [
'fallback_locale' => 'en',
/*
|--------------------------------------------------------------------------
| Faker Locale
|--------------------------------------------------------------------------
|
| This locale will be used by the Faker PHP library when generating fake
| data for your database seeds. For example, this will be used to get
| localized telephone numbers, street address information and more.
|
*/
'faker_locale' => 'en_US',
/*
|--------------------------------------------------------------------------
| Encryption Key

View file

@ -1,5 +1,7 @@
<?php
use Illuminate\Support\Str;
return [
/*
@ -57,7 +59,7 @@ return [
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
@ -86,6 +88,6 @@ return [
|
*/
'prefix' => 'laravel',
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'),
];

Some files were not shown because too many files have changed in this diff Show more