From 0ba96f370c8607bbc29fb2b1d5c22cb638a8d087 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Tue, 14 Oct 2025 11:25:47 +0200 Subject: [PATCH] Backup --- .docker/.env.example | 8 +- dev_db/mariadb.sql | 6 +- src/old/CLAUDE.md | 172 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 src/old/CLAUDE.md diff --git a/.docker/.env.example b/.docker/.env.example index 3beea662f..9ac37da3d 100644 --- a/.docker/.env.example +++ b/.docker/.env.example @@ -27,7 +27,7 @@ APP_CODE_PATH_HOST=../../src APP_HOST=app.local NETWORKS_DRIVER=bridge -MYSQL_BACKUP_PATH_HOST=../../dev_db/mysql.sql +MYSQL_BACKUP_PATH_HOST=../../dev_db/mariadb.sql NGINX_HOST_HTTP_PORT=80 NGINX_HOST_HTTPS_PORT=444 @@ -36,8 +36,8 @@ PHP_IDE_CONFIG=serverName=psc VOLUMES_DRIVER=local ALPINE_VERSION=3.12 -COMPOSER_VERSION=2.2.5 -MYSQL_VERSION=11 +COMPOSER_VERSION=lts +MYSQL_VERSION=latest MONGODB_VERSION=7 NGINX_VERSION=1.21.5-alpine -PHP_VERSION=8.2 +PHP_VERSION=8.4 diff --git a/dev_db/mariadb.sql b/dev_db/mariadb.sql index bbe12d6c9..1ba9415a9 100644 --- a/dev_db/mariadb.sql +++ b/dev_db/mariadb.sql @@ -743,10 +743,10 @@ CREATE TABLE `cms` ( `language` varchar(5) DEFAULT NULL, `text1` longtext DEFAULT NULL, `notinmenu` tinyint(1) NOT NULL, - `modul` varchar(255) NOT NULL, + `modul` varchar(255) DEFAULT NULL, `parent` int(8) DEFAULT NULL, - `parameter` text NOT NULL, - `copy_market` int(1) NOT NULL, + `parameter` text DEFAULT NULL, + `copy_market` int(1) DEFAULT 0, `meta_keywords` text DEFAULT NULL, `meta_description` text DEFAULT NULL, `meta_author` varchar(255) DEFAULT NULL, diff --git a/src/old/CLAUDE.md b/src/old/CLAUDE.md new file mode 100644 index 000000000..a0617df7d --- /dev/null +++ b/src/old/CLAUDE.md @@ -0,0 +1,172 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is a legacy Zend Framework 1 application for a print shop e-commerce platform ("PrintShopCreator"). It's a multi-tenant system where each shop can have custom templates, products, and configurations. + +**Important**: This is in the `/src/old` directory, suggesting there may be a newer version elsewhere in the parent project. + +## Technology Stack + +- **PHP Framework**: Zend Framework 1 (legacy) +- **ORM**: Doctrine 1.x +- **Primary Database**: MySQL (via PDO) +- **Secondary Database**: MongoDB (for dynamic routing) +- **Cache**: File-based Zend_Cache +- **Template Engine**: Zend_Layout + custom shop templates + +## Architecture + +### Multi-Tenant Structure + +The application is shop-based (multi-tenant): +- Shops are identified by domain name (stored in `Domain` table) +- Each shop has its own layout directory: `application/design/clients/{shop_uid}/` +- Shop configuration is loaded in `Bootstrap::_initLayout()` based on `$_SERVER["SERVER_NAME"]` +- Database connection, cache, and translations are shop-aware + +### Directory Structure + +- `application/` - Zend Framework application code + - `Bootstrap.php` - Main application bootstrap with initialization methods + - `configs/` - Configuration files (application.ini, database.ini, etc.) + - `modules/` - MVC modules + - `default/` - Frontend shop module + - `production/` - Production/backend module + - `service/` - API/service endpoints + - `cli/` - CLI commands + - `articles/` - Pluggable article type definitions (Csvcalc, Market, Simple, Weblayouter, etc.) + - `queues/` - Queue processors (Booking, Computop, DPD, Heidelpay, etc.) + - `data/models/` - Doctrine ORM models + - `design/` - Shop templates and layouts + - `clients/{shop_uid}/` - Shop-specific templates + - `vorlagen/` - Template presets +- `library/` - Zend Framework libraries and custom code + - `TP/` - Custom business logic namespace + - `Doctrine/` - Doctrine ORM + - `Zend/` - Zend Framework +- `public/` - Web root + - `index.php` - Application entry point + - `temp/` - Temporary uploads +- `cache/` - File cache (per shop: `cache/{shop_id}/`) +- `logs/` - Application logs (app.log, php.error.log) +- `data/` - Data files +- `market/` - Market-related files + +### Bootstrap Initialization Order + +Key bootstrap methods in `application/Bootstrap.php`: +1. `_initAutoload()` - Registers namespaces (TP_, Doctrine, etc.) +2. `_initDb()` - Configures Doctrine and MySQL connection +3. `_initLog()` - Sets up Zend_Log and session handling +4. `_initLayout()` - **Critical**: Loads shop by domain, sets layout paths +5. `_initLanguage()` - Configures translations and cache +6. `_initArticleQueues()` - Loads article types and queue processors dynamically +7. `_initPlugins()` - Registers ACL and authentication plugins +8. `_initCustomRouter()` - Loads dynamic routes from MongoDB + +### Article System + +Articles are pluggable product types. Each article type: +- Lives in `application/articles/{ArticleType}/` +- Has an `Article.php` class that extends a base article class +- Is registered in the global `articles` registry during bootstrap +- Types include: Csvcalc, Market, Simple, Weblayouter, Wmd, etc. + +### Queue System + +Queues are background processors for various workflows: +- Located in `application/queues/{QueueType}/` +- Each has a `Queues.php` class +- Registered globally during bootstrap +- Types include: Booking, Computop, DPD, Heidelpay, KPExport, etc. + +### Dynamic Routing + +Routes are stored in MongoDB and loaded in `_initCustomRouter()`: +- Route types: Article (1), CMS (2), Overview (3), System (4) +- Mapped to controllers dynamically at runtime +- Per-shop configuration + +### Custom TP_ Namespace + +Business logic lives in `library/TP/`: +- `TP_Basket` - Shopping cart logic +- `TP_Calc` - Price/product calculations +- `TP_Controller_*` - Custom controller classes +- `TP_Plugin_Acl` - Access control +- `TP_Plugin_Auth` - Authentication +- `TP_Crypt` - Encryption utilities +- `TP_Util` - Utility functions + +### Session Handling + +Special session logic via encrypted ARTID parameter: +- Used for cross-domain article editing +- ARTID can be encrypted with server name and session ID +- Decrypted in Bootstrap to set proper session and domain context + +## Running the Application + +### Web Server + +The application entry point is `public/index.php`. Configure your web server to point to the `public/` directory. + +Environment is set via `APPLICATION_ENV` (production, staging, development, testing). + +### CLI Commands + +Run CLI commands via: +```bash +php public/index.php +``` + +CLI controllers are in `application/modules/cli/controllers/`. + +### Database + +Database configuration is in `application/configs/database.ini`. + +For Doctrine: +- Models are in `application/data/models/` +- Schema is in `application/doctrine/schema/` +- Migrations are in `application/doctrine/migrations/` + +## Configuration Files + +Key configuration files in `application/configs/`: +- `application.ini` - Main Zend Framework configuration +- `database.ini` - Database connection settings +- `layout.ini` - Layout paths configuration +- `printshopcreator.ini` - Application-specific settings (market ID, image scaling) +- `navigation.xml` - Site navigation structure +- `systemdefaults.ini` - System default values + +## Development Notes + +### Multi-Shop Testing + +When testing, be aware that the shop is determined by `$_SERVER["SERVER_NAME"]`. The system queries the `Domain` table to find the shop, then loads shop-specific: +- Layout/template from `application/design/clients/{shop_uid}/` +- Configuration values +- Custom routes from MongoDB + +### Cache + +File cache is stored per shop in `cache/{shop_id}/`. Clear cache by deleting these directories or using `?no_cache=1` query parameter. + +### Logs + +Application logs are in `logs/`: +- `app.log` - Application log via Zend_Log +- `php.error.log` - PHP errors + +### Translations + +Translation system uses both: +- File-based translations in `application/locale/` +- Database translations via `TP_Translate_Adapter_Db` (from `admin_translation` table) + +Translations are cached and shop/locale aware.