refactor(db): drop option/data migration from DB migrator
Keep dbDelta table schema only. Remove aksrt_basic_settings dual-write, layout/cms/resource/order/plate option migrators, and part-1 trait. Plate CPT activation no longer gated on migration flag.
This commit is contained in:
1 parent
9c2d0daae7
commit
ee40a074d7
4 files changed
+19
-552
No files matched your search
@@ -1,198 +0,0 @@
|
||||
<?php
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
trait AKSRT_DB_Migrator_Part_1 {
|
||||
|
||||
private static function migrate_resource_pay_meta_post(int $post_id): void {
|
||||
$post = get_post($post_id);
|
||||
if (!($post instanceof WP_Post)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$all_meta = get_post_meta($post_id);
|
||||
if (!is_array($all_meta)) {
|
||||
$all_meta = [];
|
||||
}
|
||||
|
||||
$canonical_meta = self::meta_value($all_meta, AKSRT_Domain_Model::PAY_META_KEY);
|
||||
if (!is_array($canonical_meta)) {
|
||||
$canonical_meta = [];
|
||||
}
|
||||
|
||||
$legacy_downloads = self::meta_value($all_meta, '_aksrt_res_downloads');
|
||||
if (!is_array($legacy_downloads)) {
|
||||
$legacy_downloads = [];
|
||||
}
|
||||
|
||||
$raw_pay_type = self::first_non_empty_string([
|
||||
$canonical_meta['pay_type'] ?? '',
|
||||
self::meta_value($all_meta, AKSRT_Domain_Model::PAY_TYPE_KEY),
|
||||
self::meta_value($all_meta, '_aksrt_res_pay_type'),
|
||||
]);
|
||||
|
||||
$has_resource_marker = self::first_boolean([
|
||||
self::meta_value($all_meta, AKSRT_Domain_Model::RESOURCE_MARKER_KEY),
|
||||
$post->post_type === 'aksrt_resource',
|
||||
!empty($legacy_downloads),
|
||||
]);
|
||||
|
||||
if ($raw_pay_type === '' && $has_resource_marker) {
|
||||
$raw_pay_type = AKSRT_Domain_Model::PAY_TYPE_DOWNLOAD;
|
||||
}
|
||||
|
||||
$pay_meta = AKSRT_Domain_Model::sanitize_pay_meta([
|
||||
'pay_type' => $raw_pay_type,
|
||||
'price' => self::first_numeric([
|
||||
$canonical_meta['price'] ?? null,
|
||||
self::meta_value($all_meta, AKSRT_Domain_Model::PAY_PRICE_KEY),
|
||||
self::meta_value($all_meta, '_aksrt_res_price'),
|
||||
]),
|
||||
'original_price' => self::first_numeric([
|
||||
$canonical_meta['original_price'] ?? null,
|
||||
self::meta_value($all_meta, '_aksrt_res_original_price'),
|
||||
]),
|
||||
'vip1_price' => self::first_numeric([
|
||||
$canonical_meta['vip1_price'] ?? null,
|
||||
self::meta_value($all_meta, '_aksrt_res_vip1_price'),
|
||||
]),
|
||||
'vip2_price' => self::first_numeric([
|
||||
$canonical_meta['vip2_price'] ?? null,
|
||||
self::meta_value($all_meta, '_aksrt_res_vip2_price'),
|
||||
]),
|
||||
'version' => self::first_non_empty_string([
|
||||
$canonical_meta['version'] ?? '',
|
||||
self::meta_value($all_meta, '_aksrt_res_version'),
|
||||
]),
|
||||
'size' => self::first_non_empty_string([
|
||||
$canonical_meta['size'] ?? '',
|
||||
self::meta_value($all_meta, '_aksrt_res_size'),
|
||||
]),
|
||||
'license' => self::first_non_empty_string([
|
||||
$canonical_meta['license'] ?? '',
|
||||
self::meta_value($all_meta, '_aksrt_res_license'),
|
||||
]),
|
||||
'compat' => self::first_non_empty_string([
|
||||
$canonical_meta['compat'] ?? '',
|
||||
self::meta_value($all_meta, '_aksrt_res_compat'),
|
||||
]),
|
||||
'demo_url' => self::first_non_empty_string([
|
||||
$canonical_meta['demo_url'] ?? '',
|
||||
self::meta_value($all_meta, '_aksrt_res_demo_url'),
|
||||
]),
|
||||
'video_url' => self::first_non_empty_string([
|
||||
$canonical_meta['video_url'] ?? '',
|
||||
]),
|
||||
'downloads' => self::first_array([
|
||||
$canonical_meta['downloads'] ?? [],
|
||||
$legacy_downloads,
|
||||
]),
|
||||
'attributes' => self::first_array([
|
||||
$canonical_meta['attributes'] ?? [],
|
||||
]),
|
||||
'gallery' => self::first_array([
|
||||
$canonical_meta['gallery'] ?? [],
|
||||
]),
|
||||
'require_login' => self::first_boolean([
|
||||
$canonical_meta['require_login'] ?? null,
|
||||
self::meta_value($all_meta, '_aksrt_res_require_login'),
|
||||
]),
|
||||
'require_captcha' => self::first_boolean([
|
||||
$canonical_meta['require_captcha'] ?? null,
|
||||
self::meta_value($all_meta, '_aksrt_res_require_captcha'),
|
||||
]),
|
||||
]);
|
||||
|
||||
if ($pay_meta['pay_type'] === AKSRT_Domain_Model::PAY_TYPE_NO && $has_resource_marker) {
|
||||
$pay_meta['pay_type'] = AKSRT_Domain_Model::PAY_TYPE_DOWNLOAD;
|
||||
}
|
||||
|
||||
$pay_meta = AKSRT_Domain_Model::sanitize_pay_meta($pay_meta);
|
||||
|
||||
update_post_meta($post_id, AKSRT_Domain_Model::PAY_META_KEY, $pay_meta);
|
||||
update_post_meta($post_id, AKSRT_Domain_Model::PAY_TYPE_KEY, (string) $pay_meta['pay_type']);
|
||||
update_post_meta($post_id, AKSRT_Domain_Model::PAY_PRICE_KEY, (float) $pay_meta['price']);
|
||||
update_post_meta(
|
||||
$post_id,
|
||||
AKSRT_Domain_Model::RESOURCE_MARKER_KEY,
|
||||
AKSRT_Domain_Model::is_resource_pay_type((string) $pay_meta['pay_type']) ? 1 : 0
|
||||
);
|
||||
|
||||
clean_post_cache($post_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, array<int, mixed>> $all_meta
|
||||
* @return mixed
|
||||
*/
|
||||
private static function meta_value(array $all_meta, string $key) {
|
||||
if (!isset($all_meta[$key][0])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return maybe_unserialize($all_meta[$key][0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int, mixed> $candidates
|
||||
*/
|
||||
private static function first_non_empty_string(array $candidates): string {
|
||||
foreach ($candidates as $candidate) {
|
||||
if (is_array($candidate)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = trim((string) $candidate);
|
||||
if ($value !== '') {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int, mixed> $candidates
|
||||
*/
|
||||
private static function first_numeric(array $candidates): float {
|
||||
foreach ($candidates as $candidate) {
|
||||
if ($candidate === null || $candidate === '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (is_numeric($candidate)) {
|
||||
return (float) $candidate;
|
||||
}
|
||||
}
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int, mixed> $candidates
|
||||
*/
|
||||
private static function first_boolean(array $candidates): bool {
|
||||
foreach ($candidates as $candidate) {
|
||||
if ($candidate === null || $candidate === '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
return !empty($candidate);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int, mixed> $candidates
|
||||
* @return array<int|string, mixed>
|
||||
*/
|
||||
private static function first_array(array $candidates): array {
|
||||
foreach ($candidates as $candidate) {
|
||||
if (is_array($candidate) && !empty($candidate)) {
|
||||
return $candidate;
|
||||
}
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user