Merge pull request #3997 from pixelfed/staging

Staging
This commit is contained in:
daniel 2022-12-24 01:08:53 -07:00 committed by GitHub
commit 61bed89526
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 9 deletions

View file

@ -65,6 +65,7 @@
- Update CommentPipeline, remove expensive reply count re-calculation query ([b457a446](https://github.com/pixelfed/pixelfed/commit/b457a446))
- Update FederationController, improve inbox/sharedInbox delete handling ([2180a2de](https://github.com/pixelfed/pixelfed/commit/2180a2de))
- Update HashtagController, improve trending hashtag endpoint ([4873c7dd](https://github.com/pixelfed/pixelfed/commit/4873c7dd))
- Fix CustomEmoji, properly handle shortcode updates and delete old copy in case the extension changes ([bc29073a](https://github.com/pixelfed/pixelfed/commit/bc29073a))
- ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.11.4 (2022-10-04)](https://github.com/pixelfed/pixelfed/compare/v0.11.3...v0.11.4)

View file

@ -14,6 +14,8 @@ class CustomEmoji extends Model
const SCAN_RE = "/(?<=[^[:alnum:]:]|\n|^):([a-zA-Z0-9_]{2,}):(?=[^[:alnum:]:]|$)/x";
const CACHE_KEY = "pf:custom_emoji:";
protected $guarded = [];
public static function scan($text, $activitypub = false)
{
if(config('federation.custom_emoji.enabled') == false) {

View file

@ -6,6 +6,8 @@ use App\Models\CustomEmoji;
use App\Util\ActivityPub\Helpers;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Client\RequestException;
class CustomEmojiService
{
@ -33,7 +35,13 @@ class CustomEmojiService
return;
}
$res = Http::acceptJson()->get($url);
try {
$res = Http::acceptJson()->get($url);
} catch (RequestException $e) {
return;
} catch (\Exception $e) {
return;
}
if($res->successful()) {
$json = $res->json();
@ -57,16 +65,23 @@ class CustomEmojiService
return;
}
$emoji = new CustomEmoji;
$emoji->shortcode = $json['name'];
$emoji->uri = $json['id'];
$emoji->domain = parse_url($json['id'], PHP_URL_HOST);
$emoji->image_remote_url = $json['icon']['url'];
$emoji->save();
$emoji = CustomEmoji::firstOrCreate([
'shortcode' => $json['name'],
'domain' => parse_url($json['id'], PHP_URL_HOST)
], [
'uri' => $json['id'],
'image_remote_url' => $json['icon']['url']
]);
if($emoji->wasRecentlyCreated == false) {
if(Storage::exists('public/' . $emoji->media_path)) {
Storage::delete('public/' . $emoji->media_path);
}
}
$ext = '.' . last(explode('/', $json['icon']['mediaType']));
$dest = storage_path('app/public/emoji/') . $emoji->id . $ext;
copy($emoji->image_remote_url, $dest);
copy($json['icon']['url'], $dest);
$emoji->media_path = 'emoji/' . $emoji->id . $ext;
$emoji->save();
@ -84,7 +99,13 @@ class CustomEmojiService
public static function headCheck($url)
{
$res = Http::head($url);
try {
$res = Http::head($url);
} catch (RequestException $e) {
return false;
} catch (\Exception $e) {
return false;
}
if(!$res->successful()) {
return false;