diff --git a/admin/admin.php b/admin/admin.php index 63fd14e..302cf5b 100644 --- a/admin/admin.php +++ b/admin/admin.php @@ -146,6 +146,15 @@ add_action('admin_menu', function() use ($adminController) { [$adminController, 'addRulePage'] ); + add_submenu_page( + 'sodino-dashboard', + __('قالبهای آماده', 'sodino'), + __('قالبهای آماده', 'sodino'), + 'manage_options', + 'sodino-templates', + [$adminController, 'templatesPage'] + ); + add_submenu_page( 'sodino-dashboard', __('آپسل (پیشنهاد فروش)', 'sodino'), @@ -247,8 +256,8 @@ add_action('admin_enqueue_scripts', function($hook) { * Handle admin actions */ add_action('admin_init', function() use ($ruleController, $settingsController, $adminController) { - $page = $_GET['page'] ?? ''; - $action = $_GET['action'] ?? ''; + $page = isset($_GET['page']) ? sanitize_key(wp_unslash($_GET['page'])) : ''; + $action = isset($_GET['action']) ? sanitize_key(wp_unslash($_GET['action'])) : ''; // Rule actions if ($page === 'sodino-rules' && $action === 'delete') { diff --git a/admin/class-banner-list-table.php b/admin/class-banner-list-table.php index 64d7e9c..b099483 100644 --- a/admin/class-banner-list-table.php +++ b/admin/class-banner-list-table.php @@ -131,6 +131,10 @@ class Sodino_Banner_List_Table extends WP_List_Table { public function process_bulk_action() { if ('delete' === $this->current_action()) { + if (!current_user_can('manage_options')) { + return; + } + $banner_ids = isset($_POST['banner_ids']) ? array_map('intval', $_POST['banner_ids']) : []; if (!empty($banner_ids) && check_admin_referer('bulk-' . $this->_args['plural'])) { foreach ($banner_ids as $id) { diff --git a/admin/class-rules-list-table.php b/admin/class-rules-list-table.php index ff40c4e..b69078e 100644 --- a/admin/class-rules-list-table.php +++ b/admin/class-rules-list-table.php @@ -85,6 +85,9 @@ class Sodino_Rules_List_Table extends WP_List_Table { 'cart_contains_category' => __('سبد شامل دستهبندی', 'sodino'), 'customer_order_count_min' => __('حداقل سفارش مشتری', 'sodino'), 'customer_order_count_max' => __('حداکثر سفارش مشتری', 'sodino'), + 'customer_days_since_last_order_min' => __('حداقل روز از آخرین سفارش', 'sodino'), + 'product_total_sales_max' => __('حداکثر فروش کل محصول', 'sodino'), + 'product_total_sales_min' => __('حداقل فروش کل محصول', 'sodino'), 'day_of_week' => __('روز هفته', 'sodino'), ]; } @@ -171,6 +174,10 @@ class Sodino_Rules_List_Table extends WP_List_Table { public function process_bulk_action() { if ('delete' === $this->current_action()) { + if (!current_user_can('manage_options')) { + return; + } + $rule_ids = isset($_POST['rule_ids']) ? array_map('intval', $_POST['rule_ids']) : []; if (!empty($rule_ids) && check_admin_referer('bulk-' . $this->_args['plural'])) { foreach ($rule_ids as $id) { diff --git a/admin/class-upsell-list-table.php b/admin/class-upsell-list-table.php index 0a76a1c..6fd2cd5 100644 --- a/admin/class-upsell-list-table.php +++ b/admin/class-upsell-list-table.php @@ -144,6 +144,10 @@ class Sodino_Upsell_List_Table extends WP_List_Table { public function process_bulk_action() { if ('delete' === $this->current_action()) { + if (!current_user_can('manage_options')) { + return; + } + $upsell_ids = isset($_POST['upsell_ids']) ? array_map('intval', $_POST['upsell_ids']) : []; if (!empty($upsell_ids) && check_admin_referer('bulk-' . $this->_args['plural'])) { foreach ($upsell_ids as $id) { diff --git a/admin/components/sidebar.php b/admin/components/sidebar.php index 19d9584..c93936b 100644 --- a/admin/components/sidebar.php +++ b/admin/components/sidebar.php @@ -9,6 +9,7 @@ $menu_items = [ 'sodino-dashboard' => __('داشبورد', 'sodino'), 'sodino-rules' => __('قوانین', 'sodino'), 'sodino-add-rule' => __('افزودن قانون', 'sodino'), + 'sodino-templates' => __('قالبهای آماده', 'sodino'), 'sodino-upsells' => __('آپسل (پیشنهاد فروش)', 'sodino'), 'sodino-add-upsell' => __('افزودن آپسل', 'sodino'), 'sodino-banners' => __('بنرهای هوشمند', 'sodino'), diff --git a/admin/views/partials/rule-condition-row.php b/admin/views/partials/rule-condition-row.php index 92193ee..ea789fc 100644 --- a/admin/views/partials/rule-condition-row.php +++ b/admin/views/partials/rule-condition-row.php @@ -26,6 +26,9 @@ $condition_value = $condition['value'] ?? ''; + + + diff --git a/admin/views/rule-form.php b/admin/views/rule-form.php index e1671ed..7615fe6 100644 --- a/admin/views/rule-form.php +++ b/admin/views/rule-form.php @@ -49,6 +49,13 @@ $weekdays = [ + +