Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
SET time_zone = '+03:00'; CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, image VARCHAR(255), password VARCHAR(255), bio TEXT, location VARCHAR(255), role ENUM ( 'user', 'moderator', 'admin', 'designer', 'coder', 'tester', 'vip' ) DEFAULT 'user', level INT DEFAULT 1 NOT NULL CHECK (level BETWEEN 0 AND 20), balance DECIMAL(10, 2) DEFAULT 0 NOT NULL CHECK (balance >= 0), is_verified BOOLEAN DEFAULT FALSE, is_agreed_terms BOOLEAN DEFAULT FALSE, status ENUM('active', 'banned') DEFAULT 'active' NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS social_accounts ( social_account_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, provider VARCHAR(50) NOT NULL, provider_user_id VARCHAR(100) NOT NULL, access_token VARCHAR(255), refresh_token VARCHAR(255), linked_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE (provider, provider_user_id), FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS files ( file_id INT AUTO_INCREMENT PRIMARY KEY, file_path VARCHAR(255) NOT NULL, file_type VARCHAR(50), uploaded_by INT, uploaded_at DATETIME DEFAULT CURRENT_TIMESTAMP, file_size INT UNSIGNED DEFAULT NULL, original_filename VARCHAR(255) NOT NULL, FOREIGN KEY (uploaded_by) REFERENCES users (id) ON DELETE SET NULL ); CREATE TABLE IF NOT EXISTS products ( product_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, description TEXT, price DECIMAL(10, 2) NOT NULL, category VARCHAR(50) NOT NULL, author_id INT, image_url VARCHAR(255), popularity INT DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, download_file_path VARCHAR(255) NULL, download_file_paths TEXT NULL, has_downloadable_content TINYINT(1) DEFAULT 0, is_active BOOLEAN DEFAULT TRUE, is_featured BOOLEAN DEFAULT FALSE, is_free BOOLEAN DEFAULT FALSE, FOREIGN KEY (author_id) REFERENCES users (id) ON DELETE SET NULL ); CREATE TABLE IF NOT EXISTS product_ratings ( rating_id INT AUTO_INCREMENT PRIMARY KEY, product_id INT NOT NULL, user_id INT NOT NULL, rating DECIMAL(3, 2) NOT NULL CHECK (rating BETWEEN 0 AND 6), review TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE, UNIQUE KEY (product_id, user_id) ); CREATE TABLE IF NOT EXISTS product_images ( image_id INT AUTO_INCREMENT PRIMARY KEY, product_id INT NOT NULL, image_url VARCHAR(255) NOT NULL, is_primary BOOLEAN DEFAULT FALSE, display_order INT DEFAULT 0, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS user_settings ( setting_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, profile_visibility ENUM ('all', 'authorized', 'followers', 'none') DEFAULT 'all', followers_visibility ENUM ('all', 'authorized', 'followers', 'none') DEFAULT 'all', activity_visibility ENUM ('all', 'authorized', 'followers', 'none') DEFAULT 'all', anonymous_mode BOOLEAN DEFAULT FALSE, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE, UNIQUE (user_id) ); INSERT IGNORE INTO user_settings ( user_id, profile_visibility, followers_visibility, activity_visibility, anonymous_mode ) SELECT id, 'all', 'all', 'all', FALSE FROM users; CREATE TABLE IF NOT EXISTS admin_logs ( log_id INT AUTO_INCREMENT PRIMARY KEY, admin_id INT NOT NULL, action TEXT NOT NULL, log_time DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (admin_id) REFERENCES users (id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS cheat_injections ( injection_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, injection_time DATETIME DEFAULT CURRENT_TIMESTAMP, ip_address VARCHAR(45), user_agent VARCHAR(255), game_version VARCHAR(50), status VARCHAR(20), FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE SET NULL ); CREATE TABLE IF NOT EXISTS loader_downloads ( download_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, download_time DATETIME DEFAULT CURRENT_TIMESTAMP, ip_address VARCHAR(45), user_agent VARCHAR(255), os_version VARCHAR(50), download_source VARCHAR(100), FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE SET NULL ); CREATE TABLE IF NOT EXISTS marketplace_purchases ( purchase_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, product_id INT NOT NULL, original_price DECIMAL(10, 2) NOT NULL, discount_price DECIMAL(10, 2) NOT NULL, final_amount DECIMAL(10, 2) NOT NULL, discount_applied BOOLEAN DEFAULT FALSE, discount_code VARCHAR(50), discount_amount DECIMAL(10, 2) DEFAULT 0, transaction_id INT, purchase_time DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE, INDEX (user_id), INDEX (product_id), INDEX (purchase_time) ); CREATE TABLE IF NOT EXISTS payment_methods ( payment_method_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, description TEXT, is_active BOOLEAN DEFAULT TRUE, processor VARCHAR(50), config JSON, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS transactions ( transaction_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, amount DECIMAL(10, 2) NOT NULL, type VARCHAR(20) NOT NULL, status VARCHAR(20) NOT NULL, payment_method_id INT, payment_reference VARCHAR(255), details JSON, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE, FOREIGN KEY (payment_method_id) REFERENCES payment_methods (payment_method_id) ON DELETE SET NULL ); CREATE TABLE IF NOT EXISTS auth_logs ( log_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, provider VARCHAR(50) NOT NULL, provider_user_id VARCHAR(100) NOT NULL, ip_address VARCHAR(45), user_agent VARCHAR(255), login_time DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE SET NULL ); CREATE TABLE IF NOT EXISTS user_activities ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, type VARCHAR(50) NOT NULL, details TEXT, activity_date DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS user_followers ( follow_id INT AUTO_INCREMENT PRIMARY KEY, follower_id INT NOT NULL, followed_id INT NOT NULL, followed_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (follower_id) REFERENCES users (id) ON DELETE CASCADE, FOREIGN KEY (followed_id) REFERENCES users (id) ON DELETE CASCADE, UNIQUE KEY (follower_id, followed_id) ); CREATE TABLE IF NOT EXISTS user_reviews ( review_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, reviewer_id INT NOT NULL, product_id INT NOT NULL, content TEXT NOT NULL, rating INT NOT NULL CHECK (rating BETWEEN 1 AND 5), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE, FOREIGN KEY (reviewer_id) REFERENCES users (id) ON DELETE CASCADE, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE, UNIQUE KEY (reviewer_id, product_id, user_id) ); CREATE TABLE IF NOT EXISTS roles ( role_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL UNIQUE, description TEXT, badge_color VARCHAR(20), badge_icon VARCHAR(50), display_order INT DEFAULT 0, is_system BOOLEAN DEFAULT FALSE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX (name), INDEX (display_order) ); CREATE TABLE IF NOT EXISTS user_roles ( user_id INT NOT NULL, role_id INT NOT NULL, assigned_at DATETIME DEFAULT CURRENT_TIMESTAMP, assigned_by INT, PRIMARY KEY (user_id, role_id), INDEX (role_id), FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE, FOREIGN KEY (role_id) REFERENCES roles (role_id) ON DELETE CASCADE, FOREIGN KEY (assigned_by) REFERENCES users (id) ON DELETE SET NULL ); INSERT IGNORE INTO roles ( name, description, badge_color, badge_icon, display_order, is_system ) VALUES ( 'admin', 'Administrator with full access', 'white', 'ShieldCheckIcon', 1, TRUE ), ( 'moderator', 'Content moderator', 'blue', 'ClipboardDocumentCheckIcon', 2, TRUE ), ( 'vip', 'VIP user with special privileges', 'gold', 'SparklesIcon', 3, FALSE ), ( 'designer', 'Interface designer', 'purple', 'PaintBrushIcon', 4, FALSE ), ( 'coder', 'Developer and programmer', 'green', 'CodeBracketIcon', 5, FALSE ), ( 'tester', 'Quality assurance specialist', 'orange', 'BugAntIcon', 6, FALSE ), ( 'user', 'Regular user', 'gray', 'CheckCircleIcon', 99, TRUE ); INSERT IGNORE INTO payment_methods (name, description, is_active, processor, config) VALUES ( 'Visa', 'Visa payment', TRUE, 'visa_processor', NULL ), ( 'Mastercard', 'Mastercard payment', TRUE, 'mastercard_processor', NULL ), ('Mir', 'Mir payment', TRUE, 'mir_processor', NULL), ( 'Tether USDT', 'Tether USDT payment', TRUE, 'crypto_processor', '{"coin":"usdt"}' ); CREATE TABLE IF NOT EXISTS download_logs ( log_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, product_id INT NOT NULL, download_time DATETIME DEFAULT CURRENT_TIMESTAMP, ip_address VARCHAR(45), user_agent VARCHAR(255), original_file VARCHAR(255) NOT NULL, password VARCHAR(50) NULL, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS product_discounts ( discount_id INT AUTO_INCREMENT PRIMARY KEY, product_id INT, discount_type ENUM('percentage', 'fixed_amount') NOT NULL, discount_value DECIMAL(10, 2) NOT NULL, start_date DATETIME NOT NULL, end_date DATETIME NOT NULL, is_active BOOLEAN DEFAULT TRUE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE, INDEX (product_id), INDEX (is_active), INDEX (start_date, end_date) ); CREATE TABLE IF NOT EXISTS category_discounts ( discount_id INT AUTO_INCREMENT PRIMARY KEY, category VARCHAR(50) NOT NULL, discount_type ENUM('percentage', 'fixed_amount') NOT NULL, discount_value DECIMAL(10, 2) NOT NULL, start_date DATETIME NOT NULL, end_date DATETIME NOT NULL, is_active BOOLEAN DEFAULT TRUE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX (category), INDEX (is_active), INDEX (start_date, end_date) ); CREATE TABLE IF NOT EXISTS gift_codes ( code_id INT AUTO_INCREMENT PRIMARY KEY, code VARCHAR(50) UNIQUE NOT NULL, code_type ENUM('discount', 'free_product', 'balance_add') NOT NULL, discount_value DECIMAL(10, 2), product_id INT, balance_value DECIMAL(10, 2), created_by INT, is_used BOOLEAN DEFAULT FALSE, used_by INT, used_at DATETIME, expires_at DATETIME, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (created_by) REFERENCES users (id) ON DELETE SET NULL, FOREIGN KEY (used_by) REFERENCES users (id) ON DELETE SET NULL, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE SET NULL, INDEX (code), INDEX (is_used), INDEX (expires_at) ); CREATE TABLE IF NOT EXISTS product_price_history ( history_id INT AUTO_INCREMENT PRIMARY KEY, product_id INT NOT NULL, old_price DECIMAL(10, 2) NOT NULL, new_price DECIMAL(10, 2) NOT NULL, changed_by INT, changed_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE, FOREIGN KEY (changed_by) REFERENCES users (id) ON DELETE SET NULL, INDEX (product_id), INDEX (changed_at) ); -- Drop existing functions, triggers, and procedures to avoid conflicts DROP FUNCTION IF EXISTS get_product_discounted_price; DROP FUNCTION IF EXISTS get_product_discounted_price_wrapper; DROP TRIGGER IF NOT EXISTS trg_product_price_update; DROP PROCEDURE IF EXISTS generate_gift_code; -- Set the delimiter to allow multiple statements in functions/procedures DELIMITER $$ -- Create the main discount calculation function CREATE FUNCTION get_product_discounted_price( p_product_id INT, p_user_id INT ) RETURNS DECIMAL(10, 2) DETERMINISTIC BEGIN DECLARE original_price DECIMAL(10, 2); DECLARE discounted_price DECIMAL(10, 2); DECLARE product_category VARCHAR(50); DECLARE product_discount_pct DECIMAL(10, 2); DECLARE product_discount_amt DECIMAL(10, 2); DECLARE category_discount_pct DECIMAL(10, 2); DECLARE category_discount_amt DECIMAL(10, 2); DECLARE user_discount_pct DECIMAL(10, 2); DECLARE user_discount_amt DECIMAL(10, 2); SELECT price, category INTO original_price, product_category FROM products WHERE product_id = p_product_id; SET discounted_price = original_price; IF p_user_id IS NOT NULL THEN SELECT discount_value INTO user_discount_pct FROM user_discounts WHERE user_id = p_user_id AND discount_type = 'percentage' AND is_active = TRUE AND CURRENT_TIMESTAMP < expires_at AND (product_id = p_product_id OR product_id IS NULL) ORDER BY discount_value DESC LIMIT 1; IF user_discount_pct IS NOT NULL THEN SET discounted_price = original_price * (1 - (user_discount_pct / 100)); RETURN ROUND(discounted_price, 2); END IF; SELECT discount_value INTO user_discount_amt FROM user_discounts WHERE user_id = p_user_id AND discount_type = 'fixed_amount' AND is_active = TRUE AND CURRENT_TIMESTAMP < expires_at AND (product_id = p_product_id OR product_id IS NULL) ORDER BY discount_value DESC LIMIT 1; IF user_discount_amt IS NOT NULL THEN SET discounted_price = GREATEST(0, original_price - user_discount_amt); RETURN ROUND(discounted_price, 2); END IF; END IF; SELECT discount_value INTO product_discount_pct FROM product_discounts WHERE product_id = p_product_id AND discount_type = 'percentage' AND is_active = TRUE AND CURRENT_TIMESTAMP BETWEEN start_date AND end_date ORDER BY discount_value DESC LIMIT 1; IF product_discount_pct IS NOT NULL THEN SET discounted_price = original_price * (1 - (product_discount_pct / 100)); END IF; SELECT discount_value INTO product_discount_amt FROM product_discounts WHERE product_id = p_product_id AND discount_type = 'fixed_amount' AND is_active = TRUE AND CURRENT_TIMESTAMP BETWEEN start_date AND end_date ORDER BY discount_value DESC LIMIT 1; IF product_discount_amt IS NOT NULL THEN SET discounted_price = GREATEST(0, original_price - product_discount_amt); END IF; IF product_discount_pct IS NULL AND product_discount_amt IS NULL THEN SELECT discount_value INTO category_discount_pct FROM category_discounts WHERE category = product_category AND discount_type = 'percentage' AND is_active = TRUE AND CURRENT_TIMESTAMP BETWEEN start_date AND end_date ORDER BY discount_value DESC LIMIT 1; IF category_discount_pct IS NOT NULL THEN SET discounted_price = original_price * (1 - (category_discount_pct / 100)); END IF; SELECT discount_value INTO category_discount_amt FROM category_discounts WHERE category = product_category AND discount_type = 'fixed_amount' AND is_active = TRUE AND CURRENT_TIMESTAMP BETWEEN start_date AND end_date ORDER BY discount_value DESC LIMIT 1; IF category_discount_amt IS NOT NULL THEN SET discounted_price = GREATEST(0, original_price - category_discount_amt); END IF; END IF; RETURN ROUND(discounted_price, 2); END$$ -- Create the wrapper function CREATE FUNCTION get_product_discounted_price_wrapper( p_product_id INT, p_user_id INT ) RETURNS DECIMAL(10, 2) DETERMINISTIC BEGIN RETURN get_product_discounted_price(p_product_id, p_user_id); END$$ -- Create the price update trigger CREATE TRIGGER trg_product_price_update AFTER UPDATE ON products FOR EACH ROW BEGIN IF OLD.price != NEW.price THEN INSERT INTO product_price_history (product_id, old_price, new_price, changed_by) VALUES (NEW.product_id, OLD.price, NEW.price, @current_user_id); END IF; END$$ -- Create the gift code generation procedure CREATE PROCEDURE generate_gift_code( IN p_code_type ENUM('discount', 'free_product', 'balance_add'), IN p_discount_value DECIMAL(10, 2), IN p_product_id INT, IN p_balance_value DECIMAL(10, 2), IN p_created_by INT, IN p_expires_days INT, OUT p_generated_code VARCHAR(50) ) BEGIN DECLARE code_exists INT; SET p_generated_code = CONCAT( SUBSTRING(MD5(RAND()), 1, 4), '-', SUBSTRING(MD5(RAND()), 1, 4), '-', SUBSTRING(MD5(RAND()), 1, 4), '-', SUBSTRING(MD5(RAND()), 1, 4) ); SELECT COUNT(*) INTO code_exists FROM gift_codes WHERE code = p_generated_code; IF code_exists > 0 THEN CALL generate_gift_code(p_code_type, p_discount_value, p_product_id, p_balance_value, p_created_by, p_expires_days, p_generated_code); ELSE INSERT INTO gift_codes (code, code_type, discount_value, product_id, balance_value, created_by, expires_at) VALUES ( p_generated_code, p_code_type, p_discount_value, p_product_id, p_balance_value, p_created_by, DATE_ADD(CURRENT_TIMESTAMP, INTERVAL p_expires_days DAY) ); END IF; END$$ -- Reset delimiter DELIMITER ; CREATE TABLE IF NOT EXISTS temp_uploads ( id INT AUTO_INCREMENT PRIMARY KEY, file_path VARCHAR(255) NOT NULL, file_url VARCHAR(255) NOT NULL, user_id INT, original_filename VARCHAR(255) NOT NULL, file_type VARCHAR(50) NOT NULL, file_size INT UNSIGNED DEFAULT NULL, product_id INT NULL, temp_product_id VARCHAR(255) NULL, upload_time DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE SET NULL, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE SET NULL, INDEX idx_temp_uploads_temp_product_id (temp_product_id) ); CREATE TABLE IF NOT EXISTS user_discounts ( discount_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, discount_type ENUM('percentage', 'fixed_amount') NOT NULL, discount_value DECIMAL(10, 2) NOT NULL, product_id INT NULL, category VARCHAR(50) NULL, code VARCHAR(50) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, expires_at DATETIME NOT NULL, is_active BOOLEAN DEFAULT TRUE, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE, FOREIGN KEY (product_id) REFERENCES products (product_id) ON DELETE CASCADE, INDEX (user_id), INDEX (code), INDEX (expires_at) ); CREATE TABLE IF NOT EXISTS site_settings ( setting_id INT AUTO_INCREMENT PRIMARY KEY, setting_key VARCHAR(100) NOT NULL UNIQUE, setting_value TEXT, setting_type ENUM('boolean', 'string', 'number', 'json', 'datetime') NOT NULL DEFAULT 'string', section VARCHAR(50) NOT NULL, label VARCHAR(255) NOT NULL, description TEXT, is_public BOOLEAN DEFAULT FALSE, order_index INT DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, updated_by INT, FOREIGN KEY (updated_by) REFERENCES users (id) ON DELETE SET NULL, INDEX (section), INDEX (setting_key), INDEX (is_public) ); INSERT IGNORE INTO site_settings (setting_key, setting_value, setting_type, section, label, description, is_public, order_index) VALUES ('site_name', 'YeahNOT', 'string', 'general', 'НазваниС сайта', 'НазваниС сайта, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°', TRUE, 10), ('site_description', 'YeahNOT - ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚', 'string', 'general', 'ОписаниС сайта', 'ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС сайта для поисковых систСм', TRUE, 20), ('contact_email', 'admin@example.com', 'string', 'general', 'ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Ρ‹ΠΉ email', 'Email для связи с администрациСй', TRUE, 30), ('default_language', 'ru', 'string', 'general', 'Π―Π·Ρ‹ΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ', 'Π―Π·Ρ‹ΠΊ сайта ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ', TRUE, 40), ('timezone', 'Europe/Moscow', 'string', 'general', 'Часовой пояс', 'Часовой пояс сайта', FALSE, 50), ('maintenance_mode', 'false', 'boolean', 'maintenance', 'Π Π΅ΠΆΠΈΠΌ тСхничСского обслуТивания', 'Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, сайт Π±ΡƒΠ΄Π΅Ρ‚ нСдоступСн для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ', FALSE, 10), ('maintenance_message', 'Π‘Π°ΠΉΡ‚ находится Π½Π° тСхничСском обслуТивании. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π·Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ·ΠΆΠ΅.', 'string', 'maintenance', 'Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ тСхобслуТивании', 'Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π²ΠΎ врСмя тСхничСского обслуТивания', FALSE, 20), ('maintenance_allowed_ips', '127.0.0.1', 'string', 'maintenance', 'Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ IP-адрСса', 'Бписок IP-адрСсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ доступ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ тСхобслуТивания (Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ)', FALSE, 30), ('maintenance_end_time', NULL, 'datetime', 'maintenance', 'ВрСмя окончания тСхобслуТивания', 'Если ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ€Π΅ΠΆΠΈΠΌ тСхобслуТивания автоматичСски ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ послС этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ', FALSE, 40), ('enable_registration', 'true', 'boolean', 'registration', 'Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ', 'Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° сайтС', FALSE, 10), ('require_email_verification', 'true', 'boolean', 'registration', 'Π’Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ email', 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ свой email послС рСгистрации', FALSE, 20), ('allowed_registration_providers', 'discord,telegram,vk,google', 'string', 'registration', 'Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹', 'Бписок Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² рСгистрации (Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ)', FALSE, 30), ('default_user_role', 'user', 'string', 'registration', 'Роль ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ', 'Роль, назначаСмая Π½ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ', FALSE, 40), ('min_password_length', '8', 'number', 'security', 'Минимальная Π΄Π»ΠΈΠ½Π° пароля', 'МинимальноС количСство символов Π² ΠΏΠ°Ρ€ΠΎΠ»Π΅', FALSE, 10), ('password_requires_special', 'true', 'boolean', 'security', 'Π’Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы', 'Π’Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов Π² ΠΏΠ°Ρ€ΠΎΠ»Π΅', FALSE, 20), ('max_login_attempts', '5', 'number', 'security', 'МаксимальноС количСство ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π²Ρ…ΠΎΠ΄Π°', 'МаксимальноС количСство Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π²Ρ…ΠΎΠ΄Π° Π΄ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ', FALSE, 30), ('login_block_time', '30', 'number', 'security', 'ВрСмя Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (ΠΌΠΈΠ½ΡƒΡ‚Ρ‹)', 'ВрСмя Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ послС ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠΌΠΈΡ‚Π° Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π²Ρ…ΠΎΠ΄Π°', FALSE, 40), ('session_lifetime', '1440', 'number', 'security', 'ВрСмя ΠΆΠΈΠ·Π½ΠΈ сСссии (ΠΌΠΈΠ½ΡƒΡ‚Ρ‹)', 'ВрСмя Π² ΠΌΠΈΠ½ΡƒΡ‚Π°Ρ… Π΄ΠΎ автоматичСского Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· систСмы', FALSE, 50), ('marketplace_enabled', 'true', 'boolean', 'marketplace', 'Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ маркСтплСйс', 'Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» маркСтплСйса', FALSE, 10), ('allow_free_products', 'true', 'boolean', 'marketplace', 'Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ бСсплатныС Ρ‚ΠΎΠ²Π°Ρ€Ρ‹', 'Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ бСсплатныС Ρ‚ΠΎΠ²Π°Ρ€Ρ‹', FALSE, 20), ('marketplace_commission', '10', 'number', 'marketplace', 'Комиссия маркСтплСйса (%)', 'ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚ комиссии ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄Π°ΠΆ Π½Π° маркСтплСйсС', FALSE, 30), ('minimum_product_price', '50', 'number', 'marketplace', 'Минимальная Ρ†Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° (β‚½)', 'Минимальная допустимая Ρ†Π΅Π½Π° для ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²', FALSE, 40), ('marketplace_categories', 'scripts,materials,menu,models_weapon,models_character', 'string', 'marketplace', 'ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²', 'Бписок доступных ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ)', FALSE, 50), ('social_links', '{"discord":"https://discord.com","telegram":"https://t.me","vk":"https://vk.com"}', 'json', 'social', 'Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти', 'Бсылки Π½Π° ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти (JSON)', TRUE, 10), ('show_social_icons', 'true', 'boolean', 'social', 'ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΊΠΎΠ½ΠΊΠΈ соцсСтСй', 'ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй Π² Ρ„ΡƒΡ‚Π΅Ρ€Π΅', TRUE, 20), ('logo_url', '/images/logo.png', 'string', 'appearance', 'URL Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ°', 'URL Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° сайта', TRUE, 10), ('favicon_url', '/favicon.ico', 'string', 'appearance', 'URL favicon', 'URL favicon сайта', TRUE, 20), ('theme_color', '#ffffff', 'string', 'appearance', 'Основной Ρ†Π²Π΅Ρ‚ Ρ‚Π΅ΠΌΡ‹', 'Основной Ρ†Π²Π΅Ρ‚ Ρ‚Π΅ΠΌΡ‹ сайта', TRUE, 30), ('dark_mode_default', 'true', 'boolean', 'appearance', 'ВСмная Ρ‚Π΅ΠΌΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ', 'Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ', TRUE, 40), ('enable_analytics', 'false', 'boolean', 'analytics', 'Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ', 'Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сбор Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° сайтС', FALSE, 10), ('analytics_provider', 'google', 'string', 'analytics', 'ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ', 'БСрвис для сбора Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ', FALSE, 20), ('analytics_id', '', 'string', 'analytics', 'ID Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ', 'ID ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡ сСрвиса Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ', FALSE, 30);

Stuck with a problem? Got Error? Ask AI support!

Copy Clear