# sync-basalam/1.10.19/includes/Utilities/ProductMetaKey.php

ووسلام – همگام سازی ووکامرس و باسلام, version 1.10.19. 89 lines.

- Page: https://pluginprobe.com/plugins/sync-basalam/1.10.19/code/includes/Utilities/ProductMetaKey.php
- Raw: https://pluginprobe.com/plugins/sync-basalam/1.10.19/raw/includes/Utilities/ProductMetaKey.php
- Modified: 2026-09-17T09:40:56+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/sync-basalam/1.10.19/code/includes/Utilities/ProductMetaKey.php#L10-L20`.

```php
<?php

namespace SyncBasalam\Utilities;

use SyncBasalam\Admin\Settings\SettingsConfig;

defined('ABSPATH') || exit;

class ProductMetaKey
{
    public const PRODUCT_ID = 'sync_basalam_product_id';
    public const PRODUCT_SYNC_STATUS = 'sync_basalam_product_sync_status';
    public const PRODUCT_STATUS = 'sync_basalam_product_status';
    public const PRODUCT_VIDEO = '_sync_basalam_product_video';
    public const VARIATION_ID = 'sync_basalam_variation_id';
    public const DISCOUNTED = 'sync_basalam_discounted';

    public static function basalamProductVideo(): string
    {
        return self::PRODUCT_VIDEO;
    }

    public static function basalamProductId($vendorId = null): string
    {
        return self::build(self::PRODUCT_ID, $vendorId);
    }

    public static function basalamProductSyncStatus($vendorId = null): string
    {
        return self::build(self::PRODUCT_SYNC_STATUS, $vendorId);
    }

    public static function basalamProductStatus($vendorId = null): string
    {
        return self::build(self::PRODUCT_STATUS, $vendorId);
    }

    public static function basalamVariationId(): string
    {
        return self::VARIATION_ID;
    }

    public static function basalamProductMetaKeys($vendorId = null): array
    {
        return [
            self::basalamProductId($vendorId),
            self::basalamProductSyncStatus($vendorId),
            self::basalamProductStatus($vendorId),
        ];
    }

    /**
     * پیشوند کلیدهای اتصال؛ برای پیدا کردن کلیدهای همه غرفه‌ها (کلیدهای دارای پسوند شناسه غرفه).
     */
    public static function basalamProductMetaKeyPrefixes(): array
    {
        return [
            self::PRODUCT_ID,
            self::PRODUCT_SYNC_STATUS,
            self::PRODUCT_STATUS,
        ];
    }

    private static function build(string $baseKey, $vendorId = null): string
    {
        $resolvedVendorId = self::normalizeVendorId($vendorId ?? self::getVendorIdFromSettings());

        if ($resolvedVendorId === '') {
            return $baseKey;
        }

        return "{$baseKey}_{$resolvedVendorId}";
    }

    private static function getVendorIdFromSettings()
    {
        return syncBasalamSettings()->getSettings(SettingsConfig::VENDOR_ID);
    }

    private static function normalizeVendorId($vendorId): string
    {
        if ($vendorId === null || $vendorId === '') {
            return '';
        }

        return preg_replace('/[^a-zA-Z0-9_-]/', '', (string) $vendorId);
    }
}

```
