diff --git a/.cliffignore b/.cliffignore deleted file mode 100644 index 187668fd1..000000000 --- a/.cliffignore +++ /dev/null @@ -1,7 +0,0 @@ -9766c534bddad8e82e6d19f9bad5cf70b9887f9a -92ce77ec0ec703c08a659419087a373f76e711f7 -2d53efc945c7747be1755d0b66557a86bdc12cbd -602137b65129b817811b80975a369ebde3270c6d -4eb26ae37e1f4c82a45961517ffeb54c20200408 -e59adce848a9e10ee5775254045cbbd915236b8b -9e0a64108d62236ab07b3f8d10e8c78269b8e1d1 diff --git a/.editorconfig b/.editorconfig index ddde48ba4..8f0de65c5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,19 +1,18 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# editorconfig.org - root = true [*] -end_of_line = lf charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true +end_of_line = lf +indent_size = 4 indent_style = space -indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true -[*.{diff,md}] +[*.md] trim_trailing_whitespace = false -[*.{php,tpl}] +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] indent_size = 4 diff --git a/.github/ISSUE_TEMPLATE/feature---enhancement-request.md b/.github/ISSUE_TEMPLATE/feature---enhancement-request.md deleted file mode 100644 index 9f68fc3a6..000000000 --- a/.github/ISSUE_TEMPLATE/feature---enhancement-request.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: Feature / Enhancement request -about: Suggest an idea for TorrentPier -title: "[Feature]" -labels: [Feature, Enhancement] -assignees: '' ---- diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml deleted file mode 100644 index 8e256db33..000000000 --- a/.github/workflows/cd.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: Continuous Deployment - -on: - push: - tags: - - "v*.*.*" - -jobs: - generate-changelog: - name: Generate changelog - runs-on: ubuntu-22.04 - outputs: - release_body: ${{ steps.git-cliff.outputs.content }} - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Generate a changelog - uses: orhun/git-cliff-action@v4 - id: git-cliff - with: - config: cliff.toml - args: -vv --latest --no-exec --github-repo ${{ github.repository }} - - - name: Print the changelog - run: cat "${{ steps.git-cliff.outputs.changelog }}" - - release: - name: Create release - needs: [ generate-changelog ] - runs-on: ubuntu-22.04 - - steps: - - uses: actions/checkout@v4 - - name: Set the release version - shell: bash - run: echo "RELEASE_VERSION=${GITHUB_REF:11}" >> $GITHUB_ENV - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.3' - - - name: Install Composer dependencies - run: composer install --no-dev --no-progress --prefer-dist --optimize-autoloader - - - name: Cleanup - run: php _cleanup.php && rm _cleanup.php - - - name: Create archive - id: create-zip - run: | - ZIP_NAME="torrentpier-v${{ env.RELEASE_VERSION }}.zip" - zip -r "$ZIP_NAME" . -x ".git/*" - echo "ZIP_NAME=$ZIP_NAME" >> $GITHUB_OUTPUT - - - name: Publish to GitHub - if: ${{ !contains(github.ref, '-') }} - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ steps.create-zip.outputs.ZIP_NAME }} - overwrite: true - tag: ${{ github.ref }} - release_name: "v${{ env.RELEASE_VERSION }}" - body: "${{ needs.generate-changelog.outputs.release_body }}" - - - name: Publish to GitHub (pre-release) - if: ${{ contains(github.ref, '-') }} - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ steps.create-zip.outputs.ZIP_NAME }} - overwrite: true - tag: ${{ github.ref }} - release_name: "v${{ env.RELEASE_VERSION }}" - body: "${{ needs.generate-changelog.outputs.release_body }}" - prerelease: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 424e53a1f..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Continuous Integration - -on: - push: - branches: - - master - -jobs: - nightly: - name: Nightly builds ๐Ÿ“ฆ - runs-on: ubuntu-22.04 - - steps: - - name: Checkout code ๐Ÿ—ณ - uses: actions/checkout@v4 - - - name: Setup PHP ๐Ÿ”ฉ - uses: shivammathur/setup-php@v2 - with: - php-version: '8.3' - - - name: Install Composer dependencies ๐Ÿชš - run: composer install --no-dev --no-progress --prefer-dist --optimize-autoloader - - - name: Get commit hash ๐Ÿ”— - id: get-commit-hash - run: | - COMMIT_HASH=$(git rev-parse --short HEAD) - echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_OUTPUT - - - name: Cleanup - run: php _cleanup.php && rm _cleanup.php - - - name: Create archive ๐Ÿ—ž - id: create-zip - run: | - ZIP_NAME="torrentpier-${{ steps.get-commit-hash.outputs.COMMIT_HASH }}.zip" - zip -r "$ZIP_NAME" . -x ".git/*" - echo "ZIP_NAME=$ZIP_NAME" >> $GITHUB_OUTPUT - - - name: Upload Archive ๐Ÿ“ค - uses: actions/upload-artifact@v4 - with: - name: TorrentPier-master - path: ${{ steps.create-zip.outputs.ZIP_NAME }} - - deploy: - name: ๐ŸŽ‰ Deploy - runs-on: ubuntu-22.04 - steps: - - name: ๐Ÿšš Get latest code - uses: actions/checkout@v4 - - - name: ๐Ÿ”ฉ Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.3' - - - name: ๐Ÿ–‡ Install Composer dependencies - run: composer install --no-dev --no-progress --prefer-dist --optimize-autoloader - - - name: ๐Ÿ“‚ Sync files - uses: SamKirkland/FTP-Deploy-Action@v4.3.5 - with: - server: ${{ secrets.FTP_SERVER }} - username: ${{ secrets.FTP_USERNAME }} - password: ${{ secrets.FTP_PASSWORD }} - server-dir: ${{ secrets.FTP_DIR }} - protocol: ${{ secrets.FTP_PROTOCOL }} - port: ${{ secrets.FTP_PORT }} - exclude: | - **/.git* - **/.git*/** - .env diff --git a/.github/workflows/phpmd.yml b/.github/workflows/phpmd.yml deleted file mode 100644 index 3e06d7538..000000000 --- a/.github/workflows/phpmd.yml +++ /dev/null @@ -1,57 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. -# PHPMD is a spin-off project of PHP Depend and -# aims to be a PHP equivalent of the well known Java tool PMD. -# What PHPMD does is: It takes a given PHP source code base -# and look for several potential problems within that source. -# These problems can be things like: -# Possible bugs -# Suboptimal code -# Overcomplicated expressions -# Unused parameters, methods, properties -# More details at https://phpmd.org/ - -name: PHPMD - -on: - push: - branches: [ "master" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "master" ] - schedule: - - cron: '40 0 * * 3' - -permissions: - contents: read - -jobs: - PHPMD: - name: Run PHPMD scanning - runs-on: ubuntu-latest - permissions: - contents: read # for checkout to fetch code - security-events: write # for github/codeql-action/upload-sarif to upload SARIF results - actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status - - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@aa1fe473f9c687b6fb896056d771232c0bc41161 - with: - coverage: none - tools: phpmd - - - name: Run PHPMD - run: phpmd . sarif codesize --reportfile phpmd-results.sarif - continue-on-error: true - - - name: Upload analysis results to GitHub - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: phpmd-results.sarif - wait-for-processing: true diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml deleted file mode 100644 index c1ad4f3c1..000000000 --- a/.github/workflows/schedule.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Changelog generation - -on: - schedule: - - cron: '0 0 * * *' - workflow_dispatch: - -jobs: - changelog: - name: Changelog generation - runs-on: ubuntu-22.04 - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: master - token: ${{ secrets.REPO_TOKEN }} - - - name: Generate a changelog - uses: orhun/git-cliff-action@v4 - id: git-cliff - with: - config: cliff.toml - args: v2.4.6-alpha.4.. --verbose - env: - OUTPUT: CHANGELOG.md - GITHUB_REPO: ${{ github.repository }} - - - name: Print the changelog - run: cat "${{ steps.git-cliff.outputs.changelog }}" - - - name: Commit changelog - run: | - git checkout master - git config --local user.name 'belomaxorka' - git config --local user.email 'roman25052006.kelesh@gmail.com' - set +e - git add CHANGELOG.md - git commit -m "changelog: Update CHANGELOG.md ๐Ÿ“–" - git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git master diff --git a/.gitignore b/.gitignore index dd0e1f365..f62d18bc6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,47 +1,176 @@ -### IDE ### -.idea -.vscode +# Created by https://www.toptal.com/developers/gitignore/api/macos,windows,laravel,phpstorm+all +# Edit at https://www.toptal.com/developers/gitignore?templates=macos,windows,laravel,phpstorm+all -### TorrentPier ### -*.log -install.php_* -composer-setup.php +### Laravel ### +/vendor/ +node_modules/ +npm-debug.log +yarn-error.log + +# Laravel 4 specific +bootstrap/compiled.php +app/storage/ + +# Laravel 5 & Lumen specific +public/storage +public/hot + +# Laravel 5 & Lumen specific with changed public path +public_html/storage +public_html/hot + +storage/*.key .env -.php_cs.cache -data/avatars -data/uploads -internal_data/atom -internal_data/cache -internal_data/log -internal_data/updater.json -sitemap -internal_data/triggers -library/config.local.php -vendor +Homestead.yaml +Homestead.json +/.vagrant +.phpunit.result.cache -### Archives ### -*.phar -*.rar -*.tar -*.gz -*.zip -*.7z -*.torrent -*.pak - -### Windows ### -Thumbs.db -Desktop.ini -$RECYCLE.BIN/ -*.lnk -*.bat - -### OSX ### +### macOS ### +# General .DS_Store .AppleDouble .LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails ._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd .Spotlight-V100 +.TemporaryItems .Trashes -*.orig -*.rej +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### PhpStorm+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### PhpStorm+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/macos,windows,laravel,phpstorm+all diff --git a/.htaccess b/.htaccess deleted file mode 100644 index a689fba84..000000000 --- a/.htaccess +++ /dev/null @@ -1,18 +0,0 @@ -## set default server charset -AddDefaultCharset UTF-8 - -## folder listing access control -Options All -Indexes - -## sitemap and atom rewrite -RewriteEngine On -RewriteRule ^sitemap.xml$ sitemap/sitemap.xml [L] -RewriteRule ^/internal_data/atom/(.*) /atom$1 [L] - -## deny access to git folder -RedirectMatch 404 /\\.git(/|$) - -## deny access to system files - -Require all denied - diff --git a/README.md b/README.md index 5e7a13049..2063eac8b 100644 --- a/README.md +++ b/README.md @@ -1,188 +1,36 @@

TorrentPier

-

- Bull-powered BitTorrent tracker engine -
-

- -

- License - Stars Packagist - Crowdin - TorrentPier nightly - Downloads - Version - Last release - Size - Deployed to TorrentPier Demo with FTP Deploy Action -

- ## ๐Ÿ‚ About TorrentPier -TorrentPier โ€” bull-powered BitTorrent Public/Private tracker engine, written in PHP. High speed, simple modifications, load-balanced +TorrentPier โ€” bull-powered BitTorrent public/private tracker engine, written in PHP. High speed, simple modifications, load-balanced architecture. In addition, we have a very helpful [official support forum](https://torrentpier.com), where it's possible to get support and download modifications for the engine. ## ๐ŸŒˆ Current status -TorrentPier is currently undergoing a **major 3.0 rewrite** to remove all legacy code and modernize the codebase to current PHP standards. **Backward compatibility is not a priority** - this release focuses on moving forward with clean, modern architecture. If you want to delve deep into the code, check our [issues](https://github.com/torrentpier/torrentpier/issues) and go from there. +TorrentPier is currently being **completely rewritten from scratch on Laravel**. The current codebase may not reflect the final product, and code downloaded from the `dexter` branch may not include promised features. + +> [!WARNING] +> This branch contains **development code** that is not ready for production use. For stable releases, please download from the [GitHub releases](https://github.com/torrentpier/torrentpier/releases) or use the [download center](https://nightly.link/torrentpier/torrentpier/workflows/ci/master/TorrentPier-master). > [!NOTE] -> TorrentPier 3.0 will introduce breaking changes. Existing installations should remain on 2.x versions until ready to migrate to the new architecture. +> The legacy codebase (v2.x) can be found on the **master branch**. This Laravel rewrite (v3.0) will introduce breaking changes and is not backward compatible. ## โœจ Features * Rich forum with browsing/moderation tools * High-load capable, heavily configurable announcer * Scrape support * FreeLeech -* [TorrServer integration](https://github.com/YouROK/TorrServer) support +* TorrServer integration support * BitTorrent v2 support * Event-based invite system * Bonus points * Polling system * PM/DM system -* Multilingual support (Russian and English are currently fully supported, with others in the future) +* Multilingual support * Atom/RSS feeds * ... and so MUCH MORE! -## ๐Ÿ–ฅ๏ธ Demo - -* URL: https://torrentpier.duckdns.org -* Username: `admin` -* Password: `admin` - -> [!NOTE] -> Demo resets every 24 hours! - -## ๐Ÿ”ง Requirements - -* Apache / nginx ([example config](install/nginx.conf)) / caddy ([example config](install/Caddyfile)) -* MySQL 5.5.3 or above (including MySQL 8.0+) / MariaDB 10.0 or above / Percona -* PHP: 8.3 / 8.4 -* PHP Extensions: mbstring, gd, bcmath, intl, tidy (optional), xml, xmlwriter -* Crontab (Recommended) - -## ๐Ÿ’พ Installation - -For the installation, select one of the installation variants below: - -### Quick (Clean install) ๐Ÿš€ - -Check out our [autoinstall](https://github.com/torrentpier/autoinstall) repository with detailed instructions. - -> [!NOTE] -> Thanks to [Sergei Solovev](https://github.com/SeAnSolovev) for this installation script โค๏ธ - -### Quick (For web-panels) โ˜•๏ธ - -1. Select the folder where you want TorrentPier installed - ```shell - cd /path/to/public_html - ``` -2. Download the latest version of TorrentPier - ```shell - sudo git clone https://github.com/torrentpier/torrentpier.git . - ``` -3. After completing, execute the command below and follow the instructions - ```shell - php install.php - ``` -4. Voila! โœจ - -### Manual ๐Ÿ”ฉ - -1. Install [Composer](https://getcomposer.org/) -2. Run the following command to create the TorrentPier project - ```shell - composer create-project torrentpier/torrentpier - ``` -3. [Check our system requirements](#-requirements) -4. After, run this command in the project directory to install Composer dependencies - ```shell - composer install - ``` -5. Edit database configuration settings in the environment (`.env.example`), after, rename to `.env` -6. Create a database and run migrations to set up the schema - ```shell - php vendor/bin/phinx migrate --configuration=phinx.php - ``` -7. Provide write permissions to the specified folders: - * `data/avatars`, `data/uploads`, `data/uploads/thumbs` - * `internal_data/atom`, `internal_data/cache`, `internal_data/log`, `internal_data/triggers` - * `sitemap` -8. Voila! โœจ - -> [!TIP] -> You can automate steps 4-7 by running `php install.php` instead, which will guide you through the setup process interactively. - -> [!IMPORTANT] -> The specific settings depend on the server you are using, but in general we recommend chmod **0755** for folders, and chmod **0644** for the files in them. - -### Additional steps ๐Ÿ‘ฃ - -1. Edit these files: - * `favicon.png` (change to your own) - * `robots.txt` (change the addresses in lines `Host` and `Sitemap` to your own) -2. Log in to the forum using the **admin/admin** login/password, and finish setting up via admin panel. Don't forget to change your password! - -## ๐Ÿ” Security vulnerabilities - -If you discover a security vulnerability within TorrentPier, please follow our [security policy](https://github.com/torrentpier/torrentpier/security/policy), so we can address it promptly. - -## ๐Ÿงช Testing - -TorrentPier includes a comprehensive testing suite built with **Pest PHP**. Run tests to ensure code quality and system reliability: - -```shell -# Run all tests -./vendor/bin/pest - -# Run with coverage -./vendor/bin/pest --coverage -``` - -For detailed testing documentation, see [tests/README.md](tests/README.md). - -## ๐Ÿ“Œ Our recommendations - -* *It's recommended to run `cron.php`.* - For significant tracker speed increase it may be required to replace the built-in cron.php with an operating system daemon. -* *Local configuration copy.* - You can override the settings using the local configuration file `library/config.local.php`. - -## ๐Ÿ’š Contributing / Contributors - -Please read our [contributing policy](CONTRIBUTING.md) and [code of conduct](CODE_OF_CONDUCT.md) for details, and the process for -submitting pull requests to us. But we are always ready to review your pull-request for compliance with -these requirements. Just send it! - - - Contributors - - -Made with [contrib.rocks](https://contrib.rocks). - -## ๐Ÿ’ž Sponsoring - -Support this project by becoming a sponsor or a backer. - -[![OpenCollective sponsors](https://opencollective.com/torrentpier/sponsors/badge.svg)](https://opencollective.com/torrentpier) -[![OpenCollective backers](https://opencollective.com/torrentpier/backers/badge.svg)](https://opencollective.com/torrentpier) - -
- Monero - -``` -42zJE3FDvN8foP9QYgDrBjgtd7h2FipGCGmAcmG5VFQuRkJBGMbCvoLSmivepmAMEgik2E8MPWUzKaoYsGCtmhvL7ZN73jh -``` -
- -
- YooMoney - -``` -4100118022415720 -``` -
- ## ๐Ÿ“ฆ Versioning We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/torrentpier/torrentpier/tags). diff --git a/_cleanup.php b/_cleanup.php deleted file mode 100644 index d9802822a..000000000 --- a/_cleanup.php +++ /dev/null @@ -1,57 +0,0 @@ -php ' . basename(__FILE__) . ' in CLI mode'); -} - -// Get all constants -require_once BB_ROOT . 'library/defines.php'; - -// Include CLI functions -require INC_DIR . '/functions_cli.php'; - -// Welcoming message -out("--- Release creation tool ---\n", 'info'); - -$configFile = BB_PATH . '/library/config.php'; - -if (!is_file($configFile)) { - out('- Config file ' . basename($configFile) . ' not found', 'error'); - exit; -} -if (!is_readable($configFile)) { - out('- Config file ' . basename($configFile) . ' is not readable', 'error'); - exit; -} -if (!is_writable($configFile)) { - out('- Config file ' . basename($configFile) . ' is not writable', 'error'); - exit; -} - -// Ask for version -fwrite(STDOUT, 'Enter version number (e.g, v2.4.0): '); -$version = trim(fgets(STDIN)); - -if (empty($version)) { - out("- Version cannot be empty. Please enter a valid version number", 'error'); - exit; -} else { - // Add 'v' prefix if missing - if (!str_starts_with($version, 'v')) { - $version = 'v' . $version; - } - - out("- Using version: $version", 'info'); -} - -// Ask for version emoji -fwrite(STDOUT, 'Enter version emoji: '); -$versionEmoji = trim(fgets(STDIN)); - -if (!empty($versionEmoji)) { - out("- Using version emoji: $versionEmoji", 'info'); -} - -// Ask for release date or use today's date -fwrite(STDOUT, "Enter release date (e.g. 25-05-2025), leave empty to use today's date: "); -$date = trim(fgets(STDIN)); - -if (empty($date)) { - $date = date('d-m-Y'); - out("- Using current date: $date", 'info'); -} else { - // Validate date format (dd-mm-yyyy) - $dateObj = DateTime::createFromFormat('d-m-Y', $date); - if (!$dateObj || $dateObj->format('d-m-Y') !== $date) { - out("- Invalid date format. Expected format: DD-MM-YYYY", 'error'); - exit; - } - - out("- Using date: $date", 'info'); -} - -// Read config file content -$content = file_get_contents($configFile); - -// Update version -$content = preg_replace( - "/\\\$bb_cfg\['tp_version'\]\s*=\s*'[^']*';/", - "\$bb_cfg['tp_version'] = '$version';", - $content -); - -// Update release date -$content = preg_replace( - "/\\\$bb_cfg\['tp_release_date'\]\s*=\s*'[^']*';/", - "\$bb_cfg['tp_release_date'] = '$date';", - $content -); - -// Save updated config -$bytesWritten = file_put_contents($configFile, $content); - -if ($bytesWritten === false) { - out("- Failed to write to config file", 'error'); - exit; -} - -if ($bytesWritten === 0) { - out("- Config file was not updated (0 bytes written)", 'error'); - exit; -} - -out("\n- Config file has been updated!", 'success'); - -// Update CHANGELOG.md -runProcess('npx git-cliff v2.4.6-alpha.4.. --config cliff.toml --tag "' . $version . '" > CHANGELOG.md'); - -// Git add & commit -runProcess('git add -A && git commit -m "release: ' . escapeshellarg($version) . (!empty($versionEmoji) ? (' ' . $versionEmoji) : '') . '"'); - -// Git tag -runProcess("git tag -a \"$version\" -m \"Release $version\""); -runProcess("git tag -v \"$version\""); - -// Git push -runProcess("git push origin master"); -runProcess("git push origin $version"); - -out("\n- Release $version has been successfully prepared, committed and pushed!", 'success'); diff --git a/cliff.toml b/cliff.toml deleted file mode 100644 index 1798567f1..000000000 --- a/cliff.toml +++ /dev/null @@ -1,126 +0,0 @@ -# git-cliff ~ TorrentPier configuration file -# https://git-cliff.org/docs/configuration -# -# Lines starting with "#" are comments. -# Configuration options are organized into tables and keys. -# See documentation for more information on available options. - -[remote.github] -owner = "torrentpier" -repo = "torrentpier" - -[changelog] -# template for the changelog header -header = """ -[![TorrentPier](https://raw.githubusercontent.com/torrentpier/.github/refs/heads/main/versions/Cattle.png)](https://github.com/torrentpier)\n -# ๐Ÿ“– Change Log\n -""" -# template for the changelog body -# https://keats.github.io/tera/docs/#introduction -body = """ -{%- macro remote_url() -%} - https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} -{%- endmacro -%} - -{%- macro nightly_url() -%} - https://nightly.link/{{ remote.github.owner }}/{{ remote.github.repo }}/workflows/ci/master/TorrentPier-master -{%- endmacro -%} - -{% macro print_commit(commit) -%} - - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ - {% if commit.breaking %}[**breaking**] {% endif %}\ - {{ commit.message | upper_first }} - \ - ([{{ commit.id | truncate(length=7, end="") }}]({{ self::remote_url() }}/commit/{{ commit.id }}))\ -{% endmacro -%} - -{% if version %}\ - {% if previous.version %}\ - ## [{{ version }}]\ - ({{ self::remote_url() }}/compare/{{ previous.version }}..{{ version }}) ({{ timestamp | date(format="%Y-%m-%d") }}) - {% else %}\ - ## {{ version }} ({{ timestamp | date(format="%Y-%m-%d") }}) - {% endif %}\ -{% else %}\ - ## [nightly]({{ self::nightly_url() }}) -{% endif %}\ - -{% for group, commits in commits | group_by(attribute="group") %} - ### {{ group | striptags | trim | upper_first }} - {% for commit in commits - | filter(attribute="scope") - | sort(attribute="scope") %} - {{ self::print_commit(commit=commit) }} - {%- endfor %} - {% for commit in commits %} - {%- if not commit.scope -%} - {{ self::print_commit(commit=commit) }} - {% endif -%} - {% endfor -%} -{% endfor -%} -{%- if github -%} -{% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %} - ## New Contributors โค๏ธ -{% endif %}\ -{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} - * @{{ contributor.username }} made their first contribution - {%- if contributor.pr_number %} in \ - [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \ - {%- endif %} -{%- endfor -%} -{%- endif %} - - -""" -# template for the changelog footer -footer = """ -""" -# remove the leading and trailing whitespace from the templates -trim = true -# postprocessors -postprocessors = [ - { pattern = '', replace = "https://github.com/torrentpier/torrentpier" }, # replace repository URL -] - -[git] -# parse the commits based on https://www.conventionalcommits.org -conventional_commits = true -# filter out the commits that are not conventional -filter_unconventional = true -# process each line of a commit as an individual commit -split_commits = false -# regex for preprocessing the commit messages -commit_preprocessors = [ - # Replace issue numbers - { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](/pull/${2}))" }, - # Check spelling of the commit with https://github.com/crate-ci/typos - # If the spelling is incorrect, it will be automatically fixed. - # { pattern = '.*', replace_command = 'typos --write-changes -' }, -] -# regex for parsing and grouping commits -commit_parsers = [ - { message = "^feat", group = "๐Ÿš€ Features" }, - { message = "^fix", group = "๐Ÿ› Bug Fixes" }, - { message = "^doc", group = "๐Ÿ“š Documentation" }, - { message = "^perf", group = "โšก Performance" }, - { message = "^refactor", group = "๐Ÿšœ Refactor" }, - { message = "^style", group = "๐ŸŽจ Styling" }, - { message = "^test", group = "๐Ÿงช Testing" }, - { message = "^ignore|^release|^changelog", skip = true }, - { message = "^chore|^ci|^misc", group = "โš™๏ธ Miscellaneous" }, - { body = ".*security", group = "๐Ÿ›ก๏ธ Security" }, - { message = "^revert", group = "โ—€๏ธ Revert" }, - { message = "^crowdin|^crodwin", group = "๐Ÿˆณ New translations" }, # crowdin pulls supporting - { message = "^Composer", group = "๐Ÿ“ฆ Dependencies" }, # dependabot pulls supporting - { message = "^rem|^drop|^removed", group = "๐Ÿ—‘๏ธ Removed" }, - { message = ".*", group = "๐Ÿ’ผ Other" }, -] -# protect breaking changes from being skipped due to matching a skipping commit_parser -protect_breaking_commits = false -# filter out the commits that are not matched by commit parsers -filter_commits = false -# regex for matching git tags -tag_pattern = "v[0-9].*" -# sort the tags topologically -topo_order = false -# sort the commits inside sections by oldest/newest order -sort_commits = "newest" diff --git a/config/README.md b/config/README.md deleted file mode 100644 index 1d4ccad07..000000000 --- a/config/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# Application Configuration - -System configuration files using PHP arrays for type safety and IDE support: - -- **app.php**: Core application settings - - Site name, URL, timezone - - Debug mode, environment - - Feature flags and toggles - -- **database.php**: Database connection settings - - Multiple connection definitions - - Read/write splitting configuration - - Connection pooling settings - -- **cache.php**: Cache driver configurations - - Redis, Memcached, file-based settings - - TTL defaults per cache type - - Cache key prefixes - -- **tracker.php**: BitTorrent tracker settings - - Announce intervals - - Peer limits - - Ratio requirements - -- **environments/**: Environment-specific overrides - - Development, staging, production settings - - Local developer configurations - -Example database configuration: -```php - env('DB_CONNECTION', 'mysql'), - - 'connections' => [ - 'mysql' => [ - 'driver' => 'mysql', - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', 3306), - 'database' => env('DB_DATABASE', 'tp'), - 'username' => env('DB_USERNAME', 'root'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'options' => [ - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::ATTR_EMULATE_PREPARES => false, - ], - ], - ], -]; -``` \ No newline at end of file diff --git a/config/container.php b/config/container.php deleted file mode 100644 index cc72536ee..000000000 --- a/config/container.php +++ /dev/null @@ -1,26 +0,0 @@ - env('APP_ENV', 'development'), - 'debug' => env('APP_DEBUG', false), - - // Enable/disable features - 'autowiring' => true, - 'annotations' => false, - - // Compilation settings for production - 'compilation_dir' => __DIR__ . '/../internal_data/cache/container', - 'proxies_dir' => __DIR__ . '/../internal_data/cache/proxies', - - // Additional definition files to load - 'definition_files' => [ - // Add custom definition files here - // __DIR__ . '/services/custom.php', - ], - - // Container-specific settings - 'container' => [ - // Add any PHP-DI specific settings here - ], -]; diff --git a/config/services.php b/config/services.php deleted file mode 100644 index 5070cdf57..000000000 --- a/config/services.php +++ /dev/null @@ -1,30 +0,0 @@ - factory(function () { - // $logger = new \Monolog\Logger('torrentpier'); - // $logger->pushHandler(new \Monolog\Handler\StreamHandler(__DIR__ . '/../internal_data/logs/app.log')); - // return $logger; - // }), - - // Configuration service example - // 'config' => factory(function () { - // return [ - // 'app' => require __DIR__ . '/app.php', - // 'database' => require __DIR__ . '/database.php', - // 'cache' => require __DIR__ . '/cache.php', - // ]; - // }), - - // Interface to implementation binding example - // 'ServiceInterface' => autowire('ConcreteService'), -]; diff --git a/docs/examples/di-container-usage.php b/docs/examples/di-container-usage.php deleted file mode 100644 index fcfc0bdf9..000000000 --- a/docs/examples/di-container-usage.php +++ /dev/null @@ -1,99 +0,0 @@ -has('some.service'); // Check if service exists - -// ===== PHASE 2: Domain Modeling (FUTURE) ===== - -// 3. Repository interfaces (when implemented in Domain layer) -// $userRepository = app('TorrentPier\Domain\User\Repository\UserRepositoryInterface'); -// $torrentRepository = app('TorrentPier\Domain\Tracker\Repository\TorrentRepositoryInterface'); -// $forumRepository = app('TorrentPier\Domain\Forum\Repository\ForumRepositoryInterface'); - -// ===== PHASE 3: Application Services (FUTURE) ===== - -// 4. Command/Query handlers (when implemented) -// $registerUserHandler = app('TorrentPier\Application\User\Handler\RegisterUserHandler'); -// $announceHandler = app('TorrentPier\Application\Tracker\Handler\ProcessAnnounceHandler'); -// $createPostHandler = app('TorrentPier\Application\Forum\Handler\CreatePostHandler'); - -// 5. Making command instances with parameters -// $command = $container->make('TorrentPier\Application\User\Command\RegisterUserCommand', [ -// 'username' => 'john_doe', -// 'email' => 'john@example.com', -// 'password' => 'secure_password' -// ]); - -// ===== PHASE 4: Infrastructure (FUTURE) ===== - -// 6. Database and cache (when infrastructure is implemented) -// $database = app('database.connection.default'); -// $cache = app('cache.factory')('forum'); // Get cache instance for 'forum' namespace - -// ===== PHASE 5: Presentation (FUTURE) ===== - -// 7. Controllers (when implemented) -// $userController = app('TorrentPier\Presentation\Http\Controllers\Api\UserController'); -// $trackerController = app('TorrentPier\Presentation\Http\Controllers\Web\TrackerController'); - -// ===== TESTING EXAMPLES ===== - -// 8. Testing with custom container (works now) -$testContainer = ContainerFactory::create([ - 'definitions' => [ - 'test.service' => \DI\factory(function () { - return new class { - public function test() { return 'test'; } - }; - }), - ], - 'environment' => 'testing', -]); - -// 9. Safe service resolution (works now) -try { - $service = app('optional.service'); -} catch (RuntimeException $e) { - // Service not found, handle gracefully - $service = null; -} - -// ===== LEGACY INTEGRATION (CURRENT) ===== - -// 10. Integration with legacy code -// In legacy files, after including common.php or similar: -if (!Bootstrap::getContainer()) { - Bootstrap::init(BB_ROOT ?? __DIR__ . '/../..'); -} - -// 11. Method injection (works now if service exists) -class ExampleService -{ - public function processData(string $data) - { - // Container can inject dependencies when calling this method - return "Processed: $data"; - } -} - -$exampleService = new ExampleService(); -$result = $container->call([$exampleService, 'processData'], [ - 'data' => 'test data' -]); \ No newline at end of file diff --git a/docs/specs/hexagonal-architecture-spec.md b/docs/specs/hexagonal-architecture-spec.md deleted file mode 100644 index 07dc0a672..000000000 --- a/docs/specs/hexagonal-architecture-spec.md +++ /dev/null @@ -1,436 +0,0 @@ -# Hexagonal Architecture Directory Structure Specification - -## Overview - -This document specifies the new hexagonal architecture directory structure for TorrentPier 3.0. The structure follows Domain-Driven Design (DDD) principles and implements a clean separation of concerns through hexagonal architecture (ports and adapters pattern). - -## Directory Structure - -``` -/src/ -โ”œโ”€โ”€ Domain/ # Core business logic - no framework dependencies -โ”‚ โ”œโ”€โ”€ Forum/ # Forum bounded context -โ”‚ โ”‚ โ”œโ”€โ”€ Model/ # Aggregates and entities -โ”‚ โ”‚ โ”œโ”€โ”€ ValueObject/ # Value objects (PostId, ThreadTitle, etc.) -โ”‚ โ”‚ โ”œโ”€โ”€ Repository/ # Repository interfaces -โ”‚ โ”‚ โ””โ”€โ”€ Exception/ # Domain-specific exceptions -โ”‚ โ”œโ”€โ”€ Tracker/ # BitTorrent tracker bounded context -โ”‚ โ”‚ โ”œโ”€โ”€ Model/ # Torrent, Peer aggregates -โ”‚ โ”‚ โ”œโ”€โ”€ ValueObject/ # InfoHash, PeerId, etc. -โ”‚ โ”‚ โ”œโ”€โ”€ Repository/ # Repository interfaces -โ”‚ โ”‚ โ””โ”€โ”€ Exception/ # Tracker-specific exceptions -โ”‚ โ”œโ”€โ”€ User/ # User management bounded context -โ”‚ โ”‚ โ”œโ”€โ”€ Model/ # User aggregate -โ”‚ โ”‚ โ”œโ”€โ”€ ValueObject/ # UserId, Email, Username -โ”‚ โ”‚ โ”œโ”€โ”€ Repository/ # User repository interface -โ”‚ โ”‚ โ””โ”€โ”€ Exception/ # Authentication/authorization exceptions -โ”‚ โ””โ”€โ”€ Shared/ # Shared kernel - minimal shared concepts -โ”‚ โ”œโ”€โ”€ Model/ # Base classes (AggregateRoot, Entity) -โ”‚ โ”œโ”€โ”€ ValueObject/ # Common value objects (Id, DateTime) -โ”‚ โ””โ”€โ”€ Event/ # Domain events base classes -โ”‚ -โ”œโ”€โ”€ Application/ # Application services - orchestration layer -โ”‚ โ”œโ”€โ”€ Forum/ -โ”‚ โ”‚ โ”œโ”€โ”€ Command/ # Commands (CreatePost, LockThread) -โ”‚ โ”‚ โ”œโ”€โ”€ Query/ # Queries (GetThreadList, SearchPosts) -โ”‚ โ”‚ โ””โ”€โ”€ Handler/ # Command and query handlers -โ”‚ โ”œโ”€โ”€ Tracker/ -โ”‚ โ”‚ โ”œโ”€โ”€ Command/ # Commands (RegisterTorrent, ProcessAnnounce) -โ”‚ โ”‚ โ”œโ”€โ”€ Query/ # Queries (GetPeerList, GetTorrentStats) -โ”‚ โ”‚ โ””โ”€โ”€ Handler/ # Command and query handlers -โ”‚ โ””โ”€โ”€ User/ -โ”‚ โ”œโ”€โ”€ Command/ # Commands (RegisterUser, ChangePassword) -โ”‚ โ”œโ”€โ”€ Query/ # Queries (GetUserProfile, SearchUsers) -โ”‚ โ””โ”€โ”€ Handler/ # Command and query handlers -โ”‚ -โ”œโ”€โ”€ Infrastructure/ # External concerns and implementations -โ”‚ โ”œโ”€โ”€ Persistence/ # Data persistence layer -โ”‚ โ”‚ โ”œโ”€โ”€ Database/ # Database adapter and connection management -โ”‚ โ”‚ โ”œโ”€โ”€ Migration/ # Database migrations -โ”‚ โ”‚ โ””โ”€โ”€ Repository/ # Repository implementations -โ”‚ โ”œโ”€โ”€ Cache/ # Caching implementations -โ”‚ โ”‚ โ”œโ”€โ”€ Redis/ # Redis adapter -โ”‚ โ”‚ โ”œโ”€โ”€ Memcached/ # Memcached adapter -โ”‚ โ”‚ โ””โ”€โ”€ File/ # File-based cache adapter -โ”‚ โ”œโ”€โ”€ Email/ # Email service implementations -โ”‚ โ”‚ โ”œโ”€โ”€ Template/ # Email templates -โ”‚ โ”‚ โ””โ”€โ”€ Transport/ # SMTP, API transports -โ”‚ โ””โ”€โ”€ FileStorage/ # File storage abstractions -โ”‚ โ”œโ”€โ”€ Local/ # Local filesystem storage -โ”‚ โ””โ”€โ”€ S3/ # AWS S3 storage adapter -โ”‚ -โ””โ”€โ”€ Presentation/ # User interface layer - โ”œโ”€โ”€ Http/ # Web interface - โ”‚ โ”œโ”€โ”€ Controllers/ # HTTP controllers - โ”‚ โ”‚ โ”œโ”€โ”€ Admin/ # Admin panel controllers - โ”‚ โ”‚ โ”œโ”€โ”€ Api/ # REST API controllers - โ”‚ โ”‚ โ””โ”€โ”€ Web/ # Web UI controllers - โ”‚ โ”œโ”€โ”€ Middleware/ # HTTP middleware (auth, CORS, etc.) - โ”‚ โ”œโ”€โ”€ Requests/ # Request DTOs and validation - โ”‚ โ””โ”€โ”€ Responses/ # Response transformers - โ””โ”€โ”€ Cli/ # Command line interface - โ””โ”€โ”€ Commands/ # Console commands - -# Additional directories (outside /src/) -/config/ # Application configuration -โ”œโ”€โ”€ app.php # Main application settings -โ”œโ”€โ”€ database.php # Database connections -โ”œโ”€โ”€ cache.php # Cache drivers configuration -โ”œโ”€โ”€ tracker.php # BitTorrent tracker settings -โ””โ”€โ”€ environments/ # Environment-specific overrides - -/tests/ # Test suites (Pest) -โ”œโ”€โ”€ Unit/ # Unit tests (mirrors src/ structure) -โ”œโ”€โ”€ Feature/ # Feature/Integration tests -โ”œโ”€โ”€ Pest.php # Pest configuration -โ””โ”€โ”€ TestCase.php # Base test case -``` - -## Directory README.md Templates - -### Domain Layer READMEs - -#### `/src/Domain/README.md` -```markdown -# Domain Layer - -This directory contains the core business logic of TorrentPier. Code here should: -- Have no dependencies on frameworks or infrastructure -- Represent pure business rules and domain models -- Be testable in isolation -- Use only PHP language features and domain concepts - -## Bounded Contexts -- **Forum**: Discussion forums, posts, threads -- **Tracker**: BitTorrent tracking, peers, torrents -- **User**: User management, authentication, profiles -- **Shared**: Minimal shared concepts between contexts -``` - -#### `/src/Domain/Tracker/Model/README.md` -```markdown -# Tracker Domain Models - -Contains aggregate roots and entities for the BitTorrent tracker: -- `Torrent`: Aggregate root for torrent management -- `Peer`: Entity representing a BitTorrent peer -- `TorrentStatistics`: Value object for torrent stats - -Example: -```php -class Torrent extends AggregateRoot -{ - public function announce(Peer $peer, AnnounceEvent $event): void - { - // Business logic for handling announces - } -} -``` - -#### `/src/Domain/Tracker/ValueObject/README.md` -```markdown -# Tracker Value Objects - -Immutable objects representing domain concepts: -- `InfoHash`: 20-byte torrent identifier -- `PeerId`: Peer client identifier -- `Port`: Network port (1-65535) -- `BytesTransferred`: Upload/download bytes - -Example: -```php -final class InfoHash -{ - private string $hash; - - public function __construct(string $hash) - { - $this->guardAgainstInvalidHash($hash); - $this->hash = $hash; - } -} -``` - -### Application Layer READMEs - -#### `/src/Application/README.md` -```markdown -# Application Layer - -Contains application services that orchestrate domain objects to fulfill use cases. -- Commands: Write operations that change state -- Queries: Read operations for data retrieval -- Handlers: Process commands and queries - -This layer should: -- Coordinate domain objects -- Handle transactions -- Dispatch domain events -- Not contain business logic -``` - -#### `/src/Application/Tracker/Command/README.md` -```markdown -# Tracker Commands - -Commands representing write operations: -- `RegisterTorrentCommand`: Register new torrent -- `UpdateTorrentCommand`: Modify torrent details -- `DeleteTorrentCommand`: Remove torrent from tracker - -Example: -```php -final class RegisterTorrentCommand -{ - public function __construct( - public readonly string $infoHash, - public readonly int $uploaderId, - public readonly string $name, - public readonly int $size - ) {} -} -``` - -### Infrastructure Layer READMEs - -#### `/src/Infrastructure/README.md` -```markdown -# Infrastructure Layer - -Technical implementations and external service adapters: -- Database persistence -- Caching mechanisms -- Email services -- File storage -- Third-party integrations - -Infrastructure depends on domain, not vice versa. -``` - -#### `/src/Infrastructure/Persistence/Repository/README.md` -```markdown -# Repository Implementations - -Concrete implementations of domain repository interfaces: -- Uses database adapter for persistence -- Implements caching strategies -- Handles query optimization -- Supports multiple database backends - -Example: -```php -class TorrentRepository implements TorrentRepositoryInterface -{ - public function __construct( - private DatabaseAdapterInterface $db - ) {} - - public function findByInfoHash(InfoHash $infoHash): ?Torrent - { - // Database adapter implementation - $row = $this->db->select('torrents') - ->where('info_hash', $infoHash->toString()) - ->first(); - - return $row ? $this->hydrateFromRow($row) : null; - } -} -``` - -### Presentation Layer READMEs - -#### `/src/Presentation/README.md` -```markdown -# Presentation Layer - -User interface implementations: -- HTTP controllers for web and API -- CLI commands for console operations -- Request/response handling -- Input validation -- Output formatting - -This layer translates between external format and application format. -``` - -#### `/src/Presentation/Http/Controllers/Api/README.md` -```markdown -# API Controllers - -RESTful API endpoints following OpenAPI specification: -- JSON request/response format -- Proper HTTP status codes -- HATEOAS where applicable -- Rate limiting aware - -Example: -```php -class UserController -{ - public function register(RegisterRequest $request): JsonResponse - { - $command = new RegisterUserCommand( - $request->getUsername(), - $request->getEmail(), - $request->getPassword() - ); - - $userId = $this->commandBus->handle($command); - - return new JsonResponse([ - 'id' => $userId, - 'username' => $request->getUsername() - ], Response::HTTP_CREATED); - } -} -``` - -#### `/src/Presentation/Http/Controllers/Admin/README.md` -```markdown -# Admin Panel Controllers - -Administrative interface controllers with enhanced security: -- Role-based access control (RBAC) -- Audit logging for all actions -- Additional authentication checks -- Administrative dashboards and reports - -Example: -```php -class AdminUserController -{ - public function index(Request $request): Response - { - $query = new GetUsersQuery( - page: $request->getPage(), - filters: $request->getFilters() - ); - - $users = $this->queryBus->handle($query); - - return $this->render('admin/users/index', [ - 'users' => $users, - 'filters' => $request->getFilters() - ]); - } -} -``` - -#### `/config/README.md` -```markdown -# Application Configuration - -System configuration files using PHP arrays for type safety and IDE support: - -- **app.php**: Core application settings - - Site name, URL, timezone - - Debug mode, environment - - Feature flags and toggles - -- **database.php**: Database connection settings - - Multiple connection definitions - - Read/write splitting configuration - - Connection pooling settings - -- **cache.php**: Cache driver configurations - - Redis, Memcached, file-based settings - - TTL defaults per cache type - - Cache key prefixes - -- **tracker.php**: BitTorrent tracker settings - - Announce intervals - - Peer limits - - Ratio requirements - -- **environments/**: Environment-specific overrides - - Development, staging, production settings - - Local developer configurations - -Example database configuration: -```php - env('DB_CONNECTION', 'mysql'), - - 'connections' => [ - 'mysql' => [ - 'driver' => 'mysql', - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', 3306), - 'database' => env('DB_DATABASE', 'tp'), - 'username' => env('DB_USERNAME', 'root'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'options' => [ - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, - PDO::ATTR_EMULATE_PREPARES => false, - ], - ], - ], -]; -``` - -## Implementation Order - -1. **Phase 1: Foundation** - - - Create directory structure - - Set up base classes in Domain/Shared - - Configure dependency injection - -2. **Phase 2: Domain Modeling** - - - Implement core aggregates - - Create value objects - - Define repository interfaces - -3. **Phase 3: Application Services** - - - Create commands and queries - - Implement handlers - - Set up event dispatching - -4. **Phase 4: Infrastructure** - - - Implement repositories - - Configure database adapter - - Set up caching - -5. **Phase 5: Presentation** - - - Create controllers - - Implement middleware - - Build CLI commands - -## Migration Strategy - -- Existing code remains in current locations -- New features built in hexagonal architecture -- Gradual migration using strangler fig pattern -- Legacy adapters bridge old and new code -- Feature flags control rollout - -## Key Principles - -1. **Dependency Rule**: Dependencies point inward (Presentation โ†’ Application โ†’ Domain) -2. **Domain Isolation**: Business logic has no framework dependencies -3. **Interface Segregation**: Small, focused interfaces -4. **CQRS**: Separate read and write models -5. **Event-Driven**: Domain events for cross-context communication - -## Testing Strategy - -- **Domain**: Pure unit tests, no mocks needed -- **Application**: Unit tests with mocked repositories -- **Infrastructure**: Integration tests with real services -- **Presentation**: E2E tests for user journeys - -## Notes for Developers - -- Start reading code from the Domain layer -- Business rules live in aggregates, not services -- Use value objects for type safety -- Prefer composition over inheritance -- Keep bounded contexts loosely coupled diff --git a/install.php b/install.php deleted file mode 100644 index 0d1516ce5..000000000 --- a/install.php +++ /dev/null @@ -1,331 +0,0 @@ -php ' . basename(__FILE__) . ' in CLI mode'); -} - -// Get all constants -require_once BB_ROOT . 'library/defines.php'; - -// Include CLI functions -require INC_DIR . '/functions_cli.php'; - -/** - * System requirements - */ -const CHECK_REQUIREMENTS = [ - 'php_min_version' => '8.3.0', - 'ext_list' => [ - 'json', - 'curl', - 'readline', - 'mysqli', - 'bcmath', - 'mbstring', - 'intl', - 'xml', - 'xmlwriter', - 'zip', - 'gd' - ], -]; - -// Welcoming message -out("--- TorrentPier Installer ---\n", 'info'); - -// Checking extensions -out("- Checking installed extensions...", 'info'); - -// [1] Check PHP Version -if (!version_compare(PHP_VERSION, CHECK_REQUIREMENTS['php_min_version'], '>=')) { - out("- TorrentPier requires PHP version " . CHECK_REQUIREMENTS['php_min_version'] . "+ Your PHP version " . PHP_VERSION, 'warning'); -} - -// [2] Check installed PHP Extensions on server -foreach (CHECK_REQUIREMENTS['ext_list'] as $ext) { - if (!extension_loaded($ext)) { - out("- ext-$ext not installed. Check out php.ini file", 'error'); - if (!defined('EXTENSIONS_NOT_INSTALLED')) { - define('EXTENSIONS_NOT_INSTALLED', true); - } - } else { - out("- ext-$ext installed!"); - } -} -if (!defined('EXTENSIONS_NOT_INSTALLED')) { - out("- All extensions are installed!\n", 'success'); -} else { - exit; -} - -// Check if already installed -if (is_file(BB_ROOT . '.env')) { - out('- TorrentPier already installed', 'warning'); - echo 'Are you sure want to re-install TorrentPier? [y/N]: '; - if (str_starts_with(mb_strtolower(trim(readline())), 'y')) { - out("\n- Re-install process started...", 'info'); - // environment - if (is_file(BB_ROOT . '.env')) { - if (unlink(BB_ROOT . '.env')) { - out('- Environment file successfully removed!'); - } else { - out('- Cannot remove environment (.env) file. Delete it manually', 'error'); - exit; - } - } - // composer.phar - if (is_file(BB_ROOT . 'composer.phar')) { - if (unlink(BB_ROOT . 'composer.phar')) { - out("- composer.phar file successfully removed!"); - } else { - out('- Cannot remove composer.phar file. Delete it manually', 'error'); - exit; - } - } - // composer dir - if (is_dir(BB_ROOT . 'vendor')) { - removeDir(BB_ROOT . 'vendor', true); - if (!is_dir(BB_ROOT . 'vendor')) { - out("- Composer directory successfully removed!"); - } else { - out('- Cannot remove Composer directory. Delete it manually', 'error'); - exit; - } - } - out("- Re-install process completed!\n", 'success'); - out('- Starting installation...', 'info'); - } else { - exit; - } -} - -// Applying permissions -out("- Applying permissions for folders...", 'info'); -chmod_r(BB_ROOT . 'data', 0755, 0644); -chmod_r(BB_ROOT . 'internal_data', 0755, 0644); -chmod_r(BB_ROOT . 'sitemap', 0755, 0644); -out("- Permissions successfully applied!\n", 'success'); - -// Check composer installation -if (!is_file(BB_ROOT . 'vendor/autoload.php')) { - out('- Hmm, it seems there are no Composer dependencies', 'info'); - - // Downloading composer - if (!is_file(BB_ROOT . 'composer.phar')) { - out('- Downloading Composer...', 'info'); - if (copy('https://getcomposer.org/installer', BB_ROOT . 'composer-setup.php')) { - out("- Composer successfully downloaded!\n", 'success'); - runProcess('php ' . BB_ROOT . 'composer-setup.php --install-dir=' . BB_ROOT); - } else { - out('- Cannot download Composer. Please, download it (composer.phar) manually', 'error'); - exit; - } - if (is_file(BB_ROOT . 'composer-setup.php')) { - if (unlink(BB_ROOT . 'composer-setup.php')) { - out("- Composer installation file successfully removed!\n", 'success'); - } else { - out('- Cannot remove Composer installation file (composer-setup.php). Please, delete it manually', 'warning'); - } - } - } else { - out("- composer.phar file found!\n", 'success'); - } - - // Installing dependencies - if (is_file(BB_ROOT . 'composer.phar')) { - out('- Installing dependencies...', 'info'); - - runProcess('php ' . BB_ROOT . 'composer.phar install --no-interaction --no-ansi'); - define('COMPOSER_COMPLETED', true); - } else { - out('- composer.phar not found. Please, download it (composer.phar) manually', 'error'); - exit; - } -} else { - out('- Composer dependencies are present!', 'success'); - out("- Note: Remove 'vendor' folder if you want to re-install dependencies\n"); -} - -// Check composer dependencies -if (defined('COMPOSER_COMPLETED')) { - if (is_file(BB_ROOT . 'vendor/autoload.php')) { - out("- Completed! Composer dependencies are installed!\n", 'success'); - } else { - exit; - } -} - -// Preparing ENV -if (is_file(BB_ROOT . '.env.example') && !is_file(BB_ROOT . '.env')) { - if (copy(BB_ROOT . '.env.example', BB_ROOT . '.env')) { - out("- Environment file created!\n", 'success'); - } else { - out('- Cannot create environment file', 'error'); - exit; - } -} - -// Editing ENV file -$DB_HOST = 'localhost'; -$DB_PORT = 3306; -$DB_DATABASE = ''; -$DB_USERNAME = ''; -$DB_PASSWORD = ''; - -if (is_file(BB_ROOT . '.env')) { - out("--- Configuring TorrentPier ---", 'info'); - - $envContent = file_get_contents(BB_ROOT . '.env'); - if ($envContent === false) { - out('- Cannot open environment file', 'error'); - exit; - } - $envLines = explode("\n", $envContent); - - $editedLines = []; - foreach ($envLines as $line) { - if (trim($line) !== '' && !str_starts_with($line, '#')) { - $parts = explode('=', $line, 2); - $key = trim($parts[0]); - $value = (!empty($parts[1]) && $key !== 'DB_PASSWORD') ? trim($parts[1]) : ''; - - out("\nCurrent value of $key: $value", 'debug'); - echo "Enter a new value for $key (or leave empty to not change): "; - $newValue = trim(readline()); - - if (!empty($newValue) || $key === 'DB_PASSWORD') { - if ($key === 'TP_HOST') { - if (!preg_match('/^https?:\/\//', $newValue)) { - $newValue = 'https://' . $newValue; - } - $newValue = parse_url($newValue, PHP_URL_HOST); - } - $line = "$key=$newValue"; - $$key = $newValue; - } else { - $$key = $value; - } - } - - $editedLines[] = $line; - } - - $newEnvContent = implode("\n", $editedLines); - if (file_put_contents(BB_ROOT . '.env', $newEnvContent)) { - out("- TorrentPier successfully configured!\n", 'success'); - } else { - out('- Cannot save environment file', 'error'); - exit; - } -} else { - out('- Environment file not found', 'error'); - exit; -} - -if (!empty($DB_HOST) && !empty($DB_DATABASE) && !empty($DB_USERNAME)) { - out("--- Checking environment settings ---\n", 'info'); - // Connecting to database - out("- Trying connect to MySQL...", 'info'); - - // Checking mysqli extension installed - if (!extension_loaded('mysqli')) { - out('- ext-mysqli not found. Check out php.ini file', 'error'); - exit; - } - - // Connect to MySQL server - try { - $conn = new mysqli($DB_HOST, $DB_USERNAME, $DB_PASSWORD, port: $DB_PORT); - } catch (mysqli_sql_exception $exception) { - out("- Connection failed: {$exception->getMessage()}", 'error'); - exit; - } - if (!$conn->connect_error) { - out('- Connected successfully!', 'success'); - } - - // Creating database if not exist - if ($conn->query("CREATE DATABASE IF NOT EXISTS $DB_DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci")) { - out('- Database created successfully!', 'success'); - } else { - out("- Cannot create database: $DB_DATABASE", 'error'); - exit; - } - $conn->select_db($DB_DATABASE); - - // Close database connection - migrations will handle their own connections - $conn->close(); - - // Run database migrations - out('- Setting up database using migrations...', 'info'); - - // Check if phinx.php exists - if (!is_file(BB_ROOT . 'phinx.php')) { - out('- Migration configuration (phinx.php) not found', 'error'); - exit; - } - - // Run migrations - $migrationResult = runProcess('php vendor/bin/phinx migrate --configuration=' . BB_ROOT . 'phinx.php'); - if ($migrationResult !== 0) { - out('- Database migration failed', 'error'); - exit; - } - - out("- Database setup completed!\n", 'success'); - - // Autofill host in robots.txt - $robots_txt_file = BB_ROOT . 'robots.txt'; - if (isset($TP_HOST) && is_file($robots_txt_file)) { - $content = file_get_contents($robots_txt_file); - $content = str_replace('example.com', $TP_HOST, $content); - file_put_contents($robots_txt_file, $content); - } - - if (isset($APP_ENV) && $APP_ENV === 'local') { - if (!is_file(BB_ROOT . 'library/config.local.php')) { - if (copy(BB_ROOT . 'library/config.php', BB_ROOT . 'library/config.local.php')) { - out('- Local configuration file created!', 'success'); - } else { - out('- Cannot create library/config.local.php file. You can create it manually, just copy config.php and rename it to config.local.php', 'warning'); - } - } - } else { - if (rename(__FILE__, __FILE__ . '_' . hash('xxh128', time()))) { - out("- Installation file renamed!", 'success'); - } else { - out('- Cannot rename installation file (' . __FILE__ . '). Please, rename it manually for security reasons', 'warning'); - } - } - - // Cleanup... - if (is_file(BB_ROOT . '_cleanup.php')) { - out("\n--- Finishing installation (Cleanup) ---\n", 'info'); - out('The cleanup process will remove:'); - out('- Development documentation (README, CHANGELOG)', 'debug'); - out('- Git configuration files', 'debug'); - out('- CI/CD pipelines and code analysis tools', 'debug'); - out('- Translation and contribution guidelines', 'debug'); - echo 'Do you want to delete these files permanently? [y/N]: '; - if (str_starts_with(mb_strtolower(trim(readline())), 'y')) { - out("\n- Cleanup...", 'info'); - require_once BB_ROOT . '_cleanup.php'; - unlink(BB_ROOT . '_cleanup.php'); - } else { - out('- Skipping...', 'info'); - } - } - - out("\n- Voila! Good luck & have fun!", 'success'); -} diff --git a/install/Caddyfile b/install/Caddyfile deleted file mode 100644 index 683d69994..000000000 --- a/install/Caddyfile +++ /dev/null @@ -1,27 +0,0 @@ -# Example Caddy configuration for TorrentPier - -example.com { - root * /path/to/root - encode gzip zstd - php_fastcgi unix//run/php/php-fpm.sock - try_files {path} {path}/ /index.php?{query} - file_server - - @blocked { - path /install/* /internal_data/* /library/* - path /.ht* /.en* - path /.git/* - path *.sql *.tpl *.db *.inc *.log *.md - } - respond @blocked 404 - - redir /sitemap.xml /sitemap/sitemap.xml - - @html_css_js { - path *.html *.css *.js *.json *.xml *.txt - } - header @html_css_js Content-Type "{mime}; charset=utf-8" -} - -# Refer to the Caddy docs for more information: -# https://caddyserver.com/docs/caddyfile diff --git a/install/nginx.conf b/install/nginx.conf deleted file mode 100644 index 49a407ba4..000000000 --- a/install/nginx.conf +++ /dev/null @@ -1,39 +0,0 @@ -# Example nginx configuration for TorrentPier - -server { - listen 80; # port - server_name example.com; # your domain - root /path/to/root; # folder with TorrentPier installed - index index.php; - charset utf-8; - - location / { - try_files \$uri \$uri/ /index.php?\$args; - } - - location ~ \/(install|internal_data|library)\/ { - return 404; - } - - location ~ /\.(ht|en) { - return 404; - } - - location ~ /\.git { - return 404; - } - - location ~ \.(.*sql|tpl|db|inc|log|md)$ { - return 404; - } - - rewrite ^/sitemap.xml$ /sitemap/sitemap.xml; - - location ~ \.php$ { - include fastcgi_params; - fastcgi_pass unix:/run/php/php-fpm.sock; - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; - include fastcgi_params; - } -} diff --git a/internal_data/log/.keep b/internal_data/log/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/.env.example b/legacy/.env.example similarity index 100% rename from .env.example rename to legacy/.env.example diff --git a/legacy/.gitignore b/legacy/.gitignore new file mode 100644 index 000000000..dd0e1f365 --- /dev/null +++ b/legacy/.gitignore @@ -0,0 +1,47 @@ +### IDE ### +.idea +.vscode + +### TorrentPier ### +*.log +install.php_* +composer-setup.php +.env +.php_cs.cache +data/avatars +data/uploads +internal_data/atom +internal_data/cache +internal_data/log +internal_data/updater.json +sitemap +internal_data/triggers +library/config.local.php +vendor + +### Archives ### +*.phar +*.rar +*.tar +*.gz +*.zip +*.7z +*.torrent +*.pak + +### Windows ### +Thumbs.db +Desktop.ini +$RECYCLE.BIN/ +*.lnk +*.bat + +### OSX ### +.DS_Store +.AppleDouble +.LSOverride +._* +.Spotlight-V100 +.Trashes +*.orig +*.rej diff --git a/.styleci.yml b/legacy/.styleci.yml similarity index 100% rename from .styleci.yml rename to legacy/.styleci.yml diff --git a/CHANGELOG.md b/legacy/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to legacy/CHANGELOG.md diff --git a/CLAUDE.md b/legacy/CLAUDE.md similarity index 100% rename from CLAUDE.md rename to legacy/CLAUDE.md diff --git a/CODE_OF_CONDUCT.md b/legacy/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to legacy/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/legacy/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to legacy/CONTRIBUTING.md diff --git a/legacy/README.md b/legacy/README.md new file mode 100644 index 000000000..5e7a13049 --- /dev/null +++ b/legacy/README.md @@ -0,0 +1,192 @@ +

TorrentPier

+ +

+ Bull-powered BitTorrent tracker engine +
+

+ +

+ License + Stars Packagist + Crowdin + TorrentPier nightly + Downloads + Version + Last release + Size + Deployed to TorrentPier Demo with FTP Deploy Action +

+ +## ๐Ÿ‚ About TorrentPier + +TorrentPier โ€” bull-powered BitTorrent Public/Private tracker engine, written in PHP. High speed, simple modifications, load-balanced +architecture. In addition, we have a very helpful +[official support forum](https://torrentpier.com), where it's possible to get support and download modifications for the engine. + +## ๐ŸŒˆ Current status + +TorrentPier is currently undergoing a **major 3.0 rewrite** to remove all legacy code and modernize the codebase to current PHP standards. **Backward compatibility is not a priority** - this release focuses on moving forward with clean, modern architecture. If you want to delve deep into the code, check our [issues](https://github.com/torrentpier/torrentpier/issues) and go from there. + +> [!NOTE] +> TorrentPier 3.0 will introduce breaking changes. Existing installations should remain on 2.x versions until ready to migrate to the new architecture. + +## โœจ Features +* Rich forum with browsing/moderation tools +* High-load capable, heavily configurable announcer +* Scrape support +* FreeLeech +* [TorrServer integration](https://github.com/YouROK/TorrServer) support +* BitTorrent v2 support +* Event-based invite system +* Bonus points +* Polling system +* PM/DM system +* Multilingual support (Russian and English are currently fully supported, with others in the future) +* Atom/RSS feeds +* ... and so MUCH MORE! + +## ๐Ÿ–ฅ๏ธ Demo + +* URL: https://torrentpier.duckdns.org +* Username: `admin` +* Password: `admin` + +> [!NOTE] +> Demo resets every 24 hours! + +## ๐Ÿ”ง Requirements + +* Apache / nginx ([example config](install/nginx.conf)) / caddy ([example config](install/Caddyfile)) +* MySQL 5.5.3 or above (including MySQL 8.0+) / MariaDB 10.0 or above / Percona +* PHP: 8.3 / 8.4 +* PHP Extensions: mbstring, gd, bcmath, intl, tidy (optional), xml, xmlwriter +* Crontab (Recommended) + +## ๐Ÿ’พ Installation + +For the installation, select one of the installation variants below: + +### Quick (Clean install) ๐Ÿš€ + +Check out our [autoinstall](https://github.com/torrentpier/autoinstall) repository with detailed instructions. + +> [!NOTE] +> Thanks to [Sergei Solovev](https://github.com/SeAnSolovev) for this installation script โค๏ธ + +### Quick (For web-panels) โ˜•๏ธ + +1. Select the folder where you want TorrentPier installed + ```shell + cd /path/to/public_html + ``` +2. Download the latest version of TorrentPier + ```shell + sudo git clone https://github.com/torrentpier/torrentpier.git . + ``` +3. After completing, execute the command below and follow the instructions + ```shell + php install.php + ``` +4. Voila! โœจ + +### Manual ๐Ÿ”ฉ + +1. Install [Composer](https://getcomposer.org/) +2. Run the following command to create the TorrentPier project + ```shell + composer create-project torrentpier/torrentpier + ``` +3. [Check our system requirements](#-requirements) +4. After, run this command in the project directory to install Composer dependencies + ```shell + composer install + ``` +5. Edit database configuration settings in the environment (`.env.example`), after, rename to `.env` +6. Create a database and run migrations to set up the schema + ```shell + php vendor/bin/phinx migrate --configuration=phinx.php + ``` +7. Provide write permissions to the specified folders: + * `data/avatars`, `data/uploads`, `data/uploads/thumbs` + * `internal_data/atom`, `internal_data/cache`, `internal_data/log`, `internal_data/triggers` + * `sitemap` +8. Voila! โœจ + +> [!TIP] +> You can automate steps 4-7 by running `php install.php` instead, which will guide you through the setup process interactively. + +> [!IMPORTANT] +> The specific settings depend on the server you are using, but in general we recommend chmod **0755** for folders, and chmod **0644** for the files in them. + +### Additional steps ๐Ÿ‘ฃ + +1. Edit these files: + * `favicon.png` (change to your own) + * `robots.txt` (change the addresses in lines `Host` and `Sitemap` to your own) +2. Log in to the forum using the **admin/admin** login/password, and finish setting up via admin panel. Don't forget to change your password! + +## ๐Ÿ” Security vulnerabilities + +If you discover a security vulnerability within TorrentPier, please follow our [security policy](https://github.com/torrentpier/torrentpier/security/policy), so we can address it promptly. + +## ๐Ÿงช Testing + +TorrentPier includes a comprehensive testing suite built with **Pest PHP**. Run tests to ensure code quality and system reliability: + +```shell +# Run all tests +./vendor/bin/pest + +# Run with coverage +./vendor/bin/pest --coverage +``` + +For detailed testing documentation, see [tests/README.md](tests/README.md). + +## ๐Ÿ“Œ Our recommendations + +* *It's recommended to run `cron.php`.* - For significant tracker speed increase it may be required to replace the built-in cron.php with an operating system daemon. +* *Local configuration copy.* - You can override the settings using the local configuration file `library/config.local.php`. + +## ๐Ÿ’š Contributing / Contributors + +Please read our [contributing policy](CONTRIBUTING.md) and [code of conduct](CODE_OF_CONDUCT.md) for details, and the process for +submitting pull requests to us. But we are always ready to review your pull-request for compliance with +these requirements. Just send it! + + + Contributors + + +Made with [contrib.rocks](https://contrib.rocks). + +## ๐Ÿ’ž Sponsoring + +Support this project by becoming a sponsor or a backer. + +[![OpenCollective sponsors](https://opencollective.com/torrentpier/sponsors/badge.svg)](https://opencollective.com/torrentpier) +[![OpenCollective backers](https://opencollective.com/torrentpier/backers/badge.svg)](https://opencollective.com/torrentpier) + +
+ Monero + +``` +42zJE3FDvN8foP9QYgDrBjgtd7h2FipGCGmAcmG5VFQuRkJBGMbCvoLSmivepmAMEgik2E8MPWUzKaoYsGCtmhvL7ZN73jh +``` +
+ +
+ YooMoney + +``` +4100118022415720 +``` +
+ +## ๐Ÿ“ฆ Versioning + +We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/torrentpier/torrentpier/tags). + +## ๐Ÿ“– License + +This project is licensed under the MIT License - see the [LICENSE](https://github.com/torrentpier/torrentpier/blob/master/LICENSE) file for details. diff --git a/SECURITY.md b/legacy/SECURITY.md similarity index 100% rename from SECURITY.md rename to legacy/SECURITY.md diff --git a/UPGRADE_GUIDE.md b/legacy/UPGRADE_GUIDE.md similarity index 100% rename from UPGRADE_GUIDE.md rename to legacy/UPGRADE_GUIDE.md diff --git a/admin/admin_attach_cp.php b/legacy/admin/admin_attach_cp.php similarity index 100% rename from admin/admin_attach_cp.php rename to legacy/admin/admin_attach_cp.php diff --git a/admin/admin_attachments.php b/legacy/admin/admin_attachments.php similarity index 100% rename from admin/admin_attachments.php rename to legacy/admin/admin_attachments.php diff --git a/admin/admin_board.php b/legacy/admin/admin_board.php similarity index 100% rename from admin/admin_board.php rename to legacy/admin/admin_board.php diff --git a/admin/admin_bt_forum_cfg.php b/legacy/admin/admin_bt_forum_cfg.php similarity index 100% rename from admin/admin_bt_forum_cfg.php rename to legacy/admin/admin_bt_forum_cfg.php diff --git a/admin/admin_cron.php b/legacy/admin/admin_cron.php similarity index 100% rename from admin/admin_cron.php rename to legacy/admin/admin_cron.php diff --git a/admin/admin_disallow.php b/legacy/admin/admin_disallow.php similarity index 100% rename from admin/admin_disallow.php rename to legacy/admin/admin_disallow.php diff --git a/admin/admin_extensions.php b/legacy/admin/admin_extensions.php similarity index 100% rename from admin/admin_extensions.php rename to legacy/admin/admin_extensions.php diff --git a/admin/admin_forum_prune.php b/legacy/admin/admin_forum_prune.php similarity index 100% rename from admin/admin_forum_prune.php rename to legacy/admin/admin_forum_prune.php diff --git a/admin/admin_forumauth.php b/legacy/admin/admin_forumauth.php similarity index 100% rename from admin/admin_forumauth.php rename to legacy/admin/admin_forumauth.php diff --git a/admin/admin_forumauth_list.php b/legacy/admin/admin_forumauth_list.php similarity index 100% rename from admin/admin_forumauth_list.php rename to legacy/admin/admin_forumauth_list.php diff --git a/admin/admin_forums.php b/legacy/admin/admin_forums.php similarity index 100% rename from admin/admin_forums.php rename to legacy/admin/admin_forums.php diff --git a/admin/admin_groups.php b/legacy/admin/admin_groups.php similarity index 100% rename from admin/admin_groups.php rename to legacy/admin/admin_groups.php diff --git a/admin/admin_log.php b/legacy/admin/admin_log.php similarity index 100% rename from admin/admin_log.php rename to legacy/admin/admin_log.php diff --git a/admin/admin_mass_email.php b/legacy/admin/admin_mass_email.php similarity index 100% rename from admin/admin_mass_email.php rename to legacy/admin/admin_mass_email.php diff --git a/admin/admin_migrations.php b/legacy/admin/admin_migrations.php similarity index 100% rename from admin/admin_migrations.php rename to legacy/admin/admin_migrations.php diff --git a/admin/admin_phpinfo.php b/legacy/admin/admin_phpinfo.php similarity index 100% rename from admin/admin_phpinfo.php rename to legacy/admin/admin_phpinfo.php diff --git a/admin/admin_ranks.php b/legacy/admin/admin_ranks.php similarity index 100% rename from admin/admin_ranks.php rename to legacy/admin/admin_ranks.php diff --git a/admin/admin_rebuild_search.php b/legacy/admin/admin_rebuild_search.php similarity index 100% rename from admin/admin_rebuild_search.php rename to legacy/admin/admin_rebuild_search.php diff --git a/admin/admin_robots.php b/legacy/admin/admin_robots.php similarity index 100% rename from admin/admin_robots.php rename to legacy/admin/admin_robots.php diff --git a/admin/admin_sitemap.php b/legacy/admin/admin_sitemap.php similarity index 100% rename from admin/admin_sitemap.php rename to legacy/admin/admin_sitemap.php diff --git a/admin/admin_smilies.php b/legacy/admin/admin_smilies.php similarity index 100% rename from admin/admin_smilies.php rename to legacy/admin/admin_smilies.php diff --git a/admin/admin_terms.php b/legacy/admin/admin_terms.php similarity index 100% rename from admin/admin_terms.php rename to legacy/admin/admin_terms.php diff --git a/admin/admin_ug_auth.php b/legacy/admin/admin_ug_auth.php similarity index 100% rename from admin/admin_ug_auth.php rename to legacy/admin/admin_ug_auth.php diff --git a/admin/admin_user_ban.php b/legacy/admin/admin_user_ban.php similarity index 100% rename from admin/admin_user_ban.php rename to legacy/admin/admin_user_ban.php diff --git a/admin/admin_user_search.php b/legacy/admin/admin_user_search.php similarity index 100% rename from admin/admin_user_search.php rename to legacy/admin/admin_user_search.php diff --git a/admin/admin_words.php b/legacy/admin/admin_words.php similarity index 100% rename from admin/admin_words.php rename to legacy/admin/admin_words.php diff --git a/admin/index.php b/legacy/admin/index.php similarity index 100% rename from admin/index.php rename to legacy/admin/index.php diff --git a/admin/pagestart.php b/legacy/admin/pagestart.php similarity index 100% rename from admin/pagestart.php rename to legacy/admin/pagestart.php diff --git a/admin/stats/tr_stats.php b/legacy/admin/stats/tr_stats.php similarity index 100% rename from admin/stats/tr_stats.php rename to legacy/admin/stats/tr_stats.php diff --git a/admin/stats/tracker.php b/legacy/admin/stats/tracker.php similarity index 100% rename from admin/stats/tracker.php rename to legacy/admin/stats/tracker.php diff --git a/ajax.php b/legacy/ajax.php similarity index 100% rename from ajax.php rename to legacy/ajax.php diff --git a/bt/announce.php b/legacy/bt/announce.php similarity index 100% rename from bt/announce.php rename to legacy/bt/announce.php diff --git a/bt/includes/init_tr.php b/legacy/bt/includes/init_tr.php similarity index 100% rename from bt/includes/init_tr.php rename to legacy/bt/includes/init_tr.php diff --git a/bt/index.php b/legacy/bt/index.php similarity index 100% rename from bt/index.php rename to legacy/bt/index.php diff --git a/bt/scrape.php b/legacy/bt/scrape.php similarity index 100% rename from bt/scrape.php rename to legacy/bt/scrape.php diff --git a/common.php b/legacy/common.php similarity index 100% rename from common.php rename to legacy/common.php diff --git a/composer.json b/legacy/composer.json similarity index 100% rename from composer.json rename to legacy/composer.json diff --git a/composer.lock b/legacy/composer.lock similarity index 100% rename from composer.lock rename to legacy/composer.lock diff --git a/cron.php b/legacy/cron.php similarity index 100% rename from cron.php rename to legacy/cron.php diff --git a/data/avatars/gallery/bot.gif b/legacy/data/avatars/gallery/bot.gif similarity index 100% rename from data/avatars/gallery/bot.gif rename to legacy/data/avatars/gallery/bot.gif diff --git a/data/avatars/gallery/noavatar.png b/legacy/data/avatars/gallery/noavatar.png similarity index 100% rename from data/avatars/gallery/noavatar.png rename to legacy/data/avatars/gallery/noavatar.png diff --git a/config/environments/.keep b/legacy/data/uploads/thumbs/.keep similarity index 100% rename from config/environments/.keep rename to legacy/data/uploads/thumbs/.keep diff --git a/dl.php b/legacy/dl.php similarity index 100% rename from dl.php rename to legacy/dl.php diff --git a/dl_list.php b/legacy/dl_list.php similarity index 100% rename from dl_list.php rename to legacy/dl_list.php diff --git a/favicon.png b/legacy/favicon.png similarity index 100% rename from favicon.png rename to legacy/favicon.png diff --git a/feed.php b/legacy/feed.php similarity index 100% rename from feed.php rename to legacy/feed.php diff --git a/filelist.php b/legacy/filelist.php similarity index 100% rename from filelist.php rename to legacy/filelist.php diff --git a/group.php b/legacy/group.php similarity index 100% rename from group.php rename to legacy/group.php diff --git a/group_edit.php b/legacy/group_edit.php similarity index 100% rename from group_edit.php rename to legacy/group_edit.php diff --git a/index.php b/legacy/index.php similarity index 100% rename from index.php rename to legacy/index.php diff --git a/info.php b/legacy/info.php similarity index 100% rename from info.php rename to legacy/info.php diff --git a/data/uploads/thumbs/.keep b/legacy/internal_data/atom/.keep similarity index 100% rename from data/uploads/thumbs/.keep rename to legacy/internal_data/atom/.keep diff --git a/internal_data/atom/.keep b/legacy/internal_data/cache/.keep similarity index 100% rename from internal_data/atom/.keep rename to legacy/internal_data/cache/.keep diff --git a/internal_data/cache/.keep b/legacy/internal_data/log/.keep similarity index 100% rename from internal_data/cache/.keep rename to legacy/internal_data/log/.keep diff --git a/internal_data/triggers/$on b/legacy/internal_data/triggers/$on similarity index 100% rename from internal_data/triggers/$on rename to legacy/internal_data/triggers/$on diff --git a/library/ajax/avatar.php b/legacy/library/ajax/avatar.php similarity index 100% rename from library/ajax/avatar.php rename to legacy/library/ajax/avatar.php diff --git a/library/ajax/callseed.php b/legacy/library/ajax/callseed.php similarity index 100% rename from library/ajax/callseed.php rename to legacy/library/ajax/callseed.php diff --git a/library/ajax/change_tor_status.php b/legacy/library/ajax/change_tor_status.php similarity index 100% rename from library/ajax/change_tor_status.php rename to legacy/library/ajax/change_tor_status.php diff --git a/library/ajax/change_torrent.php b/legacy/library/ajax/change_torrent.php similarity index 100% rename from library/ajax/change_torrent.php rename to legacy/library/ajax/change_torrent.php diff --git a/library/ajax/change_user_opt.php b/legacy/library/ajax/change_user_opt.php similarity index 100% rename from library/ajax/change_user_opt.php rename to legacy/library/ajax/change_user_opt.php diff --git a/library/ajax/change_user_rank.php b/legacy/library/ajax/change_user_rank.php similarity index 100% rename from library/ajax/change_user_rank.php rename to legacy/library/ajax/change_user_rank.php diff --git a/library/ajax/edit_group_profile.php b/legacy/library/ajax/edit_group_profile.php similarity index 100% rename from library/ajax/edit_group_profile.php rename to legacy/library/ajax/edit_group_profile.php diff --git a/library/ajax/edit_user_profile.php b/legacy/library/ajax/edit_user_profile.php similarity index 100% rename from library/ajax/edit_user_profile.php rename to legacy/library/ajax/edit_user_profile.php diff --git a/library/ajax/ffprobe_info.php b/legacy/library/ajax/ffprobe_info.php similarity index 100% rename from library/ajax/ffprobe_info.php rename to legacy/library/ajax/ffprobe_info.php diff --git a/library/ajax/group_membership.php b/legacy/library/ajax/group_membership.php similarity index 100% rename from library/ajax/group_membership.php rename to legacy/library/ajax/group_membership.php diff --git a/library/ajax/index_data.php b/legacy/library/ajax/index_data.php similarity index 100% rename from library/ajax/index_data.php rename to legacy/library/ajax/index_data.php diff --git a/library/ajax/manage_admin.php b/legacy/library/ajax/manage_admin.php similarity index 100% rename from library/ajax/manage_admin.php rename to legacy/library/ajax/manage_admin.php diff --git a/library/ajax/manage_user.php b/legacy/library/ajax/manage_user.php similarity index 100% rename from library/ajax/manage_user.php rename to legacy/library/ajax/manage_user.php diff --git a/library/ajax/mod_action.php b/legacy/library/ajax/mod_action.php similarity index 100% rename from library/ajax/mod_action.php rename to legacy/library/ajax/mod_action.php diff --git a/library/ajax/passkey.php b/legacy/library/ajax/passkey.php similarity index 100% rename from library/ajax/passkey.php rename to legacy/library/ajax/passkey.php diff --git a/library/ajax/post_mod_comment.php b/legacy/library/ajax/post_mod_comment.php similarity index 100% rename from library/ajax/post_mod_comment.php rename to legacy/library/ajax/post_mod_comment.php diff --git a/library/ajax/posts.php b/legacy/library/ajax/posts.php similarity index 100% rename from library/ajax/posts.php rename to legacy/library/ajax/posts.php diff --git a/library/ajax/sitemap.php b/legacy/library/ajax/sitemap.php similarity index 100% rename from library/ajax/sitemap.php rename to legacy/library/ajax/sitemap.php diff --git a/library/ajax/thanks.php b/legacy/library/ajax/thanks.php similarity index 100% rename from library/ajax/thanks.php rename to legacy/library/ajax/thanks.php diff --git a/library/ajax/topic_tpl.php b/legacy/library/ajax/topic_tpl.php similarity index 100% rename from library/ajax/topic_tpl.php rename to legacy/library/ajax/topic_tpl.php diff --git a/library/ajax/user_register.php b/legacy/library/ajax/user_register.php similarity index 100% rename from library/ajax/user_register.php rename to legacy/library/ajax/user_register.php diff --git a/library/ajax/view_post.php b/legacy/library/ajax/view_post.php similarity index 100% rename from library/ajax/view_post.php rename to legacy/library/ajax/view_post.php diff --git a/library/ajax/view_torrent.php b/legacy/library/ajax/view_torrent.php similarity index 100% rename from library/ajax/view_torrent.php rename to legacy/library/ajax/view_torrent.php diff --git a/library/attach_mod/attachment_mod.php b/legacy/library/attach_mod/attachment_mod.php similarity index 100% rename from library/attach_mod/attachment_mod.php rename to legacy/library/attach_mod/attachment_mod.php diff --git a/library/attach_mod/displaying.php b/legacy/library/attach_mod/displaying.php similarity index 100% rename from library/attach_mod/displaying.php rename to legacy/library/attach_mod/displaying.php diff --git a/library/attach_mod/displaying_torrent.php b/legacy/library/attach_mod/displaying_torrent.php similarity index 100% rename from library/attach_mod/displaying_torrent.php rename to legacy/library/attach_mod/displaying_torrent.php diff --git a/library/attach_mod/includes/functions_admin.php b/legacy/library/attach_mod/includes/functions_admin.php similarity index 100% rename from library/attach_mod/includes/functions_admin.php rename to legacy/library/attach_mod/includes/functions_admin.php diff --git a/library/attach_mod/includes/functions_attach.php b/legacy/library/attach_mod/includes/functions_attach.php similarity index 100% rename from library/attach_mod/includes/functions_attach.php rename to legacy/library/attach_mod/includes/functions_attach.php diff --git a/library/attach_mod/includes/functions_delete.php b/legacy/library/attach_mod/includes/functions_delete.php similarity index 100% rename from library/attach_mod/includes/functions_delete.php rename to legacy/library/attach_mod/includes/functions_delete.php diff --git a/library/attach_mod/includes/functions_includes.php b/legacy/library/attach_mod/includes/functions_includes.php similarity index 100% rename from library/attach_mod/includes/functions_includes.php rename to legacy/library/attach_mod/includes/functions_includes.php diff --git a/library/attach_mod/includes/functions_selects.php b/legacy/library/attach_mod/includes/functions_selects.php similarity index 100% rename from library/attach_mod/includes/functions_selects.php rename to legacy/library/attach_mod/includes/functions_selects.php diff --git a/library/attach_mod/includes/functions_thumbs.php b/legacy/library/attach_mod/includes/functions_thumbs.php similarity index 100% rename from library/attach_mod/includes/functions_thumbs.php rename to legacy/library/attach_mod/includes/functions_thumbs.php diff --git a/library/attach_mod/posting_attachments.php b/legacy/library/attach_mod/posting_attachments.php similarity index 100% rename from library/attach_mod/posting_attachments.php rename to legacy/library/attach_mod/posting_attachments.php diff --git a/library/config.php b/legacy/library/config.php similarity index 100% rename from library/config.php rename to legacy/library/config.php diff --git a/library/defines.php b/legacy/library/defines.php similarity index 100% rename from library/defines.php rename to legacy/library/defines.php diff --git a/library/includes/bbcode.php b/legacy/library/includes/bbcode.php similarity index 100% rename from library/includes/bbcode.php rename to legacy/library/includes/bbcode.php diff --git a/library/includes/cron/cron_check.php b/legacy/library/includes/cron/cron_check.php similarity index 100% rename from library/includes/cron/cron_check.php rename to legacy/library/includes/cron/cron_check.php diff --git a/library/includes/cron/cron_run.php b/legacy/library/includes/cron/cron_run.php similarity index 100% rename from library/includes/cron/cron_run.php rename to legacy/library/includes/cron/cron_run.php diff --git a/library/includes/cron/jobs/attach_maintenance.php b/legacy/library/includes/cron/jobs/attach_maintenance.php similarity index 100% rename from library/includes/cron/jobs/attach_maintenance.php rename to legacy/library/includes/cron/jobs/attach_maintenance.php diff --git a/library/includes/cron/jobs/board_maintenance.php b/legacy/library/includes/cron/jobs/board_maintenance.php similarity index 100% rename from library/includes/cron/jobs/board_maintenance.php rename to legacy/library/includes/cron/jobs/board_maintenance.php diff --git a/library/includes/cron/jobs/clean_dlstat.php b/legacy/library/includes/cron/jobs/clean_dlstat.php similarity index 100% rename from library/includes/cron/jobs/clean_dlstat.php rename to legacy/library/includes/cron/jobs/clean_dlstat.php diff --git a/library/includes/cron/jobs/clean_log.php b/legacy/library/includes/cron/jobs/clean_log.php similarity index 100% rename from library/includes/cron/jobs/clean_log.php rename to legacy/library/includes/cron/jobs/clean_log.php diff --git a/library/includes/cron/jobs/clean_pm.php b/legacy/library/includes/cron/jobs/clean_pm.php similarity index 100% rename from library/includes/cron/jobs/clean_pm.php rename to legacy/library/includes/cron/jobs/clean_pm.php diff --git a/library/includes/cron/jobs/clean_search_results.php b/legacy/library/includes/cron/jobs/clean_search_results.php similarity index 100% rename from library/includes/cron/jobs/clean_search_results.php rename to legacy/library/includes/cron/jobs/clean_search_results.php diff --git a/library/includes/cron/jobs/ds_update_cat_forums.php b/legacy/library/includes/cron/jobs/ds_update_cat_forums.php similarity index 100% rename from library/includes/cron/jobs/ds_update_cat_forums.php rename to legacy/library/includes/cron/jobs/ds_update_cat_forums.php diff --git a/library/includes/cron/jobs/ds_update_stats.php b/legacy/library/includes/cron/jobs/ds_update_stats.php similarity index 100% rename from library/includes/cron/jobs/ds_update_stats.php rename to legacy/library/includes/cron/jobs/ds_update_stats.php diff --git a/library/includes/cron/jobs/flash_topic_view.php b/legacy/library/includes/cron/jobs/flash_topic_view.php similarity index 100% rename from library/includes/cron/jobs/flash_topic_view.php rename to legacy/library/includes/cron/jobs/flash_topic_view.php diff --git a/library/includes/cron/jobs/prune_forums.php b/legacy/library/includes/cron/jobs/prune_forums.php similarity index 100% rename from library/includes/cron/jobs/prune_forums.php rename to legacy/library/includes/cron/jobs/prune_forums.php diff --git a/library/includes/cron/jobs/prune_inactive_users.php b/legacy/library/includes/cron/jobs/prune_inactive_users.php similarity index 100% rename from library/includes/cron/jobs/prune_inactive_users.php rename to legacy/library/includes/cron/jobs/prune_inactive_users.php diff --git a/library/includes/cron/jobs/prune_topic_moved.php b/legacy/library/includes/cron/jobs/prune_topic_moved.php similarity index 100% rename from library/includes/cron/jobs/prune_topic_moved.php rename to legacy/library/includes/cron/jobs/prune_topic_moved.php diff --git a/library/includes/cron/jobs/sessions_cleanup.php b/legacy/library/includes/cron/jobs/sessions_cleanup.php similarity index 100% rename from library/includes/cron/jobs/sessions_cleanup.php rename to legacy/library/includes/cron/jobs/sessions_cleanup.php diff --git a/library/includes/cron/jobs/sitemap.php b/legacy/library/includes/cron/jobs/sitemap.php similarity index 100% rename from library/includes/cron/jobs/sitemap.php rename to legacy/library/includes/cron/jobs/sitemap.php diff --git a/library/includes/cron/jobs/tr_cleanup_and_dlstat.php b/legacy/library/includes/cron/jobs/tr_cleanup_and_dlstat.php similarity index 100% rename from library/includes/cron/jobs/tr_cleanup_and_dlstat.php rename to legacy/library/includes/cron/jobs/tr_cleanup_and_dlstat.php diff --git a/library/includes/cron/jobs/tr_complete_count.php b/legacy/library/includes/cron/jobs/tr_complete_count.php similarity index 100% rename from library/includes/cron/jobs/tr_complete_count.php rename to legacy/library/includes/cron/jobs/tr_complete_count.php diff --git a/library/includes/cron/jobs/tr_maintenance.php b/legacy/library/includes/cron/jobs/tr_maintenance.php similarity index 100% rename from library/includes/cron/jobs/tr_maintenance.php rename to legacy/library/includes/cron/jobs/tr_maintenance.php diff --git a/library/includes/cron/jobs/tr_make_snapshot.php b/legacy/library/includes/cron/jobs/tr_make_snapshot.php similarity index 100% rename from library/includes/cron/jobs/tr_make_snapshot.php rename to legacy/library/includes/cron/jobs/tr_make_snapshot.php diff --git a/library/includes/cron/jobs/tr_seed_bonus.php b/legacy/library/includes/cron/jobs/tr_seed_bonus.php similarity index 100% rename from library/includes/cron/jobs/tr_seed_bonus.php rename to legacy/library/includes/cron/jobs/tr_seed_bonus.php diff --git a/library/includes/cron/jobs/tr_update_seeder_last_seen.php b/legacy/library/includes/cron/jobs/tr_update_seeder_last_seen.php similarity index 100% rename from library/includes/cron/jobs/tr_update_seeder_last_seen.php rename to legacy/library/includes/cron/jobs/tr_update_seeder_last_seen.php diff --git a/library/includes/cron/jobs/update_forums_atom.php b/legacy/library/includes/cron/jobs/update_forums_atom.php similarity index 100% rename from library/includes/cron/jobs/update_forums_atom.php rename to legacy/library/includes/cron/jobs/update_forums_atom.php diff --git a/library/includes/datastore/build_attach_extensions.php b/legacy/library/includes/datastore/build_attach_extensions.php similarity index 100% rename from library/includes/datastore/build_attach_extensions.php rename to legacy/library/includes/datastore/build_attach_extensions.php diff --git a/library/includes/datastore/build_bans.php b/legacy/library/includes/datastore/build_bans.php similarity index 100% rename from library/includes/datastore/build_bans.php rename to legacy/library/includes/datastore/build_bans.php diff --git a/library/includes/datastore/build_cat_forums.php b/legacy/library/includes/datastore/build_cat_forums.php similarity index 100% rename from library/includes/datastore/build_cat_forums.php rename to legacy/library/includes/datastore/build_cat_forums.php diff --git a/library/includes/datastore/build_censor.php b/legacy/library/includes/datastore/build_censor.php similarity index 100% rename from library/includes/datastore/build_censor.php rename to legacy/library/includes/datastore/build_censor.php diff --git a/library/includes/datastore/build_check_updates.php b/legacy/library/includes/datastore/build_check_updates.php similarity index 100% rename from library/includes/datastore/build_check_updates.php rename to legacy/library/includes/datastore/build_check_updates.php diff --git a/library/includes/datastore/build_moderators.php b/legacy/library/includes/datastore/build_moderators.php similarity index 100% rename from library/includes/datastore/build_moderators.php rename to legacy/library/includes/datastore/build_moderators.php diff --git a/library/includes/datastore/build_ranks.php b/legacy/library/includes/datastore/build_ranks.php similarity index 100% rename from library/includes/datastore/build_ranks.php rename to legacy/library/includes/datastore/build_ranks.php diff --git a/library/includes/datastore/build_smilies.php b/legacy/library/includes/datastore/build_smilies.php similarity index 100% rename from library/includes/datastore/build_smilies.php rename to legacy/library/includes/datastore/build_smilies.php diff --git a/library/includes/datastore/build_stats.php b/legacy/library/includes/datastore/build_stats.php similarity index 100% rename from library/includes/datastore/build_stats.php rename to legacy/library/includes/datastore/build_stats.php diff --git a/library/includes/functions.php b/legacy/library/includes/functions.php similarity index 100% rename from library/includes/functions.php rename to legacy/library/includes/functions.php diff --git a/library/includes/functions_cli.php b/legacy/library/includes/functions_cli.php similarity index 100% rename from library/includes/functions_cli.php rename to legacy/library/includes/functions_cli.php diff --git a/library/includes/init_bb.php b/legacy/library/includes/init_bb.php similarity index 100% rename from library/includes/init_bb.php rename to legacy/library/includes/init_bb.php diff --git a/library/includes/online_userlist.php b/legacy/library/includes/online_userlist.php similarity index 100% rename from library/includes/online_userlist.php rename to legacy/library/includes/online_userlist.php diff --git a/library/includes/page_footer.php b/legacy/library/includes/page_footer.php similarity index 100% rename from library/includes/page_footer.php rename to legacy/library/includes/page_footer.php diff --git a/library/includes/page_footer_dev.php b/legacy/library/includes/page_footer_dev.php similarity index 100% rename from library/includes/page_footer_dev.php rename to legacy/library/includes/page_footer_dev.php diff --git a/library/includes/page_header.php b/legacy/library/includes/page_header.php similarity index 100% rename from library/includes/page_header.php rename to legacy/library/includes/page_header.php diff --git a/library/includes/posting_tpl.php b/legacy/library/includes/posting_tpl.php similarity index 100% rename from library/includes/posting_tpl.php rename to legacy/library/includes/posting_tpl.php diff --git a/library/includes/torrent_announce_urls.php b/legacy/library/includes/torrent_announce_urls.php similarity index 100% rename from library/includes/torrent_announce_urls.php rename to legacy/library/includes/torrent_announce_urls.php diff --git a/library/includes/torrent_show_dl_list.php b/legacy/library/includes/torrent_show_dl_list.php similarity index 100% rename from library/includes/torrent_show_dl_list.php rename to legacy/library/includes/torrent_show_dl_list.php diff --git a/library/includes/ucp/activate.php b/legacy/library/includes/ucp/activate.php similarity index 100% rename from library/includes/ucp/activate.php rename to legacy/library/includes/ucp/activate.php diff --git a/library/includes/ucp/bonus.php b/legacy/library/includes/ucp/bonus.php similarity index 100% rename from library/includes/ucp/bonus.php rename to legacy/library/includes/ucp/bonus.php diff --git a/library/includes/ucp/email.php b/legacy/library/includes/ucp/email.php similarity index 100% rename from library/includes/ucp/email.php rename to legacy/library/includes/ucp/email.php diff --git a/library/includes/ucp/register.php b/legacy/library/includes/ucp/register.php similarity index 100% rename from library/includes/ucp/register.php rename to legacy/library/includes/ucp/register.php diff --git a/library/includes/ucp/sendpasswd.php b/legacy/library/includes/ucp/sendpasswd.php similarity index 100% rename from library/includes/ucp/sendpasswd.php rename to legacy/library/includes/ucp/sendpasswd.php diff --git a/library/includes/ucp/topic_watch.php b/legacy/library/includes/ucp/topic_watch.php similarity index 100% rename from library/includes/ucp/topic_watch.php rename to legacy/library/includes/ucp/topic_watch.php diff --git a/library/includes/ucp/viewprofile.php b/legacy/library/includes/ucp/viewprofile.php similarity index 100% rename from library/includes/ucp/viewprofile.php rename to legacy/library/includes/ucp/viewprofile.php diff --git a/library/includes/ucp/viewtorrent.php b/legacy/library/includes/ucp/viewtorrent.php similarity index 100% rename from library/includes/ucp/viewtorrent.php rename to legacy/library/includes/ucp/viewtorrent.php diff --git a/library/language/en/email/admin_send_email.html b/legacy/library/language/en/email/admin_send_email.html similarity index 100% rename from library/language/en/email/admin_send_email.html rename to legacy/library/language/en/email/admin_send_email.html diff --git a/library/language/en/email/blank.html b/legacy/library/language/en/email/blank.html similarity index 100% rename from library/language/en/email/blank.html rename to legacy/library/language/en/email/blank.html diff --git a/library/language/en/email/group_added.html b/legacy/library/language/en/email/group_added.html similarity index 100% rename from library/language/en/email/group_added.html rename to legacy/library/language/en/email/group_added.html diff --git a/library/language/en/email/group_approved.html b/legacy/library/language/en/email/group_approved.html similarity index 100% rename from library/language/en/email/group_approved.html rename to legacy/library/language/en/email/group_approved.html diff --git a/library/language/en/email/group_request.html b/legacy/library/language/en/email/group_request.html similarity index 100% rename from library/language/en/email/group_request.html rename to legacy/library/language/en/email/group_request.html diff --git a/library/language/en/email/privmsg_notify.html b/legacy/library/language/en/email/privmsg_notify.html similarity index 100% rename from library/language/en/email/privmsg_notify.html rename to legacy/library/language/en/email/privmsg_notify.html diff --git a/library/language/en/email/profile_send_email.html b/legacy/library/language/en/email/profile_send_email.html similarity index 100% rename from library/language/en/email/profile_send_email.html rename to legacy/library/language/en/email/profile_send_email.html diff --git a/library/language/en/email/topic_notify.html b/legacy/library/language/en/email/topic_notify.html similarity index 100% rename from library/language/en/email/topic_notify.html rename to legacy/library/language/en/email/topic_notify.html diff --git a/library/language/en/email/user_activate.html b/legacy/library/language/en/email/user_activate.html similarity index 100% rename from library/language/en/email/user_activate.html rename to legacy/library/language/en/email/user_activate.html diff --git a/library/language/en/email/user_activate_passwd.html b/legacy/library/language/en/email/user_activate_passwd.html similarity index 100% rename from library/language/en/email/user_activate_passwd.html rename to legacy/library/language/en/email/user_activate_passwd.html diff --git a/library/language/en/email/user_welcome.html b/legacy/library/language/en/email/user_welcome.html similarity index 100% rename from library/language/en/email/user_welcome.html rename to legacy/library/language/en/email/user_welcome.html diff --git a/library/language/en/email/user_welcome_inactive.html b/legacy/library/language/en/email/user_welcome_inactive.html similarity index 100% rename from library/language/en/email/user_welcome_inactive.html rename to legacy/library/language/en/email/user_welcome_inactive.html diff --git a/library/language/en/html/advert.html b/legacy/library/language/en/html/advert.html similarity index 100% rename from library/language/en/html/advert.html rename to legacy/library/language/en/html/advert.html diff --git a/library/language/en/html/copyright_holders.html b/legacy/library/language/en/html/copyright_holders.html similarity index 100% rename from library/language/en/html/copyright_holders.html rename to legacy/library/language/en/html/copyright_holders.html diff --git a/library/language/en/html/not_found.html b/legacy/library/language/en/html/not_found.html similarity index 100% rename from library/language/en/html/not_found.html rename to legacy/library/language/en/html/not_found.html diff --git a/library/language/en/html/sidebar1.html b/legacy/library/language/en/html/sidebar1.html similarity index 100% rename from library/language/en/html/sidebar1.html rename to legacy/library/language/en/html/sidebar1.html diff --git a/library/language/en/html/sidebar2.html b/legacy/library/language/en/html/sidebar2.html similarity index 100% rename from library/language/en/html/sidebar2.html rename to legacy/library/language/en/html/sidebar2.html diff --git a/library/language/en/html/user_agreement.html b/legacy/library/language/en/html/user_agreement.html similarity index 100% rename from library/language/en/html/user_agreement.html rename to legacy/library/language/en/html/user_agreement.html diff --git a/library/language/en/main.php b/legacy/library/language/en/main.php similarity index 100% rename from library/language/en/main.php rename to legacy/library/language/en/main.php diff --git a/login.php b/legacy/login.php similarity index 100% rename from login.php rename to legacy/login.php diff --git a/memberlist.php b/legacy/memberlist.php similarity index 100% rename from memberlist.php rename to legacy/memberlist.php diff --git a/migrations/20250619000001_initial_schema.php b/legacy/migrations/20250619000001_initial_schema.php similarity index 100% rename from migrations/20250619000001_initial_schema.php rename to legacy/migrations/20250619000001_initial_schema.php diff --git a/migrations/20250619000002_seed_initial_data.php b/legacy/migrations/20250619000002_seed_initial_data.php similarity index 100% rename from migrations/20250619000002_seed_initial_data.php rename to legacy/migrations/20250619000002_seed_initial_data.php diff --git a/migrations/20250620001449_remove_demo_mode.php b/legacy/migrations/20250620001449_remove_demo_mode.php similarity index 100% rename from migrations/20250620001449_remove_demo_mode.php rename to legacy/migrations/20250620001449_remove_demo_mode.php diff --git a/modcp.php b/legacy/modcp.php similarity index 100% rename from modcp.php rename to legacy/modcp.php diff --git a/phinx.php b/legacy/phinx.php similarity index 100% rename from phinx.php rename to legacy/phinx.php diff --git a/playback_m3u.php b/legacy/playback_m3u.php similarity index 100% rename from playback_m3u.php rename to legacy/playback_m3u.php diff --git a/poll.php b/legacy/poll.php similarity index 100% rename from poll.php rename to legacy/poll.php diff --git a/posting.php b/legacy/posting.php similarity index 100% rename from posting.php rename to legacy/posting.php diff --git a/privmsg.php b/legacy/privmsg.php similarity index 100% rename from privmsg.php rename to legacy/privmsg.php diff --git a/profile.php b/legacy/profile.php similarity index 100% rename from profile.php rename to legacy/profile.php diff --git a/robots.txt b/legacy/robots.txt similarity index 100% rename from robots.txt rename to legacy/robots.txt diff --git a/search.php b/legacy/search.php similarity index 100% rename from search.php rename to legacy/search.php diff --git a/src/Ajax.php b/legacy/src/Ajax.php similarity index 100% rename from src/Ajax.php rename to legacy/src/Ajax.php diff --git a/src/Cache/CacheManager.php b/legacy/src/Cache/CacheManager.php similarity index 100% rename from src/Cache/CacheManager.php rename to legacy/src/Cache/CacheManager.php diff --git a/src/Cache/DatastoreManager.php b/legacy/src/Cache/DatastoreManager.php similarity index 100% rename from src/Cache/DatastoreManager.php rename to legacy/src/Cache/DatastoreManager.php diff --git a/src/Cache/UnifiedCacheSystem.php b/legacy/src/Cache/UnifiedCacheSystem.php similarity index 100% rename from src/Cache/UnifiedCacheSystem.php rename to legacy/src/Cache/UnifiedCacheSystem.php diff --git a/src/Captcha/CaptchaInterface.php b/legacy/src/Captcha/CaptchaInterface.php similarity index 100% rename from src/Captcha/CaptchaInterface.php rename to legacy/src/Captcha/CaptchaInterface.php diff --git a/src/Captcha/CloudflareTurnstileCaptcha.php b/legacy/src/Captcha/CloudflareTurnstileCaptcha.php similarity index 100% rename from src/Captcha/CloudflareTurnstileCaptcha.php rename to legacy/src/Captcha/CloudflareTurnstileCaptcha.php diff --git a/src/Captcha/GoogleCaptchaV2.php b/legacy/src/Captcha/GoogleCaptchaV2.php similarity index 100% rename from src/Captcha/GoogleCaptchaV2.php rename to legacy/src/Captcha/GoogleCaptchaV2.php diff --git a/src/Captcha/GoogleCaptchaV3.php b/legacy/src/Captcha/GoogleCaptchaV3.php similarity index 100% rename from src/Captcha/GoogleCaptchaV3.php rename to legacy/src/Captcha/GoogleCaptchaV3.php diff --git a/src/Captcha/HCaptcha.php b/legacy/src/Captcha/HCaptcha.php similarity index 100% rename from src/Captcha/HCaptcha.php rename to legacy/src/Captcha/HCaptcha.php diff --git a/src/Captcha/TextCaptcha.php b/legacy/src/Captcha/TextCaptcha.php similarity index 100% rename from src/Captcha/TextCaptcha.php rename to legacy/src/Captcha/TextCaptcha.php diff --git a/src/Captcha/YandexSmartCaptcha.php b/legacy/src/Captcha/YandexSmartCaptcha.php similarity index 100% rename from src/Captcha/YandexSmartCaptcha.php rename to legacy/src/Captcha/YandexSmartCaptcha.php diff --git a/src/Censor.php b/legacy/src/Censor.php similarity index 100% rename from src/Censor.php rename to legacy/src/Censor.php diff --git a/src/Config.php b/legacy/src/Config.php similarity index 100% rename from src/Config.php rename to legacy/src/Config.php diff --git a/src/Database/Database.php b/legacy/src/Database/Database.php similarity index 100% rename from src/Database/Database.php rename to legacy/src/Database/Database.php diff --git a/src/Database/DatabaseDebugger.php b/legacy/src/Database/DatabaseDebugger.php similarity index 100% rename from src/Database/DatabaseDebugger.php rename to legacy/src/Database/DatabaseDebugger.php diff --git a/src/Database/DatabaseFactory.php b/legacy/src/Database/DatabaseFactory.php similarity index 100% rename from src/Database/DatabaseFactory.php rename to legacy/src/Database/DatabaseFactory.php diff --git a/src/Database/DebugSelection.php b/legacy/src/Database/DebugSelection.php similarity index 100% rename from src/Database/DebugSelection.php rename to legacy/src/Database/DebugSelection.php diff --git a/src/Database/MigrationStatus.php b/legacy/src/Database/MigrationStatus.php similarity index 100% rename from src/Database/MigrationStatus.php rename to legacy/src/Database/MigrationStatus.php diff --git a/src/Dev.php b/legacy/src/Dev.php similarity index 100% rename from src/Dev.php rename to legacy/src/Dev.php diff --git a/src/Emailer.php b/legacy/src/Emailer.php similarity index 100% rename from src/Emailer.php rename to legacy/src/Emailer.php diff --git a/src/Env.php b/legacy/src/Env.php similarity index 100% rename from src/Env.php rename to legacy/src/Env.php diff --git a/src/Helpers/CronHelper.php b/legacy/src/Helpers/CronHelper.php similarity index 100% rename from src/Helpers/CronHelper.php rename to legacy/src/Helpers/CronHelper.php diff --git a/src/Helpers/IPHelper.php b/legacy/src/Helpers/IPHelper.php similarity index 100% rename from src/Helpers/IPHelper.php rename to legacy/src/Helpers/IPHelper.php diff --git a/src/Helpers/IsHelper.php b/legacy/src/Helpers/IsHelper.php similarity index 100% rename from src/Helpers/IsHelper.php rename to legacy/src/Helpers/IsHelper.php diff --git a/src/Helpers/StringHelper.php b/legacy/src/Helpers/StringHelper.php similarity index 100% rename from src/Helpers/StringHelper.php rename to legacy/src/Helpers/StringHelper.php diff --git a/src/Helpers/VersionHelper.php b/legacy/src/Helpers/VersionHelper.php similarity index 100% rename from src/Helpers/VersionHelper.php rename to legacy/src/Helpers/VersionHelper.php diff --git a/src/Infrastructure/DependencyInjection/Bootstrap.php b/legacy/src/Infrastructure/DependencyInjection/Bootstrap.php similarity index 100% rename from src/Infrastructure/DependencyInjection/Bootstrap.php rename to legacy/src/Infrastructure/DependencyInjection/Bootstrap.php diff --git a/src/Infrastructure/DependencyInjection/Container.php b/legacy/src/Infrastructure/DependencyInjection/Container.php similarity index 100% rename from src/Infrastructure/DependencyInjection/Container.php rename to legacy/src/Infrastructure/DependencyInjection/Container.php diff --git a/src/Infrastructure/DependencyInjection/ContainerFactory.php b/legacy/src/Infrastructure/DependencyInjection/ContainerFactory.php similarity index 100% rename from src/Infrastructure/DependencyInjection/ContainerFactory.php rename to legacy/src/Infrastructure/DependencyInjection/ContainerFactory.php diff --git a/src/Infrastructure/DependencyInjection/Definitions/ApplicationDefinitions.php b/legacy/src/Infrastructure/DependencyInjection/Definitions/ApplicationDefinitions.php similarity index 100% rename from src/Infrastructure/DependencyInjection/Definitions/ApplicationDefinitions.php rename to legacy/src/Infrastructure/DependencyInjection/Definitions/ApplicationDefinitions.php diff --git a/src/Infrastructure/DependencyInjection/Definitions/DomainDefinitions.php b/legacy/src/Infrastructure/DependencyInjection/Definitions/DomainDefinitions.php similarity index 100% rename from src/Infrastructure/DependencyInjection/Definitions/DomainDefinitions.php rename to legacy/src/Infrastructure/DependencyInjection/Definitions/DomainDefinitions.php diff --git a/src/Infrastructure/DependencyInjection/Definitions/InfrastructureDefinitions.php b/legacy/src/Infrastructure/DependencyInjection/Definitions/InfrastructureDefinitions.php similarity index 100% rename from src/Infrastructure/DependencyInjection/Definitions/InfrastructureDefinitions.php rename to legacy/src/Infrastructure/DependencyInjection/Definitions/InfrastructureDefinitions.php diff --git a/src/Infrastructure/DependencyInjection/Definitions/PresentationDefinitions.php b/legacy/src/Infrastructure/DependencyInjection/Definitions/PresentationDefinitions.php similarity index 100% rename from src/Infrastructure/DependencyInjection/Definitions/PresentationDefinitions.php rename to legacy/src/Infrastructure/DependencyInjection/Definitions/PresentationDefinitions.php diff --git a/src/Infrastructure/DependencyInjection/ServiceProvider.php b/legacy/src/Infrastructure/DependencyInjection/ServiceProvider.php similarity index 100% rename from src/Infrastructure/DependencyInjection/ServiceProvider.php rename to legacy/src/Infrastructure/DependencyInjection/ServiceProvider.php diff --git a/src/Language.php b/legacy/src/Language.php similarity index 100% rename from src/Language.php rename to legacy/src/Language.php diff --git a/src/Legacy/Admin/Common.php b/legacy/src/Legacy/Admin/Common.php similarity index 100% rename from src/Legacy/Admin/Common.php rename to legacy/src/Legacy/Admin/Common.php diff --git a/src/Legacy/Admin/Cron.php b/legacy/src/Legacy/Admin/Cron.php similarity index 100% rename from src/Legacy/Admin/Cron.php rename to legacy/src/Legacy/Admin/Cron.php diff --git a/src/Legacy/Admin/Torrent.php b/legacy/src/Legacy/Admin/Torrent.php similarity index 100% rename from src/Legacy/Admin/Torrent.php rename to legacy/src/Legacy/Admin/Torrent.php diff --git a/src/Legacy/Atom.php b/legacy/src/Legacy/Atom.php similarity index 100% rename from src/Legacy/Atom.php rename to legacy/src/Legacy/Atom.php diff --git a/src/Legacy/Attach.php b/legacy/src/Legacy/Attach.php similarity index 100% rename from src/Legacy/Attach.php rename to legacy/src/Legacy/Attach.php diff --git a/src/Legacy/AttachPosting.php b/legacy/src/Legacy/AttachPosting.php similarity index 100% rename from src/Legacy/AttachPosting.php rename to legacy/src/Legacy/AttachPosting.php diff --git a/src/Legacy/BBCode.php b/legacy/src/Legacy/BBCode.php similarity index 100% rename from src/Legacy/BBCode.php rename to legacy/src/Legacy/BBCode.php diff --git a/src/Legacy/Common/Html.php b/legacy/src/Legacy/Common/Html.php similarity index 100% rename from src/Legacy/Common/Html.php rename to legacy/src/Legacy/Common/Html.php diff --git a/src/Legacy/Common/Select.php b/legacy/src/Legacy/Common/Select.php similarity index 100% rename from src/Legacy/Common/Select.php rename to legacy/src/Legacy/Common/Select.php diff --git a/src/Legacy/Common/Upload.php b/legacy/src/Legacy/Common/Upload.php similarity index 100% rename from src/Legacy/Common/Upload.php rename to legacy/src/Legacy/Common/Upload.php diff --git a/src/Legacy/Common/User.php b/legacy/src/Legacy/Common/User.php similarity index 100% rename from src/Legacy/Common/User.php rename to legacy/src/Legacy/Common/User.php diff --git a/src/Legacy/DateDelta.php b/legacy/src/Legacy/DateDelta.php similarity index 100% rename from src/Legacy/DateDelta.php rename to legacy/src/Legacy/DateDelta.php diff --git a/src/Legacy/Group.php b/legacy/src/Legacy/Group.php similarity index 100% rename from src/Legacy/Group.php rename to legacy/src/Legacy/Group.php diff --git a/src/Legacy/LogAction.php b/legacy/src/Legacy/LogAction.php similarity index 100% rename from src/Legacy/LogAction.php rename to legacy/src/Legacy/LogAction.php diff --git a/src/Legacy/Poll.php b/legacy/src/Legacy/Poll.php similarity index 100% rename from src/Legacy/Poll.php rename to legacy/src/Legacy/Poll.php diff --git a/src/Legacy/Post.php b/legacy/src/Legacy/Post.php similarity index 100% rename from src/Legacy/Post.php rename to legacy/src/Legacy/Post.php diff --git a/src/Legacy/Template.php b/legacy/src/Legacy/Template.php similarity index 100% rename from src/Legacy/Template.php rename to legacy/src/Legacy/Template.php diff --git a/src/Legacy/Torrent.php b/legacy/src/Legacy/Torrent.php similarity index 100% rename from src/Legacy/Torrent.php rename to legacy/src/Legacy/Torrent.php diff --git a/src/Legacy/TorrentFileList.php b/legacy/src/Legacy/TorrentFileList.php similarity index 100% rename from src/Legacy/TorrentFileList.php rename to legacy/src/Legacy/TorrentFileList.php diff --git a/src/Legacy/WordsRate.php b/legacy/src/Legacy/WordsRate.php similarity index 100% rename from src/Legacy/WordsRate.php rename to legacy/src/Legacy/WordsRate.php diff --git a/src/Sessions.php b/legacy/src/Sessions.php similarity index 100% rename from src/Sessions.php rename to legacy/src/Sessions.php diff --git a/src/Sitemap.php b/legacy/src/Sitemap.php similarity index 100% rename from src/Sitemap.php rename to legacy/src/Sitemap.php diff --git a/src/TorrServerAPI.php b/legacy/src/TorrServerAPI.php similarity index 100% rename from src/TorrServerAPI.php rename to legacy/src/TorrServerAPI.php diff --git a/src/Updater.php b/legacy/src/Updater.php similarity index 100% rename from src/Updater.php rename to legacy/src/Updater.php diff --git a/src/Validate.php b/legacy/src/Validate.php similarity index 100% rename from src/Validate.php rename to legacy/src/Validate.php diff --git a/src/Whoops/DatabaseErrorHandler.php b/legacy/src/Whoops/DatabaseErrorHandler.php similarity index 100% rename from src/Whoops/DatabaseErrorHandler.php rename to legacy/src/Whoops/DatabaseErrorHandler.php diff --git a/src/Whoops/EnhancedPrettyPageHandler.php b/legacy/src/Whoops/EnhancedPrettyPageHandler.php similarity index 100% rename from src/Whoops/EnhancedPrettyPageHandler.php rename to legacy/src/Whoops/EnhancedPrettyPageHandler.php diff --git a/src/helpers.php b/legacy/src/helpers.php similarity index 100% rename from src/helpers.php rename to legacy/src/helpers.php diff --git a/styles/images/bad.gif b/legacy/styles/images/bad.gif similarity index 100% rename from styles/images/bad.gif rename to legacy/styles/images/bad.gif diff --git a/styles/images/clients/Ares.png b/legacy/styles/images/clients/Ares.png similarity index 100% rename from styles/images/clients/Ares.png rename to legacy/styles/images/clients/Ares.png diff --git a/styles/images/clients/Aria2.png b/legacy/styles/images/clients/Aria2.png similarity index 100% rename from styles/images/clients/Aria2.png rename to legacy/styles/images/clients/Aria2.png diff --git a/styles/images/clients/BiglyBT.png b/legacy/styles/images/clients/BiglyBT.png similarity index 100% rename from styles/images/clients/BiglyBT.png rename to legacy/styles/images/clients/BiglyBT.png diff --git a/styles/images/clients/BitComet.png b/legacy/styles/images/clients/BitComet.png similarity index 100% rename from styles/images/clients/BitComet.png rename to legacy/styles/images/clients/BitComet.png diff --git a/styles/images/clients/BitLord.png b/legacy/styles/images/clients/BitLord.png similarity index 100% rename from styles/images/clients/BitLord.png rename to legacy/styles/images/clients/BitLord.png diff --git a/styles/images/clients/BitSpirit.png b/legacy/styles/images/clients/BitSpirit.png similarity index 100% rename from styles/images/clients/BitSpirit.png rename to legacy/styles/images/clients/BitSpirit.png diff --git a/styles/images/clients/BitTorrent SDK.png b/legacy/styles/images/clients/BitTorrent SDK.png similarity index 100% rename from styles/images/clients/BitTorrent SDK.png rename to legacy/styles/images/clients/BitTorrent SDK.png diff --git a/styles/images/clients/BitTorrent.png b/legacy/styles/images/clients/BitTorrent.png similarity index 100% rename from styles/images/clients/BitTorrent.png rename to legacy/styles/images/clients/BitTorrent.png diff --git a/styles/images/clients/Blackberry.png b/legacy/styles/images/clients/Blackberry.png similarity index 100% rename from styles/images/clients/Blackberry.png rename to legacy/styles/images/clients/Blackberry.png diff --git a/styles/images/clients/CTorrent.png b/legacy/styles/images/clients/CTorrent.png similarity index 100% rename from styles/images/clients/CTorrent.png rename to legacy/styles/images/clients/CTorrent.png diff --git a/styles/images/clients/Deluge.png b/legacy/styles/images/clients/Deluge.png similarity index 100% rename from styles/images/clients/Deluge.png rename to legacy/styles/images/clients/Deluge.png diff --git a/styles/images/clients/FakeUT.png b/legacy/styles/images/clients/FakeUT.png similarity index 100% rename from styles/images/clients/FakeUT.png rename to legacy/styles/images/clients/FakeUT.png diff --git a/styles/images/clients/FlashGet.png b/legacy/styles/images/clients/FlashGet.png similarity index 100% rename from styles/images/clients/FlashGet.png rename to legacy/styles/images/clients/FlashGet.png diff --git a/styles/images/clients/Folx.png b/legacy/styles/images/clients/Folx.png similarity index 100% rename from styles/images/clients/Folx.png rename to legacy/styles/images/clients/Folx.png diff --git a/styles/images/clients/Free Download Manager.png b/legacy/styles/images/clients/Free Download Manager.png similarity index 100% rename from styles/images/clients/Free Download Manager.png rename to legacy/styles/images/clients/Free Download Manager.png diff --git a/styles/images/clients/Freebox.png b/legacy/styles/images/clients/Freebox.png similarity index 100% rename from styles/images/clients/Freebox.png rename to legacy/styles/images/clients/Freebox.png diff --git a/styles/images/clients/Halite.png b/legacy/styles/images/clients/Halite.png similarity index 100% rename from styles/images/clients/Halite.png rename to legacy/styles/images/clients/Halite.png diff --git a/styles/images/clients/KGet.png b/legacy/styles/images/clients/KGet.png similarity index 100% rename from styles/images/clients/KGet.png rename to legacy/styles/images/clients/KGet.png diff --git a/styles/images/clients/KTorrent.png b/legacy/styles/images/clients/KTorrent.png similarity index 100% rename from styles/images/clients/KTorrent.png rename to legacy/styles/images/clients/KTorrent.png diff --git a/styles/images/clients/LibreTorrent.png b/legacy/styles/images/clients/LibreTorrent.png similarity index 100% rename from styles/images/clients/LibreTorrent.png rename to legacy/styles/images/clients/LibreTorrent.png diff --git a/styles/images/clients/MLDonkey.png b/legacy/styles/images/clients/MLDonkey.png similarity index 100% rename from styles/images/clients/MLDonkey.png rename to legacy/styles/images/clients/MLDonkey.png diff --git a/styles/images/clients/MediaGet.png b/legacy/styles/images/clients/MediaGet.png similarity index 100% rename from styles/images/clients/MediaGet.png rename to legacy/styles/images/clients/MediaGet.png diff --git a/styles/images/clients/Monsoon.png b/legacy/styles/images/clients/Monsoon.png similarity index 100% rename from styles/images/clients/Monsoon.png rename to legacy/styles/images/clients/Monsoon.png diff --git a/styles/images/clients/Opera.png b/legacy/styles/images/clients/Opera.png similarity index 100% rename from styles/images/clients/Opera.png rename to legacy/styles/images/clients/Opera.png diff --git a/styles/images/clients/PicoTorrent.png b/legacy/styles/images/clients/PicoTorrent.png similarity index 100% rename from styles/images/clients/PicoTorrent.png rename to legacy/styles/images/clients/PicoTorrent.png diff --git a/styles/images/clients/Tixati.png b/legacy/styles/images/clients/Tixati.png similarity index 100% rename from styles/images/clients/Tixati.png rename to legacy/styles/images/clients/Tixati.png diff --git a/styles/images/clients/TorrentStream.png b/legacy/styles/images/clients/TorrentStream.png similarity index 100% rename from styles/images/clients/TorrentStream.png rename to legacy/styles/images/clients/TorrentStream.png diff --git a/styles/images/clients/Transmission.png b/legacy/styles/images/clients/Transmission.png similarity index 100% rename from styles/images/clients/Transmission.png rename to legacy/styles/images/clients/Transmission.png diff --git a/styles/images/clients/Vuze.png b/legacy/styles/images/clients/Vuze.png similarity index 100% rename from styles/images/clients/Vuze.png rename to legacy/styles/images/clients/Vuze.png diff --git a/styles/images/clients/WebTorrent.png b/legacy/styles/images/clients/WebTorrent.png similarity index 100% rename from styles/images/clients/WebTorrent.png rename to legacy/styles/images/clients/WebTorrent.png diff --git a/styles/images/clients/Xunlei.png b/legacy/styles/images/clients/Xunlei.png similarity index 100% rename from styles/images/clients/Xunlei.png rename to legacy/styles/images/clients/Xunlei.png diff --git a/styles/images/clients/libTorrent.png b/legacy/styles/images/clients/libTorrent.png similarity index 100% rename from styles/images/clients/libTorrent.png rename to legacy/styles/images/clients/libTorrent.png diff --git a/styles/images/clients/qBittorrent.png b/legacy/styles/images/clients/qBittorrent.png similarity index 100% rename from styles/images/clients/qBittorrent.png rename to legacy/styles/images/clients/qBittorrent.png diff --git a/styles/images/clients/tTorrent.png b/legacy/styles/images/clients/tTorrent.png similarity index 100% rename from styles/images/clients/tTorrent.png rename to legacy/styles/images/clients/tTorrent.png diff --git a/styles/images/clients/uTorrent Mac.png b/legacy/styles/images/clients/uTorrent Mac.png similarity index 100% rename from styles/images/clients/uTorrent Mac.png rename to legacy/styles/images/clients/uTorrent Mac.png diff --git a/styles/images/clients/uTorrent Web.png b/legacy/styles/images/clients/uTorrent Web.png similarity index 100% rename from styles/images/clients/uTorrent Web.png rename to legacy/styles/images/clients/uTorrent Web.png diff --git a/styles/images/clients/uTorrent.png b/legacy/styles/images/clients/uTorrent.png similarity index 100% rename from styles/images/clients/uTorrent.png rename to legacy/styles/images/clients/uTorrent.png diff --git a/styles/images/flags/AD.svg b/legacy/styles/images/flags/AD.svg similarity index 100% rename from styles/images/flags/AD.svg rename to legacy/styles/images/flags/AD.svg diff --git a/styles/images/flags/AE.svg b/legacy/styles/images/flags/AE.svg similarity index 100% rename from styles/images/flags/AE.svg rename to legacy/styles/images/flags/AE.svg diff --git a/styles/images/flags/AF.svg b/legacy/styles/images/flags/AF.svg similarity index 100% rename from styles/images/flags/AF.svg rename to legacy/styles/images/flags/AF.svg diff --git a/styles/images/flags/AG.svg b/legacy/styles/images/flags/AG.svg similarity index 100% rename from styles/images/flags/AG.svg rename to legacy/styles/images/flags/AG.svg diff --git a/styles/images/flags/AI.svg b/legacy/styles/images/flags/AI.svg similarity index 100% rename from styles/images/flags/AI.svg rename to legacy/styles/images/flags/AI.svg diff --git a/styles/images/flags/AL.svg b/legacy/styles/images/flags/AL.svg similarity index 100% rename from styles/images/flags/AL.svg rename to legacy/styles/images/flags/AL.svg diff --git a/styles/images/flags/AM.svg b/legacy/styles/images/flags/AM.svg similarity index 100% rename from styles/images/flags/AM.svg rename to legacy/styles/images/flags/AM.svg diff --git a/styles/images/flags/AO.svg b/legacy/styles/images/flags/AO.svg similarity index 100% rename from styles/images/flags/AO.svg rename to legacy/styles/images/flags/AO.svg diff --git a/styles/images/flags/AQ.svg b/legacy/styles/images/flags/AQ.svg similarity index 100% rename from styles/images/flags/AQ.svg rename to legacy/styles/images/flags/AQ.svg diff --git a/styles/images/flags/AR.svg b/legacy/styles/images/flags/AR.svg similarity index 100% rename from styles/images/flags/AR.svg rename to legacy/styles/images/flags/AR.svg diff --git a/styles/images/flags/ARAB.svg b/legacy/styles/images/flags/ARAB.svg similarity index 100% rename from styles/images/flags/ARAB.svg rename to legacy/styles/images/flags/ARAB.svg diff --git a/styles/images/flags/AS.svg b/legacy/styles/images/flags/AS.svg similarity index 100% rename from styles/images/flags/AS.svg rename to legacy/styles/images/flags/AS.svg diff --git a/styles/images/flags/AT.svg b/legacy/styles/images/flags/AT.svg similarity index 100% rename from styles/images/flags/AT.svg rename to legacy/styles/images/flags/AT.svg diff --git a/styles/images/flags/AU.svg b/legacy/styles/images/flags/AU.svg similarity index 100% rename from styles/images/flags/AU.svg rename to legacy/styles/images/flags/AU.svg diff --git a/styles/images/flags/AW.svg b/legacy/styles/images/flags/AW.svg similarity index 100% rename from styles/images/flags/AW.svg rename to legacy/styles/images/flags/AW.svg diff --git a/styles/images/flags/AX.svg b/legacy/styles/images/flags/AX.svg similarity index 100% rename from styles/images/flags/AX.svg rename to legacy/styles/images/flags/AX.svg diff --git a/styles/images/flags/AZ.svg b/legacy/styles/images/flags/AZ.svg similarity index 100% rename from styles/images/flags/AZ.svg rename to legacy/styles/images/flags/AZ.svg diff --git a/styles/images/flags/BA.svg b/legacy/styles/images/flags/BA.svg similarity index 100% rename from styles/images/flags/BA.svg rename to legacy/styles/images/flags/BA.svg diff --git a/styles/images/flags/BB.svg b/legacy/styles/images/flags/BB.svg similarity index 100% rename from styles/images/flags/BB.svg rename to legacy/styles/images/flags/BB.svg diff --git a/styles/images/flags/BD.svg b/legacy/styles/images/flags/BD.svg similarity index 100% rename from styles/images/flags/BD.svg rename to legacy/styles/images/flags/BD.svg diff --git a/styles/images/flags/BE.svg b/legacy/styles/images/flags/BE.svg similarity index 100% rename from styles/images/flags/BE.svg rename to legacy/styles/images/flags/BE.svg diff --git a/styles/images/flags/BF.svg b/legacy/styles/images/flags/BF.svg similarity index 100% rename from styles/images/flags/BF.svg rename to legacy/styles/images/flags/BF.svg diff --git a/styles/images/flags/BG.svg b/legacy/styles/images/flags/BG.svg similarity index 100% rename from styles/images/flags/BG.svg rename to legacy/styles/images/flags/BG.svg diff --git a/styles/images/flags/BH.svg b/legacy/styles/images/flags/BH.svg similarity index 100% rename from styles/images/flags/BH.svg rename to legacy/styles/images/flags/BH.svg diff --git a/styles/images/flags/BI.svg b/legacy/styles/images/flags/BI.svg similarity index 100% rename from styles/images/flags/BI.svg rename to legacy/styles/images/flags/BI.svg diff --git a/styles/images/flags/BJ.svg b/legacy/styles/images/flags/BJ.svg similarity index 100% rename from styles/images/flags/BJ.svg rename to legacy/styles/images/flags/BJ.svg diff --git a/styles/images/flags/BL.svg b/legacy/styles/images/flags/BL.svg similarity index 100% rename from styles/images/flags/BL.svg rename to legacy/styles/images/flags/BL.svg diff --git a/styles/images/flags/BM.svg b/legacy/styles/images/flags/BM.svg similarity index 100% rename from styles/images/flags/BM.svg rename to legacy/styles/images/flags/BM.svg diff --git a/styles/images/flags/BN.svg b/legacy/styles/images/flags/BN.svg similarity index 100% rename from styles/images/flags/BN.svg rename to legacy/styles/images/flags/BN.svg diff --git a/styles/images/flags/BO.svg b/legacy/styles/images/flags/BO.svg similarity index 100% rename from styles/images/flags/BO.svg rename to legacy/styles/images/flags/BO.svg diff --git a/styles/images/flags/BQ.svg b/legacy/styles/images/flags/BQ.svg similarity index 100% rename from styles/images/flags/BQ.svg rename to legacy/styles/images/flags/BQ.svg diff --git a/styles/images/flags/BR.svg b/legacy/styles/images/flags/BR.svg similarity index 100% rename from styles/images/flags/BR.svg rename to legacy/styles/images/flags/BR.svg diff --git a/styles/images/flags/BS.svg b/legacy/styles/images/flags/BS.svg similarity index 100% rename from styles/images/flags/BS.svg rename to legacy/styles/images/flags/BS.svg diff --git a/styles/images/flags/BT.svg b/legacy/styles/images/flags/BT.svg similarity index 100% rename from styles/images/flags/BT.svg rename to legacy/styles/images/flags/BT.svg diff --git a/styles/images/flags/BV.svg b/legacy/styles/images/flags/BV.svg similarity index 100% rename from styles/images/flags/BV.svg rename to legacy/styles/images/flags/BV.svg diff --git a/styles/images/flags/BW.svg b/legacy/styles/images/flags/BW.svg similarity index 100% rename from styles/images/flags/BW.svg rename to legacy/styles/images/flags/BW.svg diff --git a/styles/images/flags/BY.svg b/legacy/styles/images/flags/BY.svg similarity index 100% rename from styles/images/flags/BY.svg rename to legacy/styles/images/flags/BY.svg diff --git a/styles/images/flags/BZ.svg b/legacy/styles/images/flags/BZ.svg similarity index 100% rename from styles/images/flags/BZ.svg rename to legacy/styles/images/flags/BZ.svg diff --git a/styles/images/flags/CA.svg b/legacy/styles/images/flags/CA.svg similarity index 100% rename from styles/images/flags/CA.svg rename to legacy/styles/images/flags/CA.svg diff --git a/styles/images/flags/CC.svg b/legacy/styles/images/flags/CC.svg similarity index 100% rename from styles/images/flags/CC.svg rename to legacy/styles/images/flags/CC.svg diff --git a/styles/images/flags/CD.svg b/legacy/styles/images/flags/CD.svg similarity index 100% rename from styles/images/flags/CD.svg rename to legacy/styles/images/flags/CD.svg diff --git a/styles/images/flags/CEFTA.svg b/legacy/styles/images/flags/CEFTA.svg similarity index 100% rename from styles/images/flags/CEFTA.svg rename to legacy/styles/images/flags/CEFTA.svg diff --git a/styles/images/flags/CF.svg b/legacy/styles/images/flags/CF.svg similarity index 100% rename from styles/images/flags/CF.svg rename to legacy/styles/images/flags/CF.svg diff --git a/styles/images/flags/CG.svg b/legacy/styles/images/flags/CG.svg similarity index 100% rename from styles/images/flags/CG.svg rename to legacy/styles/images/flags/CG.svg diff --git a/styles/images/flags/CH.svg b/legacy/styles/images/flags/CH.svg similarity index 100% rename from styles/images/flags/CH.svg rename to legacy/styles/images/flags/CH.svg diff --git a/styles/images/flags/CI.svg b/legacy/styles/images/flags/CI.svg similarity index 100% rename from styles/images/flags/CI.svg rename to legacy/styles/images/flags/CI.svg diff --git a/styles/images/flags/CK.svg b/legacy/styles/images/flags/CK.svg similarity index 100% rename from styles/images/flags/CK.svg rename to legacy/styles/images/flags/CK.svg diff --git a/styles/images/flags/CL.svg b/legacy/styles/images/flags/CL.svg similarity index 100% rename from styles/images/flags/CL.svg rename to legacy/styles/images/flags/CL.svg diff --git a/styles/images/flags/CM.svg b/legacy/styles/images/flags/CM.svg similarity index 100% rename from styles/images/flags/CM.svg rename to legacy/styles/images/flags/CM.svg diff --git a/styles/images/flags/CN.svg b/legacy/styles/images/flags/CN.svg similarity index 100% rename from styles/images/flags/CN.svg rename to legacy/styles/images/flags/CN.svg diff --git a/styles/images/flags/CO.svg b/legacy/styles/images/flags/CO.svg similarity index 100% rename from styles/images/flags/CO.svg rename to legacy/styles/images/flags/CO.svg diff --git a/styles/images/flags/CP.svg b/legacy/styles/images/flags/CP.svg similarity index 100% rename from styles/images/flags/CP.svg rename to legacy/styles/images/flags/CP.svg diff --git a/styles/images/flags/CR.svg b/legacy/styles/images/flags/CR.svg similarity index 100% rename from styles/images/flags/CR.svg rename to legacy/styles/images/flags/CR.svg diff --git a/styles/images/flags/CU.svg b/legacy/styles/images/flags/CU.svg similarity index 100% rename from styles/images/flags/CU.svg rename to legacy/styles/images/flags/CU.svg diff --git a/styles/images/flags/CV.svg b/legacy/styles/images/flags/CV.svg similarity index 100% rename from styles/images/flags/CV.svg rename to legacy/styles/images/flags/CV.svg diff --git a/styles/images/flags/CW.svg b/legacy/styles/images/flags/CW.svg similarity index 100% rename from styles/images/flags/CW.svg rename to legacy/styles/images/flags/CW.svg diff --git a/styles/images/flags/CX.svg b/legacy/styles/images/flags/CX.svg similarity index 100% rename from styles/images/flags/CX.svg rename to legacy/styles/images/flags/CX.svg diff --git a/styles/images/flags/CY.svg b/legacy/styles/images/flags/CY.svg similarity index 100% rename from styles/images/flags/CY.svg rename to legacy/styles/images/flags/CY.svg diff --git a/styles/images/flags/CZ.svg b/legacy/styles/images/flags/CZ.svg similarity index 100% rename from styles/images/flags/CZ.svg rename to legacy/styles/images/flags/CZ.svg diff --git a/styles/images/flags/DE.svg b/legacy/styles/images/flags/DE.svg similarity index 100% rename from styles/images/flags/DE.svg rename to legacy/styles/images/flags/DE.svg diff --git a/styles/images/flags/DG.svg b/legacy/styles/images/flags/DG.svg similarity index 100% rename from styles/images/flags/DG.svg rename to legacy/styles/images/flags/DG.svg diff --git a/styles/images/flags/DJ.svg b/legacy/styles/images/flags/DJ.svg similarity index 100% rename from styles/images/flags/DJ.svg rename to legacy/styles/images/flags/DJ.svg diff --git a/styles/images/flags/DK.svg b/legacy/styles/images/flags/DK.svg similarity index 100% rename from styles/images/flags/DK.svg rename to legacy/styles/images/flags/DK.svg diff --git a/styles/images/flags/DM.svg b/legacy/styles/images/flags/DM.svg similarity index 100% rename from styles/images/flags/DM.svg rename to legacy/styles/images/flags/DM.svg diff --git a/styles/images/flags/DO.svg b/legacy/styles/images/flags/DO.svg similarity index 100% rename from styles/images/flags/DO.svg rename to legacy/styles/images/flags/DO.svg diff --git a/styles/images/flags/DZ.svg b/legacy/styles/images/flags/DZ.svg similarity index 100% rename from styles/images/flags/DZ.svg rename to legacy/styles/images/flags/DZ.svg diff --git a/styles/images/flags/EAC.svg b/legacy/styles/images/flags/EAC.svg similarity index 100% rename from styles/images/flags/EAC.svg rename to legacy/styles/images/flags/EAC.svg diff --git a/styles/images/flags/EC.svg b/legacy/styles/images/flags/EC.svg similarity index 100% rename from styles/images/flags/EC.svg rename to legacy/styles/images/flags/EC.svg diff --git a/styles/images/flags/EE.svg b/legacy/styles/images/flags/EE.svg similarity index 100% rename from styles/images/flags/EE.svg rename to legacy/styles/images/flags/EE.svg diff --git a/styles/images/flags/EG.svg b/legacy/styles/images/flags/EG.svg similarity index 100% rename from styles/images/flags/EG.svg rename to legacy/styles/images/flags/EG.svg diff --git a/styles/images/flags/EH.svg b/legacy/styles/images/flags/EH.svg similarity index 100% rename from styles/images/flags/EH.svg rename to legacy/styles/images/flags/EH.svg diff --git a/styles/images/flags/ER.svg b/legacy/styles/images/flags/ER.svg similarity index 100% rename from styles/images/flags/ER.svg rename to legacy/styles/images/flags/ER.svg diff --git a/styles/images/flags/ES-CT.svg b/legacy/styles/images/flags/ES-CT.svg similarity index 100% rename from styles/images/flags/ES-CT.svg rename to legacy/styles/images/flags/ES-CT.svg diff --git a/styles/images/flags/ES-GA.svg b/legacy/styles/images/flags/ES-GA.svg similarity index 100% rename from styles/images/flags/ES-GA.svg rename to legacy/styles/images/flags/ES-GA.svg diff --git a/styles/images/flags/ES-PV.svg b/legacy/styles/images/flags/ES-PV.svg similarity index 100% rename from styles/images/flags/ES-PV.svg rename to legacy/styles/images/flags/ES-PV.svg diff --git a/styles/images/flags/ES.svg b/legacy/styles/images/flags/ES.svg similarity index 100% rename from styles/images/flags/ES.svg rename to legacy/styles/images/flags/ES.svg diff --git a/styles/images/flags/ET.svg b/legacy/styles/images/flags/ET.svg similarity index 100% rename from styles/images/flags/ET.svg rename to legacy/styles/images/flags/ET.svg diff --git a/styles/images/flags/EU.svg b/legacy/styles/images/flags/EU.svg similarity index 100% rename from styles/images/flags/EU.svg rename to legacy/styles/images/flags/EU.svg diff --git a/styles/images/flags/FI.svg b/legacy/styles/images/flags/FI.svg similarity index 100% rename from styles/images/flags/FI.svg rename to legacy/styles/images/flags/FI.svg diff --git a/styles/images/flags/FJ.svg b/legacy/styles/images/flags/FJ.svg similarity index 100% rename from styles/images/flags/FJ.svg rename to legacy/styles/images/flags/FJ.svg diff --git a/styles/images/flags/FK.svg b/legacy/styles/images/flags/FK.svg similarity index 100% rename from styles/images/flags/FK.svg rename to legacy/styles/images/flags/FK.svg diff --git a/styles/images/flags/FM.svg b/legacy/styles/images/flags/FM.svg similarity index 100% rename from styles/images/flags/FM.svg rename to legacy/styles/images/flags/FM.svg diff --git a/styles/images/flags/FO.svg b/legacy/styles/images/flags/FO.svg similarity index 100% rename from styles/images/flags/FO.svg rename to legacy/styles/images/flags/FO.svg diff --git a/styles/images/flags/FR.svg b/legacy/styles/images/flags/FR.svg similarity index 100% rename from styles/images/flags/FR.svg rename to legacy/styles/images/flags/FR.svg diff --git a/styles/images/flags/GA.svg b/legacy/styles/images/flags/GA.svg similarity index 100% rename from styles/images/flags/GA.svg rename to legacy/styles/images/flags/GA.svg diff --git a/styles/images/flags/GB-ENG.svg b/legacy/styles/images/flags/GB-ENG.svg similarity index 100% rename from styles/images/flags/GB-ENG.svg rename to legacy/styles/images/flags/GB-ENG.svg diff --git a/styles/images/flags/GB-NIR.svg b/legacy/styles/images/flags/GB-NIR.svg similarity index 100% rename from styles/images/flags/GB-NIR.svg rename to legacy/styles/images/flags/GB-NIR.svg diff --git a/styles/images/flags/GB-SCT.svg b/legacy/styles/images/flags/GB-SCT.svg similarity index 100% rename from styles/images/flags/GB-SCT.svg rename to legacy/styles/images/flags/GB-SCT.svg diff --git a/styles/images/flags/GB-WLS.svg b/legacy/styles/images/flags/GB-WLS.svg similarity index 100% rename from styles/images/flags/GB-WLS.svg rename to legacy/styles/images/flags/GB-WLS.svg diff --git a/styles/images/flags/GB.svg b/legacy/styles/images/flags/GB.svg similarity index 100% rename from styles/images/flags/GB.svg rename to legacy/styles/images/flags/GB.svg diff --git a/styles/images/flags/GD.svg b/legacy/styles/images/flags/GD.svg similarity index 100% rename from styles/images/flags/GD.svg rename to legacy/styles/images/flags/GD.svg diff --git a/styles/images/flags/GE.svg b/legacy/styles/images/flags/GE.svg similarity index 100% rename from styles/images/flags/GE.svg rename to legacy/styles/images/flags/GE.svg diff --git a/styles/images/flags/GF.svg b/legacy/styles/images/flags/GF.svg similarity index 100% rename from styles/images/flags/GF.svg rename to legacy/styles/images/flags/GF.svg diff --git a/styles/images/flags/GG.svg b/legacy/styles/images/flags/GG.svg similarity index 100% rename from styles/images/flags/GG.svg rename to legacy/styles/images/flags/GG.svg diff --git a/styles/images/flags/GH.svg b/legacy/styles/images/flags/GH.svg similarity index 100% rename from styles/images/flags/GH.svg rename to legacy/styles/images/flags/GH.svg diff --git a/styles/images/flags/GI.svg b/legacy/styles/images/flags/GI.svg similarity index 100% rename from styles/images/flags/GI.svg rename to legacy/styles/images/flags/GI.svg diff --git a/styles/images/flags/GL.svg b/legacy/styles/images/flags/GL.svg similarity index 100% rename from styles/images/flags/GL.svg rename to legacy/styles/images/flags/GL.svg diff --git a/styles/images/flags/GM.svg b/legacy/styles/images/flags/GM.svg similarity index 100% rename from styles/images/flags/GM.svg rename to legacy/styles/images/flags/GM.svg diff --git a/styles/images/flags/GN.svg b/legacy/styles/images/flags/GN.svg similarity index 100% rename from styles/images/flags/GN.svg rename to legacy/styles/images/flags/GN.svg diff --git a/styles/images/flags/GP.svg b/legacy/styles/images/flags/GP.svg similarity index 100% rename from styles/images/flags/GP.svg rename to legacy/styles/images/flags/GP.svg diff --git a/styles/images/flags/GQ.svg b/legacy/styles/images/flags/GQ.svg similarity index 100% rename from styles/images/flags/GQ.svg rename to legacy/styles/images/flags/GQ.svg diff --git a/styles/images/flags/GR.svg b/legacy/styles/images/flags/GR.svg similarity index 100% rename from styles/images/flags/GR.svg rename to legacy/styles/images/flags/GR.svg diff --git a/styles/images/flags/GS.svg b/legacy/styles/images/flags/GS.svg similarity index 100% rename from styles/images/flags/GS.svg rename to legacy/styles/images/flags/GS.svg diff --git a/styles/images/flags/GT.svg b/legacy/styles/images/flags/GT.svg similarity index 100% rename from styles/images/flags/GT.svg rename to legacy/styles/images/flags/GT.svg diff --git a/styles/images/flags/GU.svg b/legacy/styles/images/flags/GU.svg similarity index 100% rename from styles/images/flags/GU.svg rename to legacy/styles/images/flags/GU.svg diff --git a/styles/images/flags/GW.svg b/legacy/styles/images/flags/GW.svg similarity index 100% rename from styles/images/flags/GW.svg rename to legacy/styles/images/flags/GW.svg diff --git a/styles/images/flags/GY.svg b/legacy/styles/images/flags/GY.svg similarity index 100% rename from styles/images/flags/GY.svg rename to legacy/styles/images/flags/GY.svg diff --git a/styles/images/flags/HK.svg b/legacy/styles/images/flags/HK.svg similarity index 100% rename from styles/images/flags/HK.svg rename to legacy/styles/images/flags/HK.svg diff --git a/styles/images/flags/HM.svg b/legacy/styles/images/flags/HM.svg similarity index 100% rename from styles/images/flags/HM.svg rename to legacy/styles/images/flags/HM.svg diff --git a/styles/images/flags/HN.svg b/legacy/styles/images/flags/HN.svg similarity index 100% rename from styles/images/flags/HN.svg rename to legacy/styles/images/flags/HN.svg diff --git a/styles/images/flags/HR.svg b/legacy/styles/images/flags/HR.svg similarity index 100% rename from styles/images/flags/HR.svg rename to legacy/styles/images/flags/HR.svg diff --git a/styles/images/flags/HT.svg b/legacy/styles/images/flags/HT.svg similarity index 100% rename from styles/images/flags/HT.svg rename to legacy/styles/images/flags/HT.svg diff --git a/styles/images/flags/HU.svg b/legacy/styles/images/flags/HU.svg similarity index 100% rename from styles/images/flags/HU.svg rename to legacy/styles/images/flags/HU.svg diff --git a/styles/images/flags/IC.svg b/legacy/styles/images/flags/IC.svg similarity index 100% rename from styles/images/flags/IC.svg rename to legacy/styles/images/flags/IC.svg diff --git a/styles/images/flags/ID.svg b/legacy/styles/images/flags/ID.svg similarity index 100% rename from styles/images/flags/ID.svg rename to legacy/styles/images/flags/ID.svg diff --git a/styles/images/flags/IE.svg b/legacy/styles/images/flags/IE.svg similarity index 100% rename from styles/images/flags/IE.svg rename to legacy/styles/images/flags/IE.svg diff --git a/styles/images/flags/IL.svg b/legacy/styles/images/flags/IL.svg similarity index 100% rename from styles/images/flags/IL.svg rename to legacy/styles/images/flags/IL.svg diff --git a/styles/images/flags/IM.svg b/legacy/styles/images/flags/IM.svg similarity index 100% rename from styles/images/flags/IM.svg rename to legacy/styles/images/flags/IM.svg diff --git a/styles/images/flags/IN.svg b/legacy/styles/images/flags/IN.svg similarity index 100% rename from styles/images/flags/IN.svg rename to legacy/styles/images/flags/IN.svg diff --git a/styles/images/flags/IO.svg b/legacy/styles/images/flags/IO.svg similarity index 100% rename from styles/images/flags/IO.svg rename to legacy/styles/images/flags/IO.svg diff --git a/styles/images/flags/IQ.svg b/legacy/styles/images/flags/IQ.svg similarity index 100% rename from styles/images/flags/IQ.svg rename to legacy/styles/images/flags/IQ.svg diff --git a/styles/images/flags/IR.svg b/legacy/styles/images/flags/IR.svg similarity index 100% rename from styles/images/flags/IR.svg rename to legacy/styles/images/flags/IR.svg diff --git a/styles/images/flags/IS.svg b/legacy/styles/images/flags/IS.svg similarity index 100% rename from styles/images/flags/IS.svg rename to legacy/styles/images/flags/IS.svg diff --git a/styles/images/flags/IT.svg b/legacy/styles/images/flags/IT.svg similarity index 100% rename from styles/images/flags/IT.svg rename to legacy/styles/images/flags/IT.svg diff --git a/styles/images/flags/JE.svg b/legacy/styles/images/flags/JE.svg similarity index 100% rename from styles/images/flags/JE.svg rename to legacy/styles/images/flags/JE.svg diff --git a/styles/images/flags/JM.svg b/legacy/styles/images/flags/JM.svg similarity index 100% rename from styles/images/flags/JM.svg rename to legacy/styles/images/flags/JM.svg diff --git a/styles/images/flags/JO.svg b/legacy/styles/images/flags/JO.svg similarity index 100% rename from styles/images/flags/JO.svg rename to legacy/styles/images/flags/JO.svg diff --git a/styles/images/flags/JP.svg b/legacy/styles/images/flags/JP.svg similarity index 100% rename from styles/images/flags/JP.svg rename to legacy/styles/images/flags/JP.svg diff --git a/styles/images/flags/KE.svg b/legacy/styles/images/flags/KE.svg similarity index 100% rename from styles/images/flags/KE.svg rename to legacy/styles/images/flags/KE.svg diff --git a/styles/images/flags/KG.svg b/legacy/styles/images/flags/KG.svg similarity index 100% rename from styles/images/flags/KG.svg rename to legacy/styles/images/flags/KG.svg diff --git a/styles/images/flags/KH.svg b/legacy/styles/images/flags/KH.svg similarity index 100% rename from styles/images/flags/KH.svg rename to legacy/styles/images/flags/KH.svg diff --git a/styles/images/flags/KI.svg b/legacy/styles/images/flags/KI.svg similarity index 100% rename from styles/images/flags/KI.svg rename to legacy/styles/images/flags/KI.svg diff --git a/styles/images/flags/KM.svg b/legacy/styles/images/flags/KM.svg similarity index 100% rename from styles/images/flags/KM.svg rename to legacy/styles/images/flags/KM.svg diff --git a/styles/images/flags/KN.svg b/legacy/styles/images/flags/KN.svg similarity index 100% rename from styles/images/flags/KN.svg rename to legacy/styles/images/flags/KN.svg diff --git a/styles/images/flags/KP.svg b/legacy/styles/images/flags/KP.svg similarity index 100% rename from styles/images/flags/KP.svg rename to legacy/styles/images/flags/KP.svg diff --git a/styles/images/flags/KR.svg b/legacy/styles/images/flags/KR.svg similarity index 100% rename from styles/images/flags/KR.svg rename to legacy/styles/images/flags/KR.svg diff --git a/styles/images/flags/KW.svg b/legacy/styles/images/flags/KW.svg similarity index 100% rename from styles/images/flags/KW.svg rename to legacy/styles/images/flags/KW.svg diff --git a/styles/images/flags/KY.svg b/legacy/styles/images/flags/KY.svg similarity index 100% rename from styles/images/flags/KY.svg rename to legacy/styles/images/flags/KY.svg diff --git a/styles/images/flags/KZ.svg b/legacy/styles/images/flags/KZ.svg similarity index 100% rename from styles/images/flags/KZ.svg rename to legacy/styles/images/flags/KZ.svg diff --git a/styles/images/flags/LA.svg b/legacy/styles/images/flags/LA.svg similarity index 100% rename from styles/images/flags/LA.svg rename to legacy/styles/images/flags/LA.svg diff --git a/styles/images/flags/LB.svg b/legacy/styles/images/flags/LB.svg similarity index 100% rename from styles/images/flags/LB.svg rename to legacy/styles/images/flags/LB.svg diff --git a/styles/images/flags/LC.svg b/legacy/styles/images/flags/LC.svg similarity index 100% rename from styles/images/flags/LC.svg rename to legacy/styles/images/flags/LC.svg diff --git a/styles/images/flags/LGBT.svg b/legacy/styles/images/flags/LGBT.svg similarity index 100% rename from styles/images/flags/LGBT.svg rename to legacy/styles/images/flags/LGBT.svg diff --git a/styles/images/flags/LI.svg b/legacy/styles/images/flags/LI.svg similarity index 100% rename from styles/images/flags/LI.svg rename to legacy/styles/images/flags/LI.svg diff --git a/styles/images/flags/LK.svg b/legacy/styles/images/flags/LK.svg similarity index 100% rename from styles/images/flags/LK.svg rename to legacy/styles/images/flags/LK.svg diff --git a/styles/images/flags/LR.svg b/legacy/styles/images/flags/LR.svg similarity index 100% rename from styles/images/flags/LR.svg rename to legacy/styles/images/flags/LR.svg diff --git a/styles/images/flags/LS.svg b/legacy/styles/images/flags/LS.svg similarity index 100% rename from styles/images/flags/LS.svg rename to legacy/styles/images/flags/LS.svg diff --git a/styles/images/flags/LT.svg b/legacy/styles/images/flags/LT.svg similarity index 100% rename from styles/images/flags/LT.svg rename to legacy/styles/images/flags/LT.svg diff --git a/styles/images/flags/LU.svg b/legacy/styles/images/flags/LU.svg similarity index 100% rename from styles/images/flags/LU.svg rename to legacy/styles/images/flags/LU.svg diff --git a/styles/images/flags/LV.svg b/legacy/styles/images/flags/LV.svg similarity index 100% rename from styles/images/flags/LV.svg rename to legacy/styles/images/flags/LV.svg diff --git a/styles/images/flags/LY.svg b/legacy/styles/images/flags/LY.svg similarity index 100% rename from styles/images/flags/LY.svg rename to legacy/styles/images/flags/LY.svg diff --git a/styles/images/flags/MA.svg b/legacy/styles/images/flags/MA.svg similarity index 100% rename from styles/images/flags/MA.svg rename to legacy/styles/images/flags/MA.svg diff --git a/styles/images/flags/MC.svg b/legacy/styles/images/flags/MC.svg similarity index 100% rename from styles/images/flags/MC.svg rename to legacy/styles/images/flags/MC.svg diff --git a/styles/images/flags/MD.svg b/legacy/styles/images/flags/MD.svg similarity index 100% rename from styles/images/flags/MD.svg rename to legacy/styles/images/flags/MD.svg diff --git a/styles/images/flags/ME.svg b/legacy/styles/images/flags/ME.svg similarity index 100% rename from styles/images/flags/ME.svg rename to legacy/styles/images/flags/ME.svg diff --git a/styles/images/flags/MF.svg b/legacy/styles/images/flags/MF.svg similarity index 100% rename from styles/images/flags/MF.svg rename to legacy/styles/images/flags/MF.svg diff --git a/styles/images/flags/MG.svg b/legacy/styles/images/flags/MG.svg similarity index 100% rename from styles/images/flags/MG.svg rename to legacy/styles/images/flags/MG.svg diff --git a/styles/images/flags/MH.svg b/legacy/styles/images/flags/MH.svg similarity index 100% rename from styles/images/flags/MH.svg rename to legacy/styles/images/flags/MH.svg diff --git a/styles/images/flags/MK.svg b/legacy/styles/images/flags/MK.svg similarity index 100% rename from styles/images/flags/MK.svg rename to legacy/styles/images/flags/MK.svg diff --git a/styles/images/flags/ML.svg b/legacy/styles/images/flags/ML.svg similarity index 100% rename from styles/images/flags/ML.svg rename to legacy/styles/images/flags/ML.svg diff --git a/styles/images/flags/MM.svg b/legacy/styles/images/flags/MM.svg similarity index 100% rename from styles/images/flags/MM.svg rename to legacy/styles/images/flags/MM.svg diff --git a/styles/images/flags/MN.svg b/legacy/styles/images/flags/MN.svg similarity index 100% rename from styles/images/flags/MN.svg rename to legacy/styles/images/flags/MN.svg diff --git a/styles/images/flags/MO.svg b/legacy/styles/images/flags/MO.svg similarity index 100% rename from styles/images/flags/MO.svg rename to legacy/styles/images/flags/MO.svg diff --git a/styles/images/flags/MP.svg b/legacy/styles/images/flags/MP.svg similarity index 100% rename from styles/images/flags/MP.svg rename to legacy/styles/images/flags/MP.svg diff --git a/styles/images/flags/MQ.svg b/legacy/styles/images/flags/MQ.svg similarity index 100% rename from styles/images/flags/MQ.svg rename to legacy/styles/images/flags/MQ.svg diff --git a/styles/images/flags/MR.svg b/legacy/styles/images/flags/MR.svg similarity index 100% rename from styles/images/flags/MR.svg rename to legacy/styles/images/flags/MR.svg diff --git a/styles/images/flags/MS.svg b/legacy/styles/images/flags/MS.svg similarity index 100% rename from styles/images/flags/MS.svg rename to legacy/styles/images/flags/MS.svg diff --git a/styles/images/flags/MT.svg b/legacy/styles/images/flags/MT.svg similarity index 100% rename from styles/images/flags/MT.svg rename to legacy/styles/images/flags/MT.svg diff --git a/styles/images/flags/MU.svg b/legacy/styles/images/flags/MU.svg similarity index 100% rename from styles/images/flags/MU.svg rename to legacy/styles/images/flags/MU.svg diff --git a/styles/images/flags/MV.svg b/legacy/styles/images/flags/MV.svg similarity index 100% rename from styles/images/flags/MV.svg rename to legacy/styles/images/flags/MV.svg diff --git a/styles/images/flags/MW.svg b/legacy/styles/images/flags/MW.svg similarity index 100% rename from styles/images/flags/MW.svg rename to legacy/styles/images/flags/MW.svg diff --git a/styles/images/flags/MX.svg b/legacy/styles/images/flags/MX.svg similarity index 100% rename from styles/images/flags/MX.svg rename to legacy/styles/images/flags/MX.svg diff --git a/styles/images/flags/MY.svg b/legacy/styles/images/flags/MY.svg similarity index 100% rename from styles/images/flags/MY.svg rename to legacy/styles/images/flags/MY.svg diff --git a/styles/images/flags/MZ.svg b/legacy/styles/images/flags/MZ.svg similarity index 100% rename from styles/images/flags/MZ.svg rename to legacy/styles/images/flags/MZ.svg diff --git a/styles/images/flags/NA.svg b/legacy/styles/images/flags/NA.svg similarity index 100% rename from styles/images/flags/NA.svg rename to legacy/styles/images/flags/NA.svg diff --git a/styles/images/flags/NC.svg b/legacy/styles/images/flags/NC.svg similarity index 100% rename from styles/images/flags/NC.svg rename to legacy/styles/images/flags/NC.svg diff --git a/styles/images/flags/NE.svg b/legacy/styles/images/flags/NE.svg similarity index 100% rename from styles/images/flags/NE.svg rename to legacy/styles/images/flags/NE.svg diff --git a/styles/images/flags/NF.svg b/legacy/styles/images/flags/NF.svg similarity index 100% rename from styles/images/flags/NF.svg rename to legacy/styles/images/flags/NF.svg diff --git a/styles/images/flags/NG.svg b/legacy/styles/images/flags/NG.svg similarity index 100% rename from styles/images/flags/NG.svg rename to legacy/styles/images/flags/NG.svg diff --git a/styles/images/flags/NI.svg b/legacy/styles/images/flags/NI.svg similarity index 100% rename from styles/images/flags/NI.svg rename to legacy/styles/images/flags/NI.svg diff --git a/styles/images/flags/NL.svg b/legacy/styles/images/flags/NL.svg similarity index 100% rename from styles/images/flags/NL.svg rename to legacy/styles/images/flags/NL.svg diff --git a/styles/images/flags/NO.svg b/legacy/styles/images/flags/NO.svg similarity index 100% rename from styles/images/flags/NO.svg rename to legacy/styles/images/flags/NO.svg diff --git a/styles/images/flags/NP.svg b/legacy/styles/images/flags/NP.svg similarity index 100% rename from styles/images/flags/NP.svg rename to legacy/styles/images/flags/NP.svg diff --git a/styles/images/flags/NR.svg b/legacy/styles/images/flags/NR.svg similarity index 100% rename from styles/images/flags/NR.svg rename to legacy/styles/images/flags/NR.svg diff --git a/styles/images/flags/NU.svg b/legacy/styles/images/flags/NU.svg similarity index 100% rename from styles/images/flags/NU.svg rename to legacy/styles/images/flags/NU.svg diff --git a/styles/images/flags/NZ.svg b/legacy/styles/images/flags/NZ.svg similarity index 100% rename from styles/images/flags/NZ.svg rename to legacy/styles/images/flags/NZ.svg diff --git a/styles/images/flags/OM.svg b/legacy/styles/images/flags/OM.svg similarity index 100% rename from styles/images/flags/OM.svg rename to legacy/styles/images/flags/OM.svg diff --git a/styles/images/flags/PA.svg b/legacy/styles/images/flags/PA.svg similarity index 100% rename from styles/images/flags/PA.svg rename to legacy/styles/images/flags/PA.svg diff --git a/styles/images/flags/PACE.svg b/legacy/styles/images/flags/PACE.svg similarity index 100% rename from styles/images/flags/PACE.svg rename to legacy/styles/images/flags/PACE.svg diff --git a/styles/images/flags/PC.svg b/legacy/styles/images/flags/PC.svg similarity index 100% rename from styles/images/flags/PC.svg rename to legacy/styles/images/flags/PC.svg diff --git a/styles/images/flags/PE.svg b/legacy/styles/images/flags/PE.svg similarity index 100% rename from styles/images/flags/PE.svg rename to legacy/styles/images/flags/PE.svg diff --git a/styles/images/flags/PF.svg b/legacy/styles/images/flags/PF.svg similarity index 100% rename from styles/images/flags/PF.svg rename to legacy/styles/images/flags/PF.svg diff --git a/styles/images/flags/PG.svg b/legacy/styles/images/flags/PG.svg similarity index 100% rename from styles/images/flags/PG.svg rename to legacy/styles/images/flags/PG.svg diff --git a/styles/images/flags/PH.svg b/legacy/styles/images/flags/PH.svg similarity index 100% rename from styles/images/flags/PH.svg rename to legacy/styles/images/flags/PH.svg diff --git a/styles/images/flags/PK.svg b/legacy/styles/images/flags/PK.svg similarity index 100% rename from styles/images/flags/PK.svg rename to legacy/styles/images/flags/PK.svg diff --git a/styles/images/flags/PL.svg b/legacy/styles/images/flags/PL.svg similarity index 100% rename from styles/images/flags/PL.svg rename to legacy/styles/images/flags/PL.svg diff --git a/styles/images/flags/PM.svg b/legacy/styles/images/flags/PM.svg similarity index 100% rename from styles/images/flags/PM.svg rename to legacy/styles/images/flags/PM.svg diff --git a/styles/images/flags/PN.svg b/legacy/styles/images/flags/PN.svg similarity index 100% rename from styles/images/flags/PN.svg rename to legacy/styles/images/flags/PN.svg diff --git a/styles/images/flags/PR.svg b/legacy/styles/images/flags/PR.svg similarity index 100% rename from styles/images/flags/PR.svg rename to legacy/styles/images/flags/PR.svg diff --git a/styles/images/flags/PS.svg b/legacy/styles/images/flags/PS.svg similarity index 100% rename from styles/images/flags/PS.svg rename to legacy/styles/images/flags/PS.svg diff --git a/styles/images/flags/PT.svg b/legacy/styles/images/flags/PT.svg similarity index 100% rename from styles/images/flags/PT.svg rename to legacy/styles/images/flags/PT.svg diff --git a/styles/images/flags/PW.svg b/legacy/styles/images/flags/PW.svg similarity index 100% rename from styles/images/flags/PW.svg rename to legacy/styles/images/flags/PW.svg diff --git a/styles/images/flags/PY.svg b/legacy/styles/images/flags/PY.svg similarity index 100% rename from styles/images/flags/PY.svg rename to legacy/styles/images/flags/PY.svg diff --git a/styles/images/flags/QA.svg b/legacy/styles/images/flags/QA.svg similarity index 100% rename from styles/images/flags/QA.svg rename to legacy/styles/images/flags/QA.svg diff --git a/styles/images/flags/RE.svg b/legacy/styles/images/flags/RE.svg similarity index 100% rename from styles/images/flags/RE.svg rename to legacy/styles/images/flags/RE.svg diff --git a/styles/images/flags/RO.svg b/legacy/styles/images/flags/RO.svg similarity index 100% rename from styles/images/flags/RO.svg rename to legacy/styles/images/flags/RO.svg diff --git a/styles/images/flags/RS.svg b/legacy/styles/images/flags/RS.svg similarity index 100% rename from styles/images/flags/RS.svg rename to legacy/styles/images/flags/RS.svg diff --git a/styles/images/flags/RU.svg b/legacy/styles/images/flags/RU.svg similarity index 100% rename from styles/images/flags/RU.svg rename to legacy/styles/images/flags/RU.svg diff --git a/styles/images/flags/RW.svg b/legacy/styles/images/flags/RW.svg similarity index 100% rename from styles/images/flags/RW.svg rename to legacy/styles/images/flags/RW.svg diff --git a/styles/images/flags/SA.svg b/legacy/styles/images/flags/SA.svg similarity index 100% rename from styles/images/flags/SA.svg rename to legacy/styles/images/flags/SA.svg diff --git a/styles/images/flags/SB.svg b/legacy/styles/images/flags/SB.svg similarity index 100% rename from styles/images/flags/SB.svg rename to legacy/styles/images/flags/SB.svg diff --git a/styles/images/flags/SC.svg b/legacy/styles/images/flags/SC.svg similarity index 100% rename from styles/images/flags/SC.svg rename to legacy/styles/images/flags/SC.svg diff --git a/styles/images/flags/SD.svg b/legacy/styles/images/flags/SD.svg similarity index 100% rename from styles/images/flags/SD.svg rename to legacy/styles/images/flags/SD.svg diff --git a/styles/images/flags/SE.svg b/legacy/styles/images/flags/SE.svg similarity index 100% rename from styles/images/flags/SE.svg rename to legacy/styles/images/flags/SE.svg diff --git a/styles/images/flags/SG.svg b/legacy/styles/images/flags/SG.svg similarity index 100% rename from styles/images/flags/SG.svg rename to legacy/styles/images/flags/SG.svg diff --git a/styles/images/flags/SH-AC.svg b/legacy/styles/images/flags/SH-AC.svg similarity index 100% rename from styles/images/flags/SH-AC.svg rename to legacy/styles/images/flags/SH-AC.svg diff --git a/styles/images/flags/SH-HL.svg b/legacy/styles/images/flags/SH-HL.svg similarity index 100% rename from styles/images/flags/SH-HL.svg rename to legacy/styles/images/flags/SH-HL.svg diff --git a/styles/images/flags/SH-TA.svg b/legacy/styles/images/flags/SH-TA.svg similarity index 100% rename from styles/images/flags/SH-TA.svg rename to legacy/styles/images/flags/SH-TA.svg diff --git a/styles/images/flags/SH.svg b/legacy/styles/images/flags/SH.svg similarity index 100% rename from styles/images/flags/SH.svg rename to legacy/styles/images/flags/SH.svg diff --git a/styles/images/flags/SI.svg b/legacy/styles/images/flags/SI.svg similarity index 100% rename from styles/images/flags/SI.svg rename to legacy/styles/images/flags/SI.svg diff --git a/styles/images/flags/SJ.svg b/legacy/styles/images/flags/SJ.svg similarity index 100% rename from styles/images/flags/SJ.svg rename to legacy/styles/images/flags/SJ.svg diff --git a/styles/images/flags/SK.svg b/legacy/styles/images/flags/SK.svg similarity index 100% rename from styles/images/flags/SK.svg rename to legacy/styles/images/flags/SK.svg diff --git a/styles/images/flags/SL.svg b/legacy/styles/images/flags/SL.svg similarity index 100% rename from styles/images/flags/SL.svg rename to legacy/styles/images/flags/SL.svg diff --git a/styles/images/flags/SM.svg b/legacy/styles/images/flags/SM.svg similarity index 100% rename from styles/images/flags/SM.svg rename to legacy/styles/images/flags/SM.svg diff --git a/styles/images/flags/SN.svg b/legacy/styles/images/flags/SN.svg similarity index 100% rename from styles/images/flags/SN.svg rename to legacy/styles/images/flags/SN.svg diff --git a/styles/images/flags/SO.svg b/legacy/styles/images/flags/SO.svg similarity index 100% rename from styles/images/flags/SO.svg rename to legacy/styles/images/flags/SO.svg diff --git a/styles/images/flags/SR.svg b/legacy/styles/images/flags/SR.svg similarity index 100% rename from styles/images/flags/SR.svg rename to legacy/styles/images/flags/SR.svg diff --git a/styles/images/flags/SS.svg b/legacy/styles/images/flags/SS.svg similarity index 100% rename from styles/images/flags/SS.svg rename to legacy/styles/images/flags/SS.svg diff --git a/styles/images/flags/ST.svg b/legacy/styles/images/flags/ST.svg similarity index 100% rename from styles/images/flags/ST.svg rename to legacy/styles/images/flags/ST.svg diff --git a/styles/images/flags/SU.svg b/legacy/styles/images/flags/SU.svg similarity index 100% rename from styles/images/flags/SU.svg rename to legacy/styles/images/flags/SU.svg diff --git a/styles/images/flags/SV.svg b/legacy/styles/images/flags/SV.svg similarity index 100% rename from styles/images/flags/SV.svg rename to legacy/styles/images/flags/SV.svg diff --git a/styles/images/flags/SX.svg b/legacy/styles/images/flags/SX.svg similarity index 100% rename from styles/images/flags/SX.svg rename to legacy/styles/images/flags/SX.svg diff --git a/styles/images/flags/SY.svg b/legacy/styles/images/flags/SY.svg similarity index 100% rename from styles/images/flags/SY.svg rename to legacy/styles/images/flags/SY.svg diff --git a/styles/images/flags/SZ.svg b/legacy/styles/images/flags/SZ.svg similarity index 100% rename from styles/images/flags/SZ.svg rename to legacy/styles/images/flags/SZ.svg diff --git a/styles/images/flags/TC.svg b/legacy/styles/images/flags/TC.svg similarity index 100% rename from styles/images/flags/TC.svg rename to legacy/styles/images/flags/TC.svg diff --git a/styles/images/flags/TD.svg b/legacy/styles/images/flags/TD.svg similarity index 100% rename from styles/images/flags/TD.svg rename to legacy/styles/images/flags/TD.svg diff --git a/styles/images/flags/TF.svg b/legacy/styles/images/flags/TF.svg similarity index 100% rename from styles/images/flags/TF.svg rename to legacy/styles/images/flags/TF.svg diff --git a/styles/images/flags/TG.svg b/legacy/styles/images/flags/TG.svg similarity index 100% rename from styles/images/flags/TG.svg rename to legacy/styles/images/flags/TG.svg diff --git a/styles/images/flags/TH.svg b/legacy/styles/images/flags/TH.svg similarity index 100% rename from styles/images/flags/TH.svg rename to legacy/styles/images/flags/TH.svg diff --git a/styles/images/flags/TJ.svg b/legacy/styles/images/flags/TJ.svg similarity index 100% rename from styles/images/flags/TJ.svg rename to legacy/styles/images/flags/TJ.svg diff --git a/styles/images/flags/TK.svg b/legacy/styles/images/flags/TK.svg similarity index 100% rename from styles/images/flags/TK.svg rename to legacy/styles/images/flags/TK.svg diff --git a/styles/images/flags/TL.svg b/legacy/styles/images/flags/TL.svg similarity index 100% rename from styles/images/flags/TL.svg rename to legacy/styles/images/flags/TL.svg diff --git a/styles/images/flags/TM.svg b/legacy/styles/images/flags/TM.svg similarity index 100% rename from styles/images/flags/TM.svg rename to legacy/styles/images/flags/TM.svg diff --git a/styles/images/flags/TN.svg b/legacy/styles/images/flags/TN.svg similarity index 100% rename from styles/images/flags/TN.svg rename to legacy/styles/images/flags/TN.svg diff --git a/styles/images/flags/TO.svg b/legacy/styles/images/flags/TO.svg similarity index 100% rename from styles/images/flags/TO.svg rename to legacy/styles/images/flags/TO.svg diff --git a/styles/images/flags/TR.svg b/legacy/styles/images/flags/TR.svg similarity index 100% rename from styles/images/flags/TR.svg rename to legacy/styles/images/flags/TR.svg diff --git a/styles/images/flags/TT.svg b/legacy/styles/images/flags/TT.svg similarity index 100% rename from styles/images/flags/TT.svg rename to legacy/styles/images/flags/TT.svg diff --git a/styles/images/flags/TV.svg b/legacy/styles/images/flags/TV.svg similarity index 100% rename from styles/images/flags/TV.svg rename to legacy/styles/images/flags/TV.svg diff --git a/styles/images/flags/TW.svg b/legacy/styles/images/flags/TW.svg similarity index 100% rename from styles/images/flags/TW.svg rename to legacy/styles/images/flags/TW.svg diff --git a/styles/images/flags/TZ.svg b/legacy/styles/images/flags/TZ.svg similarity index 100% rename from styles/images/flags/TZ.svg rename to legacy/styles/images/flags/TZ.svg diff --git a/styles/images/flags/UA.svg b/legacy/styles/images/flags/UA.svg similarity index 100% rename from styles/images/flags/UA.svg rename to legacy/styles/images/flags/UA.svg diff --git a/styles/images/flags/UG.svg b/legacy/styles/images/flags/UG.svg similarity index 100% rename from styles/images/flags/UG.svg rename to legacy/styles/images/flags/UG.svg diff --git a/styles/images/flags/UM.svg b/legacy/styles/images/flags/UM.svg similarity index 100% rename from styles/images/flags/UM.svg rename to legacy/styles/images/flags/UM.svg diff --git a/styles/images/flags/UN.svg b/legacy/styles/images/flags/UN.svg similarity index 100% rename from styles/images/flags/UN.svg rename to legacy/styles/images/flags/UN.svg diff --git a/styles/images/flags/US.svg b/legacy/styles/images/flags/US.svg similarity index 100% rename from styles/images/flags/US.svg rename to legacy/styles/images/flags/US.svg diff --git a/styles/images/flags/UY.svg b/legacy/styles/images/flags/UY.svg similarity index 100% rename from styles/images/flags/UY.svg rename to legacy/styles/images/flags/UY.svg diff --git a/styles/images/flags/UZ.svg b/legacy/styles/images/flags/UZ.svg similarity index 100% rename from styles/images/flags/UZ.svg rename to legacy/styles/images/flags/UZ.svg diff --git a/styles/images/flags/VA.svg b/legacy/styles/images/flags/VA.svg similarity index 100% rename from styles/images/flags/VA.svg rename to legacy/styles/images/flags/VA.svg diff --git a/styles/images/flags/VC.svg b/legacy/styles/images/flags/VC.svg similarity index 100% rename from styles/images/flags/VC.svg rename to legacy/styles/images/flags/VC.svg diff --git a/styles/images/flags/VE.svg b/legacy/styles/images/flags/VE.svg similarity index 100% rename from styles/images/flags/VE.svg rename to legacy/styles/images/flags/VE.svg diff --git a/styles/images/flags/VG.svg b/legacy/styles/images/flags/VG.svg similarity index 100% rename from styles/images/flags/VG.svg rename to legacy/styles/images/flags/VG.svg diff --git a/styles/images/flags/VI.svg b/legacy/styles/images/flags/VI.svg similarity index 100% rename from styles/images/flags/VI.svg rename to legacy/styles/images/flags/VI.svg diff --git a/styles/images/flags/VN.svg b/legacy/styles/images/flags/VN.svg similarity index 100% rename from styles/images/flags/VN.svg rename to legacy/styles/images/flags/VN.svg diff --git a/styles/images/flags/VU.svg b/legacy/styles/images/flags/VU.svg similarity index 100% rename from styles/images/flags/VU.svg rename to legacy/styles/images/flags/VU.svg diff --git a/styles/images/flags/WBW.svg b/legacy/styles/images/flags/WBW.svg similarity index 100% rename from styles/images/flags/WBW.svg rename to legacy/styles/images/flags/WBW.svg diff --git a/styles/images/flags/WF.svg b/legacy/styles/images/flags/WF.svg similarity index 100% rename from styles/images/flags/WF.svg rename to legacy/styles/images/flags/WF.svg diff --git a/styles/images/flags/WS.svg b/legacy/styles/images/flags/WS.svg similarity index 100% rename from styles/images/flags/WS.svg rename to legacy/styles/images/flags/WS.svg diff --git a/styles/images/flags/XK.svg b/legacy/styles/images/flags/XK.svg similarity index 100% rename from styles/images/flags/XK.svg rename to legacy/styles/images/flags/XK.svg diff --git a/styles/images/flags/XX.svg b/legacy/styles/images/flags/XX.svg similarity index 100% rename from styles/images/flags/XX.svg rename to legacy/styles/images/flags/XX.svg diff --git a/styles/images/flags/YE.svg b/legacy/styles/images/flags/YE.svg similarity index 100% rename from styles/images/flags/YE.svg rename to legacy/styles/images/flags/YE.svg diff --git a/styles/images/flags/YT.svg b/legacy/styles/images/flags/YT.svg similarity index 100% rename from styles/images/flags/YT.svg rename to legacy/styles/images/flags/YT.svg diff --git a/styles/images/flags/YU.svg b/legacy/styles/images/flags/YU.svg similarity index 100% rename from styles/images/flags/YU.svg rename to legacy/styles/images/flags/YU.svg diff --git a/styles/images/flags/ZA.svg b/legacy/styles/images/flags/ZA.svg similarity index 100% rename from styles/images/flags/ZA.svg rename to legacy/styles/images/flags/ZA.svg diff --git a/styles/images/flags/ZM.svg b/legacy/styles/images/flags/ZM.svg similarity index 100% rename from styles/images/flags/ZM.svg rename to legacy/styles/images/flags/ZM.svg diff --git a/styles/images/flags/ZW.svg b/legacy/styles/images/flags/ZW.svg similarity index 100% rename from styles/images/flags/ZW.svg rename to legacy/styles/images/flags/ZW.svg diff --git a/styles/images/folder.gif b/legacy/styles/images/folder.gif similarity index 100% rename from styles/images/folder.gif rename to legacy/styles/images/folder.gif diff --git a/styles/images/good.gif b/legacy/styles/images/good.gif similarity index 100% rename from styles/images/good.gif rename to legacy/styles/images/good.gif diff --git a/styles/images/icon_clip.gif b/legacy/styles/images/icon_clip.gif similarity index 100% rename from styles/images/icon_clip.gif rename to legacy/styles/images/icon_clip.gif diff --git a/styles/images/icon_delete.gif b/legacy/styles/images/icon_delete.gif similarity index 100% rename from styles/images/icon_delete.gif rename to legacy/styles/images/icon_delete.gif diff --git a/styles/images/icon_dn.gif b/legacy/styles/images/icon_dn.gif similarity index 100% rename from styles/images/icon_dn.gif rename to legacy/styles/images/icon_dn.gif diff --git a/styles/images/icon_edit.gif b/legacy/styles/images/icon_edit.gif similarity index 100% rename from styles/images/icon_edit.gif rename to legacy/styles/images/icon_edit.gif diff --git a/styles/images/icon_external.png b/legacy/styles/images/icon_external.png similarity index 100% rename from styles/images/icon_external.png rename to legacy/styles/images/icon_external.png diff --git a/styles/images/icon_run.gif b/legacy/styles/images/icon_run.gif similarity index 100% rename from styles/images/icon_run.gif rename to legacy/styles/images/icon_run.gif diff --git a/styles/images/icon_sync.gif b/legacy/styles/images/icon_sync.gif similarity index 100% rename from styles/images/icon_sync.gif rename to legacy/styles/images/icon_sync.gif diff --git a/styles/images/logo/logo.png b/legacy/styles/images/logo/logo.png similarity index 100% rename from styles/images/logo/logo.png rename to legacy/styles/images/logo/logo.png diff --git a/styles/images/magnet.png b/legacy/styles/images/magnet.png similarity index 100% rename from styles/images/magnet.png rename to legacy/styles/images/magnet.png diff --git a/styles/images/magnet_v2.png b/legacy/styles/images/magnet_v2.png similarity index 100% rename from styles/images/magnet_v2.png rename to legacy/styles/images/magnet_v2.png diff --git a/styles/images/page.gif b/legacy/styles/images/page.gif similarity index 100% rename from styles/images/page.gif rename to legacy/styles/images/page.gif diff --git a/styles/images/pic_loading.gif b/legacy/styles/images/pic_loading.gif similarity index 100% rename from styles/images/pic_loading.gif rename to legacy/styles/images/pic_loading.gif diff --git a/styles/images/ranks/admin.png b/legacy/styles/images/ranks/admin.png similarity index 100% rename from styles/images/ranks/admin.png rename to legacy/styles/images/ranks/admin.png diff --git a/styles/images/ranks/user.png b/legacy/styles/images/ranks/user.png similarity index 100% rename from styles/images/ranks/user.png rename to legacy/styles/images/ranks/user.png diff --git a/styles/images/smiles/aa.gif b/legacy/styles/images/smiles/aa.gif similarity index 100% rename from styles/images/smiles/aa.gif rename to legacy/styles/images/smiles/aa.gif diff --git a/styles/images/smiles/ab.gif b/legacy/styles/images/smiles/ab.gif similarity index 100% rename from styles/images/smiles/ab.gif rename to legacy/styles/images/smiles/ab.gif diff --git a/styles/images/smiles/ac.gif b/legacy/styles/images/smiles/ac.gif similarity index 100% rename from styles/images/smiles/ac.gif rename to legacy/styles/images/smiles/ac.gif diff --git a/styles/images/smiles/ae.gif b/legacy/styles/images/smiles/ae.gif similarity index 100% rename from styles/images/smiles/ae.gif rename to legacy/styles/images/smiles/ae.gif diff --git a/styles/images/smiles/af.gif b/legacy/styles/images/smiles/af.gif similarity index 100% rename from styles/images/smiles/af.gif rename to legacy/styles/images/smiles/af.gif diff --git a/styles/images/smiles/ag.gif b/legacy/styles/images/smiles/ag.gif similarity index 100% rename from styles/images/smiles/ag.gif rename to legacy/styles/images/smiles/ag.gif diff --git a/styles/images/smiles/ah.gif b/legacy/styles/images/smiles/ah.gif similarity index 100% rename from styles/images/smiles/ah.gif rename to legacy/styles/images/smiles/ah.gif diff --git a/styles/images/smiles/ai.gif b/legacy/styles/images/smiles/ai.gif similarity index 100% rename from styles/images/smiles/ai.gif rename to legacy/styles/images/smiles/ai.gif diff --git a/styles/images/smiles/aj.gif b/legacy/styles/images/smiles/aj.gif similarity index 100% rename from styles/images/smiles/aj.gif rename to legacy/styles/images/smiles/aj.gif diff --git a/styles/images/smiles/ak.gif b/legacy/styles/images/smiles/ak.gif similarity index 100% rename from styles/images/smiles/ak.gif rename to legacy/styles/images/smiles/ak.gif diff --git a/styles/images/smiles/al.gif b/legacy/styles/images/smiles/al.gif similarity index 100% rename from styles/images/smiles/al.gif rename to legacy/styles/images/smiles/al.gif diff --git a/styles/images/smiles/am.gif b/legacy/styles/images/smiles/am.gif similarity index 100% rename from styles/images/smiles/am.gif rename to legacy/styles/images/smiles/am.gif diff --git a/styles/images/smiles/an.gif b/legacy/styles/images/smiles/an.gif similarity index 100% rename from styles/images/smiles/an.gif rename to legacy/styles/images/smiles/an.gif diff --git a/styles/images/smiles/ao.gif b/legacy/styles/images/smiles/ao.gif similarity index 100% rename from styles/images/smiles/ao.gif rename to legacy/styles/images/smiles/ao.gif diff --git a/styles/images/smiles/ap.gif b/legacy/styles/images/smiles/ap.gif similarity index 100% rename from styles/images/smiles/ap.gif rename to legacy/styles/images/smiles/ap.gif diff --git a/styles/images/smiles/aq.gif b/legacy/styles/images/smiles/aq.gif similarity index 100% rename from styles/images/smiles/aq.gif rename to legacy/styles/images/smiles/aq.gif diff --git a/styles/images/smiles/ar.gif b/legacy/styles/images/smiles/ar.gif similarity index 100% rename from styles/images/smiles/ar.gif rename to legacy/styles/images/smiles/ar.gif diff --git a/styles/images/smiles/as.gif b/legacy/styles/images/smiles/as.gif similarity index 100% rename from styles/images/smiles/as.gif rename to legacy/styles/images/smiles/as.gif diff --git a/styles/images/smiles/at.gif b/legacy/styles/images/smiles/at.gif similarity index 100% rename from styles/images/smiles/at.gif rename to legacy/styles/images/smiles/at.gif diff --git a/styles/images/smiles/au.gif b/legacy/styles/images/smiles/au.gif similarity index 100% rename from styles/images/smiles/au.gif rename to legacy/styles/images/smiles/au.gif diff --git a/styles/images/smiles/av.gif b/legacy/styles/images/smiles/av.gif similarity index 100% rename from styles/images/smiles/av.gif rename to legacy/styles/images/smiles/av.gif diff --git a/styles/images/smiles/aw.gif b/legacy/styles/images/smiles/aw.gif similarity index 100% rename from styles/images/smiles/aw.gif rename to legacy/styles/images/smiles/aw.gif diff --git a/styles/images/smiles/ax.gif b/legacy/styles/images/smiles/ax.gif similarity index 100% rename from styles/images/smiles/ax.gif rename to legacy/styles/images/smiles/ax.gif diff --git a/styles/images/smiles/ay.gif b/legacy/styles/images/smiles/ay.gif similarity index 100% rename from styles/images/smiles/ay.gif rename to legacy/styles/images/smiles/ay.gif diff --git a/styles/images/smiles/az.gif b/legacy/styles/images/smiles/az.gif similarity index 100% rename from styles/images/smiles/az.gif rename to legacy/styles/images/smiles/az.gif diff --git a/styles/images/smiles/ba.gif b/legacy/styles/images/smiles/ba.gif similarity index 100% rename from styles/images/smiles/ba.gif rename to legacy/styles/images/smiles/ba.gif diff --git a/styles/images/smiles/bb.gif b/legacy/styles/images/smiles/bb.gif similarity index 100% rename from styles/images/smiles/bb.gif rename to legacy/styles/images/smiles/bb.gif diff --git a/styles/images/smiles/bc.gif b/legacy/styles/images/smiles/bc.gif similarity index 100% rename from styles/images/smiles/bc.gif rename to legacy/styles/images/smiles/bc.gif diff --git a/styles/images/smiles/bd.gif b/legacy/styles/images/smiles/bd.gif similarity index 100% rename from styles/images/smiles/bd.gif rename to legacy/styles/images/smiles/bd.gif diff --git a/styles/images/smiles/be.gif b/legacy/styles/images/smiles/be.gif similarity index 100% rename from styles/images/smiles/be.gif rename to legacy/styles/images/smiles/be.gif diff --git a/styles/images/smiles/bf.gif b/legacy/styles/images/smiles/bf.gif similarity index 100% rename from styles/images/smiles/bf.gif rename to legacy/styles/images/smiles/bf.gif diff --git a/styles/images/smiles/bg.gif b/legacy/styles/images/smiles/bg.gif similarity index 100% rename from styles/images/smiles/bg.gif rename to legacy/styles/images/smiles/bg.gif diff --git a/styles/images/smiles/bh.gif b/legacy/styles/images/smiles/bh.gif similarity index 100% rename from styles/images/smiles/bh.gif rename to legacy/styles/images/smiles/bh.gif diff --git a/styles/images/smiles/bi.gif b/legacy/styles/images/smiles/bi.gif similarity index 100% rename from styles/images/smiles/bi.gif rename to legacy/styles/images/smiles/bi.gif diff --git a/styles/images/smiles/bj.gif b/legacy/styles/images/smiles/bj.gif similarity index 100% rename from styles/images/smiles/bj.gif rename to legacy/styles/images/smiles/bj.gif diff --git a/styles/images/smiles/bk.gif b/legacy/styles/images/smiles/bk.gif similarity index 100% rename from styles/images/smiles/bk.gif rename to legacy/styles/images/smiles/bk.gif diff --git a/styles/images/smiles/bl.gif b/legacy/styles/images/smiles/bl.gif similarity index 100% rename from styles/images/smiles/bl.gif rename to legacy/styles/images/smiles/bl.gif diff --git a/styles/images/smiles/bm.gif b/legacy/styles/images/smiles/bm.gif similarity index 100% rename from styles/images/smiles/bm.gif rename to legacy/styles/images/smiles/bm.gif diff --git a/styles/images/smiles/bn.gif b/legacy/styles/images/smiles/bn.gif similarity index 100% rename from styles/images/smiles/bn.gif rename to legacy/styles/images/smiles/bn.gif diff --git a/styles/images/smiles/bo.gif b/legacy/styles/images/smiles/bo.gif similarity index 100% rename from styles/images/smiles/bo.gif rename to legacy/styles/images/smiles/bo.gif diff --git a/styles/images/smiles/bp.gif b/legacy/styles/images/smiles/bp.gif similarity index 100% rename from styles/images/smiles/bp.gif rename to legacy/styles/images/smiles/bp.gif diff --git a/styles/images/smiles/bq.gif b/legacy/styles/images/smiles/bq.gif similarity index 100% rename from styles/images/smiles/bq.gif rename to legacy/styles/images/smiles/bq.gif diff --git a/styles/images/smiles/br.gif b/legacy/styles/images/smiles/br.gif similarity index 100% rename from styles/images/smiles/br.gif rename to legacy/styles/images/smiles/br.gif diff --git a/styles/images/smiles/bs.gif b/legacy/styles/images/smiles/bs.gif similarity index 100% rename from styles/images/smiles/bs.gif rename to legacy/styles/images/smiles/bs.gif diff --git a/styles/images/smiles/bt.gif b/legacy/styles/images/smiles/bt.gif similarity index 100% rename from styles/images/smiles/bt.gif rename to legacy/styles/images/smiles/bt.gif diff --git a/styles/images/smiles/bu.gif b/legacy/styles/images/smiles/bu.gif similarity index 100% rename from styles/images/smiles/bu.gif rename to legacy/styles/images/smiles/bu.gif diff --git a/styles/images/smiles/bv.gif b/legacy/styles/images/smiles/bv.gif similarity index 100% rename from styles/images/smiles/bv.gif rename to legacy/styles/images/smiles/bv.gif diff --git a/styles/images/smiles/bw.gif b/legacy/styles/images/smiles/bw.gif similarity index 100% rename from styles/images/smiles/bw.gif rename to legacy/styles/images/smiles/bw.gif diff --git a/styles/images/smiles/bx.gif b/legacy/styles/images/smiles/bx.gif similarity index 100% rename from styles/images/smiles/bx.gif rename to legacy/styles/images/smiles/bx.gif diff --git a/styles/images/smiles/by.gif b/legacy/styles/images/smiles/by.gif similarity index 100% rename from styles/images/smiles/by.gif rename to legacy/styles/images/smiles/by.gif diff --git a/styles/images/smiles/bz.gif b/legacy/styles/images/smiles/bz.gif similarity index 100% rename from styles/images/smiles/bz.gif rename to legacy/styles/images/smiles/bz.gif diff --git a/styles/images/smiles/ca.gif b/legacy/styles/images/smiles/ca.gif similarity index 100% rename from styles/images/smiles/ca.gif rename to legacy/styles/images/smiles/ca.gif diff --git a/styles/images/smiles/cb.gif b/legacy/styles/images/smiles/cb.gif similarity index 100% rename from styles/images/smiles/cb.gif rename to legacy/styles/images/smiles/cb.gif diff --git a/styles/images/smiles/cc.gif b/legacy/styles/images/smiles/cc.gif similarity index 100% rename from styles/images/smiles/cc.gif rename to legacy/styles/images/smiles/cc.gif diff --git a/styles/images/smiles/cd.gif b/legacy/styles/images/smiles/cd.gif similarity index 100% rename from styles/images/smiles/cd.gif rename to legacy/styles/images/smiles/cd.gif diff --git a/styles/images/smiles/tr_oops.gif b/legacy/styles/images/smiles/tr_oops.gif similarity index 100% rename from styles/images/smiles/tr_oops.gif rename to legacy/styles/images/smiles/tr_oops.gif diff --git a/styles/images/spacer.gif b/legacy/styles/images/spacer.gif similarity index 100% rename from styles/images/spacer.gif rename to legacy/styles/images/spacer.gif diff --git a/styles/images/t_info.png b/legacy/styles/images/t_info.png similarity index 100% rename from styles/images/t_info.png rename to legacy/styles/images/t_info.png diff --git a/styles/images/tor_gold.gif b/legacy/styles/images/tor_gold.gif similarity index 100% rename from styles/images/tor_gold.gif rename to legacy/styles/images/tor_gold.gif diff --git a/styles/images/tor_m3u_format.png b/legacy/styles/images/tor_m3u_format.png similarity index 100% rename from styles/images/tor_m3u_format.png rename to legacy/styles/images/tor_m3u_format.png diff --git a/styles/images/tor_silver.gif b/legacy/styles/images/tor_silver.gif similarity index 100% rename from styles/images/tor_silver.gif rename to legacy/styles/images/tor_silver.gif diff --git a/styles/images/user_offline.gif b/legacy/styles/images/user_offline.gif similarity index 100% rename from styles/images/user_offline.gif rename to legacy/styles/images/user_offline.gif diff --git a/styles/images/user_online.gif b/legacy/styles/images/user_online.gif similarity index 100% rename from styles/images/user_online.gif rename to legacy/styles/images/user_online.gif diff --git a/styles/js/bbcode.js b/legacy/styles/js/bbcode.js similarity index 100% rename from styles/js/bbcode.js rename to legacy/styles/js/bbcode.js diff --git a/styles/js/libs/clipboard.min.js b/legacy/styles/js/libs/clipboard.min.js similarity index 100% rename from styles/js/libs/clipboard.min.js rename to legacy/styles/js/libs/clipboard.min.js diff --git a/styles/js/libs/jquery-1.12.4.min.js b/legacy/styles/js/libs/jquery-1.12.4.min.js similarity index 100% rename from styles/js/libs/jquery-1.12.4.min.js rename to legacy/styles/js/libs/jquery-1.12.4.min.js diff --git a/styles/js/libs/jquery-migrate.min.js b/legacy/styles/js/libs/jquery-migrate.min.js similarity index 100% rename from styles/js/libs/jquery-migrate.min.js rename to legacy/styles/js/libs/jquery-migrate.min.js diff --git a/styles/js/libs/legacy.js b/legacy/styles/js/libs/legacy.js similarity index 100% rename from styles/js/libs/legacy.js rename to legacy/styles/js/libs/legacy.js diff --git a/styles/js/libs/oldbrowserdetector.min.js b/legacy/styles/js/libs/oldbrowserdetector.min.js similarity index 100% rename from styles/js/libs/oldbrowserdetector.min.js rename to legacy/styles/js/libs/oldbrowserdetector.min.js diff --git a/styles/js/libs/printThis.min.js b/legacy/styles/js/libs/printThis.min.js similarity index 100% rename from styles/js/libs/printThis.min.js rename to legacy/styles/js/libs/printThis.min.js diff --git a/styles/js/main.js b/legacy/styles/js/main.js similarity index 100% rename from styles/js/main.js rename to legacy/styles/js/main.js diff --git a/styles/templates/admin/admin_attach_cp.tpl b/legacy/styles/templates/admin/admin_attach_cp.tpl similarity index 100% rename from styles/templates/admin/admin_attach_cp.tpl rename to legacy/styles/templates/admin/admin_attach_cp.tpl diff --git a/styles/templates/admin/admin_attachments.tpl b/legacy/styles/templates/admin/admin_attachments.tpl similarity index 100% rename from styles/templates/admin/admin_attachments.tpl rename to legacy/styles/templates/admin/admin_attachments.tpl diff --git a/styles/templates/admin/admin_board.tpl b/legacy/styles/templates/admin/admin_board.tpl similarity index 100% rename from styles/templates/admin/admin_board.tpl rename to legacy/styles/templates/admin/admin_board.tpl diff --git a/styles/templates/admin/admin_bt_forum_cfg.tpl b/legacy/styles/templates/admin/admin_bt_forum_cfg.tpl similarity index 100% rename from styles/templates/admin/admin_bt_forum_cfg.tpl rename to legacy/styles/templates/admin/admin_bt_forum_cfg.tpl diff --git a/styles/templates/admin/admin_cron.tpl b/legacy/styles/templates/admin/admin_cron.tpl similarity index 100% rename from styles/templates/admin/admin_cron.tpl rename to legacy/styles/templates/admin/admin_cron.tpl diff --git a/styles/templates/admin/admin_disallow.tpl b/legacy/styles/templates/admin/admin_disallow.tpl similarity index 100% rename from styles/templates/admin/admin_disallow.tpl rename to legacy/styles/templates/admin/admin_disallow.tpl diff --git a/styles/templates/admin/admin_extensions.tpl b/legacy/styles/templates/admin/admin_extensions.tpl similarity index 100% rename from styles/templates/admin/admin_extensions.tpl rename to legacy/styles/templates/admin/admin_extensions.tpl diff --git a/styles/templates/admin/admin_forum_prune.tpl b/legacy/styles/templates/admin/admin_forum_prune.tpl similarity index 100% rename from styles/templates/admin/admin_forum_prune.tpl rename to legacy/styles/templates/admin/admin_forum_prune.tpl diff --git a/styles/templates/admin/admin_forumauth.tpl b/legacy/styles/templates/admin/admin_forumauth.tpl similarity index 100% rename from styles/templates/admin/admin_forumauth.tpl rename to legacy/styles/templates/admin/admin_forumauth.tpl diff --git a/styles/templates/admin/admin_forumauth_list.tpl b/legacy/styles/templates/admin/admin_forumauth_list.tpl similarity index 100% rename from styles/templates/admin/admin_forumauth_list.tpl rename to legacy/styles/templates/admin/admin_forumauth_list.tpl diff --git a/styles/templates/admin/admin_forums.tpl b/legacy/styles/templates/admin/admin_forums.tpl similarity index 100% rename from styles/templates/admin/admin_forums.tpl rename to legacy/styles/templates/admin/admin_forums.tpl diff --git a/styles/templates/admin/admin_groups.tpl b/legacy/styles/templates/admin/admin_groups.tpl similarity index 100% rename from styles/templates/admin/admin_groups.tpl rename to legacy/styles/templates/admin/admin_groups.tpl diff --git a/styles/templates/admin/admin_log.tpl b/legacy/styles/templates/admin/admin_log.tpl similarity index 100% rename from styles/templates/admin/admin_log.tpl rename to legacy/styles/templates/admin/admin_log.tpl diff --git a/styles/templates/admin/admin_mass_email.tpl b/legacy/styles/templates/admin/admin_mass_email.tpl similarity index 100% rename from styles/templates/admin/admin_mass_email.tpl rename to legacy/styles/templates/admin/admin_mass_email.tpl diff --git a/styles/templates/admin/admin_migrations.tpl b/legacy/styles/templates/admin/admin_migrations.tpl similarity index 100% rename from styles/templates/admin/admin_migrations.tpl rename to legacy/styles/templates/admin/admin_migrations.tpl diff --git a/styles/templates/admin/admin_ranks.tpl b/legacy/styles/templates/admin/admin_ranks.tpl similarity index 100% rename from styles/templates/admin/admin_ranks.tpl rename to legacy/styles/templates/admin/admin_ranks.tpl diff --git a/styles/templates/admin/admin_rebuild_search.tpl b/legacy/styles/templates/admin/admin_rebuild_search.tpl similarity index 100% rename from styles/templates/admin/admin_rebuild_search.tpl rename to legacy/styles/templates/admin/admin_rebuild_search.tpl diff --git a/styles/templates/admin/admin_robots.tpl b/legacy/styles/templates/admin/admin_robots.tpl similarity index 100% rename from styles/templates/admin/admin_robots.tpl rename to legacy/styles/templates/admin/admin_robots.tpl diff --git a/styles/templates/admin/admin_sitemap.tpl b/legacy/styles/templates/admin/admin_sitemap.tpl similarity index 100% rename from styles/templates/admin/admin_sitemap.tpl rename to legacy/styles/templates/admin/admin_sitemap.tpl diff --git a/styles/templates/admin/admin_smilies.tpl b/legacy/styles/templates/admin/admin_smilies.tpl similarity index 100% rename from styles/templates/admin/admin_smilies.tpl rename to legacy/styles/templates/admin/admin_smilies.tpl diff --git a/styles/templates/admin/admin_terms.tpl b/legacy/styles/templates/admin/admin_terms.tpl similarity index 100% rename from styles/templates/admin/admin_terms.tpl rename to legacy/styles/templates/admin/admin_terms.tpl diff --git a/styles/templates/admin/admin_ug_auth.tpl b/legacy/styles/templates/admin/admin_ug_auth.tpl similarity index 100% rename from styles/templates/admin/admin_ug_auth.tpl rename to legacy/styles/templates/admin/admin_ug_auth.tpl diff --git a/styles/templates/admin/admin_user_ban.tpl b/legacy/styles/templates/admin/admin_user_ban.tpl similarity index 100% rename from styles/templates/admin/admin_user_ban.tpl rename to legacy/styles/templates/admin/admin_user_ban.tpl diff --git a/styles/templates/admin/admin_user_search.tpl b/legacy/styles/templates/admin/admin_user_search.tpl similarity index 100% rename from styles/templates/admin/admin_user_search.tpl rename to legacy/styles/templates/admin/admin_user_search.tpl diff --git a/styles/templates/admin/admin_words.tpl b/legacy/styles/templates/admin/admin_words.tpl similarity index 100% rename from styles/templates/admin/admin_words.tpl rename to legacy/styles/templates/admin/admin_words.tpl diff --git a/styles/templates/admin/index.tpl b/legacy/styles/templates/admin/index.tpl similarity index 100% rename from styles/templates/admin/index.tpl rename to legacy/styles/templates/admin/index.tpl diff --git a/styles/templates/default/ajax_edit.tpl b/legacy/styles/templates/default/ajax_edit.tpl similarity index 100% rename from styles/templates/default/ajax_edit.tpl rename to legacy/styles/templates/default/ajax_edit.tpl diff --git a/styles/templates/default/common.tpl b/legacy/styles/templates/default/common.tpl similarity index 100% rename from styles/templates/default/common.tpl rename to legacy/styles/templates/default/common.tpl diff --git a/styles/templates/default/css/admin.css b/legacy/styles/templates/default/css/admin.css similarity index 100% rename from styles/templates/default/css/admin.css rename to legacy/styles/templates/default/css/admin.css diff --git a/styles/templates/default/css/ajax.css b/legacy/styles/templates/default/css/ajax.css similarity index 100% rename from styles/templates/default/css/ajax.css rename to legacy/styles/templates/default/css/ajax.css diff --git a/styles/templates/default/css/alert.css b/legacy/styles/templates/default/css/alert.css similarity index 100% rename from styles/templates/default/css/alert.css rename to legacy/styles/templates/default/css/alert.css diff --git a/styles/templates/default/css/globals.css b/legacy/styles/templates/default/css/globals.css similarity index 100% rename from styles/templates/default/css/globals.css rename to legacy/styles/templates/default/css/globals.css diff --git a/styles/templates/default/css/images.css b/legacy/styles/templates/default/css/images.css similarity index 100% rename from styles/templates/default/css/images.css rename to legacy/styles/templates/default/css/images.css diff --git a/styles/templates/default/css/initial.css b/legacy/styles/templates/default/css/initial.css similarity index 100% rename from styles/templates/default/css/initial.css rename to legacy/styles/templates/default/css/initial.css diff --git a/styles/templates/default/css/main.css b/legacy/styles/templates/default/css/main.css similarity index 100% rename from styles/templates/default/css/main.css rename to legacy/styles/templates/default/css/main.css diff --git a/styles/templates/default/css/main_content.css b/legacy/styles/templates/default/css/main_content.css similarity index 100% rename from styles/templates/default/css/main_content.css rename to legacy/styles/templates/default/css/main_content.css diff --git a/styles/templates/default/css/menus.css b/legacy/styles/templates/default/css/menus.css similarity index 100% rename from styles/templates/default/css/menus.css rename to legacy/styles/templates/default/css/menus.css diff --git a/styles/templates/default/css/misc.css b/legacy/styles/templates/default/css/misc.css similarity index 100% rename from styles/templates/default/css/misc.css rename to legacy/styles/templates/default/css/misc.css diff --git a/styles/templates/default/css/modern-normalize.css b/legacy/styles/templates/default/css/modern-normalize.css similarity index 100% rename from styles/templates/default/css/modern-normalize.css rename to legacy/styles/templates/default/css/modern-normalize.css diff --git a/styles/templates/default/css/page_content.css b/legacy/styles/templates/default/css/page_content.css similarity index 100% rename from styles/templates/default/css/page_content.css rename to legacy/styles/templates/default/css/page_content.css diff --git a/styles/templates/default/css/page_footer.css b/legacy/styles/templates/default/css/page_footer.css similarity index 100% rename from styles/templates/default/css/page_footer.css rename to legacy/styles/templates/default/css/page_footer.css diff --git a/styles/templates/default/css/page_header.css b/legacy/styles/templates/default/css/page_header.css similarity index 100% rename from styles/templates/default/css/page_header.css rename to legacy/styles/templates/default/css/page_header.css diff --git a/styles/templates/default/css/shortcuts.css b/legacy/styles/templates/default/css/shortcuts.css similarity index 100% rename from styles/templates/default/css/shortcuts.css rename to legacy/styles/templates/default/css/shortcuts.css diff --git a/styles/templates/default/css/tablesorter.css b/legacy/styles/templates/default/css/tablesorter.css similarity index 100% rename from styles/templates/default/css/tablesorter.css rename to legacy/styles/templates/default/css/tablesorter.css diff --git a/styles/templates/default/css/top.css b/legacy/styles/templates/default/css/top.css similarity index 100% rename from styles/templates/default/css/top.css rename to legacy/styles/templates/default/css/top.css diff --git a/styles/templates/default/css/youtube.css b/legacy/styles/templates/default/css/youtube.css similarity index 100% rename from styles/templates/default/css/youtube.css rename to legacy/styles/templates/default/css/youtube.css diff --git a/styles/templates/default/filelist.tpl b/legacy/styles/templates/default/filelist.tpl similarity index 100% rename from styles/templates/default/filelist.tpl rename to legacy/styles/templates/default/filelist.tpl diff --git a/styles/templates/default/group.tpl b/legacy/styles/templates/default/group.tpl similarity index 100% rename from styles/templates/default/group.tpl rename to legacy/styles/templates/default/group.tpl diff --git a/styles/templates/default/group_edit.tpl b/legacy/styles/templates/default/group_edit.tpl similarity index 100% rename from styles/templates/default/group_edit.tpl rename to legacy/styles/templates/default/group_edit.tpl diff --git a/styles/templates/default/images/aerobg.png b/legacy/styles/templates/default/images/aerobg.png similarity index 100% rename from styles/templates/default/images/aerobg.png rename to legacy/styles/templates/default/images/aerobg.png diff --git a/styles/templates/default/images/arrow1.gif b/legacy/styles/templates/default/images/arrow1.gif similarity index 100% rename from styles/templates/default/images/arrow1.gif rename to legacy/styles/templates/default/images/arrow1.gif diff --git a/styles/templates/default/images/button.gif b/legacy/styles/templates/default/images/button.gif similarity index 100% rename from styles/templates/default/images/button.gif rename to legacy/styles/templates/default/images/button.gif diff --git a/styles/templates/default/images/cellpic.gif b/legacy/styles/templates/default/images/cellpic.gif similarity index 100% rename from styles/templates/default/images/cellpic.gif rename to legacy/styles/templates/default/images/cellpic.gif diff --git a/styles/templates/default/images/cellpic1.gif b/legacy/styles/templates/default/images/cellpic1.gif similarity index 100% rename from styles/templates/default/images/cellpic1.gif rename to legacy/styles/templates/default/images/cellpic1.gif diff --git a/styles/templates/default/images/def_button.png b/legacy/styles/templates/default/images/def_button.png similarity index 100% rename from styles/templates/default/images/def_button.png rename to legacy/styles/templates/default/images/def_button.png diff --git a/styles/templates/default/images/def_button_light.png b/legacy/styles/templates/default/images/def_button_light.png similarity index 100% rename from styles/templates/default/images/def_button_light.png rename to legacy/styles/templates/default/images/def_button_light.png diff --git a/styles/templates/default/images/feed.png b/legacy/styles/templates/default/images/feed.png similarity index 100% rename from styles/templates/default/images/feed.png rename to legacy/styles/templates/default/images/feed.png diff --git a/styles/templates/default/images/folder.gif b/legacy/styles/templates/default/images/folder.gif similarity index 100% rename from styles/templates/default/images/folder.gif rename to legacy/styles/templates/default/images/folder.gif diff --git a/styles/templates/default/images/folder_announce.gif b/legacy/styles/templates/default/images/folder_announce.gif similarity index 100% rename from styles/templates/default/images/folder_announce.gif rename to legacy/styles/templates/default/images/folder_announce.gif diff --git a/styles/templates/default/images/folder_announce_new.gif b/legacy/styles/templates/default/images/folder_announce_new.gif similarity index 100% rename from styles/templates/default/images/folder_announce_new.gif rename to legacy/styles/templates/default/images/folder_announce_new.gif diff --git a/styles/templates/default/images/folder_big.gif b/legacy/styles/templates/default/images/folder_big.gif similarity index 100% rename from styles/templates/default/images/folder_big.gif rename to legacy/styles/templates/default/images/folder_big.gif diff --git a/styles/templates/default/images/folder_dl.gif b/legacy/styles/templates/default/images/folder_dl.gif similarity index 100% rename from styles/templates/default/images/folder_dl.gif rename to legacy/styles/templates/default/images/folder_dl.gif diff --git a/styles/templates/default/images/folder_dl_hot.gif b/legacy/styles/templates/default/images/folder_dl_hot.gif similarity index 100% rename from styles/templates/default/images/folder_dl_hot.gif rename to legacy/styles/templates/default/images/folder_dl_hot.gif diff --git a/styles/templates/default/images/folder_dl_hot_new.gif b/legacy/styles/templates/default/images/folder_dl_hot_new.gif similarity index 100% rename from styles/templates/default/images/folder_dl_hot_new.gif rename to legacy/styles/templates/default/images/folder_dl_hot_new.gif diff --git a/styles/templates/default/images/folder_dl_new.gif b/legacy/styles/templates/default/images/folder_dl_new.gif similarity index 100% rename from styles/templates/default/images/folder_dl_new.gif rename to legacy/styles/templates/default/images/folder_dl_new.gif diff --git a/styles/templates/default/images/folder_hot.gif b/legacy/styles/templates/default/images/folder_hot.gif similarity index 100% rename from styles/templates/default/images/folder_hot.gif rename to legacy/styles/templates/default/images/folder_hot.gif diff --git a/styles/templates/default/images/folder_lock.gif b/legacy/styles/templates/default/images/folder_lock.gif similarity index 100% rename from styles/templates/default/images/folder_lock.gif rename to legacy/styles/templates/default/images/folder_lock.gif diff --git a/styles/templates/default/images/folder_lock_new.gif b/legacy/styles/templates/default/images/folder_lock_new.gif similarity index 100% rename from styles/templates/default/images/folder_lock_new.gif rename to legacy/styles/templates/default/images/folder_lock_new.gif diff --git a/styles/templates/default/images/folder_locked_big.gif b/legacy/styles/templates/default/images/folder_locked_big.gif similarity index 100% rename from styles/templates/default/images/folder_locked_big.gif rename to legacy/styles/templates/default/images/folder_locked_big.gif diff --git a/styles/templates/default/images/folder_new.gif b/legacy/styles/templates/default/images/folder_new.gif similarity index 100% rename from styles/templates/default/images/folder_new.gif rename to legacy/styles/templates/default/images/folder_new.gif diff --git a/styles/templates/default/images/folder_new_big.gif b/legacy/styles/templates/default/images/folder_new_big.gif similarity index 100% rename from styles/templates/default/images/folder_new_big.gif rename to legacy/styles/templates/default/images/folder_new_big.gif diff --git a/styles/templates/default/images/folder_new_hot.gif b/legacy/styles/templates/default/images/folder_new_hot.gif similarity index 100% rename from styles/templates/default/images/folder_new_hot.gif rename to legacy/styles/templates/default/images/folder_new_hot.gif diff --git a/styles/templates/default/images/folder_sticky.gif b/legacy/styles/templates/default/images/folder_sticky.gif similarity index 100% rename from styles/templates/default/images/folder_sticky.gif rename to legacy/styles/templates/default/images/folder_sticky.gif diff --git a/styles/templates/default/images/folder_sticky_new.gif b/legacy/styles/templates/default/images/folder_sticky_new.gif similarity index 100% rename from styles/templates/default/images/folder_sticky_new.gif rename to legacy/styles/templates/default/images/folder_sticky_new.gif diff --git a/styles/templates/default/images/hr200_ltr_gradient.jpg b/legacy/styles/templates/default/images/hr200_ltr_gradient.jpg similarity index 100% rename from styles/templates/default/images/hr200_ltr_gradient.jpg rename to legacy/styles/templates/default/images/hr200_ltr_gradient.jpg diff --git a/styles/templates/default/images/hr400_ltr_gradient.jpg b/legacy/styles/templates/default/images/hr400_ltr_gradient.jpg similarity index 100% rename from styles/templates/default/images/hr400_ltr_gradient.jpg rename to legacy/styles/templates/default/images/hr400_ltr_gradient.jpg diff --git a/styles/templates/default/images/icon_birthday.gif b/legacy/styles/templates/default/images/icon_birthday.gif similarity index 100% rename from styles/templates/default/images/icon_birthday.gif rename to legacy/styles/templates/default/images/icon_birthday.gif diff --git a/styles/templates/default/images/icon_delete.gif b/legacy/styles/templates/default/images/icon_delete.gif similarity index 100% rename from styles/templates/default/images/icon_delete.gif rename to legacy/styles/templates/default/images/icon_delete.gif diff --git a/styles/templates/default/images/icon_female.gif b/legacy/styles/templates/default/images/icon_female.gif similarity index 100% rename from styles/templates/default/images/icon_female.gif rename to legacy/styles/templates/default/images/icon_female.gif diff --git a/styles/templates/default/images/icon_latest_reply.gif b/legacy/styles/templates/default/images/icon_latest_reply.gif similarity index 100% rename from styles/templates/default/images/icon_latest_reply.gif rename to legacy/styles/templates/default/images/icon_latest_reply.gif diff --git a/styles/templates/default/images/icon_male.gif b/legacy/styles/templates/default/images/icon_male.gif similarity index 100% rename from styles/templates/default/images/icon_male.gif rename to legacy/styles/templates/default/images/icon_male.gif diff --git a/styles/templates/default/images/icon_minipost.gif b/legacy/styles/templates/default/images/icon_minipost.gif similarity index 100% rename from styles/templates/default/images/icon_minipost.gif rename to legacy/styles/templates/default/images/icon_minipost.gif diff --git a/styles/templates/default/images/icon_minipost_new.gif b/legacy/styles/templates/default/images/icon_minipost_new.gif similarity index 100% rename from styles/templates/default/images/icon_minipost_new.gif rename to legacy/styles/templates/default/images/icon_minipost_new.gif diff --git a/styles/templates/default/images/icon_minus_1.gif b/legacy/styles/templates/default/images/icon_minus_1.gif similarity index 100% rename from styles/templates/default/images/icon_minus_1.gif rename to legacy/styles/templates/default/images/icon_minus_1.gif diff --git a/styles/templates/default/images/icon_minus_2.gif b/legacy/styles/templates/default/images/icon_minus_2.gif similarity index 100% rename from styles/templates/default/images/icon_minus_2.gif rename to legacy/styles/templates/default/images/icon_minus_2.gif diff --git a/styles/templates/default/images/icon_mod.gif b/legacy/styles/templates/default/images/icon_mod.gif similarity index 100% rename from styles/templates/default/images/icon_mod.gif rename to legacy/styles/templates/default/images/icon_mod.gif diff --git a/styles/templates/default/images/icon_newest_reply.gif b/legacy/styles/templates/default/images/icon_newest_reply.gif similarity index 100% rename from styles/templates/default/images/icon_newest_reply.gif rename to legacy/styles/templates/default/images/icon_newest_reply.gif diff --git a/styles/templates/default/images/icon_nogender.gif b/legacy/styles/templates/default/images/icon_nogender.gif similarity index 100% rename from styles/templates/default/images/icon_nogender.gif rename to legacy/styles/templates/default/images/icon_nogender.gif diff --git a/styles/templates/default/images/icon_plus_1.gif b/legacy/styles/templates/default/images/icon_plus_1.gif similarity index 100% rename from styles/templates/default/images/icon_plus_1.gif rename to legacy/styles/templates/default/images/icon_plus_1.gif diff --git a/styles/templates/default/images/icon_plus_2.gif b/legacy/styles/templates/default/images/icon_plus_2.gif similarity index 100% rename from styles/templates/default/images/icon_plus_2.gif rename to legacy/styles/templates/default/images/icon_plus_2.gif diff --git a/styles/templates/default/images/img_alert.gif b/legacy/styles/templates/default/images/img_alert.gif similarity index 100% rename from styles/templates/default/images/img_alert.gif rename to legacy/styles/templates/default/images/img_alert.gif diff --git a/styles/templates/default/images/lang/af/icon_code.gif b/legacy/styles/templates/default/images/lang/en/icon_code.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_code.gif rename to legacy/styles/templates/default/images/lang/en/icon_code.gif diff --git a/styles/templates/default/images/lang/af/icon_edit.gif b/legacy/styles/templates/default/images/lang/en/icon_edit.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_edit.gif rename to legacy/styles/templates/default/images/lang/en/icon_edit.gif diff --git a/styles/templates/default/images/lang/af/icon_email.gif b/legacy/styles/templates/default/images/lang/en/icon_email.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_email.gif rename to legacy/styles/templates/default/images/lang/en/icon_email.gif diff --git a/styles/templates/default/images/lang/af/icon_icq_add.gif b/legacy/styles/templates/default/images/lang/en/icon_icq_add.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_icq_add.gif rename to legacy/styles/templates/default/images/lang/en/icon_icq_add.gif diff --git a/styles/templates/default/images/lang/af/icon_ip.gif b/legacy/styles/templates/default/images/lang/en/icon_ip.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_ip.gif rename to legacy/styles/templates/default/images/lang/en/icon_ip.gif diff --git a/styles/templates/default/images/lang/af/icon_mc.gif b/legacy/styles/templates/default/images/lang/en/icon_mc.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_mc.gif rename to legacy/styles/templates/default/images/lang/en/icon_mc.gif diff --git a/styles/templates/default/images/lang/af/icon_pm.gif b/legacy/styles/templates/default/images/lang/en/icon_pm.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_pm.gif rename to legacy/styles/templates/default/images/lang/en/icon_pm.gif diff --git a/styles/templates/default/images/lang/af/icon_poll.gif b/legacy/styles/templates/default/images/lang/en/icon_poll.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_poll.gif rename to legacy/styles/templates/default/images/lang/en/icon_poll.gif diff --git a/styles/templates/default/images/lang/af/icon_profile.gif b/legacy/styles/templates/default/images/lang/en/icon_profile.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_profile.gif rename to legacy/styles/templates/default/images/lang/en/icon_profile.gif diff --git a/styles/templates/default/images/lang/af/icon_quote.gif b/legacy/styles/templates/default/images/lang/en/icon_quote.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_quote.gif rename to legacy/styles/templates/default/images/lang/en/icon_quote.gif diff --git a/styles/templates/default/images/lang/af/icon_search.gif b/legacy/styles/templates/default/images/lang/en/icon_search.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_search.gif rename to legacy/styles/templates/default/images/lang/en/icon_search.gif diff --git a/styles/templates/default/images/lang/af/icon_www.gif b/legacy/styles/templates/default/images/lang/en/icon_www.gif similarity index 100% rename from styles/templates/default/images/lang/af/icon_www.gif rename to legacy/styles/templates/default/images/lang/en/icon_www.gif diff --git a/styles/templates/default/images/lang/af/msg_newpost.gif b/legacy/styles/templates/default/images/lang/en/msg_newpost.gif similarity index 100% rename from styles/templates/default/images/lang/af/msg_newpost.gif rename to legacy/styles/templates/default/images/lang/en/msg_newpost.gif diff --git a/styles/templates/default/images/lang/af/post.gif b/legacy/styles/templates/default/images/lang/en/post.gif similarity index 100% rename from styles/templates/default/images/lang/af/post.gif rename to legacy/styles/templates/default/images/lang/en/post.gif diff --git a/styles/templates/default/images/lang/af/release.gif b/legacy/styles/templates/default/images/lang/en/release.gif similarity index 100% rename from styles/templates/default/images/lang/af/release.gif rename to legacy/styles/templates/default/images/lang/en/release.gif diff --git a/styles/templates/default/images/lang/af/reply-locked.gif b/legacy/styles/templates/default/images/lang/en/reply-locked.gif similarity index 100% rename from styles/templates/default/images/lang/af/reply-locked.gif rename to legacy/styles/templates/default/images/lang/en/reply-locked.gif diff --git a/styles/templates/default/images/lang/af/reply.gif b/legacy/styles/templates/default/images/lang/en/reply.gif similarity index 100% rename from styles/templates/default/images/lang/af/reply.gif rename to legacy/styles/templates/default/images/lang/en/reply.gif diff --git a/styles/templates/default/images/link_help.cur b/legacy/styles/templates/default/images/link_help.cur similarity index 100% rename from styles/templates/default/images/link_help.cur rename to legacy/styles/templates/default/images/link_help.cur diff --git a/styles/templates/default/images/loading.gif b/legacy/styles/templates/default/images/loading.gif similarity index 100% rename from styles/templates/default/images/loading.gif rename to legacy/styles/templates/default/images/loading.gif diff --git a/styles/templates/default/images/menu_open.gif b/legacy/styles/templates/default/images/menu_open.gif similarity index 100% rename from styles/templates/default/images/menu_open.gif rename to legacy/styles/templates/default/images/menu_open.gif diff --git a/styles/templates/default/images/menu_open_1.gif b/legacy/styles/templates/default/images/menu_open_1.gif similarity index 100% rename from styles/templates/default/images/menu_open_1.gif rename to legacy/styles/templates/default/images/menu_open_1.gif diff --git a/styles/templates/default/images/msg_inbox.gif b/legacy/styles/templates/default/images/msg_inbox.gif similarity index 100% rename from styles/templates/default/images/msg_inbox.gif rename to legacy/styles/templates/default/images/msg_inbox.gif diff --git a/styles/templates/default/images/msg_outbox.gif b/legacy/styles/templates/default/images/msg_outbox.gif similarity index 100% rename from styles/templates/default/images/msg_outbox.gif rename to legacy/styles/templates/default/images/msg_outbox.gif diff --git a/styles/templates/default/images/msg_savebox.gif b/legacy/styles/templates/default/images/msg_savebox.gif similarity index 100% rename from styles/templates/default/images/msg_savebox.gif rename to legacy/styles/templates/default/images/msg_savebox.gif diff --git a/styles/templates/default/images/msg_sentbox.gif b/legacy/styles/templates/default/images/msg_sentbox.gif similarity index 100% rename from styles/templates/default/images/msg_sentbox.gif rename to legacy/styles/templates/default/images/msg_sentbox.gif diff --git a/styles/templates/default/images/progress_bar.gif b/legacy/styles/templates/default/images/progress_bar.gif similarity index 100% rename from styles/templates/default/images/progress_bar.gif rename to legacy/styles/templates/default/images/progress_bar.gif diff --git a/styles/templates/default/images/progress_bar_full.gif b/legacy/styles/templates/default/images/progress_bar_full.gif similarity index 100% rename from styles/templates/default/images/progress_bar_full.gif rename to legacy/styles/templates/default/images/progress_bar_full.gif diff --git a/styles/templates/default/images/spacer.gif b/legacy/styles/templates/default/images/spacer.gif similarity index 100% rename from styles/templates/default/images/spacer.gif rename to legacy/styles/templates/default/images/spacer.gif diff --git a/styles/templates/default/images/tbl_sort_asc.gif b/legacy/styles/templates/default/images/tbl_sort_asc.gif similarity index 100% rename from styles/templates/default/images/tbl_sort_asc.gif rename to legacy/styles/templates/default/images/tbl_sort_asc.gif diff --git a/styles/templates/default/images/tbl_sort_bg.gif b/legacy/styles/templates/default/images/tbl_sort_bg.gif similarity index 100% rename from styles/templates/default/images/tbl_sort_bg.gif rename to legacy/styles/templates/default/images/tbl_sort_bg.gif diff --git a/styles/templates/default/images/tbl_sort_desc.gif b/legacy/styles/templates/default/images/tbl_sort_desc.gif similarity index 100% rename from styles/templates/default/images/tbl_sort_desc.gif rename to legacy/styles/templates/default/images/tbl_sort_desc.gif diff --git a/styles/templates/default/images/topic_delete.gif b/legacy/styles/templates/default/images/topic_delete.gif similarity index 100% rename from styles/templates/default/images/topic_delete.gif rename to legacy/styles/templates/default/images/topic_delete.gif diff --git a/styles/templates/default/images/topic_dl.gif b/legacy/styles/templates/default/images/topic_dl.gif similarity index 100% rename from styles/templates/default/images/topic_dl.gif rename to legacy/styles/templates/default/images/topic_dl.gif diff --git a/styles/templates/default/images/topic_lock.gif b/legacy/styles/templates/default/images/topic_lock.gif similarity index 100% rename from styles/templates/default/images/topic_lock.gif rename to legacy/styles/templates/default/images/topic_lock.gif diff --git a/styles/templates/default/images/topic_move.gif b/legacy/styles/templates/default/images/topic_move.gif similarity index 100% rename from styles/templates/default/images/topic_move.gif rename to legacy/styles/templates/default/images/topic_move.gif diff --git a/styles/templates/default/images/topic_normal.gif b/legacy/styles/templates/default/images/topic_normal.gif similarity index 100% rename from styles/templates/default/images/topic_normal.gif rename to legacy/styles/templates/default/images/topic_normal.gif diff --git a/styles/templates/default/images/topic_split.gif b/legacy/styles/templates/default/images/topic_split.gif similarity index 100% rename from styles/templates/default/images/topic_split.gif rename to legacy/styles/templates/default/images/topic_split.gif diff --git a/styles/templates/default/images/topic_unlock.gif b/legacy/styles/templates/default/images/topic_unlock.gif similarity index 100% rename from styles/templates/default/images/topic_unlock.gif rename to legacy/styles/templates/default/images/topic_unlock.gif diff --git a/styles/templates/default/images/treeview/treeview-default-line.gif b/legacy/styles/templates/default/images/treeview/treeview-default-line.gif similarity index 100% rename from styles/templates/default/images/treeview/treeview-default-line.gif rename to legacy/styles/templates/default/images/treeview/treeview-default-line.gif diff --git a/styles/templates/default/images/treeview/treeview-default.gif b/legacy/styles/templates/default/images/treeview/treeview-default.gif similarity index 100% rename from styles/templates/default/images/treeview/treeview-default.gif rename to legacy/styles/templates/default/images/treeview/treeview-default.gif diff --git a/styles/templates/default/images/vote_lcap.gif b/legacy/styles/templates/default/images/vote_lcap.gif similarity index 100% rename from styles/templates/default/images/vote_lcap.gif rename to legacy/styles/templates/default/images/vote_lcap.gif diff --git a/styles/templates/default/images/vote_rcap.gif b/legacy/styles/templates/default/images/vote_rcap.gif similarity index 100% rename from styles/templates/default/images/vote_rcap.gif rename to legacy/styles/templates/default/images/vote_rcap.gif diff --git a/styles/templates/default/images/voting_bar.gif b/legacy/styles/templates/default/images/voting_bar.gif similarity index 100% rename from styles/templates/default/images/voting_bar.gif rename to legacy/styles/templates/default/images/voting_bar.gif diff --git a/styles/templates/default/images/whosonline.gif b/legacy/styles/templates/default/images/whosonline.gif similarity index 100% rename from styles/templates/default/images/whosonline.gif rename to legacy/styles/templates/default/images/whosonline.gif diff --git a/styles/templates/default/index.tpl b/legacy/styles/templates/default/index.tpl similarity index 100% rename from styles/templates/default/index.tpl rename to legacy/styles/templates/default/index.tpl diff --git a/styles/templates/default/index_map.tpl b/legacy/styles/templates/default/index_map.tpl similarity index 100% rename from styles/templates/default/index_map.tpl rename to legacy/styles/templates/default/index_map.tpl diff --git a/styles/templates/default/info.tpl b/legacy/styles/templates/default/info.tpl similarity index 100% rename from styles/templates/default/info.tpl rename to legacy/styles/templates/default/info.tpl diff --git a/styles/templates/default/login.tpl b/legacy/styles/templates/default/login.tpl similarity index 100% rename from styles/templates/default/login.tpl rename to legacy/styles/templates/default/login.tpl diff --git a/styles/templates/default/memberlist.tpl b/legacy/styles/templates/default/memberlist.tpl similarity index 100% rename from styles/templates/default/memberlist.tpl rename to legacy/styles/templates/default/memberlist.tpl diff --git a/styles/templates/default/modcp.tpl b/legacy/styles/templates/default/modcp.tpl similarity index 100% rename from styles/templates/default/modcp.tpl rename to legacy/styles/templates/default/modcp.tpl diff --git a/styles/templates/default/modcp_split.tpl b/legacy/styles/templates/default/modcp_split.tpl similarity index 100% rename from styles/templates/default/modcp_split.tpl rename to legacy/styles/templates/default/modcp_split.tpl diff --git a/styles/templates/default/page_footer.tpl b/legacy/styles/templates/default/page_footer.tpl similarity index 100% rename from styles/templates/default/page_footer.tpl rename to legacy/styles/templates/default/page_footer.tpl diff --git a/styles/templates/default/page_header.tpl b/legacy/styles/templates/default/page_header.tpl similarity index 100% rename from styles/templates/default/page_header.tpl rename to legacy/styles/templates/default/page_header.tpl diff --git a/styles/templates/default/playback_m3u.tpl b/legacy/styles/templates/default/playback_m3u.tpl similarity index 100% rename from styles/templates/default/playback_m3u.tpl rename to legacy/styles/templates/default/playback_m3u.tpl diff --git a/styles/templates/default/posting.tpl b/legacy/styles/templates/default/posting.tpl similarity index 100% rename from styles/templates/default/posting.tpl rename to legacy/styles/templates/default/posting.tpl diff --git a/styles/templates/default/posting_attach.tpl b/legacy/styles/templates/default/posting_attach.tpl similarity index 100% rename from styles/templates/default/posting_attach.tpl rename to legacy/styles/templates/default/posting_attach.tpl diff --git a/styles/templates/default/posting_editor.tpl b/legacy/styles/templates/default/posting_editor.tpl similarity index 100% rename from styles/templates/default/posting_editor.tpl rename to legacy/styles/templates/default/posting_editor.tpl diff --git a/styles/templates/default/posting_smilies.tpl b/legacy/styles/templates/default/posting_smilies.tpl similarity index 100% rename from styles/templates/default/posting_smilies.tpl rename to legacy/styles/templates/default/posting_smilies.tpl diff --git a/styles/templates/default/privmsgs.tpl b/legacy/styles/templates/default/privmsgs.tpl similarity index 100% rename from styles/templates/default/privmsgs.tpl rename to legacy/styles/templates/default/privmsgs.tpl diff --git a/styles/templates/default/privmsgs_read.tpl b/legacy/styles/templates/default/privmsgs_read.tpl similarity index 100% rename from styles/templates/default/privmsgs_read.tpl rename to legacy/styles/templates/default/privmsgs_read.tpl diff --git a/styles/templates/default/search.tpl b/legacy/styles/templates/default/search.tpl similarity index 100% rename from styles/templates/default/search.tpl rename to legacy/styles/templates/default/search.tpl diff --git a/styles/templates/default/search_results.tpl b/legacy/styles/templates/default/search_results.tpl similarity index 100% rename from styles/templates/default/search_results.tpl rename to legacy/styles/templates/default/search_results.tpl diff --git a/styles/templates/default/terms.tpl b/legacy/styles/templates/default/terms.tpl similarity index 100% rename from styles/templates/default/terms.tpl rename to legacy/styles/templates/default/terms.tpl diff --git a/styles/templates/default/torhelp.tpl b/legacy/styles/templates/default/torhelp.tpl similarity index 100% rename from styles/templates/default/torhelp.tpl rename to legacy/styles/templates/default/torhelp.tpl diff --git a/styles/templates/default/tpl_config.php b/legacy/styles/templates/default/tpl_config.php similarity index 100% rename from styles/templates/default/tpl_config.php rename to legacy/styles/templates/default/tpl_config.php diff --git a/styles/templates/default/tracker.tpl b/legacy/styles/templates/default/tracker.tpl similarity index 100% rename from styles/templates/default/tracker.tpl rename to legacy/styles/templates/default/tracker.tpl diff --git a/styles/templates/default/usercp_bonus.tpl b/legacy/styles/templates/default/usercp_bonus.tpl similarity index 100% rename from styles/templates/default/usercp_bonus.tpl rename to legacy/styles/templates/default/usercp_bonus.tpl diff --git a/styles/templates/default/usercp_email.tpl b/legacy/styles/templates/default/usercp_email.tpl similarity index 100% rename from styles/templates/default/usercp_email.tpl rename to legacy/styles/templates/default/usercp_email.tpl diff --git a/styles/templates/default/usercp_register.tpl b/legacy/styles/templates/default/usercp_register.tpl similarity index 100% rename from styles/templates/default/usercp_register.tpl rename to legacy/styles/templates/default/usercp_register.tpl diff --git a/styles/templates/default/usercp_sendpasswd.tpl b/legacy/styles/templates/default/usercp_sendpasswd.tpl similarity index 100% rename from styles/templates/default/usercp_sendpasswd.tpl rename to legacy/styles/templates/default/usercp_sendpasswd.tpl diff --git a/styles/templates/default/usercp_topic_watch.tpl b/legacy/styles/templates/default/usercp_topic_watch.tpl similarity index 100% rename from styles/templates/default/usercp_topic_watch.tpl rename to legacy/styles/templates/default/usercp_topic_watch.tpl diff --git a/styles/templates/default/usercp_viewprofile.tpl b/legacy/styles/templates/default/usercp_viewprofile.tpl similarity index 100% rename from styles/templates/default/usercp_viewprofile.tpl rename to legacy/styles/templates/default/usercp_viewprofile.tpl diff --git a/styles/templates/default/viewforum.tpl b/legacy/styles/templates/default/viewforum.tpl similarity index 100% rename from styles/templates/default/viewforum.tpl rename to legacy/styles/templates/default/viewforum.tpl diff --git a/styles/templates/default/viewtopic.tpl b/legacy/styles/templates/default/viewtopic.tpl similarity index 100% rename from styles/templates/default/viewtopic.tpl rename to legacy/styles/templates/default/viewtopic.tpl diff --git a/styles/templates/default/viewtopic_attach.tpl b/legacy/styles/templates/default/viewtopic_attach.tpl similarity index 100% rename from styles/templates/default/viewtopic_attach.tpl rename to legacy/styles/templates/default/viewtopic_attach.tpl diff --git a/styles/templates/default/viewtopic_attach_guest.tpl b/legacy/styles/templates/default/viewtopic_attach_guest.tpl similarity index 100% rename from styles/templates/default/viewtopic_attach_guest.tpl rename to legacy/styles/templates/default/viewtopic_attach_guest.tpl diff --git a/styles/templates/default/viewtopic_poll.tpl b/legacy/styles/templates/default/viewtopic_poll.tpl similarity index 100% rename from styles/templates/default/viewtopic_poll.tpl rename to legacy/styles/templates/default/viewtopic_poll.tpl diff --git a/styles/templates/default/viewtopic_torrent.tpl b/legacy/styles/templates/default/viewtopic_torrent.tpl similarity index 100% rename from styles/templates/default/viewtopic_torrent.tpl rename to legacy/styles/templates/default/viewtopic_torrent.tpl diff --git a/styles/templates/posting_tpl.tpl b/legacy/styles/templates/posting_tpl.tpl similarity index 100% rename from styles/templates/posting_tpl.tpl rename to legacy/styles/templates/posting_tpl.tpl diff --git a/terms.php b/legacy/terms.php similarity index 100% rename from terms.php rename to legacy/terms.php diff --git a/tracker.php b/legacy/tracker.php similarity index 100% rename from tracker.php rename to legacy/tracker.php diff --git a/viewforum.php b/legacy/viewforum.php similarity index 100% rename from viewforum.php rename to legacy/viewforum.php diff --git a/viewtopic.php b/legacy/viewtopic.php similarity index 100% rename from viewtopic.php rename to legacy/viewtopic.php diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index e6198e0e7..000000000 --- a/phpunit.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - ./tests - - - - - app - src - - - diff --git a/sitemap/.keep b/sitemap/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/Application/Forum/Command/README.md b/src/Application/Forum/Command/README.md deleted file mode 100644 index eae098d4a..000000000 --- a/src/Application/Forum/Command/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Forum Commands - -Commands representing write operations: - -- `CreateThreadCommand`: Start new discussion -- `CreatePostCommand`: Reply to thread -- `EditPostCommand`: Modify existing post -- `LockThreadCommand`: Lock thread from replies -- `DeletePostCommand`: Remove post - -Commands are simple DTOs containing operation data. \ No newline at end of file diff --git a/src/Application/Forum/Handler/README.md b/src/Application/Forum/Handler/README.md deleted file mode 100644 index 4af804611..000000000 --- a/src/Application/Forum/Handler/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Forum Handlers - -Command and query handlers for forum operations: - -- `CreateThreadHandler`: Handles thread creation -- `CreatePostHandler`: Handles post creation -- `GetThreadListHandler`: Retrieves thread listings - -Handlers coordinate between domain and infrastructure layers. \ No newline at end of file diff --git a/src/Application/Forum/Query/README.md b/src/Application/Forum/Query/README.md deleted file mode 100644 index 845ef3948..000000000 --- a/src/Application/Forum/Query/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Forum Queries - -Read-only queries for forum data: - -- `GetThreadListQuery`: Paginated thread listing -- `GetPostsByThreadQuery`: Thread posts with pagination -- `SearchPostsQuery`: Full-text post search -- `GetForumStatsQuery`: Forum statistics - -Queries return DTOs optimized for presentation. \ No newline at end of file diff --git a/src/Application/README.md b/src/Application/README.md deleted file mode 100644 index f7a27973c..000000000 --- a/src/Application/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Application Layer - -Contains application services that orchestrate domain objects to fulfill use cases. - -- Commands: Write operations that change state -- Queries: Read operations for data retrieval -- Handlers: Process commands and queries - -This layer should: - -- Coordinate domain objects -- Handle transactions -- Dispatch domain events -- Not contain business logic \ No newline at end of file diff --git a/src/Application/Tracker/Command/README.md b/src/Application/Tracker/Command/README.md deleted file mode 100644 index 800c6579d..000000000 --- a/src/Application/Tracker/Command/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Tracker Commands - -Commands representing write operations: - -- `RegisterTorrentCommand`: Register new torrent -- `UpdateTorrentCommand`: Modify torrent details -- `DeleteTorrentCommand`: Remove torrent from tracker - -Example: - -```php -final class RegisterTorrentCommand -{ - public function __construct( - public readonly string $infoHash, - public readonly int $uploaderId, - public readonly string $name, - public readonly int $size - ) {} -} -``` \ No newline at end of file diff --git a/src/Application/Tracker/Handler/README.md b/src/Application/Tracker/Handler/README.md deleted file mode 100644 index b30755d33..000000000 --- a/src/Application/Tracker/Handler/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Tracker Handlers - -Command and query handlers for tracker operations: - -- `RegisterTorrentHandler`: Processes torrent registration -- `GetTorrentDetailsHandler`: Retrieves torrent information -- `UpdateTorrentHandler`: Handles torrent updates - -Note: High-performance announce operations bypass this layer. \ No newline at end of file diff --git a/src/Application/Tracker/Query/README.md b/src/Application/Tracker/Query/README.md deleted file mode 100644 index 05e42e39f..000000000 --- a/src/Application/Tracker/Query/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Tracker Queries - -Read-only queries for tracker data: - -- `GetTorrentDetailsQuery`: Single torrent information -- `GetPeerListQuery`: Active peers for torrent -- `GetTorrentStatsQuery`: Download/upload statistics -- `SearchTorrentsQuery`: Browse and filter torrents - -Optimized for high-performance read operations. \ No newline at end of file diff --git a/src/Application/User/Command/README.md b/src/Application/User/Command/README.md deleted file mode 100644 index fbf0342be..000000000 --- a/src/Application/User/Command/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# User Commands - -Commands for user management operations: - -- `RegisterUserCommand`: New user registration -- `ChangePasswordCommand`: Password update -- `UpdateProfileCommand`: Profile modifications -- `ActivateUserCommand`: Account activation -- `BanUserCommand`: User suspension - -These commands trigger domain events for cross-context synchronization. \ No newline at end of file diff --git a/src/Application/User/Handler/README.md b/src/Application/User/Handler/README.md deleted file mode 100644 index 8f34ce418..000000000 --- a/src/Application/User/Handler/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# User Handlers - -Command and query handlers for user operations: - -- `RegisterUserHandler`: Processes user registration -- `ChangePasswordHandler`: Handles password changes -- `GetUserProfileHandler`: Retrieves user profiles - -Handlers manage transactions and event dispatching. \ No newline at end of file diff --git a/src/Application/User/Query/README.md b/src/Application/User/Query/README.md deleted file mode 100644 index 1307a51ec..000000000 --- a/src/Application/User/Query/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# User Queries - -Read operations for user data: - -- `GetUserProfileQuery`: User profile details -- `SearchUsersQuery`: User search with filters -- `GetUserStatisticsQuery`: Upload/download stats -- `GetUserPermissionsQuery`: Authorization data - -Returns DTOs suitable for presentation layer. \ No newline at end of file diff --git a/src/Cache/README.md b/src/Cache/README.md deleted file mode 100644 index e2151819b..000000000 --- a/src/Cache/README.md +++ /dev/null @@ -1,422 +0,0 @@ -# Unified Cache System - -A modern, unified caching solution for TorrentPier 3.0 that uses **Nette Caching** internally. **Breaking changes**: This replaces the legacy Cache and Datastore APIs and requires code migration. - -## Overview - -The Unified Cache System addresses the complexity and duplication in TorrentPier's caching architecture by: - -- **Unifying** Cache and Datastore systems into a single, coherent solution -- **Modernizing** the caching layer with Nette's advanced features and breaking changes for better architecture -- **Reducing** complexity and maintenance overhead -- **Improving** performance with efficient singleton pattern and advanced features - -## Architecture - -### Core Components - -1. **UnifiedCacheSystem** - Main singleton orchestrator following TorrentPier's architectural patterns -2. **CacheManager** - Cache interface using Nette Caching internally with singleton pattern -3. **DatastoreManager** - Datastore interface that uses CacheManager internally for unified functionality - -### Singleton Architecture - -The system follows TorrentPier's consistent singleton pattern, similar to `config()`, `dev()`, `censor()`, and `DB()`: - -```php -// Main singleton instance -TorrentPier\Cache\UnifiedCacheSystem::getInstance(config()->all()); - -// Clean global functions with proper return types -function CACHE(string $cache_name): \TorrentPier\Cache\CacheManager -function datastore(): \TorrentPier\Cache\DatastoreManager - -// Usage (exactly like before) -$cache = CACHE('bb_cache'); -$datastore = datastore(); -``` - -### Key Benefits - -- โœ… **Single Source of Truth**: One caching system instead of two separate ones -- โœ… **Modern Foundation**: Built on Nette Caching v3.3 with all its advanced features -- โœ… **Zero Breaking Changes**: All existing `CACHE()` and `$datastore` calls work unchanged -- โœ… **Consistent Architecture**: Proper singleton pattern matching other TorrentPier services -- โœ… **Advanced Features**: Dependencies, tags, bulk operations, memoization, output buffering -- โœ… **Better Debugging**: Unified debug interface with compatibility for Dev.php -- โœ… **Performance**: 456,647+ operations per second with efficient memory usage -- โœ… **Clean Architecture**: No redundant configuration logic, single storage creation path - -## Usage - -### Basic Cache Operations (100% Backward Compatible) - -```php -// All existing cache calls work exactly the same -$cache = CACHE('bb_cache'); -$value = $cache->get('key'); -$cache->set('key', $value, 3600); -$cache->rm('key'); -``` - -### Datastore Operations (100% Backward Compatible) - -```php -// All existing datastore calls work exactly the same -$datastore = datastore(); -$forums = $datastore->get('cat_forums'); -$datastore->store('custom_data', $data); -$datastore->update(['cat_forums', 'stats']); -``` - -### Advanced Nette Caching Features - -```php -// Get cache manager for advanced features -$cache = CACHE('bb_cache'); - -// Load with callback (compute if not cached) -$value = $cache->load('expensive_key', function() { - return expensive_computation(); -}); - -// Cache with time expiration -$cache->save('key', $value, [ - \Nette\Caching\Cache::Expire => '1 hour' -]); - -// Cache with file dependencies -$cache->save('config', $data, [ - \Nette\Caching\Cache::Files => ['/path/to/config.php'] -]); - -// Memoize function calls -$result = $cache->call('expensive_function', $param1, $param2); - -// Bulk operations -$values = $cache->bulkLoad(['key1', 'key2', 'key3'], function($key) { - return "computed_value_for_$key"; -}); - -// Clean by tags (requires SQLite storage) -$cache->clean([\Nette\Caching\Cache::Tags => ['user-123']]); - -// Output buffering -$content = $cache->capture('output_key', function() { - echo "This content will be cached"; -}); -``` - -### Datastore Advanced Features - -```php -$datastore = datastore(); - -// All standard operations work -$forums = $datastore->get('cat_forums'); -$datastore->store('custom_data', $data); - -// Access underlying CacheManager for advanced features -$manager = $datastore->getCacheManager(); -$value = $manager->load('complex_data', function() { - return build_complex_data(); -}, [ - \Nette\Caching\Cache::Expire => '30 minutes', - \Nette\Caching\Cache::Tags => ['forums', 'categories'] -]); -``` - -## Integration & Initialization - -### Automatic Integration - -The system integrates seamlessly in `library/includes/functions.php`: - -```php -// Singleton initialization (done once) -TorrentPier\Cache\UnifiedCacheSystem::getInstance(config()->all()); - -// Global functions provide backward compatibility -function CACHE(string $cache_name): \TorrentPier\Cache\CacheManager { - return TorrentPier\Cache\UnifiedCacheSystem::getInstance()->getCache($cache_name); -} - -function datastore(): \TorrentPier\Cache\DatastoreManager { - return TorrentPier\Cache\UnifiedCacheSystem::getInstance()->getDatastore(config()->get('datastore_type', 'file')); -} -``` - -### Debug Compatibility - -The system maintains full compatibility with Dev.php debugging: - -```php -// Dev.php can access debug information via magic __get() methods -$cache = CACHE('bb_cache'); -$debug_info = $cache->dbg; // Array of operations -$engine_name = $cache->engine; // Storage engine name -$total_time = $cache->sql_timetotal; // Total operation time - -$datastore = datastore(); -$datastore_debug = $datastore->dbg; // Datastore debug info -``` - -## Configuration - -The system uses existing configuration seamlessly: - -```php -// library/config.php -$bb_cfg['cache'] = [ - 'db_dir' => realpath(BB_ROOT) . '/internal_data/cache/filecache/', - 'prefix' => 'tp_', - 'engines' => [ - 'bb_cache' => ['file'], // Uses Nette FileStorage - 'session_cache' => ['sqlite'], // Uses Nette SQLiteStorage - 'tr_cache' => ['file'], // Uses Nette FileStorage - // ... other caches - ], -]; - -$bb_cfg['datastore_type'] = 'file'; // Uses Nette FileStorage -``` - -## Storage Types - -### Supported Storage Types - -| Legacy Type | Nette Storage | Features | -|------------|---------------|----------| -| `file` | `FileStorage` | File-based, persistent, dependencies | -| `sqlite` | `SQLiteStorage` | Database, supports tags and complex dependencies | -| `memory` | `MemoryStorage` | In-memory, fastest, non-persistent | -| `memcached` | `MemcachedStorage` | Distributed memory, high-performance | - -### Storage Features Comparison - -| Feature | FileStorage | SQLiteStorage | MemoryStorage | MemcachedStorage | -|---------|-------------|---------------|---------------|------------------| -| Persistence | โœ… | โœ… | โŒ | โœ… | -| File Dependencies | โœ… | โœ… | โœ… | โœ… | -| Tags | โŒ | โœ… | โœ… | โŒ | -| Callbacks | โœ… | โœ… | โœ… | โœ… | -| Bulk Operations | โœ… | โœ… | โœ… | โœ… | -| Performance | High | Medium | Highest | Very High | -| Distributed | โŒ | โŒ | โŒ | โœ… | - -## Migration Guide - -### Zero Migration Required - -All existing code continues to work without any modifications: - -```php -// โœ… This works exactly as before - no changes needed -$cache = CACHE('bb_cache'); -$forums = $datastore->get('cat_forums'); - -// โœ… All debug functionality preserved -global $CACHES; -foreach ($CACHES->obj as $cache_name => $cache_obj) { - echo "Cache: $cache_name\n"; -} -``` - -### Enhanced Capabilities for New Code - -New code can take advantage of advanced features: - -```php -// โœ… Enhanced caching with dependencies and tags -$cache = CACHE('bb_cache'); -$forums = $cache->load('forums_with_stats', function() { - return build_forums_with_statistics(); -}, [ - \Nette\Caching\Cache::Expire => '1 hour', - \Nette\Caching\Cache::Files => ['/path/to/forums.config'], - \Nette\Caching\Cache::Tags => ['forums', 'statistics'] -]); - -// โœ… Function memoization -$expensive_result = $cache->call('calculate_user_stats', $user_id); - -// โœ… Output buffering -$rendered_page = $cache->capture("page_$page_id", function() { - include_template('complex_page.php'); -}); -``` - -## Performance Benefits - -### Benchmarks - -- **456,647+ operations per second** in production testing -- **Singleton efficiency**: Each cache namespace instantiated only once -- **Memory optimization**: Shared storage and efficient instance management -- **Nette optimizations**: Advanced algorithms for cache invalidation and cleanup - -### Advanced Features Performance - -- **Bulk Operations**: Load multiple keys in single operation -- **Memoization**: Automatic function result caching with parameter-based keys -- **Dependencies**: Smart cache invalidation based on files, time, or custom logic -- **Output Buffering**: Cache generated output directly without intermediate storage - -## Critical Issues Resolved - -### Sessions Compatibility - -**Issue**: Legacy cache returns `false` for missing values, Nette returns `null` -**Solution**: CacheManager->get() returns `$result ?? false` for backward compatibility - -### Debug Integration - -**Issue**: Dev.php expected `->db` property on cache objects for debug logging -**Solution**: Added `__get()` magic methods returning compatible debug objects with `dbg[]`, `engine`, `sql_timetotal` properties - -### Architecture Consistency - -**Issue**: Inconsistent initialization pattern compared to other TorrentPier singletons -**Solution**: Converted to proper singleton pattern with `getInstance()` method and clean global functions - -## Implementation Details - -### Architecture Flow (Refactored) - -**Clean, Non-Redundant Architecture:** -``` -UnifiedCacheSystem (singleton) -โ”œโ”€โ”€ _buildStorage() โ†’ Creates Nette Storage instances directly -โ”œโ”€โ”€ get_cache_obj() โ†’ Returns CacheManager with pre-built storage -โ””โ”€โ”€ getDatastore() โ†’ Returns DatastoreManager with pre-built storage - -CacheManager (receives pre-built Storage) -โ”œโ”€โ”€ Constructor receives: Storage instance + minimal config -โ”œโ”€โ”€ No redundant initializeStorage() switch statement -โ””โ”€โ”€ Focuses purely on cache operations - -DatastoreManager (uses CacheManager internally) -โ”œโ”€โ”€ Constructor receives: Storage instance + minimal config -โ”œโ”€โ”€ Uses CacheManager internally for unified functionality -โ””โ”€โ”€ Maintains datastore-specific methods and compatibility -``` - -**Benefits of Refactored Architecture:** -- **Single Source of Truth**: Only UnifiedCacheSystem creates storage instances -- **No Redundancy**: Eliminated duplicate switch statements and configuration parsing -- **Cleaner Separation**: CacheManager focuses on caching, not storage creation -- **Impossible Path Bugs**: Storage is pre-built, no configuration mismatches possible -- **Better Maintainability**: One place to modify storage creation logic - -### Directory Structure - -``` -src/Cache/ -โ”œโ”€โ”€ CacheManager.php # Cache interface with Nette Caching + singleton pattern -โ”œโ”€โ”€ DatastoreManager.php # Datastore interface using CacheManager internally -โ”œโ”€โ”€ UnifiedCacheSystem.php # Main singleton orchestrator + storage factory -โ””โ”€โ”€ README.md # This documentation -``` - -### Removed Development Files - -The following development and testing files were removed after successful integration: -- `Example.php` - Migration examples (no longer needed) -- `Integration.php` - Testing utilities (production-ready) -- `cache_test.php` - Performance testing script (completed) - -### Key Features Achieved - -1. **100% Backward Compatibility**: All existing APIs work unchanged -2. **Modern Foundation**: Built on stable, well-tested Nette Caching v3.3 -3. **Advanced Features**: Dependencies, tags, bulk operations, memoization, output buffering -4. **Efficient Singletons**: Memory-efficient instance management following TorrentPier patterns -5. **Unified Debugging**: Consistent debug interface compatible with Dev.php -6. **Production Ready**: Comprehensive error handling, validation, and performance optimization -7. **Clean Architecture**: Eliminated redundant configuration logic and switch statements -8. **Single Storage Source**: All storage creation centralized in UnifiedCacheSystem - -### Architectural Consistency - -Following TorrentPier's established patterns: - -```php -// Consistent with other singletons -config() -> Config::getInstance() -dev() -> Dev::getInstance() -censor() -> Censor::getInstance() -DB() -> DB::getInstance() -CACHE() -> UnifiedCacheSystem::getInstance()->getCache() -datastore() -> UnifiedCacheSystem::getInstance()->getDatastore() -``` - -## Testing & Verification - -### Backward Compatibility Verified - -```php -// โœ… All existing functionality preserved -$cache = CACHE('bb_cache'); -assert($cache->set('test', 'value', 60) === true); -assert($cache->get('test') === 'value'); -assert($cache->rm('test') === true); - -$datastore = datastore(); -$datastore->store('test_item', ['data' => 'test']); -assert($datastore->get('test_item')['data'] === 'test'); -``` - -### Advanced Features Verified - -```php -// โœ… Nette features working correctly -$cache = CACHE('advanced_test'); - -// Memoization -$result1 = $cache->call('expensive_function', 'param'); -$result2 = $cache->call('expensive_function', 'param'); // From cache - -// Dependencies -$cache->save('file_dependent', $data, [ - \Nette\Caching\Cache::Files => [__FILE__] -]); - -// Bulk operations -$values = $cache->bulkLoad(['key1', 'key2'], function($key) { - return "value_$key"; -}); - -// Performance: 456,647+ ops/sec verified -``` - -### Debug Functionality Verified - -```php -// โœ… Dev.php integration working -$cache = CACHE('bb_cache'); -$debug = $cache->dbg; // Returns array of operations -$engine = $cache->engine; // Returns storage type -$time = $cache->sql_timetotal; // Returns total time - -// โœ… Singleton behavior verified -$instance1 = TorrentPier\Cache\UnifiedCacheSystem::getInstance(); -$instance2 = TorrentPier\Cache\UnifiedCacheSystem::getInstance(); -assert($instance1 === $instance2); // Same instance -``` - -## Future Enhancements - -### Planned Storage Implementations -- Redis storage adapter for Nette -- Memcached storage adapter for Nette -- APCu storage adapter for Nette - -### Advanced Features Roadmap -- Distributed caching support -- Cache warming and preloading -- Advanced metrics and monitoring -- Multi-tier caching strategies - ---- - -This unified cache system represents a significant architectural improvement in TorrentPier while ensuring seamless backward compatibility and providing a robust foundation for future enhancements. The clean singleton pattern, advanced Nette Caching features, and comprehensive debug support make it a production-ready replacement for the legacy Cache and Datastore systems. diff --git a/src/Database/README.md b/src/Database/README.md deleted file mode 100644 index b7cc5b05b..000000000 --- a/src/Database/README.md +++ /dev/null @@ -1,362 +0,0 @@ -# TorrentPier Database Layer - -This directory contains the new database layer for TorrentPier 3.0 that uses Nette Database internally. **Breaking changes**: This replaces the legacy SqlDb interface and requires code migration. - -## Overview - -The new database system has completely replaced the legacy SqlDb/Dbs system and provides: - -- **Modern API** - New `DB()->method()` calls with improved functionality -- **Nette Database integration** - Modern, efficient database layer under the hood -- **Singleton pattern** - Efficient connection management -- **Complete feature parity** - All original functionality preserved - -## Architecture - -### Classes - -1. **`Database`** - Main singleton database class using Nette Database Connection -2. **`DatabaseFactory`** - Factory that has completely replaced the legacy SqlDb/Dbs system -3. **`DatabaseDebugger`** - Dedicated debug functionality extracted from Database class -4. **`DebugSelection`** - Debug-enabled wrapper for Nette Database Selection - -### Key Features - -- **Singleton Pattern**: Ensures single database connection per server configuration -- **Multiple Database Support**: Handles multiple database servers via DatabaseFactory -- **Raw SQL Support**: Uses Nette Database's Connection class (SQL way) for minimal code impact -- **Complete Error Handling**: Maintains existing error handling behavior -- **Full Debug Support**: Preserves all debugging, logging, and explain functionality -- **Performance Tracking**: Query timing and slow query detection -- **Clean Architecture**: Debug functionality extracted to dedicated DatabaseDebugger class -- **Modular Design**: Single responsibility principle with separate debug and database concerns - -## Implementation Status - -- โœ… **Complete Replacement**: Legacy SqlDb/Dbs classes have been removed from the codebase -- โœ… **Backward Compatibility**: All existing `DB()->method()` calls work unchanged -- โœ… **Debug System**: Full explain(), logging, and performance tracking -- โœ… **Error Handling**: Complete error handling with sql_error() support -- โœ… **Connection Management**: Singleton pattern with proper initialization -- โœ… **Clean Architecture**: Debug functionality extracted to dedicated classes -- โœ… **Class Renaming**: Renamed DB โ†’ Database, DbFactory โ†’ DatabaseFactory for consistency - -## Usage - -### Standard Database Operations -```php -// All existing code works unchanged -$user = DB()->fetch_row("SELECT * FROM users WHERE id = ?", 123); -$users = DB()->fetch_rowset("SELECT * FROM users"); -$affected = DB()->affected_rows(); - -// Raw queries -$result = DB()->sql_query("UPDATE users SET status = ? WHERE id = ?", 1, 123); - -// Data building -$data = ['name' => 'John', 'email' => 'john@example.com']; -$sql = DB()->build_array('INSERT', $data); -``` - -### Multiple Database Servers -```php -// Access different database servers -$main_db = DB('db'); // Main database -$tracker_db = DB('tr'); // Tracker database -$stats_db = DB('stats'); // Statistics database -``` - -### Error Handling -```php -$result = DB()->sql_query("SELECT * FROM users"); -if (!$result) { - $error = DB()->sql_error(); - echo "Error: " . $error['message']; -} -``` - -## Configuration - -The database configuration is handled through the existing TorrentPier config system: - -```php -// Initialized in common.php -TorrentPier\Database\DatabaseFactory::init( - config()->get('db'), // Database configurations - config()->get('db_alias', []) // Database aliases -); -``` - -## Benefits - -### Performance -- **Efficient Connections**: Singleton pattern prevents connection overhead -- **Modern Database Layer**: Nette Database v3.2 optimizations -- **Resource Management**: Automatic cleanup and proper connection handling - -### Maintainability -- **Modern Codebase**: Uses current PHP standards and type declarations -- **Better Architecture**: Clean separation of concerns -- **Nette Ecosystem**: Part of actively maintained Nette framework - -### Reliability -- **Proven Technology**: Nette Database is battle-tested -- **Regular Updates**: Automatic security and bug fixes through composer -- **Type Safety**: Better error detection and IDE support - -## Debugging Features - -All original debugging features are preserved and enhanced: - -### Query Logging -- SQL query logging with timing -- Slow query detection and logging -- Memory usage tracking - -### Debug Information -```php -// Enable debugging (same as before) -DB()->debug('start'); -// ... run queries ... -DB()->debug('stop'); -``` - -### Explain Functionality -```php -// Explain queries (same interface as before) -DB()->explain('start'); -DB()->explain('display'); -``` - -## Technical Details - -### Nette Database Integration -- Uses Nette Database **Connection** class (SQL way) -- Maintains raw SQL approach for minimal migration impact -- PDO-based with proper parameter binding - -### Compatibility Layer -- All original method signatures preserved -- Same return types and behavior -- Error handling matches original implementation - -### Connection Management -- Single connection per database server -- Lazy connection initialization -- Proper connection cleanup - -## Migration Notes - -This is a **complete replacement** that maintains 100% backward compatibility: - -1. **No Code Changes Required**: All existing `DB()->method()` calls work unchanged -2. **Same Configuration**: Uses existing database configuration -3. **Same Behavior**: Error handling, return values, and debugging work identically -4. **Enhanced Performance**: Better connection management and modern database layer - -## Dependencies - -- **Nette Database v3.2**: Already included in composer.json -- **PHP 8.0+**: Required for type declarations and modern features - -## Files - -- `Database.php` - Main database class with full backward compatibility -- `DatabaseFactory.php` - Factory for managing database instances -- `DatabaseDebugger.php` - Dedicated debug functionality class -- `DebugSelection.php` - Debug-enabled Nette Selection wrapper -- `README.md` - This documentation - -## Future Enhancement: Gradual Migration to Nette Explorer - -While the current implementation uses Nette Database's **Connection** class (SQL way) for maximum compatibility, TorrentPier can gradually migrate to **Nette Database Explorer** for more modern ORM-style database operations. - -### Phase 1: Hybrid Approach - -Add Explorer support alongside existing Connection-based methods: - -```php -// Current Connection-based approach (maintains compatibility) -$users = DB()->fetch_rowset("SELECT * FROM users WHERE status = ?", 1); - -// New Explorer-based approach (added gradually) -$users = DB()->table('users')->where('status', 1)->fetchAll(); -``` - -### Phase 2: Explorer Method Examples - -#### Basic Table Operations -```php -// Select operations -$user = DB()->table('users')->get(123); // Get by ID -$users = DB()->table('users')->where('status', 1)->fetchAll(); // Where condition -$count = DB()->table('users')->where('status', 1)->count(); // Count records - -// Insert operations -$user_id = DB()->table('users')->insert([ - 'username' => 'john', - 'email' => 'john@example.com', - 'reg_time' => time() -]); - -// Update operations -DB()->table('users') - ->where('id', 123) - ->update(['last_visit' => time()]); - -// Delete operations -DB()->table('users') - ->where('status', 0) - ->delete(); -``` - -#### Advanced Explorer Features -```php -// Joins and relationships -$posts = DB()->table('posts') - ->select('posts.*, users.username') - ->where('posts.forum_id', 5) - ->order('posts.post_time DESC') - ->limit(20) - ->fetchAll(); - -// Aggregations -$stats = DB()->table('torrents') - ->select('forum_id, COUNT(*) as total, SUM(size) as total_size') - ->where('approved', 1) - ->group('forum_id') - ->fetchAll(); - -// Subqueries -$active_users = DB()->table('users') - ->where('last_visit > ?', time() - 86400) - ->where('id IN', DB()->table('posts') - ->select('user_id') - ->where('post_time > ?', time() - 86400) - ) - ->fetchAll(); -``` - -#### Working with Related Data -```php -// One-to-many relationships -$user = DB()->table('users')->get(123); -$user_posts = $user->related('posts')->order('post_time DESC'); - -// Many-to-many through junction table -$torrent = DB()->table('torrents')->get(456); -$seeders = $torrent->related('bt_tracker', 'torrent_id') - ->where('seeder', 'yes') - ->select('user_id'); -``` - -### Phase 3: Migration Strategy - -#### Step-by-Step Conversion -1. **Identify Patterns**: Find common SQL patterns in the codebase -2. **Create Helpers**: Build wrapper methods for complex queries -3. **Test Incrementally**: Convert one module at a time -4. **Maintain Compatibility**: Keep both approaches during transition - -#### Example Migration Pattern -```php -// Before: Raw SQL -$result = DB()->sql_query(" - SELECT t.*, u.username - FROM torrents t - JOIN users u ON t.poster_id = u.user_id - WHERE t.forum_id = ? AND t.approved = 1 - ORDER BY t.reg_time DESC - LIMIT ? -", $forum_id, $limit); - -$torrents = []; -while ($row = DB()->sql_fetchrow($result)) { - $torrents[] = $row; -} - -// After: Explorer ORM -$torrents = DB()->table('torrents') - ->alias('t') - ->select('t.*, u.username') - ->where('t.forum_id', $forum_id) - ->where('t.approved', 1) - ->order('t.reg_time DESC') - ->limit($limit) - ->fetchAll(); -``` - -### Phase 4: Advanced Explorer Features - -#### Custom Repository Classes -```php -// Create specialized repository classes -class TorrentRepository -{ - private $db; - - public function __construct($db) - { - $this->db = $db; - } - - public function getApprovedByForum($forum_id, $limit = 20) - { - return $this->db->table('torrents') - ->where('forum_id', $forum_id) - ->where('approved', 1) - ->order('reg_time DESC') - ->limit($limit) - ->fetchAll(); - } - - public function getTopSeeded($limit = 10) - { - return $this->db->table('torrents') - ->where('approved', 1) - ->order('seeders DESC') - ->limit($limit) - ->fetchAll(); - } -} - -// Usage -$torrentRepo = new TorrentRepository(DB()); -$popular = $torrentRepo->getTopSeeded(); -``` - -#### Database Events and Caching -```php -// Add caching layer -$cached_result = DB()->table('users') - ->where('status', 1) - ->cache('active_users', 3600) // Cache for 1 hour - ->fetchAll(); - -// Database events for logging -DB()->onQuery[] = function ($query, $parameters, $time) { - if ($time > 1.0) { // Log slow queries - error_log("Slow query ({$time}s): $query"); - } -}; -``` - -### Benefits of Explorer Migration - -#### Developer Experience -- **Fluent Interface**: Chainable method calls -- **IDE Support**: Better autocomplete and type hints -- **Less SQL**: Reduced raw SQL writing -- **Built-in Security**: Automatic parameter binding - -#### Code Quality -- **Readable Code**: Self-documenting query building -- **Reusable Patterns**: Common queries become methods -- **Type Safety**: Better error detection -- **Testing**: Easier to mock and test - -#### Performance -- **Query Optimization**: Explorer can optimize queries -- **Lazy Loading**: Load related data only when needed -- **Connection Pooling**: Better resource management -- **Caching Integration**: Built-in caching support diff --git a/src/Domain/Forum/Exception/README.md b/src/Domain/Forum/Exception/README.md deleted file mode 100644 index 07a483fe6..000000000 --- a/src/Domain/Forum/Exception/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Forum Domain Exceptions - -Domain-specific exceptions for forum operations: - -- `ThreadLockedException`: Attempt to post in locked thread -- `PostEditTimeExpiredException`: Edit time limit exceeded -- `ForumAccessDeniedException`: Insufficient permissions -- `InvalidPostContentException`: Post validation failed \ No newline at end of file diff --git a/src/Domain/Forum/Model/README.md b/src/Domain/Forum/Model/README.md deleted file mode 100644 index 6dafb0894..000000000 --- a/src/Domain/Forum/Model/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Forum Domain Models - -Contains aggregate roots and entities for the forum system: - -- `Forum`: Forum category aggregate -- `Thread`: Discussion thread aggregate root -- `Post`: Individual post entity -- `Attachment`: File attachment entity - -Business rules enforced at this level: - -- Post editing time limits -- Thread locking rules -- Forum access permissions -- Post moderation workflow \ No newline at end of file diff --git a/src/Domain/Forum/Repository/README.md b/src/Domain/Forum/Repository/README.md deleted file mode 100644 index 1a8430801..000000000 --- a/src/Domain/Forum/Repository/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Forum Repository Interfaces - -Repository interfaces for forum aggregates: - -- `ForumRepositoryInterface`: Forum aggregate persistence -- `ThreadRepositoryInterface`: Thread aggregate persistence -- `PostRepositoryInterface`: Post queries (read-only) - -These interfaces define contracts that infrastructure must implement. \ No newline at end of file diff --git a/src/Domain/Forum/ValueObject/README.md b/src/Domain/Forum/ValueObject/README.md deleted file mode 100644 index eb8aec659..000000000 --- a/src/Domain/Forum/ValueObject/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Forum Value Objects - -Immutable objects representing forum concepts: - -- `PostId`: Unique post identifier -- `ThreadTitle`: Thread title with validation -- `PostContent`: Formatted post content -- `ForumSlug`: URL-friendly forum identifier - -These objects ensure type safety and encapsulate validation rules. \ No newline at end of file diff --git a/src/Domain/README.md b/src/Domain/README.md deleted file mode 100644 index cb9254a68..000000000 --- a/src/Domain/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Domain Layer - -This directory contains the core business logic of TorrentPier. Code here should: - -- Have no dependencies on frameworks or infrastructure -- Represent pure business rules and domain models -- Be testable in isolation -- Use only PHP language features and domain concepts - -## Bounded Contexts - -- **Forum**: Discussion forums, posts, threads -- **Tracker**: BitTorrent tracking, peers, torrents -- **User**: User management, authentication, profiles -- **Shared**: Minimal shared concepts between contexts \ No newline at end of file diff --git a/src/Domain/Shared/Event/README.md b/src/Domain/Shared/Event/README.md deleted file mode 100644 index 11656fb4a..000000000 --- a/src/Domain/Shared/Event/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Domain Events - -Base classes and interfaces for domain event system: - -- `DomainEvent`: Base event interface -- `EventRecording`: Trait for aggregate event recording -- `AggregateHistory`: Event sourcing support - -Example events: - -- `UserRegisteredEvent` -- `TorrentUploadedEvent` -- `ThreadCreatedEvent` - -Events enable loose coupling between bounded contexts. \ No newline at end of file diff --git a/src/Domain/Shared/Exception/README.md b/src/Domain/Shared/Exception/README.md deleted file mode 100644 index 2c5a556bd..000000000 --- a/src/Domain/Shared/Exception/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Shared Domain Exceptions - -Base exception classes used across all bounded contexts: - -- `DomainException`: Base domain exception -- `InvalidArgumentException`: Invalid input validation -- `EntityNotFoundException`: Generic entity not found -- `BusinessRuleViolationException`: Business rule violations - -These provide common exception handling patterns without coupling contexts. \ No newline at end of file diff --git a/src/Domain/Shared/Model/README.md b/src/Domain/Shared/Model/README.md deleted file mode 100644 index 4daf36150..000000000 --- a/src/Domain/Shared/Model/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Shared Domain Models - -Base classes and interfaces used across bounded contexts: - -- `AggregateRoot`: Base class for all aggregates -- `Entity`: Base class for entities -- `DomainEvent`: Interface for domain events -- `ValueObject`: Base value object interface - -These provide common functionality while maintaining context boundaries. \ No newline at end of file diff --git a/src/Domain/Shared/Repository/README.md b/src/Domain/Shared/Repository/README.md deleted file mode 100644 index 999f9d300..000000000 --- a/src/Domain/Shared/Repository/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Shared Repository Interfaces - -Common repository patterns and base interfaces: - -- `RepositoryInterface`: Base repository contract -- `ReadOnlyRepositoryInterface`: Query-only operations -- `AggregateRepositoryInterface`: Aggregate-specific methods - -These define common persistence patterns without implementation details. \ No newline at end of file diff --git a/src/Domain/Shared/ValueObject/README.md b/src/Domain/Shared/ValueObject/README.md deleted file mode 100644 index afc5b7bc6..000000000 --- a/src/Domain/Shared/ValueObject/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Shared Value Objects - -Common value objects used across contexts: - -- `Id`: Generic identifier base class -- `DateTime`: Immutable datetime wrapper -- `Money`: Monetary value representation -- `Percentage`: Percentage value (0-100) - -These are minimal shared concepts that don't violate bounded context principles. \ No newline at end of file diff --git a/src/Domain/Tracker/Exception/README.md b/src/Domain/Tracker/Exception/README.md deleted file mode 100644 index 73ae0f882..000000000 --- a/src/Domain/Tracker/Exception/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Tracker Domain Exceptions - -Domain-specific exceptions for tracker operations: - -- `InvalidInfoHashException`: Malformed info hash -- `InactiveTorrentException`: Torrent not active -- `PeerLimitExceededException`: Too many peers -- `InvalidAnnounceException`: Protocol violation \ No newline at end of file diff --git a/src/Domain/Tracker/Model/README.md b/src/Domain/Tracker/Model/README.md deleted file mode 100644 index 124456276..000000000 --- a/src/Domain/Tracker/Model/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Tracker Domain Models - -Contains aggregate roots and entities for the BitTorrent tracker: - -- `Torrent`: Aggregate root for torrent management -- `Peer`: Entity representing a BitTorrent peer -- `TorrentStatistics`: Value object for torrent stats - -Example: - -```php -class Torrent extends AggregateRoot -{ - public function announce(Peer $peer, AnnounceEvent $event): void - { - // Business logic for handling announces - } -} -``` \ No newline at end of file diff --git a/src/Domain/Tracker/Repository/README.md b/src/Domain/Tracker/Repository/README.md deleted file mode 100644 index 3745d6e4e..000000000 --- a/src/Domain/Tracker/Repository/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Tracker Repository Interfaces - -Repository interfaces for tracker aggregates: - -- `TorrentRepositoryInterface`: Torrent aggregate persistence -- `PeerRepositoryInterface`: Peer data access -- `TrackerStatsRepositoryInterface`: Statistics queries - -These define persistence contracts without implementation details. \ No newline at end of file diff --git a/src/Domain/Tracker/ValueObject/README.md b/src/Domain/Tracker/ValueObject/README.md deleted file mode 100644 index cd3fcf0ee..000000000 --- a/src/Domain/Tracker/ValueObject/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Tracker Value Objects - -Immutable objects representing domain concepts: - -- `InfoHash`: 20-byte torrent identifier -- `PeerId`: Peer client identifier -- `Port`: Network port (1-65535) -- `BytesTransferred`: Upload/download bytes - -Example: - -```php -final class InfoHash -{ - private string $hash; - - public function __construct(string $hash) - { - $this->guardAgainstInvalidHash($hash); - $this->hash = $hash; - } -} -``` \ No newline at end of file diff --git a/src/Domain/User/Exception/README.md b/src/Domain/User/Exception/README.md deleted file mode 100644 index f689a7943..000000000 --- a/src/Domain/User/Exception/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# User Domain Exceptions - -Domain-specific exceptions for user operations: - -- `UserNotFoundException`: User not found -- `DuplicateUsernameException`: Username already taken -- `InvalidCredentialsException`: Authentication failed -- `UserNotActivatedException`: Account not activated -- `PasswordComplexityException`: Weak password \ No newline at end of file diff --git a/src/Domain/User/Model/README.md b/src/Domain/User/Model/README.md deleted file mode 100644 index 2001b3ebd..000000000 --- a/src/Domain/User/Model/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# User Domain Models - -Contains user management aggregates and entities: - -- `User`: User aggregate root -- `UserProfile`: User profile information -- `UserCredentials`: Authentication credentials -- `UserPermissions`: Authorization rules - -Business rules: - -- Password complexity requirements -- Username uniqueness -- Email verification workflow -- Account activation/deactivation \ No newline at end of file diff --git a/src/Domain/User/Repository/README.md b/src/Domain/User/Repository/README.md deleted file mode 100644 index 9d4c463c7..000000000 --- a/src/Domain/User/Repository/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# User Repository Interface - -Repository interface for user aggregate: - -- `UserRepositoryInterface`: User persistence and retrieval - - `findById(UserId $id): ?User` - - `findByUsername(Username $username): ?User` - - `findByEmail(Email $email): ?User` - - `save(User $user): void` - - `delete(User $user): void` \ No newline at end of file diff --git a/src/Domain/User/ValueObject/README.md b/src/Domain/User/ValueObject/README.md deleted file mode 100644 index 79c930883..000000000 --- a/src/Domain/User/ValueObject/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# User Value Objects - -Immutable objects for user domain: - -- `UserId`: Unique user identifier -- `Username`: Username with validation -- `Email`: Email address with format validation -- `HashedPassword`: Secure password representation -- `UserRole`: User role enumeration - -These ensure data integrity and type safety. \ No newline at end of file diff --git a/src/Infrastructure/Cache/File/README.md b/src/Infrastructure/Cache/File/README.md deleted file mode 100644 index 9f781c1b9..000000000 --- a/src/Infrastructure/Cache/File/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# File Cache Adapter - -File system-based caching implementation: - -- Simple file-based storage -- Suitable for single-server deployments -- Directory structure optimization -- Lock file support for concurrency -- Automatic garbage collection \ No newline at end of file diff --git a/src/Infrastructure/Cache/Memcached/README.md b/src/Infrastructure/Cache/Memcached/README.md deleted file mode 100644 index 2e60b7e0b..000000000 --- a/src/Infrastructure/Cache/Memcached/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Memcached Cache Adapter - -Memcached-based caching implementation: - -- Simple key-value caching -- Distributed cache support -- Automatic key expiration -- Connection pooling -- Consistent hashing for distribution \ No newline at end of file diff --git a/src/Infrastructure/Cache/Redis/README.md b/src/Infrastructure/Cache/Redis/README.md deleted file mode 100644 index da7e090aa..000000000 --- a/src/Infrastructure/Cache/Redis/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Redis Cache Adapter - -Redis-based caching implementation: - -- High-performance key-value storage -- Support for data structures (lists, sets, hashes) -- TTL management -- Pub/sub for cache invalidation -- Cluster support for scalability \ No newline at end of file diff --git a/src/Infrastructure/DependencyInjection/README.md b/src/Infrastructure/DependencyInjection/README.md deleted file mode 100644 index e65de5a19..000000000 --- a/src/Infrastructure/DependencyInjection/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# Dependency Injection Infrastructure - -This directory contains the dependency injection container implementation using PHP-DI, following hexagonal architecture principles. - -## Architecture Overview - -The DI container is placed in the Infrastructure layer because: -- Dependency injection is a technical implementation detail -- It handles wiring and bootstrapping, not business logic -- The domain layer remains pure without framework dependencies - -## Structure - -``` -DependencyInjection/ -โ”œโ”€โ”€ Container.php # Wrapper around PHP-DI container -โ”œโ”€โ”€ ContainerFactory.php # Factory for building configured containers -โ”œโ”€โ”€ Bootstrap.php # Application bootstrapper -โ””โ”€โ”€ Definitions/ # Service definitions by layer - โ”œโ”€โ”€ DomainDefinitions.php - โ”œโ”€โ”€ ApplicationDefinitions.php - โ”œโ”€โ”€ InfrastructureDefinitions.php - โ””โ”€โ”€ PresentationDefinitions.php -``` - -## Usage - -### Basic Bootstrap (Works Now) - -```php -use TorrentPier\Infrastructure\DependencyInjection\Bootstrap; - -// Initialize the container -$container = Bootstrap::init(__DIR__ . '/../..'); - -// Basic usage -$containerInstance = app(); // Get container itself -$hasService = $container->has('some.service'); // Check if service exists -``` - -### Manual Container Creation (Works Now) - -```php -use TorrentPier\Infrastructure\DependencyInjection\ContainerFactory; - -$config = [ - 'environment' => 'production', - 'definitions' => [ - 'custom.service' => \DI\factory(function () { - return new CustomService(); - }), - ], -]; - -$container = ContainerFactory::create($config); -``` - -### Future Usage (When Services Are Implemented) - -```php -// These will work when the respective layers are implemented: -// $userRepository = $container->get(UserRepositoryInterface::class); -// $commandBus = $container->get(CommandBusInterface::class); -``` - -## Service Definitions - -Services are organized by architectural layer following the hexagonal architecture spec: - -### Domain Layer (`DomainDefinitions.php`) -- Repository interface mappings (when implemented in Phase 2) -- Domain service factories -- No direct infrastructure dependencies - -### Application Layer (`ApplicationDefinitions.php`) -- Command/Query buses (when implemented in Phase 3) -- Command/Query handlers -- Event dispatcher -- Application services - -### Infrastructure Layer (`InfrastructureDefinitions.php`) -- Database connections (when Nette Database integration is ready) -- Cache implementations (when cache infrastructure is ready) -- Repository implementations (when implemented in Phase 4) -- External service adapters - -### Presentation Layer (`PresentationDefinitions.php`) -- HTTP controllers (when implemented in Phase 5) -- CLI commands -- Middleware -- Response transformers - -**Note**: Most definitions are currently commented out as examples until the actual services are implemented according to the implementation phases. - -## Configuration - -Configuration is loaded from multiple sources: - -1. **Environment Variables** (`.env` file) -2. **Configuration Files** (`/config/*.php`) -3. **Runtime Configuration** (passed to factory) - -### Production Optimization - -In production mode, the container: -- Compiles definitions for performance -- Generates proxies for lazy loading -- Caches resolved dependencies - -Enable by setting `APP_ENV=production` in your `.env` file. - -## Best Practices - -1. **Use Interfaces**: Define interfaces in domain, implement in infrastructure -2. **Explicit Definitions**: Prefer explicit over magic for complex services -3. **Layer Separation**: Keep definitions organized by architectural layer -4. **Lazy Loading**: Use factories for expensive services -5. **Immutable Services**: Services should be stateless and immutable - -## Example Service Registration - -### Current Usage (Works Now) -```php -// In services.php or custom definitions -return [ - 'custom.service' => \DI\factory(function () { - return new CustomService(); - }), - - 'test.service' => \DI\autowire(TestService::class), -]; -``` - -### Future Examples (When Infrastructure Is Ready) -```php -// These will be uncommented when the services are implemented: -// UserRepositoryInterface::class => autowire(UserRepository::class) -// ->constructorParameter('connection', get('database.connection.default')) -// ->constructorParameter('cache', get('cache.factory')), -// -// 'email.service' => factory(function (ContainerInterface $c) { -// $config = $c->get('config')['email']; -// return new SmtpEmailService($config); -// }), -``` - -## Testing - -For testing, create a test container with mocked services: - -```php -// Current testing approach (works now) -$testConfig = [ - 'definitions' => [ - 'test.service' => \DI\factory(function () { - return new MockTestService(); - }), - ], - 'environment' => 'testing', -]; - -$container = ContainerFactory::create($testConfig); - -// Future testing (when services are implemented) -// $testConfig = [ -// 'definitions' => [ -// UserRepositoryInterface::class => $mockUserRepository, -// EmailServiceInterface::class => $mockEmailService, -// ], -// ]; -``` diff --git a/src/Infrastructure/Email/Template/README.md b/src/Infrastructure/Email/Template/README.md deleted file mode 100644 index 3497a96ba..000000000 --- a/src/Infrastructure/Email/Template/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Email Templates - -Email template management: - -- HTML and plain text templates -- Template variables and placeholders -- Multi-language support -- Template caching -- Preview functionality - -Common templates: - -- User registration confirmation -- Password reset -- Torrent notifications -- Forum post notifications \ No newline at end of file diff --git a/src/Infrastructure/Email/Transport/README.md b/src/Infrastructure/Email/Transport/README.md deleted file mode 100644 index 0de823895..000000000 --- a/src/Infrastructure/Email/Transport/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Email Transport - -Email delivery mechanisms: - -- `SmtpTransport`: Traditional SMTP delivery -- `SendgridTransport`: SendGrid API integration -- `MailgunTransport`: Mailgun API integration -- `NullTransport`: Testing/development transport - -Supports queuing and retry mechanisms. \ No newline at end of file diff --git a/src/Infrastructure/FileStorage/Local/README.md b/src/Infrastructure/FileStorage/Local/README.md deleted file mode 100644 index cb0fdac49..000000000 --- a/src/Infrastructure/FileStorage/Local/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Local File Storage - -Local filesystem storage implementation: - -- Direct disk storage -- Directory structure management -- File permissions handling -- Atomic file operations -- Cleanup and maintenance - -Used for torrent files, avatars, and attachments. \ No newline at end of file diff --git a/src/Infrastructure/FileStorage/S3/README.md b/src/Infrastructure/FileStorage/S3/README.md deleted file mode 100644 index c008d9f5a..000000000 --- a/src/Infrastructure/FileStorage/S3/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# S3 File Storage - -Amazon S3 (or compatible) storage implementation: - -- Cloud object storage -- Pre-signed URLs for direct uploads -- CDN integration support -- Lifecycle policies -- Multi-region support - -Provides scalable storage for large deployments. \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Database/README.md b/src/Infrastructure/Persistence/Database/README.md deleted file mode 100644 index c250b60e8..000000000 --- a/src/Infrastructure/Persistence/Database/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Database Adapter - -Database connection and query building layer: - -- `DatabaseAdapterInterface`: Common database operations -- `QueryBuilder`: Fluent query construction -- `ConnectionPool`: Connection management - -Provides abstraction over raw database access. diff --git a/src/Infrastructure/Persistence/Migration/README.md b/src/Infrastructure/Persistence/Migration/README.md deleted file mode 100644 index 1f203e645..000000000 --- a/src/Infrastructure/Persistence/Migration/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Database Migrations - -Schema version control and migration management: - -- Migration files for schema changes -- Seed data for initial setup -- Rollback support -- Migration history tracking - -Uses Phinx or similar migration tool. \ No newline at end of file diff --git a/src/Infrastructure/Persistence/Repository/README.md b/src/Infrastructure/Persistence/Repository/README.md deleted file mode 100644 index 002760d4a..000000000 --- a/src/Infrastructure/Persistence/Repository/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Repository Implementations - -Concrete implementations of domain repository interfaces: - -- Uses database adapter for persistence -- Implements caching strategies -- Handles query optimization -- Supports multiple database backends - -Example: - -```php -class TorrentRepository implements TorrentRepositoryInterface -{ - public function __construct( - private DatabaseAdapterInterface $db - ) {} - - public function findByInfoHash(InfoHash $infoHash): ?Torrent - { - // Database adapter implementation - $row = $this->db->select('torrents') - ->where('info_hash', $infoHash->toString()) - ->first(); - - return $row ? $this->hydrateFromRow($row) : null; - } -} -``` \ No newline at end of file diff --git a/src/Infrastructure/README.md b/src/Infrastructure/README.md deleted file mode 100644 index 2098a9f97..000000000 --- a/src/Infrastructure/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Infrastructure Layer - -Technical implementations and external service adapters: - -- Database persistence -- Caching mechanisms -- Email services -- File storage -- Third-party integrations - -Infrastructure depends on domain, not vice versa. \ No newline at end of file diff --git a/src/Presentation/Cli/Commands/README.md b/src/Presentation/Cli/Commands/README.md deleted file mode 100644 index 5e2cf1239..000000000 --- a/src/Presentation/Cli/Commands/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# CLI Commands - -Console commands for administrative tasks: - -- `UserCreateCommand`: Create users from CLI -- `CacheClearCommand`: Clear cache stores -- `MigrateCommand`: Run database migrations -- `CronCommand`: Execute scheduled tasks - -Built using Symfony Console component. \ No newline at end of file diff --git a/src/Presentation/Http/Controllers/Admin/README.md b/src/Presentation/Http/Controllers/Admin/README.md deleted file mode 100644 index 6e478949b..000000000 --- a/src/Presentation/Http/Controllers/Admin/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Admin Panel Controllers - -Administrative interface controllers with enhanced security: - -- Role-based access control (RBAC) -- Audit logging for all actions -- Additional authentication checks -- Administrative dashboards and reports - -Example: - -```php -class AdminUserController -{ - public function index(Request $request): Response - { - $query = new GetUsersQuery( - page: $request->getPage(), - filters: $request->getFilters() - ); - - $users = $this->queryBus->handle($query); - - return $this->render('admin/users/index', [ - 'users' => $users, - 'filters' => $request->getFilters() - ]); - } -} -``` \ No newline at end of file diff --git a/src/Presentation/Http/Controllers/Api/README.md b/src/Presentation/Http/Controllers/Api/README.md deleted file mode 100644 index 7d944db2e..000000000 --- a/src/Presentation/Http/Controllers/Api/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# API Controllers - -RESTful API endpoints following OpenAPI specification: - -- JSON request/response format -- Proper HTTP status codes -- HATEOAS where applicable -- Rate limiting aware - -Example: - -```php -class UserController -{ - public function register(RegisterRequest $request): JsonResponse - { - $command = new RegisterUserCommand( - $request->getUsername(), - $request->getEmail(), - $request->getPassword() - ); - - $userId = $this->commandBus->handle($command); - - return new JsonResponse([ - 'id' => $userId, - 'username' => $request->getUsername() - ], Response::HTTP_CREATED); - } -} -``` \ No newline at end of file diff --git a/src/Presentation/Http/Controllers/Web/README.md b/src/Presentation/Http/Controllers/Web/README.md deleted file mode 100644 index 015c2d19c..000000000 --- a/src/Presentation/Http/Controllers/Web/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Web Controllers - -Traditional web interface controllers: - -- HTML response generation -- Template rendering -- Form handling -- Session management -- CSRF protection - -Controllers for: - -- Forum browsing and posting -- Torrent browsing and downloading -- User profiles and settings -- Search functionality \ No newline at end of file diff --git a/src/Presentation/Http/Middleware/README.md b/src/Presentation/Http/Middleware/README.md deleted file mode 100644 index c5a1d1a0c..000000000 --- a/src/Presentation/Http/Middleware/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# HTTP Middleware - -Request/response pipeline middleware: - -- `AuthenticationMiddleware`: User authentication -- `AuthorizationMiddleware`: Permission checks -- `CsrfProtectionMiddleware`: CSRF token validation -- `RateLimitMiddleware`: Request throttling -- `LocalizationMiddleware`: Language detection -- `CorsMiddleware`: Cross-origin resource sharing - -Middleware follows PSR-15 standard. \ No newline at end of file diff --git a/src/Presentation/Http/Requests/README.md b/src/Presentation/Http/Requests/README.md deleted file mode 100644 index 8e0a47d1c..000000000 --- a/src/Presentation/Http/Requests/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# HTTP Requests - -Request objects and validation: - -- Request DTOs with validation rules -- Type-safe access to request data -- File upload handling -- Input sanitization -- Custom validation rules - -Example: - -```php -class RegisterRequest extends FormRequest -{ - public function rules(): array - { - return [ - 'username' => ['required', 'string', 'min:3', 'max:20', 'unique:users'], - 'email' => ['required', 'email', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - ]; - } -} -``` \ No newline at end of file diff --git a/src/Presentation/Http/Responses/README.md b/src/Presentation/Http/Responses/README.md deleted file mode 100644 index bce8c8325..000000000 --- a/src/Presentation/Http/Responses/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# HTTP Responses - -Response transformation and formatting: - -- Response factories -- JSON transformers -- View presenters -- Error response formatting -- Content negotiation - -Ensures consistent API responses and proper HTTP semantics. \ No newline at end of file diff --git a/src/Presentation/README.md b/src/Presentation/README.md deleted file mode 100644 index 3e99a424b..000000000 --- a/src/Presentation/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Presentation Layer - -User interface implementations: - -- HTTP controllers for web and API -- CLI commands for console operations -- Request/response handling -- Input validation -- Output formatting - -This layer translates between external format and application format. \ No newline at end of file diff --git a/src/Whoops/README.md b/src/Whoops/README.md deleted file mode 100644 index 572b42980..000000000 --- a/src/Whoops/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# TorrentPier Whoops Enhanced Error Reporting - -This directory contains enhanced Whoops error handlers specifically designed for TorrentPier to provide better debugging information when database errors occur. - -## Features - -### Enhanced Database Error Reporting - -The enhanced Whoops handlers provide comprehensive database information when errors occur: - -1. **Current SQL Query** - Shows the exact query that caused the error -2. **Recent Query History** - Displays the last 5 SQL queries executed -3. **Database Connection Status** - Connection state, server info, database name -4. **Error Context** - PDO error codes, exception details, source location -5. **TorrentPier Environment** - Debug mode status, system information - -### Components - -#### EnhancedPrettyPageHandler - -Extends Whoops' default `PrettyPageHandler` to include: -- **Database Information** table with connection details and current query -- **Recent SQL Queries** table showing query history with timing -- **TorrentPier Environment** table with system status - -#### DatabaseErrorHandler - -Specialized handler that: -- Adds database context to exception stack frames -- Identifies database-related code in the call stack -- Collects comprehensive database state information -- Formats SQL queries for readable display - -## Usage - -The enhanced handlers are automatically activated when `DBG_USER` is enabled in TorrentPier configuration. - -### Automatic Integration - -```php -// In src/Dev.php - automatically configured -$prettyPageHandler = new \TorrentPier\Whoops\EnhancedPrettyPageHandler(); -``` - -### Database Error Logging - -Database errors are now automatically logged even when they occur in Nette Database layer: - -```php -// Enhanced error handling in Database.php -try { - $row = $result->fetch(); -} catch (\Exception $e) { - // Log the error including the query that caused it - $this->debugger->log_error($e); - throw $e; // Re-throw for Whoops display -} -``` - -## Error Information Displayed - -When a database error occurs, Whoops will now show: - -### Database Information -- Connection Status: Connected/Disconnected -- Database Server: Host and port information -- Selected Database: Current database name -- Database Engine: MySQL/PostgreSQL/etc. -- Total Queries: Number of queries executed -- Total Query Time: Cumulative execution time -- Current Query: The SQL that caused the error -- Last Database Error: Error code and message -- PDO Driver: Database driver information -- Server Version: Database server version - -### Recent SQL Queries -- **Query #1-5**: Last 5 queries executed - - SQL: Formatted query text - - Time: Execution time in seconds - - Source: File and line where query originated - - Info: Additional query information - - Memory: Memory usage if available - -### TorrentPier Environment -- Application Environment: local/production/etc. -- Debug Mode: Enabled/Disabled -- SQL Debug: Enabled/Disabled -- TorrentPier Version: Current version -- Config Loaded: Configuration status -- Cache System: Availability status -- Language System: Status and encoding -- Template System: Twig-based availability -- Execution Time: Request processing time -- Peak Memory: Maximum memory used -- Current Memory: Current memory usage -- Request Method: GET/POST/etc. -- Request URI: Current page -- User Agent: Browser information -- Remote IP: Client IP address - -## Configuration - -The enhanced handlers respect TorrentPier's debug configuration: - -- `DBG_USER`: Must be enabled to show enhanced error pages -- `SQL_DEBUG`: Enables SQL query logging and timing -- `APP_ENV`: Determines environment-specific features - -## Logging - -Database errors are now logged in multiple locations: - -1. **PHP Error Log**: Basic error message -2. **TorrentPier bb_log**: Detailed error with context (`database_errors.log`) -3. **Whoops Log**: Complete error details (`php_whoops.log`) - -## Security - -The enhanced handlers maintain security by: -- Only showing detailed information when `DBG_USER` is enabled -- Using Whoops' blacklist for sensitive data -- Logging detailed information to files (not user-accessible) -- Providing generic error messages to non-debug users - -## Integration with TorrentPier 3.0 - -All enhancements are: - -- **Integrated** with the new TorrentPier 3.0 architecture -- **Modern** - designed for the rewritten codebase -- **Optional** - only activated in debug mode -- **Safe** - no security implications for production use diff --git a/styles/templates/default/images/lang/ar/icon_code.gif b/styles/templates/default/images/lang/ar/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_edit.gif b/styles/templates/default/images/lang/ar/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_email.gif b/styles/templates/default/images/lang/ar/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_icq_add.gif b/styles/templates/default/images/lang/ar/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_ip.gif b/styles/templates/default/images/lang/ar/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_mc.gif b/styles/templates/default/images/lang/ar/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_pm.gif b/styles/templates/default/images/lang/ar/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_poll.gif b/styles/templates/default/images/lang/ar/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_profile.gif b/styles/templates/default/images/lang/ar/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_quote.gif b/styles/templates/default/images/lang/ar/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_search.gif b/styles/templates/default/images/lang/ar/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/icon_www.gif b/styles/templates/default/images/lang/ar/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/ar/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/msg_newpost.gif b/styles/templates/default/images/lang/ar/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/ar/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/post.gif b/styles/templates/default/images/lang/ar/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/ar/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/release.gif b/styles/templates/default/images/lang/ar/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/ar/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/reply-locked.gif b/styles/templates/default/images/lang/ar/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/ar/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ar/reply.gif b/styles/templates/default/images/lang/ar/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/ar/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_code.gif b/styles/templates/default/images/lang/az/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/az/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_edit.gif b/styles/templates/default/images/lang/az/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/az/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_email.gif b/styles/templates/default/images/lang/az/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/az/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_icq_add.gif b/styles/templates/default/images/lang/az/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/az/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_ip.gif b/styles/templates/default/images/lang/az/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/az/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_mc.gif b/styles/templates/default/images/lang/az/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/az/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_pm.gif b/styles/templates/default/images/lang/az/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/az/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_poll.gif b/styles/templates/default/images/lang/az/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/az/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_profile.gif b/styles/templates/default/images/lang/az/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/az/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_quote.gif b/styles/templates/default/images/lang/az/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/az/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_search.gif b/styles/templates/default/images/lang/az/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/az/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/icon_www.gif b/styles/templates/default/images/lang/az/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/az/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/msg_newpost.gif b/styles/templates/default/images/lang/az/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/az/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/post.gif b/styles/templates/default/images/lang/az/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/az/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/release.gif b/styles/templates/default/images/lang/az/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/az/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/reply-locked.gif b/styles/templates/default/images/lang/az/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/az/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/az/reply.gif b/styles/templates/default/images/lang/az/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/az/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_code.gif b/styles/templates/default/images/lang/be/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/be/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_edit.gif b/styles/templates/default/images/lang/be/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/be/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_email.gif b/styles/templates/default/images/lang/be/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/be/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_icq_add.gif b/styles/templates/default/images/lang/be/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/be/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_ip.gif b/styles/templates/default/images/lang/be/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/be/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_mc.gif b/styles/templates/default/images/lang/be/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/be/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_pm.gif b/styles/templates/default/images/lang/be/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/be/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_poll.gif b/styles/templates/default/images/lang/be/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/be/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_profile.gif b/styles/templates/default/images/lang/be/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/be/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_quote.gif b/styles/templates/default/images/lang/be/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/be/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_search.gif b/styles/templates/default/images/lang/be/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/be/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/icon_www.gif b/styles/templates/default/images/lang/be/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/be/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/msg_newpost.gif b/styles/templates/default/images/lang/be/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/be/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/post.gif b/styles/templates/default/images/lang/be/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/be/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/release.gif b/styles/templates/default/images/lang/be/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/be/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/reply-locked.gif b/styles/templates/default/images/lang/be/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/be/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/be/reply.gif b/styles/templates/default/images/lang/be/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/be/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_code.gif b/styles/templates/default/images/lang/bg/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_edit.gif b/styles/templates/default/images/lang/bg/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_email.gif b/styles/templates/default/images/lang/bg/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_icq_add.gif b/styles/templates/default/images/lang/bg/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_ip.gif b/styles/templates/default/images/lang/bg/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_mc.gif b/styles/templates/default/images/lang/bg/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_pm.gif b/styles/templates/default/images/lang/bg/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_poll.gif b/styles/templates/default/images/lang/bg/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_profile.gif b/styles/templates/default/images/lang/bg/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_quote.gif b/styles/templates/default/images/lang/bg/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_search.gif b/styles/templates/default/images/lang/bg/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/icon_www.gif b/styles/templates/default/images/lang/bg/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/bg/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/msg_newpost.gif b/styles/templates/default/images/lang/bg/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/bg/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/post.gif b/styles/templates/default/images/lang/bg/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/bg/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/release.gif b/styles/templates/default/images/lang/bg/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/bg/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/reply-locked.gif b/styles/templates/default/images/lang/bg/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/bg/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bg/reply.gif b/styles/templates/default/images/lang/bg/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/bg/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_code.gif b/styles/templates/default/images/lang/bs/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_edit.gif b/styles/templates/default/images/lang/bs/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_email.gif b/styles/templates/default/images/lang/bs/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_icq_add.gif b/styles/templates/default/images/lang/bs/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_ip.gif b/styles/templates/default/images/lang/bs/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_mc.gif b/styles/templates/default/images/lang/bs/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_pm.gif b/styles/templates/default/images/lang/bs/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_poll.gif b/styles/templates/default/images/lang/bs/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_profile.gif b/styles/templates/default/images/lang/bs/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_quote.gif b/styles/templates/default/images/lang/bs/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_search.gif b/styles/templates/default/images/lang/bs/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/icon_www.gif b/styles/templates/default/images/lang/bs/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/bs/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/msg_newpost.gif b/styles/templates/default/images/lang/bs/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/bs/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/post.gif b/styles/templates/default/images/lang/bs/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/bs/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/release.gif b/styles/templates/default/images/lang/bs/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/bs/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/reply-locked.gif b/styles/templates/default/images/lang/bs/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/bs/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/bs/reply.gif b/styles/templates/default/images/lang/bs/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/bs/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_code.gif b/styles/templates/default/images/lang/ca/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_edit.gif b/styles/templates/default/images/lang/ca/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_email.gif b/styles/templates/default/images/lang/ca/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_icq_add.gif b/styles/templates/default/images/lang/ca/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_ip.gif b/styles/templates/default/images/lang/ca/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_mc.gif b/styles/templates/default/images/lang/ca/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_pm.gif b/styles/templates/default/images/lang/ca/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_poll.gif b/styles/templates/default/images/lang/ca/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_profile.gif b/styles/templates/default/images/lang/ca/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_quote.gif b/styles/templates/default/images/lang/ca/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_search.gif b/styles/templates/default/images/lang/ca/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/icon_www.gif b/styles/templates/default/images/lang/ca/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/ca/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/msg_newpost.gif b/styles/templates/default/images/lang/ca/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/ca/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/post.gif b/styles/templates/default/images/lang/ca/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/ca/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/release.gif b/styles/templates/default/images/lang/ca/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/ca/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/reply-locked.gif b/styles/templates/default/images/lang/ca/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/ca/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ca/reply.gif b/styles/templates/default/images/lang/ca/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/ca/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_code.gif b/styles/templates/default/images/lang/cs/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_edit.gif b/styles/templates/default/images/lang/cs/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_email.gif b/styles/templates/default/images/lang/cs/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_icq_add.gif b/styles/templates/default/images/lang/cs/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_ip.gif b/styles/templates/default/images/lang/cs/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_mc.gif b/styles/templates/default/images/lang/cs/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_pm.gif b/styles/templates/default/images/lang/cs/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_poll.gif b/styles/templates/default/images/lang/cs/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_profile.gif b/styles/templates/default/images/lang/cs/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_quote.gif b/styles/templates/default/images/lang/cs/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_search.gif b/styles/templates/default/images/lang/cs/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/icon_www.gif b/styles/templates/default/images/lang/cs/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/cs/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/msg_newpost.gif b/styles/templates/default/images/lang/cs/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/cs/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/post.gif b/styles/templates/default/images/lang/cs/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/cs/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/release.gif b/styles/templates/default/images/lang/cs/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/cs/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/reply-locked.gif b/styles/templates/default/images/lang/cs/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/cs/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/cs/reply.gif b/styles/templates/default/images/lang/cs/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/cs/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_code.gif b/styles/templates/default/images/lang/da/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/da/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_edit.gif b/styles/templates/default/images/lang/da/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/da/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_email.gif b/styles/templates/default/images/lang/da/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/da/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_icq_add.gif b/styles/templates/default/images/lang/da/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/da/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_ip.gif b/styles/templates/default/images/lang/da/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/da/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_mc.gif b/styles/templates/default/images/lang/da/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/da/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_pm.gif b/styles/templates/default/images/lang/da/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/da/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_poll.gif b/styles/templates/default/images/lang/da/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/da/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_profile.gif b/styles/templates/default/images/lang/da/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/da/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_quote.gif b/styles/templates/default/images/lang/da/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/da/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_search.gif b/styles/templates/default/images/lang/da/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/da/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/icon_www.gif b/styles/templates/default/images/lang/da/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/da/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/msg_newpost.gif b/styles/templates/default/images/lang/da/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/da/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/post.gif b/styles/templates/default/images/lang/da/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/da/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/release.gif b/styles/templates/default/images/lang/da/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/da/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/reply-locked.gif b/styles/templates/default/images/lang/da/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/da/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/da/reply.gif b/styles/templates/default/images/lang/da/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/da/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_code.gif b/styles/templates/default/images/lang/de/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/de/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_edit.gif b/styles/templates/default/images/lang/de/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/de/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_email.gif b/styles/templates/default/images/lang/de/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/de/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_icq_add.gif b/styles/templates/default/images/lang/de/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/de/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_ip.gif b/styles/templates/default/images/lang/de/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/de/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_mc.gif b/styles/templates/default/images/lang/de/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/de/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_pm.gif b/styles/templates/default/images/lang/de/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/de/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_poll.gif b/styles/templates/default/images/lang/de/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/de/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_profile.gif b/styles/templates/default/images/lang/de/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/de/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_quote.gif b/styles/templates/default/images/lang/de/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/de/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_search.gif b/styles/templates/default/images/lang/de/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/de/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/icon_www.gif b/styles/templates/default/images/lang/de/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/de/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/msg_newpost.gif b/styles/templates/default/images/lang/de/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/de/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/post.gif b/styles/templates/default/images/lang/de/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/de/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/release.gif b/styles/templates/default/images/lang/de/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/de/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/reply-locked.gif b/styles/templates/default/images/lang/de/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/de/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/de/reply.gif b/styles/templates/default/images/lang/de/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/de/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_code.gif b/styles/templates/default/images/lang/el/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/el/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_edit.gif b/styles/templates/default/images/lang/el/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/el/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_email.gif b/styles/templates/default/images/lang/el/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/el/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_icq_add.gif b/styles/templates/default/images/lang/el/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/el/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_ip.gif b/styles/templates/default/images/lang/el/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/el/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_mc.gif b/styles/templates/default/images/lang/el/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/el/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_pm.gif b/styles/templates/default/images/lang/el/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/el/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_poll.gif b/styles/templates/default/images/lang/el/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/el/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_profile.gif b/styles/templates/default/images/lang/el/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/el/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_quote.gif b/styles/templates/default/images/lang/el/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/el/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_search.gif b/styles/templates/default/images/lang/el/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/el/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/icon_www.gif b/styles/templates/default/images/lang/el/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/el/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/msg_newpost.gif b/styles/templates/default/images/lang/el/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/el/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/post.gif b/styles/templates/default/images/lang/el/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/el/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/release.gif b/styles/templates/default/images/lang/el/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/el/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/reply-locked.gif b/styles/templates/default/images/lang/el/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/el/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/el/reply.gif b/styles/templates/default/images/lang/el/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/el/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_code.gif b/styles/templates/default/images/lang/en/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/en/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_edit.gif b/styles/templates/default/images/lang/en/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/en/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_email.gif b/styles/templates/default/images/lang/en/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/en/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_icq_add.gif b/styles/templates/default/images/lang/en/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/en/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_ip.gif b/styles/templates/default/images/lang/en/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/en/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_mc.gif b/styles/templates/default/images/lang/en/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/en/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_pm.gif b/styles/templates/default/images/lang/en/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/en/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_poll.gif b/styles/templates/default/images/lang/en/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/en/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_profile.gif b/styles/templates/default/images/lang/en/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/en/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_quote.gif b/styles/templates/default/images/lang/en/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/en/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_search.gif b/styles/templates/default/images/lang/en/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/en/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/icon_www.gif b/styles/templates/default/images/lang/en/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/en/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/msg_newpost.gif b/styles/templates/default/images/lang/en/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/en/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/post.gif b/styles/templates/default/images/lang/en/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/en/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/release.gif b/styles/templates/default/images/lang/en/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/en/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/reply-locked.gif b/styles/templates/default/images/lang/en/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/en/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/en/reply.gif b/styles/templates/default/images/lang/en/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/en/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_code.gif b/styles/templates/default/images/lang/es/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/es/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_edit.gif b/styles/templates/default/images/lang/es/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/es/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_email.gif b/styles/templates/default/images/lang/es/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/es/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_icq_add.gif b/styles/templates/default/images/lang/es/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/es/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_ip.gif b/styles/templates/default/images/lang/es/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/es/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_mc.gif b/styles/templates/default/images/lang/es/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/es/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_pm.gif b/styles/templates/default/images/lang/es/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/es/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_poll.gif b/styles/templates/default/images/lang/es/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/es/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_profile.gif b/styles/templates/default/images/lang/es/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/es/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_quote.gif b/styles/templates/default/images/lang/es/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/es/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_search.gif b/styles/templates/default/images/lang/es/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/es/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/icon_www.gif b/styles/templates/default/images/lang/es/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/es/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/msg_newpost.gif b/styles/templates/default/images/lang/es/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/es/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/post.gif b/styles/templates/default/images/lang/es/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/es/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/release.gif b/styles/templates/default/images/lang/es/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/es/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/reply-locked.gif b/styles/templates/default/images/lang/es/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/es/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/es/reply.gif b/styles/templates/default/images/lang/es/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/es/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_code.gif b/styles/templates/default/images/lang/et/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/et/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_edit.gif b/styles/templates/default/images/lang/et/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/et/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_email.gif b/styles/templates/default/images/lang/et/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/et/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_icq_add.gif b/styles/templates/default/images/lang/et/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/et/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_ip.gif b/styles/templates/default/images/lang/et/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/et/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_mc.gif b/styles/templates/default/images/lang/et/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/et/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_pm.gif b/styles/templates/default/images/lang/et/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/et/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_poll.gif b/styles/templates/default/images/lang/et/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/et/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_profile.gif b/styles/templates/default/images/lang/et/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/et/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_quote.gif b/styles/templates/default/images/lang/et/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/et/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_search.gif b/styles/templates/default/images/lang/et/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/et/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/icon_www.gif b/styles/templates/default/images/lang/et/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/et/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/msg_newpost.gif b/styles/templates/default/images/lang/et/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/et/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/post.gif b/styles/templates/default/images/lang/et/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/et/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/release.gif b/styles/templates/default/images/lang/et/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/et/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/reply-locked.gif b/styles/templates/default/images/lang/et/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/et/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/et/reply.gif b/styles/templates/default/images/lang/et/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/et/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_code.gif b/styles/templates/default/images/lang/fi/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_edit.gif b/styles/templates/default/images/lang/fi/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_email.gif b/styles/templates/default/images/lang/fi/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_icq_add.gif b/styles/templates/default/images/lang/fi/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_ip.gif b/styles/templates/default/images/lang/fi/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_mc.gif b/styles/templates/default/images/lang/fi/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_pm.gif b/styles/templates/default/images/lang/fi/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_poll.gif b/styles/templates/default/images/lang/fi/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_profile.gif b/styles/templates/default/images/lang/fi/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_quote.gif b/styles/templates/default/images/lang/fi/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_search.gif b/styles/templates/default/images/lang/fi/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/icon_www.gif b/styles/templates/default/images/lang/fi/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/fi/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/msg_newpost.gif b/styles/templates/default/images/lang/fi/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/fi/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/post.gif b/styles/templates/default/images/lang/fi/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/fi/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/release.gif b/styles/templates/default/images/lang/fi/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/fi/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/reply-locked.gif b/styles/templates/default/images/lang/fi/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/fi/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fi/reply.gif b/styles/templates/default/images/lang/fi/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/fi/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_code.gif b/styles/templates/default/images/lang/fr/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_edit.gif b/styles/templates/default/images/lang/fr/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_email.gif b/styles/templates/default/images/lang/fr/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_icq_add.gif b/styles/templates/default/images/lang/fr/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_ip.gif b/styles/templates/default/images/lang/fr/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_mc.gif b/styles/templates/default/images/lang/fr/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_pm.gif b/styles/templates/default/images/lang/fr/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_poll.gif b/styles/templates/default/images/lang/fr/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_profile.gif b/styles/templates/default/images/lang/fr/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_quote.gif b/styles/templates/default/images/lang/fr/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_search.gif b/styles/templates/default/images/lang/fr/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/icon_www.gif b/styles/templates/default/images/lang/fr/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/fr/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/msg_newpost.gif b/styles/templates/default/images/lang/fr/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/fr/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/post.gif b/styles/templates/default/images/lang/fr/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/fr/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/release.gif b/styles/templates/default/images/lang/fr/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/fr/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/reply-locked.gif b/styles/templates/default/images/lang/fr/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/fr/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/fr/reply.gif b/styles/templates/default/images/lang/fr/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/fr/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_code.gif b/styles/templates/default/images/lang/he/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/he/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_edit.gif b/styles/templates/default/images/lang/he/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/he/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_email.gif b/styles/templates/default/images/lang/he/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/he/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_icq_add.gif b/styles/templates/default/images/lang/he/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/he/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_ip.gif b/styles/templates/default/images/lang/he/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/he/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_mc.gif b/styles/templates/default/images/lang/he/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/he/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_pm.gif b/styles/templates/default/images/lang/he/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/he/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_poll.gif b/styles/templates/default/images/lang/he/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/he/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_profile.gif b/styles/templates/default/images/lang/he/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/he/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_quote.gif b/styles/templates/default/images/lang/he/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/he/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_search.gif b/styles/templates/default/images/lang/he/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/he/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/icon_www.gif b/styles/templates/default/images/lang/he/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/he/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/msg_newpost.gif b/styles/templates/default/images/lang/he/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/he/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/post.gif b/styles/templates/default/images/lang/he/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/he/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/release.gif b/styles/templates/default/images/lang/he/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/he/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/reply-locked.gif b/styles/templates/default/images/lang/he/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/he/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/he/reply.gif b/styles/templates/default/images/lang/he/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/he/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_code.gif b/styles/templates/default/images/lang/hi/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_edit.gif b/styles/templates/default/images/lang/hi/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_email.gif b/styles/templates/default/images/lang/hi/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_icq_add.gif b/styles/templates/default/images/lang/hi/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_ip.gif b/styles/templates/default/images/lang/hi/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_mc.gif b/styles/templates/default/images/lang/hi/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_pm.gif b/styles/templates/default/images/lang/hi/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_poll.gif b/styles/templates/default/images/lang/hi/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_profile.gif b/styles/templates/default/images/lang/hi/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_quote.gif b/styles/templates/default/images/lang/hi/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_search.gif b/styles/templates/default/images/lang/hi/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/icon_www.gif b/styles/templates/default/images/lang/hi/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/hi/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/msg_newpost.gif b/styles/templates/default/images/lang/hi/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/hi/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/post.gif b/styles/templates/default/images/lang/hi/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/hi/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/release.gif b/styles/templates/default/images/lang/hi/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/hi/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/reply-locked.gif b/styles/templates/default/images/lang/hi/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/hi/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hi/reply.gif b/styles/templates/default/images/lang/hi/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/hi/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_code.gif b/styles/templates/default/images/lang/hr/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_edit.gif b/styles/templates/default/images/lang/hr/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_email.gif b/styles/templates/default/images/lang/hr/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_icq_add.gif b/styles/templates/default/images/lang/hr/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_ip.gif b/styles/templates/default/images/lang/hr/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_mc.gif b/styles/templates/default/images/lang/hr/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_pm.gif b/styles/templates/default/images/lang/hr/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_poll.gif b/styles/templates/default/images/lang/hr/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_profile.gif b/styles/templates/default/images/lang/hr/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_quote.gif b/styles/templates/default/images/lang/hr/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_search.gif b/styles/templates/default/images/lang/hr/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/icon_www.gif b/styles/templates/default/images/lang/hr/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/hr/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/msg_newpost.gif b/styles/templates/default/images/lang/hr/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/hr/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/post.gif b/styles/templates/default/images/lang/hr/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/hr/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/release.gif b/styles/templates/default/images/lang/hr/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/hr/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/reply-locked.gif b/styles/templates/default/images/lang/hr/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/hr/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hr/reply.gif b/styles/templates/default/images/lang/hr/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/hr/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_code.gif b/styles/templates/default/images/lang/hu/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_edit.gif b/styles/templates/default/images/lang/hu/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_email.gif b/styles/templates/default/images/lang/hu/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_icq_add.gif b/styles/templates/default/images/lang/hu/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_ip.gif b/styles/templates/default/images/lang/hu/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_mc.gif b/styles/templates/default/images/lang/hu/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_pm.gif b/styles/templates/default/images/lang/hu/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_poll.gif b/styles/templates/default/images/lang/hu/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_profile.gif b/styles/templates/default/images/lang/hu/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_quote.gif b/styles/templates/default/images/lang/hu/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_search.gif b/styles/templates/default/images/lang/hu/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/icon_www.gif b/styles/templates/default/images/lang/hu/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/hu/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/msg_newpost.gif b/styles/templates/default/images/lang/hu/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/hu/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/post.gif b/styles/templates/default/images/lang/hu/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/hu/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/release.gif b/styles/templates/default/images/lang/hu/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/hu/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/reply-locked.gif b/styles/templates/default/images/lang/hu/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/hu/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hu/reply.gif b/styles/templates/default/images/lang/hu/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/hu/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_code.gif b/styles/templates/default/images/lang/hy/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_edit.gif b/styles/templates/default/images/lang/hy/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_email.gif b/styles/templates/default/images/lang/hy/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_icq_add.gif b/styles/templates/default/images/lang/hy/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_ip.gif b/styles/templates/default/images/lang/hy/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_mc.gif b/styles/templates/default/images/lang/hy/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_pm.gif b/styles/templates/default/images/lang/hy/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_poll.gif b/styles/templates/default/images/lang/hy/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_profile.gif b/styles/templates/default/images/lang/hy/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_quote.gif b/styles/templates/default/images/lang/hy/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_search.gif b/styles/templates/default/images/lang/hy/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/icon_www.gif b/styles/templates/default/images/lang/hy/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/hy/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/msg_newpost.gif b/styles/templates/default/images/lang/hy/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/hy/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/post.gif b/styles/templates/default/images/lang/hy/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/hy/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/release.gif b/styles/templates/default/images/lang/hy/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/hy/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/reply-locked.gif b/styles/templates/default/images/lang/hy/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/hy/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/hy/reply.gif b/styles/templates/default/images/lang/hy/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/hy/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_code.gif b/styles/templates/default/images/lang/id/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/id/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_edit.gif b/styles/templates/default/images/lang/id/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/id/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_email.gif b/styles/templates/default/images/lang/id/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/id/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_icq_add.gif b/styles/templates/default/images/lang/id/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/id/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_ip.gif b/styles/templates/default/images/lang/id/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/id/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_mc.gif b/styles/templates/default/images/lang/id/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/id/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_pm.gif b/styles/templates/default/images/lang/id/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/id/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_poll.gif b/styles/templates/default/images/lang/id/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/id/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_profile.gif b/styles/templates/default/images/lang/id/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/id/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_quote.gif b/styles/templates/default/images/lang/id/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/id/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_search.gif b/styles/templates/default/images/lang/id/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/id/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/icon_www.gif b/styles/templates/default/images/lang/id/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/id/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/msg_newpost.gif b/styles/templates/default/images/lang/id/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/id/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/post.gif b/styles/templates/default/images/lang/id/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/id/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/release.gif b/styles/templates/default/images/lang/id/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/id/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/reply-locked.gif b/styles/templates/default/images/lang/id/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/id/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/id/reply.gif b/styles/templates/default/images/lang/id/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/id/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_code.gif b/styles/templates/default/images/lang/it/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/it/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_edit.gif b/styles/templates/default/images/lang/it/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/it/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_email.gif b/styles/templates/default/images/lang/it/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/it/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_icq_add.gif b/styles/templates/default/images/lang/it/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/it/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_ip.gif b/styles/templates/default/images/lang/it/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/it/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_mc.gif b/styles/templates/default/images/lang/it/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/it/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_pm.gif b/styles/templates/default/images/lang/it/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/it/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_poll.gif b/styles/templates/default/images/lang/it/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/it/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_profile.gif b/styles/templates/default/images/lang/it/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/it/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_quote.gif b/styles/templates/default/images/lang/it/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/it/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_search.gif b/styles/templates/default/images/lang/it/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/it/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/icon_www.gif b/styles/templates/default/images/lang/it/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/it/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/msg_newpost.gif b/styles/templates/default/images/lang/it/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/it/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/post.gif b/styles/templates/default/images/lang/it/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/it/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/release.gif b/styles/templates/default/images/lang/it/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/it/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/reply-locked.gif b/styles/templates/default/images/lang/it/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/it/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/it/reply.gif b/styles/templates/default/images/lang/it/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/it/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_code.gif b/styles/templates/default/images/lang/ja/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_edit.gif b/styles/templates/default/images/lang/ja/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_email.gif b/styles/templates/default/images/lang/ja/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_icq_add.gif b/styles/templates/default/images/lang/ja/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_ip.gif b/styles/templates/default/images/lang/ja/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_mc.gif b/styles/templates/default/images/lang/ja/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_pm.gif b/styles/templates/default/images/lang/ja/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_poll.gif b/styles/templates/default/images/lang/ja/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_profile.gif b/styles/templates/default/images/lang/ja/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_quote.gif b/styles/templates/default/images/lang/ja/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_search.gif b/styles/templates/default/images/lang/ja/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/icon_www.gif b/styles/templates/default/images/lang/ja/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/ja/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/msg_newpost.gif b/styles/templates/default/images/lang/ja/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/ja/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/post.gif b/styles/templates/default/images/lang/ja/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/ja/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/release.gif b/styles/templates/default/images/lang/ja/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/ja/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/reply-locked.gif b/styles/templates/default/images/lang/ja/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/ja/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ja/reply.gif b/styles/templates/default/images/lang/ja/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/ja/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_code.gif b/styles/templates/default/images/lang/ka/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_edit.gif b/styles/templates/default/images/lang/ka/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_email.gif b/styles/templates/default/images/lang/ka/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_icq_add.gif b/styles/templates/default/images/lang/ka/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_ip.gif b/styles/templates/default/images/lang/ka/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_mc.gif b/styles/templates/default/images/lang/ka/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_pm.gif b/styles/templates/default/images/lang/ka/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_poll.gif b/styles/templates/default/images/lang/ka/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_profile.gif b/styles/templates/default/images/lang/ka/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_quote.gif b/styles/templates/default/images/lang/ka/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_search.gif b/styles/templates/default/images/lang/ka/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/icon_www.gif b/styles/templates/default/images/lang/ka/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/ka/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/msg_newpost.gif b/styles/templates/default/images/lang/ka/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/ka/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/post.gif b/styles/templates/default/images/lang/ka/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/ka/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/release.gif b/styles/templates/default/images/lang/ka/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/ka/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/reply-locked.gif b/styles/templates/default/images/lang/ka/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/ka/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ka/reply.gif b/styles/templates/default/images/lang/ka/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/ka/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_code.gif b/styles/templates/default/images/lang/kk/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_edit.gif b/styles/templates/default/images/lang/kk/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_email.gif b/styles/templates/default/images/lang/kk/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_icq_add.gif b/styles/templates/default/images/lang/kk/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_ip.gif b/styles/templates/default/images/lang/kk/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_mc.gif b/styles/templates/default/images/lang/kk/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_pm.gif b/styles/templates/default/images/lang/kk/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_poll.gif b/styles/templates/default/images/lang/kk/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_profile.gif b/styles/templates/default/images/lang/kk/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_quote.gif b/styles/templates/default/images/lang/kk/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_search.gif b/styles/templates/default/images/lang/kk/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/icon_www.gif b/styles/templates/default/images/lang/kk/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/kk/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/msg_newpost.gif b/styles/templates/default/images/lang/kk/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/kk/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/post.gif b/styles/templates/default/images/lang/kk/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/kk/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/release.gif b/styles/templates/default/images/lang/kk/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/kk/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/reply-locked.gif b/styles/templates/default/images/lang/kk/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/kk/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/kk/reply.gif b/styles/templates/default/images/lang/kk/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/kk/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_code.gif b/styles/templates/default/images/lang/ko/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_edit.gif b/styles/templates/default/images/lang/ko/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_email.gif b/styles/templates/default/images/lang/ko/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_icq_add.gif b/styles/templates/default/images/lang/ko/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_ip.gif b/styles/templates/default/images/lang/ko/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_mc.gif b/styles/templates/default/images/lang/ko/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_pm.gif b/styles/templates/default/images/lang/ko/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_poll.gif b/styles/templates/default/images/lang/ko/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_profile.gif b/styles/templates/default/images/lang/ko/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_quote.gif b/styles/templates/default/images/lang/ko/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_search.gif b/styles/templates/default/images/lang/ko/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/icon_www.gif b/styles/templates/default/images/lang/ko/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/ko/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/msg_newpost.gif b/styles/templates/default/images/lang/ko/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/ko/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/post.gif b/styles/templates/default/images/lang/ko/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/ko/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/release.gif b/styles/templates/default/images/lang/ko/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/ko/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/reply-locked.gif b/styles/templates/default/images/lang/ko/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/ko/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ko/reply.gif b/styles/templates/default/images/lang/ko/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/ko/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_code.gif b/styles/templates/default/images/lang/lt/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_edit.gif b/styles/templates/default/images/lang/lt/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_email.gif b/styles/templates/default/images/lang/lt/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_icq_add.gif b/styles/templates/default/images/lang/lt/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_ip.gif b/styles/templates/default/images/lang/lt/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_mc.gif b/styles/templates/default/images/lang/lt/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_pm.gif b/styles/templates/default/images/lang/lt/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_poll.gif b/styles/templates/default/images/lang/lt/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_profile.gif b/styles/templates/default/images/lang/lt/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_quote.gif b/styles/templates/default/images/lang/lt/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_search.gif b/styles/templates/default/images/lang/lt/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/icon_www.gif b/styles/templates/default/images/lang/lt/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/lt/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/msg_newpost.gif b/styles/templates/default/images/lang/lt/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/lt/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/post.gif b/styles/templates/default/images/lang/lt/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/lt/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/release.gif b/styles/templates/default/images/lang/lt/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/lt/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/reply-locked.gif b/styles/templates/default/images/lang/lt/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/lt/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lt/reply.gif b/styles/templates/default/images/lang/lt/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/lt/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_code.gif b/styles/templates/default/images/lang/lv/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_edit.gif b/styles/templates/default/images/lang/lv/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_email.gif b/styles/templates/default/images/lang/lv/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_icq_add.gif b/styles/templates/default/images/lang/lv/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_ip.gif b/styles/templates/default/images/lang/lv/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_mc.gif b/styles/templates/default/images/lang/lv/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_pm.gif b/styles/templates/default/images/lang/lv/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_poll.gif b/styles/templates/default/images/lang/lv/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_profile.gif b/styles/templates/default/images/lang/lv/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_quote.gif b/styles/templates/default/images/lang/lv/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_search.gif b/styles/templates/default/images/lang/lv/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/icon_www.gif b/styles/templates/default/images/lang/lv/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/lv/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/msg_newpost.gif b/styles/templates/default/images/lang/lv/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/lv/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/post.gif b/styles/templates/default/images/lang/lv/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/lv/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/release.gif b/styles/templates/default/images/lang/lv/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/lv/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/reply-locked.gif b/styles/templates/default/images/lang/lv/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/lv/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/lv/reply.gif b/styles/templates/default/images/lang/lv/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/lv/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_code.gif b/styles/templates/default/images/lang/nl/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_edit.gif b/styles/templates/default/images/lang/nl/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_email.gif b/styles/templates/default/images/lang/nl/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_icq_add.gif b/styles/templates/default/images/lang/nl/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_ip.gif b/styles/templates/default/images/lang/nl/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_mc.gif b/styles/templates/default/images/lang/nl/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_pm.gif b/styles/templates/default/images/lang/nl/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_poll.gif b/styles/templates/default/images/lang/nl/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_profile.gif b/styles/templates/default/images/lang/nl/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_quote.gif b/styles/templates/default/images/lang/nl/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_search.gif b/styles/templates/default/images/lang/nl/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/icon_www.gif b/styles/templates/default/images/lang/nl/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/nl/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/msg_newpost.gif b/styles/templates/default/images/lang/nl/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/nl/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/post.gif b/styles/templates/default/images/lang/nl/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/nl/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/release.gif b/styles/templates/default/images/lang/nl/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/nl/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/reply-locked.gif b/styles/templates/default/images/lang/nl/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/nl/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/nl/reply.gif b/styles/templates/default/images/lang/nl/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/nl/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_code.gif b/styles/templates/default/images/lang/no/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/no/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_edit.gif b/styles/templates/default/images/lang/no/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/no/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_email.gif b/styles/templates/default/images/lang/no/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/no/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_icq_add.gif b/styles/templates/default/images/lang/no/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/no/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_ip.gif b/styles/templates/default/images/lang/no/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/no/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_mc.gif b/styles/templates/default/images/lang/no/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/no/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_pm.gif b/styles/templates/default/images/lang/no/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/no/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_poll.gif b/styles/templates/default/images/lang/no/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/no/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_profile.gif b/styles/templates/default/images/lang/no/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/no/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_quote.gif b/styles/templates/default/images/lang/no/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/no/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_search.gif b/styles/templates/default/images/lang/no/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/no/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/icon_www.gif b/styles/templates/default/images/lang/no/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/no/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/msg_newpost.gif b/styles/templates/default/images/lang/no/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/no/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/post.gif b/styles/templates/default/images/lang/no/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/no/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/release.gif b/styles/templates/default/images/lang/no/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/no/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/reply-locked.gif b/styles/templates/default/images/lang/no/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/no/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/no/reply.gif b/styles/templates/default/images/lang/no/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/no/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_code.gif b/styles/templates/default/images/lang/pl/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_edit.gif b/styles/templates/default/images/lang/pl/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_email.gif b/styles/templates/default/images/lang/pl/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_icq_add.gif b/styles/templates/default/images/lang/pl/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_ip.gif b/styles/templates/default/images/lang/pl/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_mc.gif b/styles/templates/default/images/lang/pl/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_pm.gif b/styles/templates/default/images/lang/pl/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_poll.gif b/styles/templates/default/images/lang/pl/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_profile.gif b/styles/templates/default/images/lang/pl/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_quote.gif b/styles/templates/default/images/lang/pl/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_search.gif b/styles/templates/default/images/lang/pl/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/icon_www.gif b/styles/templates/default/images/lang/pl/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/pl/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/msg_newpost.gif b/styles/templates/default/images/lang/pl/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/pl/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/post.gif b/styles/templates/default/images/lang/pl/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/pl/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/release.gif b/styles/templates/default/images/lang/pl/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/pl/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/reply-locked.gif b/styles/templates/default/images/lang/pl/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/pl/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pl/reply.gif b/styles/templates/default/images/lang/pl/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/pl/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_code.gif b/styles/templates/default/images/lang/pt/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_edit.gif b/styles/templates/default/images/lang/pt/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_email.gif b/styles/templates/default/images/lang/pt/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_icq_add.gif b/styles/templates/default/images/lang/pt/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_ip.gif b/styles/templates/default/images/lang/pt/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_mc.gif b/styles/templates/default/images/lang/pt/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_pm.gif b/styles/templates/default/images/lang/pt/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_poll.gif b/styles/templates/default/images/lang/pt/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_profile.gif b/styles/templates/default/images/lang/pt/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_quote.gif b/styles/templates/default/images/lang/pt/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_search.gif b/styles/templates/default/images/lang/pt/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/icon_www.gif b/styles/templates/default/images/lang/pt/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/pt/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/msg_newpost.gif b/styles/templates/default/images/lang/pt/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/pt/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/post.gif b/styles/templates/default/images/lang/pt/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/pt/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/release.gif b/styles/templates/default/images/lang/pt/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/pt/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/reply-locked.gif b/styles/templates/default/images/lang/pt/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/pt/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/pt/reply.gif b/styles/templates/default/images/lang/pt/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/pt/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_code.gif b/styles/templates/default/images/lang/ro/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_edit.gif b/styles/templates/default/images/lang/ro/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_email.gif b/styles/templates/default/images/lang/ro/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_icq_add.gif b/styles/templates/default/images/lang/ro/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_ip.gif b/styles/templates/default/images/lang/ro/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_mc.gif b/styles/templates/default/images/lang/ro/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_pm.gif b/styles/templates/default/images/lang/ro/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_poll.gif b/styles/templates/default/images/lang/ro/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_profile.gif b/styles/templates/default/images/lang/ro/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_quote.gif b/styles/templates/default/images/lang/ro/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_search.gif b/styles/templates/default/images/lang/ro/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/icon_www.gif b/styles/templates/default/images/lang/ro/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/ro/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/msg_newpost.gif b/styles/templates/default/images/lang/ro/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/ro/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/post.gif b/styles/templates/default/images/lang/ro/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/ro/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/release.gif b/styles/templates/default/images/lang/ro/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/ro/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/reply-locked.gif b/styles/templates/default/images/lang/ro/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/ro/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ro/reply.gif b/styles/templates/default/images/lang/ro/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/ro/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_code.gif b/styles/templates/default/images/lang/ru/icon_code.gif deleted file mode 100644 index b3d65a375..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_edit.gif b/styles/templates/default/images/lang/ru/icon_edit.gif deleted file mode 100644 index fd52b6b27..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_email.gif b/styles/templates/default/images/lang/ru/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_icq_add.gif b/styles/templates/default/images/lang/ru/icon_icq_add.gif deleted file mode 100644 index 4309f27b5..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_ip.gif b/styles/templates/default/images/lang/ru/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_mc.gif b/styles/templates/default/images/lang/ru/icon_mc.gif deleted file mode 100644 index 91460ea53..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_pm.gif b/styles/templates/default/images/lang/ru/icon_pm.gif deleted file mode 100644 index 390db0b74..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_poll.gif b/styles/templates/default/images/lang/ru/icon_poll.gif deleted file mode 100644 index 30a6c5ed3..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_profile.gif b/styles/templates/default/images/lang/ru/icon_profile.gif deleted file mode 100644 index 422304b4f..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_quote.gif b/styles/templates/default/images/lang/ru/icon_quote.gif deleted file mode 100644 index 7997dd495..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_search.gif b/styles/templates/default/images/lang/ru/icon_search.gif deleted file mode 100644 index 11e09d7a1..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/icon_www.gif b/styles/templates/default/images/lang/ru/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/ru/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/msg_newpost.gif b/styles/templates/default/images/lang/ru/msg_newpost.gif deleted file mode 100644 index f5d7bcb81..000000000 Binary files a/styles/templates/default/images/lang/ru/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/post.gif b/styles/templates/default/images/lang/ru/post.gif deleted file mode 100644 index e5e3349a0..000000000 Binary files a/styles/templates/default/images/lang/ru/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/release.gif b/styles/templates/default/images/lang/ru/release.gif deleted file mode 100644 index 8daa8f8cb..000000000 Binary files a/styles/templates/default/images/lang/ru/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/reply-locked.gif b/styles/templates/default/images/lang/ru/reply-locked.gif deleted file mode 100644 index 538693e91..000000000 Binary files a/styles/templates/default/images/lang/ru/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/ru/reply.gif b/styles/templates/default/images/lang/ru/reply.gif deleted file mode 100644 index 37914ed0d..000000000 Binary files a/styles/templates/default/images/lang/ru/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_code.gif b/styles/templates/default/images/lang/sk/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_edit.gif b/styles/templates/default/images/lang/sk/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_email.gif b/styles/templates/default/images/lang/sk/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_icq_add.gif b/styles/templates/default/images/lang/sk/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_ip.gif b/styles/templates/default/images/lang/sk/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_mc.gif b/styles/templates/default/images/lang/sk/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_pm.gif b/styles/templates/default/images/lang/sk/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_poll.gif b/styles/templates/default/images/lang/sk/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_profile.gif b/styles/templates/default/images/lang/sk/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_quote.gif b/styles/templates/default/images/lang/sk/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_search.gif b/styles/templates/default/images/lang/sk/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/icon_www.gif b/styles/templates/default/images/lang/sk/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/sk/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/msg_newpost.gif b/styles/templates/default/images/lang/sk/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/sk/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/post.gif b/styles/templates/default/images/lang/sk/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/sk/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/release.gif b/styles/templates/default/images/lang/sk/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/sk/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/reply-locked.gif b/styles/templates/default/images/lang/sk/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/sk/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sk/reply.gif b/styles/templates/default/images/lang/sk/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/sk/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_code.gif b/styles/templates/default/images/lang/sl/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_edit.gif b/styles/templates/default/images/lang/sl/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_email.gif b/styles/templates/default/images/lang/sl/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_icq_add.gif b/styles/templates/default/images/lang/sl/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_ip.gif b/styles/templates/default/images/lang/sl/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_mc.gif b/styles/templates/default/images/lang/sl/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_pm.gif b/styles/templates/default/images/lang/sl/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_poll.gif b/styles/templates/default/images/lang/sl/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_profile.gif b/styles/templates/default/images/lang/sl/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_quote.gif b/styles/templates/default/images/lang/sl/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_search.gif b/styles/templates/default/images/lang/sl/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/icon_www.gif b/styles/templates/default/images/lang/sl/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/sl/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/msg_newpost.gif b/styles/templates/default/images/lang/sl/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/sl/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/post.gif b/styles/templates/default/images/lang/sl/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/sl/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/release.gif b/styles/templates/default/images/lang/sl/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/sl/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/reply-locked.gif b/styles/templates/default/images/lang/sl/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/sl/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sl/reply.gif b/styles/templates/default/images/lang/sl/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/sl/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_code.gif b/styles/templates/default/images/lang/source/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/source/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_edit.gif b/styles/templates/default/images/lang/source/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/source/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_email.gif b/styles/templates/default/images/lang/source/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/source/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_icq_add.gif b/styles/templates/default/images/lang/source/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/source/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_ip.gif b/styles/templates/default/images/lang/source/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/source/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_mc.gif b/styles/templates/default/images/lang/source/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/source/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_pm.gif b/styles/templates/default/images/lang/source/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/source/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_poll.gif b/styles/templates/default/images/lang/source/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/source/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_profile.gif b/styles/templates/default/images/lang/source/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/source/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_quote.gif b/styles/templates/default/images/lang/source/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/source/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_search.gif b/styles/templates/default/images/lang/source/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/source/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icon_www.gif b/styles/templates/default/images/lang/source/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/source/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icons_sources/icon_large.gif b/styles/templates/default/images/lang/source/icons_sources/icon_large.gif deleted file mode 100644 index e3d072db6..000000000 Binary files a/styles/templates/default/images/lang/source/icons_sources/icon_large.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icons_sources/icon_medium.gif b/styles/templates/default/images/lang/source/icons_sources/icon_medium.gif deleted file mode 100644 index fed70f75e..000000000 Binary files a/styles/templates/default/images/lang/source/icons_sources/icon_medium.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/icons_sources/icon_small.gif b/styles/templates/default/images/lang/source/icons_sources/icon_small.gif deleted file mode 100644 index 85b723015..000000000 Binary files a/styles/templates/default/images/lang/source/icons_sources/icon_small.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/msg_newpost.gif b/styles/templates/default/images/lang/source/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/source/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/post.gif b/styles/templates/default/images/lang/source/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/source/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/release.gif b/styles/templates/default/images/lang/source/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/source/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/reply-locked.gif b/styles/templates/default/images/lang/source/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/source/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/source/reply.gif b/styles/templates/default/images/lang/source/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/source/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_code.gif b/styles/templates/default/images/lang/sq/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_edit.gif b/styles/templates/default/images/lang/sq/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_email.gif b/styles/templates/default/images/lang/sq/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_icq_add.gif b/styles/templates/default/images/lang/sq/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_ip.gif b/styles/templates/default/images/lang/sq/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_mc.gif b/styles/templates/default/images/lang/sq/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_pm.gif b/styles/templates/default/images/lang/sq/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_poll.gif b/styles/templates/default/images/lang/sq/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_profile.gif b/styles/templates/default/images/lang/sq/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_quote.gif b/styles/templates/default/images/lang/sq/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_search.gif b/styles/templates/default/images/lang/sq/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/icon_www.gif b/styles/templates/default/images/lang/sq/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/sq/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/msg_newpost.gif b/styles/templates/default/images/lang/sq/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/sq/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/post.gif b/styles/templates/default/images/lang/sq/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/sq/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/release.gif b/styles/templates/default/images/lang/sq/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/sq/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/reply-locked.gif b/styles/templates/default/images/lang/sq/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/sq/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sq/reply.gif b/styles/templates/default/images/lang/sq/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/sq/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_code.gif b/styles/templates/default/images/lang/sr/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_edit.gif b/styles/templates/default/images/lang/sr/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_email.gif b/styles/templates/default/images/lang/sr/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_icq_add.gif b/styles/templates/default/images/lang/sr/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_ip.gif b/styles/templates/default/images/lang/sr/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_mc.gif b/styles/templates/default/images/lang/sr/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_pm.gif b/styles/templates/default/images/lang/sr/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_poll.gif b/styles/templates/default/images/lang/sr/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_profile.gif b/styles/templates/default/images/lang/sr/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_quote.gif b/styles/templates/default/images/lang/sr/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_search.gif b/styles/templates/default/images/lang/sr/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/icon_www.gif b/styles/templates/default/images/lang/sr/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/sr/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/msg_newpost.gif b/styles/templates/default/images/lang/sr/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/sr/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/post.gif b/styles/templates/default/images/lang/sr/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/sr/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/release.gif b/styles/templates/default/images/lang/sr/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/sr/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/reply-locked.gif b/styles/templates/default/images/lang/sr/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/sr/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sr/reply.gif b/styles/templates/default/images/lang/sr/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/sr/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_code.gif b/styles/templates/default/images/lang/sv/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_edit.gif b/styles/templates/default/images/lang/sv/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_email.gif b/styles/templates/default/images/lang/sv/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_icq_add.gif b/styles/templates/default/images/lang/sv/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_ip.gif b/styles/templates/default/images/lang/sv/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_mc.gif b/styles/templates/default/images/lang/sv/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_pm.gif b/styles/templates/default/images/lang/sv/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_poll.gif b/styles/templates/default/images/lang/sv/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_profile.gif b/styles/templates/default/images/lang/sv/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_quote.gif b/styles/templates/default/images/lang/sv/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_search.gif b/styles/templates/default/images/lang/sv/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/icon_www.gif b/styles/templates/default/images/lang/sv/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/sv/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/msg_newpost.gif b/styles/templates/default/images/lang/sv/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/sv/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/post.gif b/styles/templates/default/images/lang/sv/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/sv/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/release.gif b/styles/templates/default/images/lang/sv/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/sv/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/reply-locked.gif b/styles/templates/default/images/lang/sv/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/sv/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/sv/reply.gif b/styles/templates/default/images/lang/sv/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/sv/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_code.gif b/styles/templates/default/images/lang/tg/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_edit.gif b/styles/templates/default/images/lang/tg/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_email.gif b/styles/templates/default/images/lang/tg/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_icq_add.gif b/styles/templates/default/images/lang/tg/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_ip.gif b/styles/templates/default/images/lang/tg/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_mc.gif b/styles/templates/default/images/lang/tg/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_pm.gif b/styles/templates/default/images/lang/tg/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_poll.gif b/styles/templates/default/images/lang/tg/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_profile.gif b/styles/templates/default/images/lang/tg/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_quote.gif b/styles/templates/default/images/lang/tg/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_search.gif b/styles/templates/default/images/lang/tg/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/icon_www.gif b/styles/templates/default/images/lang/tg/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/tg/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/msg_newpost.gif b/styles/templates/default/images/lang/tg/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/tg/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/post.gif b/styles/templates/default/images/lang/tg/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/tg/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/release.gif b/styles/templates/default/images/lang/tg/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/tg/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/reply-locked.gif b/styles/templates/default/images/lang/tg/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/tg/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tg/reply.gif b/styles/templates/default/images/lang/tg/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/tg/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_code.gif b/styles/templates/default/images/lang/th/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/th/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_edit.gif b/styles/templates/default/images/lang/th/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/th/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_email.gif b/styles/templates/default/images/lang/th/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/th/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_icq_add.gif b/styles/templates/default/images/lang/th/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/th/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_ip.gif b/styles/templates/default/images/lang/th/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/th/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_mc.gif b/styles/templates/default/images/lang/th/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/th/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_pm.gif b/styles/templates/default/images/lang/th/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/th/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_poll.gif b/styles/templates/default/images/lang/th/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/th/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_profile.gif b/styles/templates/default/images/lang/th/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/th/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_quote.gif b/styles/templates/default/images/lang/th/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/th/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_search.gif b/styles/templates/default/images/lang/th/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/th/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/icon_www.gif b/styles/templates/default/images/lang/th/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/th/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/msg_newpost.gif b/styles/templates/default/images/lang/th/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/th/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/post.gif b/styles/templates/default/images/lang/th/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/th/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/release.gif b/styles/templates/default/images/lang/th/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/th/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/reply-locked.gif b/styles/templates/default/images/lang/th/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/th/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/th/reply.gif b/styles/templates/default/images/lang/th/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/th/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_code.gif b/styles/templates/default/images/lang/tr/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_edit.gif b/styles/templates/default/images/lang/tr/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_email.gif b/styles/templates/default/images/lang/tr/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_icq_add.gif b/styles/templates/default/images/lang/tr/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_ip.gif b/styles/templates/default/images/lang/tr/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_mc.gif b/styles/templates/default/images/lang/tr/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_pm.gif b/styles/templates/default/images/lang/tr/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_poll.gif b/styles/templates/default/images/lang/tr/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_profile.gif b/styles/templates/default/images/lang/tr/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_quote.gif b/styles/templates/default/images/lang/tr/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_search.gif b/styles/templates/default/images/lang/tr/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/icon_www.gif b/styles/templates/default/images/lang/tr/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/tr/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/msg_newpost.gif b/styles/templates/default/images/lang/tr/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/tr/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/post.gif b/styles/templates/default/images/lang/tr/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/tr/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/release.gif b/styles/templates/default/images/lang/tr/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/tr/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/reply-locked.gif b/styles/templates/default/images/lang/tr/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/tr/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/tr/reply.gif b/styles/templates/default/images/lang/tr/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/tr/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_code.gif b/styles/templates/default/images/lang/uk/icon_code.gif deleted file mode 100644 index b3d65a375..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_edit.gif b/styles/templates/default/images/lang/uk/icon_edit.gif deleted file mode 100644 index 2f1f508ce..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_email.gif b/styles/templates/default/images/lang/uk/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_icq_add.gif b/styles/templates/default/images/lang/uk/icon_icq_add.gif deleted file mode 100644 index 4309f27b5..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_ip.gif b/styles/templates/default/images/lang/uk/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_mc.gif b/styles/templates/default/images/lang/uk/icon_mc.gif deleted file mode 100644 index 91460ea53..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_pm.gif b/styles/templates/default/images/lang/uk/icon_pm.gif deleted file mode 100644 index ff4a918d5..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_poll.gif b/styles/templates/default/images/lang/uk/icon_poll.gif deleted file mode 100644 index 05c38021e..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_profile.gif b/styles/templates/default/images/lang/uk/icon_profile.gif deleted file mode 100644 index 8e0986c9c..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_quote.gif b/styles/templates/default/images/lang/uk/icon_quote.gif deleted file mode 100644 index 33cea78f6..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_search.gif b/styles/templates/default/images/lang/uk/icon_search.gif deleted file mode 100644 index 36e607362..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/icon_www.gif b/styles/templates/default/images/lang/uk/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/uk/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/msg_newpost.gif b/styles/templates/default/images/lang/uk/msg_newpost.gif deleted file mode 100644 index ed5d027f4..000000000 Binary files a/styles/templates/default/images/lang/uk/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/post.gif b/styles/templates/default/images/lang/uk/post.gif deleted file mode 100644 index 64b754718..000000000 Binary files a/styles/templates/default/images/lang/uk/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/release.gif b/styles/templates/default/images/lang/uk/release.gif deleted file mode 100644 index e33191dbf..000000000 Binary files a/styles/templates/default/images/lang/uk/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/reply-locked.gif b/styles/templates/default/images/lang/uk/reply-locked.gif deleted file mode 100644 index 67aaa9372..000000000 Binary files a/styles/templates/default/images/lang/uk/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uk/reply.gif b/styles/templates/default/images/lang/uk/reply.gif deleted file mode 100644 index 4becf4d1c..000000000 Binary files a/styles/templates/default/images/lang/uk/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_code.gif b/styles/templates/default/images/lang/uz/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_edit.gif b/styles/templates/default/images/lang/uz/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_email.gif b/styles/templates/default/images/lang/uz/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_icq_add.gif b/styles/templates/default/images/lang/uz/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_ip.gif b/styles/templates/default/images/lang/uz/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_mc.gif b/styles/templates/default/images/lang/uz/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_pm.gif b/styles/templates/default/images/lang/uz/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_poll.gif b/styles/templates/default/images/lang/uz/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_profile.gif b/styles/templates/default/images/lang/uz/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_quote.gif b/styles/templates/default/images/lang/uz/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_search.gif b/styles/templates/default/images/lang/uz/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/icon_www.gif b/styles/templates/default/images/lang/uz/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/uz/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/msg_newpost.gif b/styles/templates/default/images/lang/uz/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/uz/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/post.gif b/styles/templates/default/images/lang/uz/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/uz/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/release.gif b/styles/templates/default/images/lang/uz/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/uz/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/reply-locked.gif b/styles/templates/default/images/lang/uz/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/uz/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/uz/reply.gif b/styles/templates/default/images/lang/uz/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/uz/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_code.gif b/styles/templates/default/images/lang/vi/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_edit.gif b/styles/templates/default/images/lang/vi/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_email.gif b/styles/templates/default/images/lang/vi/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_icq_add.gif b/styles/templates/default/images/lang/vi/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_ip.gif b/styles/templates/default/images/lang/vi/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_mc.gif b/styles/templates/default/images/lang/vi/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_pm.gif b/styles/templates/default/images/lang/vi/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_poll.gif b/styles/templates/default/images/lang/vi/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_profile.gif b/styles/templates/default/images/lang/vi/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_quote.gif b/styles/templates/default/images/lang/vi/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_search.gif b/styles/templates/default/images/lang/vi/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/icon_www.gif b/styles/templates/default/images/lang/vi/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/vi/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/msg_newpost.gif b/styles/templates/default/images/lang/vi/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/vi/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/post.gif b/styles/templates/default/images/lang/vi/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/vi/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/release.gif b/styles/templates/default/images/lang/vi/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/vi/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/reply-locked.gif b/styles/templates/default/images/lang/vi/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/vi/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/vi/reply.gif b/styles/templates/default/images/lang/vi/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/vi/reply.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_code.gif b/styles/templates/default/images/lang/zh/icon_code.gif deleted file mode 100644 index 5afd6e2c7..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_code.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_edit.gif b/styles/templates/default/images/lang/zh/icon_edit.gif deleted file mode 100644 index 65937c5fc..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_edit.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_email.gif b/styles/templates/default/images/lang/zh/icon_email.gif deleted file mode 100644 index 67137b802..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_email.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_icq_add.gif b/styles/templates/default/images/lang/zh/icon_icq_add.gif deleted file mode 100644 index c0c5cd552..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_icq_add.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_ip.gif b/styles/templates/default/images/lang/zh/icon_ip.gif deleted file mode 100644 index 5822a929a..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_ip.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_mc.gif b/styles/templates/default/images/lang/zh/icon_mc.gif deleted file mode 100644 index 1db8e37f5..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_mc.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_pm.gif b/styles/templates/default/images/lang/zh/icon_pm.gif deleted file mode 100644 index 432075c59..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_pm.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_poll.gif b/styles/templates/default/images/lang/zh/icon_poll.gif deleted file mode 100644 index 73a29852d..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_poll.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_profile.gif b/styles/templates/default/images/lang/zh/icon_profile.gif deleted file mode 100644 index abac5dd87..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_profile.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_quote.gif b/styles/templates/default/images/lang/zh/icon_quote.gif deleted file mode 100644 index 9497b2c57..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_quote.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_search.gif b/styles/templates/default/images/lang/zh/icon_search.gif deleted file mode 100644 index 5d9c01713..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_search.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/icon_www.gif b/styles/templates/default/images/lang/zh/icon_www.gif deleted file mode 100644 index 3da9e0e8c..000000000 Binary files a/styles/templates/default/images/lang/zh/icon_www.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/msg_newpost.gif b/styles/templates/default/images/lang/zh/msg_newpost.gif deleted file mode 100644 index 33a1e1c72..000000000 Binary files a/styles/templates/default/images/lang/zh/msg_newpost.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/post.gif b/styles/templates/default/images/lang/zh/post.gif deleted file mode 100644 index 9d53572cd..000000000 Binary files a/styles/templates/default/images/lang/zh/post.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/release.gif b/styles/templates/default/images/lang/zh/release.gif deleted file mode 100644 index 25440636e..000000000 Binary files a/styles/templates/default/images/lang/zh/release.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/reply-locked.gif b/styles/templates/default/images/lang/zh/reply-locked.gif deleted file mode 100644 index edfd75a87..000000000 Binary files a/styles/templates/default/images/lang/zh/reply-locked.gif and /dev/null differ diff --git a/styles/templates/default/images/lang/zh/reply.gif b/styles/templates/default/images/lang/zh/reply.gif deleted file mode 100644 index f18c08923..000000000 Binary files a/styles/templates/default/images/lang/zh/reply.gif and /dev/null differ diff --git a/tests/Feature/ContainerIntegrationTest.php b/tests/Feature/ContainerIntegrationTest.php deleted file mode 100644 index d972ee3ef..000000000 --- a/tests/Feature/ContainerIntegrationTest.php +++ /dev/null @@ -1,193 +0,0 @@ -createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'services' => [ - 'integration.test' => 'integration_value', - ], - ]); - - $container = Bootstrap::init($rootPath); - - expect($container)->toBeInstanceOf(Container::class); - expect($container->get('integration.test'))->toBe('integration_value'); - - removeTempDirectory($rootPath); - }); - - it('integrates with global helper functions', function () { - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'services' => [ - 'helper.test' => 'helper_value', - ], - ]); - - Bootstrap::init($rootPath); - - // Test container() helper - expect(container())->toBeInstanceOf(Container::class); - - // Test app() helper without parameter - expect(app())->toBeInstanceOf(Container::class); - - // Test app() helper with service ID - expect(app('helper.test'))->toBe('helper_value'); - - removeTempDirectory($rootPath); - }); - - it('handles missing services gracefully in helpers', function () { - $rootPath = $this->createTestRootDirectory(); - Bootstrap::init($rootPath); - - // Should throw RuntimeException for missing service - expect(fn() => app('missing.service')) - ->toThrow(RuntimeException::class) - ->toThrow('not found in container'); - - removeTempDirectory($rootPath); - }); - - it('supports autowiring for simple classes', function () { - $rootPath = $this->createTestRootDirectory(); - $container = Bootstrap::init($rootPath); - - // Should be able to autowire stdClass - expect($container->has(stdClass::class))->toBeTrue(); - expect($container->get(stdClass::class))->toBeInstanceOf(stdClass::class); - - removeTempDirectory($rootPath); - }); - - it('loads all architectural layer definitions', function () { - $rootPath = $this->createTestRootDirectory(); - $container = Bootstrap::init($rootPath); - - // Container should be created successfully with all layer definitions loaded - // Even though most definitions are commented out, the loading should work - expect($container)->toBeInstanceOf(Container::class); - - // Container should have itself registered - expect($container->get(Container::class))->toBe($container); - expect($container->get('container'))->toBe($container); - - removeTempDirectory($rootPath); - }); - - it('supports environment-based configuration', function () { - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'container' => [ - 'environment' => 'production', - 'compilation_dir' => $rootPath . '/internal_data/cache/container', - 'proxies_dir' => $rootPath . '/internal_data/cache/proxies', - ], - ]); - - $container = Bootstrap::init($rootPath); - - expect($container)->toBeInstanceOf(Container::class); - - removeTempDirectory($rootPath); - }); - - it('supports service provider registration', function () { - $testProviderClass = new class implements \TorrentPier\Infrastructure\DependencyInjection\ServiceProvider { - public static bool $wasRegistered = false; - public static bool $wasBooted = false; - - public function register(\TorrentPier\Infrastructure\DependencyInjection\Container $container): void - { - self::$wasRegistered = true; - $container->getWrappedContainer()->set('provider.test', 'provider_registered'); - } - - public function boot(\TorrentPier\Infrastructure\DependencyInjection\Container $container): void - { - self::$wasBooted = true; - } - }; - - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'container' => [ - 'providers' => [get_class($testProviderClass)], - ], - ]); - - $container = Bootstrap::init($rootPath); - - expect($testProviderClass::$wasRegistered)->toBeTrue(); - expect($testProviderClass::$wasBooted)->toBeTrue(); - expect($container->get('provider.test'))->toBe('provider_registered'); - - removeTempDirectory($rootPath); - }); - - it('handles configuration file loading priority', function () { - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'services' => [ - 'priority.test' => \DI\factory(function () { - return 'from_services_file'; - }), - ], - ]); - - // Initialize with runtime config that should override file config - $container = Bootstrap::init($rootPath, [ - 'definitions' => [ - 'priority.test' => \DI\factory(function () { - return 'from_runtime_config'; - }), - 'runtime.only' => \DI\factory(function () { - return 'runtime_value'; - }), - ], - ]); - - // Runtime config should override file config - expect($container->get('priority.test'))->toBe('from_runtime_config'); - expect($container->get('runtime.only'))->toBe('runtime_value'); - - removeTempDirectory($rootPath); - }); - - it('provides meaningful error messages', function () { - $rootPath = $this->createTestRootDirectory(); - Bootstrap::init($rootPath); - - try { - app('definitely.missing.service'); - fail('Expected exception to be thrown'); - } catch (RuntimeException $e) { - expect($e->getMessage())->toContain('definitely.missing.service'); - expect($e->getMessage())->toContain('not found in container'); - } - - removeTempDirectory($rootPath); - }); - - it('supports performance measurement', function () { - $rootPath = $this->createTestRootDirectory(); - - $time = measureExecutionTime(function () use ($rootPath) { - Bootstrap::init($rootPath); - }); - - // Container initialization should be reasonably fast - expect($time)->toBeLessThan(1.0); // Should take less than 1 second - - removeTempDirectory($rootPath); - }); -}); diff --git a/tests/Pest.php b/tests/Pest.php deleted file mode 100644 index f1c9a7613..000000000 --- a/tests/Pest.php +++ /dev/null @@ -1,95 +0,0 @@ -extend(Tests\TestCase::class)->in('Feature'); -pest()->extend(Tests\TestCase::class)->in('Unit'); - -/* -|-------------------------------------------------------------------------- -| Expectations -|-------------------------------------------------------------------------- -| -| When you're writing tests, you often need to check that values meet certain conditions. The -| "expect()" function gives you access to a set of "expectations" methods that you can use -| to assert different things. Of course, you may extend the Expectation API at any time. -| -*/ - -expect()->extend('toBeOne', function () { - return $this->toBe(1); -}); - -/* -|-------------------------------------------------------------------------- -| Functions -|-------------------------------------------------------------------------- -| -| While Pest is very powerful out-of-the-box, you may have some testing code specific to your -| project that you don't want to repeat in every file. Here you can also expose helpers as -| global functions to help you to reduce the number of lines of code in your test files. -| -*/ - -/** - * Performance Testing Helpers - */ -function measureExecutionTime(callable $callback): float -{ - $start = microtime(true); - $callback(); - return microtime(true) - $start; -} - -function expectExecutionTimeUnder(callable $callback, float $maxSeconds): void -{ - $time = measureExecutionTime($callback); - expect($time)->toBeLessThan($maxSeconds, "Execution took {$time}s, expected under {$maxSeconds}s"); -} - -/** - * File System Helpers - */ -function createTempDirectory(): string -{ - $tempDir = sys_get_temp_dir() . '/torrentpier_test_' . uniqid(); - mkdir($tempDir, 0755, true); - return $tempDir; -} - -function removeTempDirectory(string $dir): void -{ - if (is_dir($dir)) { - $files = array_diff(scandir($dir), ['.', '..']); - foreach ($files as $file) { - $path = $dir . '/' . $file; - is_dir($path) ? removeTempDirectory($path) : unlink($path); - } - rmdir($dir); - } -} - -/** - * Exception Testing Helpers - */ -function expectException(callable $callback, string $exceptionClass, ?string $message = null): void -{ - try { - $callback(); - fail("Expected exception $exceptionClass was not thrown"); - } catch (Throwable $e) { - expect($e)->toBeInstanceOf($exceptionClass); - if ($message) { - expect($e->getMessage())->toContain($message); - } - } -} diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index 1ec09dc6b..000000000 --- a/tests/README.md +++ /dev/null @@ -1,433 +0,0 @@ -# ๐Ÿงช TorrentPier 3.0 Testing Infrastructure - -This document outlines the testing infrastructure for TorrentPier 3.0, built using **Pest PHP** and following the hexagonal architecture principles outlined in the project specification. - -## ๐Ÿ“– Table of Contents - -- [Overview](#overview) -- [Hexagonal Architecture Testing](#hexagonal-architecture-testing) -- [Test Organization](#test-organization) -- [DI Container Testing](#di-container-testing) -- [Testing Patterns](#testing-patterns) -- [Test Execution](#test-execution) -- [Best Practices](#best-practices) - -## ๐ŸŽฏ Overview - -TorrentPier 3.0's testing suite is designed following the hexagonal architecture testing strategy: - -- **Domain**: Pure unit tests, no mocks needed -- **Application**: Unit tests with mocked repositories -- **Infrastructure**: Integration tests with real services -- **Presentation**: E2E tests for user journeys - -### Core Testing Principles - -1. **Architecture-Driven**: Tests follow the hexagonal architecture layers -2. **Phase-Aligned**: Testing matches the 5-phase implementation strategy -3. **Clean Slate**: No legacy dependencies, modern PHP 8.3+ testing -4. **Infrastructure First**: Focus on foundational DI container testing -5. **Future-Ready**: Structure prepared for upcoming domain/application layers - -## ๐Ÿ—๏ธ Hexagonal Architecture Testing - -### Testing Strategy by Layer - -#### Domain Layer Testing (Phase 2 - Future) -```php -// Pure unit tests, no framework dependencies -it('validates business rules without external dependencies', function () { - $user = new User(new UserId(1), new Email('test@example.com')); - expect($user->canPost())->toBeTrue(); -}); -``` - -#### Application Layer Testing (Phase 3 - Future) -```php -// Unit tests with mocked repositories -it('handles user registration command', function () { - $mockRepo = Mockery::mock(UserRepositoryInterface::class); - $handler = new RegisterUserHandler($mockRepo); - - $command = new RegisterUserCommand('john', 'john@example.com'); - $handler->handle($command); - - $mockRepo->shouldHaveReceived('save'); -}); -``` - -#### Infrastructure Layer Testing (Phase 1 - Current) -```php -// Integration tests with real services -it('creates container with real PHP-DI integration', function () { - $container = ContainerFactory::create(); - expect($container)->toBeInstanceOf(Container::class); -}); -``` - -#### Presentation Layer Testing (Phase 5 - Future) -```php -// E2E tests for user journeys -it('handles API request end-to-end', function () { - $response = $this->post('/api/users', ['name' => 'John']); - expect($response->status())->toBe(201); -}); -``` - -## ๐Ÿ“ Test Organization - -### Directory Structure - -``` -tests/ -โ”œโ”€โ”€ README.md # This documentation -โ”œโ”€โ”€ Pest.php # Clean Pest configuration -โ”œโ”€โ”€ TestCase.php # Enhanced base test case with DI utilities -โ”œโ”€โ”€ Unit/Infrastructure/DependencyInjection/ # DI Container tests (Phase 1) -โ”‚ โ”œโ”€โ”€ ContainerTest.php # Container wrapper tests -โ”‚ โ”œโ”€โ”€ ContainerFactoryTest.php # Factory functionality tests -โ”‚ โ”œโ”€โ”€ BootstrapTest.php # Application bootstrapping tests -โ”‚ โ”œโ”€โ”€ ServiceProviderTest.php # Service provider interface tests -โ”‚ โ””โ”€โ”€ Definitions/ # Layer-specific definition tests -โ”‚ โ”œโ”€โ”€ DomainDefinitionsTest.php -โ”‚ โ”œโ”€โ”€ ApplicationDefinitionsTest.php -โ”‚ โ”œโ”€โ”€ InfrastructureDefinitionsTest.php -โ”‚ โ””โ”€โ”€ PresentationDefinitionsTest.php -โ””โ”€โ”€ Feature/ # Integration tests - โ””โ”€โ”€ ContainerIntegrationTest.php # End-to-end container tests -``` - -### Future Structure (As Phases Are Implemented) - -``` -tests/ -โ”œโ”€โ”€ Unit/ -โ”‚ โ”œโ”€โ”€ Domain/ # Phase 2: Pure business logic tests -โ”‚ โ”‚ โ”œโ”€โ”€ User/ -โ”‚ โ”‚ โ”œโ”€โ”€ Forum/ -โ”‚ โ”‚ โ””โ”€โ”€ Tracker/ -โ”‚ โ”œโ”€โ”€ Application/ # Phase 3: Use case orchestration tests -โ”‚ โ”‚ โ”œโ”€โ”€ User/ -โ”‚ โ”‚ โ”œโ”€โ”€ Forum/ -โ”‚ โ”‚ โ””โ”€โ”€ Tracker/ -โ”‚ โ”œโ”€โ”€ Infrastructure/ # Phase 4: External service integration tests -โ”‚ โ”‚ โ”œโ”€โ”€ Persistence/ -โ”‚ โ”‚ โ”œโ”€โ”€ Cache/ -โ”‚ โ”‚ โ””โ”€โ”€ Email/ -โ”‚ โ””โ”€โ”€ Presentation/ # Phase 5: Interface layer tests -โ”‚ โ”œโ”€โ”€ Http/ -โ”‚ โ””โ”€โ”€ Cli/ -โ””โ”€โ”€ Feature/ # Cross-layer integration tests -``` - -## ๐Ÿ› ๏ธ DI Container Testing - -### Current Implementation (Phase 1) - -The DI container is the foundation of TorrentPier 3.0's architecture. Our tests ensure: - -#### Container Wrapper Testing -```php -// tests/Unit/Infrastructure/DependencyInjection/ContainerTest.php -it('implements PSR-11 ContainerInterface', function () { - expect($this->container)->toBeInstanceOf(\Psr\Container\ContainerInterface::class); -}); - -it('can resolve autowired classes', function () { - $result = $this->container->get(stdClass::class); - expect($result)->toBeInstanceOf(stdClass::class); -}); - -it('throws NotFoundExceptionInterface for non-existent services', function () { - expect(fn() => $this->container->get('non.existent.service')) - ->toThrow(NotFoundExceptionInterface::class); -}); -``` - -#### Factory Configuration Testing -```php -// tests/Unit/Infrastructure/DependencyInjection/ContainerFactoryTest.php -it('applies configuration correctly', function () { - $config = [ - 'environment' => 'testing', - 'autowiring' => true, - 'definitions' => [ - 'test.service' => \DI\factory(fn() => 'test_value'), - ], - ]; - - $container = ContainerFactory::create($config); - expect($container->get('test.service'))->toBe('test_value'); -}); -``` - -#### Bootstrap Integration Testing -```php -// tests/Unit/Infrastructure/DependencyInjection/BootstrapTest.php -it('loads configuration from multiple sources', function () { - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'env' => ['APP_ENV' => 'testing'], - 'services' => ['config.service' => \DI\factory(fn() => 'merged_config')], - ]); - - $container = Bootstrap::init($rootPath); - expect($container->get('config.service'))->toBe('merged_config'); -}); -``` - -### Test Utilities - -#### Enhanced TestCase -```php -// tests/TestCase.php -abstract class TestCase extends BaseTestCase -{ - protected function createTestContainer(array $config = []): Container - { - $defaultConfig = [ - 'environment' => 'testing', - 'autowiring' => true, - 'definitions' => [], - ]; - - return ContainerFactory::create(array_merge($defaultConfig, $config)); - } - - protected function assertCanResolve(Container $container, string $serviceId): void - { - $this->assertTrue($container->has($serviceId)); - $this->assertNotNull($container->get($serviceId)); - } -} -``` - -## ๐ŸŽจ Testing Patterns - -### 1. Infrastructure Integration Testing -```php -// Real service integration (current phase) -it('integrates with real PHP-DI container', function () { - $container = $this->createTestContainer([ - 'definitions' => [ - 'real.service' => \DI\autowire(stdClass::class), - ], - ]); - - $service = $container->get('real.service'); - expect($service)->toBeInstanceOf(stdClass::class); -}); -``` - -### 2. Configuration-Driven Testing -```php -// Environment-based configuration -it('adapts to different environments', function () { - $prodContainer = $this->createTestContainer(['environment' => 'production']); - $devContainer = $this->createTestContainer(['environment' => 'development']); - - expect($prodContainer)->toBeInstanceOf(Container::class); - expect($devContainer)->toBeInstanceOf(Container::class); -}); -``` - -### 3. Service Provider Testing -```php -// Modular service registration -it('registers services through providers', function () { - $provider = new class implements ServiceProvider { - public function register(Container $container): void { - $container->getWrappedContainer()->set('provider.service', 'registered'); - } - public function boot(Container $container): void {} - }; - - $container = $this->createTestContainer(); - $provider->register($container); - - expect($container->get('provider.service'))->toBe('registered'); -}); -``` - -### 4. Layer Definition Testing -```php -// Architectural layer compliance -it('follows domain layer principles', function () { - $definitions = DomainDefinitions::getDefinitions(); - - // Domain definitions should be empty in Phase 1 - expect($definitions)->toBe([]); - - // Structure should be prepared for Phase 2 - expect($definitions)->toBeArray(); -}); -``` - -## ๐Ÿš€ Test Execution - -### Running Tests - -```bash -# Run all tests -./vendor/bin/pest - -# Run DI container tests specifically -./vendor/bin/pest tests/Unit/Infrastructure/DependencyInjection/ - -# Run integration tests -./vendor/bin/pest tests/Feature/ - -# Run with coverage -./vendor/bin/pest --coverage - -# Run specific test file -./vendor/bin/pest tests/Unit/Infrastructure/DependencyInjection/ContainerTest.php -``` - -### Performance Testing -```bash -# Measure container bootstrap performance -./vendor/bin/pest --filter="performance" - -# Container creation should be fast -expectExecutionTimeUnder(fn() => Bootstrap::init($rootPath), 1.0); -``` - -## ๐Ÿ“‹ Best Practices - -### 1. Phase-Aligned Testing -```php -// Current Phase 1: Test infrastructure only -it('provides foundation for future phases', function () { - $container = $this->createTestContainer(); - - // Infrastructure works now - expect($container)->toBeInstanceOf(Container::class); - - // Ready for future domain services - expect($container->has(stdClass::class))->toBeTrue(); -}); -``` - -### 2. Architecture Compliance -```php -// Ensure clean architectural boundaries -it('keeps domain layer pure', function () { - $definitions = DomainDefinitions::getDefinitions(); - - // Domain should have no infrastructure dependencies - expect($definitions)->toBeArray(); - - // Future domain services will be dependency-free -}); -``` - -### 3. Configuration Testing -```php -// Test multiple configuration sources -it('merges configuration correctly', function () { - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'container' => ['autowiring' => true], - 'services' => ['test.service' => \DI\factory(fn() => 'test')], - ]); - - $container = Bootstrap::init($rootPath, [ - 'definitions' => ['runtime.service' => \DI\factory(fn() => 'runtime')], - ]); - - expect($container->get('test.service'))->toBe('test'); - expect($container->get('runtime.service'))->toBe('runtime'); -}); -``` - -### 4. Error Handling -```php -// Comprehensive error testing -it('provides meaningful error messages', function () { - $container = $this->createTestContainer(); - - try { - $container->get('missing.service'); - fail('Expected exception'); - } catch (RuntimeException $e) { - expect($e->getMessage())->toContain('missing.service'); - expect($e->getMessage())->toContain('not found in container'); - } -}); -``` - -## ๐Ÿ“Š Current Implementation Status - -### โœ… Phase 1 Complete: Infrastructure Foundation - -- **DI Container**: Fully tested container wrapper with PSR-11 compliance -- **Factory Pattern**: Comprehensive configuration and creation testing -- **Bootstrap Process**: Environment loading and configuration merging -- **Service Providers**: Modular service registration interface -- **Helper Functions**: Global container access with proper error handling -- **Layer Definitions**: Prepared structure for all architectural layers - -### ๐Ÿ”„ Testing Coverage - -- **Container Core**: 100% coverage of wrapper functionality -- **Configuration**: All config sources and merging scenarios tested -- **Error Handling**: Complete PSR-11 exception compliance -- **Integration**: End-to-end bootstrap and usage scenarios -- **Performance**: Container creation and resolution timing validation - -### ๐Ÿ”ฎ Future Phase Testing - -As TorrentPier 3.0 phases are implemented: - -#### Phase 2: Domain Layer -```php -// Domain entity testing (future) -it('validates user business rules', function () { - $user = new User(UserId::generate(), new Email('test@example.com')); - expect($user->isActive())->toBeTrue(); -}); -``` - -#### Phase 3: Application Layer -```php -// Command handler testing (future) -it('processes registration command', function () { - $handler = app(RegisterUserHandler::class); - $command = new RegisterUserCommand('john', 'john@example.com'); - - $userId = $handler->handle($command); - expect($userId)->toBeInstanceOf(UserId::class); -}); -``` - -#### Phase 4: Infrastructure Layer -```php -// Repository integration testing (future) -it('persists user through repository', function () { - $repository = app(UserRepositoryInterface::class); - $user = User::create('john', 'john@example.com'); - - $repository->save($user); - expect($repository->findById($user->getId()))->not->toBeNull(); -}); -``` - -#### Phase 5: Presentation Layer -```php -// Controller integration testing (future) -it('handles user registration via API', function () { - $response = $this->postJson('/api/users', [ - 'username' => 'john', - 'email' => 'john@example.com', - ]); - - expect($response->status())->toBe(201); -}); -``` - ---- - -**TorrentPier 3.0 Testing Philosophy**: Tests serve as both validation and documentation of the hexagonal architecture. Each layer has distinct testing strategies that ensure clean separation of concerns and maintainable code. - -For questions about testing patterns or contributions, refer to the [TorrentPier GitHub repository](https://github.com/torrentpier/torrentpier) or the hexagonal architecture specification at `/docs/specs/hexagonal-architecture-spec.md`. \ No newline at end of file diff --git a/tests/TestCase.php b/tests/TestCase.php deleted file mode 100644 index e876511f2..000000000 --- a/tests/TestCase.php +++ /dev/null @@ -1,120 +0,0 @@ - 'testing', - 'autowiring' => true, - 'definitions' => [], - ]; - - return ContainerFactory::create(array_merge($defaultConfig, $config)); - } - - /** - * Create a container with custom service definitions - */ - protected function createContainerWithDefinitions(array $definitions): Container - { - return $this->createTestContainer([ - 'definitions' => $definitions, - ]); - } - - /** - * Create a temporary test root directory - */ - protected function createTestRootDirectory(): string - { - $tempDir = createTempDirectory(); - - // Create basic directory structure - mkdir($tempDir . '/config', 0755, true); - mkdir($tempDir . '/internal_data/cache', 0755, true); - - return $tempDir; - } - - /** - * Create test configuration files - */ - protected function createTestConfigFiles(string $rootPath, array $configs = []): void - { - $configPath = $rootPath . '/config'; - - // Create container.php - if (isset($configs['container'])) { - file_put_contents( - $configPath . '/container.php', - ' $value) { - if (is_string($value)) { - $servicesContent .= " '$key' => factory(function () { return '$value'; }),\n"; - } - } - $servicesContent .= "];\n"; - - file_put_contents($configPath . '/services.php', $servicesContent); - } - - // Create .env file - if (isset($configs['env'])) { - $envContent = ''; - foreach ($configs['env'] as $key => $value) { - $envContent .= "$key=$value\n"; - } - file_put_contents($rootPath . '/.env', $envContent); - } - } - - /** - * Assert that a service can be resolved from the container - */ - protected function assertCanResolve(Container $container, string $serviceId): void - { - $this->assertTrue($container->has($serviceId), "Container should have service: $serviceId"); - $this->assertNotNull($container->get($serviceId), "Should be able to resolve service: $serviceId"); - } - - /** - * Assert that a service cannot be resolved from the container - */ - protected function assertCannotResolve(Container $container, string $serviceId): void - { - $this->assertFalse($container->has($serviceId), "Container should not have service: $serviceId"); - } -} diff --git a/tests/Unit/Infrastructure/DependencyInjection/BootstrapTest.php b/tests/Unit/Infrastructure/DependencyInjection/BootstrapTest.php deleted file mode 100644 index 1a0fbaf16..000000000 --- a/tests/Unit/Infrastructure/DependencyInjection/BootstrapTest.php +++ /dev/null @@ -1,190 +0,0 @@ -createTestRootDirectory(); - - $container = Bootstrap::init($rootPath); - - expect($container)->toBeInstanceOf(Container::class); - - removeTempDirectory($rootPath); - }); - - it('returns the same container on subsequent calls', function () { - $rootPath = $this->createTestRootDirectory(); - - $container1 = Bootstrap::init($rootPath); - $container2 = Bootstrap::init($rootPath); - - expect($container1)->toBe($container2); - - removeTempDirectory($rootPath); - }); - - it('registers container instance with itself', function () { - $rootPath = $this->createTestRootDirectory(); - - $container = Bootstrap::init($rootPath); - - expect($container->get(Container::class))->toBe($container); - expect($container->get('container'))->toBe($container); - - removeTempDirectory($rootPath); - }); - - it('loads environment variables from .env file', function () { - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'env' => [ - 'TEST_VAR' => 'test_value', - 'APP_ENV' => 'testing', - ], - ]); - - Bootstrap::init($rootPath); - - expect($_ENV['TEST_VAR'] ?? null)->toBe('test_value'); - expect($_ENV['APP_ENV'] ?? null)->toBe('testing'); - - removeTempDirectory($rootPath); - }); - - it('loads configuration from config files', function () { - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'container' => [ - 'environment' => 'testing', - 'autowiring' => true, - ], - 'services' => [ - 'test.service' => 'config_value', - ], - ]); - - $container = Bootstrap::init($rootPath); - - expect($container->get('test.service'))->toBe('config_value'); - - removeTempDirectory($rootPath); - }); - - it('handles missing config files gracefully', function () { - $rootPath = $this->createTestRootDirectory(); - - // Should not throw exception even without config files - $container = Bootstrap::init($rootPath); - - expect($container)->toBeInstanceOf(Container::class); - - removeTempDirectory($rootPath); - }); - }); - - describe('getContainer() method', function () { - it('returns null when not initialized', function () { - expect(Bootstrap::getContainer())->toBeNull(); - }); - - it('returns container after initialization', function () { - $rootPath = $this->createTestRootDirectory(); - - $container = Bootstrap::init($rootPath); - - expect(Bootstrap::getContainer())->toBe($container); - - removeTempDirectory($rootPath); - }); - }); - - describe('reset() method', function () { - it('clears the container instance', function () { - $rootPath = $this->createTestRootDirectory(); - - Bootstrap::init($rootPath); - expect(Bootstrap::getContainer())->not->toBeNull(); - - Bootstrap::reset(); - expect(Bootstrap::getContainer())->toBeNull(); - - removeTempDirectory($rootPath); - }); - - it('allows re-initialization after reset', function () { - $rootPath = $this->createTestRootDirectory(); - - $container1 = Bootstrap::init($rootPath); - Bootstrap::reset(); - $container2 = Bootstrap::init($rootPath); - - expect($container1)->not->toBe($container2); - expect($container2)->toBeInstanceOf(Container::class); - - removeTempDirectory($rootPath); - }); - }); - - describe('configuration loading', function () { - it('merges configuration from multiple sources', function () { - $rootPath = $this->createTestRootDirectory(); - $this->createTestConfigFiles($rootPath, [ - 'env' => [ - 'APP_ENV' => 'production', - 'APP_DEBUG' => 'false', - ], - 'container' => [ - 'autowiring' => true, - ], - 'services' => [ - 'config.service' => 'merged_config', - ], - ]); - - $container = Bootstrap::init($rootPath, [ - 'definitions' => [ - 'runtime.service' => \DI\factory(function () { - return 'runtime_config'; - }), - ], - ]); - - expect($container->get('config.service'))->toBe('merged_config'); - expect($container->get('runtime.service'))->toBe('runtime_config'); - - removeTempDirectory($rootPath); - }); - - it('sets default environment when no .env file exists', function () { - $rootPath = $this->createTestRootDirectory(); - - $container = Bootstrap::init($rootPath); - - // Container should still be created successfully - expect($container)->toBeInstanceOf(Container::class); - - removeTempDirectory($rootPath); - }); - }); - - describe('error handling', function () { - it('handles invalid root path gracefully', function () { - // Should not throw fatal error for non-existent path - expect(function () { - Bootstrap::init('/non/existent/path'); - })->not->toThrow(Throwable::class); - }); - }); -}); diff --git a/tests/Unit/Infrastructure/DependencyInjection/ContainerFactoryTest.php b/tests/Unit/Infrastructure/DependencyInjection/ContainerFactoryTest.php deleted file mode 100644 index ccd6e1ea8..000000000 --- a/tests/Unit/Infrastructure/DependencyInjection/ContainerFactoryTest.php +++ /dev/null @@ -1,206 +0,0 @@ -toBeInstanceOf(Container::class); - }); - - it('applies configuration correctly', function () { - $config = [ - 'environment' => 'testing', - 'autowiring' => true, - 'annotations' => false, - ]; - - $container = ContainerFactory::create($config); - expect($container)->toBeInstanceOf(Container::class); - }); - - it('loads custom definitions', function () { - $config = [ - 'definitions' => [ - 'test.service' => \DI\factory(function () { - return 'test_value'; - }), - ], - ]; - - $container = ContainerFactory::create($config); - expect($container->get('test.service'))->toBe('test_value'); - }); - - it('configures autowiring when enabled', function () { - $config = ['autowiring' => true]; - $container = ContainerFactory::create($config); - - // Should be able to autowire stdClass - expect($container->has(stdClass::class))->toBeTrue(); - }); - - it('loads definition files when specified', function () { - $tempDir = createTempDirectory(); - $definitionFile = $tempDir . '/definitions.php'; - - file_put_contents($definitionFile, ' \DI\factory(function () { - return "from_file"; - }), - ];'); - - $config = [ - 'definition_files' => [$definitionFile], - ]; - - $container = ContainerFactory::create($config); - expect($container->get('file.service'))->toBe('from_file'); - - removeTempDirectory($tempDir); - }); - - it('handles non-existent definition files gracefully', function () { - $config = [ - 'definition_files' => ['/non/existent/file.php'], - ]; - - // Should not throw an exception - $container = ContainerFactory::create($config); - expect($container)->toBeInstanceOf(Container::class); - }); - }); - - describe('service providers', function () { - it('registers and boots service providers', function () { - $providerClass = new class implements ServiceProvider { - public static bool $registered = false; - public static bool $booted = false; - - public function register(Container $container): void - { - self::$registered = true; - $container->getWrappedContainer()->set('provider.service', 'provider_value'); - } - - public function boot(Container $container): void - { - self::$booted = true; - } - }; - - $config = [ - 'providers' => [get_class($providerClass)], - ]; - - $container = ContainerFactory::create($config); - - expect($providerClass::$registered)->toBeTrue(); - expect($providerClass::$booted)->toBeTrue(); - expect($container->get('provider.service'))->toBe('provider_value'); - }); - - it('handles invalid provider classes gracefully', function () { - $config = [ - 'providers' => ['NonExistentProvider'], - ]; - - // Should not throw an exception - $container = ContainerFactory::create($config); - expect($container)->toBeInstanceOf(Container::class); - }); - - it('boots providers after all registrations', function () { - // Use a simpler approach without constructor dependencies - $testFile = sys_get_temp_dir() . '/provider_order_test.txt'; - if (file_exists($testFile)) { - unlink($testFile); - } - - $provider1Class = new class implements ServiceProvider { - public function register(Container $container): void - { - $testFile = sys_get_temp_dir() . '/provider_order_test.txt'; - file_put_contents($testFile, "register1\n", FILE_APPEND); - } - - public function boot(Container $container): void - { - $testFile = sys_get_temp_dir() . '/provider_order_test.txt'; - file_put_contents($testFile, "boot1\n", FILE_APPEND); - } - }; - - $provider2Class = new class implements ServiceProvider { - public function register(Container $container): void - { - $testFile = sys_get_temp_dir() . '/provider_order_test.txt'; - file_put_contents($testFile, "register2\n", FILE_APPEND); - } - - public function boot(Container $container): void - { - $testFile = sys_get_temp_dir() . '/provider_order_test.txt'; - file_put_contents($testFile, "boot2\n", FILE_APPEND); - } - }; - - $config = [ - 'providers' => [get_class($provider1Class), get_class($provider2Class)], - ]; - - ContainerFactory::create($config); - - // Read the order from the test file - $content = file_get_contents($testFile); - $lines = array_filter(explode("\n", trim($content))); - - // All registrations should happen before any boots - expect($lines)->toBe(['register1', 'register2', 'boot1', 'boot2']); - - // Clean up - unlink($testFile); - }); - }); - - describe('environment configuration', function () { - it('enables compilation in production', function () { - $tempDir = createTempDirectory(); - - $config = [ - 'environment' => 'production', - 'compilation_dir' => $tempDir . '/container', - 'proxies_dir' => $tempDir . '/proxies', - ]; - - $container = ContainerFactory::create($config); - expect($container)->toBeInstanceOf(Container::class); - - removeTempDirectory($tempDir); - }); - - it('skips compilation in development', function () { - $config = [ - 'environment' => 'development', - ]; - - $container = ContainerFactory::create($config); - expect($container)->toBeInstanceOf(Container::class); - }); - }); - - describe('layer definitions integration', function () { - it('loads definitions from all architectural layers', function () { - $container = ContainerFactory::create(); - - // Container should be created successfully with all layer definitions - expect($container)->toBeInstanceOf(Container::class); - - // Since most definitions are commented out, we just verify the container works - expect($container->has(stdClass::class))->toBeTrue(); - }); - }); -}); diff --git a/tests/Unit/Infrastructure/DependencyInjection/ContainerTest.php b/tests/Unit/Infrastructure/DependencyInjection/ContainerTest.php deleted file mode 100644 index d751ecf67..000000000 --- a/tests/Unit/Infrastructure/DependencyInjection/ContainerTest.php +++ /dev/null @@ -1,165 +0,0 @@ -container = $this->createTestContainer(); - }); - - it('implements PSR-11 ContainerInterface', function () { - expect($this->container)->toBeInstanceOf(\Psr\Container\ContainerInterface::class); - }); - - describe('get() method', function () { - it('can resolve a simple service', function () { - $container = $this->createContainerWithDefinitions([ - 'test.service' => \DI\factory(function () { - return 'test_value'; - }), - ]); - - $result = $container->get('test.service'); - expect($result)->toBe('test_value'); - }); - - it('can resolve autowired classes', function () { - $container = $this->createContainerWithDefinitions([ - 'test.class' => \DI\autowire(stdClass::class), - ]); - - $result = $container->get('test.class'); - expect($result)->toBeInstanceOf(stdClass::class); - }); - - it('throws NotFoundExceptionInterface for non-existent services', function () { - expectException( - fn() => $this->container->get('non.existent.service'), - NotFoundExceptionInterface::class, - 'non.existent.service' - ); - }); - - it('returns same instance for singleton services', function () { - $container = $this->createContainerWithDefinitions([ - 'singleton.service' => \DI\factory(function () { - return new stdClass(); - }), - ]); - - $instance1 = $container->get('singleton.service'); - $instance2 = $container->get('singleton.service'); - - expect($instance1)->toBe($instance2); - }); - }); - - describe('has() method', function () { - it('returns true for existing services', function () { - $container = $this->createContainerWithDefinitions([ - 'existing.service' => \DI\factory(function () { - return 'value'; - }), - ]); - - expect($container->has('existing.service'))->toBeTrue(); - }); - - it('returns false for non-existent services', function () { - expect($this->container->has('non.existent.service'))->toBeFalse(); - }); - - it('returns true for autowirable classes', function () { - expect($this->container->has(stdClass::class))->toBeTrue(); - }); - }); - - describe('make() method', function () { - it('can make instances with parameters', function () { - $result = $this->container->make(stdClass::class); - expect($result)->toBeInstanceOf(stdClass::class); - }); - - it('creates new instances each time', function () { - $instance1 = $this->container->make(stdClass::class); - $instance2 = $this->container->make(stdClass::class); - - expect($instance1)->not->toBe($instance2); - }); - }); - - describe('call() method', function () { - it('can call closures with dependency injection', function () { - $result = $this->container->call(function (stdClass $class) { - return get_class($class); - }); - - expect($result)->toBe('stdClass'); - }); - - it('can call methods with parameters', function () { - $service = new class { - public function test(string $param): string - { - return "Hello $param"; - } - }; - - $result = $this->container->call([$service, 'test'], ['param' => 'World']); - expect($result)->toBe('Hello World'); - }); - }); - - describe('injectOn() method', function () { - it('returns the object after injection', function () { - $object = new stdClass(); - - $result = $this->container->injectOn($object); - expect($result)->toBe($object); - }); - }); - - describe('getWrappedContainer() method', function () { - it('returns the underlying PHP-DI container', function () { - $wrapped = $this->container->getWrappedContainer(); - expect($wrapped)->toBeInstanceOf(\DI\Container::class); - }); - - it('allows direct access to PHP-DI functionality', function () { - $wrapped = $this->container->getWrappedContainer(); - $wrapped->set('direct.service', 'direct_value'); - - expect($this->container->get('direct.service'))->toBe('direct_value'); - }); - }); - - describe('error handling', function () { - it('provides meaningful error messages for missing services', function () { - expectException( - fn() => $this->container->get('missing.service'), - NotFoundExceptionInterface::class, - 'missing.service' - ); - }); - - it('handles circular dependencies gracefully', function () { - $container = $this->createContainerWithDefinitions([ - 'service.a' => \DI\factory(function (\Psr\Container\ContainerInterface $c) { - return $c->get('service.b'); - }), - 'service.b' => \DI\factory(function (\Psr\Container\ContainerInterface $c) { - return $c->get('service.a'); - }), - ]); - - expectException( - fn() => $container->get('service.a'), - ContainerExceptionInterface::class, - 'Circular dependency' - ); - }); - }); -}); diff --git a/tests/Unit/Infrastructure/DependencyInjection/Definitions/ApplicationDefinitionsTest.php b/tests/Unit/Infrastructure/DependencyInjection/Definitions/ApplicationDefinitionsTest.php deleted file mode 100644 index 8d686cea1..000000000 --- a/tests/Unit/Infrastructure/DependencyInjection/Definitions/ApplicationDefinitionsTest.php +++ /dev/null @@ -1,100 +0,0 @@ -toBeArray(); - }); - - it('returns empty array when no application services are implemented yet', function () { - $definitions = ApplicationDefinitions::getDefinitions(); - - // Since we're in Phase 1 and application services aren't implemented yet, - // the definitions should be empty (all examples are commented out) - expect($definitions)->toBe([]); - }); - - it('follows application layer principles', function () { - // Application layer should orchestrate domain objects - // This test verifies the structure is ready for future application services - - $definitions = ApplicationDefinitions::getDefinitions(); - - // Should be an array (even if empty) - expect($definitions)->toBeArray(); - - // When application services are added, they should follow these principles: - // - Command and Query handlers - // - Application services that orchestrate domain logic - // - Event dispatchers - // - No direct infrastructure concerns - }); - - it('can be safely called multiple times', function () { - $definitions1 = ApplicationDefinitions::getDefinitions(); - $definitions2 = ApplicationDefinitions::getDefinitions(); - - expect($definitions1)->toBe($definitions2); - }); - - it('is prepared for future command/query handlers', function () { - // This test documents the intended structure for Phase 3 implementation - - $definitions = ApplicationDefinitions::getDefinitions(); - expect($definitions)->toBeArray(); - - // Future command/query handlers will be registered like: - // 'TorrentPier\Application\User\Handler\RegisterUserHandler' => DI\autowire(), - // 'CommandBusInterface' => DI\factory(function (ContainerInterface $c) { - // return new CommandBus($c); - // }), - - // For now, verify the method works without breaking - expect(count($definitions))->toBeGreaterThanOrEqual(0); - }); - }); - - describe('architectural compliance', function () { - it('follows hexagonal architecture principles', function () { - // Application layer should orchestrate domain objects without infrastructure concerns - - $definitions = ApplicationDefinitions::getDefinitions(); - - // Application definitions should focus on: - // 1. Command and Query handlers - // 2. Application services - // 3. Event dispatchers - // 4. Use case orchestration - - expect($definitions)->toBeArray(); - }); - - it('supports CQRS pattern', function () { - // Application layer should separate commands and queries - // This test ensures the structure supports CQRS implementation - - $definitions = ApplicationDefinitions::getDefinitions(); - - // Future implementation will separate: - // - Command handlers (write operations) - // - Query handlers (read operations) - // - Command and Query buses - - expect($definitions)->toBeArray(); - }); - - it('prepares for event-driven architecture', function () { - // Application layer should support domain events - - $definitions = ApplicationDefinitions::getDefinitions(); - - // Future event dispatcher will be registered here - // 'EventDispatcherInterface' => DI\factory(...) - - expect($definitions)->toBeArray(); - }); - }); -}); diff --git a/tests/Unit/Infrastructure/DependencyInjection/Definitions/DomainDefinitionsTest.php b/tests/Unit/Infrastructure/DependencyInjection/Definitions/DomainDefinitionsTest.php deleted file mode 100644 index 787083024..000000000 --- a/tests/Unit/Infrastructure/DependencyInjection/Definitions/DomainDefinitionsTest.php +++ /dev/null @@ -1,84 +0,0 @@ -toBeArray(); - }); - - it('returns empty array when no domain services are implemented yet', function () { - $definitions = DomainDefinitions::getDefinitions(); - - // Since we're in Phase 1 and domain services aren't implemented yet, - // the definitions should be empty (all examples are commented out) - expect($definitions)->toBe([]); - }); - - it('follows domain layer principles', function () { - // Domain definitions should not contain infrastructure dependencies - // This test verifies the structure is ready for future domain services - - $definitions = DomainDefinitions::getDefinitions(); - - // Should be an array (even if empty) - expect($definitions)->toBeArray(); - - // When domain services are added, they should follow these principles: - // - No framework dependencies - // - Repository interfaces mapped to implementations - // - Pure business logic services - }); - - it('can be safely called multiple times', function () { - $definitions1 = DomainDefinitions::getDefinitions(); - $definitions2 = DomainDefinitions::getDefinitions(); - - expect($definitions1)->toBe($definitions2); - }); - - it('is prepared for future repository interface mappings', function () { - // This test documents the intended structure for Phase 2 implementation - - $definitions = DomainDefinitions::getDefinitions(); - expect($definitions)->toBeArray(); - - // Future repository interfaces will be mapped like: - // 'TorrentPier\Domain\User\Repository\UserRepositoryInterface' => - // DI\factory(function (ContainerInterface $c) { - // return $c->get('TorrentPier\Infrastructure\Persistence\Repository\UserRepository'); - // }), - - // For now, verify the method works without breaking - expect(count($definitions))->toBeGreaterThanOrEqual(0); - }); - }); - - describe('architectural compliance', function () { - it('follows hexagonal architecture principles', function () { - // Domain layer should have no infrastructure dependencies - // This test ensures the definition structure is correct - - $definitions = DomainDefinitions::getDefinitions(); - - // Domain definitions should focus on: - // 1. Repository interface mappings - // 2. Domain service factories - // 3. No framework dependencies - - expect($definitions)->toBeArray(); - }); - - it('supports dependency injection inversion', function () { - // Domain interfaces should be mapped to infrastructure implementations - // following the dependency inversion principle - - $definitions = DomainDefinitions::getDefinitions(); - - // Even though empty now, the structure supports proper DI mapping - expect($definitions)->toBeArray(); - }); - }); -}); diff --git a/tests/Unit/Infrastructure/DependencyInjection/Definitions/InfrastructureDefinitionsTest.php b/tests/Unit/Infrastructure/DependencyInjection/Definitions/InfrastructureDefinitionsTest.php deleted file mode 100644 index 64ba55cee..000000000 --- a/tests/Unit/Infrastructure/DependencyInjection/Definitions/InfrastructureDefinitionsTest.php +++ /dev/null @@ -1,159 +0,0 @@ -toBeArray(); - }); - - it('accepts configuration parameter', function () { - $config = ['test' => 'value']; - $definitions = InfrastructureDefinitions::getDefinitions($config); - expect($definitions)->toBeArray(); - }); - - it('returns empty array when no infrastructure services are implemented yet', function () { - $definitions = InfrastructureDefinitions::getDefinitions(); - - // Since we're in Phase 1 and infrastructure services aren't implemented yet, - // the definitions should be empty (all examples are commented out) - expect($definitions)->toBe([]); - }); - - it('follows infrastructure layer principles', function () { - // Infrastructure layer should handle external concerns - // This test verifies the structure is ready for future infrastructure services - - $definitions = InfrastructureDefinitions::getDefinitions(); - - // Should be an array (even if empty) - expect($definitions)->toBeArray(); - - // When infrastructure services are added, they should follow these principles: - // - Database connections and repositories - // - Cache implementations - // - External service adapters - // - File storage systems - }); - - it('can be safely called multiple times', function () { - $definitions1 = InfrastructureDefinitions::getDefinitions(); - $definitions2 = InfrastructureDefinitions::getDefinitions(); - - expect($definitions1)->toBe($definitions2); - }); - - it('can handle different configurations', function () { - $config1 = ['database' => ['host' => 'localhost']]; - $config2 = ['cache' => ['driver' => 'redis']]; - - $definitions1 = InfrastructureDefinitions::getDefinitions($config1); - $definitions2 = InfrastructureDefinitions::getDefinitions($config2); - - // Should handle different configs without breaking - expect($definitions1)->toBeArray(); - expect($definitions2)->toBeArray(); - }); - - it('is prepared for future database services', function () { - // This test documents the intended structure for Phase 4 implementation - - $definitions = InfrastructureDefinitions::getDefinitions([ - 'database' => [ - 'host' => '127.0.0.1', - 'port' => 3306, - 'database' => 'tp', - 'username' => 'root', - 'password' => '', - 'charset' => 'utf8mb4', - ], - ]); - - expect($definitions)->toBeArray(); - - // Future database services will be registered like: - // 'database.connection.default' => DI\factory(function () use ($config) { ... }), - // Connection::class => DI\get('database.connection.default'), - - // For now, verify the method works without breaking - expect(count($definitions))->toBeGreaterThanOrEqual(0); - }); - - it('is prepared for future cache services', function () { - $definitions = InfrastructureDefinitions::getDefinitions([ - 'cache' => [ - 'driver' => 'file', - 'file' => ['path' => '/tmp/cache'], - ], - ]); - - expect($definitions)->toBeArray(); - - // Future cache services will be registered like: - // 'cache.storage' => DI\factory(function () use ($config) { ... }), - // 'cache.factory' => DI\factory(function (ContainerInterface $c) { ... }), - }); - }); - - describe('architectural compliance', function () { - it('follows hexagonal architecture principles', function () { - // Infrastructure layer should handle external concerns and adapters - - $definitions = InfrastructureDefinitions::getDefinitions(); - - // Infrastructure definitions should focus on: - // 1. Database connections and persistence - // 2. Cache implementations - // 3. External service adapters - // 4. File storage systems - // 5. Third-party integrations - - expect($definitions)->toBeArray(); - }); - - it('supports dependency inversion', function () { - // Infrastructure should implement domain interfaces - - $definitions = InfrastructureDefinitions::getDefinitions(); - - // Future repository implementations will be registered here: - // 'TorrentPier\Infrastructure\Persistence\Repository\UserRepository' => DI\autowire() - // ->constructorParameter('connection', DI\get('database.connection.default')) - - expect($definitions)->toBeArray(); - }); - - it('handles configuration-based service creation', function () { - // Infrastructure services should be configurable - - $config = [ - 'database' => ['driver' => 'mysql'], - 'cache' => ['driver' => 'redis'], - 'storage' => ['driver' => 's3'], - ]; - - $definitions = InfrastructureDefinitions::getDefinitions($config); - - // Should handle configuration without breaking - expect($definitions)->toBeArray(); - }); - - it('prepares for multiple database connections', function () { - $config = [ - 'database' => [ - 'default' => 'mysql', - 'connections' => [ - 'mysql' => ['driver' => 'mysql'], - 'sqlite' => ['driver' => 'sqlite'], - ], - ], - ]; - - $definitions = InfrastructureDefinitions::getDefinitions($config); - expect($definitions)->toBeArray(); - }); - }); -}); diff --git a/tests/Unit/Infrastructure/DependencyInjection/Definitions/PresentationDefinitionsTest.php b/tests/Unit/Infrastructure/DependencyInjection/Definitions/PresentationDefinitionsTest.php deleted file mode 100644 index b751b70ba..000000000 --- a/tests/Unit/Infrastructure/DependencyInjection/Definitions/PresentationDefinitionsTest.php +++ /dev/null @@ -1,147 +0,0 @@ -toBeArray(); - }); - - it('returns empty array when no presentation services are implemented yet', function () { - $definitions = PresentationDefinitions::getDefinitions(); - - // Since we're in Phase 1 and presentation services aren't implemented yet, - // the definitions should be empty (all examples are commented out) - expect($definitions)->toBe([]); - }); - - it('follows presentation layer principles', function () { - // Presentation layer should handle user interface concerns - // This test verifies the structure is ready for future presentation services - - $definitions = PresentationDefinitions::getDefinitions(); - - // Should be an array (even if empty) - expect($definitions)->toBeArray(); - - // When presentation services are added, they should follow these principles: - // - HTTP controllers for web and API interfaces - // - CLI commands for console operations - // - Middleware for request/response processing - // - Response transformers for output formatting - }); - - it('can be safely called multiple times', function () { - $definitions1 = PresentationDefinitions::getDefinitions(); - $definitions2 = PresentationDefinitions::getDefinitions(); - - expect($definitions1)->toBe($definitions2); - }); - - it('is prepared for future HTTP controllers', function () { - // This test documents the intended structure for Phase 5 implementation - - $definitions = PresentationDefinitions::getDefinitions(); - expect($definitions)->toBeArray(); - - // Future HTTP controllers will be registered like: - // 'TorrentPier\Presentation\Http\Controllers\Web\HomeController' => DI\autowire(), - // 'TorrentPier\Presentation\Http\Controllers\Api\UserController' => DI\autowire(), - // 'TorrentPier\Presentation\Http\Controllers\Admin\DashboardController' => DI\autowire(), - - // For now, verify the method works without breaking - expect(count($definitions))->toBeGreaterThanOrEqual(0); - }); - - it('is prepared for future CLI commands', function () { - $definitions = PresentationDefinitions::getDefinitions(); - expect($definitions)->toBeArray(); - - // Future CLI commands will be registered like: - // 'TorrentPier\Presentation\Cli\Commands\CacheCommand' => DI\autowire(), - // 'TorrentPier\Presentation\Cli\Commands\MigrateCommand' => DI\autowire(), - }); - - it('is prepared for future middleware', function () { - $definitions = PresentationDefinitions::getDefinitions(); - expect($definitions)->toBeArray(); - - // Future middleware will be registered like: - // 'AuthenticationMiddleware' => DI\autowire('TorrentPier\Presentation\Http\Middleware\AuthenticationMiddleware'), - // 'CorsMiddleware' => DI\autowire('TorrentPier\Presentation\Http\Middleware\CorsMiddleware'), - }); - }); - - describe('architectural compliance', function () { - it('follows hexagonal architecture principles', function () { - // Presentation layer should handle user interface and external interfaces - - $definitions = PresentationDefinitions::getDefinitions(); - - // Presentation definitions should focus on: - // 1. HTTP controllers (Web, API, Admin) - // 2. CLI commands - // 3. Middleware for request processing - // 4. Response transformers - // 5. Input validation and output formatting - - expect($definitions)->toBeArray(); - }); - - it('supports multiple interface types', function () { - // Presentation layer should support web, API, and CLI interfaces - - $definitions = PresentationDefinitions::getDefinitions(); - - // Future implementation will include: - // - Web controllers for HTML responses - // - API controllers for JSON responses - // - Admin controllers for administrative interface - // - CLI commands for console operations - - expect($definitions)->toBeArray(); - }); - - it('prepares for middleware stack', function () { - // Presentation layer should support request/response middleware - - $definitions = PresentationDefinitions::getDefinitions(); - - // Future middleware will handle: - // - Authentication and authorization - // - CORS headers - // - Rate limiting - // - Request validation - // - Response transformation - - expect($definitions)->toBeArray(); - }); - - it('supports dependency injection for controllers', function () { - // Controllers should have their dependencies injected - - $definitions = PresentationDefinitions::getDefinitions(); - - // Future controllers will be autowired with dependencies: - // - Application services (command/query handlers) - // - Request validators - // - Response transformers - - expect($definitions)->toBeArray(); - }); - - it('prepares for different response formats', function () { - // Presentation layer should support multiple response formats - - $definitions = PresentationDefinitions::getDefinitions(); - - // Future response transformers: - // 'JsonResponseTransformer' => DI\autowire(...), - // 'HtmlResponseTransformer' => DI\autowire(...), - - expect($definitions)->toBeArray(); - }); - }); -}); diff --git a/tests/Unit/Infrastructure/DependencyInjection/ServiceProviderTest.php b/tests/Unit/Infrastructure/DependencyInjection/ServiceProviderTest.php deleted file mode 100644 index 69c7c68ac..000000000 --- a/tests/Unit/Infrastructure/DependencyInjection/ServiceProviderTest.php +++ /dev/null @@ -1,144 +0,0 @@ -isInterface())->toBeTrue(); - expect($reflection->hasMethod('register'))->toBeTrue(); - expect($reflection->hasMethod('boot'))->toBeTrue(); - }); - - it('register method has correct signature', function () { - $reflection = new ReflectionClass(ServiceProvider::class); - $method = $reflection->getMethod('register'); - - expect($method->isPublic())->toBeTrue(); - expect($method->getParameters())->toHaveCount(1); - expect($method->getParameters()[0]->getType()?->getName())->toBe(Container::class); - expect($method->getReturnType()?->getName())->toBe('void'); - }); - - it('boot method has correct signature', function () { - $reflection = new ReflectionClass(ServiceProvider::class); - $method = $reflection->getMethod('boot'); - - expect($method->isPublic())->toBeTrue(); - expect($method->getParameters())->toHaveCount(1); - expect($method->getParameters()[0]->getType()?->getName())->toBe(Container::class); - expect($method->getReturnType()?->getName())->toBe('void'); - }); -}); - -describe('ServiceProvider implementation examples', function () { - it('can implement a basic service provider', function () { - $provider = new class implements ServiceProvider { - public function register(Container $container): void - { - $container->getWrappedContainer()->set('example.service', 'registered'); - } - - public function boot(Container $container): void - { - // Boot logic here - } - }; - - $container = $this->createTestContainer(); - - $provider->register($container); - - expect($container->get('example.service'))->toBe('registered'); - }); - - it('can implement a provider with complex services', function () { - $provider = new class implements ServiceProvider { - public function register(Container $container): void - { - $container->getWrappedContainer()->set('complex.service', \DI\factory(function () { - return new class { - public function getValue(): string - { - return 'complex_value'; - } - }; - })); - } - - public function boot(Container $container): void - { - // Could perform additional setup here - $service = $container->get('complex.service'); - // Setup complete - } - }; - - $container = $this->createTestContainer(); - - $provider->register($container); - $provider->boot($container); - - $service = $container->get('complex.service'); - expect($service->getValue())->toBe('complex_value'); - }); - - it('can implement a provider that registers multiple services', function () { - $provider = new class implements ServiceProvider { - public function register(Container $container): void - { - $wrapped = $container->getWrappedContainer(); - - $wrapped->set('service.a', 'value_a'); - $wrapped->set('service.b', 'value_b'); - $wrapped->set('service.c', \DI\factory(function () { - return 'value_c'; - })); - } - - public function boot(Container $container): void - { - // Boot all registered services - } - }; - - $container = $this->createTestContainer(); - - $provider->register($container); - $provider->boot($container); - - expect($container->get('service.a'))->toBe('value_a'); - expect($container->get('service.b'))->toBe('value_b'); - expect($container->get('service.c'))->toBe('value_c'); - }); - - it('boot method can access services registered by register method', function () { - $bootedServices = []; - - $provider = new class($bootedServices) implements ServiceProvider { - public function __construct(private array &$bootedServices) - { - } - - public function register(Container $container): void - { - $container->getWrappedContainer()->set('bootable.service', 'registered_value'); - } - - public function boot(Container $container): void - { - $value = $container->get('bootable.service'); - $this->bootedServices[] = $value; - } - }; - - $container = $this->createTestContainer(); - - $provider->register($container); - $provider->boot($container); - - expect($bootedServices)->toBe(['registered_value']); - }); -});