Plugin Directory

Changeset 3412923


Ignore:
Timestamp:
12/06/2025 11:19:08 AM (3 months ago)
Author:
hamsalam
Message:

1.6.2

Location:
sync-basalam
Files:
276 added
11 edited

Legend:

Unmodified
Added
Removed
  • sync-basalam/trunk/includes/admin/class-sync-basalam-category-mapping.php

    r3397803 r3412923  
    139139    }
    140140
    141     public static function createCategoryMapping($wooCategoryId, $wooCategoryName, $basalamCategoryId, $basalamCategoryName)
     141    public static function createCategoryMapping($wooCategoryId, $wooCategoryName, $basalamCategoryIds, $basalamCategoryName)
    142142    {
    143143        global $wpdb;
     
    152152            throw new Exception('این دسته‌بندی ووکامرس قبلاً به یک دسته‌بندی باسلام متصل شده است');
    153153        }
     154
     155        $level1 = isset($basalamCategoryIds[0]) && is_numeric($basalamCategoryIds[0]) ? intval($basalamCategoryIds[0]) : null;
     156        $level2 = isset($basalamCategoryIds[1]) && is_numeric($basalamCategoryIds[1]) ? intval($basalamCategoryIds[1]) : null;
     157        $level3 = isset($basalamCategoryIds[2]) && is_numeric($basalamCategoryIds[2]) ? intval($basalamCategoryIds[2]) : null;
    154158
    155159        $result = $wpdb->insert(
     
    158162                'woo_category_id' => $wooCategoryId,
    159163                'woo_category_name' => $wooCategoryName,
    160                 'basalam_category_id' => $basalamCategoryId,
     164                'basalam_category_level1' => $level1,
     165                'basalam_category_level2' => $level2,
     166                'basalam_category_level3' => $level3,
    161167                'basalam_category_name' => $basalamCategoryName
    162168            ],
    163             ['%d', '%s', '%d', '%s']
     169            ['%d', '%s', '%d', '%d', '%d', '%s']
    164170        );
    165171
     
    187193
    188194        $result = $wpdb->get_row($wpdb->prepare(
    189             "SELECT basalam_category_id, basalam_category_name FROM $tableName WHERE woo_category_id = %d",
     195            "SELECT basalam_category_level1, basalam_category_level2, basalam_category_level3, basalam_category_name FROM $tableName WHERE woo_category_id = %d",
    190196            $wooCategoryId
    191197        ));
    192198
    193         return $result;
     199        if (!$result) {
     200            return null;
     201        }
     202
     203        $categoryIds = [];
     204        if (!is_null($result->basalam_category_level1)) {
     205            $categoryIds[] = intval($result->basalam_category_level1);
     206        }
     207        if (!is_null($result->basalam_category_level2)) {
     208            $categoryIds[] = intval($result->basalam_category_level2);
     209        }
     210        if (!is_null($result->basalam_category_level3)) {
     211            $categoryIds[] = intval($result->basalam_category_level3);
     212        }
     213
     214        return (object) [
     215            'basalam_category_ids' => $categoryIds,
     216            'basalam_category_name' => $result->basalam_category_name
     217        ];
    194218    }
    195219
     
    200224
    201225        $results = $wpdb->get_results(
    202             "SELECT woo_category_id, basalam_category_id FROM $tableName",
     226            "SELECT woo_category_id, basalam_category_level1, basalam_category_level2, basalam_category_level3 FROM $tableName",
    203227            ARRAY_A
    204228        );
     
    206230        $mappings = [];
    207231        foreach ($results as $result) {
    208             $mappings[$result['woo_category_id']] = $result['basalam_category_id'];
     232            $categoryIds = [];
     233            if (!is_null($result['basalam_category_level1'])) {
     234                $categoryIds[] = intval($result['basalam_category_level1']);
     235            }
     236            if (!is_null($result['basalam_category_level2'])) {
     237                $categoryIds[] = intval($result['basalam_category_level2']);
     238            }
     239            if (!is_null($result['basalam_category_level3'])) {
     240                $categoryIds[] = intval($result['basalam_category_level3']);
     241            }
     242            $mappings[$result['woo_category_id']] = $categoryIds;
    209243        }
    210244
  • sync-basalam/trunk/includes/admin/product/class-sync-basalam-create-product-data-v2.php

    r3397803 r3412923  
    2222        $stock_quantity = $this->getStockQuantity($product);
    2323
    24         $mapped_category_id = $this->getMappedCategory($product);
    25 
    26         if ($mapped_category_id) {
    27             $category_ids = [$mapped_category_id];
     24        $mapped_category_ids = $this->getMappedCategory($product);
     25
     26        if ($mapped_category_ids) {
     27            $category_ids = $mapped_category_ids;
    2828        } else {
    2929            $product_title = mb_substr($product->get_name(), 0, 120);
     
    278278            $mapped_category = SyncBasalamCategoryMapping::getBasalamCategoryForWooCategory($woo_category_id);
    279279
    280             if ($mapped_category && isset($mapped_category->basalam_category_id)) {
    281                 return $mapped_category->basalam_category_id;
     280            if ($mapped_category && isset($mapped_category->basalam_category_ids) && !empty($mapped_category->basalam_category_ids)) {
     281                return $mapped_category->basalam_category_ids;
    282282            }
    283283        }
  • sync-basalam/trunk/includes/admin/product/class-sync-basalam-get-product-data.php

    r3397803 r3412923  
    1818
    1919        if (!$category_ids) {
    20             $mapped_category_id = $this->getMappedCategory($product_id);
    21 
    22             if ($mapped_category_id) {
    23                 $category_ids = [$mapped_category_id];
     20            $mapped_category_ids = $this->getMappedCategory($product_id);
     21
     22            if ($mapped_category_ids) {
     23                $category_ids = $mapped_category_ids;
    2424            } else {
    2525                $product_title = mb_substr($product->get_name(), 0, 120);
     
    416416
    417417        if ($increase_value == -1) {
     418            SyncBasalamLogger::debug('Fetching category commission for categories: ' . json_encode($category_ids, JSON_UNESCAPED_UNICODE));
    418419            $category_data = SyncBasalamFetchCommission::fetchCategoryCommission($category_ids);
    419420
     
    758759            $mapped_category = SyncBasalamCategoryMapping::getBasalamCategoryForWooCategory($woo_category_id);
    759760
    760             if ($mapped_category && isset($mapped_category->basalam_category_id)) {
    761                 return $mapped_category->basalam_category_id;
     761            if ($mapped_category && isset($mapped_category->basalam_category_ids) && !empty($mapped_category->basalam_category_ids)) {
     762                return $mapped_category->basalam_category_ids;
    762763            }
    763764        }
  • sync-basalam/trunk/includes/class-sync-basalam-plugin-activator.php

    r3397803 r3412923  
    8787            woo_category_id int(11) NOT NULL,
    8888            woo_category_name varchar(255) NOT NULL,
    89             basalam_category_id int(11) NOT NULL,
     89            basalam_category_level1 int(11) DEFAULT NULL,
     90            basalam_category_level2 int(11) DEFAULT NULL,
     91            basalam_category_level3 int(11) DEFAULT NULL,
    9092            basalam_category_name varchar(255) NOT NULL,
    9193            created_at datetime DEFAULT CURRENT_TIMESTAMP,
     
    9395            PRIMARY KEY  (id),
    9496            UNIQUE KEY woo_category_unique (woo_category_id),
    95             KEY basalam_category_idx (basalam_category_id)
     97            KEY basalam_category_level1_idx (basalam_category_level1)
    9698        ) $charset_collate;";
    9799
  • sync-basalam/trunk/includes/class-sync-basalam-plugin.php

    r3412783 r3412923  
    44class SyncBasalamPlugin
    55{
    6     const VERSION = '1.6.1';
     6    const VERSION = '1.6.2';
    77
    88    public function __construct()
     
    4343        require_once SYNC_BASALAM_PLUGIN_INCLUDES_DIR . 'migration/class-sync-basalam-migration-V-1-4-1.php';
    4444        require_once SYNC_BASALAM_PLUGIN_INCLUDES_DIR . 'migration/class-sync-basalam-migration-V-1-5-4.php';
     45        require_once SYNC_BASALAM_PLUGIN_INCLUDES_DIR . 'migration/class-sync-basalam-migration-V-1-6-2.php';
    4546        require_once SYNC_BASALAM_PLUGIN_INCLUDES_DIR . 'migration/class-sync-basalam-migration-manager.php';
    4647        require_once SYNC_BASALAM_PLUGIN_INCLUDES_DIR . 'migration/class-sync-basalam-migrator-service.php';
  • sync-basalam/trunk/includes/controller/category-actions/class-sync-basalam-create-category-map.php

    r3397803 r3412923  
    1111        $wooCategoryId = intval($_POST['woo_category_id']);
    1212        $wooCategoryName = sanitize_text_field($_POST['woo_category_name']);
    13         $basalamCategoryId = intval($_POST['basalam_category_id']);
     13        $basalamCategoryIds = isset($_POST['basalam_category_ids']) ? $_POST['basalam_category_ids'] : null;
    1414        $basalamCategoryName = sanitize_text_field($_POST['basalam_category_name']);
    1515
    16         if (!$wooCategoryId || !$basalamCategoryId) {
     16        if (!$wooCategoryId || !$basalamCategoryIds || !is_array($basalamCategoryIds)) {
    1717            wp_send_json_error('Invalid category data');
    1818            return;
    1919        }
     20
     21        $basalamCategoryIds = array_map('intval', $basalamCategoryIds);
    2022
    2123        try {
     
    2325                $wooCategoryId,
    2426                $wooCategoryName,
    25                 $basalamCategoryId,
     27                $basalamCategoryIds,
    2628                $basalamCategoryName
    2729            );
  • sync-basalam/trunk/includes/migration/class-sync-basalam-migration-manager.php

    r3397803 r3412923  
    1515            '1.4.1' => new SyncBasalamMigration_1_4_1(),
    1616            '1.5.4' => new SyncBasalamMigration_1_5_4(),
     17            '1.6.2' => new SyncBasalamMigration_1_6_2(),
    1718        ];
    1819    }
  • sync-basalam/trunk/includes/services/class-sync-basalam-fetch-commission.php

    r3397803 r3412923  
    99
    1010        if (isset($categoryIds[0]) && is_numeric($categoryIds[0])) {
    11             $queryParams[] = "product.category.level1=" . intval($categoryIds[2]);
     11            $queryParams[] = "product.category.level1=" . intval($categoryIds[0]);
    1212        }
    1313        if (isset($categoryIds[1]) && is_numeric($categoryIds[1])) {
     
    1515        }
    1616        if (isset($categoryIds[2]) && is_numeric($categoryIds[2])) {
    17             $queryParams[] = "product.category.level3=" . intval($categoryIds[0]);
     17            $queryParams[] = "product.category.level3=" . intval($categoryIds[2]);
    1818        }
    1919
  • sync-basalam/trunk/sync-basalam.php

    r3412783 r3412923  
    55 * Plugin Name: sync basalam | ووسلام
    66 * Description: با استفاده از پلاگین ووسلام  میتوایند تمامی محصولات ووکامرس را با یک کلیک به غرفه باسلامی خود اضافه کنید‌، همچنین تمامی سفارش باسلامی شما به سایت شما اضافه میگردد.
    7  * Version: 1.6.1
     7 * Version: 1.6.2
    88 * Author: Woosalam Dev
    99 * Author URI: https://wp.hamsalam.ir/
  • sync-basalam/trunk/templates/admin/menu/category-mapping-page.php

    r3397803 r3412923  
    407407        }
    408408
    409         function renderBasalamCategories(categories, parentElement = null, level = 0) {
     409        function renderBasalamCategories(categories, parentElement = null, level = 0, parentIds = []) {
    410410            if (!parentElement) {
    411411                $('#basalam-categories-list').empty();
     
    422422                const paddingRight = level;
    423423                const isSelectable = level === 2;
     424                const currentPath = [...parentIds, category.id];
    424425
    425426                const categoryHtml = `
     
    428429                         data-id="${category.id}"
    429430                         data-name="${category.name}"
    430                          data-level="${level}">
     431                         data-level="${level}"
     432                         data-path='${JSON.stringify(currentPath)}'>
    431433                        <div style="display: flex; align-items: center; width: 100%;">
    432434                            ${hasChildren ? `<span class="expand-icon dashicons dashicons-arrow-left-alt2" data-category-id="${category.id}" style="cursor: pointer; margin-left: 5px;"></span>` : '<span style="width: 20px; display: inline-block;"></span>'}
     
    442444
    443445                if (hasChildren) {
    444                     renderBasalamCategories(category.children, categoryElement.find(`#children-${category.id}`), level + 1);
     446                    renderBasalamCategories(category.children, categoryElement.find(`#children-${category.id}`), level + 1, currentPath);
    445447                }
    446448            });
     
    465467                $(this).addClass('selected');
    466468
     469                const categoryPath = JSON.parse($(this).attr('data-path'));
    467470                selectedBasalamCategory = {
    468471                    id: $(this).data('id'),
    469                     name: $(this).data('name')
     472                    name: $(this).data('name'),
     473                    path: categoryPath
    470474                };
    471475
     
    599603                    woo_category_id: selectedWooCategory.id,
    600604                    woo_category_name: selectedWooCategory.name,
    601                     basalam_category_id: selectedBasalamCategory.id,
     605                    basalam_category_ids: selectedBasalamCategory.path,
    602606                    basalam_category_name: selectedBasalamCategory.name,
    603607                    _wpnonce: '<?php echo wp_create_nonce('create_category_mapping_nonce'); ?>'
  • sync-basalam/trunk/templates/admin/menu/main/section/setting.php

    r3412783 r3412923  
    216216        const form = event.target;
    217217        const elements = form.querySelectorAll('input, select, textarea');
     218        const customFieldsContainer = document.getElementById('Basalam-custom-fields');
    218219
    219220        elements.forEach(function(element) {
     
    221222            if (!name || name === 'action' || name === '_wpnonce' || name === '_wp_http_referer') {
    222223                return;
     224            }
     225
     226            // Don't disable elements inside #Basalam-custom-fields
     227            if (customFieldsContainer && customFieldsContainer.contains(element)) {
     228                return;
     229            }
     230
     231            // Don't disable hidden inputs that are paired with checkboxes
     232            if (element.type === 'hidden') {
     233                const checkboxWithSameName = form.querySelector('input[type="checkbox"][name="' + name + '"]');
     234                if (checkboxWithSameName) {
     235                    return;
     236                }
    223237            }
    224238
Note: See TracChangeset for help on using the changeset viewer.