jonnybarnes.uk/app/Services/NoteService.php

74 lines
2.2 KiB
PHP
Raw Normal View History

2016-05-19 15:01:28 +01:00
<?php
namespace App\Services;
use App\Note;
use App\Place;
use Illuminate\Http\Request;
2016-06-23 14:27:00 +01:00
use App\Jobs\SendWebMentions;
2016-05-19 15:01:28 +01:00
use App\Jobs\SyndicateToTwitter;
class NoteService
{
/**
* Create a new note.
*
* @param \Illuminate\Http\Request $request
* @param string $clientId
* @return \App\Note $note
*/
public function createNote(Request $request, $clientId = null)
{
if ($request->header('Content-Type') == 'application/json') {
$content = $request->input('properties.content')[0];
$inReplyTo = $request->input('properties.in-reply-to')[0];
$placeSlug = $request->input('properties.location');
if (is_array($placeSlug)) {
$placeSlug = $placeSlug[0];
}
} else {
$content = $request->input('content');
$inReplyTo = $request->input('in-reply-to');
$placeSlug = $request->input('location');
}
2016-05-19 15:01:28 +01:00
$note = Note::create(
[
'note' => $content,
'in_reply_to' => $inReplyTo,
2016-05-19 15:01:28 +01:00
'client_id' => $clientId,
]
);
if ($placeSlug !== null && $placeSlug !== 'no-location') {
$place = Place::where('slug', '=', $placeSlug)->first();
$note->place()->associate($place);
$note->save();
}
//add images to media library
if ($request->hasFile('photo')) {
$files = $request->file('photo');
foreach ($files as $file) {
$note->addMedia($file)->toMediaLibrary('images', 's3');
2016-05-19 15:01:28 +01:00
}
}
2016-09-20 13:13:05 +01:00
dispatch(new SendWebMentions($note));
2016-05-19 15:01:28 +01:00
if (//micropub request, syndication sent as array
(is_array($request->input('syndicate-to'))
2016-05-19 15:01:28 +01:00
&&
(in_array('https://twitter.com/jonnybarnes', $request->input('syndicate-to')))
2016-05-19 15:01:28 +01:00
|| //micropub request, syndication sent as string
($request->input('syndicate-to') == 'https://twitter.com/jonnybarnes')
2016-05-19 15:01:28 +01:00
|| //local admin cp request
($request->input('twitter') == true))
) {
2016-09-20 13:13:05 +01:00
dispatch(new SyndicateToTwitter($note));
2016-05-19 15:01:28 +01:00
}
return $note;
}
}