Add embed cache
This commit is contained in:
parent
3d3ae77f8b
commit
82402aca98
5 changed files with 82 additions and 6 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,3 +1,5 @@
|
||||||
|
/src/cache/*
|
||||||
|
|
||||||
/vendor/bin
|
/vendor/bin
|
||||||
/vendor/composer
|
/vendor/composer
|
||||||
/vendor/squizlabs/php_codesniffer
|
/vendor/squizlabs/php_codesniffer
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define('VERSION', '0.3.0');
|
define('VERSION', '0.3.0');
|
||||||
|
define('ROOT', __DIR__);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Include
|
* Include
|
||||||
|
|
64
src/classes/embed-cache.php
Normal file
64
src/classes/embed-cache.php
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cache.php
|
||||||
|
*
|
||||||
|
* Cache embed requests.
|
||||||
|
*
|
||||||
|
* @author Jay Trees <github.jay@grandel.anonaddy.me>
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace wishthis;
|
||||||
|
|
||||||
|
class EmbedCache
|
||||||
|
{
|
||||||
|
private $directory = ROOT . '/src/cache';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function get(string $url): mixed
|
||||||
|
{
|
||||||
|
$info = null;
|
||||||
|
$identifier = md5($url);
|
||||||
|
$filepath = $this->directory . '/' . $identifier;
|
||||||
|
|
||||||
|
if (file_exists($filepath)) {
|
||||||
|
$info = json_decode(file_get_contents($filepath));
|
||||||
|
} else {
|
||||||
|
/**
|
||||||
|
* @link https://github.com/oscarotero/Embed
|
||||||
|
*/
|
||||||
|
$embed = new \Embed\Embed();
|
||||||
|
$info = $embed->get($url);
|
||||||
|
|
||||||
|
$info_simplified = new \stdClass();
|
||||||
|
$info_simplified->authorName = (string) $info->authorName;
|
||||||
|
$info_simplified->authorUrl = (string) $info->authorUrl;
|
||||||
|
$info_simplified->cms = (string) $info->cms;
|
||||||
|
$info_simplified->code = (string) $info->code;
|
||||||
|
$info_simplified->description = (string) $info->description;
|
||||||
|
$info_simplified->favicon = (string) $info->favicon;
|
||||||
|
$info_simplified->feeds = (array) $info->feeds;
|
||||||
|
$info_simplified->icon = (string) $info->icon;
|
||||||
|
$info_simplified->image = (string) $info->image;
|
||||||
|
$info_simplified->keywords = (array) $info->keywords;
|
||||||
|
$info_simplified->language = (string) $info->language;
|
||||||
|
$info_simplified->languages = (array) $info->languages;
|
||||||
|
$info_simplified->license = (string) $info->license;
|
||||||
|
$info_simplified->providerName = (string) $info->providerName;
|
||||||
|
$info_simplified->providerUrl = (string) $info->providerUrl;
|
||||||
|
$info_simplified->publishedTime = $info->publishedTime ? $info->publishedTime->format('d.m.Y') : '';
|
||||||
|
$info_simplified->redirect = (string) $info->redirect;
|
||||||
|
$info_simplified->title = (string) $info->title;
|
||||||
|
$info_simplified->url = (string) $info->url;
|
||||||
|
|
||||||
|
$info = $info_simplified;
|
||||||
|
|
||||||
|
file_put_contents($filepath, json_encode($info));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $info;
|
||||||
|
}
|
||||||
|
}
|
|
@ -79,11 +79,8 @@ class Wishlist
|
||||||
<div class="ui three column stackable grid wishlist-cards">
|
<div class="ui three column stackable grid wishlist-cards">
|
||||||
|
|
||||||
<?php foreach ($products as $product) {
|
<?php foreach ($products as $product) {
|
||||||
/**
|
$cache = new EmbedCache();
|
||||||
* @link https://github.com/oscarotero/Embed
|
$info = $cache->get($product['url']);
|
||||||
*/
|
|
||||||
$embed = new \Embed\Embed();
|
|
||||||
$info = $embed->get($product['url']);
|
|
||||||
?>
|
?>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="ui fluid card" data-id="<?= $product['id'] ?>">
|
<div class="ui fluid card" data-id="<?= $product['id'] ?>">
|
||||||
|
@ -124,7 +121,7 @@ class Wishlist
|
||||||
<div class="extra content">
|
<div class="extra content">
|
||||||
<?php if ($info->publishedTime) { ?>
|
<?php if ($info->publishedTime) { ?>
|
||||||
<span class="right floated">
|
<span class="right floated">
|
||||||
<?= $info->publishedTime->format('d.m.Y') ?>
|
<?= $info->publishedTime ?>
|
||||||
</span>
|
</span>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php if ($info->providerName) { ?>
|
<?php if ($info->providerName) { ?>
|
||||||
|
|
|
@ -63,6 +63,18 @@ switch ($step) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
|
/**
|
||||||
|
* Cache
|
||||||
|
*/
|
||||||
|
$cacheDirectory = 'src/cache';
|
||||||
|
|
||||||
|
if (!file_exists($cacheDirectory)) {
|
||||||
|
mkdir($cacheDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Config
|
||||||
|
*/
|
||||||
$configDirectory = 'src/config';
|
$configDirectory = 'src/config';
|
||||||
$configPath = $configDirectory . '/config.php';
|
$configPath = $configDirectory . '/config.php';
|
||||||
$configSamplePath = $configDirectory . '/config-sample.php';
|
$configSamplePath = $configDirectory . '/config-sample.php';
|
||||||
|
|
Loading…
Reference in a new issue