friendship ended with social-app. php is my new best friend

add opengraph stuff

Changed files
+69 -9
templates
+1 -1
.gitignore
···
# Finder (MacOS) folder config
.DS_Store
-
request-log.txt
+
request_log.txt
+52 -8
index.php
···
use React\Promise\Promise;
use Tracy\Debugger;
use Tracy\OutputDebugger;
+
use Matrix\Async;
$bskyToucher = new BskyToucher();
$favoriteFeeds = array_map(function ($feed) use ($bskyToucher) {
return $bskyToucher->getFeedInfo($feed);
}, FAVORITE_FEEDS);
+
+
function getPostOgImage(object $post): ?string {
+
if ($post->embedType === 'app.bsky.embed.images') {
+
return $post->embeds[0]->imgUrl;
+
} else if ($post->embedType === 'app.bsky.embed.external' || $post->embedType === 'app.bsky.embed.video') {
+
return $post->embeds[0]->thumb;
+
} else if ($post->embedtype === 'app.bsky.embed.record') {
+
return getPostOgImage($post->embeds[0]->post);
+
}
+
return null;
+
}
Debugger::enable();
// This where errors and exceptions will be logged. Make sure this directory exists and is writable.
···
'feedInfo' => $feedInfo,
'posts' => $posts->feed,
'cursor' => $posts->cursor,
-
'feedAtUri' => FRONTPAGE_FEED
+
'feedAtUri' => FRONTPAGE_FEED,
+
'ogtitle' => SITE_TITLE,
+
'ogdesc' => SITE_DESC,
+
'ogimage' => '',
+
'ogurl' => SITE_DOMAIN.'/'
]));
});
···
'likes' => $likes,
'reposts' => $reposts,
'quotes' => $quotes,
-
'replies' => $replies
+
'replies' => $replies,
+
'ogtitle' => SITE_TITLE." | ".$post->author->displayName." (@".$post->author->handle.")",
+
'ogdesc' => $post->content,
+
'ogimage' => getPostOgImage($post),
+
'ogurl' => SITE_DOMAIN.'/u/'.$handle.'/'.$rkey
]));
});
···
'mainClass' => 'profile',
'handle' => $handle,
'posts' => $posts,
-
'user' => $user
+
'user' => $user,
+
'ogtitle' => SITE_TITLE." | ".$user->displayName." (@".$user->handle.")",
+
'ogdesc' => $user->description,
+
'ogimage' => $user->avatar,
+
'ogurl' => SITE_DOMAIN.'/u/'.$user->handle.'/'
]));
});
···
'feedAuthorName' => $creatorInfo->displayName,
'feedAuthorHandle' => $creatorInfo->handle,
'feedAuthorDid' => $creatorInfo->did,
-
'feedAuthorPds' => $creatorInfo->pds
+
'feedAuthorPds' => $creatorInfo->pds,
+
'ogtitle' => SITE_TITLE." | ".$feedInfo->title,
+
'ogdesc' => $feedInfo->description,
+
'ogimage' => $feedInfo->avatar,
+
'ogurl' => SITE_DOMAIN.'/f/'.$did.'/'.$name
]));
});
···
$latte = new Latte\Engine;
$latte->render('./templates/search.latte', array_merge(Flight::get('standardParams'), [
'mainClass' => 'search',
-
'params' => $_GET
+
'params' => $_GET,
+
'ogtitle' => SITE_TITLE." | search".(array_key_exists('s', $_GET) ? ': '.$_GET['s'] : ''),
+
'ogdesc' => SITE_DESC,
+
'ogimage' => '',
+
'ogurl' => SITE_DOMAIN.'/u/'.$handle.'/'.$rkey
]));
});
Flight::route('GET /login', function(): void {
$latte = new Latte\Engine;
$latte->render('./templates/login.latte', array_merge(Flight::get('standardParams'), [
-
'mainClass' => 'form'
+
'mainClass' => 'form',
+
'ogtitle' => SITE_TITLE." | login",
+
'ogdesc' => SITE_DESC,
+
'ogimage' => '',
+
'ogurl' => SITE_DOMAIN.'/login'
]));
});
···
Flight::route('/createaccount', function(): void {
$latte = new Latte\Engine;
$latte->render('./templates/create.latte', array_merge(Flight::get('standardParams'), [
-
'mainClass' => 'form'
+
'mainClass' => 'form',
+
'ogtitle' => SITE_TITLE." | create account",
+
'ogdesc' => SITE_DESC,
+
'ogimage' => '',
+
'ogurl' => SITE_DOMAIN.'/createaccount'
]));
});
···
$md = $converter->convert(file_get_contents('./pages/'.$page.'.md'));
$latte->render('./templates/page.latte', array_merge(Flight::get('standardParams'), [
'mainClass' => 'page',
-
'content' => $md
+
'content' => $md,
+
'ogtitle' => SITE_TITLE." | ".$page,
+
'ogdesc' => SITE_DESC,
+
'ogimage' => '',
+
'ogurl' => SITE_DOMAIN.'/'.$page
]));
});
+16
templates/layout.latte
···
<html lang="en">
<head>
<title>{$siteTitle}{block title}{/block}</title>
+
+
<meta name="description" content="{$ogdesc}">
+
+
<meta property="og:url" content="{$ogurl}">
+
<meta property="og:type" content="website">
+
<meta property="og:title" content="{$ogtitle}">
+
<meta property="og:description" content="{$ogdesc}">
+
<meta property="og:image" content="{$ogimage}">
+
+
<meta name="twitter:card" content="summary_large_image">
+
<meta property="twitter:domain" content="{$ogdomain}">
+
<meta property="twitter:url" content="{$ogurl}">
+
<meta name="twitter:title" content="{$ogtitle}">
+
<meta name="twitter:description" content="{$ogdesc}">
+
<meta name="twitter:image" content="{$ogimage}">
+
<link rel="stylesheet" type="text/css" href="../css/main.scss" />
</head>
<body