gitea init

This commit is contained in:
skryper
2025-10-08 21:28:30 +04:00
commit d4651a423d
2518 changed files with 522832 additions and 0 deletions
@@ -0,0 +1,80 @@
<?php
class ProductModel
{
private static $db;
public static function setDb($pdo)
{
self::$db = $pdo;
}
/**
* პროდუქტის ტიპების მიღება (dynamic)
*/
public static function getProductTypes()
{
$stmt = self::$db->query("SELECT name, description, icon FROM product_types WHERE is_active = 1 ORDER BY sort_order, name");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
public static function deleteProductById($id)
{
if (!$id || !is_numeric($id)) {
return false;
}
$stmt = self::$db->prepare("DELETE FROM products WHERE id = ?");
return $stmt->execute([$id]);
}
public static function getProductById($id)
{
if (!$id || !is_numeric($id)) {
return null;
}
$stmt = self::$db->prepare("SELECT * FROM products WHERE id = ?");
$stmt->execute([$id]);
return $stmt->fetch();
}
public static function getAllProducts()
{
$stmt = self::$db->query("SELECT * FROM products ORDER BY id DESC");
return $stmt->fetchAll();
}
public static function createProduct($data)
{
$stmt = self::$db->prepare("INSERT INTO products (name, `group`, type, url, module, hidden) VALUES (?, ?, ?, ?, ?, ?)");
return $stmt->execute([
$data['name'],
$data['group'],
$data['type'],
$data['url'],
$data['module'],
$data['hidden']
]);
}
public static function updateProduct($id, $data)
{
$stmt = self::$db->prepare("
UPDATE products
SET name = ?, `group` = ?, type = ?, url = ?, module = ?, hidden = ?, updated_at = NOW()
WHERE id = ?
");
return $stmt->execute([
$data['name'],
$data['group'],
$data['type'],
$data['url'],
$data['module'],
$data['hidden'],
$id
]);
}
}
@@ -0,0 +1,148 @@
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
class ProductTypesModel
{
protected static $db;
public static function setDb($pdo)
{
self::$db = $pdo;
}
/**
* ყველა აქტიური product type-ის მიღება
*/
public static function getActiveTypes()
{
$stmt = self::$db->query("SELECT * FROM product_types WHERE is_active = 1 ORDER BY sort_order, name");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
/**
* ყველა product type-ის მიღება (ადმინისთვის)
*/
public static function getAllTypes()
{
$stmt = self::$db->query("SELECT * FROM product_types ORDER BY sort_order, name");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
/**
* კონკრეტული product type-ის მიღება
*/
public static function getTypeById($id)
{
$stmt = self::$db->prepare("SELECT * FROM product_types WHERE id = ?");
$stmt->execute([$id]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
/**
* ახალი product type-ის დამატება
*/
public static function addType($data)
{
$stmt = self::$db->prepare("
INSERT INTO product_types (name, description, icon, sort_order, is_active)
VALUES (?, ?, ?, ?, ?)
");
return $stmt->execute([
$data['name'],
$data['description'] ?? '',
$data['icon'] ?? 'box',
$data['sort_order'] ?? 0,
$data['is_active'] ?? 1
]);
}
/**
* Product type-ის განახლება
*/
public static function updateType($id, $data)
{
$stmt = self::$db->prepare("
UPDATE product_types
SET name = ?, description = ?, icon = ?, sort_order = ?, is_active = ?, updated_at = NOW()
WHERE id = ?
");
return $stmt->execute([
$data['name'],
$data['description'] ?? '',
$data['icon'] ?? 'box',
$data['sort_order'] ?? 0,
$data['is_active'] ?? 1,
$id
]);
}
/**
* Product type-ის წაშლა
*/
public static function deleteType($id)
{
// ვამოწმებთ არ არის თუ არა გამოყენებული პროდუქტებში
$stmt = self::$db->prepare("SELECT COUNT(*) FROM products WHERE type = (SELECT name FROM product_types WHERE id = ?)");
$stmt->execute([$id]);
$count = $stmt->fetchColumn();
if ($count > 0) {
throw new Exception("ამ ტიპის პროდუქტები უკვე არსებობს. წაშლა შეუძლებელია.");
}
$stmt = self::$db->prepare("DELETE FROM product_types WHERE id = ?");
return $stmt->execute([$id]);
}
/**
* Sort order-ის განახლება
*/
public static function updateSortOrder($orders)
{
try {
self::$db->beginTransaction();
$stmt = self::$db->prepare("UPDATE product_types SET sort_order = ? WHERE id = ?");
foreach ($orders as $id => $order) {
$stmt->execute([$order, $id]);
}
self::$db->commit();
return true;
} catch (Exception $e) {
self::$db->rollback();
throw $e;
}
}
/**
* ხელმისაწვდომი აიკონების სია
*/
public static function getAvailableIcons()
{
return [
'server' => 'სერვერი',
'server-2' => 'VPS/Dedicated',
'users' => 'მომხმარებლები',
'world' => 'დომენი',
'shield-check' => 'უსაფრთხოება',
'mail' => 'ელ.ფოსტა',
'cloud' => 'ღრუბელი',
'database' => 'ბაზა',
'box' => 'პაკეტი',
'gift' => 'საჩუქარი',
'star' => 'პრემიუმი',
'lightning' => 'სწრაფი',
'globe' => 'გლობალური',
'lock' => 'დაცული',
'dots' => 'სხვა'
];
}
}
?>