PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.19
ووسلام – همگام سازی ووکامرس و باسلام v1.10.19
1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 All 53 releases
sync-basalam / includes / Admin / Product / elements / ProductList / MetaBox.php

MetaBox.php in ووسلام – همگام سازی ووکامرس و باسلام 1.10.19, at includes/Admin/Product/elements/ProductList/MetaBox.php

167 lines 6.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SyncBasalam\Admin\Product\elements\ProductList;
4
5 use SyncBasalam\Admin\Settings\SettingsConfig;
6 use SyncBasalam\Admin\Components\CommonComponents;
7 use SyncBasalam\Utilities\ProductMetaKey;
8 use SyncBasalam\Services\VendorSyncPolicy;
9
10 defined('ABSPATH') || exit;
11
12 class MetaBox
13 {
14 public static function registerMetaBox()
15 {
16 global $post;
17 $productId = $post->ID;
18 $productStatus = get_post_meta($productId, ProductMetaKey::basalamProductSyncStatus(), true);
19
20 switch ($productStatus) {
21 case 'synced':
22 $statusColor = 'green';
23 $statusTooltip = '�
24 حصول با باسلا�
25 ه�
26 گا�
27 است.';
28
29 break;
30 case 'pending':
31 $statusColor = 'yellow';
32 $statusTooltip = '�
33 حصول در حال اجرای ع�
34 لیات است.';
35
36 break;
37 default:
38 $statusColor = 'red';
39 $statusTooltip = '�
40 حصول با باسلا�
41 ه�
42 گا�
43 نیست.';
44
45 break;
46 }
47
48 add_meta_box(
49 'sync_basalam_single_product_manage_box',
50 'تنظی�
51 ات باسلا�
52 <span title="' . esc_attr($statusTooltip) . '" style="background:' . esc_attr($statusColor) . ';width: 16px;height: 16px;border-radius: 100%;">
53 <img src="' . esc_url(syncBasalamPlugin()->assetsUrl() . "/icons/info.svg") . '" alt="" class="basalam-img-15">
54 </span>',
55 [self::class, 'renderMetaBox'],
56 'product',
57 'side',
58 'high'
59 );
60 }
61
62 public static function renderMetaBox($post)
63 {
64 $productId = $post->ID;
65 $productStatus = get_post_status($productId);
66
67 $basalamProductStatus = get_post_meta($productId, ProductMetaKey::basalamProductStatus(), true);
68 $basalamProductSyncStatus = get_post_meta($productId, ProductMetaKey::basalamProductSyncStatus(), true);
69 $syncBasalamProductId = get_post_meta($productId, ProductMetaKey::basalamProductId(), true);
70
71 $settings = syncBasalamSettings();
72 $BasalamAccessToken = $settings->getSettings(SettingsConfig::TOKEN);
73 $syncBasalamVendorId = $settings->getSettings(SettingsConfig::VENDOR_ID);
74 $vendorSyncPolicy = syncBasalamContainer()->get(VendorSyncPolicy::class);
75 $vendorSyncState = $vendorSyncPolicy->getFrontendState();
76
77 if ($productStatus == 'publish') {
78 if ($basalamProductSyncStatus == 'pending') {
79 echo '<p class="basalam-p basalam-font-12">یک ع�
80 لیات برای این �
81 حصول در جریان است.</p>';
82 } elseif (!$BasalamAccessToken || !$syncBasalamVendorId) {
83 echo '<p class="basalam-p basalam-font-12">دسترسی های لاز�
84 دریافت نشده است ، ابتدا دسترسی ها را <a href="/wp-admin/admin.php?page=sync_basalam" target="_blank">دریافت</a> ن�
85 ایید.</p>';
86 } else {
87 // بدون شناسه �
88 حصول باسلا�
89 ، �
90 حصول �
91 تصل نیست؛ حتی اگر وضعیت‌های قدی�
92 ی روی �
93 حصول �
94 انده باشد.
95 if ($basalamProductStatus && $syncBasalamProductId) {
96 if (!empty($vendorSyncState['can_update'])) {
97 $updateLabel = $vendorSyncState['mode'] === VendorSyncPolicy::MODE_INACTIVE_LIMITED
98 ? 'بروزرسانی قی�
99 ت و �
100 وجودی در باسلا�
101 '
102 : 'بروزسانی �
103 حصول در باسلا�
104 ';
105 CommonComponents::renderBtn($updateLabel, 'update_product_in_basalam', $post->ID, 'update_product_in_basalam_nonce', true);
106 } else {
107 echo '<p class="basalam-p basalam-font-12">' . esc_html($vendorSyncState['message']) . '</p>';
108 }
109
110 if ($vendorSyncPolicy->canUpdateProductStatus(false)) {
111 if ($basalamProductStatus == 2976) {
112 CommonComponents::renderBtn('آرشیو کردن �
113 حصول در باسلا�
114 ', 'archive_exist_product_on_basalam', $post->ID, 'archive_exist_product_on_basalam_nonce', true);
115 } else {
116 CommonComponents::renderBtn('بازگردانی �
117 حصول در باسلا�
118 ', 'restore_exist_product_on_basalam', $post->ID, 'restore_exist_product_on_basalam_nonce', true);
119 }
120 }
121 $link = "https://basalam.com/p/" . $syncBasalamProductId;
122 CommonComponents::renderLink('�
123 شاهده �
124 حصول در باسلا�
125 ', $link);
126 CommonComponents::renderBtn('قطع اتصال �
127 حصول', 'disconnect_exist_product_on_basalam', $post->ID, 'disconnect_exist_product_on_basalam_nonce', true);
128 } else {
129 if (!empty($vendorSyncState['can_create'])) {
130 CommonComponents::renderBtn('اضافه کردن �
131 حصول در باسلا�
132 ', 'create_product_basalam', $post->ID, 'create_product_basalam_nonce', true);
133 } else {
134 echo '<p class="basalam-p basalam-font-12">' . esc_html($vendorSyncState['message']) . '</p>';
135 }
136 require_once syncBasalamPlugin()->templatePath("products/ConnectButton.php");
137 }
138 }
139 } else {
140 echo '<p class="basalam-p basalam-font-12">برای دسترسی به تنظی�
141 ات باسلا�
142 ، وضعیت �
143 حصول را به "�
144 نتشر شده" تغییر دهید.</p>';
145 }
146 $nonceGetBasalamCategoryIdsAction = 'basalam_get_category_ids_nonce';
147 $nonceGetBasalamCategoryIdValue = wp_create_nonce($nonceGetBasalamCategoryIdsAction);
148 echo '<hr>';
149 echo '<div>
150 <button type="button" id="basalam_fetch_categories_btn" class="basalam-p basalam-button-full-primary" style="padding:4px !important;">
151 دریافت دسته‌بندی‌های پیشنهادی باسلا�
152
153 </button>
154 <input type="hidden" id="basalam_get_category_ids_nonce" value="' . esc_attr($nonceGetBasalamCategoryIdValue) . '">
155 </div>
156 <div id="sync_basalam_category_id" class="basalam-p__small basalam--hidden">
157 </div>';
158
159 $nonceGetBasalamCategoryAttrAction = 'basalam_get_category_attrs_nonce';
160 $nonceGetBasalamCategoryAttrValue = wp_create_nonce($nonceGetBasalamCategoryAttrAction);
161
162 echo '<div id="sync_basalam_category_attributes" class="basalam-p__small basalam--hidden">
163 <input type="hidden" id="basalam_get_category_attrs_nonce" value="' . esc_attr($nonceGetBasalamCategoryAttrValue) . '">
164 </div>';
165 }
166 }
167