mirror of
https://codeberg.org/vlw/wp.git
synced 2026-02-26 03:51:58 +01:00
refactor: use Database instance from scaffold library (#16)
Bumped vlw/scaffold to 1.7.6 and make use of the `Database::instance()` method. This is an almost-fix for issue #15. It will not close it though. The Database class is still a hot mess. Reviewed-on: https://codeberg.org/vlw/wp/pulls/16
This commit is contained in:
parent
0837975758
commit
2bfc93ceda
3 changed files with 23 additions and 26 deletions
6
composer.lock
generated
6
composer.lock
generated
|
|
@ -35,11 +35,11 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "vlw/scaffold",
|
"name": "vlw/scaffold",
|
||||||
"version": "1.7.0",
|
"version": "1.7.6",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://codeberg.org/vlw/scaffold",
|
"url": "https://codeberg.org/vlw/scaffold",
|
||||||
"reference": "1536079fe384c0cdc8b3814b67318140dbc339ff"
|
"reference": "ffd809f76dd50d7a6ee631f21715dca40ec40f44"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"vlw/mysql": "3.5.*"
|
"vlw/mysql": "3.5.*"
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Project scaffolding (primarily) for Reflect and Vegvisir projects",
|
"description": "Project scaffolding (primarily) for Reflect and Vegvisir projects",
|
||||||
"time": "2026-02-11T16:25:22+00:00"
|
"time": "2026-02-24T09:44:05+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "vlw/xenum",
|
"name": "vlw/xenum",
|
||||||
|
|
|
||||||
|
|
@ -31,13 +31,7 @@
|
||||||
* @return static
|
* @return static
|
||||||
*/
|
*/
|
||||||
public static function current(): static {
|
public static function current(): static {
|
||||||
return new static(
|
return static::instance();
|
||||||
self::$hostname,
|
|
||||||
self::$username,
|
|
||||||
self::$password,
|
|
||||||
self::$name,
|
|
||||||
self::$prefix
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,19 @@
|
||||||
use Exception;
|
use Exception;
|
||||||
use vlw\MimeTypes\MimeTypes;
|
use vlw\MimeTypes\MimeTypes;
|
||||||
|
|
||||||
|
use vlw\WP\Database;
|
||||||
use vlw\WP\Posts\Post;
|
use vlw\WP\Posts\Post;
|
||||||
|
use vlw\WP\Tables\Posts;
|
||||||
use vlw\WP\Posts\PostMeta;
|
use vlw\WP\Posts\PostMeta;
|
||||||
use function vlw\WP\Support\slugify;
|
use function vlw\WP\Support\slugify;
|
||||||
|
|
||||||
require_once dirname(__DIR__, 1) . "/Post.php";
|
require_once dirname(__DIR__, 1) . "/Post.php";
|
||||||
require_once dirname(__DIR__, 1) . "/PostMeta.php";
|
require_once dirname(__DIR__, 1) . "/PostMeta.php";
|
||||||
require_once dirname(__DIR__, 2) . "/Support/Slugify.php";
|
require_once dirname(__DIR__, 2) . "/Support/Slugify.php";
|
||||||
|
require_once dirname(__DIR__, 2) . "/Tables/Posts.php";
|
||||||
|
|
||||||
class Attachment {
|
class Attachment {
|
||||||
|
private const POST_TYPE = "attachment";
|
||||||
private const META_KEY_THUMBNAIL_ID = "_thumbnail_id";
|
private const META_KEY_THUMBNAIL_ID = "_thumbnail_id";
|
||||||
private const META_KEY_FEATURED_MEDIA = "_featured_media";
|
private const META_KEY_FEATURED_MEDIA = "_featured_media";
|
||||||
private const META_KEY_WP_ATTACHED_FILE = "_wp_attached_file";
|
private const META_KEY_WP_ATTACHED_FILE = "_wp_attached_file";
|
||||||
|
|
@ -28,24 +32,23 @@
|
||||||
* @return Attachment|null
|
* @return Attachment|null
|
||||||
*/
|
*/
|
||||||
public static function from_post_featured(Post $post, bool $thumbnail = true): ?Attachment {
|
public static function from_post_featured(Post $post, bool $thumbnail = true): ?Attachment {
|
||||||
// Check the thumbnail for an attachment ID. This operation is slightly less demanding than unserialize
|
// We didn't find any post meta, let's search the post table for an attachment with this Post as its parent
|
||||||
if ($thumbnail) {
|
$query = Database::current()
|
||||||
$post_meta = PostMeta::get_post_meta($post, self::META_KEY_THUMBNAIL_ID);
|
->from(Database::get_table("posts"))
|
||||||
|
->where([
|
||||||
|
Posts::POST_PARENT->value => $post->id,
|
||||||
|
Posts::POST_TYPE->value => self::POST_TYPE
|
||||||
|
])
|
||||||
|
->limit(1)
|
||||||
|
->select(Posts::ID->value);
|
||||||
|
|
||||||
if ($post_meta) {
|
// Bail out, we didn't find any valid featured media for this Post
|
||||||
return new static($post_meta->id);
|
if ($query->num_rows !== 1) {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$post_meta = PostMeta::get_post_meta($post, self::META_KEY_FEATURED_MEDIA);
|
|
||||||
|
|
||||||
// Bail out, the target Post does not have any featured media
|
|
||||||
if (!$post_meta) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// New instance from post ID in featured media serialized object
|
// We found an attachment
|
||||||
return new static((int) unserialize($post_meta->meta_value)[0]);
|
return new static($query->fetch_assoc()[Posts::ID->value]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue