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> $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 $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 $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 $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 $candidates * @return array */ private static function first_array(array $candidates): array { foreach ($candidates as $candidate) { if (is_array($candidate) && !empty($candidate)) { return $candidate; } } return []; } }