Compare commits

...

1082 commits

Author SHA1 Message Date
Roman Kelesidis
144aa0558d
chore: Removed deploy pipeline (#2047)
Some checks failed
Continuous Integration / Nightly builds 📦 (push) Has been cancelled
PHPMD / Run PHPMD scanning (push) Has been cancelled
2025-07-16 10:15:09 +03:00
Roman Kelesidis
6e7e3dd9ef
fix: handle Nette DateTime objects in birthday validation (#2032)
Some checks failed
Continuous Integration / Nightly builds 📦 (push) Has been cancelled
Continuous Integration / 🎉 Deploy (push) Has been cancelled
PHPMD / Run PHPMD scanning (push) Has been cancelled
* fix: handle Nette DateTime objects in birthday validation

* Update register.php

* Update User.php
2025-07-03 23:07:09 +02:00
Roman Kelesidis
423fb65dbf
release: v2.8.3
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
2025-07-03 10:51:21 +03:00
Roman Kelesidis
51f2c70d81
feat(updater): Added exceptions logging (#2026)
* feat(updater): Added exceptions logging
* refactor(updater): Use `sha256` hash if available
2025-07-03 10:48:25 +03:00
Roman Kelesidis
fd46d3d04a
feat(lang): Added RTL languages support (#2031) 2025-07-03 10:43:02 +03:00
Roman Kelesidis
d4d82101dd
refactor(TorrentFileList): Reduce duplication in root directory unset logic (#2027) 2025-07-03 10:40:56 +03:00
Roman Kelesidis
9e3f3588f2
release: v2.8.2
Some checks failed
PHPMD / Run PHPMD scanning (push) Has been cancelled
Continuous Integration / Nightly builds 📦 (push) Has been cancelled
Continuous Integration / 🎉 Deploy (push) Has been cancelled
2025-06-30 10:49:42 +03:00
Roman Kelesidis
915e1d817c
fix(TorrentFileList): Avoid array_merge reindexing for numeric folder names (#2014)
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
Co-authored-by: zxc <17812947+metalwarrior88@users.noreply.github.com>
2025-06-29 15:03:56 +03:00
Roman Kelesidis
7ac335974b
refactor: Use DEFAULT_CHARSET constant instead of hardcoded string (#2011)
Some checks failed
PHPMD / Run PHPMD scanning (push) Has been cancelled
Continuous Integration / Nightly builds 📦 (push) Has been cancelled
Continuous Integration / 🎉 Deploy (push) Has been cancelled
2025-06-26 13:32:45 +03:00
Roman Kelesidis
c2e3a13a04
release: v2.8.1 2025-06-24 13:00:37 +03:00
Roman Kelesidis
f1d6e74e5d
fix(ip-api): Add error handling and logging for freeipapi.com requests (#2006) 2025-06-24 12:55:41 +03:00
Roman Kelesidis
7f4cc9d3b9
fix(filelist): Undefined property: FileTree::$length when v2 torrent only (#2004) 2025-06-23 21:49:53 +03:00
Roman Kelesidis
a0fc2a9da9
release: v2.8.0
Some checks failed
Continuous Integration / Nightly builds 📦 (push) Has been cancelled
Continuous Integration / 🎉 Deploy (push) Has been cancelled
PHPMD / Run PHPMD scanning (push) Has been cancelled
2025-06-21 22:16:28 +03:00
Yury Pikhtarev
c6076c2c27
fix(template): handle L_ variables in template vars when not found in lang vars (#1998)
Template variables starting with L_ (like L_MY_PROFILE) are now properly
resolved when they exist in template variables but not in language variables.
Previously, these would fall back to showing the literal variable name.

The L_ variable regex now checks both $L (language) and $V (template) arrays
before falling back to the literal string, maintaining backward compatibility
while fixing composite language variables set via template assignment.
2025-06-21 22:13:01 +03:00
Roman Kelesidis
714dd6255e
release: v2.7.0 🐈‍⬛
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
2025-06-21 10:52:01 +03:00
Roman Kelesidis
9b322c7093
chore: Update minimum PHP requirement to 8.2 (#1987)
* chore: Update minimum PHP requirement to 8.2

* chore: Update PHP version references to 8.2 in documentation and templates

* chore: Update issue template labels to array format for consistency

* refactor: Changed `local` environment name to `development`

* chore(composer.json): Changed version of `gemorroj/m3u-parser` package

* chore(composer): Removed `matthiasmullie/scrapbook` package

* fix(template): Update variable fallback behavior to return empty string for missing variables

---------

Co-authored-by: Yury Pikhtarev <exileum@icloud.com>
2025-06-21 11:45:56 +04:00
Roman Kelesidis
423424e947
chore: Removed useless composer update from workflows & installer (#1986) 2025-06-21 09:25:43 +03:00
belomaxorka
27b5815aee changelog: Update CHANGELOG.md 📖 2025-06-21 01:39:56 +00:00
Yury Pikhtarev
bccbad0c57
New Crowdin updates (#1983)
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations admin_send_email.html (Japanese)

* New translations admin_send_email.html (Chinese Traditional)

* New translations admin_send_email.html (Portuguese, Brazilian)

* New translations group_added.html (Spanish)

* New translations group_added.html (Japanese)

* New translations group_added.html (Chinese Traditional)

* New translations group_added.html (Thai)

* New translations group_approved.html (Spanish)

* New translations group_approved.html (Japanese)

* New translations group_approved.html (Chinese Traditional)

* New translations group_approved.html (Thai)

* New translations group_request.html (Chinese Traditional)

* New translations privmsg_notify.html (Spanish)

* New translations privmsg_notify.html (Japanese)

* New translations privmsg_notify.html (Chinese Traditional)

* New translations profile_send_email.html (Spanish)

* New translations profile_send_email.html (Japanese)

* New translations profile_send_email.html (Thai)

* New translations topic_notify.html (Spanish)

* New translations topic_notify.html (Chinese Traditional)

* New translations topic_notify.html (Thai)

* New translations user_activate.html (Spanish)

* New translations user_activate.html (Chinese Traditional)

* New translations user_activate_passwd.html (Spanish)

* New translations user_activate_passwd.html (Japanese)

* New translations user_activate_passwd.html (Chinese Traditional)

* New translations user_activate_passwd.html (Portuguese, Brazilian)

* New translations user_activate_passwd.html (Thai)

* New translations user_welcome.html (German)

* New translations user_welcome.html (Chinese Traditional)

* New translations user_welcome.html (Portuguese, Brazilian)

* New translations user_welcome.html (Thai)

* New translations user_welcome_inactive.html (Spanish)

* New translations user_welcome_inactive.html (Chinese Traditional)

* New translations user_welcome_inactive.html (Portuguese, Brazilian)

* New translations user_welcome_inactive.html (Thai)

* New translations copyright_holders.html (Chinese Traditional)

* New translations copyright_holders.html (Thai)

* New translations sidebar2.html (Romanian)

* New translations sidebar2.html (French)

* New translations sidebar2.html (Spanish)

* New translations sidebar2.html (Afrikaans)

* New translations sidebar2.html (Arabic)

* New translations sidebar2.html (Belarusian)

* New translations sidebar2.html (Bulgarian)

* New translations sidebar2.html (Catalan)

* New translations sidebar2.html (Czech)

* New translations sidebar2.html (Danish)

* New translations sidebar2.html (German)

* New translations sidebar2.html (Greek)

* New translations sidebar2.html (Finnish)

* New translations sidebar2.html (Hebrew)

* New translations sidebar2.html (Hungarian)

* New translations sidebar2.html (Armenian)

* New translations sidebar2.html (Italian)

* New translations sidebar2.html (Japanese)

* New translations sidebar2.html (Georgian)

* New translations sidebar2.html (Korean)

* New translations sidebar2.html (Lithuanian)

* New translations sidebar2.html (Dutch)

* New translations sidebar2.html (Norwegian)

* New translations sidebar2.html (Polish)

* New translations sidebar2.html (Russian)

* New translations sidebar2.html (Slovak)

* New translations sidebar2.html (Slovenian)

* New translations sidebar2.html (Albanian)

* New translations sidebar2.html (Serbian (Cyrillic))

* New translations sidebar2.html (Swedish)

* New translations sidebar2.html (Turkish)

* New translations sidebar2.html (Ukrainian)

* New translations sidebar2.html (Chinese Traditional)

* New translations sidebar2.html (English)

* New translations sidebar2.html (Vietnamese)

* New translations sidebar2.html (Portuguese, Brazilian)

* New translations sidebar2.html (Indonesian)

* New translations sidebar2.html (Thai)

* New translations sidebar2.html (Croatian)

* New translations sidebar2.html (Kazakh)

* New translations sidebar2.html (Estonian)

* New translations sidebar2.html (Latvian)

* New translations sidebar2.html (Azerbaijani)

* New translations sidebar2.html (Hindi)

* New translations sidebar2.html (Bosnian)

* New translations sidebar2.html (Uzbek)

* New translations sidebar2.html (Tajik)

* New translations user_agreement.html (Thai)

* New translations main.php (Russian)

* New translations sidebar2.html (Russian)

* New translations main.php (Russian)

* New translations main.php (Ukrainian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2025-06-21 03:52:59 +04:00
Yury Pikhtarev
728116d6dc
refactor(stats): improve database row fetching in tr_stats.php (#1985)
- Updated the method of fetching rows from the database to use a more streamlined approach with `DB()->fetch_row()`.
- Extracted the first column value directly from the result array for clarity and maintainability.
2025-06-21 03:34:11 +04:00
Yury Pikhtarev
a33574c28f
feat(language): add new language variable for migration file and enhance template fallback logic (#1984)
* feat(language): add new language variable for migration file and enhance template fallback logic

- Introduced a new language variable 'MIGRATIONS_FILE' to improve migration management clarity.
- Updated template handling to provide graceful fallbacks for missing language and regular variables, ensuring better user experience and debugging capabilities.
- Added comprehensive unit tests to validate the new fallback logic and ensure existing functionality remains intact.

* refactor(tests): remove debugging test for compiled template output

- Removed the test case that debugged compiled output for troubleshooting in the TemplateGracefulFallbackTest.
- This change streamlines the test suite by focusing on essential functionality, specifically the handling of missing language variables.

* feat(tests): introduce executeTemplate function for streamlined template execution

- Added a new helper function `executeTemplate` to encapsulate the logic for executing compiled templates, improving code readability and reducing duplication in unit tests.
- Updated existing tests in `TemplateGracefulFallbackTest.php` to utilize the new function, ensuring consistent handling of template execution and variable scope.
- Enhanced test coverage by adding edge case scenarios for variable handling, including special characters, empty values, and nested braces.
2025-06-21 03:09:59 +04:00
Roman Kelesidis
e9a9e09576
chore: Added --no-dev composer flag for some workflows (#1982) 2025-06-20 22:39:17 +03:00
Roman Kelesidis
e8cba5dd3f
chore: Added --no-dev composer flag for some workflows (#1981) 2025-06-20 22:27:34 +03:00
Yury Pikhtarev
4f9cc9fe0f
fix(database): update affected rows tracking in Database class (#1980)
* fix(database): update affected rows tracking in Database class

- Enhanced the logic for tracking affected rows in the Database class to accurately reflect the number of rows modified by INSERT, UPDATE, and DELETE operations using the getRowCount() method.
- Added a new unit test suite for the affected_rows method, ensuring comprehensive coverage for various scenarios including tracking of affected rows and validation of the last_affected_rows property.

This update improves the reliability of the Database class's affected rows reporting, facilitating better data handling and debugging.

* feat(install): add developer prompt for dependency installation

- Introduced a prompt during the installation process to ask users if they require development tools and dependencies.
- Adjusted the dependency installation command to conditionally include or exclude development dependencies based on user input.
- Added warnings for users with PHP versions below 8.2 when opting for development dependencies.

This enhancement improves the installation experience by allowing developers to easily set up their environment while ensuring compatibility checks are in place.

* docs(README): clarify PHP version requirements and installation instructions

- Updated PHP version requirements to specify that PHP 8.2+ is required for development dependencies.
- Enhanced installation instructions to differentiate between production and development setups, including commands for Composer installation.
- Added a note regarding the necessity of PHP 8.2+ for running tests, improving clarity for developers.

These changes aim to provide clearer guidance for users setting up their development environments.
2025-06-20 23:06:36 +04:00
Yury Pikhtarev
cc9d412522
feat(test): add comprehensive testing infrastructure with Pest PHP (#1979)
* feat(tests): integrate Pest testing framework and set up initial test structure

- Added Pest as a development dependency for enhanced testing capabilities.
- Created a PHPUnit configuration file (`phpunit.xml`) for test suite management.
- Established a base test case class (`TestCase.php`) for consistent test structure.
- Implemented example tests in both feature and unit directories to demonstrate usage.
- Introduced a custom Pest file (`Pest.php`) to extend functionality and define global helpers.

This setup streamlines the testing process and provides a foundation for future test development.

* feat(test): add comprehensive testing infrastructure with Pest PHP

- Add complete Pest PHP testing suite with extensive helper functions
- Implement unit tests for Database and DatabaseDebugger classes
- Implement unit tests for CacheManager and DatastoreManager classes
- Add comprehensive mock factories and test data generators
- Add custom Pest expectations for TorrentPier-specific validation
- Create detailed testing documentation with examples and best practices
- Update main README.md and UPGRADE_GUIDE.md with testing sections
- Update dependencies to support testing infrastructure
- Remove example test file and replace with production-ready tests

BREAKING CHANGE: None - all existing functionality maintained

The testing infrastructure includes:
- 25+ helper functions for test setup and mocking
- Singleton pattern testing for all major components
- Mock factories for Database, Cache, and external dependencies
- Custom expectations: toBeValidDatabaseConfig, toHaveDebugInfo
- Comprehensive documentation with real-world examples
- Performance testing utilities and execution time assertions
2025-06-20 22:00:12 +04:00
Yury Pikhtarev
7aed6bc7d8
refactor(database): enhance error logging and various fixes (#1978)
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
* refactor(database): enhance error logging and handling in Database and DatabaseDebugger classes

- Updated error handling in Database class to provide more meaningful error messages, including detailed PDO error information.
- Enhanced log_error method in DatabaseDebugger to accept exceptions, allowing for more reliable error logging with comprehensive context.
- Improved user-facing error messages while maintaining detailed logging for administrators and developers.
- Added checks for connection status and query context in error logs to aid in debugging.

* refactor(database): streamline error handling and improve code clarity in Database class

- Removed unused imports and global variable references to enhance code readability.
- Simplified error handling by refining conditions for empty input arrays.
- Defined variables early in the error logging method to ensure consistent access throughout.
- Improved comments for better understanding of the error handling logic.

* fix(database): refine development mode condition in Database class

- Removed unnecessary function check from the development mode condition to streamline the logic.

* fix(redirect): add no-cache headers to prevent browser caching of redirects

- Implemented `send_no_cache_headers()` in the redirect function to ensure that browsers do not cache redirect responses, adhering to best practices for HTTP redirects.

* refactor(database): enhance error handling and logging in Database and Whoops classes

- Improved error handling in the Database class to log detailed information for duplicate column errors and automatically retry problematic queries using PDO.
- Introduced a new DatabaseErrorHandler to enhance Whoops error reporting with comprehensive database context and recent query history.
- Updated EnhancedPrettyPageHandler to include dynamic database information in error outputs, improving debugging capabilities.
- Added legacy query tracking in DatabaseDebugger to identify and log queries needing compatibility fixes, ensuring better maintenance of legacy code.

* refactor(posting): rollback changes in SQL queries up to legacy format
2025-06-20 18:52:30 +04:00
belomaxorka
7e723d6ad8 changelog: Update CHANGELOG.md 📖 2025-06-20 09:44:57 +00:00
Yury Pikhtarev
fbde8cd421
feat(migrations): implement Phinx database migration system (#1976)
* feat(migrations): implement Phinx database migration system and update installation process

- Introduced a modern database migration system using Phinx, replacing the legacy SQL import method.
- Updated `install.php` to run migrations instead of importing SQL dumps.
- Added migration configuration file `phinx.php` and initial migration files for schema and data seeding.
- Created a new admin panel for migration status management.
- Updated UPGRADE_GUIDE.md to include migration setup instructions and benefits.
- Ensured backward compatibility for existing installations while facilitating a smoother transition to the new system.

* update runProcess to return process exit code

* refactor(migrations): clean up whitespace and formatting in migration files

- Removed unnecessary whitespace and adjusted formatting for consistency across migration files.

* fix(migrations): enforce NOT NULL constraints on migration columns

- Updated various migration columns to enforce NOT NULL constraints, ensuring data integrity across the schema.
- Adjusted default values and nullability for multiple fields in the initial schema migration files.

* refactor(database): standardize table engines to InnoDB for reliability

- Updated UPGRADE_GUIDE.md to reflect the use of InnoDB for all tables, emphasizing data integrity and reliability.
- Modified migration files to change table engines from MyISAM to InnoDB for various tracker and temporary tables.
- Optimized session variable settings in cron jobs for InnoDB compatibility.
- Ensured consistency across the schema by enforcing InnoDB usage in all relevant areas.

* fix(migrations): correct MySQL integer field types to match original schema

- Fix bb_forums table: forum_status (INT→TINYINT), forum_tpl_id (INT→SMALLINT)
- Fix bb_users table: avatar_ext_id remains TINYINT as per original schema
- Fix bb_groups table: avatar_ext_id (SMALLINT→INT) to match original INT(15)
- Fix bb_topics table: topic_show_first_post, topic_allow_robots (TINYINT(1)→TINYINT UNSIGNED)
- Remove incorrect 'limit' => 11 from standard INT fields, use default Phinx behavior
- Fix search_size field to use proper INT type instead of maximum value hack
- Correct poll table field types: vote_id (TINYINT), user_id (MEDIUMINT), vote_result (MEDIUMINT UNSIGNED)
- Standardize all timestamp and ID fields to use appropriate MySQL integer types

Ensures migration creates database schema identical to install/sql/mysql.sql
while maintaining InnoDB engine for all tables instead of MyISAM.

* fix(cache): auto-create cache directories when using FileStorage

The UnifiedCacheSystem was constructing directory paths for Nette FileStorage
but not creating them, causing "Directory not found" errors when accessing
caches like 'bb_login_err'. FileStorage expects directories to already exist.

Changes:
- Add automatic directory creation using bb_mkdir() before FileStorage init
- Handle both regular cache directories and SQLite parent directories
- Apply to both _buildStorage() and _buildDatastoreStorage() methods
- Add proper error handling with RuntimeException for failed creation
- Maintain consistency with TorrentPier's directory creation patterns

This ensures cache directories are created automatically when first accessed,
eliminating the need for manual directory creation during deployment.

Fixes: Cache initialization failures with missing directories

* refactor(docs): update README for clarity and remove legacy SQL file

- Improved formatting and clarity in the README, ensuring consistent line breaks and spacing.
- Updated installation instructions to reflect the new migration process, emphasizing the use of `phinx` for database setup.
- Removed the legacy SQL dump file `mysql.sql` and the `legacy-changes.txt` file, streamlining the installation process and reducing confusion for new users.
- Enhanced the documentation to guide users through the setup process more effectively.

* docs: enhance CLAUDE.md with migration details and directory updates

- Updated the `/library/` section to clarify its purpose.
- Added a new `/migrations/` directory section detailing database migration files managed by Phinx.
- Included migration commands for running and checking migration status.
- Revised the initial schema and seed data references for clarity.
- Improved formatting for consistency throughout the document.

* refactor(cron): remove demo_mode.php cron job and related functionality

- Deleted the demo_mode.php cron job file, which was responsible for managing demo mode operations.
- Added a migration to remove the demo_mode.php entry from the bb_cron table, ensuring a clean database state.
- Updated the initial schema migration comment to reflect the creation of essential database schema for fresh installations.

* refactor(docs): Fixed some typos

* chore: update changelog generation starting from v2.4.6-alpha.4

* refactor: Changed some `php_sapi_name()` to `PHP_SAPI` constants

* refactor: Extract hardcoded migrations to class property

* refactor: Use `count()` to count $initialMigrations elements

* feat(migrations): enhance migration management UI with new language variables

- Added new language variables for migration status, instructions, and applied/pending migrations to improve user interface clarity.
- Updated admin migration template to utilize these new language variables for better localization and maintainability.
- Introduced a new file 'CLAUDE.md' to the cleanup process for documentation purposes.

---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2025-06-20 13:23:33 +04:00
belomaxorka
0d4c869f30 changelog: Update CHANGELOG.md 📖
Some checks failed
PHPMD / Run PHPMD scanning (push) Has been cancelled
Continuous Integration / Nightly builds 📦 (push) Has been cancelled
Continuous Integration / 🎉 Deploy (push) Has been cancelled
2025-06-19 01:42:40 +00:00
Yury Pikhtarev
49717d3a68
feat: implement Language singleton with shorthand functions (#1966)
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
- Add Language singleton class (src/Language.php) following TorrentPier patterns
- Implement automatic source language fallback loading
- Add dot notation support for nested language arrays
- Provide convenient shorthand functions __() and _e() in common.php
- Maintain 100% backward compatibility with global $lang variable
- Replace manual language file loading in bb_die() and bb_date() functions
- Update poll.php as modern usage example with __() shorthand
- Integrate with User.php initialization via lang()->initializeLanguage()
- Clean up Template.php compilation removing legacy source language logic
- Add comprehensive UPGRADE_GUIDE.md documentation section

BREAKING CHANGE: None - full backward compatibility maintained
2025-06-18 19:29:06 +04:00
Yury Pikhtarev
2fd306704f
feat(database): add visual markers for Nette Explorer queries in debug panel (#1965)
Add automatic detection and colorful badges to distinguish Nette Explorer
queries from legacy database calls, helping track modernization progress.

- Detect Nette SQL patterns (backticks, parentheses)
- Add green styled [Nette Explorer] badges
- Fix HTML escaping in debug tooltips
- Prevent marker duplication
2025-06-18 18:13:34 +04:00
Yury Pikhtarev
6c0219d53c
refactor(database): rename DB to Database and extract debug functionality (#1964)
- Rename DB → Database, DbFactory → DatabaseFactory for consistency
- Extract 8 debug methods from Database to dedicated DatabaseDebugger class
- Add DebugSelection wrapper for debug-enabled Nette Selection
- Update all references across codebase (common.php, Dev.php, page_footer)
- Maintain backward compatibility via magic methods (__get, __isset)
- Update documentation (README.md, UPGRADE_GUIDE.md)

No breaking changes - all existing DB() calls work unchanged
2025-06-18 17:46:12 +04:00
Roman Kelesidis
f2fca0de85
release: v2.6.0 🐂 2025-06-18 14:15:53 +03:00
Yury Pikhtarev
07a06a33cd
feat!: implement unified cache system with Nette Caching (#1963)
* feat!: implement unified cache system with Nette Caching

Replace legacy Cache and Datastore systems with modern unified implementation using Nette Caching v3.3 while maintaining 100% backward compatibility.

BREAKING CHANGE: Internal cache architecture completely rewritten, though all public APIs remain compatible.

### Added
- src/Cache/UnifiedCacheSystem.php: Main singleton orchestrator following TorrentPier patterns
- src/Cache/CacheManager.php: Cache interface using Nette Caching with singleton pattern
- src/Cache/DatastoreManager.php: Datastore interface using CacheManager internally
- src/Cache/README.md: Comprehensive documentation and migration guide

### Changed
- common.php: Updated to use singleton pattern instead of global variables
- src/Dev.php: Added compatibility with unified cache system debug functionality
- composer.json: Added nette/caching dependency
- UPGRADE_GUIDE.md: Added unified cache system migration documentation

### Removed
- src/Legacy/Cache/*: All legacy cache implementations (APCu, File, Memcached, Redis, SQLite, Common)
- src/Legacy/Datastore/*: All legacy datastore implementations (APCu, File, Memcached, Redis, SQLite, Common)
- src/Legacy/Caches.php: Legacy cache factory replaced by UnifiedCacheSystem

### Performance
- 456,647+ operations per second verified in production testing
- Memory optimization through efficient singleton pattern
- Modern Nette Caching algorithms and bulk operations

### Compatibility
- All existing CACHE() calls work unchanged
- All existing $datastore operations work unchanged
- Full backward compatibility with Dev.php debugging
- Resolved Sessions TypeError and debug property access issues

### Architecture
- Consistent singleton pattern matching config(), dev(), censor(), DB()
- Clean function interfaces with proper return types
- No global variables, modern initialization pattern
- Single source of truth replacing duplicate Cache/Datastore code

* fix: update datastore type from 'filecache' to 'file' for consistency

Modified the datastore type in common.php and README.md to reflect the new unified cache system terminology. This change ensures consistency across the codebase and documentation following the recent implementation of the unified cache system.

* refactor(cache): centralize storage creation and eliminate redundancy

- Remove redundant initializeStorage() from CacheManager
- Update CacheManager to receive pre-built Storage instances
- Centralize all storage creation logic in UnifiedCacheSystem
- Remove unused properties and fix method signatures
- Update documentation to reflect simplified architecture

No breaking changes - all public APIs unchanged.
2025-06-18 15:05:22 +04:00
Yury Pikhtarev
e458109eef
fix(User): add null and array checks before session data operations (#1962)
Ensure that session data is only processed if it exists and is an array. This prevents potential errors when attempting to cache or remove user session data. Updated methods `cache_set_userdata` and `cache_rm_userdata` to include necessary checks.
2025-06-18 12:43:58 +04:00
Yury Pikhtarev
f50b914cc1
feat: replace legacy database layer with Nette Database implementation (#1961)
* feat: replace legacy database layer with Nette Database implementation

Replace legacy SqlDb/Dbs classes with modern Nette Database implementation
while maintaining complete backward compatibility.

- Replace SqlDb with singleton DB class using Nette Database Connection
- Replace Dbs factory with DbFactory maintaining full compatibility
- Implement complete feature parity including debug, explain, and logging
- Add proper type declarations and modern PHP standards
- Remove legacy SqlDb.php and Dbs.php files
- Update common.php DB() function with proper PHPDoc and return types
- Fix affected_rows() implementation for Nette Database compatibility
- Fix explain() method to handle missing debug array keys
- Maintain 100% backward compatibility - no code changes required

The new implementation uses Nette Database v3.2 internally while preserving
all existing functionality. All existing DB() calls work unchanged.
All debugging, explain, error handling, and performance tracking features
are fully preserved with enhanced reliability.

Files added:
- src/Database/DB.php - Main database class with singleton pattern
- src/Database/DbFactory.php - Factory for database instance management
- src/Database/README.md - Comprehensive documentation

Files removed:
- src/Database/Config.php - Unused configuration helper
- src/Legacy/SqlDb.php - Legacy database class
- src/Legacy/Dbs.php - Legacy database factory

Files modified:
- common.php - Updated DB() function with proper types and documentation
- viewtopic.php - Fixed duplicate column SQL query issues
- src/Dev.php - Updated to use DbFactory instead of legacy $DBS
- library/includes/page_footer*.php - Replaced $DBS references with DbFactory

* docs: Update UPGRADE_GUIDE.md with Database Layer Migration details

Add a comprehensive section on the new database layer migration to Nette Database, highlighting key improvements, no code changes required, and verification steps. Document the removal of legacy database files and provide links to detailed documentation for further reference. Ensure clarity on backward compatibility and performance benefits.

* docs: Enhance README.md with future migration strategy to Nette Database Explorer

Add detailed sections outlining a phased approach for migrating to Nette Database Explorer, including hybrid methods, advanced features, and migration strategies. Highlight benefits such as improved developer experience, code quality, and performance optimizations. This documentation aims to guide developers through the transition while maintaining backward compatibility.
2025-06-18 12:29:13 +04:00
Roman Kelesidis
edda2306f2
release: v2.5.0 🐂
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
2025-06-18 09:52:20 +03:00
Roman Kelesidis
86abafb114
docs: Add Select class migration guide (#1960) 2025-06-18 09:43:55 +03:00
Yury Pikhtarev
74a564d795
refactor(censor): migrate Censor class to singleton pattern (#1954)
* refactor(censor): migrate Censor class to singleton pattern

- Convert TorrentPier\Censor to singleton pattern following Config class design
- Add global censor() helper function for consistent API access
- Replace all global $wordCensor declarations and usage across 12 files
- Implement automatic reload functionality in admin panel
- Add enhanced methods: isEnabled(), addWord(), getWordsCount(), reload()

Files updated:
- src/Legacy/Atom.php, src/Legacy/Post.php
- viewforum.php, posting.php, search.php, index.php, viewtopic.php, privmsg.php
- library/ajax/posts.php, library/includes/bbcode.php, library/includes/ucp/topic_watch.php
- admin/admin_words.php, library/includes/init_bb.php
- common.php (added global helper)
- UPGRADE_GUIDE.md (documentation)

Benefits:
- Single instance shared across application for better performance
- Memory efficient word loading only when censoring enabled
- Consistent API pattern matching config() singleton
- Automatic word reloading when admin updates censored words
- Enhanced developer experience with new utility methods

BREAKING CHANGE: None - full backward compatibility maintained.
The global $wordCensor variable continues to work as before.
New censor() function is the recommended approach going forward.

* refactor(censor): add enable check to censorString method

* refactor(dev): convert Dev class to singleton pattern (#1955)

* refactor(dev): convert Dev class to singleton pattern

- Convert TorrentPier\Dev class from direct instantiation to singleton pattern
- Add getInstance() method and private constructor for singleton implementation
- Introduce new instance methods with improved naming:
  * getSqlDebugLog() (replaces getSqlLog())
  * checkSqlDebugAllowed() (replaces sqlDebugAllowed())
  * formatShortQuery() (replaces shortQuery())
- Add dev() global helper function for consistent access pattern
- Maintain full backward compatibility with existing static method calls
- Update all internal usage across 18 files to use new singleton pattern:
  * src/Ajax.php, src/Legacy/SqlDb.php
  * All Cache classes (APCu, File, Memcached, Redis, Sqlite, Common)
  * All Datastore classes (APCu, File, Memcached, Redis, Sqlite, Common)
  * library/includes/page_footer_dev.php
- Implement lazy initialization consistent with Config and Censor singletons
- Add comprehensive migration guide in UPGRADE_GUIDE.md

This refactoring improves resource management, provides consistent API patterns
across all singleton classes, and maintains zero breaking changes for existing code.

* refactor(dev): Added missing `\TorrentPier\Dev::init()`

---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2025-06-18 10:38:23 +04:00
Roman Kelesidis
b1b2618757
chore(cliff): Add conventional commit prefix to changelog message (#1957) 2025-06-18 07:06:11 +03:00
belomaxorka
62f49beb0b Update CHANGELOG.md 📖 2025-06-18 01:41:26 +00:00
Yury Pikhtarev
bf9100fbfa
feat: implement centralized Config class to replace global $bb_cfg array (#1953)
Some checks failed
Continuous Integration / Nightly builds 📦 (push) Has been cancelled
Continuous Integration / 🎉 Deploy (push) Has been cancelled
PHPMD / Run PHPMD scanning (push) Has been cancelled
* feat: implement centralized Config class to replace global $bb_cfg array

- Add singleton Config class with dot notation support for nested configuration
- Implement thread-safe configuration access with magic methods (__get, __set, __isset)
- Add global config() helper function for convenient access
- Support for getSection(), merge(), has(), all() methods with type safety

BREAKING CHANGE: While $bb_cfg global array still works for backward compatibility,
new code should use config()->get() method with dot notation

Updated files:
- src/Config.php: New Config singleton class implementation
- common.php: Initialize Config singleton and add global helper
- src/Emailer.php: Replace $bb_cfg with config()->get()
- src/Ajax.php: Replace $bb_cfg with config()->get()
- src/Censor.php: Replace $bb_cfg with config()->get()
- src/Validate.php: Replace $bb_cfg with config()->get()
- src/Dev.php: Replace $bb_cfg with config()->get()
- src/Sitemap.php: Replace $bb_cfg with config()->get()
- src/TorrServerAPI.php: Replace $bb_cfg with config()->get()
- src/Sessions.php: Replace $bb_cfg with config()->get()
- src/Legacy/TorrentFileList.php: Replace $bb_cfg with config()->get()
- src/Legacy/Poll.php: Replace $bb_cfg with config()->get()
- src/Legacy/Torrent.php: Replace $bb_cfg with config()->get()
- src/Legacy/Common/User.php: Replace $bb_cfg with config()->get()
- src/Legacy/Template.php: Replace $bb_cfg with config()->get()
- src/Legacy/Atom.php: Replace $bb_cfg with config()->get()
- src/Legacy/Admin/Common.php: Replace $bb_cfg with config()->get()
- viewforum.php: Replace $bb_cfg with config()->get()
- posting.php: Replace $bb_cfg with config()->get()
- dl.php: Replace $bb_cfg with config()->get()
- feed.php: Replace $bb_cfg with config()->get()
- filelist.php: Replace $bb_cfg with config()->get()
- group_edit.php: Replace $bb_cfg with config()->get()
- group.php: Replace $bb_cfg with config()->get()
- index.php: Replace $bb_cfg with config()->get()
- login.php: Replace $bb_cfg with config()->get()
- memberlist.php: Replace $bb_cfg with config()->get()
- modcp.php: Replace $bb_cfg with config()->get()
- playback_m3u.php: Replace $bb_cfg with config()->get()
- poll.php: Replace $bb_cfg with config()->get()

* refactor: replace $bb_cfg with config() in various admin files

- Updated multiple admin files to utilize the new Config class for configuration access.
- Replaced instances of $bb_cfg with config()->get() for improved maintainability and consistency.
- Ensured backward compatibility while transitioning to the new configuration system.

Files modified:
- common.php
- index.php
- admin_attach_cp.php
- admin_log.php
- admin_mass_email.php
- admin_sitemap.php
- admin_smilies.php
- admin_terms.php
- admin_user_search.php
- admin_words.php
- admin/index.php
- admin/stats/tracker.php

* refactor: update init_bb.php to use config() for configuration management

- Replaced the merging of $bb_cfg with a call to config()->merge() for improved clarity and maintainability.
- Updated the retrieval of all configuration settings to use config()->all().

This change continues the transition towards a centralized configuration system.

* refactor: replace $bb_cfg with config() in various files

- Updated multiple files to utilize the new Config class for configuration access.
- Replaced instances of $bb_cfg with config()->get() for improved maintainability and consistency.
- Ensured backward compatibility while transitioning to the new configuration system.

Files modified:
- privmsg.php
- search.php
- terms.php
- tracker.php
- viewtopic.php
- bt/announce.php
- bt/scrape.php
- bt/includes/init_tr.php
- library/ajax/*.php
- src/Config.php

* refactor: replace $bb_cfg with config() in attachment and display files

- Updated multiple files to utilize the new Config class for configuration access.
- Replaced instances of $bb_cfg with config()->get() for improved maintainability and consistency.
- Ensured backward compatibility while transitioning to the new configuration system.

Files modified:
- attachment_mod.php
- displaying_torrent.php
- functions_delete.php
- bbcode.php
- functions.php
- init_bb.php
- online_userlist.php
- page_footer.php
- page_header.php
- torrent_show_dl_list.php
- cron jobs (various files)
- datastore build files (various files)

* refactor: replace $bb_cfg with config() in user control panel files

- Updated multiple user control panel files to utilize the new Config class for configuration access.
- Replaced instances of $bb_cfg with config()->get() for improved maintainability and consistency.
- Ensured backward compatibility while transitioning to the new configuration system.

Files modified:
- bonus.php
- email.php
- register.php
- sendpasswd.php
- topic_watch.php
- viewprofile.php

* refactor: replace $bb_cfg with config() in various legacy files

- Updated multiple legacy files to utilize the new Config class for configuration access.
- Replaced instances of $bb_cfg with config()->get() for improved maintainability and consistency.
- Ensured backward compatibility while transitioning to the new configuration system.

Files modified:
- sidebar2.html
- BBCode.php
- LogAction.php
- Post.php
- Template.php
- Torrent.php
- Common/User.php
- Common/Select.php
- Common/Upload.php
- Admin/Common.php
- tpl_config.php

* refactor: remove legacy DOCUMENTATION.md and add UPGRADE_GUIDE.md

- Deleted the outdated DOCUMENTATION.md file, which contained legacy configuration information.
- Introduced a new UPGRADE_GUIDE.md to assist users in migrating to the new configuration system.
- The upgrade guide includes migration strategies, breaking changes, and best practices for using the new Config class.

Files modified:
- DOCUMENTATION.md (deleted)
- UPGRADE_GUIDE.md (new)

* refactor: update legacy files to maintain compatibility with bb_cfg deprecation

- Added comments in init_bb.php, Template.php, and Cron.php to indicate that bb_cfg is deprecated but retained for compatibility with non-adapted code.
- Ensured clarity in documentation for future reference while transitioning to the new configuration system.

Files modified:
- init_bb.php
- Template.php
- Cron.php
2025-06-18 01:19:49 +04:00
Yury Pikhtarev
37a0675adf
fix(sql): resolve only_full_group_by compatibility issues in tracker cleanup (#1951)
- Replace non-aggregated 'seeder' column with MAX(seeder) in GROUP BY query
- Remove ORDER BY clause incompatible with GROUP BY in seeder update query

Fixes MySQL 5.7+ strict SQL mode errors in tr_cleanup_and_dlstat cron job.
2025-06-17 20:28:14 +04:00
Roman Kelesidis
81bf67c2be
fix(installer): Strip protocol from TP_HOST to keep only hostname (#1952)
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
2025-06-17 18:14:47 +03:00
Yury Pikhtarev
5842994782
refactor(config): encapsulate global $bb_cfg array in Config class (#1950)
- Create new TorrentPier\Config singleton class with dot notation support
- Add config() helper function for global access
- Replace direct $bb_cfg access in core files (common.php, Emailer.php, Ajax.php)
- Implement methods: get(), set(), has(), all(), getSection(), merge()
- Add magic methods for property-like access
- Maintain backward compatibility with existing $bb_cfg usage

BREAKING CHANGE: None - maintains full backward compatibility
2025-06-17 18:41:45 +04:00
Yury Pikhtarev
8907dbf991
Update composer.lock and improve SQL queries in online_userlist.php and tr_cleanup_and_dlstat.php (#1949)
- Updated plugin API version in composer.lock from 2.3.0 to 2.6.0.
- Modified SQL queries in online_userlist.php to use MAX() for session data and adjusted GROUP BY clause for better accuracy.
- Enhanced SQL logic in tr_cleanup_and_dlstat.php to utilize MAX() for determining the releaser status.
2025-06-17 18:07:31 +04:00
belomaxorka
d8b1489b06 Update CHANGELOG.md 📖
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
2025-06-17 01:42:31 +00:00
dependabot[bot]
b4776804a4
Composer(deps): Bump filp/whoops from 2.18.2 to 2.18.3 (#1948)
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
Bumps [filp/whoops](https://github.com/filp/whoops) from 2.18.2 to 2.18.3.
- [Changelog](https://github.com/filp/whoops/blob/master/CHANGELOG.md)
- [Commits](https://github.com/filp/whoops/compare/2.18.2...2.18.3)

---
updated-dependencies:
- dependency-name: filp/whoops
  dependency-version: 2.18.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 15:07:06 +03:00
belomaxorka
633051bb99 Update CHANGELOG.md 📖
Some checks are pending
Continuous Integration / Nightly builds 📦 (push) Waiting to run
Continuous Integration / 🎉 Deploy (push) Waiting to run
PHPMD / Run PHPMD scanning (push) Waiting to run
2025-06-16 01:45:24 +00:00
belomaxorka
224f0ffa1f Update CHANGELOG.md 📖
Some checks failed
Continuous Integration / Nightly builds 📦 (push) Has been cancelled
Continuous Integration / 🎉 Deploy (push) Has been cancelled
PHPMD / Run PHPMD scanning (push) Has been cancelled
2025-06-15 01:50:26 +00:00
belomaxorka
b530268826 Update CHANGELOG.md 📖 2025-06-13 08:21:18 +00:00
Roman Kelesidis
9c7d270598
misc(_release.php): Finally! Removed some useless params (#1947) 2025-06-13 11:20:11 +03:00
Roman Kelesidis
e7d3133aa8
release: v2.4.6-alpha.4 2025-06-13 11:06:10 +03:00
Roman Kelesidis
0271b21a5e
misc(_release.php): Use GPG sign for tags by default (#1946) 2025-06-13 11:04:49 +03:00
Roman Kelesidis
374a74c91f
release: v2.4.6-alpha.3 2025-06-13 10:53:29 +03:00
Roman Kelesidis
e5811f9c66
misc(_release.php): Minor improvements (#1945)
* misc(_release.php): Minor improvements

* Update _release.php
2025-06-13 10:51:50 +03:00
Roman Kelesidis
b6b38adea3 release: v2.4.6-alpha.2 2025-06-12 22:15:07 +03:00
Roman Kelesidis
5e6fb3ef42
misc(cliff.toml): Use correct nightly link (#1944) 2025-06-12 21:06:00 +03:00
dependabot[bot]
9a529558b4
Composer(deps): Bump filp/whoops from 2.18.1 to 2.18.2 (#1943)
Bumps [filp/whoops](https://github.com/filp/whoops) from 2.18.1 to 2.18.2.
- [Changelog](https://github.com/filp/whoops/blob/master/CHANGELOG.md)
- [Commits](https://github.com/filp/whoops/compare/2.18.1...2.18.2)

---
updated-dependencies:
- dependency-name: filp/whoops
  dependency-version: 2.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-12 20:33:12 +07:00
belomaxorka
62ab980027 Update CHANGELOG.md 📖 2025-06-12 01:41:04 +00:00
Roman Kelesidis
bcf4eb4e9b
feat(ajax): Log full ajax request/response data to console in explain mode (#1942)
* feat(ajax): log full ajax request data to console in explain mode

* Update Ajax.php
2025-06-11 21:42:13 +03:00
Roman Kelesidis
6f03f750ba
feat: Improved ajax debug (#1941) 2025-06-11 21:32:23 +03:00
belomaxorka
a27d504c7d Update CHANGELOG.md 📖 2025-06-11 18:21:14 +00:00
Roman Kelesidis
345dd1bc20
feat: Add console log for ajax actions when explain cookie is set (#1940) 2025-06-11 21:20:08 +03:00
Roman Kelesidis
28e38aa781
removed: 'cat_forums' from enqueue list in get_forum_mods ajax (#1939) 2025-06-11 21:03:15 +03:00
belomaxorka
1ece8ba830 Update CHANGELOG.md 📖 2025-06-11 01:42:18 +00:00
Roman Kelesidis
f9db78d266
misc(_release.php): Minor improvements (#1938) 2025-06-10 13:54:54 +03:00
Roman Kelesidis
bf328dd69e
fix: Set $datastore->enqueue before $datastore->get (#1937) 2025-06-10 13:47:57 +03:00
belomaxorka
74d3b76f73 Update CHANGELOG.md 📖 2025-06-09 20:22:52 +00:00
Roman Kelesidis
4b16b847f5
removed: Extra CFG_DIR constant (#1936) 2025-06-09 21:47:02 +03:00
Roman Kelesidis
dcd7002c2a
misc(_release.php): Temporary removed automatic push origin (#1935) 2025-06-09 18:46:51 +03:00
Roman Kelesidis
75ef57474c
misc(_release.php): Added ability to set version emoji (#1934) 2025-06-09 17:23:36 +03:00
Roman Kelesidis
867359a89e
misc(_release.php): Added automatic CHANGELOG.md update (#1933) 2025-06-09 17:05:12 +03:00
belomaxorka
eecfc44046 Update CHANGELOG.md 📖 2025-06-09 13:12:00 +00:00
Roman Kelesidis
5561e0022c
misc(_release.php): Added push origin command (#1932) 2025-06-09 16:10:57 +03:00
Roman Kelesidis
128f917d76 release: v2.4.6-alpha.1 2025-06-09 15:55:47 +03:00
Roman Kelesidis
8ecc61719a
misc(_release.php): Added GPG sign for tags (#1931) 2025-06-09 15:55:14 +03:00
belomaxorka
bef5328d1e Update CHANGELOG.md 📖 2025-06-09 12:22:30 +00:00
Roman Kelesidis
6adde35849
misc(cliff): Added automated script for releases creation (#1930)
* misc(cliff): Added automated script for releases creation

* Updated

* Update functions_cli.php

* Updated

* Updated

* Update functions_cli.php

* Updated

* Update _release.php

* Update cliff.toml

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php

* Update _release.php
2025-06-09 15:21:17 +03:00
belomaxorka
c9aff2a152 Update CHANGELOG.md 📖 2025-06-09 10:48:52 +00:00
Roman Kelesidis
cef041c0d1
misc(cliff): Completely removed cliff-releases.toml (#1929) 2025-06-09 13:48:25 +03:00
Roman Kelesidis
212e5c5283
misc(cliff): Updated config (#1928) 2025-06-09 13:44:17 +03:00
belomaxorka
5e291f3043 Update CHANGELOG.md 📖 2025-06-08 19:46:50 +00:00
Roman Kelesidis
4d0b2941e3
feat(meta): Minor improvements to description generation (#1926) 2025-06-08 22:44:50 +03:00
Yury Pikhtarev
2487d130bb
crodwin: New Crowdin updates (#1925) 2025-06-08 18:11:59 +03:00
Yury Pikhtarev
0515670bee
crowdin: New Crowdin updates (#1924)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2025-06-08 18:47:14 +07:00
Roman Kelesidis
f64c340563
feat(bbcode): Added [nfo] and [pre] tags (#1923) 2025-06-08 12:44:04 +03:00
belomaxorka
5768fe7071 Update CHANGELOG.md 📖 2025-06-08 01:48:39 +00:00
Yury Pikhtarev
8e965fb1ce
crowdin: New translations main.php (Russian) (#1922) 2025-06-07 19:29:59 +03:00
Yury Pikhtarev
daeb7fe87e
crowdin: New Crowdin updates (#1921)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2025-06-07 15:00:23 +03:00
Roman Kelesidis
4c24cb65bf
feat(bbcode): Implement color customization for [box] tag (#1920)
* feat(bbcode): implement color customization for `[box]` tag

* feat(bbcode): implement color customization for `[box]` tag
2025-06-07 14:46:42 +03:00
belomaxorka
6d6786481e Update CHANGELOG.md 📖 2025-06-05 01:40:24 +00:00
dependabot[bot]
125366147c
Composer(deps): Bump filp/whoops from 2.18.0 to 2.18.1 (#1919)
Bumps [filp/whoops](https://github.com/filp/whoops) from 2.18.0 to 2.18.1.
- [Changelog](https://github.com/filp/whoops/blob/master/CHANGELOG.md)
- [Commits](https://github.com/filp/whoops/compare/2.18.0...2.18.1)

---
updated-dependencies:
- dependency-name: filp/whoops
  dependency-version: 2.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-04 09:43:43 +03:00
belomaxorka
efa39767a6 Update CHANGELOG.md 📖 2025-05-31 20:09:52 +00:00
Roman Kelesidis
46f29bc68a
misc: Minor improvements (#1918) 2025-05-31 10:19:24 +03:00
Roman Kelesidis
7b8b9a0bba
feat: Added ability to set page meta description (#1917)
* feat: Added ability to set page meta description

* Update page_header.php

* Update viewforum.php

* Updated

* Update viewtopic.php

* Update viewtopic.php

* Update viewtopic.php

* Update viewtopic.php
2025-05-31 10:13:55 +03:00
belomaxorka
5a60ee0193 Update CHANGELOG.md 📖 2025-05-30 18:58:22 +00:00
Roman Kelesidis
03eeb08ad1
feat(install): Autofill Host in robots.txt file (#1916) 2025-05-30 21:53:24 +03:00
Yury Pikhtarev
a3da6f5386
crowdin: New Crowdin updates (#1915) 2025-05-30 20:27:13 +03:00
Yury Pikhtarev
a15baef69a
crowdin: New Crowdin updates (#1914)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2025-05-30 22:59:14 +07:00
Roman Kelesidis
79bb13e17d
feat(ACP): Added robots.txt editor (#1913)
* feat(admin): Added robots.txt editor

* Update admin_robots.tpl

* Update admin_robots.php

* Update admin_robots.php

* Update admin_robots.php

* Update admin_robots.tpl

* Updated

* Updated

* Update main.php

* Updated
2025-05-30 17:53:22 +03:00
belomaxorka
d18f99fa1c Update CHANGELOG.md 📖 2025-05-23 01:38:55 +00:00
dependabot[bot]
f76e351b32
Composer(deps): Bump arokettu/bencode from 4.3.0 to 4.3.1 (#1912)
Bumps [arokettu/bencode](https://github.com/arokettu/bencode) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/arokettu/bencode/releases)
- [Changelog](https://github.com/arokettu/bencode/blob/master/CHANGELOG.md)
- [Commits](https://github.com/arokettu/bencode/compare/4.3.0...4.3.1)

---
updated-dependencies:
- dependency-name: arokettu/bencode
  dependency-version: 4.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-22 21:57:40 +07:00
belomaxorka
21b1eef59d Update CHANGELOG.md 📖 2025-05-19 01:43:37 +00:00
Yury Pikhtarev
174f44160e
crowdin: New Crowdin updates (#1911) 2025-05-18 07:52:16 +03:00
belomaxorka
025a1944b9 Update CHANGELOG.md 📖 2025-05-17 17:36:06 +00:00
Yury Pikhtarev
c40aad20ad
crowdin: New Crowdin updates (#1910) 2025-05-17 22:46:27 +07:00
Yury Pikhtarev
999ae1eff9
crowdin: New Crowdin updates (#1907)
* New translations main.php (Russian)

* New translations main.php (Azerbaijani)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2025-05-17 17:37:09 +03:00
Roman Kelesidis
897edfc371
crowdin: Updated translations (#1909) 2025-05-17 17:24:01 +03:00
Roman Kelesidis
6d0499dd02
crowdin: Updated translations (#1908) 2025-05-17 17:22:20 +03:00
Roman Kelesidis
8a3b12c119
crowdin: New translations (#1906)
* crowdin: New translations

* Update main.php
2025-05-17 08:26:34 +03:00
Yury Pikhtarev
dee7b4acf9
New Crowdin updates (#1905)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations admin_send_email.html (Japanese)

* New translations admin_send_email.html (Chinese Traditional)

* New translations admin_send_email.html (Portuguese, Brazilian)

* New translations group_added.html (Spanish)

* New translations group_added.html (Japanese)

* New translations group_added.html (Chinese Traditional)

* New translations group_added.html (Thai)

* New translations group_approved.html (Spanish)

* New translations group_approved.html (Japanese)

* New translations group_approved.html (Chinese Traditional)

* New translations group_approved.html (Thai)

* New translations group_request.html (Chinese Traditional)

* New translations privmsg_notify.html (Spanish)

* New translations privmsg_notify.html (Japanese)

* New translations privmsg_notify.html (Chinese Traditional)

* New translations profile_send_email.html (Spanish)

* New translations profile_send_email.html (Japanese)

* New translations profile_send_email.html (Thai)

* New translations topic_notify.html (Spanish)

* New translations topic_notify.html (Chinese Traditional)

* New translations topic_notify.html (Thai)

* New translations user_activate.html (Spanish)

* New translations user_activate.html (Chinese Traditional)

* New translations user_activate_passwd.html (Spanish)

* New translations user_activate_passwd.html (Japanese)

* New translations user_activate_passwd.html (Chinese Traditional)

* New translations user_activate_passwd.html (Portuguese, Brazilian)

* New translations user_activate_passwd.html (Thai)

* New translations user_welcome.html (German)

* New translations user_welcome.html (Chinese Traditional)

* New translations user_welcome.html (Portuguese, Brazilian)

* New translations user_welcome.html (Thai)

* New translations user_welcome_inactive.html (Spanish)

* New translations user_welcome_inactive.html (Chinese Traditional)

* New translations user_welcome_inactive.html (Portuguese, Brazilian)

* New translations user_welcome_inactive.html (Thai)

* New translations copyright_holders.html (Chinese Traditional)

* New translations copyright_holders.html (Thai)

* New translations user_agreement.html (Thai)
2025-05-17 11:50:07 +07:00
belomaxorka
1738624d04 Update CHANGELOG.md 📖 2025-05-12 01:41:59 +00:00
Roman Kelesidis
cd450e67bb release: v2.4.5 🐠 2025-05-11 21:39:24 +03:00
belomaxorka
44bdd13df8 Update CHANGELOG.md 📖 2025-05-08 01:38:38 +00:00
Roman Kelesidis
3cdf843a04
misc: Minor improvements (#1904)
* misc: Minor improvements

* Update legacy-changes.txt

* Update composer.lock
2025-05-07 22:26:51 +03:00
belomaxorka
19ef9efc6a Update CHANGELOG.md 📖 2025-05-06 17:06:37 +00:00
Roman Kelesidis
3a64f8595c
feat: Added ability to hide peer username in peer list (#1903)
* Added ability to hide peer username in peer list

* Updated
2025-05-06 20:04:17 +03:00
Roman Kelesidis
4b7203f8ae
fix(peers list): IPv6 showing (#1902)
* fix(peers list): `IPv6` showing

* Update functions.php
2025-05-06 19:41:17 +03:00
Roman Kelesidis
6e0786bdee
feat(announcer): Check for frozen torrents (#1770)
* feat(announcer): Check for frozen torrents

* Update announce.php

* Update announce.php

* Update announce.php

* Update announce.php

* Update announce.php

* Update announce.php

* Updated

* Update announce.php

* Update announce.php

* Update announce.php

* Update announce.php

* Update announce.php
2025-05-06 12:55:18 +03:00
belomaxorka
d3b8c38f7a Update CHANGELOG.md 📖 2025-05-05 16:12:44 +00:00
Roman Kelesidis
2f026921ee
misc: Minor improvements (#1898)
* misc: Minor improvements

* Update functions.php

* Update functions.php
2025-05-05 19:11:22 +03:00
Roman Kelesidis
513e3065d3
feat(freeipapi): Added ability to use own API token (#1901)
* feat(freeipapi): Added ability to use own API token

* Updated

* Update displaying_torrent.php

* Update usercp_register.tpl

* Update register.php
2025-05-05 18:58:08 +03:00
dependabot[bot]
a4793f6ce1
Composer(deps): Bump symfony/polyfill from 1.31.0 to 1.32.0 (#1900)
Bumps [symfony/polyfill](https://github.com/symfony/polyfill) from 1.31.0 to 1.32.0.
- [Changelog](https://github.com/symfony/polyfill/blob/1.x/CHANGELOG.md)
- [Commits](https://github.com/symfony/polyfill/compare/v1.31.0...v1.32.0)

---
updated-dependencies:
- dependency-name: symfony/polyfill
  dependency-version: 1.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-05 14:26:46 +07:00
belomaxorka
ab7ea901ec Update CHANGELOG.md 📖 2025-05-05 01:40:58 +00:00
Roman Kelesidis
781b7240c4
fix: Incorrect rounding in execution time counter (#1899)
* fix: Incorrect rounding in execution time counter

* Update page_footer.php
2025-05-04 20:16:58 +03:00
Roman Kelesidis
14086a0ed6
misc: Minor improvements (#1897) 2025-05-04 19:40:57 +03:00
Roman Kelesidis
36d399220e
fix: Undefined array key "smile" when are no smilies (#1896) 2025-05-04 17:28:22 +03:00
Roman Kelesidis
b51820e186
feat(admin_smilies): Added confirmation on smilie deleting (#1895)
* feat(admin_smilies): Added confirmation on smilie deleting

* Update admin_smilies.php
2025-05-04 16:50:17 +03:00
belomaxorka
bdd4d9322b Update CHANGELOG.md 📖 2025-05-04 13:25:46 +00:00
Roman Kelesidis
8edba72f09
fix: Peer country flag not shown in peers list (#1894)
* fix: Peer country flag not shown in peers list

* Update functions.php
2025-05-04 16:20:02 +03:00
Roman Kelesidis
90ece5c762
misc: Minor improvements (#1893) 2025-05-04 12:33:08 +03:00
Roman Kelesidis
1e5b93d2c0
misc: Minor improvements (#1892) 2025-05-04 12:27:13 +03:00
Roman Kelesidis
2555ebce47
feat: Added ability to hide peer country in peer list (#1891)
* feat: Added ability to hide peer country in peer list

* Update displaying_torrent.php

* Update displaying_torrent.php

* Updated

* Update usercp_register.tpl

* Update main.php

* Update functions.php
2025-05-04 11:55:28 +03:00
Roman Kelesidis
f5d65b8911
feat: Added ability to hide BitTorrent client in peers list (#1890)
* feat: Added ability to hide peer torrent client

* Update displaying_torrent.php

* Update functions.php

* Update register.php

* Updated
2025-05-04 10:38:38 +03:00
belomaxorka
ccb122f9cb Update CHANGELOG.md 📖 2025-05-03 17:50:28 +00:00
Roman Kelesidis
1db9412957 release: v2.4.5-rc.5 🐑 2025-05-03 20:43:45 +03:00
belomaxorka
3a679bc253 Update CHANGELOG.md 📖 2025-05-03 13:32:36 +00:00
Roman Kelesidis
75e9d5e4a8
feat(atom): Hide topics from private forums (#1889) 2025-05-03 16:24:48 +03:00
belomaxorka
071fc04b48 Update CHANGELOG.md 📖 2025-05-03 01:26:39 +00:00
Roman Kelesidis
e510ebc3ba
feat(admin_ranks): Added confirmation on rank deleting (#1888)
* feat(admin_ranks): Added confirmation on rank deleting

* Update functions.php

* Update admin_ranks.php
2025-05-02 14:43:36 +03:00
belomaxorka
25224e6dfd Update CHANGELOG.md 📖 2025-05-02 01:36:51 +00:00
dependabot[bot]
7a14464d20
Composer(deps): Bump vlucas/phpdotenv from 5.6.1 to 5.6.2 (#1887)
Bumps [vlucas/phpdotenv](https://github.com/vlucas/phpdotenv) from 5.6.1 to 5.6.2.
- [Release notes](https://github.com/vlucas/phpdotenv/releases)
- [Commits](https://github.com/vlucas/phpdotenv/compare/v5.6.1...v5.6.2)

---
updated-dependencies:
- dependency-name: vlucas/phpdotenv
  dependency-version: 5.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 19:36:22 +03:00
belomaxorka
0b489a25fd Update CHANGELOG.md 📖 2025-04-30 01:36:25 +00:00
Roman Kelesidis
1663e19c3f
misc(password_hash): Changed cost to 12 by default (#1886) 2025-04-29 20:41:03 +03:00
Roman Kelesidis
6bd000bc0d
misc: Updated nightly builds link (#1885) 2025-04-29 20:36:15 +03:00
Roman Kelesidis
5fe770070e
misc: Composer dependencies are installed according to the minimum supported PHP version (#1884) 2025-04-29 20:26:03 +03:00
belomaxorka
c98a4f760e Update CHANGELOG.md 📖 2025-04-24 01:27:35 +00:00
Roman Kelesidis
c0cdcff488
feat(magnet): Added xl (eXact Length) parametr (#1883) 2025-04-23 19:57:03 +03:00
belomaxorka
04b0a477d3 Update CHANGELOG.md 📖 2025-04-22 18:13:23 +00:00
Roman Kelesidis
53e944be51 Revert "style: Correct sidebar2 displaying" 2025-04-22 16:16:04 +03:00
Roman Kelesidis
bc1713abdd
misc: Corrected php version in composer.json (#1882) 2025-04-22 10:45:43 +03:00
Roman Kelesidis
5c4972ec12
misc: Composer dependencies are installed according to the minimum supported PHP version (#1881) 2025-04-22 10:33:08 +03:00
belomaxorka
ec0efe5790 Update CHANGELOG.md 📖 2025-04-18 01:25:35 +00:00
Roman Kelesidis
de8f1925ba
misc: Minor improvements (#1880)
* misc: Minor improvements

* Update index.php
2025-04-17 19:18:29 +03:00
belomaxorka
9e85a00464 Update CHANGELOG.md 📖 2025-04-17 01:26:28 +00:00
Roman Kelesidis
9f96090cc4
fix: Displaying Network news and Latest news for guests when foums are private (#1879) 2025-04-16 19:29:00 +03:00
Roman Kelesidis
eeb391da6a
misc: Minor improvements (#1876)
* misc: Minor improvements

* Update viewprofile.php

* Update viewprofile.php

* Update functions.php

* Update filelist.php

* Revert "Update filelist.php"

This reverts commit e5eb9a6b3f.

* Update .cliffignore

* Updated

* Update viewtopic_attach_guest.tpl
2025-04-16 13:40:36 +03:00
Roman Kelesidis
1073f19013 Revert "feat: Improvements for Torrent Files List functionality (#1878)"
This reverts commit e59adce848.
2025-04-16 13:27:21 +03:00
belomaxorka
cb36715583 Update CHANGELOG.md 📖 2025-04-16 01:27:40 +00:00
Roman Kelesidis
e59adce848
feat: Improvements for Torrent Files List functionality (#1878)
* feat: Improvements for `Torrent Files List` functionality

* Updated

* Updated

* Update filelist.php

* Update filelist.php

* Update filelist.php

* Updated

* Update filelist.php

* Update filelist.php

* Update filelist.php

* Updated

* Update filelist.php

* Update filelist.php
2025-04-15 20:31:45 +03:00
belomaxorka
1374479fa2 Update CHANGELOG.md 📖 2025-04-11 01:26:04 +00:00
Roman Kelesidis
c3b40003b7
fix(cache): Implicitly marking parameter $name as nullable is deprecated (#1877) 2025-04-10 12:19:22 +03:00
belomaxorka
1dc84f666f Update CHANGELOG.md 📖 2025-04-06 01:37:25 +00:00
Roman Kelesidis
41a78ddbcb
misc: Minor improvements (#1875)
* misc: Minor improvements

* Update activate.php

* Update admin_ug_auth.php

* Update admin_ug_auth.php

* Update register.php

* Update index.php

* Update admin_ug_auth.php
2025-04-05 17:01:59 +03:00
belomaxorka
36ff584e69 Update CHANGELOG.md 📖 2025-04-04 01:24:41 +00:00
Roman Kelesidis
0f1a69e32d
misc: Minor improvements (#1874) 2025-04-03 19:16:08 +03:00
belomaxorka
578a064303 Update CHANGELOG.md 📖 2025-04-01 15:44:55 +00:00
Roman Kelesidis
f9c8160f8e
misc: Fetch only necessary sitemap parameters in admin_sitemap.php (#1873) 2025-04-01 18:40:47 +03:00
Roman Kelesidis
8358aa00de
fix: Pagination issue in Report on action page (#1872) 2025-04-01 18:06:36 +03:00
belomaxorka
0e72537188 Update CHANGELOG.md 📖 2025-03-31 17:17:00 +00:00
Roman Kelesidis
595adbe4da
fix: tablesorting issues & incorrect user_role for pending users (#1871) 2025-03-31 19:54:53 +03:00
Roman Kelesidis
12792e74f7
fix: Fixed TorrentPier build-in emojis showing in ACP (#1870) 2025-03-31 17:50:07 +03:00
Roman Kelesidis
84e2392896
misc: Changed placeholder IP address from 7f000001 to 0 (#1869) 2025-03-31 17:42:36 +03:00
belomaxorka
0a5d14fb6b Update CHANGELOG.md 📖 2025-03-28 01:24:16 +00:00
Roman Kelesidis
72376532b3
misc: Minor improvements (#1866)
* misc:  Minor improvements

* Update _cleanup.php

* Update TorrServerAPI.php

* Update TorrServerAPI.php
2025-03-27 21:29:49 +03:00
belomaxorka
83c03ae08e Update CHANGELOG.md 📖 2025-03-27 01:24:16 +00:00
dependabot[bot]
bd5aa2a5e7
Composer(deps): Bump php-curl-class/php-curl-class from 11.1.0 to 12.0.0 (#1868)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 11.1.0 to 12.0.0.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/11.1.0...12.0.0)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-26 13:28:20 +07:00
belomaxorka
ab4602e38f Update CHANGELOG.md 📖 2025-03-26 01:24:34 +00:00
Roman Kelesidis
eabf851ee6 revert: Added TorrentPier instance hash generation 2025-03-25 14:02:35 +03:00
Roman Kelesidis
1b288a96e4 revert: Added IndexNow protocol support 🤖 2025-03-25 13:48:52 +03:00
dependabot[bot]
6440162187
Composer(deps): Bump monolog/monolog from 3.8.1 to 3.9.0 (#1865)
Bumps [monolog/monolog](https://github.com/Seldaek/monolog) from 3.8.1 to 3.9.0.
- [Release notes](https://github.com/Seldaek/monolog/releases)
- [Changelog](https://github.com/Seldaek/monolog/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Seldaek/monolog/compare/3.8.1...3.9.0)

---
updated-dependencies:
- dependency-name: monolog/monolog
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-25 13:23:47 +07:00
dependabot[bot]
de2fceabed
Composer(deps): Bump php-curl-class/php-curl-class from 11.0.5 to 11.1.0 (#1864)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 11.0.5 to 11.1.0.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/11.0.5...11.1.0)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-25 13:23:32 +07:00
belomaxorka
1523a37fea Update CHANGELOG.md 📖 2025-03-23 01:36:27 +00:00
Roman Kelesidis
83e42bc5db
misc(render_flag): Hide names for specified ($nameIgnoreList) flags (#1862) 2025-03-22 12:19:29 +03:00
Roman Kelesidis
e9920ab598
misc(README): Removed Build actions badge (#1861) 2025-03-22 11:21:30 +03:00
Roman Kelesidis
974d3590c1
misc(.cliffignore): Added one more commit (#1860) 2025-03-22 08:52:06 +03:00
belomaxorka
02b418ac34 Update CHANGELOG.md 📖 2025-03-22 05:48:52 +00:00
Roman Kelesidis
2eab551bd7
misc(cliff): Added .cliffignore file to ignore reverted commits (#1859) 2025-03-22 08:47:51 +03:00
belomaxorka
a791d4db81 Update CHANGELOG.md 📖 2025-03-22 01:22:28 +00:00
dependabot[bot]
3ced460640
Composer(deps): Bump egulias/email-validator from 4.0.3 to 4.0.4 (#1858)
Bumps [egulias/email-validator](https://github.com/egulias/EmailValidator) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/egulias/EmailValidator/releases)
- [Commits](https://github.com/egulias/EmailValidator/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: egulias/email-validator
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-21 13:15:40 +07:00
belomaxorka
3a2dcab561 Update CHANGELOG.md 📖 2025-03-21 02:12:39 +00:00
Roman Kelesidis
df500c4dfa
Update CHANGELOG.md 2025-03-21 09:11:39 +07:00
Roman Kelesidis
467225e6e4 Revert "feat: Added secure headers configuring (#1856)"
This reverts commit 9766c534bd.
2025-03-19 14:25:51 +03:00
belomaxorka
4f8b51febd Update CHANGELOG.md 📖 2025-03-19 01:24:08 +00:00
Roman Kelesidis
9766c534bd
feat: Added secure headers configuring (#1856)
* feat: Added secure headers configuring

* Update config.secure-headers.php
2025-03-18 21:05:15 +03:00
Roman Kelesidis
3cc880eeb8
misc: Some minor improvements (#1855)
* misc: Some minor improvements

* Update config.php

* Update Env.php

* Update Env.php

* Update tr_seed_bonus.php
2025-03-18 20:52:11 +03:00
belomaxorka
056bf046c1 Update CHANGELOG.md 📖 2025-03-18 01:23:15 +00:00
dependabot[bot]
7ca0582561
Composer(deps): Bump filp/whoops from 2.17.0 to 2.18.0 (#1853)
Bumps [filp/whoops](https://github.com/filp/whoops) from 2.17.0 to 2.18.0.
- [Changelog](https://github.com/filp/whoops/blob/master/CHANGELOG.md)
- [Commits](https://github.com/filp/whoops/compare/2.17.0...2.18.0)

---
updated-dependencies:
- dependency-name: filp/whoops
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 13:34:11 +07:00
belomaxorka
4df48751c0 Update CHANGELOG.md 📖 2025-03-17 01:25:22 +00:00
Roman Kelesidis
9e0a64108d
style: Correct sidebar2 displaying (#1852) 2025-03-16 08:53:13 +03:00
belomaxorka
36430c22ce Update CHANGELOG.md 📖 2025-03-14 01:22:05 +00:00
Roman Kelesidis
299d9a1f6c
misc(nightly builds): Added cleanup step (#1851) 2025-03-13 19:51:03 +03:00
dependabot[bot]
37ad07a40c
Composer(deps): Bump php-curl-class/php-curl-class from 11.0.4 to 11.0.5 (#1849)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 11.0.4 to 11.0.5.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/11.0.4...11.0.5)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-13 10:33:19 +07:00
belomaxorka
5f7cfb455f Update CHANGELOG.md 📖 2025-03-12 01:22:02 +00:00
Roman Kelesidis
0b8d8a5210
feat(playback_m3u.php): Added checking auth to download (#1848) 2025-03-11 20:04:04 +03:00
Roman Kelesidis
af2403f191
refactor: Password generation (#1847)
* refactor: Password generation

* Update main.js

* Update usercp_register.tpl

* Update main.js

* Updated

* Update main.js
2025-03-11 18:14:28 +03:00
Roman Kelesidis
bd0ef063fa
refactor: Moved Select class into Legacy\Common (#1846) 2025-03-11 17:30:40 +03:00
Roman Kelesidis
5a4fc121ba
Merge pull request #1845 from torrentpier/misc(text-captcha)-Disabled-scatter-effect-by-default
misc(text captcha): Disabled scatter effect by default
2025-03-11 18:08:54 +07:00
Roman Kelesidis
3af5202f7b misc(text captcha): Disabled scatter effect by default 2025-03-11 14:08:08 +03:00
Roman Kelesidis
37f0fb93f3
Merge pull request #1844 from torrentpier/feat(emailer)-Added-ability-to-configure-sendmail
feat(emailer): Added ability to configure `sendmail`
2025-03-11 18:04:57 +07:00
Roman Kelesidis
5ad4a7019d feat(emailer): Added ability to configure sendmail 2025-03-11 14:03:52 +03:00
belomaxorka
a62a61b008 Update CHANGELOG.md 📖 2025-03-11 06:38:00 +00:00
Roman Kelesidis
ba19130cae
Merge pull request #1843 from torrentpier/dependabot/composer/belomaxorka/captcha-1.2.4
Composer(deps): Bump belomaxorka/captcha from 1.2.3 to 1.2.4
2025-03-11 13:36:24 +07:00
dependabot[bot]
4641b0a0d0
Composer(deps): Bump belomaxorka/captcha from 1.2.3 to 1.2.4
Bumps [belomaxorka/captcha](https://github.com/belomaxorka/Captcha) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/belomaxorka/Captcha/releases)
- [Commits](https://github.com/belomaxorka/Captcha/compare/v1.2.3...v1.2.4)

---
updated-dependencies:
- dependency-name: belomaxorka/captcha
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 06:35:33 +00:00
belomaxorka
edad1785ce Update CHANGELOG.md 📖 2025-03-11 01:22:54 +00:00
dependabot[bot]
be65f7c55c
Composer(deps): Bump belomaxorka/captcha from 1.2.2 to 1.2.3 (#1842)
Bumps [belomaxorka/captcha](https://github.com/belomaxorka/Captcha) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/belomaxorka/Captcha/releases)
- [Commits](https://github.com/belomaxorka/Captcha/compare/v1.2.2...v1.2.3)

---
updated-dependencies:
- dependency-name: belomaxorka/captcha
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-10 15:34:08 +07:00
belomaxorka
ead48923b9 Update CHANGELOG.md 📖 2025-03-10 01:10:01 +00:00
Roman Kelesidis
56d531aa5d
feat(avatar upload): Added accept="image/*" attribute (#1841) 2025-03-09 19:49:10 +03:00
Roman Kelesidis
4e6aadac8c release: v2.4.5-rc.4 🐦🔥 2025-03-09 15:33:18 +03:00
belomaxorka
aa54b3c9ad Update CHANGELOG.md 📖 2025-03-09 12:31:04 +00:00
Roman Kelesidis
858556043d
misc: Replaced gregwar/captcha with my own fork (#1840) 2025-03-09 09:57:35 +03:00
belomaxorka
01c2f3763f Update CHANGELOG.md 📖 2025-03-09 01:12:01 +00:00
Roman Kelesidis
74ea1573b2
feat(captcha): Added Text Captcha provider (#1839)
* feat(captcha): Added `Text Captcha` provider

* Create TextCaptcha.php

* Updated

* Update composer.lock

* Updated

* Update config.php

* Update functions.php

* Update TextCaptcha.php

* Update TextCaptcha.php

* Update TextCaptcha.php

* Update TextCaptcha.php

* Update TextCaptcha.php

* Update TextCaptcha.php

* Update TextCaptcha.php
2025-03-08 20:12:48 +03:00
belomaxorka
8ad080ff2f Update CHANGELOG.md 📖 2025-03-08 01:06:19 +00:00
Roman Kelesidis
dd721367c7
misc(installer): Added cleanup step (for master builds) (#1838)
* misc(installer): Added cleanup step (for master builds)

* Update _cleanup.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php
2025-03-07 17:13:31 +03:00
dependabot[bot]
b954815f5d
Composer(deps): Bump bugsnag/bugsnag from 3.29.2 to 3.29.3 (#1837)
Bumps [bugsnag/bugsnag](https://github.com/bugsnag/bugsnag-php) from 3.29.2 to 3.29.3.
- [Release notes](https://github.com/bugsnag/bugsnag-php/releases)
- [Changelog](https://github.com/bugsnag/bugsnag-php/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bugsnag/bugsnag-php/compare/v3.29.2...v3.29.3)

---
updated-dependencies:
- dependency-name: bugsnag/bugsnag
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-07 10:28:38 +03:00
belomaxorka
492a6d105a Update CHANGELOG.md 📖 2025-03-07 01:23:04 +00:00
Roman Kelesidis
f8c4e8fb14
fix(info.php): Undefined array key "show" (#1836) 2025-03-06 14:58:47 +03:00
belomaxorka
b4624aec5a Update CHANGELOG.md 📖 2025-03-05 01:22:13 +00:00
Roman Kelesidis
b550fa59f9
feat: Added $bb_cfg['auto_language_detection'] parametr (#1835)
* feat: Added `$bb_cfg['auto_language_detection']` parametr

* Update config.php
2025-03-04 20:35:03 +03:00
belomaxorka
bb022e9a57 Update CHANGELOG.md 📖 2025-03-03 01:23:30 +00:00
Roman Kelesidis
5dc9a5475c
misc(_cleanup.php): Added CLI mode check (#1834) 2025-03-02 19:57:56 +03:00
Roman Kelesidis
68bf26d0f4
misc: Created cleanup script (for releases preparation) (#1833)
* misc: Created cleanup script (for releases preparation)

* Update _cleanup.php

* Update _cleanup.php

* Update _cleanup.php
2025-03-02 19:52:43 +03:00
Roman Kelesidis
bc95e14be3
feat(sitemap): Update lastmod when a new reply in topic (#1737)
* Sitemap: Update `lastmod` when topic edited

* Update CHANGELOG.md

* Update Sitemap.php

* Update Sitemap.php

* Update Sitemap.php

* Update CHANGELOG.md

* Update Sitemap.php

* Update Sitemap.php

* Update Sitemap.php

* Update Sitemap.php

* Update Sitemap.php

* Update Sitemap.php
2025-03-02 17:51:01 +03:00
Roman Kelesidis
249c988989
misc: Bring back missing cache & log directories (#1832)
* misc: Bring back missing `cache` & `log` directories

* Update .gitignore
2025-03-02 17:32:46 +03:00
Roman Kelesidis
f2e513dd8b
feat: Easter egg for the 20th anniversary of the TorrentPier! (#1831) 2025-03-02 10:59:49 +03:00
Roman Kelesidis
4dcd1fb16e
feat(show post bbcode): Added 'only_for_first_post' param (#1830)
* feat(show post bbcode): Added `'only_for_first_post'` param

* Update config.php
2025-03-02 10:48:02 +03:00
Roman Kelesidis
3b8ee4c4d3
misc: Some minor improvements (#1829) 2025-03-02 10:15:41 +03:00
Roman Kelesidis
380c94ff07 Revert "refactor: Moved classes from Legacy folder to src root (#1828)"
This reverts commit 92ce77ec0e.
2025-03-02 10:07:04 +03:00
belomaxorka
680bd77920 Update CHANGELOG.md 📖 2025-03-02 01:25:41 +00:00
Roman Kelesidis
92ce77ec0e
refactor: Moved classes from Legacy folder to src root (#1828)
* refactor: Moved classes from `Legacy` folder to `src` root

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Updater

* Update Caches.php

* Updater

* Updater

* Updater

* Updater

* Update Attach.php

* Update Post.php

* Update BBCode.php

* Update SqlDb.php

* Update Upload.php

* Update Upload.php

* Updated

* Updated

* Revert "Updated"

This reverts commit 9ecc26b048.

* Revert "Updated"

This reverts commit 22db50889c.

* Revert "Update Upload.php"

This reverts commit a6faf4191a.
2025-03-01 21:18:26 +03:00
Roman Kelesidis
ba3ce885c8
removed: Integrity checker 🥺🪦 (#1827)
* removed: Integrity checker

* Update schedule.yml
2025-03-01 20:22:50 +03:00
Roman Kelesidis
912b080b16
removed: Redundant .htaccess files (#1826) 2025-03-01 20:00:06 +03:00
belomaxorka
1418d2173a Update checksums.md5 📄 2025-02-27 01:21:19 +00:00
belomaxorka
652708952d Update checksums.md5 📄 2025-02-23 01:24:54 +00:00
belomaxorka
cef5c7c2a6 Update CHANGELOG.md 📖 2025-02-23 01:24:35 +00:00
Roman Kelesidis
4f896854d3
misc(installer): Some minor improvements (#1825) 2025-02-22 10:54:28 +03:00
Roman Kelesidis
f3714f02f2
misc(installer): Some minor improvements (#1824) 2025-02-22 10:46:35 +03:00
belomaxorka
0cfb34ce58 Update checksums.md5 📄 2025-02-22 01:17:37 +00:00
belomaxorka
5b3d5333d5 Update CHANGELOG.md 📖 2025-02-22 01:17:18 +00:00
dependabot[bot]
1c323a45d7
Composer(deps): Bump php-curl-class/php-curl-class from 11.0.3 to 11.0.4 (#1823)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 11.0.3 to 11.0.4.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/11.0.3...11.0.4)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-21 14:57:56 +07:00
belomaxorka
5340f301e4 Update checksums.md5 📄 2025-02-21 01:20:02 +00:00
belomaxorka
023d912f24 Update CHANGELOG.md 📖 2025-02-21 01:19:43 +00:00
Roman Kelesidis
6f641aa9d8
misc(Caddyfile): Some minor fixes (#1822) 2025-02-20 18:48:56 +03:00
dependabot[bot]
dedf35b794
Composer(deps): Bump php-curl-class/php-curl-class from 11.0.1 to 11.0.3 (#1821)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 11.0.1 to 11.0.3.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/11.0.1...11.0.3)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-20 13:23:07 +07:00
belomaxorka
34c429e9e6 Update checksums.md5 📄 2025-02-20 01:19:52 +00:00
belomaxorka
75bf819391 Update CHANGELOG.md 📖 2025-02-20 01:19:32 +00:00
Roman Kelesidis
dfd4e5ebc9
fix(tr_seed_bonus.php): Incorrect GROUP BY (#1820) 2025-02-19 18:15:47 +03:00
Roman Kelesidis
bdefed4dab
misc(announcer): Some minor improvements (#1819)
* misc(announcer): Some minor improvements

* Update announce.php

* Update README.md

* Update Post.php
2025-02-19 14:58:37 +03:00
belomaxorka
61253b6c94 Update checksums.md5 📄 2025-02-17 01:21:50 +00:00
belomaxorka
0b04d71ea0 Update CHANGELOG.md 📖 2025-02-17 01:21:31 +00:00
Roman Kelesidis
f7d394607e
feat: Added configuration files for nginx & caddy (#1787)
* feat(web servers configs): Added configuration files for `nginx` & `caddy`

* Update nginx.conf

* Updated

* Update Caddyfile

* Update Caddyfile

* Update Caddyfile

* Update Caddyfile
2025-02-16 16:48:13 +03:00
belomaxorka
fd98854977 Update checksums.md5 📄 2025-02-13 01:19:22 +00:00
belomaxorka
0dc788ea05 Update CHANGELOG.md 📖 2025-02-13 01:19:01 +00:00
Roman Kelesidis
03ebbda6be
removed(posting.php): Unused 'U_VIEWTOPIC variable (#1818) 2025-02-12 20:04:53 +03:00
belomaxorka
6c6b7ad194 Update checksums.md5 📄 2025-02-12 01:18:46 +00:00
belomaxorka
7df3e4c617 Update CHANGELOG.md 📖 2025-02-12 01:18:27 +00:00
Roman Kelesidis
7794242750
misc(cliff): Removed TorrentPier logo (#1817) 2025-02-11 20:20:12 +03:00
belomaxorka
7fc26743a7 Update checksums.md5 📄 2025-02-09 01:22:39 +00:00
belomaxorka
f723588d43 Update CHANGELOG.md 📖 2025-02-09 01:22:19 +00:00
Roman Kelesidis
c57db2104d
misc(workflow): Short release_name (#1816) 2025-02-08 13:36:24 +03:00
Roman Kelesidis
f2aea92b3d
misc(cliff): Synced cliff-releases.toml with cliff.toml changes (#1815) 2025-02-08 07:02:52 +03:00
belomaxorka
6640d9eb5a Update checksums.md5 📄 2025-02-08 04:00:41 +00:00
belomaxorka
5b3e948da4 Update CHANGELOG.md 📖 2025-02-08 04:00:22 +00:00
Roman Kelesidis
2593f093a3
misc(cliff): Added missing line breaks after body (#1814)
* misc(cliff): Minor improvements

* Update cliff.toml
2025-02-08 06:59:46 +03:00
belomaxorka
b4e177b6f2 Update checksums.md5 📄 2025-02-08 03:51:05 +00:00
belomaxorka
cdd22df66a Update CHANGELOG.md 📖 2025-02-08 03:50:48 +00:00
Roman Kelesidis
d54c07b3da
misc(workflow): Added workflow_dispatch for schedule.yml (#1813) 2025-02-08 06:49:55 +03:00
belomaxorka
aa866d19e6 Update checksums.md5 📄 2025-02-08 01:16:45 +00:00
belomaxorka
7973c85962 Update CHANGELOG.md 📖 2025-02-08 01:16:27 +00:00
B. Zach
bea3b0bccf
misc(README): Fixed all grammatical errors, sentence structure and readibility (#1812)
Fixed all grammatical errors, sentence structure and readibility of readme.
2025-02-07 18:58:10 +03:00
Roman Kelesidis
3a9dd6a3c9
misc(workflow): Some improvements (#1811) 2025-02-07 15:49:22 +03:00
belomaxorka
b286e35638 Update checksums.md5 📄 2025-02-07 01:19:03 +00:00
belomaxorka
401263001e Update CHANGELOG.md 📖 2025-02-07 01:18:45 +00:00
Roman Kelesidis
c168c3956c
misc(workflow): Some improvements (#1810)
* misc(workflow): Some improvements

* Updated

* Update cd.yml

* Update schedule.yml

* Create cd.yml

* Update cd.yml

* Update schedule.yml

* Update cd.yml
2025-02-06 19:43:44 +03:00
belomaxorka
1b751c72a7 release(preparing): Update checksums.md5 📄 2025-02-06 15:41:15 +00:00
belomaxorka
ad5d20cf87 release(preparing): Update CHANGELOG.md 📖 2025-02-06 15:40:55 +00:00
Roman Kelesidis
7378cb3af5
misc(cd workflow): Fixed release body creation (#1809) 2025-02-06 18:39:55 +03:00
belomaxorka
692b99530a release(preparing): Update checksums.md5 📄 2025-02-06 15:35:21 +00:00
belomaxorka
38299a3114 release(preparing): Update CHANGELOG.md 📖 2025-02-06 15:34:56 +00:00
Roman Kelesidis
6c9372c407
misc: Automated releases generation (#1808)
* misc: Automated releases generation

* Update cliff.toml
2025-02-06 18:33:26 +03:00
belomaxorka
427267d6bc release(preparing): Update checksums.md5 📄 2025-02-06 15:19:10 +00:00
belomaxorka
59ed431751 release(preparing): Update CHANGELOG.md 📖 2025-02-06 15:18:53 +00:00
Roman Kelesidis
cc679a8024
misc(cd workflow): Fixed release body creation (#1807) 2025-02-06 18:17:46 +03:00
belomaxorka
341306247b release(preparing): Update checksums.md5 📄 2025-02-06 15:12:08 +00:00
belomaxorka
c69e2b944a release(preparing): Update CHANGELOG.md 📖 2025-02-06 15:11:49 +00:00
Roman Kelesidis
bc74550294
misc: Automated releases generation (#1806)
* misc: Automated releases generation

* Update cd.yml
2025-02-06 18:09:59 +03:00
Roman Kelesidis
425e2e87d5
misc: Automated releases generation (#1805) 2025-02-06 17:57:06 +03:00
belomaxorka
8f191582f9 release(preparing): Update checksums.md5 📄 2025-02-06 14:13:26 +00:00
belomaxorka
8cbef4227e release(preparing): Update CHANGELOG.md 📖 2025-02-06 14:13:07 +00:00
Roman Kelesidis
44be40c2e8
misc(integrity checker): Disabled by default in Demo mode (#1804)
* misc(integrity checker): Disabled by default in `Demo mode`

* Update build_files_integrity.php

* Update cd.yml

* Revert "Update cd.yml"

This reverts commit ec74a0e0e2.
2025-02-06 17:10:10 +03:00
belomaxorka
c2bd2d4d68 release(preparing): Update checksums.md5 📄 2025-02-06 14:07:23 +00:00
belomaxorka
1e6d0ac85f release(preparing): Update CHANGELOG.md 📖 2025-02-06 14:07:02 +00:00
Roman Kelesidis
a29d57b2f8
misc(workflow): Refactored all workflows (#1803)
* misc(workflow): Refactored all workflows

* Update cd.yml
2025-02-06 16:55:29 +03:00
belomaxorka
25a89b093d Update checksums.md5 📄 2025-02-06 13:19:42 +00:00
belomaxorka
5baad10edb Update CHANGELOG.md 📖 2025-02-06 13:19:21 +00:00
Roman Kelesidis
15ca21f038
misc(changelog workflow): Minor improvements (#1802)
* misc(changelog workflow): Minor improvements

* Update ci.yml

* Update ci.yml

* Update ci.yml
2025-02-06 16:18:59 +03:00
belomaxorka
c331a1d009 Update CHANGELOG.md & checksums.md5 2025-02-06 12:46:29 +00:00
Roman Kelesidis
d8e2fa606c Revert "misc(changelog workflow): Some minor improvements (#1801)"
This reverts commit 2d53efc945.
2025-02-06 15:46:06 +03:00
GitHub Action
8daf87f0bd Update CHANGELOG.md & checksums.md5 2025-02-06 12:43:48 +00:00
GitHub Action
16fdd70e4f Update CHANGELOG.md & checksums.md5 2025-02-06 12:43:29 +00:00
GitHub Action
a4e066a739 Update CHANGELOG.md & checksums.md5 2025-02-06 12:43:06 +00:00
Roman Kelesidis
2d53efc945
misc(changelog workflow): Some minor improvements (#1801) 2025-02-06 15:42:47 +03:00
belomaxorka
fef7a54045 Update CHANGELOG.md & checksums.md5 2025-02-06 12:29:31 +00:00
Roman Kelesidis
60c6057784
misc(workflow): Trying combine changelog workflow with checksums workflow (#1800)
* misc(workflow): Trying combine changelog workflow with checksums workflow

* Update changelog.yml

* Update changelog.yml
2025-02-06 15:29:11 +03:00
belomaxorka
be6be3a6a2 Update CHANGELOG.md 📖 2025-02-06 12:22:06 +00:00
Roman Kelesidis
4eb5a9adc6
misc(checksum workflow): Fixed incorrect file path (#1799) 2025-02-06 15:21:51 +03:00
belomaxorka
7c5c1ad955 Update CHANGELOG.md 📖 2025-02-06 12:18:34 +00:00
Roman Kelesidis
09cafc2285
misc(integrity checker): Some enhancements (#1797)
* misc(integrity checker): Some enhancements

* Update build_files_integrity.php

* Create checksum.yml

* Update checksum.yml
2025-02-06 15:18:18 +03:00
belomaxorka
1ffee77abe Update CHANGELOG.md 📖 2025-02-05 17:59:42 +00:00
Roman Kelesidis
8650ad30f4
misc: Minor improvements (#1796)
* misc: Minor improvements

* Update build_files_integrity.php
2025-02-05 20:59:23 +03:00
belomaxorka
c554f90c31 Update CHANGELOG.md 📖 2025-02-05 12:37:30 +00:00
Roman Kelesidis
3c0a1d5d00
fix(youtube player): Mixed content issue (#1795) 2025-02-05 15:37:12 +03:00
belomaxorka
30836fb8d5 Update CHANGELOG.md 📖 2025-02-04 17:47:59 +00:00
Roman Kelesidis
c95d414ef6
misc(emailer): Use constants for email types (#1794) 2025-02-04 20:47:44 +03:00
belomaxorka
95ccf9bf3e Update CHANGELOG.md 📖 2025-02-03 18:17:15 +00:00
Roman Kelesidis
8e4cd97734
misc(notify): Hide notify checkbox in topic for guests (#1793)
* misc(notify): Hide notify checkbox in topic for guests

* Update usercp_viewprofile.tpl
2025-02-03 21:16:56 +03:00
belomaxorka
fc265ce96e Update CHANGELOG.md 📖 2025-02-02 09:08:39 +00:00
Roman Kelesidis
4eb26ae37e
revert: fix: Null $bb_cfg['tp_instance_hash'] (#1792) 2025-02-02 12:08:24 +03:00
belomaxorka
856afe7f20 Update CHANGELOG.md 📖 2025-02-02 05:32:41 +00:00
Roman Kelesidis
602137b651
fix: Null $bb_cfg['tp_instance_hash'] (#1790) 2025-02-02 08:32:26 +03:00
belomaxorka
9eb0aede73 Update CHANGELOG.md 📖 2025-02-01 04:34:07 +00:00
Roman Kelesidis
6115900b76
misc(deploy action): Specify some missing params (#1789) 2025-02-01 07:33:51 +03:00
belomaxorka
a8e53cb37c Update CHANGELOG.md 📖 2025-02-01 04:26:57 +00:00
Roman Kelesidis
4333d6aca4
feat(workflow): Automated deploy actual changes to TorrentPier Demo (#1788)
* feat(workflow): Automated deploy actual changes to TorrentPier Demo

* Update deploy.yml

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2025-02-01 07:26:39 +03:00
belomaxorka
14714716b7 Update CHANGELOG.md 📖 2025-01-30 17:11:05 +00:00
Roman Kelesidis
387a25870a
misc(database): Use DEFAULT '' for privmsgs_subject (#1786)
* fix(posting): Exception on too long topic title

* Update mysql.sql
2025-01-30 20:10:47 +03:00
belomaxorka
0a423834a7 Update CHANGELOG.md 📖 2025-01-30 16:17:54 +00:00
Roman Kelesidis
b06e327cbb
fix(announcer): Null event exception (#1784) 2025-01-30 19:17:38 +03:00
belomaxorka
b51b226bde Update CHANGELOG.md 📖 2025-01-30 16:08:18 +00:00
Roman Kelesidis
314c592aff
feat(torrent): Bring back old torrent file naming (#1783)
* feat(torrent): Bring back old torrent file naming

* Update displaying_torrent.php

* Update Torrent.php
2025-01-30 19:08:00 +03:00
belomaxorka
d461b39e18 Update CHANGELOG.md 📖 2025-01-27 17:23:23 +00:00
Roman Kelesidis
e579b816b4
misc(readme): Improved installation guide (#1781)
* misc(readme): Improved installation guide

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2025-01-27 20:23:04 +03:00
belomaxorka
c96f2807e6 Update CHANGELOG.md 📖 2025-01-27 16:48:47 +00:00
Roman Kelesidis
e51e091593
feat(environment): Make configurable TP_HOST and TP_PORT (#1780) 2025-01-27 19:48:27 +03:00
belomaxorka
e4242fc6de Update CHANGELOG.md 📖 2025-01-27 16:24:50 +00:00
Roman Kelesidis
5b0ed02089
misc(readme): Minor improvements (#1779) 2025-01-27 19:24:32 +03:00
belomaxorka
08aa18fdfb Update CHANGELOG.md 📖 2025-01-27 16:23:15 +00:00
dependabot[bot]
420c92c0ad
Composer(deps): Bump jacklul/monolog-telegram from 3.1.0 to 3.2.0 (#1776)
Bumps [jacklul/monolog-telegram](https://github.com/jacklul/monolog-telegram) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/jacklul/monolog-telegram/releases)
- [Commits](https://github.com/jacklul/monolog-telegram/compare/3.1.0...3.2.0)

---
updated-dependencies:
- dependency-name: jacklul/monolog-telegram
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 19:22:51 +03:00
dependabot[bot]
a71609ba67
Composer(deps): Bump filp/whoops from 2.16.0 to 2.17.0 (#1777)
Bumps [filp/whoops](https://github.com/filp/whoops) from 2.16.0 to 2.17.0.
- [Changelog](https://github.com/filp/whoops/blob/master/CHANGELOG.md)
- [Commits](https://github.com/filp/whoops/compare/2.16.0...2.17.0)

---
updated-dependencies:
- dependency-name: filp/whoops
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-27 19:22:33 +03:00
belomaxorka
92344bb8de Update CHANGELOG.md 📖 2025-01-27 16:22:07 +00:00
Roman Kelesidis
970a0282e3
misc(readme): Added Caddy webserver (#1778) 2025-01-27 19:21:50 +03:00
belomaxorka
3f8107cedb Update CHANGELOG.md 📖 2025-01-26 13:45:40 +00:00
Roman Kelesidis
cd2786bb69
removed(environment): Extra DB_CONNECTION variable (#1775) 2025-01-26 16:45:22 +03:00
belomaxorka
d284b88a5c Update CHANGELOG.md 📖 2025-01-26 13:17:47 +00:00
Roman Kelesidis
268f79d725
misc(issue template): Improved Feature request template (#1774)
* misc(issue template): Improved `Feature request` template

* Update bug_report.yml

* Update feature---enhancement-request.md
2025-01-26 16:17:30 +03:00
belomaxorka
42435f5dd9 Update CHANGELOG.md 📖 2025-01-26 13:08:01 +00:00
Roman Kelesidis
53ebfef32c
misc(issue template): Improved Bug report template (#1773) 2025-01-26 16:07:41 +03:00
belomaxorka
6d0bea64d3 Update CHANGELOG.md 📖 2025-01-26 09:39:02 +00:00
Roman Kelesidis
d413c71718
feat(captcha): Added some new services 🤖 (#1771)
* feat(captcha): Added some new services

* Updated

* Updated

* Update GoogleCaptchaV2.php

* Updated

* Updated

* Create HCaptcha.php

* Update HCaptcha.php

* Update HCaptcha.php

* Create YandexSmartCaptcha.php

* Update YandexSmartCaptcha.php

* Create CloudflareTurnstileCaptcha.php

* Update CloudflareTurnstileCaptcha.php

* Update config.php

* Update functions.php

* Update functions.php

* Update functions.php

* Update GoogleCaptchaV3.php

* Update GoogleCaptchaV3.php

* Update HCaptcha.php

* Update YandexSmartCaptcha.php

* Update CloudflareTurnstileCaptcha.php

* Updated

* Updated

* Update functions.php

* Updated

* Updated

* Update HCaptcha.php

* Updated

* Updated

* Updated

* Update functions.php

* Update main.php

* Updated

* Update HCaptcha.php

* Update HCaptcha.php

* Update GoogleCaptchaV3.php

* Update GoogleCaptchaV3.php

* Updated

* Updated

* Update GoogleCaptchaV2.php

* Update GoogleCaptchaV2.php
2025-01-26 12:38:47 +03:00
belomaxorka
bf2509abe7 Update CHANGELOG.md 📖 2025-01-22 17:52:32 +00:00
Roman Kelesidis
7f9df35d3b
removed: Some unused tracker config variables (#1769) 2025-01-22 20:52:11 +03:00
belomaxorka
f4c618fe54 Update CHANGELOG.md 📖 2025-01-16 14:49:56 +00:00
Roman Kelesidis
0f091eb546
fix: Incorrect peer country flag (#1768) 2025-01-16 17:49:33 +03:00
belomaxorka
7a008a6fa0 Update CHANGELOG.md 📖 2025-01-16 13:29:31 +00:00
Roman Kelesidis
46288ec198
feat(announcer): Added some disallowed ports by default (#1767)
* feat(announcer): Added some disallowed ports by default

* Update announce.php
2025-01-16 16:29:04 +03:00
belomaxorka
a43085a659 Update CHANGELOG.md 📖 2025-01-16 13:09:55 +00:00
Roman Kelesidis
096bb5124f
feat(announcer): Added is_numeric() checking for some fields (#1766) 2025-01-16 16:09:34 +03:00
belomaxorka
b36e4274cc Update CHANGELOG.md 📖 2025-01-16 12:26:34 +00:00
Roman Kelesidis
6a19323138
feat(announcer): Added event verifying (#1765) 2025-01-16 15:25:58 +03:00
belomaxorka
e0456bb792 Update CHANGELOG.md 📖 2025-01-16 12:10:41 +00:00
Roman Kelesidis
7b64b50819
feat(announcer): Block browser by checking the User-Agent (#1764) 2025-01-16 15:10:10 +03:00
belomaxorka
bf0de87679 Update CHANGELOG.md 📖 2025-01-16 12:03:01 +00:00
Roman Kelesidis
a98f8f102a
feat(announcer): Block User-Agent strings that are too long (#1763)
* feat(announcer): Block `User-Agent` strings that are too long

* Update announce.php
2025-01-16 15:02:39 +03:00
belomaxorka
9b1dbbbcb6 Update CHANGELOG.md 📖 2025-01-16 11:50:52 +00:00
Roman Kelesidis
1bc7e09ddb
feat(announcer): Blocking all ports lower then 1024 (#1762)
* feat(announcer): Blocking all ports lower then `1024`

* Update announce.php
2025-01-16 14:50:28 +03:00
belomaxorka
a1e0170770 Update CHANGELOG.md 📖 2025-01-15 12:37:38 +00:00
Roman Kelesidis
8fcc62d2a2
feat(installer): Fully show non-installed extensions (#1761) 2025-01-15 15:37:20 +03:00
belomaxorka
14ed0ce4ed Update CHANGELOG.md 📖 2025-01-15 12:25:24 +00:00
Roman Kelesidis
6697410c1d
misc(copyright): Updated copyright year (#1760) 2025-01-15 15:25:04 +03:00
belomaxorka
1a4efec82d Update CHANGELOG.md 📖 2025-01-15 11:25:33 +00:00
Roman Kelesidis
7f31022cfc
feat(cache): Checking if extensions are installed (#1759)
* feat(cache): Checking if extensions are installed

* Updated

* Update APCu.php

* Update Sqlite.php

* Update Sqlite.php

* Update APCu.php

* Update Sqlite.php

* Update APCu.php

* Updated

* Update APCu.php

* Update Redis.php
2025-01-15 14:25:16 +03:00
belomaxorka
0aab040080 Update CHANGELOG.md 📖 2025-01-15 10:39:52 +00:00
Roman Kelesidis
48ab52ac86
feat(installer): More explanations (#1758) 2025-01-15 13:39:35 +03:00
belomaxorka
ae236f023c Update CHANGELOG.md 📖 2025-01-15 10:33:58 +00:00
Roman Kelesidis
4b0d270c89
feat: Used TORRENT_MIMETYPE constant instead of hardcoded string (#1757) 2025-01-15 13:33:42 +03:00
belomaxorka
1122c603dd Update CHANGELOG.md 📖 2025-01-14 08:26:50 +00:00
Roman Kelesidis
262b8872a5
feat(installer): Check Composer dependencies after installing (#1756) 2025-01-14 15:26:30 +07:00
belomaxorka
800e87e7c0 Update CHANGELOG.md 📖 2025-01-14 06:57:02 +00:00
Roman Kelesidis
55d4670483
misc(cliff): Changed emoji for dependencies (#1755) 2025-01-14 13:56:47 +07:00
belomaxorka
208c55a3d0 Update CHANGELOG.md 📖 2025-01-14 06:51:04 +00:00
dependabot[bot]
ce32031a0f
Composer(deps): Bump php-curl-class/php-curl-class from 11.0.0 to 11.0.1 (#1753)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 11.0.0 to 11.0.1.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/11.0.0...11.0.1)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2025-01-14 13:50:44 +07:00
belomaxorka
1482d09e42 Update CHANGELOG.md 📖 2025-01-14 06:50:15 +00:00
dependabot[bot]
f63d15c49e
Composer(deps): Bump bugsnag/bugsnag from 3.29.1 to 3.29.2 (#1752)
Bumps [bugsnag/bugsnag](https://github.com/bugsnag/bugsnag-php) from 3.29.1 to 3.29.2.
- [Release notes](https://github.com/bugsnag/bugsnag-php/releases)
- [Changelog](https://github.com/bugsnag/bugsnag-php/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bugsnag/bugsnag-php/compare/v3.29.1...v3.29.2)

---
updated-dependencies:
- dependency-name: bugsnag/bugsnag
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-14 13:50:05 +07:00
belomaxorka
d08a03637b Update CHANGELOG.md 📖 2025-01-14 06:49:59 +00:00
Roman Kelesidis
fd6f1f86a5
feat(installer): More explanations (#1754) 2025-01-14 13:49:42 +07:00
belomaxorka
820739a9ef Update CHANGELOG.md 📖 2025-01-14 06:19:50 +00:00
Roman Kelesidis
1f3b629e9c
fix(debug): Disabled Bugsnag reporting on local environment (#1751) 2025-01-14 13:19:32 +07:00
belomaxorka
a7c30973d9 Update CHANGELOG.md 📖 2025-01-14 06:11:33 +00:00
Roman Kelesidis
3e850ac724
docs: Minor improvements (#1750) 2025-01-14 13:11:19 +07:00
belomaxorka
21a4756ba3 Update CHANGELOG.md 📖 2025-01-14 06:07:26 +00:00
Roman Kelesidis
a1c519d938
fix(installer): Missing gd extension (#1749) 2025-01-14 13:07:10 +07:00
belomaxorka
12cb1ee2a6 Update CHANGELOG.md 📖 2025-01-11 10:25:41 +00:00
Roman Kelesidis
61e55925f3
misc(cliff): Use blockquote for notice (#1748) 2025-01-11 13:25:26 +03:00
belomaxorka
12aef379dd Update CHANGELOG.md 📖 2025-01-11 10:18:03 +00:00
Roman Kelesidis
4936af7d3d
misc(cliff): Fixed typo (#1747) 2025-01-11 13:17:47 +03:00
belomaxorka
f5b4d6bbf6 Update CHANGELOG.md 📖 2025-01-11 10:14:09 +00:00
Roman Kelesidis
85395be5e7
misc(cliff): Notice about previous changelog file (#1746) 2025-01-11 13:13:52 +03:00
belomaxorka
a36ab991fb Update CHANGELOG.md 📖 2025-01-11 10:07:29 +00:00
Roman Kelesidis
0d93b2c768
feat(installer): Create config.local.php on local environment (#1745)
* feat(installer): Create `config.local.php` on local environment

* Update install.php
2025-01-11 13:07:13 +03:00
belomaxorka
2465d7944a Update CHANGELOG.md 📖 2025-01-11 09:20:32 +00:00
Roman Kelesidis
4f1c7e40d8
fix(bb_die): HTML characters converting (#1744) 2025-01-11 12:20:15 +03:00
belomaxorka
1df215985e Update CHANGELOG.md 📖 2025-01-10 05:26:04 +00:00
Roman Kelesidis
254dca2b27 misc: Update cliff.toml 2025-01-10 12:25:42 +07:00
belomaxorka
7b342424a1 Update CHANGELOG.md 📖 2025-01-10 05:10:56 +00:00
Roman Kelesidis
e73d65011f
misc: Minor improvements (#1743) 2025-01-10 12:10:38 +07:00
belomaxorka
416529b4be Update CHANGELOG.md 📖 2025-01-10 03:26:50 +00:00
Roman Kelesidis
7e3601e63a
misc: Enabled $bb_cfg['integrity_check'] by defaul (#1742) 2025-01-10 10:26:32 +07:00
Roman Kelesidis
fe11f9ddd5 misc: change version in legacy-changes.txt 2025-01-10 10:07:14 +07:00
Roman Kelesidis
6eda91d0dc misc: removed changelog 2025-01-10 10:04:39 +07:00
Roman Kelesidis
685dd919b8 misc: v2.4.5-rc.2 release preparation 2025-01-10 10:03:19 +07:00
belomaxorka
89e791a208 Update CHANGELOG.md 📖 2025-01-10 02:58:41 +00:00
Roman Kelesidis
cfeec4f88e test: update cliff.tom 2025-01-10 09:58:19 +07:00
belomaxorka
1e3158dcb1 Update CHANGELOG.md 📖 2025-01-10 02:53:36 +00:00
Roman Kelesidis
a8473d186c Merge branch 'master' of https://github.com/torrentpier/torrentpier 2025-01-10 09:52:58 +07:00
Roman Kelesidis
44007d8d77 doc: renamed CHANGELOG_OLD.md to HISTORY.md 2025-01-10 09:52:47 +07:00
belomaxorka
2f5e4a931e Update CHANGELOG.md 📖 2025-01-10 02:50:13 +00:00
belomaxorka
c1dd214640 Update CHANGELOG.md 📖 2025-01-10 02:49:50 +00:00
belomaxorka
7e4a993165 Update CHANGELOG.md 📖 2025-01-10 02:49:32 +00:00
belomaxorka
e0a000d2e0 Update CHANGELOG.md 📖 2025-01-10 02:49:13 +00:00
belomaxorka
0e76c441df Update CHANGELOG.md 📖 2025-01-10 02:48:56 +00:00
Roman Kelesidis
4403f4bc3d misc(cliff): added tag_pattern param 2025-01-10 09:48:32 +07:00
belomaxorka
f3e68d5b3f Update CHANGELOG.md 📖 2025-01-10 02:28:47 +00:00
Roman Kelesidis
2846e508c7 Merge branch 'master' of https://github.com/torrentpier/torrentpier 2025-01-10 09:28:19 +07:00
Roman Kelesidis
4006d5a9f9 doc: update changelog 2025-01-10 09:27:37 +07:00
belomaxorka
67f6b7ebab Update CHANGELOG.md 📖 2025-01-10 02:26:25 +00:00
belomaxorka
46fc0b39ac Update CHANGELOG.md 📖 2025-01-10 02:26:04 +00:00
belomaxorka
501a41f2d5 Update CHANGELOG.md 📖 2025-01-10 02:25:43 +00:00
Roman Kelesidis
efcdb0deed misc: updated cliff.toml 2025-01-10 09:25:19 +07:00
belomaxorka
c6a14bbc17 Update CHANGELOG.md 📖 2025-01-10 01:36:07 +00:00
Roman Kelesidis
d50490caca Revert "Update changelog.yml"
This reverts commit 2406fc7d12.
2025-01-10 00:56:20 +07:00
Roman Kelesidis
2406fc7d12 Update changelog.yml 2025-01-10 00:54:43 +07:00
Roman Kelesidis
77bcff6652 Revert "Update changelog.yml"
This reverts commit 94b4d2812c.
2025-01-10 00:53:26 +07:00
Roman Kelesidis
afd5e8e3f2 Revert "Update changelog.yml"
This reverts commit 2484b2f335.
2025-01-10 00:53:19 +07:00
Roman Kelesidis
49d569659c Revert "Update changelog.yml"
This reverts commit 21849eca1f.
2025-01-10 00:53:11 +07:00
Roman Kelesidis
21849eca1f Update changelog.yml 2025-01-10 00:52:27 +07:00
Roman Kelesidis
2484b2f335 Update changelog.yml 2025-01-10 00:47:39 +07:00
Roman Kelesidis
94b4d2812c Update changelog.yml 2025-01-10 00:42:34 +07:00
Roman Kelesidis
e53d3b3b9b misc(night builder): Update upload-artifact to @v4 2025-01-10 00:30:47 +07:00
Roman Kelesidis
4b1755706a Update cliff.toml 2025-01-10 00:26:42 +07:00
Roman Kelesidis
d092db307b Update cliff.toml 2025-01-10 00:22:44 +07:00
Roman Kelesidis
8b0566d80a Revert "Update changelog.yml"
This reverts commit 63508ab786.
2025-01-10 00:10:00 +07:00
Roman Kelesidis
63508ab786 Update changelog.yml 2025-01-10 00:08:59 +07:00
Roman Kelesidis
04249391cc Update changelog.yml 2025-01-09 23:34:55 +07:00
Roman Kelesidis
1645a8622a Update changelog.yml 2025-01-09 23:34:14 +07:00
Roman Kelesidis
b83f7621ae Update changelog.yml 2025-01-09 22:43:47 +07:00
Roman Kelesidis
0051638a5d Update changelog generator 2025-01-09 22:33:56 +07:00
Roman Kelesidis
b94f7fb77e Update cliff.toml 2025-01-09 22:28:32 +07:00
Roman Kelesidis
11a85513d5 feat: Changelog generation 2025-01-09 22:23:11 +07:00
Roman Kelesidis
4cf78cc33d Update changelog.yml 2025-01-09 19:12:59 +07:00
Roman Kelesidis
3de586ddcf Update changelog.yml 2025-01-09 19:09:38 +07:00
Roman Kelesidis
f3ad932f30 Update changelog.yml 2025-01-09 19:05:01 +07:00
Roman Kelesidis
68d811fdc3 Update changelog.yml 2025-01-09 19:02:49 +07:00
Roman Kelesidis
a88dad5133 Update changelog.yml 2025-01-09 19:00:17 +07:00
Roman Kelesidis
3b023114e4 Update changelog.yml 2025-01-09 18:57:53 +07:00
Roman Kelesidis
f261b6e1f9 Update changelog.yml 2025-01-09 18:56:59 +07:00
Roman Kelesidis
28a132c713 Update changelog.yml 2025-01-09 18:56:15 +07:00
Roman Kelesidis
b8aaf5ac02 Update changelog.yml 2025-01-09 18:33:43 +07:00
Roman Kelesidis
ce2b13b1ae Update changelog.yml 2025-01-09 18:32:06 +07:00
Roman Kelesidis
19cd8f65f7 Changelog autogeneration update 2025-01-09 18:13:14 +07:00
Roman Kelesidis
026f27ee28 Added changelog auto generation 2025-01-09 17:54:40 +07:00
Roman Kelesidis
1457d739dc Update build.yml 2025-01-09 00:09:22 +07:00
Roman Kelesidis
dcb6446b46 build.yml: Fixed deprecated echo ::set-output` 2025-01-09 00:04:03 +07:00
Roman Kelesidis
1fbdf885a4 Update build.yml 2025-01-08 23:53:02 +07:00
Roman Kelesidis
8e3ad5f69f Update README.md 2025-01-08 23:03:09 +07:00
Roman Kelesidis
0f3e581699 Update build.yml 2025-01-08 22:59:37 +07:00
Roman Kelesidis
2c627f088b Update build.yml 2025-01-08 22:57:02 +07:00
Roman Kelesidis
024fbea0e5 Create nightly auto-builder 2025-01-08 22:38:24 +07:00
Roman Kelesidis
f4070215bc
Minor improvements (#1739)
* Minor improvements

* Update Ajax.php

* Update CHANGELOG.md
2025-01-08 15:34:08 +07:00
Roman Kelesidis
4cc6fa0e6c
Removed sitemap ping because is deprecated (#1738)
* Removed sitemap ping because is deprecated

* Update CHANGELOG.md

* Update Sitemap.php

* Update main.php

* Update config.php

* Update sitemap.php

* Updated

* Update admin_sitemap.tpl

* Update admin_sitemap.tpl

* Update admin_sitemap.tpl
2025-01-08 14:16:39 +07:00
Roman Kelesidis
7a84cdd5c3
Added IndexNow support 🤖 (#1736)
* Added IndexNow support 🤖

* Update CHANGELOG.md

* Updated

* Update IndexNowHelper.php

* Update board_maintenance.php

* Update board_maintenance.php

* Updated

* Updated

* Update Post.php

* Updated

* Update Post.php

* Update IndexNow.php

* Updated

* Updated

* Update config.php

* Update config.php
2025-01-06 23:32:58 +07:00
Roman Kelesidis
e75d2859c3
Replaced some string functions to mbstring alternatives (#1735)
* Replaced some string functions to mbstring alternatives

* Update CHANGELOG.md

* Update admin_attach_cp.php

* Update CHANGELOG.md
2025-01-05 14:42:03 +07:00
Roman Kelesidis
e5aaaf4abd
Use DEFAULT_CHARSET constant instead of hardcoded string (#1734)
* Use `DEFAULT_CHARSET` constant instead of hardcoded string

* Update CHANGELOG.md

* Update defines.php

* Update info.php

* Updated

* Update page_header.tpl

* Update index.tpl

* Update index.tpl
2025-01-05 00:57:20 +07:00
Roman Kelesidis
616a19351f
Replaced some html_entity_decode to engine's built-in function (#1733)
* Replaced some html_entity_decode to engine's built-in function

* Updated
2025-01-05 00:19:14 +07:00
Roman Kelesidis
fd7dc7ac95
Created VersionHelper.php (#1731)
* Created `VersionHelper.php`

* Update VersionHelper.php

* Update CHANGELOG.md
2025-01-02 12:34:13 +07:00
Roman Kelesidis
768837608b
Minor improvements (#1730)
* Minor improvements

* Updated

* Updated

* Update common.php

* Update common.php

* Updated

* Revert "Updated"

This reverts commit 204d196ba5.

* Revert "Update common.php"

This reverts commit eb24dc1c85.

* Updated

* Updated

* Update build_check_updates.php

* Update build_check_updates.php

* Update common.php

* Update build_check_updates.php

* Updated

* Update CHANGELOG.md
2025-01-01 20:52:34 +07:00
Roman Kelesidis
4a076a09cc
Minor improvements (#1728)
* Minor improvements

* Update CHANGELOG.md

* Update filelist.tpl

* Update Torrent.php
2025-01-01 03:19:54 +07:00
Roman Kelesidis
2e5b157ede
Drop Ocelot announcer support 🫡 (#1727)
* Drop Ocelot announcer support

* Update tr_complete_count.php

* Delete ocelot.sql

* Update Torrent.php

* Update Torrent.php

* Update Torrent.php

* Update Torrent.php

* Update CHANGELOG.md

* Update tr_make_snapshot.php

* Update tr_make_snapshot.php

* Update tr_make_snapshot.php

* Update tr_make_snapshot.php
2025-01-01 00:21:06 +07:00
Roman Kelesidis
ba704efba2
Some updater improvements (#1725)
* Some updater improvements

* Update CHANGELOG.md

* Updated

* Updated

* Update index.tpl
2024-12-31 13:07:19 +07:00
Roman Kelesidis
11f5b50760
Added TorrentPier instance hash generation (#1726)
* Added `TorrentPier instance hash` generation

* Update CHANGELOG.md
2024-12-31 12:16:59 +07:00
Roman Kelesidis
8aa1bd77d7
Added m4a extension support in M3U playback (#1724)
* Added `m4a` extension support in M3U playback

* Update CHANGELOG.md
2024-12-29 23:28:09 +07:00
Roman Kelesidis
b8343598ca Update CHANGELOG.md 2024-12-29 11:10:03 +07:00
dependabot[bot]
88c964219e
Composer(deps): Bump egulias/email-validator from 4.0.2 to 4.0.3 (#1723)
Bumps [egulias/email-validator](https://github.com/egulias/EmailValidator) from 4.0.2 to 4.0.3.
- [Release notes](https://github.com/egulias/EmailValidator/releases)
- [Commits](https://github.com/egulias/EmailValidator/compare/4.0.2...4.0.3)

---
updated-dependencies:
- dependency-name: egulias/email-validator
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-27 14:01:56 +07:00
Roman Kelesidis
1914e7be30
Fixed issues with searching by username (#1722)
* Fixed issues with searching by username

* Update admin_user_search.php

* Update CHANGELOG.md
2024-12-21 19:15:13 +07:00
Roman Kelesidis
a6035f0cc1
Fixed searching by username in memberlist.php (#1721)
* Fixed searching by username in `memberlist.php`

* Update memberlist.php

* Update memberlist.php

* Update CHANGELOG.md

* Update memberlist.php
2024-12-21 19:05:32 +07:00
Roman Kelesidis
70ecc3462d
Minor improvements (#1720)
* Minor improvements

* Update CHANGELOG.md
2024-12-21 15:42:33 +07:00
Roman Kelesidis
edab2300d3
Minor improments (#1719)
* Minor improments

* Update CHANGELOG.md

* Updated

* Update common.php
2024-12-20 20:29:06 +07:00
Roman Kelesidis
8a0cd5cb84
[PHP 8.4] Fixed some deprecations (#1718)
* [PHP 8.4] Fixed some deprecations

* Update Post.php

* Update Common.php

* Update CHANGELOG.md

* Updated

* Updated
2024-12-19 00:37:28 +07:00
Roman Kelesidis
86e4b04333
Minor improvements (#1717)
* Minor improvements

* Update callseed.php

* Update CHANGELOG.md

* Update index_data.php
2024-12-19 00:06:59 +07:00
Roman Kelesidis
1d51a2af84 Merge branch 'master' of https://github.com/torrentpier/torrentpier 2024-12-14 20:12:20 +07:00
Roman Kelesidis
b6267ba4fd Update CHANGELOG.md 2024-12-14 20:12:04 +07:00
Yury Pikhtarev
5b19aa003a
New Crowdin updates (#1716)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-12-14 20:10:43 +07:00
Yury Pikhtarev
4046d5c141
New Crowdin updates (#1714)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-12-14 15:42:11 +07:00
Roman Kelesidis
ce138921d8
Minor improvements (#1715)
* Minor improvements

* Updated

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-12-14 15:38:33 +07:00
Roman Kelesidis
b27fa94ee8
Minor improvements (#1713)
* Minor improvements

* Update init_bb.php

* Updated

* Revert "Updated"

This reverts commit af83788c22.

* Update CHANGELOG.md
2024-12-14 15:33:41 +07:00
Roman Kelesidis
fd951a27fa
Show torrent's announcers list in filelist.php page (#1708)
* Show torrent's announcers list in `filelist.php` page

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update filelist.php

* Updated

* Updated

* Updated

* Updated

* Updated

* Update filelist.tpl
2024-12-14 15:20:44 +07:00
Roman Kelesidis
60899a0184
[Configurable] Show magnet-links for guests (#1712)
* [Configurable] Show magnet links for guests

* Update mysql.sql

* Update legacy-changes.txt

* Updated

* Update main.php

* Update functions.php

* Updated

* Update viewforum.tpl

* Update viewtopic_attach.tpl

* Update viewforum.tpl

* Update CHANGELOG.md
2024-12-14 15:03:28 +07:00
Roman Kelesidis
ea1e533a5a
Set cursor: pointer; for input[type=file] (#1711)
* Set `cursor: pointer;` for `input[type=file]`

* Update CHANGELOG.md
2024-12-13 18:00:30 +07:00
Roman Kelesidis
ee8751076a
Set cursor: pointer; for buttons, inputs (buttons) (#1710)
* Set `cursor: pointer;` for buttons, inputs (buttons)

* Update CHANGELOG.md
2024-12-13 17:56:44 +07:00
Roman Kelesidis
e10341355b Removed techstack 2024-12-12 23:07:43 +07:00
Yury Pikhtarev
33cb03e8ce
New translations main.php (Ukrainian) (#1706) 2024-12-10 00:05:53 +07:00
Roman Kelesidis
6ecbb7284a
Minor improvements (#1705)
* Minor improvements

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-12-10 00:05:36 +07:00
Yury Pikhtarev
d9c07424ef
New Crowdin updates (#1704)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations admin_send_email.html (Japanese)

* New translations admin_send_email.html (Chinese Traditional)

* New translations admin_send_email.html (Portuguese, Brazilian)

* New translations group_added.html (Spanish)

* New translations group_added.html (Japanese)

* New translations group_added.html (Chinese Traditional)

* New translations group_added.html (Thai)

* New translations group_approved.html (Spanish)

* New translations group_approved.html (Japanese)

* New translations group_approved.html (Chinese Traditional)

* New translations group_approved.html (Thai)

* New translations group_request.html (Chinese Traditional)

* New translations privmsg_notify.html (Spanish)

* New translations privmsg_notify.html (Japanese)

* New translations privmsg_notify.html (Chinese Traditional)

* New translations profile_send_email.html (Spanish)

* New translations profile_send_email.html (Japanese)

* New translations profile_send_email.html (Thai)

* New translations topic_notify.html (Spanish)

* New translations topic_notify.html (Chinese Traditional)

* New translations topic_notify.html (Thai)

* New translations user_activate.html (Spanish)

* New translations user_activate.html (Chinese Traditional)

* New translations user_activate_passwd.html (Spanish)

* New translations user_activate_passwd.html (Japanese)

* New translations user_activate_passwd.html (Chinese Traditional)

* New translations user_activate_passwd.html (Portuguese, Brazilian)

* New translations user_activate_passwd.html (Thai)

* New translations user_welcome.html (German)

* New translations user_welcome.html (Chinese Traditional)

* New translations user_welcome.html (Portuguese, Brazilian)

* New translations user_welcome.html (Thai)

* New translations user_welcome_inactive.html (Spanish)

* New translations user_welcome_inactive.html (Chinese Traditional)

* New translations user_welcome_inactive.html (Portuguese, Brazilian)

* New translations user_welcome_inactive.html (Thai)

* New translations copyright_holders.html (Chinese Traditional)

* New translations copyright_holders.html (Thai)

* New translations user_agreement.html (Thai)

* New translations main.php (Russian)

* Updated

---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2024-12-09 22:55:46 +07:00
Roman Kelesidis
07f209156b Revert "Update main.php"
This reverts commit 70c0e5b7d9.
2024-12-09 17:58:26 +07:00
Roman Kelesidis
70c0e5b7d9
Update main.php 2024-12-09 01:39:07 +07:00
Roman Kelesidis
f1bf873be3 Release v2.4.5-rc.1 🦕 2024-12-09 00:08:54 +07:00
Roman Kelesidis
e7b284ef72
Minor improvements (#1703)
* Minor improvements

* Update CHANGELOG.md
2024-12-09 00:01:27 +07:00
Roman Kelesidis
9b15b5e0f1 Update CHANGELOG.md 2024-12-08 22:35:42 +07:00
Roman Kelesidis
27be6863fc Revert "Datastore improvements" 2024-12-08 22:29:55 +07:00
Roman Kelesidis
b8b52f4d05
Minor improvements (#1702)
* Minor improvements

* Update README.md

* Update legacy-changes.txt

* Update legacy-changes.txt

* Update CHANGELOG.md
2024-12-08 22:19:48 +07:00
Roman Kelesidis
da5019cf81 Updated 2024-12-08 21:33:06 +07:00
Roman Kelesidis
f71deed544
Bring back DBG_USER (old debug method), fixed bugsnag handler (#1701)
* Rollback some changes

* Updated

* Updated

* Updated

* Update SqlDb.php

* Updated

* Update Ajax.php

* Update Redis.php

* Update Redis.php

* Update Memcached.php

* Update File.php

* Updated

* Updated

* Update CHANGELOG.md

* Update Sqlite.php

* Update SqlDb.php

* Update common.php

* Update Dev.php

* Update config.php

* Update User.php

* Update defines.php

* Updated

* Update User.php

* Update User.php

* Update User.php

* Update User.php

* Update config.php

* Update Dev.php

* Updated

* Update Dev.php

* Update Dev.php

* Update SqlDb.php

* Revert "Update SqlDb.php"

This reverts commit d7c05d85ec.

* Update Dev.php

* Update Dev.php

* Update Dev.php

* Update Dev.php

* Update CHANGELOG.md
2024-12-08 21:28:35 +07:00
Roman Kelesidis
83b465ddd2
Merged some fixes from new-attachments branch (#1700)
* Merged some fixes from `new-attachments` branch

* Update CHANGELOG.md
2024-12-07 20:29:21 +07:00
Roman Kelesidis
24e1658078 Update CHANGELOG.md 2024-12-07 12:37:07 +07:00
dependabot[bot]
f2ec1a1dfa
Composer(deps): Bump monolog/monolog from 3.8.0 to 3.8.1 (#1699)
Bumps [monolog/monolog](https://github.com/Seldaek/monolog) from 3.8.0 to 3.8.1.
- [Release notes](https://github.com/Seldaek/monolog/releases)
- [Changelog](https://github.com/Seldaek/monolog/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Seldaek/monolog/compare/3.8.0...3.8.1)

---
updated-dependencies:
- dependency-name: monolog/monolog
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-06 13:23:24 +07:00
Roman Kelesidis
4382ec514b
Added new constant TOR_TYPE_DEFAULT (#1698)
* Added new constant `TOR_TYPE_DEFAULT`

* Update tracker.php

* Update CHANGELOG.md
2024-12-02 23:43:36 +07:00
Roman Kelesidis
2ae9f72c1b
Make get_torrent_info() as public method for re-use (#1697)
* Make `get_torrent_info()` as public method for re-use

* Update CHANGELOG.md
2024-12-02 23:11:44 +07:00
Roman Kelesidis
47e8c9a7ee
Show torrent unregister action in log actions (#1696)
* Show torrent unregister action in log actions

* Update LogAction.php

* Update CHANGELOG.md

* Update main.php

* Update main.php
2024-12-02 18:11:52 +07:00
Roman Kelesidis
6f59d5fea6
Show torrent type (gold / silver) changes in actions log (#1689)
* Minor improvements

* Updated

* Update mod_action.php

* Update modcp.php

* Update change_torrent.php

* Updated

* Update change_torrent.php

* Update main.php

* Updated

* Update LogAction.php

* Update LogAction.php

* Update LogAction.php

* Update main.php

* Update change_torrent.php

* Update change_torrent.php

* Update change_torrent.php

* Updated

* Update CHANGELOG.md

* Update change_torrent.php
2024-12-02 01:22:58 +07:00
Roman Kelesidis
58e6ffac7f
Show torrent status changes in actions log (#1688)
* Show torrent status changes in actions log

* Updated

* Updated

* Update mod_action.php

* Update CHANGELOG.md
2024-12-01 22:11:37 +07:00
Roman Kelesidis
66e7db25bf
Fixed empty topic_id in log actions after topic rename (#1687)
* Fixed empty topic_id in log actions after topic rename

* Update CHANGELOG.md
2024-12-01 15:17:40 +07:00
Roman Kelesidis
46af8af60a Update checksums.md5 2024-11-28 17:30:30 +07:00
Roman Kelesidis
084295c57a
Minor improvements (#1686)
* Minor improvements

* Update index.php

* Update CHANGELOG.md
2024-11-28 17:24:15 +07:00
Roman Kelesidis
68ef591b82
Minor improvements (#1685)
* Minor improvements

* Update ffprobe_info.php

* Update ffprobe_info.php

* Update CHANGELOG.md
2024-11-28 01:07:44 +07:00
Roman Kelesidis
0cabfb5294
Changed database encoding to utf8mb4_unicode_ci (#1684)
* Minor improvements

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update CHANGELOG.md

* Update install.php

* Update install.php

* Updated

* Update CHANGELOG.md
2024-11-27 23:13:15 +07:00
Roman Kelesidis
7474635aed
Minor improvements (#1683)
* Minor improvements

* Update CHANGELOG.md

* Updated

* Updated

* Update page_header.tpl

* Update page_header.tpl

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2024-11-25 20:05:43 +07:00
dependabot[bot]
5052a8fa97
Composer(deps): Bump claviska/simpleimage from 4.2.0 to 4.2.1 (#1682)
Bumps [claviska/simpleimage](https://github.com/claviska/SimpleImage) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/claviska/SimpleImage/releases)
- [Commits](https://github.com/claviska/SimpleImage/compare/4.2.0...4.2.1)

---
updated-dependencies:
- dependency-name: claviska/simpleimage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 14:43:05 +07:00
Roman Kelesidis
a09a57074d Update README.md 2024-11-24 14:39:23 +07:00
Roman Kelesidis
a5793a5b3f Update README.md 2024-11-24 14:30:33 +07:00
Roman Kelesidis
3a1a4a7967 Update README.md 2024-11-24 14:28:13 +07:00
Roman Kelesidis
0a033cb24e Update README.md 2024-11-24 14:25:51 +07:00
Roman Kelesidis
82e08ae48a
Update .env.example 2024-11-24 12:48:47 +07:00
Roman Kelesidis
ced34efb9f
Minor improvements (#1681)
* Minor improvements

* Update CHANGELOG.md
2024-11-22 16:19:37 +07:00
Roman Kelesidis
e9fad73bca
Minor improvements (#1679)
* Minor improvements

* Update viewtopic.php

* Revert "Update viewtopic.php"

This reverts commit 9cff1d7758.

* Update viewtopic.php

* Update CHANGELOG.md
2024-11-18 23:05:41 +07:00
Roman Kelesidis
9c39ab77d1
Update .gitignore 2024-11-17 14:01:08 +07:00
Roman Kelesidis
5eafc5918d Update CHANGELOG.md 2024-11-14 21:23:07 +07:00
dependabot[bot]
12d9269a9e
Composer(deps): Bump monolog/monolog from 3.7.0 to 3.8.0 (#1677)
Bumps [monolog/monolog](https://github.com/Seldaek/monolog) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/Seldaek/monolog/releases)
- [Changelog](https://github.com/Seldaek/monolog/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Seldaek/monolog/compare/3.7.0...3.8.0)

---
updated-dependencies:
- dependency-name: monolog/monolog
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-14 13:22:28 +07:00
Roman Kelesidis
4dcee993cc
Minor improvements (#1676)
* Minor improvements

* Update functions.php

* Update common.php

* Update init_bb.php

* Updated

* Update build_files_integrity.php

* Updated

* Update CHANGELOG.md

* Update legacy-changes.txt

* Update legacy-changes.txt

* Update legacy-changes.txt

* Update .gitignore

* Update legacy-changes.txt
2024-11-11 01:17:35 +07:00
Roman Kelesidis
e1f03e64dd
Minor improvements (#1675)
* Minor improvements

* Update

* Updated

* Update

* Updated

* Update viewtopic.tpl

* Update functions.php

* Update functions.php

* Update functions.php

* Update functions.php

* Update functions.php

* Update functions.php

* Update functions.php

* Update functions.php

* Update functions.php

* Update CHANGELOG.md
2024-11-10 00:02:43 +07:00
Roman Kelesidis
c5b3d63221 Update README.md 2024-11-09 22:47:00 +07:00
Roman Kelesidis
0aaff66ef3
Minor improvements (#1674)
* Minor improvements

* Update CHANGELOG.md
2024-11-09 21:38:00 +07:00
Roman Kelesidis
baa1d32f94 Revert "Fixed incorrect page width on mobile devices" 2024-11-09 17:12:54 +07:00
Roman Kelesidis
a50c6601b4
Fixed broken torrent stats displaying (Part 2) (#1673)
* Fixed broken torrent stats displaying (Part 2)

* Update CHANGELOG.md

* Updated

* Revert "Updated"

This reverts commit e816be32df.

* Updated

* Update mysql.sql

* Update mysql.sql

* Revert "Fixed broken torrent stats displaying (Part 2)"

This reverts commit ce071d9fcf.

* Update Torrent.php

* Reapply "Fixed broken torrent stats displaying (Part 2)"

This reverts commit 3f713b8a45.

* Update register.php

* Updated
2024-11-09 13:27:37 +07:00
Roman Kelesidis
64409e607d
Fixed broken torrent stats displaying (#1672)
* Fixed broken torrent stats displaying

* Updated

* Update CHANGELOG.md
2024-11-09 00:01:30 +07:00
Roman Kelesidis
d9a8adbaaf
Invites: Permanent invites feature (#1670)
* Invites: Permanent invites feature

* Update config.php

* Update config.php

* Update CHANGELOG.md

* Update config.php
2024-11-05 00:06:09 +07:00
Roman Kelesidis
7a209bc615
Updated modern-normalize to v3.0.1 (#1669)
* Updated `modern-normalize` to `v3.0.1`

* Update CHANGELOG.md
2024-10-29 14:21:08 +07:00
Roman Kelesidis
055a6e53ca
Minor improvements (#1658)
* Minor improvements

* Update install.php

* Update install.php

* Update .gitignore

* Update admin_cron.php

* Update Upload.php

* Update CHANGELOG.md
2024-10-19 11:36:05 +07:00
Roman Kelesidis
0587f7a035
WIP: Added avif images support 🌄 (#1660)
* WIP: Added avif images support

* Update CHANGELOG.md

* Update admin_ranks.php
2024-10-19 11:25:29 +07:00
Roman Kelesidis
04e1adf4ba
Improved BitTorrent clients ban functionality (#1657)
* Minor improvements

* Update config.php

* Update config.php

* Update config.php

* Update config.php

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update announce.php

* Update main.php

* Update CronHelper.php

* Updated

* Update CHANGELOG.md

* Update announce.php

* Revert "Update announce.php"

This reverts commit 595784acd6.

* Update announce.php

* Update announce.php
2024-10-14 20:41:22 +07:00
Roman Kelesidis
8e43fde956
Fixed incorrect page width on mobile devices (#1653)
* Fixed incorrect page width on mobile devices

* Update top.css
2024-10-09 23:07:31 +07:00
dependabot[bot]
d6aff3bf95
Composer(deps): Bump league/flysystem from 3.29.0 to 3.29.1 (#1656)
Bumps [league/flysystem](https://github.com/thephpleague/flysystem) from 3.29.0 to 3.29.1.
- [Release notes](https://github.com/thephpleague/flysystem/releases)
- [Changelog](https://github.com/thephpleague/flysystem/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/thephpleague/flysystem/compare/3.29.0...3.29.1)

---
updated-dependencies:
- dependency-name: league/flysystem
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-09 22:40:02 +07:00
Roman Kelesidis
04fff8ed4e Update CHANGELOG.md 2024-10-08 20:21:48 +07:00
Yury Pikhtarev
a510b4f676
New Crowdin updates (#1655)
* New translations main.php (Russian)

* New translations main.php (Ukrainian)

* New translations main.php (Ukrainian)
2024-10-08 19:53:43 +07:00
Yury Pikhtarev
67b82ed29b
New Crowdin updates (#1654)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-10-05 14:42:31 +07:00
Roman Kelesidis
408635cd52
Added ability to set country name manually (#1652)
* Minor improvements

* Updated

* Revert "Updated"

This reverts commit 927e085cc0.

* Update CHANGELOG.md

* Update usercp_register.tpl

* Updated

* Updated

* Updated

* Update usercp_register.tpl

* Update usercp_register.tpl

* Update usercp_register.tpl

* Updated

* Update CHANGELOG.md

* Update usercp_register.tpl
2024-10-05 14:02:35 +07:00
Roman Kelesidis
ca81d99a71
Minor improvements (#1651)
* Minor improvements

* Update main.js

* Update main.js

* Update CHANGELOG.md
2024-10-03 12:51:27 +07:00
dependabot[bot]
cd339412cf
Composer(deps): Bump league/flysystem from 3.28.0 to 3.29.0 (#1650)
Bumps [league/flysystem](https://github.com/thephpleague/flysystem) from 3.28.0 to 3.29.0.
- [Release notes](https://github.com/thephpleague/flysystem/releases)
- [Changelog](https://github.com/thephpleague/flysystem/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/thephpleague/flysystem/compare/3.28.0...3.29.0)

---
updated-dependencies:
- dependency-name: league/flysystem
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-03 12:38:09 +07:00
Roman Kelesidis
3e9f4006c4 Revert "Refactoring: Created constants for datetime values (#1648)"
This reverts commit 6eca29714a.
2024-09-27 18:32:23 +07:00
Roman Kelesidis
6eca29714a
Refactoring: Created constants for datetime values (#1648)
* Refactoring: Created constants for datetime values

* Updated

* Updated

* Update tracker.php

* Update tracker.php

* Update index.php

* Update admin_log.php

* Update viewtopic.php

* Updated

* Update Poll.php

* Updated

* Updated

* Update viewtopic.php

* Update User.php

* Update privmsg.php

* Update poll.php

* Update tr_make_snapshot.php

* Update displaying_torrent.php

* Update CHANGELOG.md
2024-09-27 18:22:41 +07:00
Roman Kelesidis
4fe467e64a Update CHANGELOG.md 2024-09-26 19:20:09 +07:00
dependabot[bot]
7f05b01439
Composer(deps): Bump filp/whoops from 2.15.4 to 2.16.0 (#1647)
Bumps [filp/whoops](https://github.com/filp/whoops) from 2.15.4 to 2.16.0.
- [Changelog](https://github.com/filp/whoops/blob/master/CHANGELOG.md)
- [Commits](https://github.com/filp/whoops/compare/2.15.4...2.16.0)

---
updated-dependencies:
- dependency-name: filp/whoops
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-26 19:15:29 +07:00
dependabot[bot]
d9d01136e4
Composer(deps): Bump arokettu/bencode from 4.2.1 to 4.3.0 (#1646)
Bumps [arokettu/bencode](https://github.com/arokettu/bencode) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/arokettu/bencode/releases)
- [Changelog](https://github.com/arokettu/bencode/blob/master/CHANGELOG.md)
- [Commits](https://github.com/arokettu/bencode/compare/4.2.1...4.3.0)

---
updated-dependencies:
- dependency-name: arokettu/bencode
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-26 19:15:08 +07:00
Roman Kelesidis
a3e48e3e92
Minor improvements (#1641)
* Minor improvements

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update memberlist.php
2024-09-24 17:04:49 +07:00
Yury Pikhtarev
8dca16bd50
New translations main.php (Russian) (#1640) 2024-09-22 13:27:35 +07:00
Roman Kelesidis
edce8af85c Update CHANGELOG.md 2024-09-22 12:40:07 +07:00
Yury Pikhtarev
99970df0f5
New Crowdin updates (#1639)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-09-22 12:38:54 +07:00
Roman Kelesidis
29eb01b958
Disabled resizing for textarea tag (#1638)
* Disabled resizing for textarea tag

* Update CHANGELOG.md
2024-09-19 21:12:03 +07:00
Roman Kelesidis
001c210217
Minor improvements (#1633)
* Minor improvements

* Update CHANGELOG.md

* Update filelist.php

* Update ffprobe_info.php

* Updated

* Update announce.php

* Update announce.php

* Update ffprobe_info.php

* Updated

* Update ffprobe_info.php

* Update ffprobe_info.php

* Updated

* Update common.php

* Update common.php

* Revert "Update common.php"

This reverts commit 3793263ff0.

* Revert "Update common.php"

This reverts commit 3911e72dba.

* Update common.php

* Updated

* Update playback_m3u.tpl

* Update ffprobe_info.php

* Update playback_m3u.php

* Update dl.php

* Update dl.php

* Updated

* Update dl.php

* Update playback_m3u.php

* Revert "Update playback_m3u.php"

This reverts commit 8cf6e9a041.

* Revert "Update dl.php"

This reverts commit 7c11cc385b.

* Revert "Updated"

This reverts commit 9c004f0651.

* Revert "Update dl.php"

This reverts commit 26d5feffa5.

* Revert "Update dl.php"

This reverts commit 261f8d3e62.

* Update playback_m3u.php

* Updated

* Update dl.php

* Update dl.php

* Update CHANGELOG.md
2024-09-19 20:57:36 +07:00
dependabot[bot]
f5a9490dfe
Composer(deps): Bump josantonius/cookie from 2.0.6 to 2.0.7 (#1637)
Bumps [josantonius/cookie](https://github.com/josantonius/php-cookie) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/josantonius/php-cookie/releases)
- [Changelog](https://github.com/josantonius/php-cookie/blob/main/CHANGELOG.md)
- [Commits](https://github.com/josantonius/php-cookie/compare/v2.0.6...v2.0.7)

---
updated-dependencies:
- dependency-name: josantonius/cookie
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-12 19:12:04 +07:00
Roman Kelesidis
13107d1edd Update CHANGELOG.md 2024-09-01 16:00:00 +07:00
Yury Pikhtarev
c5f1a1a1fb
New translations main.php (Russian) (#1632) 2024-09-01 02:27:55 +07:00
Yury Pikhtarev
c68236439f
New Crowdin updates (#1631)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-09-01 01:29:35 +07:00
Roman Kelesidis
383fa7f9b6
Getting ffprobe data from TorrServer API (#1628)
* Minor improvements

* Update posting_tpl.tpl

* Updated

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Updated

* Updated

* Updated

* Update playback_m3u.php

* Update init_bb.php

* Updated

* Update playback_m3u.php

* Update displaying_torrent.php

* Updated

* Update playback_m3u.tpl

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Updated

* Update playback_m3u.php

* Update playback_m3u.php

* Update playback_m3u.php

* Updated

* Updated

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update playback_m3u.php

* Updated

* Updated

* Update playback_m3u.php

* Update playback_m3u.tpl

* Update playback_m3u.php

* Updated

* Update playback_m3u.php

* Updated

* Update playback_m3u.php

* Update playback_m3u.tpl

* Updated

* Update playback_m3u.php

* Update playback_m3u.tpl

* Updated

* Updated

* Update playback_m3u.php

* Update playback_m3u.php

* Update playback_m3u.php

* Update playback_m3u.php

* Update playback_m3u.php

* Update playback_m3u.php

* Updated

* Updated

* Update TorrServerAPI.php

* Revert "Update TorrServerAPI.php"

This reverts commit 9726d0d019.

* Update Ajax.php

* Updated

* Update playback_m3u.tpl

* Update playback_m3u.tpl

* Update playback_m3u.tpl

* Update playback_m3u.php

* Updated

* Updated

* Updated

* Updated

* Update playback_m3u.tpl

* Updated

* Updated

* Revert "Updated"

This reverts commit 5431f1fa51.

* Reapply "Updated"

This reverts commit 61c49dba62.

* Updated

* Update playback_m3u.tpl

* Update TorrServerAPI.php

* Updated

* Update playback_m3u.tpl

* Updated

* Update playback_m3u.php

* Update playback_m3u.tpl

* Update playback_m3u.tpl

* Update playback_m3u.php

* Updated

* Updated

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update Ajax.php

* Update ffprobe_info.php

* Update ffprobe_info.php

* Update ffprobe_info.php

* Update TorrServerAPI.php

* Update CHANGELOG.md
2024-09-01 00:25:38 +07:00
Yury Pikhtarev
4472a3e295
New translations main.php (Russian) (#1630) 2024-08-31 02:15:43 +07:00
Roman Kelesidis
00e73d0db1 Update CHANGELOG.md 2024-08-30 23:33:15 +07:00
Yury Pikhtarev
a52deb045e
New Crowdin updates (#1629)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-08-30 23:28:35 +07:00
Roman Kelesidis
2657056ead
Minor improvements (#1627)
* Minor improvements

* Update playback_m3u.tpl

* Update playback_m3u.php

* Updated

* Update CHANGELOG.md
2024-08-30 22:10:25 +07:00
Roman Kelesidis
d5557c4a43 Update CHANGELOG.md 2024-08-30 14:47:09 +07:00
Yury Pikhtarev
f4336d4a8a
New translations main.php (Russian) (#1626) 2024-08-29 23:15:41 +07:00
Yury Pikhtarev
4236a23369
New Crowdin updates (#1625)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-08-29 22:11:41 +07:00
Roman Kelesidis
c3d6d62a82
Improved TorrServer integration (#1624)
* Improved TorrServer integration

* Updated

* Update showm3u.php

* Update showm3u.tpl

* Updated

* Update showm3u.php

* Updated

* Updated

* Updated

* Update showm3u.php

* Update showm3u.tpl

* Update main.php

* Updated

* Update show_m3u.php

* Update

* Update show_m3u.tpl

* Update show_m3u.tpl

* Updated

* Updated

* Update displaying_torrent.php

* Update show_m3u.php

* Updated

* Updated

* Update show_m3u.tpl

* Updated

* Update show_m3u.php

* Updated

* Update show_m3u.php

* Update show_m3u.php

* Update show_m3u.php

* Updated

* Updated

* Update show_m3u.tpl

* Updated

* Update show_m3u.tpl

* Update main.php

* Updated

* Updated

* Updated

* Update playback_m3u.php

* Update playback_m3u.tpl

* Update playback_m3u.tpl

* Update CHANGELOG.md
2024-08-29 21:51:30 +07:00
Roman Kelesidis
658bfe24b5
Some improvements for TorrServer API (#1623)
* Some improvements for TorrServer API

* Update CHANGELOG.md
2024-08-29 01:06:29 +07:00
Roman Kelesidis
accc24a969 Update README.md 2024-08-28 23:11:14 +07:00
Roman Kelesidis
47255b303d Update README.md 2024-08-28 23:06:16 +07:00
Roman Kelesidis
535d02a611 Update README.md 2024-08-28 23:01:25 +07:00
Roman Kelesidis
db7bd79867 Update README.md 2024-08-28 22:59:15 +07:00
Roman Kelesidis
616f08379e Update README.md 2024-08-28 22:49:03 +07:00
Roman Kelesidis
c322bca938
Fixed template caching issue (#1622)
* Minor improvements

* Update CHANGELOG.md

* Update Template.php

* Update Template.php

* Revert "Update Template.php"

This reverts commit c0284ccd1c.

* Revert "Update Template.php"

This reverts commit 81837634dc.

* Update Template.php

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-08-28 22:42:13 +07:00
Roman Kelesidis
6bcf69cfb8
Minor improvements (#1615)
* Minor improvements

* Update CHANGELOG.md
2024-08-27 14:22:50 +07:00
Roman Kelesidis
58a28e83c2
BBCode: Fixed relative links working (#1613)
* Minor improvements

* Update BBCode.php

* Update BBCode.php

* Update BBCode.php

* Update BBCode.php

* Update CHANGELOG.md
2024-08-27 13:19:41 +07:00
Roman Kelesidis
8d1d9cbb01
Minor improvements (#1612)
* Minor improvements

* Update CHANGELOG.md

* Update README.md

* Update install.php

* Update install.php
2024-08-26 15:37:31 +07:00
Roman Kelesidis
7a67fefd4d
Minor improvements (#1611)
* Minor improvements

* Update displaying_torrent.php

* Update TorrServerAPI.php

* Update CHANGELOG.md
2024-08-24 22:09:27 +07:00
dependabot[bot]
ee8d9d5cd2
Composer(deps): Bump php-curl-class/php-curl-class from 10.0.1 to 11.0.0 (#1610)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 10.0.1 to 11.0.0.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/10.0.1...11.0.0)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-23 18:11:07 +07:00
dependabot[bot]
995e1fc970
Composer(deps): Bump php-curl-class/php-curl-class from 10.0.0 to 10.0.1 (#1609)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 10.0.0 to 10.0.1.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/10.0.0...10.0.1)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-23 01:34:55 +07:00
Roman Kelesidis
d8d872c451 Update CHANGELOG.md 2024-08-21 13:47:00 +07:00
dependabot[bot]
d59b9f5512
Composer(deps): Bump php-curl-class/php-curl-class from 9.19.2 to 10.0.0 (#1608)
Bumps [php-curl-class/php-curl-class](https://github.com/php-curl-class/php-curl-class) from 9.19.2 to 10.0.0.
- [Release notes](https://github.com/php-curl-class/php-curl-class/releases)
- [Changelog](https://github.com/php-curl-class/php-curl-class/blob/master/CHANGELOG.md)
- [Commits](https://github.com/php-curl-class/php-curl-class/compare/9.19.2...10.0.0)

---
updated-dependencies:
- dependency-name: php-curl-class/php-curl-class
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-21 13:35:52 +07:00
Yury Pikhtarev
14790c66d4
New translations main.php (Russian) (#1607) 2024-08-21 04:08:12 +07:00
Yury Pikhtarev
1861a25139
New Crowdin updates (#1606)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-08-21 02:48:50 +07:00
Roman Kelesidis
82e7552a9e
Minor improvements (#1605)
* Minor improvements

* Updated

* Update functions_delete.php

* Update attach_maintenance.php

* Update attach_maintenance.php

* Update config.php

* Updated

* Update viewtopic_attach.tpl

* Updated

* Update CHANGELOG.md
2024-08-21 01:41:57 +07:00
Roman Kelesidis
c6b4672734
Added TorrServer instance support! 🎞 (#1603)
* Added integration with TorrServe 🎞

* Updated

* Updated

* Update functions.php

* Updated

* Update functions.php

* Update functions.php

* Updated

* Update TorrServerAPI.php

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Updated

* Updated

* Update config.php

* Update Attach.php

* Update Torrent.php

* Update CHANGELOG.md

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Update displaying_torrent.php

* Update Torrent.php

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Updated

* Update viewtopic_attach.tpl

* Updated

* Update tor_m3u_format.svg

* Updated

* Updated

* Update tor_m3u_format.png

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Updated

* Update Torrent.php

* Update functions_delete.php

* Updated

* Update TorrServerAPI.php

* Updated

* Updated

* Updated

* Update TorrServerAPI.php

* Update TorrServerAPI.php

* Update displaying_torrent.php

* Update TorrServerAPI.php

* Update CHANGELOG.md

Co-Authored-By: YouROK <4067300+yourok@users.noreply.github.com>

---------

Co-authored-by: YouROK <4067300+yourok@users.noreply.github.com>
2024-08-20 22:16:49 +07:00
Roman Kelesidis
52281847ff Update CHANGELOG.md 2024-08-18 20:21:01 +07:00
Yury Pikhtarev
a3ce77a651
New translations main.php (Russian) (#1601) 2024-08-18 20:20:03 +07:00
Yury Pikhtarev
38a5d50623
New Crowdin updates (#1600)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-08-18 19:15:12 +07:00
Roman Kelesidis
607141e51d
Newtopic: Added configuring robots indexing (#1599)
* Added ability configure robots indexing while creating new topic

* Update viewtopic.php

* Update mysql.sql

* Update posting.php

* Update Post.php

* Update CHANGELOG.md

* Update posting.php

* Update posting.php

* Update Post.php

* Update posting.tpl

* Update posting.php
2024-08-18 17:18:46 +07:00
Roman Kelesidis
7e43a6d002
Minor improvements (#1592)
* Minor improvements

* Update CHANGELOG.md

* Updated

* Updated

* Updated

* Update legacy-changes.txt

* Update legacy-changes.txt

* Update legacy-changes.txt

* Update legacy-changes.txt

* Update legacy-changes.txt

* Update legacy-changes.txt

* Minor improvements

* Update prune_inactive_users.php

* Update legacy-changes.txt

* Update legacy-changes.txt
2024-08-18 00:20:15 +07:00
Roman Kelesidis
ba7c8616f6
Some fixes for CLI installer (#1591)
* Some fixes for CLI installer

* Update CHANGELOG.md

* Update install.php

* Update README.md
2024-08-12 04:05:04 +07:00
Yury Pikhtarev
885c1a07f0
New Crowdin updates (#1590)
* New translations main.php (Russian)

* Update CHANGELOG.md

---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2024-08-11 16:30:22 +07:00
Roman Kelesidis
df9922870c
Minor improvements (#1589)
* Minor improvements

* Update CHANGELOG.md

* Update README.md
2024-08-11 16:07:05 +07:00
Roman Kelesidis
7c31bc50e0 Update composer.json 2024-08-11 15:32:33 +07:00
Roman Kelesidis
bc45b9d386 Update composer.json 2024-08-11 15:26:28 +07:00
Roman Kelesidis
a6244ed50c Merge branch 'master' of https://github.com/torrentpier/torrentpier 2024-08-11 14:59:14 +07:00
Roman Kelesidis
47da2bc515 Update CHANGELOG.md 2024-08-11 14:59:06 +07:00
Yury Pikhtarev
1f2d821e60
New Crowdin updates (#1588)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-08-11 14:58:46 +07:00
Roman Kelesidis
6c1db78204
Added robots meta-tag support 🤖 (#1587)
* Added robots meta-tag support 🤖

* Update CHANGELOG.md

* Update page_header.php
2024-08-11 14:47:49 +07:00
Roman Kelesidis
aca756ea67
Improved filelist.php (#1586)
* Improved filelist.php

* Update filelist.tpl

* Update filelist.php

* Update filelist.php

* Update CHANGELOG.md

* Update filelist.php

* Updated

* Update filelist.php

* Update filelist.tpl

* Updated

* Update filelist.php

* Update filelist.php

* Update filelist.php

* Update filelist.php

* Updated

* Update filelist.tpl

* Update filelist.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Updated

* Updated

* Updated

* Updated

* Update filelist.php

* Update filelist.tpl

* Updated

* Update main.php
2024-08-11 14:29:37 +07:00
Roman Kelesidis
e82d2b4089
CLI installer improvements (#1585)
* Added Docker support

* Updated

* Updated

* Updated

* Update Dockerfile

* Create nginx.conf

* Updated

* Update .dockerignore

* Updated

* Update docker-compose.yml

* Update docker-compose.yml

* Update docker-compose.yml

* Update docker-compose.yml

* Update docker-compose.yml

* Update common.php

* Updated

* Update common.php

* Update .dockerignore

* Update .dockerignore

* Update .dockerignore

* Update nginx.conf

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Updated

* Updated

* Update CHANGELOG.md
2024-08-10 20:12:13 +07:00
Roman Kelesidis
2d29c29a8a Update CHANGELOG.md 2024-08-10 12:17:55 +07:00
Roman Kelesidis
e9d62f10a6
Demo mode: Save user language in cookies (#1584)
* Updated

* Update User.php

* Update User.php

* Update register.php

* Update CHANGELOG.md
2024-08-09 15:17:56 +07:00
Roman Kelesidis
bd34132469 Update README.md 2024-08-08 01:38:31 +07:00
Roman Kelesidis
e0a05c54d2 Update README.md 2024-08-08 01:31:08 +07:00
Roman Kelesidis
140d01779c Update README.md 2024-08-08 01:28:11 +07:00
Roman Kelesidis
171f3dc60a Update README.md 2024-08-08 01:25:35 +07:00
Roman Kelesidis
b0d15c7a05 Update README.md 2024-08-08 01:24:31 +07:00
Roman Kelesidis
0ca9fa7386 Update README.md 2024-08-08 01:18:53 +07:00
Roman Kelesidis
8af8497e55
Some improvements for CLI installer (#1582)
* Some improvements for CLI installer

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Revert "Update install.php"

This reverts commit b83e0846f9.

* Revert "Update install.php"

This reverts commit a7486cc20c.

* Revert "Update install.php"

This reverts commit af91f8aeb1.

* Update install.php

* Update install.php

* Update install.php

* Update CHANGELOG.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Revert "Update README.md"

This reverts commit c3621c3b9a.

* Revert "Update README.md"

This reverts commit 8832ccdcc2.

* Revert "Update README.md"

This reverts commit 428cc99521.

* Revert "Update README.md"

This reverts commit 282fd2658a.

* Revert "Update README.md"

This reverts commit 0836eaa941.

* Revert "Update README.md"

This reverts commit 525d980c69.

* Revert "Update README.md"

This reverts commit dbd80c5a60.

* Revert "Update README.md"

This reverts commit 07eccab3e1.

* Update README.md

* Update README.md
2024-08-08 01:07:16 +07:00
Roman Kelesidis
9d4466a596 Update README.md 2024-08-07 23:46:18 +07:00
Roman Kelesidis
8c44c05188 Update README.md 2024-08-07 23:44:48 +07:00
Roman Kelesidis
d23a8dae85
Update README.md 2024-08-07 23:28:09 +07:00
Roman Kelesidis
774a052e24
Update README.md 2024-08-07 23:17:50 +07:00
Roman Kelesidis
6daa60fd1d
Update SECURITY.md 2024-08-07 23:09:29 +07:00
Roman Kelesidis
b034423c64
Update SECURITY.md 2024-08-07 23:01:53 +07:00
Roman Kelesidis
801aa69c27
Create SECURITY.md 2024-08-07 22:59:09 +07:00
Roman Kelesidis
eba5dac629 Update README.md 2024-08-07 18:57:14 +07:00
Roman Kelesidis
9e0360677e Update README.md 2024-08-07 17:51:57 +07:00
Roman Kelesidis
b39cac2f52 Update README.md 2024-08-07 17:51:02 +07:00
Roman Kelesidis
6d63169831 Update README.md 2024-08-07 17:50:00 +07:00
Roman Kelesidis
b45eb288b4 Update README.md 2024-08-07 17:43:34 +07:00
Roman Kelesidis
434d4532eb
[CLI] TorrentPier installer (#1576)
* Added CLI preparing installation script

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Revert "Update install.php"

This reverts commit 554319e003.

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update .env.example

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update CHANGELOG.md

* Update install.php

* Update install.php

* Update install.php

* Update install.php

* Update install.php
2024-08-07 17:32:41 +07:00
Roman Kelesidis
45aaba883f
Minor improvements (#1575)
* Minor improvements

* Update CHANGELOG.md

* Update composer.json

* Update composer.json

* Update composer.json

* Update composer.json

* Update composer.lock

* Update composer.json

* Update composer.lock

* Updated

* Revert "Updated"

This reverts commit 74eca59cea.
2024-08-07 00:27:23 +07:00
Roman Kelesidis
bc3f76fdf9
Updated RU translations (#1574)
* Updated RU translations

* Update CHANGELOG.md
2024-08-05 16:37:22 +07:00
Roman Kelesidis
ba28b2ba44 Update CHANGELOG.md 2024-08-05 16:24:44 +07:00
Yury Pikhtarev
014cb64b00
New translations main.php (Russian) (#1573) 2024-08-05 16:22:07 +07:00
Yury Pikhtarev
0356c97be2
New Crowdin updates (#1572)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-08-05 12:55:31 +07:00
Roman Kelesidis
f39fde2fdb
Minor improvements (#1571)
* Minor improvements

* Update CHANGELOG.md
2024-08-04 23:04:12 +07:00
Roman Kelesidis
c25a6f1dde
Minor improvements (#1570)
* Minor improvements

* Update index_data.php

* Updated

* Updated

* Update CHANGELOG.md

* Update common.php

* Updated

* Revert "Updated"

This reverts commit f5227b4083.

* Revert "Updated"

This reverts commit 911ac4ac29.

* Revert "Updated"

This reverts commit 3e19c1a973.

* Update CHANGELOG.md
2024-08-04 22:55:28 +07:00
Yury Pikhtarev
360b66baca
New Crowdin updates (#1569)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-08-04 22:43:16 +07:00
Roman Kelesidis
7f746af5d5
Added showing releaser stats in profile (#1568)
* Added showing releaser stats in profile

* Update viewprofile.php

* Update usercp_viewprofile.tpl

* Update CHANGELOG.md

* Update viewprofile.php
2024-08-03 13:08:27 +07:00
Roman Kelesidis
c215d8fb31
Increased USEREMAIL_MAX_LENGTH (#1566)
* Minor improvements

* Update CHANGELOG.md
2024-08-03 01:19:51 +07:00
dependabot[bot]
31c901fabd
Composer(deps): Bump arokettu/bencode from 4.2.0 to 4.2.1 (#1564)
Bumps [arokettu/bencode](https://github.com/arokettu/bencode) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/arokettu/bencode/releases)
- [Changelog](https://github.com/arokettu/bencode/blob/master/CHANGELOG.md)
- [Commits](https://github.com/arokettu/bencode/compare/4.2.0...4.2.1)

---
updated-dependencies:
- dependency-name: arokettu/bencode
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-29 15:01:17 +07:00
dependabot[bot]
ee310d25da
Composer(deps): Bump arokettu/torrent-file from 5.3.0 to 5.3.1 (#1563)
Bumps [arokettu/torrent-file](https://github.com/arokettu/torrent-file) from 5.3.0 to 5.3.1.
- [Release notes](https://github.com/arokettu/torrent-file/releases)
- [Changelog](https://github.com/arokettu/torrent-file/blob/master/CHANGELOG.md)
- [Commits](https://github.com/arokettu/torrent-file/compare/5.3.0...5.3.1)

---
updated-dependencies:
- dependency-name: arokettu/torrent-file
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-29 15:01:02 +07:00
Roman Kelesidis
be4a6a2dd8
Added some new HTML meta-tags (#1562)
* Added some new HTML meta-tags

* Update CHANGELOG.md
2024-07-24 22:18:37 +07:00
Roman Kelesidis
612004c10b
Fixed md5() deprecated in PHP 8.4 (#1561)
* Fixed md5() deprecated for PHP 8.4

* Updated

* Update CHANGELOG.md
2024-07-24 13:11:56 +07:00
Roman Kelesidis
1577d9c90b Release 2.4.4 🦩 2024-07-22 23:13:55 +07:00
Roman Kelesidis
97d4def392 Merge branch 'master' of https://github.com/torrentpier/torrentpier 2024-07-22 23:08:32 +07:00
Roman Kelesidis
8858e2e3e0 Increase version number 2024-07-22 23:08:05 +07:00
Yury Pikhtarev
7a0b05116c
New Crowdin updates (#1560)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-07-22 23:03:57 +07:00
Roman Kelesidis
ae6ded5f62 Update CHANGELOG.md 2024-07-22 21:28:49 +07:00
Roman Kelesidis
0287f10dc4 Update CHANGELOG.md 2024-07-22 21:27:53 +07:00
Yury Pikhtarev
78b15cc15b
New Crowdin updates (#1559)
* New translations main.php (Russian)

* New translations user_agreement.html (Russian)

---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2024-07-22 21:26:28 +07:00
Roman Kelesidis
518f73ad3a
Minor improvements (#1558)
* Minor improvements

* Update CHANGELOG.md
2024-07-22 21:20:42 +07:00
Roman Kelesidis
db19ca6ecc
Fixed some cache issues (#1557)
* Fixed some cache issues

* Update CHANGELOG.md
2024-07-22 17:58:38 +07:00
Roman Kelesidis
4e853253b6
Fixed: function utf8_encode() is deprecated (#1556)
* Fixed: Function utf8_encode() is deprecated

* Update CHANGELOG.md

* Update CHANGELOG.md

* Updated

* Update Updater.php
2024-07-22 17:20:48 +07:00
Roman Kelesidis
00f4f8f120 Update README.md 2024-07-22 16:34:53 +07:00
Roman Kelesidis
4a16ad2c51
Some improvements for ratio functionality (#1552)
* Some improvements for ratio functionality

* Update usercp_viewprofile.tpl

* Update functions.php

* Update CHANGELOG.md
2024-07-22 15:02:54 +07:00
Roman Kelesidis
f4652a4123 Merge branch 'master' of https://github.com/torrentpier/torrentpier 2024-07-22 15:00:02 +07:00
Roman Kelesidis
206789d18d Update CHANGELOG.md 2024-07-22 14:59:54 +07:00
Roman Kelesidis
17a320b7c8
Refactored cache drivers 🗃 (#1553)
* Refactored cache drivers 🗃

* Updated

* Update APCu.php

* Update APCu.php

* Update APCu.php

* Update APCu.php

* Update APCu.php

* Update Redis.php

* Update Redis.php

* Updated

* Update

* Updated

* Update config.php

* Updated

* Updated

* Updated

* Updated

* Update config.php

* Updated

* Update composer.lock

* Delete composer.lock

* Create composer.lock

* Update composer.lock

* Update common.php

* Update File.php

* Updated

* Update Sqlite.php

* Update common.php

* Update Redis.php

* Updated

* Update common.php

* Updated
2024-07-22 14:55:04 +07:00
dependabot[bot]
bfd61166be
Composer(deps): Bump vlucas/phpdotenv from 5.6.0 to 5.6.1 (#1555)
Bumps [vlucas/phpdotenv](https://github.com/vlucas/phpdotenv) from 5.6.0 to 5.6.1.
- [Release notes](https://github.com/vlucas/phpdotenv/releases)
- [Commits](https://github.com/vlucas/phpdotenv/compare/v5.6.0...v5.6.1)

---
updated-dependencies:
- dependency-name: vlucas/phpdotenv
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 14:09:35 +07:00
dependabot[bot]
bee479b466
Composer(deps): Bump arokettu/torrent-file from 5.2.2 to 5.3.0 (#1554)
Bumps [arokettu/torrent-file](https://github.com/arokettu/torrent-file) from 5.2.2 to 5.3.0.
- [Release notes](https://github.com/arokettu/torrent-file/releases)
- [Changelog](https://github.com/arokettu/torrent-file/blob/master/CHANGELOG.md)
- [Commits](https://github.com/arokettu/torrent-file/compare/5.2.2...5.3.0)

---
updated-dependencies:
- dependency-name: arokettu/torrent-file
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-22 14:08:42 +07:00
Roman Kelesidis
a10ec4c394
Pagination with rel="next" and rel="prev" support (#1551)
* Minor improvements

* Update CHANGELOG.md
2024-07-21 19:59:08 +07:00
Roman Kelesidis
6a4dd64874
Minor improvements (#1550)
* Minor improvements

* Update CHANGELOG.md

* Update register.php
2024-07-21 00:12:31 +07:00
Yury Pikhtarev
a14013d857
New Crowdin updates (#1549)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-07-20 17:41:02 +07:00
Roman Kelesidis
c9d9ebb9c0
Minor improvements (#1548)
* Minor improvements

* Update register.php

* Update register.php

* Updated

* Update CHANGELOG.md

* Update topic_watch.php

* Update Ajax.php
2024-07-20 17:05:02 +07:00
Yury Pikhtarev
a2b15b1ab2
New Crowdin updates (#1547)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-07-19 16:27:41 +07:00
Roman Kelesidis
918902e7e2
Added integration with MonsterID 🎇 (#1546)
* Added integration with MonsterID 🎇

* Updated

* Update usercp_register.tpl

* Revert "Updated"

This reverts commit b85c2b9f4d.

* Update Upload.php

* Update register.php

* Update register.php

* Update usercp_register.tpl

* Updated

* Update CHANGELOG.md
2024-07-19 15:29:54 +07:00
Roman Kelesidis
0eba082d41
Added ability to reset ratio (#1545)
* Minor improvements

* Update index_data.php

* Updated

* Update usercp_viewprofile.tpl

* Update mysql.sql

* Update main.php

* Update CHANGELOG.md
2024-07-19 14:25:47 +07:00
Roman Kelesidis
7b3661cb3f
Minor improvements (#1544)
* Update thanks.php

* Update User.php

* Update User.php

* Update User.php

* Revert "Update User.php"

This reverts commit 8ea96c2224.

* Revert "Update User.php"

This reverts commit 736b3209bf.

* Update User.php

* Update CHANGELOG.md
2024-07-18 20:27:33 +07:00
Yury Pikhtarev
d78305d6af
New Crowdin updates (#1543)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-07-17 02:27:04 +07:00
Roman Kelesidis
5e4eca2c3d
Minor improvements (#1542)
* Minor improvements

* Update Updater.php

* Update Updater.php

* Update Updater.php

* Updated

* Updated

* Update CHANGELOG.md
2024-07-16 18:34:43 +07:00
Yury Pikhtarev
771bad76ca
New Crowdin updates (#1541)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-07-13 20:47:13 +07:00
Roman Kelesidis
a359da1090 Update CHANGELOG.md 2024-07-13 19:45:34 +07:00
Roman Kelesidis
ed37e6e522
Merge commit from fork 2024-07-13 19:26:57 +07:00
Roman Kelesidis
e4b93796f3
Bring back forum description in viewforum.php (#1540)
* Bring back forum description in viewforum.php

* Update CHANGELOG.md
2024-07-13 18:32:00 +07:00
Roman Kelesidis
faede91a14
Minor improvements (#1539)
* Minor improvements

* Update CHANGELOG.md

* Update thanks.php

* Updated
2024-07-13 18:25:21 +07:00
Roman Kelesidis
c7f2223f7f
Datastore improvements (#1538)
* Datastore improvements

* Updated

* Update functions.php

* Updated

* Updated

* Updated

* Update index.php

* Update index.php

* Update index.php

* Update index.php

* Update viewtopic.php

* Update functions.php

* Updated

* Updated

* Revert "Updated"

This reverts commit 0ff7d4ac60.

* Revert "Updated"

This reverts commit 8d637dff6c.

* Update index_data.php

* Update index_data.php

* Update index_data.php

* Updated

* Update CHANGELOG.md
2024-07-13 14:26:34 +07:00
Roman Kelesidis
5971379b6c
Word censor code optimization (#1537)
* Word censor code optimization

* Update CHANGELOG.md

* Updated

* Updated

* Update build_censor.php

* Update admin_words.php
2024-07-13 13:00:46 +07:00
Roman Kelesidis
126c75cd57
Minor improvements (#1536)
* Minor improvements

* Update viewtopic_attach.tpl

* Update viewtopic_attach.tpl

* Update viewforum.tpl

* Update viewforum.tpl

* Update viewtopic.tpl

* Update viewtopic.tpl

* Update CHANGELOG.md

* Updated

* Update defines.php
2024-07-12 23:05:14 +07:00
Roman Kelesidis
97d42c599d
Hide in topic: Added country hiding (#1535)
* Hide in topic: Added country hiding

* Update CHANGELOG.md
2024-07-11 00:25:51 +07:00
Roman Kelesidis
d2a1a7f5f9
Minor improvements (#1532)
* Minor improvements

* Update clean_dlstat.php

* Updated

* Update usercp_viewprofile.tpl

* Update CHANGELOG.md
2024-07-10 23:48:31 +07:00
Roman Kelesidis
ccf6ba3099 Revert "Minor improvements (#1531)"
This reverts commit a1d8f2742a.
2024-07-08 11:49:31 +07:00
Roman Kelesidis
a1d8f2742a
Minor improvements (#1531)
* Minor improvements

* Update CHANGELOG.md

* Update cron_run.php
2024-07-08 01:14:58 +07:00
Roman Kelesidis
137865f3f3
Minor improvements (#1530)
* Minor improvements

* Update changes.txt

* Update attach_maintenance.php

* Update CHANGELOG.md
2024-07-06 17:57:23 +07:00
Roman Kelesidis
04ed0202c6 Update CHANGELOG.md 2024-07-03 16:21:40 +07:00
Roman Kelesidis
a90653e7e2
Fixed broken "Disable Board" function (#1529)
* Fixed broken "Disable Board" function

* Update CHANGELOG.md
2024-07-03 16:20:50 +07:00
Roman Kelesidis
082d553a29 Update composer.lock 2024-07-03 16:11:57 +07:00
dependabot[bot]
f684121297
Composer(deps-dev): Bump symfony/var-dumper from 6.4.8 to 6.4.9 (#1526)
Bumps [symfony/var-dumper](https://github.com/symfony/var-dumper) from 6.4.8 to 6.4.9.
- [Release notes](https://github.com/symfony/var-dumper/releases)
- [Changelog](https://github.com/symfony/var-dumper/blob/7.1/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-dumper/compare/v6.4.8...v6.4.9)

---
updated-dependencies:
- dependency-name: symfony/var-dumper
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-03 16:07:53 +07:00
dependabot[bot]
68bee51ca6
Composer(deps): Bump symfony/mailer from 6.4.8 to 6.4.9 (#1527)
Bumps [symfony/mailer](https://github.com/symfony/mailer) from 6.4.8 to 6.4.9.
- [Release notes](https://github.com/symfony/mailer/releases)
- [Changelog](https://github.com/symfony/mailer/blob/7.1/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailer/compare/v6.4.8...v6.4.9)

---
updated-dependencies:
- dependency-name: symfony/mailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-03 16:07:44 +07:00
dependabot[bot]
2d8c64f314
Composer(deps): Bump monolog/monolog from 3.6.0 to 3.7.0 (#1528)
Bumps [monolog/monolog](https://github.com/Seldaek/monolog) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/Seldaek/monolog/releases)
- [Changelog](https://github.com/Seldaek/monolog/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Seldaek/monolog/compare/3.6.0...3.7.0)

---
updated-dependencies:
- dependency-name: monolog/monolog
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-03 16:07:12 +07:00
Roman Kelesidis
3488c9cc28
Minor improvements (#1525)
* Minor improvements

* Update posting_tpl.tpl

* Update CHANGELOG.md

* Updated

* Update clean_pm.php

* Update mysql.sql

* Update mysql.sql

* Update mysql.sql

* Update mysql.sql

* Update mysql.sql
2024-06-28 12:38:43 +07:00
Yury Pikhtarev
f8d3d2721c
New Crowdin updates (#1524)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-06-22 16:04:48 +07:00
Roman Kelesidis
1f50783a70 Update CHANGELOG.md 2024-06-22 11:41:31 +07:00
Roman Kelesidis
b37f2d3666
Minor improvements (#1523)
* Minor improvements

* Update CHANGELOG.md

* Update composer.lock

* Update User.php

* Updated

* Update Torrent.php

* Update Template.php

* Updated

* Update SqlDb.php

* Update Select.php

* Updated

* Updated

* Update viewtopic.tpl

* Updated

* Update viewforum.tpl
2024-06-22 11:39:33 +07:00
Roman Kelesidis
2803870d32 Merge branch 'master' of https://github.com/torrentpier/torrentpier 2024-06-18 14:46:24 +07:00
Roman Kelesidis
66e804e5e6 Update CHANGELOG.md 2024-06-18 14:46:17 +07:00
stack-file[bot]
4df735c383
Update tech stack docs (techstack.yml and techstack.md) (#1522)
* Update techstack.yml

* Update techstack.md

---------

Co-authored-by: stacksharebot <team@stackshare.io>
2024-06-18 14:45:38 +07:00
Roman Kelesidis
19bfdf7275
Create tech stack docs (techstack.yml and techstack.md) (#1521)
* Create tech stack docs (techstack.yml and techstack.md)

* Update CHANGELOG.md
2024-06-18 14:29:21 +07:00
Roman Kelesidis
cf1497300a
Minor improvements (#1519)
* Minor improvements

* Update CHANGELOG.md
2024-06-17 21:32:34 +07:00
Roman Kelesidis
40b341cb62
Fixed seed bonus accrual (#1518)
* Fixed seed bonus accrual

* Update CHANGELOG.md

* Updated
2024-06-17 20:50:08 +07:00
Roman Kelesidis
5d56517504
Minor improvements (#1517)
* Minor improvements

* Updated

* Update CHANGELOG.md
2024-06-17 18:52:47 +07:00
Roman Kelesidis
84f6c9f4a0
Minor improvements (#1516)
* Minor improvements

* Update build_files_integrity.php

* Update CHANGELOG.md

* Updated
2024-06-16 01:16:42 +07:00
Roman Kelesidis
8e3d1b0479
Minor improvements (#1515)
* Minor improvements

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-06-15 15:46:30 +07:00
Roman Kelesidis
7cf03cb1b1
[BETA] Added emoji support 😄😁 (#1514)
* Added emoji support 😄😁

* Update CHANGELOG.md

* Update mysql.sql
2024-06-15 11:14:11 +07:00
Yury Pikhtarev
0a0e09a183
New Crowdin updates (#1513)
* New translations user_agreement.html (Romanian)

* New translations user_agreement.html (French)

* New translations user_agreement.html (Spanish)

* New translations user_agreement.html (Afrikaans)

* New translations user_agreement.html (Arabic)

* New translations user_agreement.html (Belarusian)

* New translations user_agreement.html (Bulgarian)

* New translations user_agreement.html (Catalan)

* New translations user_agreement.html (Czech)

* New translations user_agreement.html (Danish)

* New translations user_agreement.html (German)

* New translations user_agreement.html (Greek)

* New translations user_agreement.html (Finnish)

* New translations user_agreement.html (Hebrew)

* New translations user_agreement.html (Hungarian)

* New translations user_agreement.html (Armenian)

* New translations user_agreement.html (Italian)

* New translations user_agreement.html (Japanese)

* New translations user_agreement.html (Georgian)

* New translations user_agreement.html (Korean)

* New translations user_agreement.html (Lithuanian)

* New translations user_agreement.html (Dutch)

* New translations user_agreement.html (Norwegian)

* New translations user_agreement.html (Polish)

* New translations user_agreement.html (Russian)

* New translations user_agreement.html (Slovak)

* New translations user_agreement.html (Slovenian)

* New translations user_agreement.html (Albanian)

* New translations user_agreement.html (Serbian (Cyrillic))

* New translations user_agreement.html (Swedish)

* New translations user_agreement.html (Turkish)

* New translations user_agreement.html (Ukrainian)

* New translations user_agreement.html (Chinese Traditional)

* New translations user_agreement.html (English)

* New translations user_agreement.html (Vietnamese)

* New translations user_agreement.html (Portuguese, Brazilian)

* New translations user_agreement.html (Indonesian)

* New translations user_agreement.html (Thai)

* New translations user_agreement.html (Croatian)

* New translations user_agreement.html (Kazakh)

* New translations user_agreement.html (Estonian)

* New translations user_agreement.html (Latvian)

* New translations user_agreement.html (Azerbaijani)

* New translations user_agreement.html (Hindi)

* New translations user_agreement.html (Bosnian)

* New translations user_agreement.html (Uzbek)

* New translations user_agreement.html (Tajik)
2024-06-14 15:51:47 +07:00
Roman Kelesidis
f1665f5155
Resize avatar image if too large 🌆 (#1512)
* Resize avatar image if too large 🌆

* Update CHANGELOG.md
2024-06-14 14:51:19 +07:00
Roman Kelesidis
2cd786f85d
Minor improvements (#1511)
* Minor improvements

* Update user_agreement.html

* Update CHANGELOG.md
2024-06-14 14:12:40 +07:00
Roman Kelesidis
63ba8f1738 Update CHANGELOG.md 2024-06-14 14:02:28 +07:00
Roman Kelesidis
23d8864a9e
Increased PASSWORD_MAX_LENGTH (#1510) 2024-06-14 14:01:41 +07:00
Roman Kelesidis
9940945824
Minor improvements (#1509)
* Minor improvements

* Update CHANGELOG.md

* Update torrent_show_dl_list.php
2024-06-14 13:57:28 +07:00
Roman Kelesidis
75c9f34a73
Hide vote button in topic if guest (#1507)
* Hide vote button in topic if guest

* Update CHANGELOG.md
2024-06-13 16:08:23 +07:00
Roman Kelesidis
0ad1ec45bc
Minor improvements (#1506)
* Minor improvements

* Update CHANGELOG.md

* Update .env.example
2024-06-13 15:27:58 +07:00
Roman Kelesidis
411a756085
Some security enhancements (#1505)
* Some security enhancements

* Update CHANGELOG.md
2024-06-12 13:12:25 +07:00
Roman Kelesidis
0663f55e54
Some security improvements 🔑 (#1503)
* Some security improvements 🔑

* Update .env.example

* Update Dev.php

* Update CHANGELOG.md

* Update Dev.php

* Update Ajax.php

* Update SqlDb.php

* Updated

* Updated

* Update Dev.php

* Update page_header.tpl

* Updated

* Updated

* Update CHANGELOG.md
2024-06-10 16:55:55 +07:00
Yury Pikhtarev
3562a5f63a
New Crowdin updates (#1504)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-06-10 16:55:37 +07:00
Roman Kelesidis
141fab021a
Minor improvements (#1502)
* Minor improvements

* Update build_files_integrity.php

* Updated

* Update usercp_viewprofile.tpl

* Updated

* Update config.php

* Updated

* Update register.php

* Updated

* Update main.php

* Update functions.php

* Update CHANGELOG.md
2024-06-10 13:30:47 +07:00
Roman Kelesidis
6a10adabf5
Some improvements for integrity checker (#1501)
* Some improvements for integrity checker

* Update build_files_integrity.php

* Updated
2024-06-09 17:09:21 +07:00
Roman Kelesidis
784e3aef1c Update checksums.md5 2024-06-09 16:37:26 +07:00
Roman Kelesidis
fa109e1f12
Minor improvements (#1500)
* Minor improvements

* Update CHANGELOG.md
2024-06-09 16:35:42 +07:00
Roman Kelesidis
0ff8ca8e20
Minor improvements (#1499)
* Minor improvements

* Update build_files_integrity.php

* Update CHANGELOG.md
2024-06-09 16:32:32 +07:00
Roman Kelesidis
f801c18e4d Update checksums.md5 2024-06-09 15:43:43 +07:00
Roman Kelesidis
ce6592a307 Release v2.4.3 🐎 2024-06-09 15:42:42 +07:00
Roman Kelesidis
b86422cc00
Minor improvements (#1497)
* Minor improvements

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-06-09 15:35:29 +07:00
Yury Pikhtarev
a01dd8a10c
New translations main.php (Russian) (#1498) 2024-06-09 15:34:21 +07:00
Yury Pikhtarev
c1dbeb4681
New translations main.php (Russian) (#1496) 2024-06-09 14:58:47 +07:00
Yury Pikhtarev
70c557a35d
New Crowdin updates (#1495)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-06-09 11:45:20 +07:00
Roman Kelesidis
8a0fd77e28 Update checksums.md5 2024-06-08 16:53:28 +07:00
Roman Kelesidis
bb3d4e6345
Minor improvements (#1494)
* Minor improvements

* Update CHANGELOG.md
2024-06-08 16:50:40 +07:00
Roman Kelesidis
2cbf9ed743
WIP: Added restoring corrupt TorrentPier files 🪛 (#1493)
* Added restoring corrupt files 🪛

* Update index.tpl

* Updated

* Updated

* Update build_files_integrity.php

* Update build_files_integrity.php

* Update build_files_integrity.php

* Updated

* Updater

* Update Updater.php

* Updated

* Update Updater.php

* Update build_check_updates.php

* Updated

* Updated

* Updated

* Update build_files_integrity.php

* Update build_files_integrity.php

* Updated

* Update checksums.md5

* Update build_files_integrity.php

* Updated

* Updated

* Update Updater.php

* Update CHANGELOG.md

* Updated

* Update index.tpl

* Update functions.php

* Update Updater.php
2024-06-08 16:42:35 +07:00
Yury Pikhtarev
e36a5ee07a
New Crowdin updates (#1492)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-06-08 01:37:21 +07:00
Roman Kelesidis
437c2e5d8d
Added TorrentPier files integrity check 📦 (#1491)
* Added file integrity check 📦

* Update CHANGELOG.md

* Update CHANGELOG.md

* Updated

* Update Common.php

* Updated

* Update board_maintenance.php

* Update index.tpl

* Updated

* Updated

* Update build_check_updates.php

* Update build_check_updates.php

* Update build_check_updates.php

* Update build_check_updates.php

* Update build_check_updates.php

* Update index.php

* Updated

* Update build_check_updates.php

* Update build_files_integrity.php

* Update build_files_integrity.php

* Update build_files_integrity.php

* Create checksums.md5

* Update build_files_integrity.php

* Update build_files_integrity.php

* Updated

* Update checksums.md5

* Update defines.php

* Update build_files_integrity.php

* Updated

* Update main.php

* Update main.php

* Update main.php

* Update index.tpl

* Update index.tpl

* Update index.php

* Update build_check_updates.php

* Update build_check_updates.php

* Update checksums.md5

* Update build_files_integrity.php

* Update checksums.md5
2024-06-08 00:32:10 +07:00
Roman Kelesidis
3db9095b78
Minor improvements (#1490)
* Minor improvements

* Update CHANGELOG.md

* Update functions.php

* Update build_check_updates.php

* Update index.php

* Updated
2024-06-07 21:05:54 +07:00
Yury Pikhtarev
33720fb284
New Crowdin updates (#1489)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations icon_code.gif (Russian)

* New translations icon_code.gif (Ukrainian)
2024-06-05 23:51:42 +07:00
Roman Kelesidis
237e7ec6ef
Some cleanup...😣 (#1488)
* Some cleanup...😣

* Update main.php

* Update CHANGELOG.md

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update main.php

* Update config.php

* Update Common.php

* Updated

* Update filelist.php

* Update filelist.php

* Update viewtopic_attach.tpl

* Updated
2024-06-05 12:51:23 +07:00
Yury Pikhtarev
ce6923b160
New Crowdin updates (#1487)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-06-04 17:20:37 +07:00
Roman Kelesidis
bf9536dece
Minor improvements (#1484)
* Minor improvements

* Update CHANGELOG.md

* Update modcp.php

* Update modcp_split.tpl

* Update main.php

* Update viewtopic.tpl

* Update CHANGELOG.md

* Update Emailer.php

* Updated

* Update common.php
2024-06-04 17:08:27 +07:00
dependabot[bot]
bf34a936b9
Composer(deps-dev): Bump symfony/var-dumper from 6.4.7 to 6.4.8 (#1486)
Bumps [symfony/var-dumper](https://github.com/symfony/var-dumper) from 6.4.7 to 6.4.8.
- [Release notes](https://github.com/symfony/var-dumper/releases)
- [Changelog](https://github.com/symfony/var-dumper/blob/7.1/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-dumper/compare/v6.4.7...v6.4.8)

---
updated-dependencies:
- dependency-name: symfony/var-dumper
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 23:02:07 +07:00
dependabot[bot]
3c627d5857
Composer(deps): Bump symfony/mailer from 6.4.7 to 6.4.8 (#1485)
Bumps [symfony/mailer](https://github.com/symfony/mailer) from 6.4.7 to 6.4.8.
- [Release notes](https://github.com/symfony/mailer/releases)
- [Changelog](https://github.com/symfony/mailer/blob/7.1/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailer/compare/v6.4.7...v6.4.8)

---
updated-dependencies:
- dependency-name: symfony/mailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 23:01:59 +07:00
Roman Kelesidis
430825c3e7
Minor improvements (#1482)
* Minor improvements

* Update functions.php

* Update functions.php

* Update CHANGELOG.md

* Update composer.lock
2024-05-23 23:31:21 +07:00
Roman Kelesidis
f584cf5d29
Minor improvements (#1481)
* Minor improvements

* Updated

* Update functions.php

* Updated

* Update .gitignore

* Updated

* Update CHANGELOG.md
2024-05-22 14:21:07 +07:00
Roman Kelesidis
9ada2c63b9
Minor improvements (#1480)
* Some enhancements for updates checker

* Updated

* Update updater.php

* Update init_bb.php

* Update CHANGELOG.md

* Update globals.css

* Updated

* Update functions.php

* Update init_bb.php

* Updated

* Updated

* Updated

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Updated

* Update .gitignore

* Update init_bb.php

* Updated

* Update CHANGELOG.md
2024-05-11 00:44:35 +07:00
Yury Pikhtarev
784b608691
New Crowdin updates (#1479)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-05-10 00:44:04 +07:00
Roman Kelesidis
459fba6b86
Show client country in seeders / leechers list 🌍 (#1478)
* Show client country in seeders / leechers list

* Update functions.php

* Update functions.php

* Update functions.php

* Updated

* Update displaying_torrent.php

* Update functions.php

* Update viewtopic_torrent.tpl

* Update viewtopic_torrent.tpl

* Update functions.php

* Update functions.php

* Update functions.php

* Update functions.php

* Update config.php

* Updated

* Updated

* Updated

* Updated

* Update update_geolite_db.php

* Update update_geolite_db.php

* Updated

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Updated

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Update update_geolite_db.php

* Updated

* Update viewtopic_torrent.tpl

* Updated

* Update composer.lock

* Update defines.php

* Updated

* Update init_bb.php

* Update CHANGELOG.md
2024-05-08 22:13:30 +07:00
Roman Kelesidis
2fa3520872
Minor improvements (#1477)
* Minor improvements

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-05-07 23:52:06 +07:00
Yury Pikhtarev
b9147768cc
New Crowdin updates (#1476)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-05-07 23:05:56 +07:00
Roman Kelesidis
e7782e34e6
Some improvements for updater (#1475)
* Some improvements for updater

* Update CHANGELOG.md
2024-05-07 22:26:26 +07:00
Roman Kelesidis
30df72e331
Minor improvements (#1472)
* Minor improvements

* Update torrent_announce_urls.php

* Updated

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update functions.php
2024-05-07 16:22:43 +07:00
Yury Pikhtarev
54c8b0bf2c
New Crowdin updates (#1473)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-05-06 08:59:16 +07:00
Roman Kelesidis
08fb1e3f7c
Some enhancements for flags (#1471)
* Some enhancements for flags

* Update CHANGELOG.md
2024-05-06 00:03:52 +07:00
Roman Kelesidis
b80fa8857d
Some enhancements for flags (#1470)
* Some enhancements for flags

* Update main.php

* Upload

* Update functions.php

* Update functions.php

* Update main.php

* Update CHANGELOG.md
2024-05-05 23:48:00 +07:00
Roman Kelesidis
5774c14686 Update CHANGELOG.md 2024-05-05 10:28:26 +07:00
Yury Pikhtarev
df02844915
New Crowdin updates (#1468)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2024-05-05 10:27:48 +07:00
Roman Kelesidis
e49b81de0e
Minor improvements (#1469)
* Minor improvements

* Update CHANGELOG.md
2024-05-05 10:27:23 +07:00
Roman Kelesidis
3c297fce24
Minor improvements (#1467)
* Minor improvements

* Update CHANGELOG.md

* Update change_user_rank.php
2024-05-05 09:51:16 +07:00
Roman Kelesidis
65a7b89a9e
Added support for attribute to ignoring auto spoilers opening (#1466)
* Added support for attribute to ignoring auto spoilers opening

* Update CHANGELOG.md
2024-05-05 00:50:28 +07:00
Roman Kelesidis
f1f59cbd55
Temp: Removed showing forum description in viewforum.php (#1465)
* Temp: Removed showing forum description in viewforum.php

* Update CHANGELOG.md
2024-05-05 00:13:29 +07:00
Roman Kelesidis
8b459e8670
Guests can view polls (#1464)
* Guests can view polls

* Update CHANGELOG.md
2024-05-04 23:48:27 +07:00
Roman Kelesidis
9cfd3d6a00
Minor improvements (#1462)
* Minor improvements

* Update viewforum.php

* Update posting.php

* Updated

* Update admin_forums.php

* Update CHANGELOG.md
2024-05-04 12:58:51 +07:00
Roman Kelesidis
0ca5fe3abe
Minor improvements (#1461)
* Minor improvements

* Update edit_user_profile.php

* Update init_bb.php

* Update init_bb.php

* Update init_bb.php

* Update usercp_register.tpl

* Update admin_ug_auth.php

* Update admin_ug_auth.tpl

* Update tpl_config.php

* Update viewprofile.php

* Update group_membership.php

* Update group_membership.php

* Update viewtopic.tpl

* Update admin_ug_auth.php

* Update functions.php

* Update admin_ug_auth.php

* Update admin_ug_auth.php

* Update admin_ug_auth.php

* Update admin_forums.php

* Update admin_forums.php

* Update posting_tpl.php

* Update viewforum.php

* Update viewforum.tpl

* Update admin_forums.php

* Update admin_ug_auth.php

* Update admin_ug_auth.php

* Update usercp_viewprofile.tpl

* Update register.php

* Update admin_ug_auth.php

* Update admin_ug_auth.php

* Update posts.php

* Update posting_tpl.php

* Update viewforum.php

* Update admin_forums.php

* Update admin_forums.php

* Update admin_forumauth.php

* Update index_map.tpl

* Update index.tpl

* Update index.tpl

* Update group.php

* Update viewtopic.tpl

* Update change_torrent.php

* Update viewtopic.tpl

* Update viewtopic.php

* Update viewtopic.php

* Update admin_log.php

* Update search.php

* Update usercp_register.tpl

* Update CHANGELOG.md
2024-05-04 11:58:21 +07:00
Roman Kelesidis
9d3bc2c178
Minor improvements (#1458)
* Minor improvements

* Updated

* Update modcp.php

* Update modcp.tpl

* Update modcp.php

* Update modcp.tpl

* Update viewtopic.php

* Update posting.php

* Updated

* Update viewtopic.tpl

* Update admin_log.tpl

* Updated

* Update modcp.php

* Update modcp.php

* Update CHANGELOG.md

* Revert "Update CHANGELOG.md"

This reverts commit 7933176d33.

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-05-01 12:36:06 +07:00
Roman Kelesidis
c0273117b5 Merge branch 'master' of https://github.com/torrentpier/torrentpier 2024-04-30 14:31:17 +07:00
Roman Kelesidis
2138f9b04e Update CHANGELOG.md 2024-04-30 14:31:08 +07:00
dependabot[bot]
4f5f1ad491
Composer(deps-dev): Bump symfony/var-dumper from 6.4.6 to 6.4.7 (#1460)
Bumps [symfony/var-dumper](https://github.com/symfony/var-dumper) from 6.4.6 to 6.4.7.
- [Release notes](https://github.com/symfony/var-dumper/releases)
- [Changelog](https://github.com/symfony/var-dumper/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-dumper/compare/v6.4.6...v6.4.7)

---
updated-dependencies:
- dependency-name: symfony/var-dumper
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-30 14:30:22 +07:00
dependabot[bot]
bc94be5a7c
Composer(deps): Bump symfony/mailer from 6.4.6 to 6.4.7 (#1459)
Bumps [symfony/mailer](https://github.com/symfony/mailer) from 6.4.6 to 6.4.7.
- [Release notes](https://github.com/symfony/mailer/releases)
- [Changelog](https://github.com/symfony/mailer/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailer/compare/v6.4.6...v6.4.7)

---
updated-dependencies:
- dependency-name: symfony/mailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-30 14:30:09 +07:00
Roman Kelesidis
fa7a2c3005
Fixed quote selection for smiles (#1457)
* Fixed quote selection for smiles

* Update CHANGELOG.md
2024-04-26 14:32:40 +07:00
Yury Pikhtarev
613f4fc364
New Crowdin updates (#1456)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-04-24 17:25:59 +07:00
Roman Kelesidis
24dbd25d9b
Minor improvements (#1452)
* Minor improvements

* Updated

* Create updater.php

* Revert "Create updater.php"

This reverts commit be2f3d5006.

* Revert "Updated"

This reverts commit 6aae9339cd.

* Updated

* Update board_maintenance.php

* Updated

* Updated

* Update build_check_updates.php

* Updated

* Update board_maintenance.php

* Update functions.php

* Updated

* Update defines.php

* Updated

* Updated

* Updater

* Updated

* Update .gitignore

* Update

* Update updater.php

* Updated

* Update tracker.php

* Update .htaccess

* Update tracker.php

* Update tracker.tpl

* Update CHANGELOG.md
2024-04-24 15:01:37 +07:00
dependabot[bot]
b7b110906b
Composer(deps): Bump claviska/simpleimage from 4.1.0 to 4.2.0 (#1455)
Bumps [claviska/simpleimage](https://github.com/claviska/SimpleImage) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/claviska/SimpleImage/releases)
- [Commits](https://github.com/claviska/SimpleImage/compare/4.1.0...4.2.0)

---
updated-dependencies:
- dependency-name: claviska/simpleimage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-16 13:14:15 +07:00
dependabot[bot]
d1af4a6c02
Composer(deps): Bump monolog/monolog from 3.5.0 to 3.6.0 (#1454)
Bumps [monolog/monolog](https://github.com/Seldaek/monolog) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/Seldaek/monolog/releases)
- [Changelog](https://github.com/Seldaek/monolog/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Seldaek/monolog/compare/3.5.0...3.6.0)

---
updated-dependencies:
- dependency-name: monolog/monolog
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 22:00:06 +07:00
Yury Pikhtarev
55f07fec27
New Crowdin updates (#1453)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-04-13 20:42:29 +07:00
Roman Kelesidis
a255640f28
Added updates checker ⚙️ (#1451)
* Added update checker

* Update index.php

* Update index.php

* Updated

* Update index.php

* Update index.php

* Update index.tpl

* Update CHANGELOG.md
2024-04-13 16:58:48 +07:00
Roman Kelesidis
d4eb4fe680
Minor improvements (#1450)
* Minor improvements

* Update CHANGELOG.md

* Update memberlist.php
2024-04-13 15:14:15 +07:00
Roman Kelesidis
6d5d5b9669 Merge branch 'master' of https://github.com/torrentpier/torrentpier 2024-04-11 22:54:23 +07:00
Roman Kelesidis
c2d6a45235 Update CHANGELOG.md 2024-04-11 22:54:16 +07:00
Roman Kelesidis
a43152b421
Added preview for country flags while editing (#1448) 2024-04-11 22:53:20 +07:00
Roman Kelesidis
0b2246b50b Update CHANGELOG.md 2024-04-11 22:33:12 +07:00
Yury Pikhtarev
aae159f01b
New Crowdin updates (#1447)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-04-11 22:31:45 +07:00
Roman Kelesidis
71a372ed66
Minor improvements (#1446)
* Minor improvements

* Updated

* Update edit_user_profile.php

* Update CHANGELOG.md
2024-04-11 19:00:02 +07:00
Roman Kelesidis
edcdaad690 Update CHANGELOG.md 2024-04-11 18:31:17 +07:00
Roman Kelesidis
380fb8b557
Some enhancements (#1445)
* Minor improvements

* Update CHANGELOG.md

* Updated

* Update functions.php

* Updated

* Update functions.php

* Updated

* Update Select.php

* Updated

* Update functions.php

* Updated

* Update register.php

* Update main.php

* Updated

* Update functions.php

* Updated

* Update usercp_viewprofile.tpl

* Update main.php

* Updated

* Update CHANGELOG.md
2024-04-11 18:30:19 +07:00
Yury Pikhtarev
b9f197ce22
New Crowdin updates (#1444)
* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-04-11 15:25:50 +07:00
Roman Kelesidis
8c925cc303
Minor improvements (#1443)
* Minor improvements

* Updated

* Update terms.php

* Update main.php

* Update CHANGELOG.md

* Update memberlist.tpl
2024-04-11 15:11:12 +07:00
Roman Kelesidis
564fc25cbc
Added support for APCu caching method (#1442)
* Added support for APCu caching method

* Create APCu.php

* Update APCu.php

* Updated

* Update CHANGELOG.md
2024-04-10 19:38:53 +07:00
Roman Kelesidis
2472608c6d
Code refactoring (#1441)
* Code refactoring

* Update viewtopic.php

* Update viewforum.php

* Update posting.php

* Update viewtopic.php

* Revert "Code refactoring"

This reverts commit e4ac08e377.

* Revert "Update viewforum.php"

This reverts commit 1ee6321385.

* Update viewforum.php

* Update viewtopic.php

* Update viewtopic.php

* Update viewtopic.php

* Update viewtopic.php

* Update dl_list.php

* Update posting.php

* Update posting.php

* Update posting.php

* Update viewprofile.php

* Update email.php

* Update viewtopic.php

* Update functions.php

* Update posting.php

* Update viewtopic.php

* Update CHANGELOG.md
2024-04-10 18:35:55 +07:00
Roman Kelesidis
8ba00d5966
Demo mode: Allow registering torrents by default (#1440)
* Demo mode: Allow registering torrents by default

* Update CHANGELOG.md
2024-04-06 11:10:21 +07:00
Roman Kelesidis
cfcda68a99
Improved app debug (#1438)
* Improved app debug

* Updated

* Update config.php

* Update Dev.php

* Update Dev.php

* Update Dev.php

* Update Dev.php

* Update config.php

* Update Dev.php

* Update CHANGELOG.md
2024-04-06 10:41:14 +07:00
dependabot[bot]
521af98b69
Composer(deps-dev): Bump symfony/var-dumper from 6.4.4 to 6.4.6 (#1436)
Bumps [symfony/var-dumper](https://github.com/symfony/var-dumper) from 6.4.4 to 6.4.6.
- [Release notes](https://github.com/symfony/var-dumper/releases)
- [Changelog](https://github.com/symfony/var-dumper/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-dumper/compare/v6.4.4...v6.4.6)

---
updated-dependencies:
- dependency-name: symfony/var-dumper
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-03 14:04:00 +07:00
dependabot[bot]
6e4ddfcca7
Composer(deps): Bump symfony/mailer from 6.4.4 to 6.4.6 (#1437)
Bumps [symfony/mailer](https://github.com/symfony/mailer) from 6.4.4 to 6.4.6.
- [Release notes](https://github.com/symfony/mailer/releases)
- [Changelog](https://github.com/symfony/mailer/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailer/compare/v6.4.4...v6.4.6)

---
updated-dependencies:
- dependency-name: symfony/mailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-03 14:03:36 +07:00
Roman Kelesidis
3b4aa3621b
Minor improvements (#1435)
* Minor improvements

* Update config.php

* Updated

* Update Dev.php

* Revert "Update Dev.php"

This reverts commit 0540ceaa0b.

* Revert "Updated"

This reverts commit e95b14b8c0.

* Updated
2024-04-03 13:12:57 +07:00
Roman Kelesidis
f69476adb9 Release v2.4.2 🐯 2024-03-30 15:18:55 +07:00
Yury Pikhtarev
847e68c48e
New Crowdin updates (#1434)
* New translations main.php (Russian)

* New translations main.php (Russian)
2024-03-29 08:37:32 +07:00
Roman Kelesidis
1f08637a1f
Don't requires fill textarea for mod comment deleting (#1433)
* Don't requires fill textarea for mod comment deleting

* Update CHANGELOG.md
2024-03-27 18:45:48 +07:00
Roman Kelesidis
2898887806
PHP 8.2: Fixed creation of dynamic property (#1432)
* PHP 8.2: Fixed creation of dynamic property

* Update CHANGELOG.md
2024-03-27 18:33:38 +07:00
Roman Kelesidis
b952ec7158
Fixed broken searching of attachments via ACP (#1431)
* Fixed broken searching of attachments via ACP

* Update CHANGELOG.md
2024-03-21 22:51:51 +07:00
Roman Kelesidis
4b486e377e
log_error(): Hide Referer string if empty (#1430)
* log_error(): Hide Referer string if empty

* Update CHANGELOG.md
2024-03-17 14:42:22 +07:00
Roman Kelesidis
a8689cf575 Update CHANGELOG.md 2024-03-16 22:16:41 +07:00
Yury Pikhtarev
9a586d320e
New Crowdin updates (#1429)
* New translations admin_send_email.html (Portuguese, Brazilian)

* New translations group_added.html (Portuguese, Brazilian)

* New translations group_approved.html (Portuguese, Brazilian)

* New translations group_approved.html (Portuguese, Brazilian)

* New translations group_request.html (Portuguese, Brazilian)
2024-03-16 22:13:29 +07:00
Roman Kelesidis
d5cc52eb72
Make post date clickable in posting.php (#1427)
* Make post date clickable (Link to topic)

* Update CHANGELOG.md
2024-03-12 19:03:58 +07:00
Yury Pikhtarev
4c5b1b18eb
New Crowdin updates (#1426)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-03-11 17:58:50 +07:00
Roman Kelesidis
a97f1ac784
Some improvements for Acronym mod (#1425)
* Some improvements for Acronym mod

* Update CHANGELOG.md

* Update BBCode.php
2024-03-11 16:21:43 +07:00
dependabot[bot]
ff75329351
Composer(deps): Bump arokettu/bencode from 4.1.0 to 4.2.0 (#1424)
Bumps [arokettu/bencode](https://github.com/arokettu/bencode) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/arokettu/bencode/releases)
- [Changelog](https://github.com/arokettu/bencode/blob/master/CHANGELOG.md)
- [Commits](https://github.com/arokettu/bencode/compare/4.1.0...4.2.0)

---
updated-dependencies:
- dependency-name: arokettu/bencode
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-11 15:47:41 +07:00
Roman Kelesidis
ad16a77b89
Minor improvements (#1422)
* Minor improvements

* Update tracker.tpl

* Update tracker.php

* Update CHANGELOG.md
2024-03-07 18:12:20 +07:00
Roman Kelesidis
6676f5b4f3 Update CHANGELOG.md 2024-03-05 23:22:00 +07:00
Roman Kelesidis
5a8f431215
Minor improvements (#1418)
* Minor improvements

* Update viewforum.tpl

* Update manage_user.php

* Update manage_user.php

* Update manage_admin.php

* Update manage_user.php

* Update CHANGELOG.md
2024-03-05 23:20:51 +07:00
Roman Kelesidis
96d076f9d1 Update CHANGELOG.md 2024-03-05 17:36:24 +07:00
dependabot[bot]
8dc653d279
Composer(deps): Bump claviska/simpleimage from 4.0.6 to 4.1.0 (#1421)
Bumps [claviska/simpleimage](https://github.com/claviska/SimpleImage) from 4.0.6 to 4.1.0.
- [Release notes](https://github.com/claviska/SimpleImage/releases)
- [Commits](https://github.com/claviska/SimpleImage/compare/4.0.6...4.1.0)

---
updated-dependencies:
- dependency-name: claviska/simpleimage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-05 13:11:17 +07:00
Yury Pikhtarev
cbb463124b
New Crowdin updates (#1420)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-03-05 11:31:46 +07:00
Roman Kelesidis
77fa47b5ce
Added BBCode Acronym tag (#1419)
* Added BBCode Acronym tag

* Update CHANGELOG.md

* Update BBCode.php
2024-03-04 23:21:01 +07:00
Roman Kelesidis
d82c974a90
Show poll prefix for guests (#1417)
* Show poll results for guests

* Update viewtopic.php

* Revert "Update viewtopic.php"

This reverts commit fd3f7021a3.

* Update CHANGELOG.md
2024-03-01 17:50:49 +07:00
Roman Kelesidis
971b8da843
Hide quote button if topic locked (#1416)
* Hide quote button if topic locked

* Updated

* Update CHANGELOG.md
2024-02-29 22:07:04 +07:00
Roman Kelesidis
f605a187ce Update CHANGELOG.md 2024-02-28 19:51:46 +07:00
dependabot[bot]
3c3191f3d8
Composer(deps-dev): Bump symfony/var-dumper from 6.4.3 to 6.4.4 (#1415)
Bumps [symfony/var-dumper](https://github.com/symfony/var-dumper) from 6.4.3 to 6.4.4.
- [Release notes](https://github.com/symfony/var-dumper/releases)
- [Changelog](https://github.com/symfony/var-dumper/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-dumper/compare/v6.4.3...v6.4.4)

---
updated-dependencies:
- dependency-name: symfony/var-dumper
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-28 19:46:06 +07:00
dependabot[bot]
6ac7578d71
Composer(deps): Bump symfony/mailer from 6.4.3 to 6.4.4 (#1414)
Bumps [symfony/mailer](https://github.com/symfony/mailer) from 6.4.3 to 6.4.4.
- [Release notes](https://github.com/symfony/mailer/releases)
- [Changelog](https://github.com/symfony/mailer/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailer/compare/v6.4.3...v6.4.4)

---
updated-dependencies:
- dependency-name: symfony/mailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-28 19:45:57 +07:00
Roman Kelesidis
daf7297c20
Added showing poll status in topic_watch.php (#1413)
* Added showing poll status in topic_watch.php

* Update CHANGELOG.md
2024-02-28 12:44:56 +07:00
Yury Pikhtarev
eece8a1eb2
New Crowdin updates (#1412)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-02-27 14:49:16 +07:00
Roman Kelesidis
635d715247
Minor improvements (#1411)
* Minor improvements

* Update CHANGELOG.md

* Update edit_user_profile.php

* Updated

* Update main.php

* Update functions.php
2024-02-27 10:03:01 +03:00
Roman Kelesidis
22511c3edc
Minor improvements (#1410)
* Minor improvements

* Update modcp.php

* Update CHANGELOG.md

* Update modcp.php
2024-02-22 18:17:43 +07:00
Roman Kelesidis
39d069016c
Minor improvements (#1409)
* Minor improvements

* Update CHANGELOG.md

* Update viewforum.tpl

* Update viewforum.php

* Update search.php

* Update globals.css

* Update modcp.php

* Update modcp.php

* Revert "Update modcp.php"

This reverts commit decd1d58da.

* Revert "Update modcp.php"

This reverts commit 866ce37218.

* Update modcp.php
2024-02-22 17:51:09 +07:00
Roman Kelesidis
f7ee6d8a57
Minor improvements (#1408)
* Minor improvements

* Update Dev.php

* Update IsHelper.php

* Update CHANGELOG.md
2024-02-20 00:04:47 +07:00
Roman Kelesidis
87034e3ad8
Minor improvements (#1406)
* Minor improvements

* Update viewtopic.tpl

* Update page_footer.php

* Update admin_forums.php

* Update CHANGELOG.md
2024-02-14 20:44:13 +07:00
Roman Kelesidis
059bc61547 Update CHANGELOG.md 2024-02-13 17:40:52 +07:00
Roman Kelesidis
2800c207fb
Minor improvements (#1405)
* Minor improvements

* Updated

* Update CHANGELOG.md
2024-02-13 17:28:47 +07:00
Yury Pikhtarev
a573f30797
New Crowdin updates (#1403)
* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations main.php (Romanian)
2024-02-13 00:24:30 +07:00
Roman Kelesidis
bf7fea1f20
Added demo mode 📺 (#1399)
* Added demo mode 📺

* Updated

* Update main.php

* Updated

* Updated

* Update admin_cron.php

* Update admin_phpinfo.php

* Updated

* Update admin_forums.php

* Update admin_extensions.php

* Update admin_ug_auth.php

* Update index.php

* Update admin_phpinfo.php

* Update admin_forums.php

* Updated

* Update admin_extensions.php

* Update register.php

* Updated

* Update mysql.sql

* Updated

* Update demo_mode.php

* Update demo_mode.php

* Update demo_mode.php

* Updated

* Update demo_mode.php

* Update demo_mode.php

* Update demo_mode.php

* Update demo_mode.php

* Update mysql.sql

* Update mysql.sql

* Update demo_mode.php

* Update admin_cron.php

* Update admin_phpinfo.php

* Revert "Update mysql.sql"

This reverts commit d2ec089d8f.

* Revert "Update mysql.sql"

This reverts commit dd7a584c47.

* Update mysql.sql

* Update demo_mode.php

* Updated

* Update usercp_viewprofile.tpl

* Update demo_mode.php

* Update main.php

* Update demo_mode.php

* Updated

* Update admin_cron.php

* Update admin_cron.php

* Update edit_user_profile.php

* Update CHANGELOG.md

* Update viewtopic.tpl

* Update CHANGELOG.md
2024-02-12 22:30:32 +07:00
Yury Pikhtarev
ab79ab9aea
New Crowdin updates (#1402)
* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations main.php (Romanian)

* New translations icon_code.gif (Romanian)

* New translations icon_code.gif (French)

* New translations icon_code.gif (Spanish)

* New translations icon_code.gif (Afrikaans)

* New translations icon_code.gif (Arabic)

* New translations icon_code.gif (Belarusian)

* New translations icon_code.gif (Bulgarian)

* New translations icon_code.gif (Catalan)

* New translations icon_code.gif (Czech)

* New translations icon_code.gif (Danish)

* New translations icon_code.gif (German)

* New translations icon_code.gif (Greek)

* New translations icon_code.gif (Finnish)

* New translations icon_code.gif (Hebrew)

* New translations icon_code.gif (Hungarian)

* New translations icon_code.gif (Armenian)

* New translations icon_code.gif (Italian)

* New translations icon_code.gif (Japanese)

* New translations icon_code.gif (Georgian)

* New translations icon_code.gif (Korean)

* New translations icon_code.gif (Lithuanian)

* New translations icon_code.gif (Dutch)

* New translations icon_code.gif (Norwegian)

* New translations icon_code.gif (Polish)

* New translations icon_code.gif (Russian)

* New translations icon_code.gif (Slovak)

* New translations icon_code.gif (Slovenian)

* New translations icon_code.gif (Albanian)

* New translations icon_code.gif (Serbian (Cyrillic))

* New translations icon_code.gif (Swedish)

* New translations icon_code.gif (Turkish)

* New translations icon_code.gif (Ukrainian)

* New translations icon_code.gif (Chinese Traditional)

* New translations icon_code.gif (English)

* New translations icon_code.gif (Vietnamese)

* New translations icon_code.gif (Portuguese, Brazilian)

* New translations icon_code.gif (Indonesian)

* New translations icon_code.gif (Thai)

* New translations icon_code.gif (Croatian)

* New translations icon_code.gif (Kazakh)

* New translations icon_code.gif (Estonian)

* New translations icon_code.gif (Latvian)

* New translations icon_code.gif (Azerbaijani)

* New translations icon_code.gif (Hindi)

* New translations icon_code.gif (Bosnian)

* New translations icon_code.gif (Uzbek)

* New translations icon_code.gif (Tajik)
2024-02-12 22:27:33 +07:00
Roman Kelesidis
c116fe970b
Added ability to view post_text of topic (#1401)
* Added ability to view `post_text` of topic

* Updated

* Update viewtopic.tpl

* Update view_post.php

* Update view_post.php

* Update view_post.php

* Update view_post.php

* Updated

* Update viewtopic.tpl

* Create _source.gif

* Create icon_code.gif

* Update tpl_config.php

* Updated

* Updated

* Updated

* Updated

* Update config.php

* Update icon_code.gif

* Updated

* Delete icon_code.gif

* Update CHANGELOG.md
2024-02-12 21:06:37 +07:00
Roman Kelesidis
a965209be0
Fixed Undefined variable $wordCensor (#1400)
* Fixed Undefined variable $wordCensor

* Update CHANGELOG.md
2024-02-12 17:34:05 +07:00
Roman Kelesidis
3b9590c5ef
Update README.md 2024-02-12 10:31:47 +07:00
Roman Kelesidis
5182570731
Update README.md 2024-02-12 10:28:52 +07:00
Roman Kelesidis
d29af372c4
Update README.md 2024-02-12 10:27:11 +07:00
Roman Kelesidis
73e0e246a2 Update README.md 2024-02-11 13:04:30 +07:00
Roman Kelesidis
7c703164d2
Minor improvements (#1398)
* Minor improvements

* Update viewtopic.php

* Update functions.php

* Update functions.php

* Update usercp_register.tpl

* Update register.php

* Update register.php

* Update CHANGELOG.md
2024-02-10 22:22:26 +07:00
Roman Kelesidis
a63b25f8ba Revert "Minor improvements (#1394)"
This reverts commit 392186c36e.
2024-02-10 21:14:49 +07:00
Roman Kelesidis
5e691a0279 Revert "Minor improvements (#1395)"
This reverts commit 679d422a2a.
2024-02-10 21:14:19 +07:00
Roman Kelesidis
a63ec7a4f5
Added support for rutracker font BBCode tag (#1397)
* Added support for rutracker font BBCode tag

* Update CHANGELOG.md
2024-02-10 20:51:08 +07:00
Roman Kelesidis
679d422a2a
Minor improvements (#1395)
* Minor improvements

* Updated

* Update functions.php

* Update functions.php

* Update mysql.sql

* Update viewtopic.php

* Update CHANGELOG.md
2024-02-09 18:43:03 +07:00
Roman Kelesidis
392186c36e
Minor improvements (#1394)
* Minor improvements

* Update functions.php

* Update CHANGELOG.md
2024-02-09 01:44:23 +07:00
Roman Kelesidis
09b49151ee Update CHANGELOG.md 2024-02-08 23:21:07 +07:00
Yury Pikhtarev
0f8c6dc048
New Crowdin updates (#1392)
* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations main.php (Romanian)

---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2024-02-08 23:18:25 +07:00
Roman Kelesidis
d5390132ec
Improved word censor 🤐 (#1393)
* Improved default word censor

* Updated

* Updated

* Updated

* Update Censor.php

* Update CHANGELOG.md

* Updated
2024-02-08 23:17:09 +07:00
Roman Kelesidis
800cd714ef Merge branch 'master' of https://github.com/torrentpier/torrentpier 2024-02-08 17:58:55 +07:00
Roman Kelesidis
1bbe3798a6 Update CHANGELOG.md 2024-02-08 17:58:46 +07:00
Yury Pikhtarev
b6fba7fe04
New Crowdin updates (#1389)
* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations main.php (Romanian)
2024-02-08 17:58:25 +07:00
Roman Kelesidis
fdc56b42c1
Minor improvements (#1391)
* Minor improvements

* Update CHANGELOG.md
2024-02-08 17:57:03 +07:00
Roman Kelesidis
e6e802a6a6
Fixed issue with poll_users cleaning at every cron job startup (#1390)
* Fixed issue with poll_users cleaning at every cron job startup

* Update CHANGELOG.md
2024-02-08 17:46:14 +07:00
Roman Kelesidis
58af3dff58
Added mod "Reason to move topic" (#1388)
* Added mod "Reason to move topic"

* Update CHANGELOG.md
2024-02-08 15:41:10 +07:00
Roman Kelesidis
6585b3124d
Used hashing for filenames generation (#1385)
* Some code cleanup...

* Used hashing for filenames generation

* Revert "Some code cleanup..."

This reverts commit 2dca4c3fb3.

* Update Attach.php

* Update Attach.php

* Update Attach.php
2024-02-08 15:25:05 +07:00
Roman Kelesidis
f9df8fbe80 Update CHANGELOG.md 2024-02-08 14:35:51 +07:00
Roman Kelesidis
b0124c8bb2
Some code cleanup... (#1386) 2024-02-08 14:31:53 +07:00
Roman Kelesidis
80fe5a5e60
Removed wbr() (#1387) 2024-02-08 14:30:22 +07:00
Yury Pikhtarev
c0117d3616
New Crowdin updates (#1384)
* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Romanian)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-02-08 07:06:41 +07:00
Roman Kelesidis
cebdafb82c
Minor improvements (#1383)
* Minor improvements

* Update CHANGELOG.md
2024-02-08 00:52:38 +07:00
Roman Kelesidis
7d0f2e1ace
Minor improvements (#1382)
* Minor improvements

* Update viewforum.tpl

* Update config.php

* Update admin_forums.tpl

* Update CHANGELOG.md

* Update admin_forums.tpl
2024-02-07 17:25:35 +07:00
Roman Kelesidis
fed538625d
Created template file for AJAX quick actions (#1381)
* Created template file for AJAX quick actions

* Update CHANGELOG.md
2024-02-06 21:20:49 +07:00
Roman Kelesidis
65d9f6d864
Some bugfixes (#1380)
* Some bugfixes

* Update CHANGELOG.md

* Updated

* Update privmsg.php

* Update displaying_torrent.php

* Update privmsg.php
2024-02-06 14:30:00 +07:00
Roman Kelesidis
1da27ad708 Release v2.4.1 💔 2024-02-04 23:12:02 +07:00
Roman Kelesidis
87a300c74c
Minor improvements (#1373)
* Minor improvements

* Update CHANGELOG.md

* Updated

* Update index.php

* Update dl_list.php

* Revert "Update dl_list.php"

This reverts commit 6b16ecaaf7.

* Revert "Update index.php"

This reverts commit a42d3f01fc.

* Revert "Updated"

This reverts commit 360c4cf305.

* Updated

* Updated
2024-02-04 23:01:43 +07:00
Roman Kelesidis
1356ad6450 Update CHANGELOG.md 2024-02-04 22:37:19 +07:00
Roman Kelesidis
dc7d1be9ee
Fixed quick reply issue (#1379)
* Fixed quick reply issue

* Update CHANGELOG.md
2024-02-04 22:36:07 +07:00
Roman Kelesidis
51985d4c48 Update CHANGELOG.md 2024-02-04 17:22:26 +07:00
Roman Kelesidis
f7752b8f6b Update CHANGELOG.md 2024-02-04 17:21:52 +07:00
Roman Kelesidis
203c916fb9
Some reported bugfixes (#1378)
* Some reported bugfixes

* Update privmsg.php

* Update privmsg.php

* Update privmsg.php

* Update privmsg.php

* Update privmsg.php

* Update CHANGELOG.md
2024-02-04 17:20:32 +07:00
Roman Kelesidis
acbe838c23
Fixed negative integer seed bonus accrual (#1377)
* Fixed negative integer seed bonus accrual

* Update CHANGELOG.md
2024-02-04 13:59:21 +07:00
Roman Kelesidis
8abd491d5a Update CHANGELOG.md 2024-02-03 01:44:29 +07:00
Yury Pikhtarev
fd4c6321f6
New Crowdin updates (#1376)
* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations main.php (Romanian)
2024-02-03 01:42:37 +07:00
Roman Kelesidis
a716283be0
Added [indent] BBCode tag (#1375)
* Added `[indent]` BBCode tag

* Update CHANGELOG.md

* Update main.php

* Update posting_editor.tpl
2024-02-02 21:31:29 +07:00
Roman Kelesidis
73eedb5c65
Fixed: mb_strlen(): Passing null parameter (#1374)
* Fixed: mb_strlen(): Passing null parameter

* Update CHANGELOG.md

* Update functions.php
2024-02-02 21:13:36 +07:00
Roman Kelesidis
5a975f20b8 Update CHANGELOG.md 2024-02-01 22:22:32 +07:00
Roman Kelesidis
0f1f5baa65
Added ability to send debug via Telegram (#1372)
* Added ability to send debug via Telegram

* Update CHANGELOG.md
2024-02-01 22:21:00 +07:00
Roman Kelesidis
97a9b25bdd
Fixed admin_terms.php textarea reset in preview mode (#1371)
* Fixed `admin_terns.php` textarea reset in preview mode

* Update CHANGELOG.md
2024-02-01 18:08:38 +07:00
Yury Pikhtarev
dd70686fa2
New Crowdin updates (#1370)
* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations main.php (Romanian)

* New translations sidebar1.html (Romanian)

* New translations sidebar1.html (French)

* New translations sidebar1.html (Spanish)

* New translations sidebar1.html (Afrikaans)

* New translations sidebar1.html (Arabic)

* New translations sidebar1.html (Belarusian)

* New translations sidebar1.html (Bulgarian)

* New translations sidebar1.html (Catalan)

* New translations sidebar1.html (Czech)

* New translations sidebar1.html (Danish)

* New translations sidebar1.html (German)

* New translations sidebar1.html (Greek)

* New translations sidebar1.html (Finnish)

* New translations sidebar1.html (Hebrew)

* New translations sidebar1.html (Hungarian)

* New translations sidebar1.html (Armenian)

* New translations sidebar1.html (Italian)

* New translations sidebar1.html (Japanese)

* New translations sidebar1.html (Georgian)

* New translations sidebar1.html (Korean)

* New translations sidebar1.html (Lithuanian)

* New translations sidebar1.html (Dutch)

* New translations sidebar1.html (Norwegian)

* New translations sidebar1.html (Polish)

* New translations sidebar1.html (Russian)

* New translations sidebar1.html (Slovak)

* New translations sidebar1.html (Slovenian)

* New translations sidebar1.html (Albanian)

* New translations sidebar1.html (Serbian (Cyrillic))

* New translations sidebar1.html (Swedish)

* New translations sidebar1.html (Turkish)

* New translations sidebar1.html (Ukrainian)

* New translations sidebar1.html (Chinese Traditional)

* New translations sidebar1.html (English)

* New translations sidebar1.html (Vietnamese)

* New translations sidebar1.html (Portuguese, Brazilian)

* New translations sidebar1.html (Indonesian)

* New translations sidebar1.html (Thai)

* New translations sidebar1.html (Croatian)

* New translations sidebar1.html (Kazakh)

* New translations sidebar1.html (Estonian)

* New translations sidebar1.html (Latvian)

* New translations sidebar1.html (Azerbaijani)

* New translations sidebar1.html (Hindi)

* New translations sidebar1.html (Bosnian)

* New translations sidebar1.html (Uzbek)

* New translations sidebar1.html (Tajik)
2024-02-01 17:46:54 +07:00
Roman Kelesidis
c2a2924749 Update CHANGELOG.md 2024-02-01 15:34:47 +07:00
Roman Kelesidis
37dba7522e
Minor improvements (#1369)
* Minor improvements

* Update CHANGELOG.md

* Updated
2024-02-01 15:24:48 +07:00
Roman Kelesidis
3542c083c5 Revert "Extend css contrast attributes (#1349)"
This reverts commit 39885911e7.
2024-02-01 15:23:37 +07:00
Roman Kelesidis
727cbc1388 Revert "CSS hover for news (#1359)"
This reverts commit c090a5dbe6.
2024-02-01 14:52:00 +07:00
Roman Kelesidis
7323f5cd34
Added [box] BBCode tag (#1368)
* Added `[box]` BBCode tag

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-02-01 14:43:05 +07:00
dependabot[bot]
c82147a4a0
Composer(deps-dev): Bump symfony/var-dumper from 6.4.2 to 6.4.3 (#1365)
Bumps [symfony/var-dumper](https://github.com/symfony/var-dumper) from 6.4.2 to 6.4.3.
- [Release notes](https://github.com/symfony/var-dumper/releases)
- [Changelog](https://github.com/symfony/var-dumper/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-dumper/compare/v6.4.2...v6.4.3)

---
updated-dependencies:
- dependency-name: symfony/var-dumper
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 13:11:51 +07:00
dependabot[bot]
2f59004d0e
Composer(deps): Bump arokettu/torrent-file from 5.2.1 to 5.2.2 (#1366)
Bumps [arokettu/torrent-file](https://github.com/arokettu/torrent-file) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/arokettu/torrent-file/releases)
- [Changelog](https://github.com/arokettu/torrent-file/blob/master/CHANGELOG.md)
- [Commits](https://github.com/arokettu/torrent-file/compare/5.2.1...5.2.2)

---
updated-dependencies:
- dependency-name: arokettu/torrent-file
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 13:11:21 +07:00
dependabot[bot]
d40fe39a1b
Composer(deps): Bump symfony/mailer from 6.4.2 to 6.4.3 (#1367)
Bumps [symfony/mailer](https://github.com/symfony/mailer) from 6.4.2 to 6.4.3.
- [Release notes](https://github.com/symfony/mailer/releases)
- [Changelog](https://github.com/symfony/mailer/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailer/compare/v6.4.2...v6.4.3)

---
updated-dependencies:
- dependency-name: symfony/mailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 13:08:55 +07:00
Roman Kelesidis
0317664383
Moved announcer url autofill into cron (#1364)
* Moved announcer autofill into cron

* Update CHANGELOG.md
2024-02-01 00:13:48 +07:00
Roman Kelesidis
f87578c94f
Used modern-normalize instead of outdated nornalize-css (#1363)
* Used `modern-normalize` instead of outdated `nornalizecss`

* Update filelist.php

* Update page_header.tpl

* Update sidebar1.html

* Update CHANGELOG.md
2024-01-31 23:59:22 +07:00
Cønstantine Kovalensky
eb48bad47b
Code re-formatting (#1362) 2024-01-31 09:30:52 +04:00
Roman Kelesidis
46910d3015
Minor improvements (#1358)
* Minor improvements

* Update viewtopic_torrent.tpl

* Update admin_rebuild_search.php

* Updated

* Apply fixes from StyleCI (#1361)

Co-authored-by: StyleCI Bot <bot@styleci.io>

* Update CHANGELOG.md

---------

Co-authored-by: Yury Pikhtarev <exileum@icloud.com>
Co-authored-by: StyleCI Bot <bot@styleci.io>
2024-01-30 22:18:05 +07:00
Cønstantine Kovalensky
ae613c9c70
Counter is not precise (#1360) 2024-01-30 18:16:33 +04:00
Cønstantine Kovalensky
c090a5dbe6
CSS hover for news (#1359) 2024-01-28 12:41:28 +04:00
Cønstantine Kovalensky
827ce7998d
Add referrer "origin" policy to repository links (#1357) 2024-01-28 10:46:06 +04:00
Roman Kelesidis
be08d2bba9
Some enhancements for topic_tpl (#1356)
* Some enhancements for topic_tpl

* Update CHANGELOG.md

* Update posting_tpl.tpl
2024-01-28 13:40:36 +07:00
Roman Kelesidis
0a25af04e3
Minor improvements (#1355)
* Minor improvements

* Update CHANGELOG.md
2024-01-28 10:17:19 +07:00
Cønstantine Kovalensky
0a34d63ab0
Code re-formatting (#1354) 2024-01-27 22:28:31 +04:00
Roman Kelesidis
89d8415865
Minor improvements (#1353)
* Minor improvements

* Update CHANGELOG.md
2024-01-28 01:23:24 +07:00
Roman Kelesidis
a8b8278352
Fixed broken user dl status (#1351)
* Fixed broken user dl status

* Update viewtopic_torrent.tpl

* Update displaying_torrent.php

* Update displaying_torrent.php

* Update displaying_torrent.php

* Updated

* Update CHANGELOG.md

* Update CHANGELOG.md
2024-01-27 19:55:47 +07:00
Cønstantine Kovalensky
15080b054d
Flatten file list for hybrid files (#1350)
By Anton's advice:
https://gitlab.com/sandfox/torrent-file/-/issues/6#note_1746451068
2024-01-27 15:28:15 +04:00
Cønstantine Kovalensky
39885911e7
Extend css contrast attributes (#1349) 2024-01-27 12:36:04 +04:00
Cønstantine Kovalensky
4d9bfa6dea
[BEP47] sha1 hash files are binary by default (#1348) 2024-01-27 11:34:48 +04:00
Roman Kelesidis
c43b54b8c5
Added new flag 🕊 (#1347)
* Added new flag 🕊

* Update functions.php
2024-01-27 11:18:25 +07:00
Roman Kelesidis
66b9b7bdc4
Fixed download counter for torrents (#1346)
* Fixed download counter for torrents

* Updated

* Updated

* Update CHANGELOG.md
2024-01-27 11:04:10 +07:00
Roman Kelesidis
f993983eb0 Update CHANGELOG.md 2024-01-27 10:40:07 +07:00
Roman Kelesidis
8b78253ddc
Don't update download counter if attachment not exists (#1345)
* Don't update download counter if attachment not exists

* Update CHANGELOG.md

* Update CHANGELOG.md

* Updated
2024-01-27 10:33:02 +07:00
Yury Pikhtarev
d6a3598d04
New Crowdin updates (#1344)
* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-01-27 09:58:41 +07:00
Cønstantine Kovalensky
0af44116ff
Little fix (#1343)
* Remove invalid file in directory
2024-01-27 01:05:33 +04:00
Cønstantine Kovalensky
01c7672dfa
Little fix (2) (#1342)
Use more pixelated image
2024-01-27 00:54:34 +04:00
Cønstantine Kovalensky
14fb6002b0
Little fix (#1341) 2024-01-26 23:58:14 +04:00
Cønstantine Kovalensky
306994f629
Timeline — 2.4.1 (#1340) 2024-01-26 23:19:25 +04:00
Roman Kelesidis
17522c6d8d Revert "Use constants instead of string literals (#1332)"
This reverts commit cdb33ba7a4.
2024-01-25 23:06:05 +07:00
Roman Kelesidis
7f6f49c26d
Minor improvements (#1338)
* Minor improvements

* Update CHANGELOG.md
2024-01-24 15:55:36 +07:00
Yury Pikhtarev
1bb667fb0a
New Crowdin updates (#1337)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-01-24 09:31:10 +07:00
Roman Kelesidis
f154d706f8
Added ability to view "Watching topics" of other people's (Admins) (#1336)
* Added ability to view "Watching topics" of other people's (For admins only)

* Update CHANGELOG.md
2024-01-24 01:03:38 +07:00
Yury Pikhtarev
3e92b105ad
New Crowdin updates (#1335)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-01-23 22:15:34 +07:00
Roman Kelesidis
15a5ae7b2f
Added "Random release" button in tracker.php (#1334)
* Added "Random release" button in tracker.php

* Updated

* Update CHANGELOG.md
2024-01-23 18:46:48 +07:00
Roman Kelesidis
8a81eabe30
WIP: Some enhancements in default template (Part 2) (#1322)
* Some enhancements in default template (Part 2)

* Update CHANGELOG.md

* Updated

* Revert "Updated"

This reverts commit decd0afc69.

* Updated
2024-01-23 16:13:38 +07:00
Roman Kelesidis
cdb33ba7a4
Use constants instead of string literals (#1332)
* Minor improvements

* Update CHANGELOG.md
2024-01-23 16:05:03 +07:00
Roman Kelesidis
f28b3e2d80
Added bt_announce_url autofill (#1331)
* `bt_announce_url` autofill

* Update CHANGELOG.md
2024-01-22 14:48:39 +07:00
Roman Kelesidis
1ba5576ad5
Use target="_blank" in admin for profile_url() redirects (#1330)
* Use target="_blank" in admin for profile_url() redirects

* Update CHANGELOG.md
2024-01-21 14:13:32 +07:00
Roman Kelesidis
3b4fe8008b
Fixed auth(): empty $f_access (#1329)
* Fixed auth(): empty $f_access

* Update functions.php

* Update CHANGELOG.md

* Updated

* Update functions.php

* Update functions.php
2024-01-21 02:08:13 +07:00
Roman Kelesidis
7ee71887f2
Minor improvements (#1328)
* Minor improvements

* Update CHANGELOG.md
2024-01-19 15:54:28 +07:00
Roman Kelesidis
a438031c68
Added support for fastly cdn (#1327)
* Added support for Fastly CDN

Co-Authored-By: Cønstantine Kovalensky <45331093+kovalensky@users.noreply.github.com>

* Update common.php

Co-Authored-By: Cønstantine Kovalensky <45331093+kovalensky@users.noreply.github.com>

---------

Co-authored-by: Cønstantine Kovalensky <45331093+kovalensky@users.noreply.github.com>
2024-01-19 15:27:53 +07:00
Roman Kelesidis
a46c40e106
Some bugfixes (#1326)
* Some bugfixes

* Update CHANGELOG.md

* Update functions_admin.php
2024-01-19 00:33:29 +07:00
Roman Kelesidis
1a34072e98 Update CHANGELOG.md 2024-01-17 13:57:16 +07:00
Roman Kelesidis
ccb001ca27
Sending debug errors to us to Telegram bot (#1323)
* Sending debug errors to us to Telegram bot

* Update Dev.php

* Updated

* Apply fixes from StyleCI (#1325)

Co-authored-by: StyleCI Bot <bot@styleci.io>

---------

Co-authored-by: Yury Pikhtarev <exileum@icloud.com>
Co-authored-by: StyleCI Bot <bot@styleci.io>
2024-01-17 13:53:01 +07:00
Roman Kelesidis
9b10b16460
Fixed HTTP 500 while cron running in server-side (#1321)
* Fixed HTTP 500 while cron running in server-side

* Update CHANGELOG.md
2024-01-17 13:08:43 +07:00
Roman Kelesidis
125cd11c01
Set response code in some cases (#1319)
* Set response code in some cases

* Update CHANGELOG.md
2024-01-17 11:10:18 +07:00
Roman Kelesidis
ae616f3a74
Minor improvements (#1315)
* Minor improvements

* Update functions.php

* Revert "Update functions.php"

This reverts commit 2a1c0c6ebe.

* Update functions.php

* Revert "Update functions.php"

This reverts commit b766af59ac.

* Update functions.php

* Update CHANGELOG.md
2024-01-13 15:29:32 +07:00
Roman Kelesidis
6759ce0595
Some enhancements in default template (#1312)
* Some enhancements in default template

* Updated

* Updated

* Updated

* Updated

* Updated

* Updated

* Update admin_user_search.tpl

* Updated

* Updated

* Update admin_attachments.tpl

* Updated

* Updated

* Update posting_smilies.tpl

* Updated

* Update CHANGELOG.md
2024-01-10 10:39:54 +07:00
Roman Kelesidis
1b50dde57b Update CHANGELOG.md 2024-01-10 09:13:08 +07:00
Yury Pikhtarev
b59ee4463e
New Crowdin updates (#1314)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-01-09 14:48:10 +07:00
Roman Kelesidis
0c15224d87
Used humn_size() to count average of releases in tr_stats.php (#1313) 2024-01-09 14:05:21 +07:00
Yury Pikhtarev
b1537359f6
New Crowdin updates (#1311)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2024-01-07 01:09:52 +07:00
Roman Kelesidis
119e05945f Update CHANGELOG.md 2024-01-06 22:06:54 +07:00
Roman Kelesidis
fed1633c1c Updated version number 2024-01-06 22:05:08 +07:00
Roman Kelesidis
489c02aea1
Used declensions for days in some cases (#1310)
* Minor improvements

* Update admin_forums.php

* Updated

* Updated

* Updated
2024-01-06 21:57:41 +07:00
Roman Kelesidis
6bf987edb0
Used datastore to show statistic for more performance (#1309)
* Used datastore to show statistic for more performance

* Update admin_forums.php
2024-01-06 14:07:27 +07:00
Roman Kelesidis
f48e7121df
Minor improvements (#1308)
* Minor improvements

* Updated
2024-01-06 12:59:26 +07:00
Roman Kelesidis
f456c827d7
Minor improvements (#1307)
* Minor improvements

* Updated

* Update Attach.php

* Update posting_attachments.php

* Update change_tor_status.php

* Updated
2024-01-05 00:20:51 +07:00
Roman Kelesidis
36e52d5d3b
Minor improvements (#1306)
* Minor improvements

* Update functions.php

* Updated

* Updated

* Update edit_user_profile.php

* Update index_data.php

* Update

* Update sitemap.php
2024-01-02 21:18:54 +07:00
Roman Kelesidis
7d32944d36 Revert "Moved file_list_v2.php back to includes (#1303)"
This reverts commit be5c34a951.
2024-01-02 19:31:07 +07:00
dependabot[bot]
1303a86b12
Composer(deps-dev): Bump symfony/var-dumper from 6.4.0 to 6.4.2 (#1305)
Bumps [symfony/var-dumper](https://github.com/symfony/var-dumper) from 6.4.0 to 6.4.2.
- [Release notes](https://github.com/symfony/var-dumper/releases)
- [Changelog](https://github.com/symfony/var-dumper/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/var-dumper/compare/v6.4.0...v6.4.2)

---
updated-dependencies:
- dependency-name: symfony/var-dumper
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-01 15:24:27 +07:00
dependabot[bot]
3bcf56f6ff
Composer(deps): Bump symfony/mailer from 6.4.0 to 6.4.2 (#1304)
Bumps [symfony/mailer](https://github.com/symfony/mailer) from 6.4.0 to 6.4.2.
- [Release notes](https://github.com/symfony/mailer/releases)
- [Changelog](https://github.com/symfony/mailer/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailer/compare/v6.4.0...v6.4.2)

---
updated-dependencies:
- dependency-name: symfony/mailer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-01 15:24:19 +07:00
Roman Kelesidis
b1634b6763 Update README.md 2024-01-01 02:47:32 +07:00
Roman Kelesidis
86cd0bf732 Release v2.4.0-stable ☃️ 2023-12-31 22:38:34 +07:00
Roman Kelesidis
be5c34a951
Moved file_list_v2.php back to includes (#1303) 2023-12-31 22:32:49 +07:00
Roman Kelesidis
8a91a44ef2
Update README.md 2023-12-31 21:43:05 +07:00
Roman Kelesidis
bcb5b74d35 Update robots.txt 2023-12-31 16:16:56 +07:00
Roman Kelesidis
1eacf48c62 Update README.md 2023-12-31 16:02:43 +07:00
Roman Kelesidis
49ddfb1cc6
Minor improvements (#1302) 2023-12-31 15:37:33 +07:00
Roman Kelesidis
23456902e3
Minor improvements (#1301)
* Minor improvements

* Update filelist.php
2023-12-31 15:28:45 +07:00
Yury Pikhtarev
ea8d2d76a4
New Crowdin updates (#1300)
* New translations main.php (Russian)

* New translations privmsg_notify.html (Russian)

* New translations profile_send_email.html (Russian)

* New translations topic_notify.html (Russian)

* New translations user_activate.html (Russian)

* New translations user_activate_passwd.html (Russian)
2023-12-31 13:49:52 +07:00
Roman Kelesidis
6c2b969aa1 Update CHANGELOG.md 2023-12-31 13:09:31 +07:00
Yury Pikhtarev
27f88ba819
New translations main.php (Russian) (#1299) 2023-12-31 12:47:55 +07:00
Roman Kelesidis
8240ac3f2b Merge branch 'master' of https://github.com/torrentpier/torrentpier 2023-12-31 11:50:08 +07:00
Roman Kelesidis
af41ee02c2 Update CHANGELOG.md 2023-12-31 11:49:57 +07:00
Yury Pikhtarev
04e48a31de
New translations main.php (Russian) (#1297) 2023-12-31 11:49:17 +07:00
Roman Kelesidis
e87c75d27e
Minor improvements (#1298)
* Minor improvements

* Update CHANGELOG.md
2023-12-31 11:48:30 +07:00
Roman Kelesidis
afdc2d927e Update CHANGELOG.md 2023-12-31 11:32:44 +07:00
Yury Pikhtarev
f8d2da15c8
New Crowdin updates (#1296)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2023-12-31 00:26:34 +04:00
Roman Kelesidis
ec67edd1ff
Added missing lang variable (#1295)
* Added missing lang variable

* Update CHANGELOG.md
2023-12-31 01:44:41 +07:00
Roman Kelesidis
fdd84cb258 Update CHANGELOG.md 2023-12-31 01:36:26 +07:00
Roman Kelesidis
ca23539fe9 Update CHANGELOG.md 2023-12-31 01:34:53 +07:00
Roman Kelesidis
1a3bdf171e
Minor improvements (#1294) 2023-12-31 01:28:21 +07:00
Roman Kelesidis
09f352d2dd
Block uploading more than one torrent file (#1293) 2023-12-31 01:25:45 +07:00
Cønstantine Kovalensky
dfc79f8109
Update README.md (#1292) 2023-12-30 00:25:16 +04:00
Cønstantine Kovalensky
9e4966c4fd
Update README.md (#1290) 2023-12-29 23:39:15 +04:00
Yury Pikhtarev
f89906d853
New Crowdin updates (#1287)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2023-12-29 23:00:56 +04:00
Roman Kelesidis
eaa86f814e
Minor improvements (#1289) 2023-12-30 02:00:19 +07:00
Cønstantine Kovalensky
b35cacc71d
Some display correction (#1288) 2023-12-29 21:42:35 +04:00
Roman Kelesidis
6bbacdfa3e
Minor improvements (#1286) 2023-12-30 00:37:29 +07:00
Roman Kelesidis
28fb4cbffb
Minor improvements (#1285) 2023-12-30 00:32:22 +07:00
Roman Kelesidis
8adb0eae3b
Few cosmetic improvements (#1284) 2023-12-29 23:03:02 +07:00
Cønstantine Kovalensky
c70efeec1b
Some .png file optimizations (#1283) 2023-12-29 13:45:53 +04:00
Yury Pikhtarev
339a071563
New Crowdin updates (#1282)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2023-12-29 08:46:20 +07:00
Roman Kelesidis
0204cd0047
Minor improvements (#1281) 2023-12-29 08:32:54 +07:00
Cønstantine Kovalensky
2f8952b3bf
Some CSS additions (#1280) 2023-12-29 00:11:44 +04:00
Cønstantine Kovalensky
0a190bf98a
Announcer integer limits & Country flags display (#1277) 2023-12-28 23:21:25 +04:00
Roman Kelesidis
a3e3aee8df
Minor improvements (#1279)
* Minor improvements

* Update CHANGELOG.md

* Update displaying_torrent.php

* Update displaying_torrent.php
2023-12-28 09:10:50 +07:00
Roman Kelesidis
ed8eeecfec Merge branch 'master' of https://github.com/torrentpier/torrentpier 2023-12-28 08:16:52 +07:00
Roman Kelesidis
20330ae4ee Update CHANGELOG.md 2023-12-28 08:16:45 +07:00
Roman Kelesidis
5b68bd857a
Some enhancements (#1278) 2023-12-28 08:12:29 +07:00
Roman Kelesidis
3626143879
Replaced some file exists to is file (#1276)
* Replaced some file_exists to is_file

* Update functions_thumbs.php

* Updated

* Update CronHelper.php

* Updated

* Update IPHelper.php

* Updated

* Update update_forums_atom.php

* Update functions.php

* Update Validate.php
2023-12-27 20:08:00 +07:00
Roman Kelesidis
e8a90b025c
Some reported bugfixes (#1275)
* Some reported bugfixes

* Updated

* Update common.php

* Update BBCode.php
2023-12-27 12:15:43 +07:00
Cønstantine Kovalensky
13bf41e776
Translations (#1274) 2023-12-26 22:27:33 +04:00
Roman Kelesidis
70322d7b73
Minor improvements (#1273)
* Minor improvements

* Updated
2023-12-27 01:26:35 +07:00
Roman Kelesidis
edc365b487
Minor improvements (#1271)
* Minor improvements

* Update admin_user_ban.php
2023-12-27 01:02:05 +07:00
Cønstantine Kovalensky
cf8fd449f7
Little fixes (#1272) 2023-12-26 21:54:09 +04:00
Roman Kelesidis
250b07f3c3 Merge branch 'master' of https://github.com/torrentpier/torrentpier 2023-12-27 00:19:21 +07:00
Roman Kelesidis
185ec51122 Update CHANGELOG.md 2023-12-27 00:19:14 +07:00
Roman Kelesidis
b19abc3ab2
Striked username if user banned (#1270)
* Striked username if user banned

* Update CHANGELOG.md
2023-12-27 00:17:03 +07:00
Roman Kelesidis
66083cabad
Make caching for ban list (#1269) 2023-12-27 00:16:54 +07:00
Cønstantine Kovalensky
ed34bbb735
Move filelist feature to another file (#1268) 2023-12-26 20:52:05 +04:00
Roman Kelesidis
50dbc617cd
Striked username if user banned (#1267)
* Striked username if user banned

* Update CHANGELOG.md
2023-12-26 23:15:51 +07:00
Roman Kelesidis
2d54b82f1c Update CHANGELOG.md 2023-12-26 23:04:59 +07:00
Roman Kelesidis
23f3d352e2
Minor improvements (#1266) 2023-12-26 23:02:40 +07:00
Yury Pikhtarev
8660205fd5
New Crowdin updates (#1264)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2023-12-26 18:08:04 +07:00
Roman Kelesidis
6b798b0bf5
Minor improvements (#1265) 2023-12-26 17:59:16 +07:00
Roman Kelesidis
b16ee57faf
Minor improvements (#1263) 2023-12-26 17:48:28 +07:00
Roman Kelesidis
7beb4afa72
Some improvements for Ban functionality (#1262)
* Some improvements for Ban functionality

* Updated

* Updated

* Update functions.php

* Updated

* Update viewprofile.php

* Update viewtopic.php

* Updated

* Updated

* Updated

* Updated

* Update mysql.sql

* Updated

* Updated
2023-12-26 17:38:16 +07:00
Roman Kelesidis
d090678e14 Update CHANGELOG.md 2023-12-26 12:00:58 +07:00
Roman Kelesidis
f350c2e2db
Changed default upload path (#1261)
* Changed default upload path

* Update .gitignore

* Update CHANGELOG.md
2023-12-26 11:54:01 +07:00
Yury Pikhtarev
5ea18ba434
New Crowdin updates (#1260)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2023-12-26 11:53:50 +07:00
Roman Kelesidis
1c6d76b6b6 Update CHANGELOG.md 2023-12-26 11:44:46 +07:00
Roman Kelesidis
297163953e
Minor improvements (#1259) 2023-12-26 11:41:45 +07:00
Cønstantine Kovalensky
0791859923
Show user's ban status (#1258) 2023-12-25 23:07:47 +04:00
Cønstantine Kovalensky
5a3d5947ce
Use "Views" string for thumbnails (#1257) 2023-12-24 22:05:53 +04:00
Cønstantine Kovalensky
b4198d3ccc
Update file_list_v2.php (#1256)
Some SEO little-thingy
2023-12-24 20:46:56 +04:00
Roman Kelesidis
d212ed92b5 Update CHANGELOG.md 2023-12-23 20:27:49 +07:00
Roman Kelesidis
f483aa273b
Some cleanup (#1255) 2023-12-23 20:26:58 +07:00
Roman Kelesidis
912838cd1a Update CHANGELOG.md 2023-12-23 17:20:33 +07:00
Roman Kelesidis
b97e48ce2c
Minor improvements (#1254)
* Minor improvements

* Update CHANGELOG.md
2023-12-23 17:18:36 +07:00
Roman Kelesidis
94cb6ab73c
Minor improvements (#1253)
* Minor improvements

* Update .gitignore

* Update admin_smilies.php

* Update CHANGELOG.md
2023-12-23 14:20:06 +07:00
Cønstantine Kovalensky
cb06f82f06
Update footer text to unique one (#1252) 2023-12-23 09:25:58 +04:00
Yury Pikhtarev
d76702930e
New Crowdin updates (#1251)
* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Russian)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)
2023-12-23 02:01:03 +07:00
Roman Kelesidis
94f1641b5c
Some cleanup for attach mod (#1250)
* Some cleanup for attach mod

* Update displaying.php

* Update CHANGELOG.md
2023-12-23 01:19:26 +07:00
Roman Kelesidis
65c7903b21
Refactored thumbnail creation 🌄 (#1249)
* Refactored thumbnail creation

* Updated

* Updated

* Updated

* Updated

* Updated

* Update functions_thumbs.php

* Update functions_thumbs.php

* Update displaying.php

* Update mysql.sql

* Update mysql.sql

* Update CHANGELOG.md
2023-12-23 00:42:59 +07:00
Roman Kelesidis
d57bf5265a
Minor improvements (#1248)
* WIP: Minor improvements

* Update Torrent.php

* Updated

* Updated

* Revert "Updated"

This reverts commit e98a5dfe9c.

* Revert "Updated"

This reverts commit 0b53396c56.

* Update group.php

* Update CHANGELOG.md
2023-12-22 16:04:16 +07:00
Cønstantine Kovalensky
573c772798
Use hardcoded dictionary names for better counting result in file listing (#1247)
Thanks to @arokettu for pointing this out.
2023-12-21 20:26:09 +04:00
Roman Kelesidis
486e5cc7d2
Improved handling errors while uploading (#1246) 2023-12-21 13:16:41 +07:00
Cønstantine Kovalensky
fbc4749ca9
Little improvements (#1244) 2023-12-21 09:10:34 +04:00
Roman Kelesidis
c4df759d09
Minor improvements (#1243)
* Minor improvements

* Update CHANGELOG.md
2023-12-21 11:23:08 +07:00
Yury Pikhtarev
c57233414f
Apply fixes from StyleCI (#1242)
Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-12-20 22:49:00 +04:00
Cønstantine Kovalensky
0525597a15
Handle & show upload_max_filesize occurences (#1241) 2023-12-20 22:47:32 +04:00
Yury Pikhtarev
e9fec26e7d
Apply fixes from StyleCI (#1240)
Co-authored-by: StyleCI Bot <bot@styleci.io>
2023-12-20 21:47:33 +04:00
Cønstantine Kovalensky
586fc0b563
Exception handling for Bencode errors (#1239) 2023-12-20 21:46:49 +04:00
Cønstantine Kovalensky
a953045aba
Exception handling for Bencode errors (#1237) 2023-12-20 21:37:47 +04:00
Roman Kelesidis
508f73933a Update CHANGELOG.md 2023-12-21 00:26:51 +07:00
Roman Kelesidis
a2862f754c
Minor improvements (#1236) 2023-12-21 00:26:08 +07:00
Roman Kelesidis
428984524e
Hide vote button in poll if user already voted (#1235)
* Hide vote button in poll if user already voted

* Update viewtopic.php

* Update CHANGELOG.md
2023-12-21 00:15:06 +07:00
Roman Kelesidis
7a7334879c
Minor improvements (#1234)
* Minor improvements

* Update CHANGELOG.md
2023-12-20 23:15:48 +07:00
Roman Kelesidis
db597678b7
Fixed broken captcha check on login.php (#1233)
* Fixed broken captcha check on login.php

* Update CHANGELOG.md
2023-12-20 22:47:14 +07:00
Roman Kelesidis
86eb427fbd Revert "Fixed incorrect condition in bb_captcha (#1231)"
This reverts commit 2bb6c50710.
2023-12-20 22:26:40 +07:00
Roman Kelesidis
2bb6c50710
Fixed incorrect condition in bb_captcha (#1231)
* Fixed incorrect condition in bb_captcha

* Update CHANGELOG.md
2023-12-20 18:32:09 +07:00
Roman Kelesidis
517b62c2ba
Minor improvements (#1230)
* Minor improvements

* Update CHANGELOG.md
2023-12-20 17:46:51 +07:00
Roman Kelesidis
7341cb8b25
Minor improvements (#1229)
* Minor improvements

* Update CHANGELOG.md
2023-12-20 09:33:42 +07:00
Roman Kelesidis
f1ba593ba0 Update CHANGELOG.md 2023-12-20 09:05:28 +07:00
Roman Kelesidis
ce25c1a391 Update CHANGELOG.md 2023-12-20 09:02:18 +07:00
Roman Kelesidis
f4e0152d4a
Minor improvements (#1228) 2023-12-20 09:00:02 +07:00
Roman Kelesidis
7e7effefc5
Fixed set auth cookie issue (#1227) 2023-12-20 08:37:16 +07:00
Yury Pikhtarev
243d251066
New Crowdin updates (#1222)
* New translations main.php (Romanian)

* New translations main.php (Russian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

* New translations main.php (Russian)

* New translations main.php (Romanian)

* New translations main.php (French)

* New translations main.php (Spanish)

* New translations main.php (Afrikaans)

* New translations main.php (Arabic)

* New translations main.php (Belarusian)

* New translations main.php (Bulgarian)

* New translations main.php (Catalan)

* New translations main.php (Czech)

* New translations main.php (Danish)

* New translations main.php (German)

* New translations main.php (Greek)

* New translations main.php (Finnish)

* New translations main.php (Hebrew)

* New translations main.php (Hungarian)

* New translations main.php (Armenian)

* New translations main.php (Italian)

* New translations main.php (Japanese)

* New translations main.php (Georgian)

* New translations main.php (Korean)

* New translations main.php (Lithuanian)

* New translations main.php (Dutch)

* New translations main.php (Norwegian)

* New translations main.php (Polish)

* New translations main.php (Slovak)

* New translations main.php (Slovenian)

* New translations main.php (Albanian)

* New translations main.php (Serbian (Cyrillic))

* New translations main.php (Swedish)

* New translations main.php (Turkish)

* New translations main.php (Ukrainian)

* New translations main.php (Chinese Traditional)

* New translations main.php (English)

* New translations main.php (Vietnamese)

* New translations main.php (Portuguese, Brazilian)

* New translations main.php (Indonesian)

* New translations main.php (Thai)

* New translations main.php (Croatian)

* New translations main.php (Kazakh)

* New translations main.php (Estonian)

* New translations main.php (Latvian)

* New translations main.php (Azerbaijani)

* New translations main.php (Hindi)

* New translations main.php (Bosnian)

* New translations main.php (Uzbek)

* New translations main.php (Tajik)

---------

Co-authored-by: Cønstantine Kovalensky <45331093+kovalensky@users.noreply.github.com>
2023-12-19 10:50:38 +04:00
Cønstantine Kovalensky
68013e1610
Code re-formatting (#1225->6) 2023-12-19 08:38:40 +04:00
Cønstantine Kovalensky
035c22f598
Code re-formatting (#1225) 2023-12-19 08:36:37 +04:00
Roman Kelesidis
86d02e9fae
Minor improvements (#1224)
* Minor improvements

* Update CHANGELOG.md

* Update CHANGELOG.md
2023-12-19 08:25:01 +07:00
Cønstantine Kovalensky
89ca744d85
Introduce limit setting for max number of files to be processed in separate index file-listing (#1223) 2023-12-18 22:32:24 +04:00
Roman Kelesidis
b5891ca663
Fixed broken sorting in group.php (#1221)
* Fixed broken sorting in group.php

* Update CHANGELOG.md
2023-12-18 23:48:24 +07:00
Roman Kelesidis
1da4d46822
Minor improvements (#1220) 2023-12-18 18:35:35 +07:00
Roman Kelesidis
860c863a11
Minor improvements (#1219)
* Minor improvements

* Update CHANGELOG.md
2023-12-18 18:28:03 +07:00
Roman Kelesidis
6660bf26e4
Fixed extensions issue (#1218)
* Fixed extensions issue

* Update CHANGELOG.md
2023-12-18 16:24:23 +07:00
Roman Kelesidis
0e7a60ad41
Minor improvements (#1217) 2023-12-18 15:28:09 +07:00
Roman Kelesidis
c7187dd4cd Merge branch 'master' of https://github.com/torrentpier/torrentpier 2023-12-18 14:41:57 +07:00
Roman Kelesidis
73c3d3e145 Update CHANGELOG.md 2023-12-18 14:41:50 +07:00
Roman Kelesidis
793b9634bf
Minor improvements (#1215) 2023-12-18 14:39:50 +07:00
Roman Kelesidis
8dd8f20802 Update CHANGELOG.md 2023-12-18 14:02:29 +07:00
Roman Kelesidis
9e164d772a
Some reported bugfixes (#1214) 2023-12-18 13:57:26 +07:00
Cønstantine Kovalensky
0b499dc137
Limit execution time for forum file-listing (#1211)
* Limit execution time for forum file-listing

* Prevent multiple ajax calling
---------

Co-authored-by: Roman Kelesidis <roman25052006.kelesh@gmail.com>
2023-12-18 09:03:00 +04:00
Roman Kelesidis
4295a2c4c6
search.php parameter sanitizing (#1213)
Co-authored-by: Cønstantine Kovalensky <45331093+kovalensky@users.noreply.github.com>
2023-12-18 07:56:28 +07:00
Cønstantine Kovalensky
d28094006f
tracker.php parameter sanitizing (#1212) 2023-12-17 15:29:17 +04:00
Roman Kelesidis
8d20a79bc7
Minor improvements for announcer (#1207) 2023-12-17 12:37:11 +07:00
Roman Kelesidis
5b712a8413
Removed useless condition in viewtopic_attach.tpl (#1208) 2023-12-17 12:37:00 +07:00
Roman Kelesidis
381d9b728f
Cleanup for attach_mod (#1210)
* Cleanup for attach_mod

* Update CHANGELOG.md
2023-12-16 14:23:17 +07:00
Roman Kelesidis
58e6537f03
Some enhancements for dl.php (#1209)
* Some enhancements for dl.php

* Update CHANGELOG.md
2023-12-16 13:32:41 +07:00
Yury Pikhtarev
101c8db18f
New Crowdin updates (#1203)
* New translations main.php (Russian)

* New translations group_added.html (Russian)

* New translations group_approved.html (Russian)

* New translations group_request.html (Russian)

* New translations privmsg_notify.html (Russian)

* New translations profile_send_email.html (Russian)

* New translations topic_notify.html (Russian)

* New translations user_activate.html (Russian)

* New translations user_activate_passwd.html (Russian)

* New translations user_welcome.html (Russian)

* New translations user_welcome_inactive.html (Russian)

---------

Co-authored-by: Cønstantine Kovalensky <45331093+kovalensky@users.noreply.github.com>
2023-12-15 08:33:09 +04:00
Roman Kelesidis
d581fabe16 Update CHANGELOG.md 2023-12-14 19:01:08 +07:00
Roman Kelesidis
b284ff0f08
Minor improvements (#1206) 2023-12-14 18:57:58 +07:00
Cønstantine Kovalensky
bcbc35eb24
Repository link in page footer instead of forum (#1205) 2023-12-13 20:44:52 +04:00
Cønstantine Kovalensky
8a5fd01852
Updated TorrentPier footer text (: (#1204) 2023-12-12 23:04:55 +04:00
Cønstantine Kovalensky
06a260c60d
Update file_list_v2.php (#1202)
Use full width for mobile phones
2023-12-12 21:02:49 +04:00
Roman Kelesidis
fad09cf0eb
Updated copyright year (#1201)
* Updated copyright year

* Updated
2023-12-12 22:14:01 +07:00
919 changed files with 58637 additions and 16814 deletions

7
.cliffignore Normal file
View file

@ -0,0 +1,7 @@
9766c534bddad8e82e6d19f9bad5cf70b9887f9a
92ce77ec0ec703c08a659419087a373f76e711f7
2d53efc945c7747be1755d0b66557a86bdc12cbd
602137b65129b817811b80975a369ebde3270c6d
4eb26ae37e1f4c82a45961517ffeb54c20200408
e59adce848a9e10ee5775254045cbbd915236b8b
9e0a64108d62236ab07b3f8d10e8c78269b8e1d1

View file

@ -1,9 +1,11 @@
# Common params
APP_ENV=local
TP_HOST=example.com
TP_PORT=80
APP_ENV=production
APP_CRON_ENABLED=true
APP_DEMO_MODE=false
# Database credentials
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=torrentpier

View file

@ -1,35 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

62
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View file

@ -0,0 +1,62 @@
name: Bug Report
description: File a bug report
title: "[Bug]"
labels: [Bug]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
The more detailed this bug report is, the faster it can be reviewed and fixed.
- type: input
id: version-torrentpier
attributes:
label: TorrentPier Version
description: TorrentPier version your using?
placeholder: 2.4.0
validations:
required: true
- type: input
id: version-php-os
attributes:
label: PHP & Platform
description: Exact PHP and Platform (OS) versions your using.
placeholder: 8.2.2 - Ubuntu 22.04 x64
validations:
required: true
- type: checkboxes
id: requirements
attributes:
label: Have you done this?
options:
- label: I am willing to share my stack trace and logs
required: true
- label: I can suggest a fix as a Pull Request
required: false
- type: textarea
id: expectation
attributes:
label: Expectation
description: Write what you expect to (correctly) happen.
placeholder: When I do this, I expect to this to happen.
validations:
required: true
- type: textarea
id: description
attributes:
label: Description
description: Write what (incorrectly) happens instead.
placeholder: Instead, when I do this, I receive that.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Stack trace & logs
description: |
If you have a stack trace, you can copy it here. You may hide sensitive information.
Including a stack trace when reporting an error 500 is required.
placeholder: This is automatically formatted into code, no need for backticks.
render: shell
validations:
required: false

View file

@ -0,0 +1,7 @@
---
name: Feature / Enhancement request
about: Suggest an idea for TorrentPier
title: "[Feature]"
labels: [Feature, Enhancement]
assignees: ''
---

View file

@ -1,17 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

80
.github/workflows/cd.yml vendored Normal file
View file

@ -0,0 +1,80 @@
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.2'
- 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

45
.github/workflows/ci.yml vendored Normal file
View file

@ -0,0 +1,45 @@
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.2'
- 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 }}

41
.github/workflows/schedule.yml vendored Normal file
View file

@ -0,0 +1,41 @@
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

13
.gitignore vendored
View file

@ -1,35 +1,40 @@
### IDE ###
.idea
.vscode
### TorrentPier ###
*.log
install.php_*
composer-setup.php
.env
.php_cs.cache
composer.phar
configs/local.php
data/avatars
data/torrent_files
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 ###
*.log
*.phar
*.rar
*.tar
*.gz
*.zip
*.7z
*.torrent
*.pak
### Windows ###
Thumbs.db
Desktop.ini
$RECYCLE.BIN/
*.lnk
*.bat
### OSX ###
.DS_Store

View file

@ -1,881 +1,113 @@
[![TorrentPier](https://raw.githubusercontent.com/torrentpier/.github/refs/heads/main/versions/Cattle.png)](https://github.com/torrentpier)
# 📖 Change Log
## [v2.4.0-rc2](https://github.com/torrentpier/torrentpier/tree/v2.4.0-rc2) (2023-12-12)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-rc1...v2.4.0-rc2)
**Merged pull requests:**
- Fixed void function result used [\#1170](https://github.com/torrentpier/torrentpier/pull/1170) ([belomaxorka](https://github.com/belomaxorka))
- Improved cookie management 🍪 [\#1171](https://github.com/torrentpier/torrentpier/pull/1171) ([belomaxorka](https://github.com/belomaxorka))
- Replaced strpos() with simplified realization [\#1172](https://github.com/torrentpier/torrentpier/pull/1172) ([belomaxorka](https://github.com/belomaxorka))
- Replaced some 'switch' with the 'match' expression [\#1173](https://github.com/torrentpier/torrentpier/pull/1173) ([belomaxorka](https://github.com/belomaxorka))
- Feature to ban specific torrent clients [\#1175](https://github.com/torrentpier/torrentpier/pull/1175) ([kovalensky](https://github.com/kovalensky))
- Code re-formatting [\#1176](https://github.com/torrentpier/torrentpier/pull/1176) ([kovalensky](https://github.com/kovalensky))
- Removed useless width for BBCode buttons [\#1180](https://github.com/torrentpier/torrentpier/pull/1180) ([belomaxorka](https://github.com/belomaxorka))
- Refactored memberlist.php 🎓 [\#1181](https://github.com/torrentpier/torrentpier/pull/1181) ([belomaxorka](https://github.com/belomaxorka))
- Peer ID was erased if it contained non-latin characters [\#1185](https://github.com/torrentpier/torrentpier/pull/1185) ([kovalensky](https://github.com/kovalensky))
- Removed verify_id() function [\#1187](https://github.com/torrentpier/torrentpier/pull/1187) ([belomaxorka](https://github.com/belomaxorka))
- Removed sys_getloadavg() [\#1188](https://github.com/torrentpier/torrentpier/pull/1188) ([belomaxorka](https://github.com/belomaxorka))
- RC2 timeline [\#1186](https://github.com/torrentpier/torrentpier/pull/1186) ([kovalensky](https://github.com/kovalensky))
- Get SERVER_NAME variable for cron tasks [\#1190](https://github.com/torrentpier/torrentpier/pull/1190) ([kovalensky](https://github.com/kovalensky))
- Remove unnecessary file hashes for in-forum file-listing [\#1192](https://github.com/torrentpier/torrentpier/pull/1192) ([kovalensky](https://github.com/kovalensky))
- Use one GET variable for filelisting [\#1193](https://github.com/torrentpier/torrentpier/pull/1193) ([kovalensky](https://github.com/kovalensky))
- Refactored poll.php [\#1194](https://github.com/torrentpier/torrentpier/pull/1194) ([belomaxorka](https://github.com/belomaxorka))
- Removed useless global $lang; from info.php [\#1195](https://github.com/torrentpier/torrentpier/pull/1195) ([belomaxorka](https://github.com/belomaxorka))
- Update file_list_v2.php [\#1196](https://github.com/torrentpier/torrentpier/pull/1196), [\#1197](https://github.com/torrentpier/torrentpier/pull/1197), [\#1199](https://github.com/torrentpier/torrentpier/pull/1199) ([kovalensky](https://github.com/kovalensky))
- Small code re-format for scrape.php [\#1198](https://github.com/torrentpier/torrentpier/pull/1198) ([kovalensky](https://github.com/kovalensky))
- Some reported bugfixes [\#1200](https://github.com/torrentpier/torrentpier/pull/1200) ([belomaxorka](https://github.com/belomaxorka))
- Updated deps [\#1177](https://github.com/torrentpier/torrentpier/pull/1177), [\#1178](https://github.com/torrentpier/torrentpier/pull/1178),[\#1183](https://github.com/torrentpier/torrentpier/pull/1183), [\#1184](https://github.com/torrentpier/torrentpier/pull/1184) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#1179](https://github.com/torrentpier/torrentpier/pull/1179), [\#1182](https://github.com/torrentpier/torrentpier/pull/1182), [\#1191](https://github.com/torrentpier/torrentpier/pull/1191) ([Exileum](https://github.com/Exileum))
## [v2.4.0-rc1](https://github.com/torrentpier/torrentpier/tree/v2.4.0-rc1) (2023-11-25)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-beta4...v2.4.0-rc1)
**Merged pull requests:**
- Revert "Fix sql group (#128)" [1753db1](https://github.com/torrentpier/torrentpier/commit/1753db1fcef7d50eb8f8ba4b1f5a4ad7585ffaa4) ([belomaxorka](https://github.com/belomaxorka))
- Simplified gender function [\#1167](https://github.com/torrentpier/torrentpier/pull/1167) ([belomaxorka](https://github.com/belomaxorka))
- Revert "Fixed input types in some cases (#697)" [20ce8ca](https://github.com/torrentpier/torrentpier/commit/20ce8cae9cf6447f5100ab2d8f4a5299254f5412) ([belomaxorka](https://github.com/belomaxorka))
- Revert "Fixed input types in some cases (#693)" [74aa6ff](https://github.com/torrentpier/torrentpier/commit/74aa6ff29991186ffc6484980972d5f74e4d0393) ([belomaxorka](https://github.com/belomaxorka))
- Support simultaneous id & username inputs for browsing profiles [\#1166](https://github.com/torrentpier/torrentpier/pull/1166) ([kovalensky](https://github.com/kovalensky))
- Tighten registration requirements for torrent files [\#1165](https://github.com/torrentpier/torrentpier/pull/1165) ([kovalensky](https://github.com/kovalensky))
- File listing — use browser cache [\#1164](https://github.com/torrentpier/torrentpier/pull/1164) ([kovalensky](https://github.com/kovalensky))
- Legacy code comment translations [\#1163](https://github.com/torrentpier/torrentpier/pull/1163) ([kovalensky](https://github.com/kovalensky))
- Invites config re-formatting [\#1162](https://github.com/torrentpier/torrentpier/pull/1162) ([belomaxorka](https://github.com/belomaxorka))
- Use external cookie library to prevent incorrect cookie setting [\#1160](https://github.com/torrentpier/torrentpier/pull/1160), [\#1161](https://github.com/torrentpier/torrentpier/pull/1161) ([belomaxorka](https://github.com/belomaxorka))
- Some improvements in default template [\#1159](https://github.com/torrentpier/torrentpier/pull/1159) ([belomaxorka](https://github.com/belomaxorka))
- Use sent port instead of source [\#1158](https://github.com/torrentpier/torrentpier/pull/1158) ([kovalensky](https://github.com/kovalensky))
- Remove unnecessary meta tags from file listing [\#1157](https://github.com/torrentpier/torrentpier/pull/1157) ([kovalensky](https://github.com/kovalensky))
- Use different file listing url parameters for effective indexing by search engines [\#1156](https://github.com/torrentpier/torrentpier/pull/1156) ([kovalensky](https://github.com/kovalensky))
- Check topic_id existence while searching in tracker mode [\#1155](https://github.com/torrentpier/torrentpier/pull/1155) ([kovalensky](https://github.com/kovalensky))
- Some improvement [\#1151](https://github.com/torrentpier/torrentpier/pull/1151) ([kovalensky](https://github.com/kovalensky))
- Disable invites by default [\#1150](https://github.com/torrentpier/torrentpier/pull/1150) ([kovalensky](https://github.com/kovalensky))
- Event based invite system [\#1149](https://github.com/torrentpier/torrentpier/pull/1149) ([kovalensky](https://github.com/kovalensky))
- Some code quality improvements [\#1148](https://github.com/torrentpier/torrentpier/pull/1148) ([belomaxorka](https://github.com/belomaxorka))
- Vote button code improvements [\#1140](https://github.com/torrentpier/torrentpier/pull/1140), [\#1142](https://github.com/torrentpier/torrentpier/pull/1142), [\#1143](https://github.com/torrentpier/torrentpier/pull/1143), [\#1146](https://github.com/torrentpier/torrentpier/pull/1146) ([belomaxorka](https://github.com/belomaxorka))
- Vote button and v2 file list topic url display [\#1138](https://github.com/torrentpier/torrentpier/pull/1138) ([kovalensky](https://github.com/kovalensky))
- Removed topic watch useless code [\#1137](https://github.com/torrentpier/torrentpier/pull/1137) ([belomaxorka](https://github.com/belomaxorka))
- Fixed topic_watch array key name [\#1136](https://github.com/torrentpier/torrentpier/pull/1136) ([belomaxorka](https://github.com/belomaxorka))
- Fixed announce-list indexes ordering [\#1135](https://github.com/torrentpier/torrentpier/pull/1135) ([belomaxorka](https://github.com/belomaxorka))
- Fixed $bb_cfg['file_id_ext'] ordering [\#1134](https://github.com/torrentpier/torrentpier/pull/1134) ([belomaxorka](https://github.com/belomaxorka))
- Normalizing announce-list [\#1133](https://github.com/torrentpier/torrentpier/pull/1133) ([belomaxorka](https://github.com/belomaxorka))
- Fixed announcer-list issue [\#1129](https://github.com/torrentpier/torrentpier/pull/1129), [\#1130](https://github.com/torrentpier/torrentpier/pull/1130), [\#1131](https://github.com/torrentpier/torrentpier/pull/1131), [\#1132](https://github.com/torrentpier/torrentpier/pull/1132) ([belomaxorka](https://github.com/belomaxorka))
- Removed client column from bb_bt_tracker table [\#1128](https://github.com/torrentpier/torrentpier/pull/1128) ([belomaxorka](https://github.com/belomaxorka))
- Removed one-time used variables [\#1120](https://github.com/torrentpier/torrentpier/pull/1120) ([belomaxorka](https://github.com/belomaxorka))
- Don't create empty announce-list dict, if ann_urls are empty [\#1119](https://github.com/torrentpier/torrentpier/pull/1119) ([kovalensky](https://github.com/kovalensky))
- Improve code for retracker addition [\#1118](https://github.com/torrentpier/torrentpier/pull/1118) ([kovalensky](https://github.com/kovalensky))
- Don't use main announce url inside announce-list [\#1117](https://github.com/torrentpier/torrentpier/pull/1117) ([kovalensky](https://github.com/kovalensky))
- Don't check for announce-list while adding new urls [\#1116](https://github.com/torrentpier/torrentpier/pull/1116) ([kovalensky](https://github.com/kovalensky))
- Cleanup: Removed useless global variable [\#1115](https://github.com/torrentpier/torrentpier/pull/1115) ([belomaxorka](https://github.com/belomaxorka))
- Unset debug cookies if SQL_DEBUG disabled [\#1114](https://github.com/torrentpier/torrentpier/pull/1114) ([belomaxorka](https://github.com/belomaxorka))
- Announcer's code re-formatting [\#1112](https://github.com/torrentpier/torrentpier/pull/1112) ([kovalensky](https://github.com/kovalensky))
- Used new-style [] array constructions in some cases [\#1111](https://github.com/torrentpier/torrentpier/pull/1111) ([belomaxorka](https://github.com/belomaxorka))
- Use http_response_code() functions instead of old header() functions [\#1110](https://github.com/torrentpier/torrentpier/pull/1110) ([belomaxorka](https://github.com/belomaxorka))
- Fix bypassing cache if IP changed while using cache [\#1109](https://github.com/torrentpier/torrentpier/pull/1109) ([kovalensky](https://github.com/kovalensky))
- Use one variable to determine update status for hybrids [\#1108](https://github.com/torrentpier/torrentpier/pull/1108) ([kovalensky](https://github.com/kovalensky))
- Don't re-announce even if peer cache is present [\#1107](https://github.com/torrentpier/torrentpier/pull/1107) ([kovalensky](https://github.com/kovalensky))
- Used br2nl() in ajax alert messages [\#1106](https://github.com/torrentpier/torrentpier/pull/1106) ([belomaxorka](https://github.com/belomaxorka))
- Replaced some html_entity_decode to engine's built-in function [\#1105](https://github.com/torrentpier/torrentpier/pull/1105) ([belomaxorka](https://github.com/belomaxorka))
- Fix typo [\#1104](https://github.com/torrentpier/torrentpier/pull/1104), [\#1124](https://github.com/torrentpier/torrentpier/pull/1124), [\#1153](https://github.com/torrentpier/torrentpier/pull/1153), [\#1168](https://github.com/torrentpier/torrentpier/pull/1168) ([kovalensky](https://github.com/kovalensky))
- Change default engine language to en [\#1103](https://github.com/torrentpier/torrentpier/pull/1103) ([kovalensky](https://github.com/kovalensky))
- Record changed port while re-announcing [\#1102](https://github.com/torrentpier/torrentpier/pull/1102) ([kovalensky](https://github.com/kovalensky))
- Translations for config.php, raised scrape interval [\#1100](https://github.com/torrentpier/torrentpier/pull/1100) ([kovalensky](https://github.com/kovalensky))
- Don't re-announce for hybrids if the event is "stopped" [\#1099](https://github.com/torrentpier/torrentpier/pull/1099) ([kovalensky](https://github.com/kovalensky))
- Security measures [\#1098](https://github.com/torrentpier/torrentpier/pull/1098), [\#1113](https://github.com/torrentpier/torrentpier/pull/1113) ([kovalensky](https://github.com/kovalensky), [belomaxorka](https://github.com/belomaxorka))
- Minor improvements [\#1121](https://github.com/torrentpier/torrentpier/pull/1121), [\#1122](https://github.com/torrentpier/torrentpier/pull/1122), [\#1123](https://github.com/torrentpier/torrentpier/pull/1123), [\#1125](https://github.com/torrentpier/torrentpier/pull/1125), [\#1141](https://github.com/torrentpier/torrentpier/pull/1141) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#1097](https://github.com/torrentpier/torrentpier/pull/1097), [\#1101](https://github.com/torrentpier/torrentpier/pull/1101), [\#1144](https://github.com/torrentpier/torrentpier/pull/1144), [\#1154](https://github.com/torrentpier/torrentpier/pull/1154) ([Exileum](https://github.com/Exileum))
## [v2.4.0-beta4](https://github.com/torrentpier/torrentpier/tree/v2.4.0-beta4) (2023-11-14)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-beta3...v2.4.0-beta4)
**Merged pull requests:**
- Use TORRENT_EXT constants for definition torrent extension [\#1096](https://github.com/torrentpier/torrentpier/pull/1096) ([belomaxorka](https://github.com/belomaxorka))
- Remove html entities for file names [\#1094](https://github.com/torrentpier/torrentpier/pull/1094) ([kovalensky](https://github.com/kovalensky))
- Fix for html entities being displayed in magnet links [\#1092](https://github.com/torrentpier/torrentpier/pull/1092) ([kovalensky](https://github.com/kovalensky))
- Calling make_jumpbox() where it needed [\#1091](https://github.com/torrentpier/torrentpier/pull/1091) ([belomaxorka](https://github.com/belomaxorka))
- Include full url for client icon displaying [\#1088](https://github.com/torrentpier/torrentpier/pull/1088) ([kovalensky](https://github.com/kovalensky))
- Fix not working code [\#1087](https://github.com/torrentpier/torrentpier/pull/1087) ([kovalensky](https://github.com/kovalensky))
- Fixed data types for seeder_last_seen [\#1086](https://github.com/torrentpier/torrentpier/pull/1086) ([belomaxorka](https://github.com/belomaxorka))
- Fix broken PM (Private messages) [\#1085](https://github.com/torrentpier/torrentpier/pull/1085) ([kovalensky](https://github.com/kovalensky))
- Fixed a bug causing inability to view file contents for some torrents [\#1084](https://github.com/torrentpier/torrentpier/pull/1084) ([kovalensky](https://github.com/kovalensky))
- Show file count while listing [\#1082](https://github.com/torrentpier/torrentpier/pull/1082) ([kovalensky](https://github.com/kovalensky))
- Simplified jumpbox 📜 [\#815](https://github.com/torrentpier/torrentpier/pull/815) ([belomaxorka](https://github.com/belomaxorka))
- Removed sorting for torrent clients in table [\#1080](https://github.com/torrentpier/torrentpier/pull/1080) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken table in tracker [\#1079](https://github.com/torrentpier/torrentpier/pull/1079) ([belomaxorka](https://github.com/belomaxorka))
- CSS improvement for file listing [\#1077](https://github.com/torrentpier/torrentpier/pull/1077), [\#1081](https://github.com/torrentpier/torrentpier/pull/1081), [\#1083](https://github.com/torrentpier/torrentpier/pull/1083) ([kovalensky](https://github.com/kovalensky))
- Minor improvements [\#1078](https://github.com/torrentpier/torrentpier/pull/1078), [\#1095](https://github.com/torrentpier/torrentpier/pull/1095) ([belomaxorka](https://github.com/belomaxorka))
- Updated deps [\#1089](https://github.com/torrentpier/torrentpier/pull/1089), [\#1090](https://github.com/torrentpier/torrentpier/pull/1090) ([belomaxorka](https://github.com/belomaxorka))
## [v2.4.0-beta3](https://github.com/torrentpier/torrentpier/tree/v2.4.0-beta3) (2023-11-11)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-beta2...v2.4.0-beta3)
**Merged pull requests:**
- Use built-in delta_time for age display [\#1075](https://github.com/torrentpier/torrentpier/pull/1075) ([kovalensky](https://github.com/kovalensky))
- List with numbers in tracker stats [\#1074](https://github.com/torrentpier/torrentpier/pull/1074) ([kovalensky](https://github.com/kovalensky))
- Sort clients from higher to lower in tracker stats [\#1073](https://github.com/torrentpier/torrentpier/pull/1073) ([kovalensky](https://github.com/kovalensky))
- Use more reliable original file names for attachments [\#1070](https://github.com/torrentpier/torrentpier/pull/1070) ([kovalensky](https://github.com/kovalensky))
- Tracker client stats cache, more robust file list functions, permissions for file list access [\#1069](https://github.com/torrentpier/torrentpier/pull/1069) ([kovalensky](https://github.com/kovalensky))
- Some code improvements for file listing [\#1068](https://github.com/torrentpier/torrentpier/pull/1068) ([kovalensky](https://github.com/kovalensky))
- Update styles for file list [\#1067](https://github.com/torrentpier/torrentpier/pull/1067) ([kovalensky](https://github.com/kovalensky))
- Show client information for file list [\#1066](https://github.com/torrentpier/torrentpier/pull/1066) ([kovalensky](https://github.com/kovalensky))
- File list tables for v2 compatible torrents [\#1064](https://github.com/torrentpier/torrentpier/pull/1064) ([kovalensky](https://github.com/kovalensky))
- Show options for version debugging of user clients [\#1061](https://github.com/torrentpier/torrentpier/pull/1061) ([kovalensky](https://github.com/kovalensky))
- Fixed broken avatar ajax action for users [\#1060](https://github.com/torrentpier/torrentpier/pull/1060) ([belomaxorka](https://github.com/belomaxorka))
- Show icons for clients while in the tracker statistics [\#1057](https://github.com/torrentpier/torrentpier/pull/1057) ([kovalensky](https://github.com/kovalensky))
- Show user clients percentage in tracker statistics [\#1057](https://github.com/torrentpier/torrentpier/pull/1057) ([kovalensky](https://github.com/kovalensky))
- Fixed undefined tpl variable SHOW_GROUP_MEMBERSHIP [\#1055](https://github.com/torrentpier/torrentpier/pull/1055) ([belomaxorka](https://github.com/belomaxorka))
- Show guests for last seeders [\#1053](https://github.com/torrentpier/torrentpier/pull/1053) ([kovalensky](https://github.com/kovalensky))
- Last seeder display improvements [\#1052](https://github.com/torrentpier/torrentpier/pull/1052) ([kovalensky](https://github.com/kovalensky))
- Show the last seeder's username in topics [\#1051](https://github.com/torrentpier/torrentpier/pull/1051) ([kovalensky](https://github.com/kovalensky))
- Minor improvements for template [\#1050](https://github.com/torrentpier/torrentpier/pull/1050) ([belomaxorka](https://github.com/belomaxorka))
- Fixed: Moderators can't see self IP addresses [\#1049](https://github.com/torrentpier/torrentpier/pull/1049) ([belomaxorka](https://github.com/belomaxorka))
- View user's profile also by it's username [\#1048](https://github.com/torrentpier/torrentpier/pull/1048) ([kovalensky](https://github.com/kovalensky))
- Scrape.php code reformatting [\#1047](https://github.com/torrentpier/torrentpier/pull/1047) ([kovalensky](https://github.com/kovalensky))
- Scraping improvements [\#1046](https://github.com/torrentpier/torrentpier/pull/1046) ([kovalensky](https://github.com/kovalensky))
- Small tracker improvements [\#1043](https://github.com/torrentpier/torrentpier/pull/1043) ([kovalensky](https://github.com/kovalensky))
- Small improvements to scraping [\#1042](https://github.com/torrentpier/torrentpier/pull/1042) ([kovalensky](https://github.com/kovalensky))
- Added v2 hash search to the scraping [\#1040](https://github.com/torrentpier/torrentpier/pull/1040) ([kovalensky](https://github.com/kovalensky))
- Update magnet icon [\#1038](https://github.com/torrentpier/torrentpier/pull/1038) ([kovalensky](https://github.com/kovalensky))
- Magnet link tweaks [\#1035](https://github.com/torrentpier/torrentpier/pull/1035) ([kovalensky](https://github.com/kovalensky))
- Use built-in binary hash feature [\#1032](https://github.com/torrentpier/torrentpier/pull/1032) ([kovalensky](https://github.com/kovalensky))
- Some v2 hashes were not found in the announcer [\#1031](https://github.com/torrentpier/torrentpier/pull/1031) ([kovalensky](https://github.com/kovalensky))
- Fix issues related to file list display and torrent registration [\#1028](https://github.com/torrentpier/torrentpier/pull/1028) ([kovalensky](https://github.com/kovalensky))
- NAT users' real port [\#1027](https://github.com/torrentpier/torrentpier/pull/1027) ([kovalensky](https://github.com/kovalensky))
- Removed time zone auto detection [\#1025](https://github.com/torrentpier/torrentpier/pull/1025) ([belomaxorka](https://github.com/belomaxorka))
- Added ability to debug ajax_die() calls [\#1023](https://github.com/torrentpier/torrentpier/pull/1023) ([belomaxorka](https://github.com/belomaxorka))
- Fixed incorrect displaying post actions buttons [\#1021](https://github.com/torrentpier/torrentpier/pull/1021) ([belomaxorka](https://github.com/belomaxorka))
- Fixed undefined offset of $action_params [\#1020](https://github.com/torrentpier/torrentpier/pull/1020) ([belomaxorka](https://github.com/belomaxorka))
- Transfer from array to ArrayObject data type [\#1019](https://github.com/torrentpier/torrentpier/pull/1019) ([kovalensky](https://github.com/kovalensky))
- Multiple Scrape [\#1018](https://github.com/torrentpier/torrentpier/pull/1018) ([kovalensky](https://github.com/kovalensky))
- Announce IPv4 && IPv6 of peers! [\#1017](https://github.com/torrentpier/torrentpier/pull/1017) ([kovalensky](https://github.com/kovalensky))
- Bind peer_hash to auth_key to avoid double announces via IPv4 and IPv6 at the same time [\#1016](https://github.com/torrentpier/torrentpier/pull/1016) ([kovalensky](https://github.com/kovalensky))
- Increase auth_key char length [\#1014](https://github.com/torrentpier/torrentpier/pull/1014) ([kovalensky](https://github.com/kovalensky))
- More performance optimized/random string generation, removed passkey length limit from the announcer [\#1013](https://github.com/torrentpier/torrentpier/pull/1013) ([kovalensky](https://github.com/kovalensky))
- More performance optimized/random string generation, removed limit from for announce key in the announcer [\#1012](https://github.com/torrentpier/torrentpier/pull/1012) ([kovalensky](https://github.com/kovalensky))
- Fixed broken ordering in memberlist.php [\#1010](https://github.com/torrentpier/torrentpier/pull/1010) ([belomaxorka](https://github.com/belomaxorka))
- Some fixes in admin_attach_cp.php [\#1009](https://github.com/torrentpier/torrentpier/pull/1009) ([belomaxorka](https://github.com/belomaxorka))
- Fixed undefined $lang['PREVIOUS'] [\#1008](https://github.com/torrentpier/torrentpier/pull/1008) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken letter marking in memberlist.php [\#1007](https://github.com/torrentpier/torrentpier/pull/1007) ([belomaxorka](https://github.com/belomaxorka))
- Moved htmlCHR() in common.php [\#1006](https://github.com/torrentpier/torrentpier/pull/1006) ([belomaxorka](https://github.com/belomaxorka))
- Fixed error while trying to delete posts by bot [\#1004](https://github.com/torrentpier/torrentpier/pull/1004) ([belomaxorka](https://github.com/belomaxorka))
- Escape HTML characters for peer_id once to avoid load [\#1002](https://github.com/torrentpier/torrentpier/pull/1002) ([kovalensky](https://github.com/kovalensky))
- 😅💙 1000th PR Merged! 💙😅 [\#1001](https://github.com/torrentpier/torrentpier/pull/1001) ([belomaxorka](https://github.com/belomaxorka))
- Added the ability to add additional announce URLs into torrent files [\#999](https://github.com/torrentpier/torrentpier/pull/999) ([belomaxorka](https://github.com/belomaxorka))
- Expression can be replaced by '??' version [\#998](https://github.com/torrentpier/torrentpier/pull/998) ([belomaxorka](https://github.com/belomaxorka))
- Added check $bb_cfg['magnet_links_enabled'] in create_magnet() [\#996](https://github.com/torrentpier/torrentpier/pull/996) ([belomaxorka](https://github.com/belomaxorka))
- Added $lang['BT_UNREGISTERED_ALREADY'] lang key [\#994](https://github.com/torrentpier/torrentpier/pull/994) ([belomaxorka](https://github.com/belomaxorka))
- Removed useless "Subject:" from email templates [\#993](https://github.com/torrentpier/torrentpier/pull/993) ([belomaxorka](https://github.com/belomaxorka))
- SQL: Increase speed_up & speed_down type limits [\#992](https://github.com/torrentpier/torrentpier/pull/992) ([belomaxorka](https://github.com/belomaxorka))
- Use strip_tags() for message in prompt_for_confirm() [\#991](https://github.com/torrentpier/torrentpier/pull/991) ([belomaxorka](https://github.com/belomaxorka))
- Use strip_tags() for error message in ajax_die() [\#990](https://github.com/torrentpier/torrentpier/pull/990) ([belomaxorka](https://github.com/belomaxorka))
- Use lang variable $lang['BT_REG_FAIL'] instead of text [\#989](https://github.com/torrentpier/torrentpier/pull/989) ([belomaxorka](https://github.com/belomaxorka))
- Use announce messages even after using redundant cache for output [\#987](https://github.com/torrentpier/torrentpier/pull/987) ([kovalensky](https://github.com/kovalensky))
- Fix currently not working peer icons [\#986](https://github.com/torrentpier/torrentpier/pull/986) ([kovalensky](https://github.com/kovalensky))
- Variable collision fix [\#984](https://github.com/torrentpier/torrentpier/pull/984), [\#985](https://github.com/torrentpier/torrentpier/pull/985) ([kovalensky](https://github.com/kovalensky))
- Fixed percentage calculation for SQL debug [\#980](https://github.com/torrentpier/torrentpier/pull/980) ([belomaxorka](https://github.com/belomaxorka))
- Refactoring: Use isset() with multiple parameters [\#978](https://github.com/torrentpier/torrentpier/pull/978) ([belomaxorka](https://github.com/belomaxorka))
- Check $tpl_vars['QUESTION'] in print_confirmation() [\#977](https://github.com/torrentpier/torrentpier/pull/977) ([belomaxorka](https://github.com/belomaxorka))
- Peer client display support [\#968](https://github.com/torrentpier/torrentpier/pull/968) ([kovalensky](https://github.com/kovalensky))
- Fixed undefined array key group_description [\#969](https://github.com/torrentpier/torrentpier/pull/969) ([belomaxorka](https://github.com/belomaxorka))
- Added my name to the list of authors [\#963](https://github.com/torrentpier/torrentpier/pull/963) ([kovalensky](https://github.com/kovalensky))
- Better way to prioritize peers [\#962](https://github.com/torrentpier/torrentpier/pull/962) ([kovalensky](https://github.com/kovalensky))
- Prioritize returning leecher list for seeder announces [\#961](https://github.com/torrentpier/torrentpier/pull/961) ([kovalensky](https://github.com/kovalensky))
- Generate .torrent file names based on topic titles [\#958](https://github.com/torrentpier/torrentpier/pull/958) ([kovalensky](https://github.com/kovalensky))
- long2ip_extended() missing function [\#948](https://github.com/torrentpier/torrentpier/pull/948) ([kovalensky](https://github.com/kovalensky))
- Use humn_size() for AVATAR_EXPLAIN [\#943](https://github.com/torrentpier/torrentpier/pull/943) ([belomaxorka](https://github.com/belomaxorka))
- Added missing template var in group.php [\#939](https://github.com/torrentpier/torrentpier/pull/939) ([belomaxorka](https://github.com/belomaxorka))
- BEP-7 & BEP-24 & IPv6 functions [\#934](https://github.com/torrentpier/torrentpier/pull/934) ([kovalensky](https://github.com/kovalensky))
- Prevent infinity user adding into group [\#937](https://github.com/torrentpier/torrentpier/pull/937) ([belomaxorka](https://github.com/belomaxorka))
- Maked configurable email visibility for everybody [\#936](https://github.com/torrentpier/torrentpier/pull/936) ([belomaxorka](https://github.com/belomaxorka))
- Respond with loopback if peer list is empty [\#933](https://github.com/torrentpier/torrentpier/pull/933) ([kovalensky](https://github.com/kovalensky))
- Use \Arokettu\Bencode\ instead \SandFox\Bencode\ [\#932](https://github.com/torrentpier/torrentpier/pull/932) ([belomaxorka](https://github.com/belomaxorka))
- Added support for bmp images [\#931](https://github.com/torrentpier/torrentpier/pull/931) ([belomaxorka](https://github.com/belomaxorka))
- ACP: Changed extensions sorting [\#930](https://github.com/torrentpier/torrentpier/pull/930) ([belomaxorka](https://github.com/belomaxorka))
- Added missing bmp extension in SQL dump [\#929](https://github.com/torrentpier/torrentpier/pull/929) ([belomaxorka](https://github.com/belomaxorka))
- Use IMAGETYPE_* constants [\#928](https://github.com/torrentpier/torrentpier/pull/928) ([belomaxorka](https://github.com/belomaxorka))
- Small refactoring in Upload class [\#927](https://github.com/torrentpier/torrentpier/pull/927) ([belomaxorka](https://github.com/belomaxorka))
- Added support for webp avatars [\#926](https://github.com/torrentpier/torrentpier/pull/926) ([belomaxorka](https://github.com/belomaxorka))
- Added check up_allowed in Upload.php class [\#924](https://github.com/torrentpier/torrentpier/pull/924) ([belomaxorka](https://github.com/belomaxorka))
- Added support for webp images 🌆 [\#919](https://github.com/torrentpier/torrentpier/pull/919) ([belomaxorka](https://github.com/belomaxorka))
- Switched from md5 to a faster xxHash hash function [\#921](https://github.com/torrentpier/torrentpier/pull/921) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- Added support 7z archives [\#923](https://github.com/torrentpier/torrentpier/pull/923) ([belomaxorka](https://github.com/belomaxorka))
- Added missing EXCLUDED_USERS in tr_stats.php [\#922](https://github.com/torrentpier/torrentpier/pull/922) ([belomaxorka](https://github.com/belomaxorka))
- Announcer support for responding to stopped events [\#918](https://github.com/torrentpier/torrentpier/pull/918) ([kovalensky](https://github.com/kovalensky))
- Added missing !defined('BB_ROOT') check [\#917](https://github.com/torrentpier/torrentpier/pull/917) ([belomaxorka](https://github.com/belomaxorka))
- Support for IDN domains [\#909](https://github.com/torrentpier/torrentpier/pull/909) ([kovalensky](https://github.com/kovalensky))
- Some cleanup [\#1003](https://github.com/torrentpier/torrentpier/pull/1003) ([belomaxorka](https://github.com/belomaxorka))
- Code formatting [\#1026](https://github.com/torrentpier/torrentpier/pull/1026), [\#1030](https://github.com/torrentpier/torrentpier/pull/1030), [\#1044](https://github.com/torrentpier/torrentpier/pull/1044), [\#1056](https://github.com/torrentpier/torrentpier/pull/1056), [\#1059](https://github.com/torrentpier/torrentpier/pull/1059), [\#1062](https://github.com/torrentpier/torrentpier/pull/1062), [\#1063](https://github.com/torrentpier/torrentpier/pull/1063), [\#1065](https://github.com/torrentpier/torrentpier/pull/1065), [\#1071](https://github.com/torrentpier/torrentpier/pull/1071), [\#1076](https://github.com/torrentpier/torrentpier/pull/1076) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- Minor code changes [\#967](https://github.com/torrentpier/torrentpier/pull/967), [\#970](https://github.com/torrentpier/torrentpier/pull/970) ([kovalensky](https://github.com/kovalensky))
- Minor improvements [\#902](https://github.com/torrentpier/torrentpier/pull/902), [\#903](https://github.com/torrentpier/torrentpier/pull/903), [\#904](https://github.com/torrentpier/torrentpier/pull/904), [\#905](https://github.com/torrentpier/torrentpier/pull/905), [\#906](https://github.com/torrentpier/torrentpier/pull/906), [\#907](https://github.com/torrentpier/torrentpier/pull/907), [\#908](https://github.com/torrentpier/torrentpier/pull/908), [\#910](https://github.com/torrentpier/torrentpier/pull/910), [\#911](https://github.com/torrentpier/torrentpier/pull/911), [\#913](https://github.com/torrentpier/torrentpier/pull/913), [\#914](https://github.com/torrentpier/torrentpier/pull/914), [\#915](https://github.com/torrentpier/torrentpier/pull/915), [\#920](https://github.com/torrentpier/torrentpier/pull/920), [\#935](https://github.com/torrentpier/torrentpier/pull/935), [\#946](https://github.com/torrentpier/torrentpier/pull/946), [\#950](https://github.com/torrentpier/torrentpier/pull/950), [\#951](https://github.com/torrentpier/torrentpier/pull/951), [\#952](https://github.com/torrentpier/torrentpier/pull/952), [\#953](https://github.com/torrentpier/torrentpier/pull/953), [\#954](https://github.com/torrentpier/torrentpier/pull/954), [\#956](https://github.com/torrentpier/torrentpier/pull/956), [\#959](https://github.com/torrentpier/torrentpier/pull/959), [\#960](https://github.com/torrentpier/torrentpier/pull/960), [\#965](https://github.com/torrentpier/torrentpier/pull/965), [\#966](https://github.com/torrentpier/torrentpier/pull/966), [\#972](https://github.com/torrentpier/torrentpier/pull/972), [\#973](https://github.com/torrentpier/torrentpier/pull/973), [\#974](https://github.com/torrentpier/torrentpier/pull/974), [\#975](https://github.com/torrentpier/torrentpier/pull/975), [\#976](https://github.com/torrentpier/torrentpier/pull/976), [\#982](https://github.com/torrentpier/torrentpier/pull/982), [\#988](https://github.com/torrentpier/torrentpier/pull/988), [\#997](https://github.com/torrentpier/torrentpier/pull/997) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#912](https://github.com/torrentpier/torrentpier/pull/912), [\#916](https://github.com/torrentpier/torrentpier/pull/916), [\#925](https://github.com/torrentpier/torrentpier/pull/925), [\#947](https://github.com/torrentpier/torrentpier/pull/947), [\#957](https://github.com/torrentpier/torrentpier/pull/957), [\#971](https://github.com/torrentpier/torrentpier/pull/971), [\#979](https://github.com/torrentpier/torrentpier/pull/979), [\#995](https://github.com/torrentpier/torrentpier/pull/995), [\#1000](https://github.com/torrentpier/torrentpier/pull/1000), [\#1037](https://github.com/torrentpier/torrentpier/pull/1037), [\#1054](https://github.com/torrentpier/torrentpier/pull/1054), [\#1072](https://github.com/torrentpier/torrentpier/pull/1072) ([Exileum](https://github.com/Exileum))
- Updated deps [\#964](https://github.com/torrentpier/torrentpier/pull/964), [\#983](https://github.com/torrentpier/torrentpier/pull/983), [\#1011](https://github.com/torrentpier/torrentpier/pull/1011), [\#1015](https://github.com/torrentpier/torrentpier/pull/1015), [\#1045](https://github.com/torrentpier/torrentpier/pull/1045) ([belomaxorka](https://github.com/belomaxorka))
## [v2.4.0-beta2](https://github.com/torrentpier/torrentpier/tree/v2.4.0-beta2) (2023-09-16)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-beta1...v2.4.0-beta2)
**Merged pull requests:**
- Tracker announce & scrape improvements 🥳 [\#901](https://github.com/torrentpier/torrentpier/pull/901) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- Fixed downloaded counter [\#894](https://github.com/torrentpier/torrentpier/pull/894) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- Fixed null seeders & leechers in announcer [\#891](https://github.com/torrentpier/torrentpier/pull/891) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- BitTorrent v2 support enhancements 🥳 [\#876](https://github.com/torrentpier/torrentpier/pull/876) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- Added showing info_hash v2 in viewtopic.php [\#870](https://github.com/torrentpier/torrentpier/pull/870) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- Added search by info_hash v2 🐯 [\#869](https://github.com/torrentpier/torrentpier/pull/869) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- BitTorrent v2 support 🐸 [\#866](https://github.com/torrentpier/torrentpier/pull/866) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- Replace all double quotes with single quotes [\#888](https://github.com/torrentpier/torrentpier/pull/888) ([belomaxorka](https://github.com/belomaxorka))
- Removed unused lang variables [\#885](https://github.com/torrentpier/torrentpier/pull/885) ([belomaxorka](https://github.com/belomaxorka))
- Fixed empty $row['pm_count'] [\#880](https://github.com/torrentpier/torrentpier/pull/880) ([belomaxorka](https://github.com/belomaxorka))
- Created function get_banned_users() [\#878](https://github.com/torrentpier/torrentpier/pull/878) ([belomaxorka](https://github.com/belomaxorka))
- Moved callseed to ajax actions [\#877](https://github.com/torrentpier/torrentpier/pull/877) ([belomaxorka](https://github.com/belomaxorka))
- Added ability to remove topic templates [\#862](https://github.com/torrentpier/torrentpier/pull/862) ([belomaxorka](https://github.com/belomaxorka))
- Added missing translation in admin_ug_auth [\#861](https://github.com/torrentpier/torrentpier/pull/861) ([belomaxorka](https://github.com/belomaxorka))
- Show renamed topic actions in log actions [\#860](https://github.com/torrentpier/torrentpier/pull/860) ([belomaxorka](https://github.com/belomaxorka))
- Show set/unset downloaded actions in log actions [\#858](https://github.com/torrentpier/torrentpier/pull/858) ([belomaxorka](https://github.com/belomaxorka))
- Show pin & unpin actions in log actions [\#857](https://github.com/torrentpier/torrentpier/pull/857) ([belomaxorka](https://github.com/belomaxorka))
- Increase post_text & privmsgs_text limits [\#848](https://github.com/torrentpier/torrentpier/pull/848) ([belomaxorka](https://github.com/belomaxorka))
- Added show password button [\#841](https://github.com/torrentpier/torrentpier/pull/841) ([belomaxorka](https://github.com/belomaxorka))
- Passkey rework 🔫 [\#839](https://github.com/torrentpier/torrentpier/pull/839) ([belomaxorka](https://github.com/belomaxorka))
- Rename passkeyExists() -> getPasskey() [\#838](https://github.com/torrentpier/torrentpier/pull/838) ([belomaxorka](https://github.com/belomaxorka))
- Added method passkeyExists() [\#837](https://github.com/torrentpier/torrentpier/pull/837) ([belomaxorka](https://github.com/belomaxorka))
- Refactored get_userdata() function [\#836](https://github.com/torrentpier/torrentpier/pull/836) ([belomaxorka](https://github.com/belomaxorka))
- Fixed $bb_cfg['pm_days_keep'] [\#834](https://github.com/torrentpier/torrentpier/pull/834) ([belomaxorka](https://github.com/belomaxorka))
- Minor improvements [\#833](https://github.com/torrentpier/torrentpier/pull/833), [\#842](https://github.com/torrentpier/torrentpier/pull/842), [\#843](https://github.com/torrentpier/torrentpier/pull/843), [\#844](https://github.com/torrentpier/torrentpier/pull/844), [\#845](https://github.com/torrentpier/torrentpier/pull/845), [\#846](https://github.com/torrentpier/torrentpier/pull/846), [\#852](https://github.com/torrentpier/torrentpier/pull/852), [\#853](https://github.com/torrentpier/torrentpier/pull/853), [\#854](https://github.com/torrentpier/torrentpier/pull/854), [\#855](https://github.com/torrentpier/torrentpier/pull/855), [\#856](https://github.com/torrentpier/torrentpier/pull/856), [\#863](https://github.com/torrentpier/torrentpier/pull/863), [\#867](https://github.com/torrentpier/torrentpier/pull/867), [\#868](https://github.com/torrentpier/torrentpier/pull/868), [\#879](https://github.com/torrentpier/torrentpier/pull/879), [\#882](https://github.com/torrentpier/torrentpier/pull/882), [\#884](https://github.com/torrentpier/torrentpier/pull/884), [\#887](https://github.com/torrentpier/torrentpier/pull/887), [\#889](https://github.com/torrentpier/torrentpier/pull/889), [\#890](https://github.com/torrentpier/torrentpier/pull/890), [\#892](https://github.com/torrentpier/torrentpier/pull/892), [\#893](https://github.com/torrentpier/torrentpier/pull/893), [\#895](https://github.com/torrentpier/torrentpier/pull/895), [\#897](https://github.com/torrentpier/torrentpier/pull/897), [\#898](https://github.com/torrentpier/torrentpier/pull/898), [\#900](https://github.com/torrentpier/torrentpier/pull/900) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#840](https://github.com/torrentpier/torrentpier/pull/840), [\#850](https://github.com/torrentpier/torrentpier/pull/850), [\#859](https://github.com/torrentpier/torrentpier/pull/859), [\#871](https://github.com/torrentpier/torrentpier/pull/871), [\#881](https://github.com/torrentpier/torrentpier/pull/881), [\#886](https://github.com/torrentpier/torrentpier/pull/886) ([Exileum](https://github.com/Exileum), [belomaxorka](https://github.com/belomaxorka))
- Updated deps [\#847](https://github.com/torrentpier/torrentpier/pull/847), [\#849](https://github.com/torrentpier/torrentpier/pull/849), [\#875](https://github.com/torrentpier/torrentpier/pull/875), [\#874](https://github.com/torrentpier/torrentpier/pull/874), [\#873](https://github.com/torrentpier/torrentpier/pull/873), [\#872](https://github.com/torrentpier/torrentpier/pull/872) ([belomaxorka](https://github.com/belomaxorka))
## [v2.4.0-beta1](https://github.com/torrentpier/torrentpier/tree/v2.4.0-beta1) (2023-07-18)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-alpha4...v2.4.0-beta1)
**Merged pull requests:**
- Fixed broken smilies replacing [\#832](https://github.com/torrentpier/torrentpier/pull/832) ([belomaxorka](https://github.com/belomaxorka))
- Fixed mailer exception exposing stack trace [\#831](https://github.com/torrentpier/torrentpier/pull/831) ([belomaxorka](https://github.com/belomaxorka), [Lange](https://torrentpier.com/members/lange.55/))
- Maked max smilies in PM configurable [\#829](https://github.com/torrentpier/torrentpier/pull/829) ([belomaxorka](https://github.com/belomaxorka))
- Fix RFC 1918 RegExp [\#828](https://github.com/torrentpier/torrentpier/pull/828) ([belomaxorka](https://github.com/belomaxorka), [MetalWarrior88](https://github.com/MetalWarrior88))
- Fixed broken reset autologin [\#825](https://github.com/torrentpier/torrentpier/pull/825) ([belomaxorka](https://github.com/belomaxorka))
- Improved debug 🐛 [\#822](https://github.com/torrentpier/torrentpier/pull/822) ([belomaxorka](https://github.com/belomaxorka))
- Redirect to viewprofile.php if profile.php hasn't arguments [\#821](https://github.com/torrentpier/torrentpier/pull/821) ([belomaxorka](https://github.com/belomaxorka))
- Show smilies in post for guests [\#817](https://github.com/torrentpier/torrentpier/pull/817) ([belomaxorka](https://github.com/belomaxorka))
- Added ability to set MySQLi error reporting [\#813](https://github.com/torrentpier/torrentpier/pull/813) ([belomaxorka](https://github.com/belomaxorka))
- Added ability to generate passkey after registration [\#810](https://github.com/torrentpier/torrentpier/pull/810) ([belomaxorka](https://github.com/belomaxorka))
- Added search by torrent status [\#805](https://github.com/torrentpier/torrentpier/pull/805) ([belomaxorka](https://github.com/belomaxorka))
- Fixed pagination [\#800](https://github.com/torrentpier/torrentpier/pull/800) ([belomaxorka](https://github.com/belomaxorka))
- Removed unused lang variables [\#802](https://github.com/torrentpier/torrentpier/pull/802) ([belomaxorka](https://github.com/belomaxorka))
- Minor improvements [\#796](https://github.com/torrentpier/torrentpier/pull/796), [\#797](https://github.com/torrentpier/torrentpier/pull/797), [\#798](https://github.com/torrentpier/torrentpier/pull/798), [\#799](https://github.com/torrentpier/torrentpier/pull/799), [\#801](https://github.com/torrentpier/torrentpier/pull/801), [\#804](https://github.com/torrentpier/torrentpier/pull/804), [\#806](https://github.com/torrentpier/torrentpier/pull/806), [\#808](https://github.com/torrentpier/torrentpier/pull/808), [\#809](https://github.com/torrentpier/torrentpier/pull/809), [\#811](https://github.com/torrentpier/torrentpier/pull/811), [\#812](https://github.com/torrentpier/torrentpier/pull/812), [\#814](https://github.com/torrentpier/torrentpier/pull/814), [\#816](https://github.com/torrentpier/torrentpier/pull/816), [\#819](https://github.com/torrentpier/torrentpier/pull/819), [\#823](https://github.com/torrentpier/torrentpier/pull/823), [\#824](https://github.com/torrentpier/torrentpier/pull/824), [\#826](https://github.com/torrentpier/torrentpier/pull/826) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#803](https://github.com/torrentpier/torrentpier/pull/803), [\#807](https://github.com/torrentpier/torrentpier/pull/807) ([Exileum](https://github.com/Exileum))
- Updated deps [\#818](https://github.com/torrentpier/torrentpier/pull/818), [\#830](https://github.com/torrentpier/torrentpier/pull/830) ([belomaxorka](https://github.com/belomaxorka))
## [v2.4.0-alpha4](https://github.com/torrentpier/torrentpier/tree/v2.4.0-alpha4) (2023-06-08)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-alpha3...v2.4.0-alpha4)
**Merged pull requests:**
- Maked max post length configurable [\#793](https://github.com/torrentpier/torrentpier/pull/793) ([belomaxorka](https://github.com/belomaxorka))
- Used new Bencoder library 🔩 [\#791](https://github.com/torrentpier/torrentpier/pull/791) ([belomaxorka](https://github.com/belomaxorka), [kovalensky](https://github.com/kovalensky))
- Added some placeholders for input fields [\#789](https://github.com/torrentpier/torrentpier/pull/789) ([belomaxorka](https://github.com/belomaxorka))
- Fixed empty user search box [\#785](https://github.com/torrentpier/torrentpier/pull/785) ([belomaxorka](https://github.com/belomaxorka))
- Fixed null $u_data if user not found [\#783](https://github.com/torrentpier/torrentpier/pull/783) ([belomaxorka](https://github.com/belomaxorka))
- Added missing properties in User class [\#782](https://github.com/torrentpier/torrentpier/pull/782) ([belomaxorka](https://github.com/belomaxorka))
- Fixed some deprecations [\#777](https://github.com/torrentpier/torrentpier/pull/777) ([belomaxorka](https://github.com/belomaxorka))
- Fixed: preg_match(): Passing null to parameter [\#776](https://github.com/torrentpier/torrentpier/pull/776) ([belomaxorka](https://github.com/belomaxorka))
- Reformated JS [\#770](https://github.com/torrentpier/torrentpier/pull/770), [\#794](https://github.com/torrentpier/torrentpier/pull/794) ([belomaxorka](https://github.com/belomaxorka))
- Implemented password_hash API 🥳 [\#768](https://github.com/torrentpier/torrentpier/pull/768) ([belomaxorka](https://github.com/belomaxorka))
- Updated deps [\#763](https://github.com/torrentpier/torrentpier/pull/763) ([belomaxorka](https://github.com/belomaxorka))
- Minor improvements [\#769](https://github.com/torrentpier/torrentpier/pull/769), [\#773](https://github.com/torrentpier/torrentpier/pull/773), [\#784](https://github.com/torrentpier/torrentpier/pull/784), [\#787](https://github.com/torrentpier/torrentpier/pull/787), [\#788](https://github.com/torrentpier/torrentpier/pull/788), [\#795](https://github.com/torrentpier/torrentpier/pull/795) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#786](https://github.com/torrentpier/torrentpier/pull/786) ([Exileum](https://github.com/Exileum))
## [v2.4.0-alpha3](https://github.com/torrentpier/torrentpier/tree/v2.4.0-alpha3) (2023-06-02)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-alpha2...v2.4.0-alpha3)
**Merged pull requests:**
- Maked jumpbox optional [\#727](https://github.com/torrentpier/torrentpier/pull/727) ([belomaxorka](https://github.com/belomaxorka))
- Code Inspection: Ternary expression can be replaced with condition [\#728](https://github.com/torrentpier/torrentpier/pull/728) ([belomaxorka](https://github.com/belomaxorka))
- Fixed: [Deprecated] number_format(): Passing null to parameter [\#729](https://github.com/torrentpier/torrentpier/pull/729) ([belomaxorka](https://github.com/belomaxorka))
- Replaced prn_r() function with dump() [\#730](https://github.com/torrentpier/torrentpier/pull/730) ([belomaxorka](https://github.com/belomaxorka))
- Replaced bb_exit() with native [\#731](https://github.com/torrentpier/torrentpier/pull/731) ([belomaxorka](https://github.com/belomaxorka))
- Added exception if .env not found [\#734](https://github.com/torrentpier/torrentpier/pull/734) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken file_write() function [\#737](https://github.com/torrentpier/torrentpier/pull/737) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken $replace_content [\#738](https://github.com/torrentpier/torrentpier/pull/738) ([belomaxorka](https://github.com/belomaxorka))
- Moved poll functions to Poll class [\#739](https://github.com/torrentpier/torrentpier/pull/739) ([belomaxorka](https://github.com/belomaxorka))
- Replaced bb_realpath() with native [\#740](https://github.com/torrentpier/torrentpier/pull/740) ([belomaxorka](https://github.com/belomaxorka))
- Fixed methods types in Admin/Cron.php [\#743](https://github.com/torrentpier/torrentpier/pull/743) ([belomaxorka](https://github.com/belomaxorka))
- Fixed empty $_SERVER['SERVER_PROTOCOL'] in cron [\#744](https://github.com/torrentpier/torrentpier/pull/744) ([belomaxorka](https://github.com/belomaxorka))
- Moved $bb_cfg['show_board_start_date'] to admin panel [\#745](https://github.com/torrentpier/torrentpier/pull/745) ([belomaxorka](https://github.com/belomaxorka))
- Added sup & sub tags in BBCode [\#746](https://github.com/torrentpier/torrentpier/pull/746) ([belomaxorka](https://github.com/belomaxorka))
- Unified checkForm() JS [\#747](https://github.com/torrentpier/torrentpier/pull/747) ([belomaxorka](https://github.com/belomaxorka))
- [TEMP] Removed Http class [\#748](https://github.com/torrentpier/torrentpier/pull/748) ([belomaxorka](https://github.com/belomaxorka))
- Added reset button in posting editor [\#749](https://github.com/torrentpier/torrentpier/pull/749) ([belomaxorka](https://github.com/belomaxorka))
- Fixed: Automatic conversion of false to array is deprecated [\#750](https://github.com/torrentpier/torrentpier/pull/750) ([belomaxorka](https://github.com/belomaxorka))
- Reformated JS [\#753](https://github.com/torrentpier/torrentpier/pull/753), [\#754](https://github.com/torrentpier/torrentpier/pull/754) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#700](https://github.com/torrentpier/torrentpier/pull/700) ([Exileum](https://github.com/Exileum))
- Minor improvements [\#732](https://github.com/torrentpier/torrentpier/pull/732), [\#735](https://github.com/torrentpier/torrentpier/pull/735), [\#741](https://github.com/torrentpier/torrentpier/pull/741), [\#742](https://github.com/torrentpier/torrentpier/pull/742), [\#751](https://github.com/torrentpier/torrentpier/pull/751), [\#752](https://github.com/torrentpier/torrentpier/pull/752), [\#755](https://github.com/torrentpier/torrentpier/pull/755), [\#756](https://github.com/torrentpier/torrentpier/pull/756), [\#757](https://github.com/torrentpier/torrentpier/pull/757), [\#761](https://github.com/torrentpier/torrentpier/pull/761) ([belomaxorka](https://github.com/belomaxorka))
- Updated deps [\#733](https://github.com/torrentpier/torrentpier/pull/733), [\#758](https://github.com/torrentpier/torrentpier/pull/758) ([belomaxorka](https://github.com/belomaxorka))
## [v2.4.0-alpha2](https://github.com/torrentpier/torrentpier/tree/v2.4.0-alpha2) (2023-05-28)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.4.0-alpha1...v2.4.0-alpha2)
**Merged pull requests:**
- Show cut button in debug panel only if sql_log [\#696](https://github.com/torrentpier/torrentpier/pull/696) ([belomaxorka](https://github.com/belomaxorka))
- Fixed input types in some cases [\#697](https://github.com/torrentpier/torrentpier/pull/697) ([belomaxorka](https://github.com/belomaxorka))
- Refactored is_gold & gender_image functions [\#698](https://github.com/torrentpier/torrentpier/pull/698) ([belomaxorka](https://github.com/belomaxorka))
- Added translations for debug panel [\#699](https://github.com/torrentpier/torrentpier/pull/699) ([belomaxorka](https://github.com/belomaxorka))
- Use native __DIR__ for BB_PATH [\#702](https://github.com/torrentpier/torrentpier/pull/702) ([belomaxorka](https://github.com/belomaxorka))
- Removed APP_NAME variable [\#708](https://github.com/torrentpier/torrentpier/pull/708) ([belomaxorka](https://github.com/belomaxorka))
- Removed unused globals [\#709](https://github.com/torrentpier/torrentpier/pull/709) ([belomaxorka](https://github.com/belomaxorka))
- Fixed issue with DB_PORT not applying [\#710](https://github.com/torrentpier/torrentpier/pull/710) ([belomaxorka](https://github.com/belomaxorka))
- Simplified IPHelper [\#712](https://github.com/torrentpier/torrentpier/pull/712) ([belomaxorka](https://github.com/belomaxorka))
- Changed syntax for constants definition [\#714](https://github.com/torrentpier/torrentpier/pull/714) ([belomaxorka](https://github.com/belomaxorka))
- Improvements for SEO [\#718](https://github.com/torrentpier/torrentpier/pull/718) ([belomaxorka](https://github.com/belomaxorka))
- Added password required symbols check [\#713](https://github.com/torrentpier/torrentpier/pull/713) ([belomaxorka](https://github.com/belomaxorka))
- Fixed: htmlspecialchars(): Passing null to parameter [\#719](https://github.com/torrentpier/torrentpier/pull/719) ([belomaxorka](https://github.com/belomaxorka))
- Added 'samesite' option for setcookie() [\#720](https://github.com/torrentpier/torrentpier/pull/720) ([belomaxorka](https://github.com/belomaxorka))
- Removed deprecated type="text/css" [\#721](https://github.com/torrentpier/torrentpier/pull/721) ([belomaxorka](https://github.com/belomaxorka))
- Added some new meta tags [\#722](https://github.com/torrentpier/torrentpier/pull/722) ([belomaxorka](https://github.com/belomaxorka))
- Fixed: Required parameter $mode follows optional parameter $submit [\#724](https://github.com/torrentpier/torrentpier/pull/724) ([belomaxorka](https://github.com/belomaxorka))
- Added show board start date on index page [\#725](https://github.com/torrentpier/torrentpier/pull/725) ([belomaxorka](https://github.com/belomaxorka))
- Use define instead of tpl variable [\#726](https://github.com/torrentpier/torrentpier/pull/726) ([belomaxorka](https://github.com/belomaxorka))
- Updated deps [\#704](https://github.com/torrentpier/torrentpier/pull/704), [\#705](https://github.com/torrentpier/torrentpier/pull/705) ([belomaxorka](https://github.com/belomaxorka))
- Minor improvements in admin templates [\#706](https://github.com/torrentpier/torrentpier/pull/706) ([belomaxorka](https://github.com/belomaxorka))
- Minor improvements [\#707](https://github.com/torrentpier/torrentpier/pull/707), [\#711](https://github.com/torrentpier/torrentpier/pull/711), [\#715](https://github.com/torrentpier/torrentpier/pull/715), [\#716](https://github.com/torrentpier/torrentpier/pull/716), [\#717](https://github.com/torrentpier/torrentpier/pull/717), [\#723](https://github.com/torrentpier/torrentpier/pull/723) ([belomaxorka](https://github.com/belomaxorka))
## [v2.4.0-alpha1](https://github.com/torrentpier/torrentpier/tree/v2.4.0-alpha1) (2023-05-20)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.3.1...v2.4.0-alpha1)
**Merged pull requests:**
- Added ability to select email type in mass email [\#624](https://github.com/torrentpier/torrentpier/pull/624) ([belomaxorka](https://github.com/belomaxorka))
- Added password method in validator [\#625](https://github.com/torrentpier/torrentpier/pull/625) ([belomaxorka](https://github.com/belomaxorka))
- Show default avatar after delete, instead of hide [\#628](https://github.com/torrentpier/torrentpier/pull/628) ([belomaxorka](https://github.com/belomaxorka))
- Switching to Symfony Mailer [\#629](https://github.com/torrentpier/torrentpier/pull/629) ([Exileum](https://github.com/Exileum))
- Added missing comments into Env class [\#633](https://github.com/torrentpier/torrentpier/pull/633) ([belomaxorka](https://github.com/belomaxorka))
- Apply fixes from StyleCI [\#634](https://github.com/torrentpier/torrentpier/pull/634), [\#635](https://github.com/torrentpier/torrentpier/pull/635) ([Exileum](https://github.com/Exileum))
- Added missing comments Emailer [\#637](https://github.com/torrentpier/torrentpier/pull/637) ([belomaxorka](https://github.com/belomaxorka))
- Various fixes after composer deps update [\#638](https://github.com/torrentpier/torrentpier/pull/638) ([belomaxorka](https://github.com/belomaxorka))
- Fixed undefined value() functions [\#640](https://github.com/torrentpier/torrentpier/pull/640) ([belomaxorka](https://github.com/belomaxorka))
- Added IPHelper implementation [\#631](https://github.com/torrentpier/torrentpier/pull/631) ([belomaxorka](https://github.com/belomaxorka))
- Fixing the .env load [\#643](https://github.com/torrentpier/torrentpier/pull/643) ([Exileum](https://github.com/Exileum))
- Added Http class implementation [\#632](https://github.com/torrentpier/torrentpier/pull/632) ([belomaxorka](https://github.com/belomaxorka))
- Refactored Validate class [\#646](https://github.com/torrentpier/torrentpier/pull/646) ([belomaxorka](https://github.com/belomaxorka))
- Added system check requirements and more [\#645](https://github.com/torrentpier/torrentpier/pull/645) ([belomaxorka](https://github.com/belomaxorka))
- Removed useless email empty check in register.php [\#647](https://github.com/torrentpier/torrentpier/pull/647) ([belomaxorka](https://github.com/belomaxorka))
- Refactored Sitemap class [\#648](https://github.com/torrentpier/torrentpier/pull/648) ([belomaxorka](https://github.com/belomaxorka))
- Refactored Dev class [\#649](https://github.com/torrentpier/torrentpier/pull/649) ([belomaxorka](https://github.com/belomaxorka))
- Refactored Ajax class [\#650](https://github.com/torrentpier/torrentpier/pull/650) ([belomaxorka](https://github.com/belomaxorka))
- Added SQLite3 installed check [Cache/Datastore] [\#652](https://github.com/torrentpier/torrentpier/pull/652) ([belomaxorka](https://github.com/belomaxorka))
- Added missing default statement in switch case [\#653](https://github.com/torrentpier/torrentpier/pull/653) ([belomaxorka](https://github.com/belomaxorka))
- Refactored Sessions class [\#656](https://github.com/torrentpier/torrentpier/pull/656) ([belomaxorka](https://github.com/belomaxorka))
- Refactored CronHelper class [\#657](https://github.com/torrentpier/torrentpier/pull/657) ([belomaxorka](https://github.com/belomaxorka))
- Minor edits to the localization [\#655](https://github.com/torrentpier/torrentpier/pull/655) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken pin first post [\#660](https://github.com/torrentpier/torrentpier/pull/660) ([belomaxorka](https://github.com/belomaxorka))
- Reworked info.php [\#664](https://github.com/torrentpier/torrentpier/pull/664) ([belomaxorka](https://github.com/belomaxorka))
- Removed useless copy actions [\#661](https://github.com/torrentpier/torrentpier/pull/661) ([belomaxorka](https://github.com/belomaxorka))
- New implementation of IPHelper [\#665](https://github.com/torrentpier/torrentpier/pull/665) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken flood control [\#666](https://github.com/torrentpier/torrentpier/pull/666) ([belomaxorka](https://github.com/belomaxorka))
- Fixed empty $auth_key after gen passkey [\#670](https://github.com/torrentpier/torrentpier/pull/670) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken predicting birthday year [\#668](https://github.com/torrentpier/torrentpier/pull/668) ([belomaxorka](https://github.com/belomaxorka))
- Prevent issue with broken deleting posts [\#673](https://github.com/torrentpier/torrentpier/pull/673) ([belomaxorka](https://github.com/belomaxorka))
- Removed isAJAX check [So buggy] [\#675](https://github.com/torrentpier/torrentpier/pull/675) ([belomaxorka](https://github.com/belomaxorka))
- Show correct info about password requirements [\#676](https://github.com/torrentpier/torrentpier/pull/676) ([belomaxorka](https://github.com/belomaxorka))
- Updated sidebar links [\#678](https://github.com/torrentpier/torrentpier/pull/678) ([belomaxorka](https://github.com/belomaxorka))
- Added theme exists check [\#679](https://github.com/torrentpier/torrentpier/pull/679) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken get gethostbyaddr [\#681](https://github.com/torrentpier/torrentpier/pull/681) ([belomaxorka](https://github.com/belomaxorka))
- Cumulative update ☕ [\#685](https://github.com/torrentpier/torrentpier/pull/685) ([belomaxorka](https://github.com/belomaxorka))
- Remove unused use statement [\#687](https://github.com/torrentpier/torrentpier/pull/687) ([belomaxorka](https://github.com/belomaxorka))
- Prevent issue with empty $disallowed_id removing [\#692](https://github.com/torrentpier/torrentpier/pull/692) ([belomaxorka](https://github.com/belomaxorka))
- Fixed input types in some cases [\#693](https://github.com/torrentpier/torrentpier/pull/693) ([belomaxorka](https://github.com/belomaxorka))
- [TEMP] Prevent issue with undefined lang variable [\#694](https://github.com/torrentpier/torrentpier/pull/694) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#626](https://github.com/torrentpier/torrentpier/pull/626), [\#695](https://github.com/torrentpier/torrentpier/pull/695) ([Exileum](https://github.com/Exileum))
- Minor adjustments [\#644](https://github.com/torrentpier/torrentpier/pull/644) ([belomaxorka](https://github.com/belomaxorka))
- Minor fixes [\#654](https://github.com/torrentpier/torrentpier/pull/654), [\#659](https://github.com/torrentpier/torrentpier/pull/659), [\#662](https://github.com/torrentpier/torrentpier/pull/662), [\#663](https://github.com/torrentpier/torrentpier/pull/663), [\#667](https://github.com/torrentpier/torrentpier/pull/667), [\#670](https://github.com/torrentpier/torrentpier/pull/670), [\#674](https://github.com/torrentpier/torrentpier/pull/674), [\#682](https://github.com/torrentpier/torrentpier/pull/682), [\#686](https://github.com/torrentpier/torrentpier/pull/686) ([belomaxorka](https://github.com/belomaxorka))
## [v2.3.1](https://github.com/torrentpier/torrentpier/tree/v2.3.1) (2023-03-18)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.3.1-rc1...v2.3.1)
**Merged pull requests:**
- Make activate key length configurable [\#590](https://github.com/torrentpier/torrentpier/pull/590) ([belomaxorka](https://github.com/belomaxorka))
- Minor adjustments [\#593](https://github.com/torrentpier/torrentpier/pull/593), [\#607](https://github.com/torrentpier/torrentpier/pull/607), [\#610](https://github.com/torrentpier/torrentpier/pull/610) ([belomaxorka](https://github.com/belomaxorka))
- Fixed typo in src/Cache/File.php [\#596](https://github.com/torrentpier/torrentpier/pull/596) ([belomaxorka](https://github.com/belomaxorka))
- Use APP_NAME instead lang variables [\#604](https://github.com/torrentpier/torrentpier/pull/604) ([belomaxorka](https://github.com/belomaxorka))
- New Crowdin updates [\#577](https://github.com/torrentpier/torrentpier/pull/577), [\#605](https://github.com/torrentpier/torrentpier/pull/605), [\#616](https://github.com/torrentpier/torrentpier/pull/616) ([Exileum](https://github.com/Exileum))
- Use translations instead of untranslatable strings [\#606](https://github.com/torrentpier/torrentpier/pull/606) ([belomaxorka](https://github.com/belomaxorka))
- Fixed undefined $subject in register.php [\#608](https://github.com/torrentpier/torrentpier/pull/608) ([belomaxorka](https://github.com/belomaxorka))
- Removed length limits for search_id & autologin_id [\#609](https://github.com/torrentpier/torrentpier/pull/609) ([belomaxorka](https://github.com/belomaxorka))
- Small refactoring for avatar.php [AJAX] [\#611](https://github.com/torrentpier/torrentpier/pull/611), [\#612](https://github.com/torrentpier/torrentpier/pull/612) ([belomaxorka](https://github.com/belomaxorka))
- Added PM counter in title [\#613](https://github.com/torrentpier/torrentpier/pull/613) ([belomaxorka](https://github.com/belomaxorka))
- Redesigned AJAX system styles [\#614](https://github.com/torrentpier/torrentpier/pull/614) ([belomaxorka](https://github.com/belomaxorka), [Exileum](https://github.com/Exileum))
- Minor edits to the localization [\#615](https://github.com/torrentpier/torrentpier/pull/615) ([Exileum](https://github.com/Exileum))
- New cron initialization and minor edits [\#619](https://github.com/torrentpier/torrentpier/pull/619) ([Exileum](https://github.com/Exileum))
- Fixed broken avatar ajax action for users [\#618](https://github.com/torrentpier/torrentpier/pull/618) ([belomaxorka](https://github.com/belomaxorka))
- Added ability to hide ajax loading alert [\#617](https://github.com/torrentpier/torrentpier/pull/617) ([belomaxorka](https://github.com/belomaxorka))
- Added passkey check in get_bt_userdata [\#621](https://github.com/torrentpier/torrentpier/pull/621) ([belomaxorka](https://github.com/belomaxorka))
- Miscellaneous static analysis improvements for php 7.1 [\#620](https://github.com/torrentpier/torrentpier/pull/620) ([Exileum](https://github.com/Exileum))
- Fixed getting online info from cache [\#622](https://github.com/torrentpier/torrentpier/pull/622) ([belomaxorka](https://github.com/belomaxorka), [Exileum](https://github.com/Exileum))
- Globally improved log system [\#623](https://github.com/torrentpier/torrentpier/pull/623) ([belomaxorka](https://github.com/belomaxorka))
## [v2.3.1-rc1](https://github.com/torrentpier/torrentpier/tree/v2.3.1-rc1) (2023-03-10)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.3.0.4-beta2...v2.3.1-rc1)
**Merged pull requests:**
- Minor adjustments in sql dumps [\#560](https://github.com/torrentpier/torrentpier/pull/560), [\#561](https://github.com/torrentpier/torrentpier/pull/561) ([belomaxorka](https://github.com/belomaxorka))
- New BB_PATH implementation [\#562](https://github.com/torrentpier/torrentpier/pull/562) ([belomaxorka](https://github.com/belomaxorka))
- Use constants instead of string literals [\#563](https://github.com/torrentpier/torrentpier/pull/563), [\#573](https://github.com/torrentpier/torrentpier/pull/573) ([belomaxorka](https://github.com/belomaxorka))
- Hide feed button if feed file doesn't exist [\#564](https://github.com/torrentpier/torrentpier/pull/564) ([belomaxorka](https://github.com/belomaxorka))
- Added some new fonts in bbcode editor [\#565](https://github.com/torrentpier/torrentpier/pull/565) ([belomaxorka](https://github.com/belomaxorka))
- Added some new font sizes in bbcode editor [\#566](https://github.com/torrentpier/torrentpier/pull/566) ([belomaxorka](https://github.com/belomaxorka))
- Added optional parameter in $valid_actions [AJAX] [\#567](https://github.com/torrentpier/torrentpier/pull/567) ([belomaxorka](https://github.com/belomaxorka))
- Check if request is ajax [\#569](https://github.com/torrentpier/torrentpier/pull/569) ([belomaxorka](https://github.com/belomaxorka))
- Fixed code-style in some files [\#570](https://github.com/torrentpier/torrentpier/pull/570) ([belomaxorka](https://github.com/belomaxorka))
- Minor adjustments [\#571](https://github.com/torrentpier/torrentpier/pull/571), [\#584](https://github.com/torrentpier/torrentpier/pull/584) ([belomaxorka](https://github.com/belomaxorka))
- Added link to forum in admin_forumauth.tpl [\#574](https://github.com/torrentpier/torrentpier/pull/574) ([belomaxorka](https://github.com/belomaxorka))
- Simplified make_rand_str function [\#575](https://github.com/torrentpier/torrentpier/pull/575) ([belomaxorka](https://github.com/belomaxorka))
- Redesigned admin_ug_auth [\#576](https://github.com/torrentpier/torrentpier/pull/576) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken "user_viewonline" in admin panel [\#579](https://github.com/torrentpier/torrentpier/pull/579) ([belomaxorka](https://github.com/belomaxorka))
- Make sitemap sending configurable [\#585](https://github.com/torrentpier/torrentpier/pull/585) ([belomaxorka](https://github.com/belomaxorka))
- Fixed get_avatar method [\#586](https://github.com/torrentpier/torrentpier/pull/586) ([belomaxorka](https://github.com/belomaxorka))
- Added show avatar in memberlist [\#587](https://github.com/torrentpier/torrentpier/pull/587) ([belomaxorka](https://github.com/belomaxorka))
## [v2.3.0.4-beta2](https://github.com/torrentpier/torrentpier/tree/v2.3.0.4-beta2) (2023-03-04)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.3.0.4-beta...v2.3.0.4-beta2)
**Merged pull requests:**
- Updated treeview up to 1.4.2 [\#549](https://github.com/torrentpier/torrentpier/pull/549) ([belomaxorka](https://github.com/belomaxorka))
- Removed ugly copyright in indexer [\#546](https://github.com/torrentpier/torrentpier/pull/546) ([belomaxorka](https://github.com/belomaxorka))
- Added ability to print page [\#544](https://github.com/torrentpier/torrentpier/pull/544) ([belomaxorka](https://github.com/belomaxorka))
- Removed deprecated SQL_CACHE [\#554](https://github.com/torrentpier/torrentpier/pull/554) ([belomaxorka](https://github.com/belomaxorka))
- Added min required mysql / mariadb version [\#555](https://github.com/torrentpier/torrentpier/pull/555) ([belomaxorka](https://github.com/belomaxorka))
- Added needed "ORDER BY" in sql query [\#557](https://github.com/torrentpier/torrentpier/pull/557) ([belomaxorka](https://github.com/belomaxorka))
- Added missing sql query in changes.txt [\#558](https://github.com/torrentpier/torrentpier/pull/558) ([belomaxorka](https://github.com/belomaxorka))
## [v2.3.0.4-beta](https://github.com/torrentpier/torrentpier/tree/v2.3.0.4-beta) (2023-02-22)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.3.0.3...v2.3.0.4-beta)
**Merged pull requests:**
- docs: change official forum path [\#532](https://github.com/torrentpier/torrentpier/pull/532) ([Exileum](https://github.com/Exileum))
- Fixed broken sql log selecting in debug-panel [\#533](https://github.com/torrentpier/torrentpier/pull/533) ([belomaxorka](https://github.com/belomaxorka))
- New implementation of old browser detector [\#534](https://github.com/torrentpier/torrentpier/pull/534) ([belomaxorka](https://github.com/belomaxorka))
- Fixed SQLite caching issue [\#535](https://github.com/torrentpier/torrentpier/pull/535) ([belomaxorka](https://github.com/belomaxorka))
- Extended email validation [\#536](https://github.com/torrentpier/torrentpier/pull/536) ([belomaxorka](https://github.com/belomaxorka))
- Admin panel adjustments [\#538](https://github.com/torrentpier/torrentpier/pull/538) ([belomaxorka](https://github.com/belomaxorka))
- Added user birthday icon in profile [\#539](https://github.com/torrentpier/torrentpier/pull/539) ([belomaxorka](https://github.com/belomaxorka))
- Added forum description in viewforum page [\#540](https://github.com/torrentpier/torrentpier/pull/540) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken copy log from debug-panel [\#541](https://github.com/torrentpier/torrentpier/pull/541) ([belomaxorka](https://github.com/belomaxorka))
- Added copy button in viewforum page [\#542](https://github.com/torrentpier/torrentpier/pull/542) ([belomaxorka](https://github.com/belomaxorka))
- Added current topic url copy button in viewtopic [\#543](https://github.com/torrentpier/torrentpier/pull/543) ([belomaxorka](https://github.com/belomaxorka))
- Added ``$bb_cfg['emailer']['enabled']`` check in admin_mass_email.php [\#545](https://github.com/torrentpier/torrentpier/pull/545) ([belomaxorka](https://github.com/belomaxorka))
- Updated scrollTo up to 1.4.6 [\#547](https://github.com/torrentpier/torrentpier/pull/547) ([belomaxorka](https://github.com/belomaxorka))
- Updated quicksearch up to Feb 21, 2018 commit [\#548](https://github.com/torrentpier/torrentpier/pull/548) ([belomaxorka](https://github.com/belomaxorka))
## [v2.3.0.3](https://github.com/torrentpier/torrentpier/tree/v2.3.0.3) (2023-02-18)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.3.0.2...v2.3.0.3)
**Merged pull requests:**
- Updated copyright year [\#525](https://github.com/torrentpier/torrentpier/pull/525) ([belomaxorka](https://github.com/belomaxorka))
- Update README.md (Fixed incorrect logo path) [\#526](https://github.com/torrentpier/torrentpier/pull/526) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken getting avatars directory size [\#527](https://github.com/torrentpier/torrentpier/pull/527) ([belomaxorka](https://github.com/belomaxorka))
- Added declensions for count of downloads [\#528](https://github.com/torrentpier/torrentpier/pull/528) ([belomaxorka](https://github.com/belomaxorka))
- Use XS_TPL_PREFIX instead of 'tpl_' [\#529](https://github.com/torrentpier/torrentpier/pull/529) ([belomaxorka](https://github.com/belomaxorka))
- Removed useless .htaccess files [\#530](https://github.com/torrentpier/torrentpier/pull/530) ([belomaxorka](https://github.com/belomaxorka))
- Replaced "deny from all" with "Require all denied" [\#531](https://github.com/torrentpier/torrentpier/pull/531) ([belomaxorka](https://github.com/belomaxorka))
## [v2.3.0.2](https://github.com/torrentpier/torrentpier/tree/v2.3.0.2) (2023-01-23)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.3.0.1...v2.3.0.2)
**Merged pull requests:**
- Fixed PHP 7.3: Deprecate FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED flags used with FILTER_VALIDATE_URL [\#507](https://github.com/torrentpier/torrentpier/pull/507) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken user search in admin_groups [\#508](https://github.com/torrentpier/torrentpier/pull/508) ([belomaxorka](https://github.com/belomaxorka))
- Fix some bugs with MySQL strict mode [\#509](https://github.com/torrentpier/torrentpier/pull/509) ([belomaxorka](https://github.com/belomaxorka))
- Fixed and improvements for SQL [\#510](https://github.com/torrentpier/torrentpier/pull/510) ([belomaxorka](https://github.com/belomaxorka))
- Added showing post number in viewtopic [\#511](https://github.com/torrentpier/torrentpier/pull/511) ([belomaxorka](https://github.com/belomaxorka))
- Updated composer dependencies [\#512](https://github.com/torrentpier/torrentpier/pull/512) ([belomaxorka](https://github.com/belomaxorka))
- Added symfony/polyfill [\#513](https://github.com/torrentpier/torrentpier/pull/513) ([belomaxorka](https://github.com/belomaxorka))
- Updated jQuery up to 1.12.4 [\#514](https://github.com/torrentpier/torrentpier/pull/514) ([belomaxorka](https://github.com/belomaxorka))
- Updated normalize css up to 8.0.1 [\#515](https://github.com/torrentpier/torrentpier/pull/515) ([belomaxorka](https://github.com/belomaxorka))
- Misc code improvements [\#516](https://github.com/torrentpier/torrentpier/pull/516) ([belomaxorka](https://github.com/belomaxorka))
- Fixed broken file_write() function [\#517](https://github.com/torrentpier/torrentpier/pull/517) ([belomaxorka](https://github.com/belomaxorka))
- Fixed array multi sorting [\#518](https://github.com/torrentpier/torrentpier/pull/518) ([belomaxorka](https://github.com/belomaxorka))
## [v2.3.0.1](https://github.com/torrentpier/torrentpier/tree/v2.3.0.1) (2018-06-27)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.3.0...v2.3.0.1)
**Merged pull requests:**
- Fix cron jobs fail without global config variable [\#471](https://github.com/torrentpier/torrentpier/pull/471) ([Exileum](https://github.com/Exileum))
- Cleanup BBCode class [\#470](https://github.com/torrentpier/torrentpier/pull/470) ([Exileum](https://github.com/Exileum))
## [v2.3.0](https://github.com/torrentpier/torrentpier/tree/v2.3.0) (2018-06-26)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.2.3...v2.3.0)
**Merged pull requests:**
- Release preparation. Crowdin language pack update [\#468](https://github.com/torrentpier/torrentpier/pull/468) ([Exileum](https://github.com/Exileum))
- PHP 7+ deprecations of old cache systems [\#467](https://github.com/torrentpier/torrentpier/pull/467) ([Exileum](https://github.com/Exileum))
- Fix global atom feed name [\#466](https://github.com/torrentpier/torrentpier/pull/466) ([Exileum](https://github.com/Exileum))
- Configurable download torrent url [\#465](https://github.com/torrentpier/torrentpier/pull/465) ([Exileum](https://github.com/Exileum))
- Fix some bugs with MySQL strict mode [\#464](https://github.com/torrentpier/torrentpier/pull/464) ([Exileum](https://github.com/Exileum))
- Fix release template editor [\#463](https://github.com/torrentpier/torrentpier/pull/463) ([Exileum](https://github.com/Exileum))
- Fix multiple variable cleanup in private messaging [\#462](https://github.com/torrentpier/torrentpier/pull/462) ([Exileum](https://github.com/Exileum))
- Fix magnet link passkey creation for new users [\#461](https://github.com/torrentpier/torrentpier/pull/461) ([Exileum](https://github.com/Exileum))
- Update required PHP version to 7.1.3 [\#460](https://github.com/torrentpier/torrentpier/pull/460) ([Exileum](https://github.com/Exileum))
- Split functions to the composer autoloading [\#459](https://github.com/torrentpier/torrentpier/pull/459) ([Exileum](https://github.com/Exileum))
- Update copyright to the short syntax [\#458](https://github.com/torrentpier/torrentpier/pull/458) ([Exileum](https://github.com/Exileum))
- Fix \#451. Undefined index: L\_CRON\_EDIT\_HEAD [\#457](https://github.com/torrentpier/torrentpier/pull/457) ([Exileum](https://github.com/Exileum))
- Merge head branches [\#456](https://github.com/torrentpier/torrentpier/pull/456) ([Exileum](https://github.com/Exileum))
- Default value for user\_birthday causes exception on user password change [\#449](https://github.com/torrentpier/torrentpier/pull/449) ([yukoff](https://github.com/yukoff))
- Add back roave/security-advisories [\#446](https://github.com/torrentpier/torrentpier/pull/446) ([yukoff](https://github.com/yukoff))
## [v2.2.3](https://github.com/torrentpier/torrentpier/tree/v2.2.3) (2017-08-07)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.2.2...v2.2.3)
**Merged pull requests:**
- Release 2.2.3 🔥 [\#443](https://github.com/torrentpier/torrentpier/pull/443) ([Exileum](https://github.com/Exileum))
- Release preparation. Crowdin language pack update [\#442](https://github.com/torrentpier/torrentpier/pull/442) ([Exileum](https://github.com/Exileum))
- Unique topic page title, undefined language variables fix [\#441](https://github.com/torrentpier/torrentpier/pull/441) ([Exileum](https://github.com/Exileum))
- Remove matching users with default IP from profile list [\#440](https://github.com/torrentpier/torrentpier/pull/440) ([Exileum](https://github.com/Exileum))
- Broken announcer fix, announcer debug removed [\#439](https://github.com/torrentpier/torrentpier/pull/439) ([Exileum](https://github.com/Exileum))
- Fix broken ajax [\#436](https://github.com/torrentpier/torrentpier/pull/436) ([Exileum](https://github.com/Exileum))
- Some deprecations, normalize.css, torrent file content sort fix [\#434](https://github.com/torrentpier/torrentpier/pull/434) ([Exileum](https://github.com/Exileum))
- Incorrect log file rotation regex [\#432](https://github.com/torrentpier/torrentpier/pull/432) ([Exileum](https://github.com/Exileum))
- Various bug fixes described on the forum [\#431](https://github.com/torrentpier/torrentpier/pull/431) ([Exileum](https://github.com/Exileum))
- Fixes \#412 - bug with dynamic language variables [\#430](https://github.com/torrentpier/torrentpier/pull/430) ([Exileum](https://github.com/Exileum))
- Update .htaccess for new Apache 2.4 syntax [\#429](https://github.com/torrentpier/torrentpier/pull/429) ([Exileum](https://github.com/Exileum))
- Crowdin language pack update for new project domain name [\#415](https://github.com/torrentpier/torrentpier/pull/415) ([Exileum](https://github.com/Exileum))
- Composer support section error [\#414](https://github.com/torrentpier/torrentpier/pull/414) ([Exileum](https://github.com/Exileum))
- New project domain name [\#413](https://github.com/torrentpier/torrentpier/pull/413) ([Exileum](https://github.com/Exileum))
## [v2.2.2](https://github.com/torrentpier/torrentpier/tree/v2.2.2) (2017-06-22)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.2.1...v2.2.2)
**Merged pull requests:**
- Release 2.2.2 🌞 [\#410](https://github.com/torrentpier/torrentpier/pull/410) ([Exileum](https://github.com/Exileum))
- Release preparation Crowdin language pack update [\#409](https://github.com/torrentpier/torrentpier/pull/409) ([Exileum](https://github.com/Exileum))
- Display source language if no user language variable [\#408](https://github.com/torrentpier/torrentpier/pull/408) ([Exileum](https://github.com/Exileum))
- Disable Bugsnag by default [\#407](https://github.com/torrentpier/torrentpier/pull/407) ([Exileum](https://github.com/Exileum))
- Fix empty birthday list [\#406](https://github.com/torrentpier/torrentpier/pull/406) ([Exileum](https://github.com/Exileum))
- Remove unused ranks functionality [\#405](https://github.com/torrentpier/torrentpier/pull/405) ([Exileum](https://github.com/Exileum))
- Complete renewal of the Ukrainian language from our toloka.to friends [\#404](https://github.com/torrentpier/torrentpier/pull/404) ([Exileum](https://github.com/Exileum))
- Some fixes, auto language removal \(so buggy\) and replenishable status [\#403](https://github.com/torrentpier/torrentpier/pull/403) ([Exileum](https://github.com/Exileum))
## [v2.2.1](https://github.com/torrentpier/torrentpier/tree/v2.2.1) (2017-06-16)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.2.0...v2.2.1)
**Merged pull requests:**
- Release 2.2.1 🐛 [\#392](https://github.com/torrentpier/torrentpier/pull/392) ([Exileum](https://github.com/Exileum))
- Partial renewal of the Ukrainian language from our toloka.to friends [\#391](https://github.com/torrentpier/torrentpier/pull/391) ([Exileum](https://github.com/Exileum))
- Create CODE\_OF\_CONDUCT.md [\#390](https://github.com/torrentpier/torrentpier/pull/390) ([Exileum](https://github.com/Exileum))
- Fix default users language in dump [\#389](https://github.com/torrentpier/torrentpier/pull/389) ([Exileum](https://github.com/Exileum))
- Tracker search forum list simplification [\#388](https://github.com/torrentpier/torrentpier/pull/388) ([Exileum](https://github.com/Exileum))
- Fix some notices in admin panel reported by BugSnag [\#387](https://github.com/torrentpier/torrentpier/pull/387) ([Exileum](https://github.com/Exileum))
- Fixed SQL. Remove limit from update [\#368](https://github.com/torrentpier/torrentpier/pull/368) ([VasyOk](https://github.com/VasyOk))
## [v2.2.0](https://github.com/torrentpier/torrentpier/tree/v2.2.0) (2017-06-12)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.1.5...v2.2.0)
**Merged pull requests:**
- Release 2.2.0 ☘️ [\#328](https://github.com/torrentpier/torrentpier/pull/328) ([Exileum](https://github.com/Exileum))
- Release preparation. Crowdin language pack update [\#322](https://github.com/torrentpier/torrentpier/pull/322) ([Exileum](https://github.com/Exileum))
- TorrentPier Aurochs release preparation [\#321](https://github.com/torrentpier/torrentpier/pull/321) ([Exileum](https://github.com/Exileum))
- Release preparation. Small bugfixes and readme translation [\#318](https://github.com/torrentpier/torrentpier/pull/318) ([Exileum](https://github.com/Exileum))
- Crowdin language pack update [\#314](https://github.com/torrentpier/torrentpier/pull/314) ([Exileum](https://github.com/Exileum))
- IP storage and attachment system bugfix. PHP 5.6+ [\#313](https://github.com/torrentpier/torrentpier/pull/313) ([Exileum](https://github.com/Exileum))
- Bootstrap update & beginning of the develop branch partial merge [\#303](https://github.com/torrentpier/torrentpier/pull/303) ([Exileum](https://github.com/Exileum))
- Fix avatars display bug [\#302](https://github.com/torrentpier/torrentpier/pull/302) ([Exileum](https://github.com/Exileum))
- Cron subsystem rework. Environments [\#301](https://github.com/torrentpier/torrentpier/pull/301) ([Exileum](https://github.com/Exileum))
- New logotype, favicon and css split & reformat [\#293](https://github.com/torrentpier/torrentpier/pull/293) ([Exileum](https://github.com/Exileum))
- Whoops error handler for debug users [\#291](https://github.com/torrentpier/torrentpier/pull/291) ([Exileum](https://github.com/Exileum))
- Replace sitemap to the new external component [\#252](https://github.com/torrentpier/torrentpier/pull/252) ([Exileum](https://github.com/Exileum))
- Crowdin language pack update. Removed some languages [\#250](https://github.com/torrentpier/torrentpier/pull/250) ([Exileum](https://github.com/Exileum))
- IP detect subsystem replace. Trash cleanup. Defines [\#249](https://github.com/torrentpier/torrentpier/pull/249) ([Exileum](https://github.com/Exileum))
- Old ads module removal [\#244](https://github.com/torrentpier/torrentpier/pull/244) ([Exileum](https://github.com/Exileum))
- External bencode library and some other changes [\#243](https://github.com/torrentpier/torrentpier/pull/243) ([Exileum](https://github.com/Exileum))
- Added new logo to readme [\#242](https://github.com/torrentpier/torrentpier/pull/242) ([VasyOk](https://github.com/VasyOk))
- Bugsnag integration and some bugfixes in for cycles [\#239](https://github.com/torrentpier/torrentpier/pull/239) ([Exileum](https://github.com/Exileum))
- Bug with variables replacement and Crowdin localization fix [\#238](https://github.com/torrentpier/torrentpier/pull/238) ([Exileum](https://github.com/Exileum))
- PSR-4 compatible legacy code autoloading [\#237](https://github.com/torrentpier/torrentpier/pull/237) ([Exileum](https://github.com/Exileum))
- UFT-8 autocorrection removal from standart package [\#236](https://github.com/torrentpier/torrentpier/pull/236) ([Exileum](https://github.com/Exileum))
- New localization strings and full Crowdin language pack update [\#235](https://github.com/torrentpier/torrentpier/pull/235) ([Exileum](https://github.com/Exileum))
- Replace own emailer to SwiftMailer [\#234](https://github.com/torrentpier/torrentpier/pull/234) ([Exileum](https://github.com/Exileum))
- Force email charset and Crowdin language pack update [\#232](https://github.com/torrentpier/torrentpier/pull/232) ([Exileum](https://github.com/Exileum))
- Crowdin language pack update [\#231](https://github.com/torrentpier/torrentpier/pull/231) ([Exileum](https://github.com/Exileum))
- Static code analyzer inspection, part 2 [\#230](https://github.com/torrentpier/torrentpier/pull/230) ([Exileum](https://github.com/Exileum))
- Static code analyzer cherry picked from \#228 [\#229](https://github.com/torrentpier/torrentpier/pull/229) ([VasyOk](https://github.com/VasyOk))
- Fix compare php version. [\#226](https://github.com/torrentpier/torrentpier/pull/226) ([VasyOk](https://github.com/VasyOk))
- Fixed compare version PHP [\#225](https://github.com/torrentpier/torrentpier/pull/225) ([VasyOk](https://github.com/VasyOk))
- Deprecated each\(\) function in php 7.2 [\#211](https://github.com/torrentpier/torrentpier/pull/211) ([Exileum](https://github.com/Exileum))
- Performance refactoring. Remove test code. Fix path in config [\#208](https://github.com/torrentpier/torrentpier/pull/208) ([VasyOk](https://github.com/VasyOk))
- Fix many notices in admin\_attach\_cp.php [\#183](https://github.com/torrentpier/torrentpier/pull/183) ([Exileum](https://github.com/Exileum))
- Add check lang [\#178](https://github.com/torrentpier/torrentpier/pull/178) ([VasyOk](https://github.com/VasyOk))
- Remove order from sql [\#177](https://github.com/torrentpier/torrentpier/pull/177) ([VasyOk](https://github.com/VasyOk))
- Fix path to viewtorrent.php [\#176](https://github.com/torrentpier/torrentpier/pull/176) ([VasyOk](https://github.com/VasyOk))
- New Crowdin translations [\#168](https://github.com/torrentpier/torrentpier/pull/168) ([Exileum](https://github.com/Exileum))
- Localization trash cleanup [\#167](https://github.com/torrentpier/torrentpier/pull/167) ([Exileum](https://github.com/Exileum))
- New Crowdin translations \(develop\) [\#165](https://github.com/torrentpier/torrentpier/pull/165) ([Exileum](https://github.com/Exileum))
- New Crowdin translations \(master\) [\#164](https://github.com/torrentpier/torrentpier/pull/164) ([Exileum](https://github.com/Exileum))
- Crowdin localization integration prepare and stopwords removal [\#163](https://github.com/torrentpier/torrentpier/pull/163) ([Exileum](https://github.com/Exileum))
- Crowdin localization integration [\#162](https://github.com/torrentpier/torrentpier/pull/162) ([Exileum](https://github.com/Exileum))
- New Crowdin translations \(develop\) [\#161](https://github.com/torrentpier/torrentpier/pull/161) ([Exileum](https://github.com/Exileum))
- \#157. Fix Error in GET /bt/announce.php [\#159](https://github.com/torrentpier/torrentpier/pull/159) ([VasyOk](https://github.com/VasyOk))
- Added check composer install [\#148](https://github.com/torrentpier/torrentpier/pull/148) ([VasyOk](https://github.com/VasyOk))
- Fix operators [\#147](https://github.com/torrentpier/torrentpier/pull/147) ([VasyOk](https://github.com/VasyOk))
- \#144 Files should not be executable [\#145](https://github.com/torrentpier/torrentpier/pull/145) ([VasyOk](https://github.com/VasyOk))
- Change paths to absolute pathname [\#143](https://github.com/torrentpier/torrentpier/pull/143) ([VasyOk](https://github.com/VasyOk))
- Redundant pagination, mysql 5.7+ issue, release template option [\#141](https://github.com/torrentpier/torrentpier/pull/141) ([Exileum](https://github.com/Exileum))
- Transfer announce to the php7-optimized database layer [\#140](https://github.com/torrentpier/torrentpier/pull/140) ([Exileum](https://github.com/Exileum))
- Cleanup repository from old deprecated scripts and server configs [\#139](https://github.com/torrentpier/torrentpier/pull/139) ([Exileum](https://github.com/Exileum))
- Torrent ajax file list fixes and small reformat [\#138](https://github.com/torrentpier/torrentpier/pull/138) ([Exileum](https://github.com/Exileum))
- Codacy / Scrutinizer / Code Climate / Coveralls integration, Slack hook to Travis CI [\#137](https://github.com/torrentpier/torrentpier/pull/137) ([Exileum](https://github.com/Exileum))
- Add a Codacy badge to README.md [\#136](https://github.com/torrentpier/torrentpier/pull/136) ([codacy-badger](https://github.com/codacy-badger))
- Replace Sphinx API to the composer version [\#135](https://github.com/torrentpier/torrentpier/pull/135) ([Exileum](https://github.com/Exileum))
- Incorrect case close operators \(develop\) [\#134](https://github.com/torrentpier/torrentpier/pull/134) ([Exileum](https://github.com/Exileum))
- Incorrect case close operators \(master\) [\#133](https://github.com/torrentpier/torrentpier/pull/133) ([Exileum](https://github.com/Exileum))
- Composer init, editor config, some cleanup and much more [\#132](https://github.com/torrentpier/torrentpier/pull/132) ([Exileum](https://github.com/Exileum))
- Remove eval from admin\_attachments and emailer [\#129](https://github.com/torrentpier/torrentpier/pull/129) ([VasyOk](https://github.com/VasyOk))
- Fix sql group [\#128](https://github.com/torrentpier/torrentpier/pull/128) ([VasyOk](https://github.com/VasyOk))
- Remove Zend [\#127](https://github.com/torrentpier/torrentpier/pull/127) ([VasyOk](https://github.com/VasyOk))
- Small fix to the upgrade schema [\#126](https://github.com/torrentpier/torrentpier/pull/126) ([Exileum](https://github.com/Exileum))
- Fixed id sqllog table and name select db [\#125](https://github.com/torrentpier/torrentpier/pull/125) ([VasyOk](https://github.com/VasyOk))
- New external service for look up IP address [\#122](https://github.com/torrentpier/torrentpier/pull/122) ([Exileum](https://github.com/Exileum))
- New branding and copyright [\#121](https://github.com/torrentpier/torrentpier/pull/121) ([Exileum](https://github.com/Exileum))
- Poster birthday with no birthday date fix [\#120](https://github.com/torrentpier/torrentpier/pull/120) ([Exileum](https://github.com/Exileum))
- Tidy deprecated option merge-spans remove [\#119](https://github.com/torrentpier/torrentpier/pull/119) ([Exileum](https://github.com/Exileum))
- Db logging [\#118](https://github.com/torrentpier/torrentpier/pull/118) ([leroy0](https://github.com/leroy0))
- CircleCi, CodeCoverage and composer dependencies [\#117](https://github.com/torrentpier/torrentpier/pull/117) ([Exileum](https://github.com/Exileum))
- Db exceptions, query with binding [\#116](https://github.com/torrentpier/torrentpier/pull/116) ([leroy0](https://github.com/leroy0))
- PHP 7+ requirements, Travis and other small fixes [\#115](https://github.com/torrentpier/torrentpier/pull/115) ([Exileum](https://github.com/Exileum))
- New compatible with php7 classes: Db, Config [\#114](https://github.com/torrentpier/torrentpier/pull/114) ([Exileum](https://github.com/Exileum))
- Refactoring posting\_attachments [\#112](https://github.com/torrentpier/torrentpier/pull/112) ([VasyOk](https://github.com/VasyOk))
- Update the current year in the license text [\#110](https://github.com/torrentpier/torrentpier/pull/110) ([Exileum](https://github.com/Exileum))
- Reformat master branch to PSR-2 and MIT license [\#109](https://github.com/torrentpier/torrentpier/pull/109) ([Exileum](https://github.com/Exileum))
- Master branch up to php 7 compatibility [\#107](https://github.com/torrentpier/torrentpier/pull/107) ([VasyOk](https://github.com/VasyOk))
- Removal of unused scripts and server configs [\#105](https://github.com/torrentpier/torrentpier/pull/105) ([Exileum](https://github.com/Exileum))
- New license - MIT [\#104](https://github.com/torrentpier/torrentpier/pull/104) ([Exileum](https://github.com/Exileum))
- New coding standart: PSR-2 [\#103](https://github.com/torrentpier/torrentpier/pull/103) ([Exileum](https://github.com/Exileum))
- Improvements in code and work cache [\#101](https://github.com/torrentpier/torrentpier/pull/101) ([VasyOk](https://github.com/VasyOk))
- Migration to the new config subsystem [\#100](https://github.com/torrentpier/torrentpier/pull/100) ([Exileum](https://github.com/Exileum))
- php-lang-correct removed [\#99](https://github.com/torrentpier/torrentpier/pull/99) ([Exileum](https://github.com/Exileum))
- Logical operators should be avoided [\#98](https://github.com/torrentpier/torrentpier/pull/98) ([Exileum](https://github.com/Exileum))
- Migration to the new cache subsystem [\#97](https://github.com/torrentpier/torrentpier/pull/97) ([Exileum](https://github.com/Exileum))
- Rework of feed.php and some other files [\#94](https://github.com/torrentpier/torrentpier/pull/94) ([Exileum](https://github.com/Exileum))
- Refactoring Cache [\#92](https://github.com/torrentpier/torrentpier/pull/92) ([VasyOk](https://github.com/VasyOk))
- Add new tests and refactoring [\#89](https://github.com/torrentpier/torrentpier/pull/89) ([VasyOk](https://github.com/VasyOk))
- Add tests [\#88](https://github.com/torrentpier/torrentpier/pull/88) ([VasyOk](https://github.com/VasyOk))
- Some fix after removed @ [\#87](https://github.com/torrentpier/torrentpier/pull/87) ([VasyOk](https://github.com/VasyOk))
- \#77 Add monolog [\#86](https://github.com/torrentpier/torrentpier/pull/86) ([VasyOk](https://github.com/VasyOk))
- Remove at [\#85](https://github.com/torrentpier/torrentpier/pull/85) ([VasyOk](https://github.com/VasyOk))
- Переделка файла dl.php на работу с новой базой [\#83](https://github.com/torrentpier/torrentpier/pull/83) ([Exileum](https://github.com/Exileum))
- Added use profiler and in\(de\)crement methods. [\#82](https://github.com/torrentpier/torrentpier/pull/82) ([VasyOk](https://github.com/VasyOk))
- Remove response service provider [\#80](https://github.com/torrentpier/torrentpier/pull/80) ([VasyOk](https://github.com/VasyOk))
- DI usage example [\#79](https://github.com/torrentpier/torrentpier/pull/79) ([Exileum](https://github.com/Exileum))
- Added methods to simplify the work with the database [\#75](https://github.com/torrentpier/torrentpier/pull/75) ([VasyOk](https://github.com/VasyOk))
- Captcha service provider [\#72](https://github.com/torrentpier/torrentpier/pull/72) ([Exileum](https://github.com/Exileum))
- Fixed a getting value from config through method toArray [\#71](https://github.com/torrentpier/torrentpier/pull/71) ([VasyOk](https://github.com/VasyOk))
- \#69 Fixed crypt notice [\#70](https://github.com/torrentpier/torrentpier/pull/70) ([VasyOk](https://github.com/VasyOk))
- \#58 Expansion Zend Config [\#68](https://github.com/torrentpier/torrentpier/pull/68) ([VasyOk](https://github.com/VasyOk))
- change preset to prs2 [\#61](https://github.com/torrentpier/torrentpier/pull/61) ([VasyOk](https://github.com/VasyOk))
- Applied fixes from StyleCI [\#60](https://github.com/torrentpier/torrentpier/pull/60) ([Exileum](https://github.com/Exileum))
## [v2.1.5](https://github.com/torrentpier/torrentpier/tree/v2.1.5) (2015-05-23)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.1.4...v2.1.5)
**Merged pull requests:**
- Add a Gitter chat badge to README.md [\#47](https://github.com/torrentpier/torrentpier/pull/47) ([gitter-badger](https://github.com/gitter-badger))
- Фикс подтверждения пароля [\#43](https://github.com/torrentpier/torrentpier/pull/43) ([dreddred](https://github.com/dreddred))
- Fix port Ocelot [\#42](https://github.com/torrentpier/torrentpier/pull/42) ([Altairko](https://github.com/Altairko))
- Develop [\#40](https://github.com/torrentpier/torrentpier/pull/40) ([Exileum](https://github.com/Exileum))
## [v2.1.4](https://github.com/torrentpier/torrentpier/tree/v2.1.4) (2014-11-26)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.1.3...v2.1.4)
**Merged pull requests:**
- Develop [\#39](https://github.com/torrentpier/torrentpier/pull/39) ([Exileum](https://github.com/Exileum))
## [v2.1.3](https://github.com/torrentpier/torrentpier/tree/v2.1.3) (2014-10-24)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.1.2...v2.1.3)
**Merged pull requests:**
## [v2.8.3](https://github.com/torrentpier/torrentpier/compare/v2.8.2..v2.8.3) (2025-07-03)
- Версия 2.1.3 ALPHA-3 [\#38](https://github.com/torrentpier/torrentpier/pull/38) ([Exileum](https://github.com/Exileum))
### 🚀 Features
## [v2.1.2](https://github.com/torrentpier/torrentpier/tree/v2.1.2) (2014-10-20)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.1.1...v2.1.2)
- *(lang)* Added `RTL` languages support ([#2031](https://github.com/torrentpier/torrentpier/pull/2031)) - ([fd46d3d](https://github.com/torrentpier/torrentpier/commit/fd46d3d04ad3ab1453256b2ab620508e2ba33586))
- *(updater)* Added exceptions logging ([#2026](https://github.com/torrentpier/torrentpier/pull/2026)) - ([51f2c70](https://github.com/torrentpier/torrentpier/commit/51f2c70d81b910012cdecd111b5b92c1dfd0d6f6))
**Merged pull requests:**
### 🚜 Refactor
- Версия 2.1.2 ALPHA-2 [\#37](https://github.com/torrentpier/torrentpier/pull/37) ([Exileum](https://github.com/Exileum))
- *(TorrentFileList)* Reduce duplication in root directory unset logic ([#2027](https://github.com/torrentpier/torrentpier/pull/2027)) - ([d4d8210](https://github.com/torrentpier/torrentpier/commit/d4d82101dd67c9f4cd86e0f6f909495696974354))
## [v2.1.1](https://github.com/torrentpier/torrentpier/tree/v2.1.1) (2014-09-11)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.1.0...v2.1.1)
**Merged pull requests:**
## [v2.8.2](https://github.com/torrentpier/torrentpier/compare/v2.8.1..v2.8.2) (2025-06-30)
- Версия 2.1.1 ALPHA-1 [\#34](https://github.com/torrentpier/torrentpier/pull/34) ([Exileum](https://github.com/Exileum))
### 🐛 Bug Fixes
## [v2.1.0](https://github.com/torrentpier/torrentpier/tree/v2.1.0) (2014-09-07)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.599b...v2.1.0)
- *(TorrentFileList)* Avoid `array_merge` reindexing for numeric folder names ([#2014](https://github.com/torrentpier/torrentpier/pull/2014)) - ([915e1d8](https://github.com/torrentpier/torrentpier/commit/915e1d817c61d2a4f0691b24ec1bc6577a9cd44b))
**Merged pull requests:**
### 🚜 Refactor
- Версия 2.1 \(R600\) [\#32](https://github.com/torrentpier/torrentpier/pull/32) ([Exileum](https://github.com/Exileum))
- Use `DEFAULT_CHARSET` constant instead of hardcoded string ([#2011](https://github.com/torrentpier/torrentpier/pull/2011)) - ([7ac3359](https://github.com/torrentpier/torrentpier/commit/7ac335974baa44a8575bebb71ae2fbc0902d10e7))
## [v2.0.599b](https://github.com/torrentpier/torrentpier/tree/v2.0.599b) (2014-08-30)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.599...v2.0.599b)
**Merged pull requests:**
## [v2.8.1](https://github.com/torrentpier/torrentpier/compare/v2.8.0..v2.8.1) (2025-06-24)
- Develop [\#31](https://github.com/torrentpier/torrentpier/pull/31) ([Exileum](https://github.com/Exileum))
- Feature/terms [\#30](https://github.com/torrentpier/torrentpier/pull/30) ([Exileum](https://github.com/Exileum))
### 🐛 Bug Fixes
## [v2.0.599](https://github.com/torrentpier/torrentpier/tree/v2.0.599) (2014-08-29)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.598...v2.0.599)
- *(filelist)* `Undefined property: FileTree::$length` when v2 torrent only ([#2004](https://github.com/torrentpier/torrentpier/pull/2004)) - ([7f4cc9d](https://github.com/torrentpier/torrentpier/commit/7f4cc9d3b9a5b87100f710cc60f636d6e7d5a34e))
- *(ip-api)* Add error handling and logging for freeipapi.com requests ([#2006](https://github.com/torrentpier/torrentpier/pull/2006)) - ([f1d6e74](https://github.com/torrentpier/torrentpier/commit/f1d6e74e5d4c74b6e12e9e742f60f62e71783d11))
**Merged pull requests:**
- R599 [\#29](https://github.com/torrentpier/torrentpier/pull/29) ([Exileum](https://github.com/Exileum))
## [v2.8.0](https://github.com/torrentpier/torrentpier/compare/v2.7.0..v2.8.0) (2025-06-21)
## [v2.0.598](https://github.com/torrentpier/torrentpier/tree/v2.0.598) (2014-08-27)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.597...v2.0.598)
### 🐛 Bug Fixes
**Merged pull requests:**
- *(template)* Handle L_ variables in template vars when not found in lang vars ([#1998](https://github.com/torrentpier/torrentpier/pull/1998)) - ([c6076c2](https://github.com/torrentpier/torrentpier/commit/c6076c2c278e9a423f3862670236b75bddeadd87))
- R598 [\#28](https://github.com/torrentpier/torrentpier/pull/28) ([Exileum](https://github.com/Exileum))
## [v2.0.597](https://github.com/torrentpier/torrentpier/tree/v2.0.597) (2014-08-24)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.596...v2.0.597)
## [v2.7.0](https://github.com/torrentpier/torrentpier/compare/v2.6.0..v2.7.0) (2025-06-21)
**Merged pull requests:**
### 🚀 Features
- R597 [\#27](https://github.com/torrentpier/torrentpier/pull/27) ([Exileum](https://github.com/Exileum))
- *(database)* Add visual markers for Nette Explorer queries in debug panel ([#1965](https://github.com/torrentpier/torrentpier/pull/1965)) - ([2fd3067](https://github.com/torrentpier/torrentpier/commit/2fd306704f21febee7d53f4b4531601ce0cb81ce))
- *(language)* Add new language variable for migration file and enhance template fallback logic ([#1984](https://github.com/torrentpier/torrentpier/pull/1984)) - ([a33574c](https://github.com/torrentpier/torrentpier/commit/a33574c28f2eb6267a74fa6c9d97fea86527157a))
- *(migrations)* Implement Phinx database migration system ([#1976](https://github.com/torrentpier/torrentpier/pull/1976)) - ([fbde8cd](https://github.com/torrentpier/torrentpier/commit/fbde8cd421c9048afe70ddb41d0a9ed26d3fbef5))
- *(test)* [**breaking**] Add comprehensive testing infrastructure with Pest PHP ([#1979](https://github.com/torrentpier/torrentpier/pull/1979)) - ([cc9d412](https://github.com/torrentpier/torrentpier/commit/cc9d412522938a023bd2b8eb880c4d2dd307c82a))
- [**breaking**] Implement Language singleton with shorthand functions ([#1966](https://github.com/torrentpier/torrentpier/pull/1966)) - ([49717d3](https://github.com/torrentpier/torrentpier/commit/49717d3a687b95885fe9773f2597354aed4b2b60))
## [v2.0.596](https://github.com/torrentpier/torrentpier/tree/v2.0.596) (2014-08-20)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.595...v2.0.596)
### 🐛 Bug Fixes
**Merged pull requests:**
- *(database)* Update affected rows tracking in Database class ([#1980](https://github.com/torrentpier/torrentpier/pull/1980)) - ([4f9cc9f](https://github.com/torrentpier/torrentpier/commit/4f9cc9fe0f7f4a85c90001a3f5514efdf04836da))
- Develop [\#26](https://github.com/torrentpier/torrentpier/pull/26) ([Exileum](https://github.com/Exileum))
### 🚜 Refactor
## [v2.0.595](https://github.com/torrentpier/torrentpier/tree/v2.0.595) (2014-08-14)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.594b...v2.0.595)
- *(database)* Enhance error logging and various fixes ([#1978](https://github.com/torrentpier/torrentpier/pull/1978)) - ([7aed6bc](https://github.com/torrentpier/torrentpier/commit/7aed6bc7d89f4ed31e7ed6c6eeecc6e08d348c24))
- *(database)* Rename DB to Database and extract debug functionality ([#1964](https://github.com/torrentpier/torrentpier/pull/1964)) - ([6c0219d](https://github.com/torrentpier/torrentpier/commit/6c0219d53c7544b7d8a6374c0d0848945d32ae17))
- *(stats)* Improve database row fetching in tr_stats.php ([#1985](https://github.com/torrentpier/torrentpier/pull/1985)) - ([728116d](https://github.com/torrentpier/torrentpier/commit/728116d6dc9cf4476cce572ced5e8a7ef529ead8))
**Merged pull requests:**
### ⚙️ Miscellaneous
- Develop [\#22](https://github.com/torrentpier/torrentpier/pull/22) ([Exileum](https://github.com/Exileum))
- Update minimum `PHP` requirement to `8.2` ([#1987](https://github.com/torrentpier/torrentpier/pull/1987)) - ([9b322c7](https://github.com/torrentpier/torrentpier/commit/9b322c7093a634669e9f17a32ac42500f44f2496))
- Removed useless `composer update` from workflows & installer ([#1986](https://github.com/torrentpier/torrentpier/pull/1986)) - ([423424e](https://github.com/torrentpier/torrentpier/commit/423424e9478e0772957014fb30f5e84158067af7))
- Added --no-dev composer flag for some workflows ([#1982](https://github.com/torrentpier/torrentpier/pull/1982)) - ([e9a9e09](https://github.com/torrentpier/torrentpier/commit/e9a9e095768ba68aa5d5058a3e152ffaec916117))
- Added `--no-dev` composer flag for some workflows ([#1981](https://github.com/torrentpier/torrentpier/pull/1981)) - ([e8cba5d](https://github.com/torrentpier/torrentpier/commit/e8cba5dd3fc83b616f83c24991f79dc7258c5df3))
## [v2.0.594b](https://github.com/torrentpier/torrentpier/tree/v2.0.594b) (2014-08-07)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.594...v2.0.594b)
**Merged pull requests:**
## [v2.6.0](https://github.com/torrentpier/torrentpier/compare/v2.5.0..v2.6.0) (2025-06-18)
- Develop [\#17](https://github.com/torrentpier/torrentpier/pull/17) ([Exileum](https://github.com/Exileum))
- Hotfix/bbcode [\#16](https://github.com/torrentpier/torrentpier/pull/16) ([Exileum](https://github.com/Exileum))
### 🚀 Features
## [v2.0.594](https://github.com/torrentpier/torrentpier/tree/v2.0.594) (2014-08-07)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.593b...v2.0.594)
- [**breaking**] Implement unified cache system with Nette Caching ([#1963](https://github.com/torrentpier/torrentpier/pull/1963)) - ([07a06a3](https://github.com/torrentpier/torrentpier/commit/07a06a33cd97b37f68b533a87cdb5f7578f2c86f))
- Replace legacy database layer with Nette Database implementation ([#1961](https://github.com/torrentpier/torrentpier/pull/1961)) - ([f50b914](https://github.com/torrentpier/torrentpier/commit/f50b914cc18f777d92002baf2c812a635d5eed4b))
**Merged pull requests:**
### 🐛 Bug Fixes
- Develop [\#15](https://github.com/torrentpier/torrentpier/pull/15) ([Exileum](https://github.com/Exileum))
- *(User)* Add null and array checks before session data operations ([#1962](https://github.com/torrentpier/torrentpier/pull/1962)) - ([e458109](https://github.com/torrentpier/torrentpier/commit/e458109eefc54d86a78a1ddb3954581524852516))
## [v2.0.593b](https://github.com/torrentpier/torrentpier/tree/v2.0.593b) (2014-08-05)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.593...v2.0.593b)
## [v2.0.593](https://github.com/torrentpier/torrentpier/tree/v2.0.593) (2014-08-05)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.592...v2.0.593)
## [v2.5.0](https://github.com/torrentpier/torrentpier/compare/v2.4.6-alpha.4..v2.5.0) (2025-06-18)
**Merged pull requests:**
### 🚀 Features
- Develop [\#13](https://github.com/torrentpier/torrentpier/pull/13) ([Exileum](https://github.com/Exileum))
- [**breaking**] Implement centralized Config class to replace global $bb_cfg array ([#1953](https://github.com/torrentpier/torrentpier/pull/1953)) - ([bf9100f](https://github.com/torrentpier/torrentpier/commit/bf9100fbfa74768edb01c62636198a44739d9923))
## [v2.0.592](https://github.com/torrentpier/torrentpier/tree/v2.0.592) (2014-08-01)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.591...v2.0.592)
### 🐛 Bug Fixes
## [v2.0.591](https://github.com/torrentpier/torrentpier/tree/v2.0.591) (2014-07-13)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.590...v2.0.591)
- *(installer)* Strip protocol from TP_HOST to keep only hostname ([#1952](https://github.com/torrentpier/torrentpier/pull/1952)) - ([81bf67c](https://github.com/torrentpier/torrentpier/commit/81bf67c2be85d49e988b7802ca7e9738ff580031))
- *(sql)* Resolve only_full_group_by compatibility issues in tracker cleanup ([#1951](https://github.com/torrentpier/torrentpier/pull/1951)) - ([37a0675](https://github.com/torrentpier/torrentpier/commit/37a0675adfb02014e7068f4aa82301e29f39eab6))
## [v2.0.590](https://github.com/torrentpier/torrentpier/tree/v2.0.590) (2014-06-21)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.589...v2.0.590)
### 📦 Dependencies
## [v2.0.589](https://github.com/torrentpier/torrentpier/tree/v2.0.589) (2014-06-19)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.588...v2.0.589)
- *(deps)* Bump filp/whoops from 2.18.2 to 2.18.3 ([#1948](https://github.com/torrentpier/torrentpier/pull/1948)) - ([b477680](https://github.com/torrentpier/torrentpier/commit/b4776804a408217229caa327c79849cf13ce2aa5))
## [v2.0.588](https://github.com/torrentpier/torrentpier/tree/v2.0.588) (2014-06-17)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.587...v2.0.588)
### 🚜 Refactor
## [v2.0.587](https://github.com/torrentpier/torrentpier/tree/v2.0.587) (2014-06-15)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.586...v2.0.587)
- *(censor)* [**breaking**] Migrate Censor class to singleton pattern ([#1954](https://github.com/torrentpier/torrentpier/pull/1954)) - ([74a564d](https://github.com/torrentpier/torrentpier/commit/74a564d7954c6f8745ebcffdcd9c8997e371d47a))
- *(config)* [**breaking**] Encapsulate global $bb_cfg array in Config class ([#1950](https://github.com/torrentpier/torrentpier/pull/1950)) - ([5842994](https://github.com/torrentpier/torrentpier/commit/5842994782dfa62788f8427c55045abdbfb5b8e9))
## [v2.0.586](https://github.com/torrentpier/torrentpier/tree/v2.0.586) (2014-06-13)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.585...v2.0.586)
### 📚 Documentation
## [v2.0.585](https://github.com/torrentpier/torrentpier/tree/v2.0.585) (2014-05-14)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.584...v2.0.585)
- Add Select class migration guide ([#1960](https://github.com/torrentpier/torrentpier/pull/1960)) - ([86abafb](https://github.com/torrentpier/torrentpier/commit/86abafb11469d14a746d12725b15cf6b7015ec44))
## [v2.0.584](https://github.com/torrentpier/torrentpier/tree/v2.0.584) (2014-03-07)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.583...v2.0.584)
### ⚙️ Miscellaneous
## [v2.0.583](https://github.com/torrentpier/torrentpier/tree/v2.0.583) (2014-02-10)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.581...v2.0.583)
- *(_release.php)* Finally! Removed some useless params ([#1947](https://github.com/torrentpier/torrentpier/pull/1947)) - ([9c7d270](https://github.com/torrentpier/torrentpier/commit/9c7d270598c0153fb82f4b7ad96f5b59399b2159))
- *(cliff)* Add conventional commit prefix to changelog message ([#1957](https://github.com/torrentpier/torrentpier/pull/1957)) - ([b1b2618](https://github.com/torrentpier/torrentpier/commit/b1b26187579f6981165d85c316a3c5b7199ce2ee))
## [v2.0.581](https://github.com/torrentpier/torrentpier/tree/v2.0.581) (2014-02-03)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.572...v2.0.581)
## [v2.0.572](https://github.com/torrentpier/torrentpier/tree/v2.0.572) (2014-01-28)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.564...v2.0.572)
## [v2.0.564](https://github.com/torrentpier/torrentpier/tree/v2.0.564) (2014-01-20)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.560...v2.0.564)
## [v2.0.560](https://github.com/torrentpier/torrentpier/tree/v2.0.560) (2014-01-17)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.556...v2.0.560)
## [v2.0.556](https://github.com/torrentpier/torrentpier/tree/v2.0.556) (2014-01-12)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.552...v2.0.556)
## [v2.0.552](https://github.com/torrentpier/torrentpier/tree/v2.0.552) (2013-09-05)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.506...v2.0.552)
## [v2.0.506](https://github.com/torrentpier/torrentpier/tree/v2.0.506) (2013-06-23)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.500...v2.0.506)
## [v2.0.500](https://github.com/torrentpier/torrentpier/tree/v2.0.500) (2013-05-14)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.491...v2.0.500)
## [v2.0.491](https://github.com/torrentpier/torrentpier/tree/v2.0.491) (2013-01-12)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.477...v2.0.491)
## [v2.0.477](https://github.com/torrentpier/torrentpier/tree/v2.0.477) (2012-11-14)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.463...v2.0.477)
## [v2.0.463](https://github.com/torrentpier/torrentpier/tree/v2.0.463) (2012-10-16)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.456...v2.0.463)
## [v2.0.456](https://github.com/torrentpier/torrentpier/tree/v2.0.456) (2012-09-07)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.400...v2.0.456)
## [v2.0.400](https://github.com/torrentpier/torrentpier/tree/v2.0.400) (2012-04-13)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.300...v2.0.400)
## [v2.0.300](https://github.com/torrentpier/torrentpier/tree/v2.0.300) (2011-10-14)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.261...v2.0.300)
## [v2.0.261](https://github.com/torrentpier/torrentpier/tree/v2.0.261) (2011-08-28)
[Full Changelog](https://github.com/torrentpier/torrentpier/compare/v2.0.0...v2.0.261)
## [v2.0.0](https://github.com/torrentpier/torrentpier/tree/v2.0.0) (2011-08-08)
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*

144
CLAUDE.md Normal file
View file

@ -0,0 +1,144 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
TorrentPier is a BitTorrent tracker engine written in PHP, designed for hosting BitTorrent communities with forum functionality. The project is in active modernization, transitioning from legacy code to modern PHP practices while maintaining backward compatibility.
## Technology Stack & Architecture
- **PHP 8.2+** with modern features
- **MySQL/MariaDB/Percona** database
- **Nette Database** with backward-compatible wrapper
- **Composer** for dependency management
- **Custom BitTorrent tracker** implementation
## Key Directory Structure
- `/src/` - Modern PHP classes (PSR-4 autoloaded as `TorrentPier\`)
- `/library/` - Core application logic and legacy code
- `/admin/` - Administrative interface
- `/bt/` - BitTorrent tracker functionality (announce.php, scrape.php)
- `/styles/` - Templates, CSS, JS, images
- `/internal_data/` - Cache, logs, compiled templates
- `/install/` - Installation scripts and configuration examples
- `/migrations/` - Database migration files (Phinx)
## Entry Points & Key Files
- `index.php` - Main forum homepage
- `tracker.php` - Torrent search/browse interface
- `bt/announce.php` - BitTorrent announce endpoint
- `bt/scrape.php` - BitTorrent scrape endpoint
- `admin/index.php` - Administrative panel
- `cron.php` - Background task runner (CLI only)
- `install.php` - Installation script (CLI only)
## Development Commands
### Installation & Setup
```bash
# Automated installation (CLI)
php install.php
# Install dependencies
composer install
# Update dependencies
composer update
```
### Maintenance & Operations
```bash
# Run background maintenance tasks
php cron.php
```
### Code Quality
The project uses **StyleCI** with PSR-2 preset for code style enforcement. StyleCI configuration is in `.styleci.yml` targeting `src/` directory.
## Modern Architecture Components
### Database Layer (`/src/Database/`)
- **Nette Database** with full old SqlDb backward compatibility
- Singleton pattern accessible via `DB()` function
- Support for multiple database connections and debug functionality
- Migration path to ORM-style Explorer queries
### Cache System (`/src/Cache/`)
- **Unified caching** using Nette Caching internally
- 100% backward compatibility with existing `CACHE()` and $datastore calls
- Supports file, SQLite, memory, and Memcached storage
- Advanced features: memoization, cache dependencies
### Configuration Management
- Environment-based config with `.env` files
- Singleton `Config` class accessible via `config()` function
- Local overrides supported via `library/config.local.php`
## Configuration Files
- `.env` - Environment variables (copy from `.env.example`)
- `library/config.php` - Main application configuration
- `library/config.local.php` - Local configuration overrides
- `composer.json` - Dependencies and PSR-4 autoloading
## Development Workflow
### CI/CD Pipeline
- **GitHub Actions** for automated testing and deployment
- **StyleCI** for code style enforcement
- **Dependabot** for dependency updates
- **FTP deployment** to demo environment
### Installation Methods
1. **Automated**: `php install.php` (recommended)
2. **Composer**: `composer create-project torrentpier/torrentpier`
3. **Manual**: Git clone + `composer install` + database setup
## Database & Schema
- **Database migrations** managed via Phinx in `/migrations/` directory
- Initial schema: `20250619000001_initial_schema.php`
- Initial seed data: `20250619000002_seed_initial_data.php`
- UTF-8 (utf8mb4) character set required
- Multiple database alias support for different components
### Migration Commands
```bash
# Run all pending migrations
php vendor/bin/phinx migrate --configuration=phinx.php
# Check migration status
php vendor/bin/phinx status --configuration=phinx.php
# Mark migrations as applied (for existing installations)
php vendor/bin/phinx migrate --fake --configuration=phinx.php
```
## Legacy Compatibility Strategy
The codebase maintains 100% backward compatibility while introducing modern alternatives:
- **Database layer**: Existing old SqlDb calls work while new code can use Nette Database
- **Cache system**: All existing `CACHE()` and $datastore calls preserved while adding modern features
- **Configuration**: Legacy config access maintained alongside new singleton pattern
This approach allows gradual modernization without breaking existing functionality - critical for a mature application with existing deployments.
## Security & Performance
- **Environment-based secrets** management via `.env`
- **CDN/proxy support** (Cloudflare, Fastly)
- **Input sanitization** and CSRF protection
- **Advanced caching** with multiple storage backends
- **Rate limiting** and IP-based restrictions
## BitTorrent Tracker Features
- **BitTorrent v1 & v2** support
- **TorrServer integration** capability
- **Client ban system** for problematic torrent clients
- **Scrape support** for tracker statistics
When working with this codebase, prioritize understanding the legacy compatibility approach and modern architecture patterns. Always test both legacy and modern code paths when making changes to core systems.

View file

@ -41,7 +41,7 @@ include:
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
@ -89,4 +89,5 @@ This Code of Conduct is adapted from the [Contributor Covenant][homepage], versi
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View file

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2005-2023 TorrentPier
Copyright (c) 2005-2025 TorrentPier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

190
README.md
View file

@ -2,99 +2,159 @@
<p align="center">
Bull-powered BitTorrent tracker engine
<br>
<br/>
</p>
<p align="center">
<a href="https://github.com/torrentpier/torrentpier/blob/master/LICENSE"><img src="https://img.shields.io/github/license/torrentpier/torrentpier" alt="License"></a>
<a href="https://packagist.org/packages/torrentpier/torrentpier"><img src="https://img.shields.io/packagist/stars/torrentpier/torrentpier" alt="Stars Packagist"></a>
<a href="https://github.com/torrentpier/torrentpier/actions"><img src="https://img.shields.io/github/actions/workflow/status/torrentpier/torrentpier/phpmd.yml" alt="Build status"></a>
<a href="https://crowdin.com/project/torrentpier"><img src="https://badges.crowdin.net/torrentpier/localized.svg" alt="Crowdin"></a>
<a href="https://nightly.link/torrentpier/torrentpier/workflows/ci/master/TorrentPier-master"><img src="https://img.shields.io/badge/Nightly%20release-gray?logo=hackthebox&logoColor=fff" alt="TorrentPier nightly"></a>
<a href="https://packagist.org/packages/torrentpier/torrentpier"><img src="https://img.shields.io/packagist/dt/torrentpier/torrentpier" alt="Downloads"></a>
<a href="https://packagist.org/packages/torrentpier/torrentpier"><img src="https://img.shields.io/packagist/v/torrentpier/torrentpier" alt="Version"></a>
<a href="https://github.com/torrentpier/torrentpier/releases"><img src="https://img.shields.io/github/release-date/torrentpier/torrentpier" alt="Last release"></a>
<img src="https://img.shields.io/github/repo-size/torrentpier/torrentpier" alt="Size">
<a href="https://github.com/SamKirkland/FTP-Deploy-Action"><img src="https://img.shields.io/badge/Deployed to TorrentPier Demo with-FTP DEPLOY ACTION-%3CCOLOR%3E?color=2b9348" alt="Deployed to TorrentPier Demo with FTP Deploy Action"></a>
</p>
## 🐂 About TorrentPier
TorrentPier — bull-powered BitTorrent tracker engine, written in php. High speed, simple modification, high load
architecture, built-in support for alternative compiled announcers (Ocelot, XBT). In addition, we have very helpful
[official support forum](https://torrentpier.com), where among other things it is possible to test the live
demo, get any support and download modifications for engine.
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 in active development. The goal is to remove all legacy code and rewrite existing to
modern standards. If you want to go deep on the code, check our [issues](https://github.com/torrentpier/torrentpier/issues)
and go from there. The documentation will be translated into english in the near future, currently russian is the main language of it.
TorrentPier is currently in active development. The goal is to remove all legacy code and rewrite the existing code to
modern specifications. If you want to delve deep into the code, check our [issues](https://github.com/torrentpier/torrentpier/issues)
and go from there. The documentation will be translated to English in the near future, currently Russian is the main language.
## ✨ 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
* MySQL 5.5.3 or above / MariaDB 10.0 or above / Percona
* PHP: 8.1 / 8.2
* PHP Extensions: mbstring, bcmath, intl, tidy (optional), xml, xmlwriter
* 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.2 / 8.3 / 8.4
* PHP Extensions: mbstring, gd, bcmath, intl, tidy (optional), xml, xmlwriter
* Crontab (Recommended)
## 💾 Installation
For installation, you need to follow a few simple steps:
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 `composer create-project torrentpier/torrentpier`
3. After run `composer install` on the project directory
4. Create database and import dump located at **install/sql/mysql.sql**
5. Edit database configuration settings in the configuration file or a local copy (see below)
6. Edit domain name in the configuration file or a local copy (see below)
7. Edit domain ssl setting in the configuration file or a local copy (see below)
8. Edit this files:
1. **favicon.png** (change on your own)
2. **robots.txt** (change the addresses in lines **Host** and **Sitemap** on your own)
3. **opensearch_desc.xml** (change the description and address on your own)
4. **opensearch_desc_bt.xml** (change the description and address on your own)
9. Log in to the forum with admin/admin login/password and finish setting up via admin panel
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! ✨
## 🔑 Access rights on folders and files
> [!TIP]
> You can automate steps 4-7 by running `php install.php` instead, which will guide you through the setup process interactively.
You must provide write permissions to the specified folders:
* `data/avatars`
* `data/torrent_files`
* `data/torrent_files/thumbs`
* `internal_data/atom`
* `internal_data/cache`
* `internal_data/log`
* `internal_data/triggers`
* `sitemap`
> [!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.
The specific settings depend on the server you are using, but in general case we recommend chmod 0755 for folders,
and chmod 0644 for files in them. If you are not sure, leave it as is.
### 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
* *The recommended way to run cron.php.* - For significant tracker speed increase may be required to replace built-in cron.php by operating system daemon. For more
information about that you can read [this thread](https://torrentpier.com/threads/52/) on our support forum.
* *Local configuration copy.* - You can override the settings using one of these methods: configuration file **library/config.local.php** and the environment
file **.env**. Both files are created by copying the appropriate .example templates without extension. Local configuration files
should not be available for reading to anyone by setting up access rights for your web server.
* *Ocelot installation.* - We have built-in support for alternate compiled announcer — Ocelot. The configuration is in the file **library/config.php**,
the announcer is in the repository [torrentpier/ocelot](https://github.com/torrentpier/ocelot). You can read assembly instructions
on his repository or in [this thread](https://torrentpier.com/threads/26078/) on our support forum.
* *[TMRR — Torrent Merkle Root Reader.](https://github.com/kovalensky/tmrr)* - A tool for extracting, comparing and calculating file hashes for .torrent files,
compatible with the BitTorrent v2 protocol. Useful for finding the sources of the same copies of files on different trackers & DHT indexers that support BitTorrent v2 protocol,
thus reviving dead torrents, valuable Internet artifacts.
## 📝 Official documentation
Documentation for TorrentPier can be found on the [TorrentPier docs website](https://docs.torrentpier.com).
* *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 [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for
submitting pull requests to us. But we are always ready to renew your pull-request for compliance with
these requirements. Just send it.
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!
<a href="https://github.com/torrentpier/torrentpier/graphs/contributors">
<img src="https://contrib.rocks/image?repo=torrentpier/torrentpier" />
<img src="https://contrib.rocks/image?repo=torrentpier/torrentpier" alt="Contributors"/>
</a>
Made with [contrib.rocks](https://contrib.rocks).
@ -106,6 +166,22 @@ 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)
<details>
<summary>Monero</summary>
```
42zJE3FDvN8foP9QYgDrBjgtd7h2FipGCGmAcmG5VFQuRkJBGMbCvoLSmivepmAMEgik2E8MPWUzKaoYsGCtmhvL7ZN73jh
```
</details>
<details>
<summary>YooMoney</summary>
```
4100118022415720
```
</details>
## 📦 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).

13
SECURITY.md Normal file
View file

@ -0,0 +1,13 @@
# Security Policy
## Versions
Due to the nature of our project - being open source - we have decided to patch only the latest major release (currently v2.4.x) for security vulnerabilities.
## How to disclose
Please disclose security issues by mailing [admin@torrentpier.com](mailto:admin@torrentpier.com).
## What we do
Any submitted security issue will be checked thoroughly by our development team. A fix for the issue and a transparent information on GitHub about the issue existing will be released. You can view any previously identified issues on our [GitHub Security Page](https://github.com/torrentpier/torrentpier/security/advisories). New major versions of TorrentPier will also receive a security audit to verify our efforts on providing a secure application.

1261
UPGRADE_GUIDE.md Normal file

File diff suppressed because it is too large Load diff

57
_cleanup.php Normal file
View file

@ -0,0 +1,57 @@
<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
if (!defined('BB_ROOT')) {
define('BB_ROOT', __DIR__ . DIRECTORY_SEPARATOR);
define('BB_PATH', BB_ROOT);
}
// Check CLI mode
if (PHP_SAPI != 'cli') {
exit;
}
if (!function_exists('removeFile')) {
// Get all constants
require_once BB_ROOT . 'library/defines.php';
// Include CLI functions
require INC_DIR . '/functions_cli.php';
}
$items = [
'.github',
'.cliffignore',
'.editorconfig',
'.gitignore',
'.styleci.yml',
'_release.php',
'CHANGELOG.md',
'CLAUDE.md',
'cliff.toml',
'CODE_OF_CONDUCT.md',
'CONTRIBUTING.md',
'crowdin.yml',
'HISTORY.md',
'phpunit.xml',
'README.md',
'SECURITY.md',
'tests',
'UPGRADE_GUIDE.md'
];
foreach ($items as $item) {
$path = BB_ROOT . $item;
if (is_file($path)) {
removeFile($path);
} elseif (is_dir($path)) {
removeDir($path);
}
}

130
_release.php Normal file
View file

@ -0,0 +1,130 @@
<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
define('BB_ROOT', __DIR__ . DIRECTORY_SEPARATOR);
define('BB_PATH', BB_ROOT);
// Check CLI mode
if (PHP_SAPI != 'cli') {
die('Please run <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">php ' . basename(__FILE__) . '</code> 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');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -69,44 +69,44 @@ $order_by = '';
if ($view === 'username') {
switch ($mode) {
case 'username':
$order_by = 'ORDER BY u.username ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY u.username ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
case 'attachments':
$order_by = 'ORDER BY total_attachments ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY total_attachments ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
case 'filesize':
$order_by = 'ORDER BY total_size ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY total_size ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
default:
$mode = 'attachments';
$sort_order = 'DESC';
$order_by = 'ORDER BY total_attachments ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY total_attachments ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
}
} elseif ($view === 'attachments') {
switch ($mode) {
case 'real_filename':
$order_by = 'ORDER BY a.real_filename ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY a.real_filename ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
case 'comment':
$order_by = 'ORDER BY a.comment ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY a.comment ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
case 'extension':
$order_by = 'ORDER BY a.extension ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY a.extension ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
case 'filesize':
$order_by = 'ORDER BY a.filesize ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY a.filesize ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
case 'downloads':
$order_by = 'ORDER BY a.download_count ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY a.download_count ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
case 'post_time':
$order_by = 'ORDER BY a.filetime ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY a.filetime ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
default:
$mode = 'a.real_filename';
$sort_order = 'ASC';
$order_by = 'ORDER BY a.real_filename ' . $sort_order . ' LIMIT ' . $start . ', ' . $bb_cfg['topics_per_page'];
$order_by = 'ORDER BY a.real_filename ' . $sort_order . ' LIMIT ' . $start . ', ' . config()->get('topics_per_page');
break;
}
}
@ -201,7 +201,7 @@ if ($submit_change && $view === 'attachments') {
if (isset($attachments['_' . $attachrow['attach_id']])) {
if ($attachrow['comment'] != $attachments['_' . $attachrow['attach_id']]['comment'] || $attachrow['download_count'] != $attachments['_' . $attachrow['attach_id']]['download_count']) {
$sql = 'UPDATE ' . BB_ATTACHMENTS_DESC . "
SET comment = '" . attach_mod_sql_escape($attachments['_' . $attachrow['attach_id']]['comment']) . "', download_count = " . (int)$attachments['_' . $attachrow['attach_id']]['download_count'] . '
SET comment = '" . DB()->escape($attachments['_' . $attachrow['attach_id']]['comment']) . "', download_count = " . (int)$attachments['_' . $attachrow['attach_id']]['download_count'] . '
WHERE attach_id = ' . (int)$attachrow['attach_id'];
if (!DB()->sql_query($sql)) {
@ -422,11 +422,7 @@ if ($view === 'attachments') {
$row = DB()->sql_fetchrow($result);
DB()->sql_freeresult($result);
$post_title = $row['topic_title'];
if (strlen($post_title) > 32) {
$post_title = str_short($post_title, 30);
}
$post_title = str_short($row['topic_title'], 30);
$view_topic = BB_ROOT . POST_URL . $ids[$j]['post_id'] . '#' . $ids[$j]['post_id'];
@ -441,7 +437,7 @@ if ($view === 'attachments') {
$hidden_field = '<input type="hidden" name="attach_id_list[]" value="' . (int)$attachments[$i]['attach_id'] . '" />';
$template->assign_block_vars('attachrow', [
'ROW_NUMBER' => $i + ($_GET['start'] + 1),
'ROW_NUMBER' => $i + (@$_GET['start'] + 1),
'ROW_CLASS' => $row_class,
'FILENAME' => htmlspecialchars($attachments[$i]['real_filename']),
@ -474,8 +470,8 @@ if ($view === 'attachments') {
}
// Generate Pagination
if ($do_pagination && $total_rows > $bb_cfg['topics_per_page']) {
generate_pagination('admin_attach_cp.php?view=' . $view . '&amp;mode=' . $mode . '&amp;order=' . $sort_order . '&amp;uid=' . $uid, $total_rows, $bb_cfg['topics_per_page'], $start);
if ($do_pagination && $total_rows > config()->get('topics_per_page')) {
generate_pagination('admin_attach_cp.php?view=' . $view . '&amp;mode=' . $mode . '&amp;order=' . $sort_order . '&amp;uid=' . $uid, $total_rows, config()->get('topics_per_page'), $start);
}
print_page('admin_attach_cp.tpl', 'admin');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -37,7 +37,6 @@ $pm_size = request_var('pm_size', '');
$submit = isset($_POST['submit']);
$check_upload = isset($_POST['settings']);
$check_image_cat = isset($_POST['cat_settings']);
$search_imagick = isset($_POST['search_imagick']);
// Re-evaluate the Attachment Configuration
$sql = 'SELECT * FROM ' . BB_ATTACH_CONFIG;
@ -104,12 +103,12 @@ while ($row = DB()->sql_fetchrow($result)) {
}
$sql = 'UPDATE ' . BB_ATTACH_CONFIG . "
SET config_value = '" . attach_mod_sql_escape($new_attach[$config_name]) . "'
WHERE config_name = '" . attach_mod_sql_escape($config_name) . "'";
SET config_value = '" . DB()->escape($new_attach[$config_name]) . "'
WHERE config_name = '" . DB()->escape($config_name) . "'";
} else {
$sql = 'UPDATE ' . BB_ATTACH_CONFIG . "
SET config_value = '" . attach_mod_sql_escape($new_attach[$config_name]) . "'
WHERE config_name = '" . attach_mod_sql_escape($config_name) . "'";
SET config_value = '" . DB()->escape($new_attach[$config_name]) . "'
WHERE config_name = '" . DB()->escape($config_name) . "'";
}
if (!DB()->sql_query($sql)) {
@ -130,44 +129,6 @@ $select_size_mode = size_select('size', $size);
$select_quota_size_mode = size_select('quota_size', $quota_size);
$select_pm_size_mode = size_select('pm_size', $pm_size);
// Search Imagick
if ($search_imagick) {
$imagick = '';
if (false !== stripos($imagick, "convert")) {
return true;
}
if ($imagick != 'none') {
if (!false !== stripos(PHP_OS, "WIN")) {
$retval = @exec('whereis convert');
$paths = explode(' ', $retval);
if (is_array($paths)) {
foreach ($paths as $i => $iValue) {
$path = basename($paths[$i]);
if ($path == 'convert') {
$imagick = $iValue;
}
}
}
} elseif (false !== stripos(PHP_OS, "WIN")) {
$path = 'c:/imagemagick/convert.exe';
if (file_exists(amod_realpath($path))) {
$imagick = $path;
}
}
}
if (file_exists(amod_realpath(trim($imagick)))) {
$new_attach['img_imagick'] = trim($imagick);
} else {
$new_attach['img_imagick'] = '';
}
}
// Check Settings
if ($check_upload) {
// Some tests...
@ -196,7 +157,7 @@ if ($check_upload) {
$error = false;
// Does the target directory exist, is it a directory and writeable
if (!@file_exists(amod_realpath($upload_dir))) {
if (!@file_exists(realpath($upload_dir))) {
$error = true;
$error_msg = sprintf($lang['DIRECTORY_DOES_NOT_EXIST'], $attach_config['upload_dir']) . '<br />';
}
@ -287,11 +248,8 @@ if ($mode == 'cats') {
$create_thumbnail_yes = ($new_attach['img_create_thumbnail'] != '0') ? 'checked' : '';
$create_thumbnail_no = ($new_attach['img_create_thumbnail'] == '0') ? 'checked' : '';
$use_gd2_yes = ($new_attach['use_gd2'] != '0') ? 'checked' : '';
$use_gd2_no = ($new_attach['use_gd2'] == '0') ? 'checked' : '';
// Check Thumbnail Support
if (!is_imagick() && !extension_loaded('gd')) {
if (!extension_loaded('gd')) {
$new_attach['img_create_thumbnail'] = '0';
} else {
$template->assign_block_vars('switch_thumbnail_support', []);
@ -304,13 +262,10 @@ if ($mode == 'cats') {
'IMAGE_LINK_HEIGHT' => $new_attach['img_link_height'],
'IMAGE_LINK_WIDTH' => $new_attach['img_link_width'],
'IMAGE_MIN_THUMB_FILESIZE' => $new_attach['img_min_thumb_filesize'],
'IMAGE_IMAGICK_PATH' => $new_attach['img_imagick'],
'DISPLAY_INLINED_YES' => $display_inlined_yes,
'DISPLAY_INLINED_NO' => $display_inlined_no,
'CREATE_THUMBNAIL_YES' => $create_thumbnail_yes,
'CREATE_THUMBNAIL_NO' => $create_thumbnail_no,
'USE_GD2_YES' => $use_gd2_yes,
'USE_GD2_NO' => $use_gd2_no,
'S_ASSIGNED_GROUP_IMAGES' => implode(', ', $s_assigned_group_images),
'S_ATTACH_ACTION' => 'admin_attachments.php?mode=cats',
));
@ -346,12 +301,12 @@ if ($check_image_cat) {
$error = false;
// Does the target directory exist, is it a directory and writeable
if (!@file_exists(amod_realpath($upload_dir))) {
if (!@file_exists(realpath($upload_dir))) {
if (!bb_mkdir($upload_dir) && !is_dir($upload_dir)) {
throw new \RuntimeException(sprintf('Directory "%s" was not created', $upload_dir));
}
if (!@file_exists(amod_realpath($upload_dir))) {
if (!@file_exists(realpath($upload_dir))) {
$error = true;
$error_msg = sprintf($lang['DIRECTORY_DOES_NOT_EXIST'], $upload_dir) . '<br />';
}
@ -391,7 +346,7 @@ if ($submit && $mode == 'quota') {
$filesize_list[$i] = ($size_select_list[$i] == 'kb') ? round($filesize_list[$i] * 1024) : (($size_select_list[$i] == 'mb') ? round($filesize_list[$i] * 1048576) : $filesize_list[$i]);
$sql = 'UPDATE ' . BB_QUOTA_LIMITS . "
SET quota_desc = '" . attach_mod_sql_escape($quota_desc_list[$i]) . "', quota_limit = " . (int)$filesize_list[$i] . '
SET quota_desc = '" . DB()->escape($quota_desc_list[$i]) . "', quota_limit = " . (int)$filesize_list[$i] . '
WHERE quota_limit_id = ' . (int)$quota_change_list[$i];
if (!DB()->sql_query($sql)) {
@ -453,7 +408,7 @@ if ($submit && $mode == 'quota') {
$filesize = ($size_select == 'kb') ? round($filesize * 1024) : (($size_select == 'mb') ? round($filesize * 1048576) : $filesize);
$sql = 'INSERT INTO ' . BB_QUOTA_LIMITS . " (quota_desc, quota_limit)
VALUES ('" . attach_mod_sql_escape($quota_desc) . "', " . (int)$filesize . ')';
VALUES ('" . DB()->escape($quota_desc) . "', " . (int)$filesize . ')';
if (!DB()->sql_query($sql)) {
bb_die('Could not add quota limit');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -61,6 +61,7 @@ switch ($mode) {
'CONFIG_MODS' => true,
'MAGNET_LINKS_ENABLED' => $new['magnet_links_enabled'],
'MAGNET_LINKS_FOR_GUESTS' => $new['magnet_links_for_guests'],
'GENDER' => $new['gender'],
'CALLSEED' => $new['callseed'],
'TOR_STATS' => $new['tor_stats'],
@ -135,8 +136,8 @@ switch ($mode) {
'POSTS_PER_PAGE' => $new['posts_per_page'],
'HOT_TOPIC' => $new['hot_threshold'],
'DEFAULT_DATEFORMAT' => $new['default_dateformat'],
'LANG_SELECT' => \TorrentPier\Legacy\Select::language($new['default_lang'], 'default_lang'),
'TIMEZONE_SELECT' => \TorrentPier\Legacy\Select::timezone($new['board_timezone'], 'board_timezone'),
'LANG_SELECT' => \TorrentPier\Legacy\Common\Select::language($new['default_lang'], 'default_lang'),
'TIMEZONE_SELECT' => \TorrentPier\Legacy\Common\Select::timezone($new['board_timezone'], 'board_timezone'),
'MAX_LOGIN_ATTEMPTS' => $new['max_login_attempts'],
'LOGIN_RESET_TIME' => $new['login_reset_time'],
'PRUNE_ENABLE' => (bool)$new['prune_enable'],

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -26,7 +26,7 @@ $cfg = [];
* All config names with default values
*/
$default_cfg_str = array(
'bt_announce_url' => 'http://demo.torrentpier.com/bt/',
'bt_announce_url' => 'https://torrentpier.duckdns.org/bt/',
);
$default_cfg_bool = array(

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -29,6 +29,11 @@ if ($mode == 'run' && !$job_id) {
require __DIR__ . '/pagestart.php';
}
// Check for demo mode
if (IN_DEMO_MODE && ($submit || !in_array($mode, ['add', 'list']))) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
if (!IS_SUPER_ADMIN) {
bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
}
@ -79,7 +84,7 @@ switch ($mode) {
));
//detect cron status
if (file_exists(CRON_RUNNING)) {
if (is_file(CRON_RUNNING)) {
$template->assign_vars(array(
'CRON_RUNNING' => true,
));
@ -87,7 +92,7 @@ switch ($mode) {
break;
case 'repair':
if (file_exists(CRON_RUNNING)) {
if (is_file(CRON_RUNNING)) {
rename(CRON_RUNNING, CRON_ALLOWED);
}
redirect('admin/' . basename(__FILE__) . '?mode=list');
@ -159,7 +164,7 @@ switch ($mode) {
'S_MODE' => 'add',
'SCHEDULE' => build_select('schedule', $schedule, 'select', null, null),
'RUN_DAY' => build_select('run_day', $run_day, 0, null, null),
'CRON_ID' => 'none',
'CRON_ID' => '',
'CRON_ACTIVE' => 1,
'CRON_TITLE' => '',
'CRON_SCRIPT' => '',
@ -183,7 +188,8 @@ switch ($mode) {
}
if ($submit) {
if ($_POST['mode'] == 'list') {
$mode2 = $_POST['mode'] ?? '';
if ($mode2 == 'list') {
if ($cron_action == 'run' && $jobs) {
\TorrentPier\Legacy\Admin\Cron::run_jobs($jobs);
} elseif ($cron_action == 'delete' && $jobs) {
@ -193,12 +199,12 @@ if ($submit) {
}
redirect('admin/' . basename(__FILE__) . '?mode=list');
} elseif (\TorrentPier\Legacy\Admin\Cron::validate_cron_post($_POST) == 1) {
if ($_POST['mode'] == 'edit') {
if ($mode2 == 'edit') {
\TorrentPier\Legacy\Admin\Cron::update_cron_job($_POST);
} elseif ($_POST['mode'] == 'add') {
} elseif ($mode2 == 'add') {
\TorrentPier\Legacy\Admin\Cron::insert_cron_job($_POST);
} else {
bb_die('Mode error');
bb_die("Invalid mode: $mode2");
}
redirect('admin/' . basename(__FILE__) . '?mode=list');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -47,6 +47,11 @@ $add_forum = isset($_POST['add_forum']);
$delete_forum = isset($_POST['del_forum']);
$submit = isset($_POST['submit']);
// Check for demo mode
if (IN_DEMO_MODE && ($submit || $add_forum || $delete_forum)) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
// Get Attachment Config
$attach_config = [];
@ -93,7 +98,7 @@ if ($submit && $mode == 'extensions') {
'group_id' => (int)$extensions['_' . $extension_row[$i]['ext_id']]['group_id']
);
$sql = 'UPDATE ' . BB_EXTENSIONS . ' SET ' . attach_mod_sql_build_array('UPDATE', $sql_ary) . '
$sql = 'UPDATE ' . BB_EXTENSIONS . ' SET ' . DB()->build_array('UPDATE', $sql_ary) . '
WHERE ext_id = ' . (int)$extension_row[$i]['ext_id'];
if (!DB()->sql_query($sql)) {
@ -159,7 +164,7 @@ if ($submit && $mode == 'extensions') {
'comment' => (string)$extension_explain
);
$sql = 'INSERT INTO ' . BB_EXTENSIONS . ' ' . attach_mod_sql_build_array('INSERT', $sql_ary);
$sql = 'INSERT INTO ' . BB_EXTENSIONS . ' ' . DB()->build_array('INSERT', $sql_ary);
if (!DB()->sql_query($sql)) {
bb_die('Could not add extension');
@ -260,7 +265,7 @@ if ($submit && $mode == 'groups') {
'max_filesize' => (int)$filesize_list[$i]
);
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . ' SET ' . attach_mod_sql_build_array('UPDATE', $sql_ary) . '
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . ' SET ' . DB()->build_array('UPDATE', $sql_ary) . '
WHERE group_id = ' . (int)$group_change_list[$i];
if (!DB()->sql_query($sql)) {
@ -340,7 +345,7 @@ if ($submit && $mode == 'groups') {
'forum_permissions' => ''
);
$sql = 'INSERT INTO ' . BB_EXTENSION_GROUPS . ' ' . attach_mod_sql_build_array('INSERT', $sql_ary);
$sql = 'INSERT INTO ' . BB_EXTENSION_GROUPS . ' ' . DB()->build_array('INSERT', $sql_ary);
if (!DB()->sql_query($sql)) {
bb_die('Could not add extension group');
@ -499,7 +504,7 @@ if ($add_forum && $e_mode == 'perm' && $group) {
$auth_bitstream = auth_pack($auth_p);
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . " SET forum_permissions = '" . attach_mod_sql_escape($auth_bitstream) . "' WHERE group_id = " . (int)$group;
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . " SET forum_permissions = '" . DB()->escape($auth_bitstream) . "' WHERE group_id = " . (int)$group;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not update permissions #2');
@ -536,7 +541,7 @@ if ($delete_forum && $e_mode == 'perm' && $group) {
$auth_bitstream = (count($auth_p) > 0) ? auth_pack($auth_p) : '';
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . " SET forum_permissions = '" . attach_mod_sql_escape($auth_bitstream) . "' WHERE group_id = " . (int)$group;
$sql = 'UPDATE ' . BB_EXTENSION_GROUPS . " SET forum_permissions = '" . DB()->escape($auth_bitstream) . "' WHERE group_id = " . (int)$group;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not update permissions #3');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -72,10 +72,17 @@ if (isset($_GET['adv'])) {
unset($adv);
}
$submit = isset($_POST['submit']);
// Check for demo mode
if (IN_DEMO_MODE && $submit) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
/**
* Start program proper
*/
if (isset($_POST['submit'])) {
if ($submit) {
$sql = '';
if (!empty($forum_id)) {
@ -116,6 +123,7 @@ if (isset($_POST['submit'])) {
}
$datastore->update('cat_forums');
CACHE('bb_cache')->rm();
bb_die($lang['FORUM_AUTH_UPDATED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_FORUMAUTH'], '<a href="' . 'admin_forumauth.php' . '">', '</a>'));
}
@ -200,7 +208,7 @@ if (empty($forum_id)) {
}
$adv_mode = empty($adv) ? '1' : '0';
$switch_mode = "admin_forumauth.php?f=$forum_id&amp;adv=$adv_mode";
$switch_mode = "admin_forumauth.php?" . POST_FORUM_URL . "=$forum_id&amp;adv=$adv_mode";
$switch_mode_text = empty($adv) ? $lang['ADVANCED_MODE'] : $lang['SIMPLE_MODE'];
$u_switch_mode = '<a href="' . $switch_mode . '">' . $switch_mode_text . '</a>';

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -80,10 +80,17 @@ if (isset($_GET['adv'])) {
unset($adv);
}
//
// Start program proper
//
if (isset($_POST['submit'])) {
$submit = isset($_POST['submit']);
// Check for demo mode
if (IN_DEMO_MODE && $submit) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
/**
* Start program proper
*/
if ($submit) {
$sql = '';
if (!empty($forum_id)) {
@ -146,6 +153,7 @@ if (isset($_POST['submit'])) {
}
$datastore->update('cat_forums');
CACHE('bb_cache')->rm();
bb_die($lang['FORUM_AUTH_UPDATED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_FORUMAUTH'], '<a href="admin_forumauth_list.php">', '</a>'));
} // End of submit

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -53,6 +53,11 @@ if (isset($_REQUEST['addforum']) || isset($_REQUEST['addcategory'])) {
}
}
// Check for demo mode
if (IN_DEMO_MODE && in_array($mode, ['deletecat', 'deleteforum'])) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
$show_main_page = false;
if ($mode) {
@ -110,8 +115,8 @@ if ($mode) {
if ($parent = get_forum_data($forum_parent)) {
$cat_id = $parent['cat_id'];
}
} elseif (isset($_REQUEST['c'])) {
$cat_id = (int)$_REQUEST['c'];
} elseif (isset($_REQUEST[POST_CAT_URL])) {
$cat_id = (int)$_REQUEST[POST_CAT_URL];
}
$catlist = get_list('category', $cat_id, true);
@ -218,7 +223,7 @@ if ($mode) {
$datastore->update('cat_forums');
CACHE('bb_cache')->rm();
bb_die($lang['FORUMS_UPDATED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_FORUMADMIN'], '<a href="admin_forums.php?c=' . $cat_id . '">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
bb_die($lang['FORUMS_UPDATED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_FORUMADMIN'], '<a href="admin_forums.php?' . POST_CAT_URL . '=' . $cat_id . '">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
break;
@ -307,7 +312,7 @@ if ($mode) {
$message = $lang['FORUMS_UPDATED'] . '<br /><br />';
$message .= $fix ? "$fix<br /><br />" : '';
$message .= sprintf($lang['CLICK_RETURN_FORUMADMIN'], '<a href="admin_forums.php?c=' . $cat_id . '">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
$message .= sprintf($lang['CLICK_RETURN_FORUMADMIN'], '<a href="admin_forums.php?' . POST_CAT_URL . '=' . $cat_id . '">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
bb_die($message);
break;
@ -317,7 +322,7 @@ if ($mode) {
// Create a category in the DB
//
if (!$new_cat_title = trim($_POST['categoryname'])) {
bb_die('Category name is empty');
bb_die($lang['CATEGORY_NAME_EMPTY']);
}
check_name_dup('cat', $new_cat_title);
@ -342,12 +347,12 @@ if ($mode) {
//
// Show form to edit a category
//
$cat_id = (int)$_GET['c'];
$cat_id = (int)$_GET[POST_CAT_URL];
$cat_info = get_info('category', $cat_id);
$hidden_fields = array(
'mode' => 'modcat',
'c' => $cat_id,
POST_CAT_URL => $cat_id,
);
$template->assign_vars(array(
@ -365,10 +370,10 @@ if ($mode) {
// Modify a category in the DB
//
if (!$new_cat_title = trim($_POST['cat_title'])) {
bb_die('Category name is empty');
bb_die($lang['CATEGORY_NAME_EMPTY']);
}
$cat_id = (int)$_POST['c'];
$cat_id = (int)$_POST[POST_CAT_URL];
$row = get_info('category', $cat_id);
$cur_cat_title = $row['cat_title'];
@ -396,7 +401,7 @@ if ($mode) {
//
// Show form to delete a forum
//
$forum_id = (int)$_GET['f'];
$forum_id = (int)$_GET[POST_FORUM_URL];
$move_to_options = '<option value="-1">' . $lang['DELETE_ALL_POSTS'] . '</option>';
$move_to_options .= sf_get_list('forum', $forum_id, 0);
@ -433,6 +438,7 @@ if ($mode) {
if ($to_id == -1) {
// Delete everything from forum
\TorrentPier\Legacy\Admin\Common::topic_delete('prune', $from_id, 0, true);
$datastore->update('stats');
} else {
// Move all posts
$sql = 'SELECT * FROM ' . BB_FORUMS . " WHERE forum_id IN($from_id, $to_id)";
@ -480,7 +486,7 @@ if ($mode) {
case 'deletecat':
// Show form to delete a category
$cat_id = (int)$_GET['c'];
$cat_id = (int)$_GET[POST_CAT_URL];
$catinfo = get_info('category', $cat_id);
$categories_count = $catinfo['number'];
@ -517,7 +523,11 @@ if ($mode) {
case 'movedelcat':
// Move or delete a category in the DB
$from_id = (int)$_POST['from_id'];
$to_id = (int)$_POST['to_id'];
$to_id = (int)$_POST['to_id'] ?? -1;
if ($to_id === -1) {
bb_die($lang['NOWHERE_TO_MOVE']);
}
if ($from_id == $to_id || !cat_exists($from_id) || !cat_exists($to_id)) {
bb_die('Bad input');
@ -624,7 +634,7 @@ if ($mode) {
case 'cat_order':
$move = (int)$_GET['move'];
$cat_id = (int)$_GET['c'];
$cat_id = (int)$_GET[POST_CAT_URL];
DB()->query('
UPDATE ' . BB_CATEGORIES . " SET
@ -640,7 +650,7 @@ if ($mode) {
break;
case 'forum_sync':
\TorrentPier\Legacy\Admin\Common::sync('forum', (int)$_GET['f']);
\TorrentPier\Legacy\Admin\Common::sync('forum', (int)$_GET[POST_FORUM_URL]);
$datastore->update('cat_forums');
CACHE('bb_cache')->rm();
@ -649,7 +659,6 @@ if ($mode) {
default:
bb_die($lang['NO_MODE']);
break;
}
}
@ -672,7 +681,7 @@ if (!$mode || $show_main_page) {
$where_cat_sql = $req_cat_id = '';
if ($c =& $_REQUEST['c']) {
if ($c =& $_REQUEST[POST_CAT_URL]) {
if ($c !== 'all') {
$req_cat_id = (int)$c;
$where_cat_sql = "WHERE cat_id = $req_cat_id";
@ -700,7 +709,7 @@ if (!$mode || $show_main_page) {
$bgr_class_over = 'prow3';
$template->assign_vars(array(
'U_ALL_FORUMS' => 'admin_forums.php?c=all',
'U_ALL_FORUMS' => 'admin_forums.php?' . POST_CAT_URL . '=all',
'FORUMS_COUNT' => $total_forums,
));
@ -714,12 +723,12 @@ if (!$mode || $show_main_page) {
'CAT_ID' => $cat_id,
'CAT_DESC' => htmlCHR($category_rows[$i]['cat_title']),
'U_CAT_EDIT' => "admin_forums.php?mode=editcat&amp;c=$cat_id",
'U_CAT_DELETE' => "admin_forums.php?mode=deletecat&amp;c=$cat_id",
'U_CAT_MOVE_UP' => "admin_forums.php?mode=cat_order&amp;move=-15&amp;c=$cat_id",
'U_CAT_MOVE_DOWN' => "admin_forums.php?mode=cat_order&amp;move=15&amp;c=$cat_id",
'U_VIEWCAT' => "admin_forums.php?c=$cat_id",
'U_CREATE_FORUM' => "admin_forums.php?mode=addforum&amp;c=$cat_id",
'U_CAT_EDIT' => "admin_forums.php?mode=editcat&amp;" . POST_CAT_URL . "=$cat_id",
'U_CAT_DELETE' => "admin_forums.php?mode=deletecat&amp;" . POST_CAT_URL . "=$cat_id",
'U_CAT_MOVE_UP' => "admin_forums.php?mode=cat_order&amp;move=-15&amp;" . POST_CAT_URL . "=$cat_id",
'U_CAT_MOVE_DOWN' => "admin_forums.php?mode=cat_order&amp;move=15&amp;" . POST_CAT_URL . "=$cat_id",
'U_VIEWCAT' => "admin_forums.php?" . POST_CAT_URL . "=$cat_id",
'U_CREATE_FORUM' => "admin_forums.php?mode=addforum&amp;" . POST_CAT_URL . "=$cat_id",
));
for ($j = 0; $j < $total_forums; $j++) {
@ -734,7 +743,7 @@ if (!$mode || $show_main_page) {
'FORUM_DESC' => htmlCHR($forum_rows[$j]['forum_desc']),
'NUM_TOPICS' => $forum_rows[$j]['forum_topics'],
'NUM_POSTS' => $forum_rows[$j]['forum_posts'],
'PRUNE_DAYS' => $forum_rows[$j]['prune_days'] ?: '-',
'PRUNE_DAYS' => !empty($forum_rows[$j]['prune_days']) ? delta_time((TIMENOW - 86400 * $forum_rows[$j]['prune_days']), TIMENOW, 'days') : $lang['DISABLED'],
'ORDER' => $forum_rows[$j]['forum_order'],
'FORUM_ID' => $forum_rows[$j]['forum_id'],
@ -744,19 +753,19 @@ if (!$mode || $show_main_page) {
'FORUM_PARENT' => $forum_rows[$j]['forum_parent'],
'SF_PAD' => $forum_rows[$j]['forum_parent'] ? ' style="padding-left: 20px;" ' : '',
'FORUM_NAME_CLASS' => $forum_rows[$j]['forum_parent'] ? 'genmed' : 'gen',
'ADD_SUB_HREF' => "admin_forums.php?mode=addforum&amp;forum_parent={$forum_rows[$j]['forum_id']}",
'ADD_SUB_HREF' => !$forum_rows[$j]['forum_parent'] ? "admin_forums.php?mode=addforum&amp;forum_parent={$forum_rows[$j]['forum_id']}" : '',
'U_VIEWFORUM' => BB_ROOT . FORUM_URL . $forum_id,
'U_FORUM_EDIT' => "admin_forums.php?mode=editforum&amp;f=$forum_id",
'U_FORUM_PERM' => "admin_forumauth.php?f=$forum_id",
'U_FORUM_DELETE' => "admin_forums.php?mode=deleteforum&amp;f=$forum_id",
'U_FORUM_MOVE_UP' => "admin_forums.php?mode=forum_order&amp;move=-15&amp;f=$forum_id&amp;c=$req_cat_id",
'U_FORUM_MOVE_DOWN' => "admin_forums.php?mode=forum_order&amp;move=15&amp;f=$forum_id&amp;c=$req_cat_id",
'U_FORUM_RESYNC' => "admin_forums.php?mode=forum_sync&amp;f=$forum_id",
'U_FORUM_EDIT' => "admin_forums.php?mode=editforum&amp;" . POST_FORUM_URL . "=$forum_id",
'U_FORUM_PERM' => "admin_forumauth.php?" . POST_FORUM_URL . "=$forum_id",
'U_FORUM_DELETE' => "admin_forums.php?mode=deleteforum&amp;" . POST_FORUM_URL . "=$forum_id",
'U_FORUM_MOVE_UP' => "admin_forums.php?mode=forum_order&amp;move=-15&amp;" . POST_FORUM_URL . "=$forum_id&amp;" . POST_CAT_URL . "=$req_cat_id",
'U_FORUM_MOVE_DOWN' => "admin_forums.php?mode=forum_order&amp;move=15&amp;" . POST_FORUM_URL . "=$forum_id&amp;" . POST_CAT_URL . "=$req_cat_id",
'U_FORUM_RESYNC' => "admin_forums.php?mode=forum_sync&amp;" . POST_FORUM_URL . "=$forum_id",
));
}// if ... forumid == catid
} // for ... forums
} // for ... categories
}// if ... total_categories
}
}
}
}
}
print_page('admin_forums.tpl', 'admin');
@ -856,7 +865,7 @@ function get_list($mode, $id, $select)
if ($row[$idfield] == $id) {
$s = ' selected';
}
$catlist .= '<option value="' . $row[$idfield] . '"' . $s . '>&nbsp;' . htmlCHR(str_short($row[$namefield], 60)) . '</option>\n';
$catlist .= '<option value="' . $row[$idfield] . '"' . $s . '>&nbsp;' . str_short(htmlCHR($row[$namefield]), 60) . '</option>\n';
}
return $catlist;
@ -1093,7 +1102,7 @@ function sf_get_list($mode, $exclude = 0, $select = 0)
$selected = ($fid == $select) ? HTML_SELECTED : '';
$disabled = ($fid == $exclude && !$forum_parent) ? HTML_DISABLED : '';
$style = $disabled ? ' style="color: gray" ' : (($fid == $exclude) ? ' style="color: darkred" ' : '');
$opt .= '<option value="' . $fid . '" ' . $selected . $disabled . $style . '>' . ($f['forum_parent'] ? HTML_SF_SPACER : '') . htmlCHR(str_short($f['forum_name'], 60)) . "&nbsp;</option>\n";
$opt .= '<option value="' . $fid . '" ' . $selected . $disabled . $style . '>' . ($f['forum_parent'] ? HTML_SF_SPACER : '') . str_short(htmlCHR($f['forum_name']), 60) . "&nbsp;</option>\n";
}
$opt .= '</optgroup>';

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -14,10 +14,10 @@ if (!empty($setmodules)) {
require __DIR__ . '/pagestart.php';
$datastore->enqueue(array(
$datastore->enqueue([
'moderators',
'cat_forums',
));
]);
$log_action->init();
@ -36,9 +36,9 @@ $url = basename(__FILE__);
// Key names
$type_key = 'type';
$forum_key = 'f';
$topic_key = 't';
$user_key = 'u';
$forum_key = POST_FORUM_URL;
$topic_key = POST_TOPIC_URL;
$user_key = POST_USERS_URL;
$datetime_key = 'dt'; // value should be strtotime() time ("2006-06-25" etc.)
$daysback_key = 'db';
$sort_key = 'sort';
@ -151,7 +151,7 @@ if ($var =& $_REQUEST[$daysback_key] && $var != $def_days) {
$url = url_arg($url, $daysback_key, $daysback_val);
}
if ($var =& $_REQUEST[$datetime_key] && $var != $def_datetime) {
$tz = TIMENOW + (3600 * $bb_cfg['board_timezone']);
$tz = TIMENOW + (3600 * config()->get('board_timezone'));
if (($tmp_timestamp = strtotime($var, $tz)) > 0) {
$datetime_val = $tmp_timestamp;
$url = url_arg($url, $datetime_key, date($dt_format, $datetime_val));
@ -225,6 +225,9 @@ if ($log_rowset) {
case $log_type['mod_topic_unlock']:
case $log_type['mod_topic_set_downloaded']:
case $log_type['mod_topic_unset_downloaded']:
case $log_type['mod_topic_change_tor_status']:
case $log_type['mod_topic_change_tor_type']:
case $log_type['mod_topic_tor_unregister']:
case $log_type['mod_topic_renamed']:
case $log_type['mod_post_delete']:
case $log_type['mod_post_pin']:
@ -262,7 +265,7 @@ if ($log_rowset) {
'ACTION_HREF_S' => url_arg($url, $type_key, $row['log_type_id']),
'USER_ID' => $row['log_user_id'],
'USERNAME' => profile_url($row),
'USERNAME' => profile_url($row, true),
'USER_HREF_S' => url_arg($url, $user_key, $row['log_user_id']),
'USER_IP' => \TorrentPier\Helpers\IPHelper::isValid($row['log_user_ip']) ? \TorrentPier\Helpers\IPHelper::long2ip_extended($row['log_user_ip']) : '127.0.0.1',
@ -310,7 +313,7 @@ if ($log_rowset) {
// Users
if ($user_csv && empty($filter['users'])) {
$template->assign_block_vars('users', array(
'USERNAME' => profile_url($row),
'USERNAME' => profile_url($row, true),
));
$filter['users'] = true;
}

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -14,7 +14,7 @@ if (!empty($setmodules)) {
require __DIR__ . '/pagestart.php';
if (!$bb_cfg['emailer']['enabled']) {
if (!config()->get('emailer.enabled')) {
bb_die($lang['EMAILER_DISABLED']);
}
@ -23,7 +23,7 @@ set_time_limit(1200);
$subject = trim(request_var('subject', ''));
$message = (string)request_var('message', '');
$group_id = (int)request_var(POST_GROUPS_URL, 0);
$reply_to = (string)request_var('reply_to', $bb_cfg['board_email']);
$reply_to = (string)request_var('reply_to', config()->get('board_email'));
$message_type = (string)request_var('message_type', '');
$errors = $user_id_sql = [];
@ -40,12 +40,7 @@ if (isset($_POST['submit'])) {
}
if (!$errors) {
$sql = DB()->fetch_rowset('SELECT ban_userid FROM ' . BB_BANLIST . ' WHERE ban_userid != 0');
foreach ($sql as $row) {
$user_id_sql[] = ',' . $row['ban_userid'];
}
$user_id_sql = implode('', $user_id_sql);
$banned_users = ($get_banned_users = get_banned_users()) ? (', ' . implode(', ', $get_banned_users)) : '';
if ($group_id != -1) {
$user_list = DB()->fetch_rowset('
@ -55,14 +50,14 @@ if (isset($_POST['submit'])) {
AND ug.user_pending = 0
AND u.user_id = ug.user_id
AND u.user_active = 1
AND u.user_id NOT IN(" . EXCLUDED_USERS . $user_id_sql . ')
AND u.user_id NOT IN(" . EXCLUDED_USERS . $banned_users . ')
');
} else {
$user_list = DB()->fetch_rowset('
SELECT username, user_email, user_lang
FROM ' . BB_USERS . '
WHERE user_active = 1
AND user_id NOT IN(' . EXCLUDED_USERS . $user_id_sql . ')
AND user_id NOT IN(' . EXCLUDED_USERS . $banned_users . ')
');
}

View file

@ -0,0 +1,79 @@
<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
if (!empty($setmodules)) {
if (IS_SUPER_ADMIN) {
$module['GENERAL']['MIGRATIONS_STATUS'] = basename(__FILE__);
}
return;
}
require __DIR__ . '/pagestart.php';
if (!IS_SUPER_ADMIN) {
bb_die(__('ONLY_FOR_SUPER_ADMIN'));
}
use TorrentPier\Database\MigrationStatus;
// Initialize migration status
$migrationStatus = new MigrationStatus();
$status = $migrationStatus->getMigrationStatus();
$schemaInfo = $migrationStatus->getSchemaInfo();
// Template variables
$template->assign_vars([
'PAGE_TITLE' => __('MIGRATIONS_STATUS'),
'CURRENT_TIME' => date('Y-m-d H:i:s'),
// Migration status individual fields
'MIGRATION_TABLE_EXISTS' => $status['table_exists'],
'MIGRATION_CURRENT_VERSION' => $status['current_version'],
'MIGRATION_APPLIED_COUNT' => count($status['applied_migrations']),
'MIGRATION_PENDING_COUNT' => count($status['pending_migrations']),
// Setup status fields
'SETUP_REQUIRES_SETUP' => $status['requires_setup'] ?? false,
'SETUP_TYPE' => $status['setup_status']['type'] ?? __('UNKNOWN'),
'SETUP_MESSAGE' => $status['setup_status']['message'] ?? '',
'SETUP_ACTION_REQUIRED' => $status['setup_status']['action_required'] ?? false,
'SETUP_INSTRUCTIONS' => $status['setup_status']['instructions'] ?? '',
// Schema info individual fields
'SCHEMA_DATABASE_NAME' => $schemaInfo['database_name'],
'SCHEMA_TABLE_COUNT' => $schemaInfo['table_count'],
'SCHEMA_SIZE_MB' => $schemaInfo['size_mb'],
]);
// Assign migration data for template
if (!empty($status['applied_migrations'])) {
foreach ($status['applied_migrations'] as $i => $migration) {
$template->assign_block_vars('applied_migrations', [
'VERSION' => $migration['version'],
'NAME' => $migration['migration_name'] ?? __('UNKNOWN'),
'START_TIME' => $migration['start_time'] ?? __('UNKNOWN'),
'END_TIME' => $migration['end_time'] ?? __('UNKNOWN'),
'ROW_CLASS' => ($i % 2) ? 'row1' : 'row2'
]);
}
}
if (!empty($status['pending_migrations'])) {
foreach ($status['pending_migrations'] as $i => $migration) {
$template->assign_block_vars('pending_migrations', [
'VERSION' => $migration['version'],
'NAME' => $migration['name'],
'FILENAME' => $migration['filename'],
'ROW_CLASS' => ($i % 2) ? 'row1' : 'row2'
]);
}
}
// Output template using standard admin pattern
print_page('admin_migrations.tpl', 'admin');

View file

@ -2,17 +2,28 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
if (!empty($setmodules)) {
if (IS_SUPER_ADMIN) {
$module['GENERAL']['PHP_INFO'] = basename(__FILE__);
}
return;
}
require __DIR__ . '/pagestart.php';
if (!IS_SUPER_ADMIN) {
bb_die($lang['ONLY_FOR_SUPER_ADMIN']);
}
// Check for demo mode
if (IN_DEMO_MODE) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
/** @noinspection ForgottenDebugOutputInspection */
phpinfo();

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -29,6 +29,10 @@ if (isset($_GET['mode']) || isset($_POST['mode'])) {
}
}
if ($mode == 'delete' && isset($_POST['cancel'])) {
$mode = '';
}
if ($mode != '') {
if ($mode == 'edit' || $mode == 'add') {
//
@ -83,7 +87,7 @@ if ($mode != '') {
// The rank image has to be a jpg, gif or png
//
if ($rank_image != '') {
if (!preg_match('/(\.gif|\.png|\.jpg|\.jpeg|\.bmp|\.webp|\.ico)$/is', $rank_image)) {
if (!preg_match('/(\.gif|\.png|\.jpg|\.jpeg|\.bmp|\.webp|\.avif\.ico)$/is', $rank_image)) {
$rank_image = '';
}
}
@ -123,12 +127,14 @@ if ($mode != '') {
// Ok, they want to delete their rank
//
$confirmed = isset($_POST['confirm']);
if (isset($_POST['id']) || isset($_GET['id'])) {
$rank_id = isset($_POST['id']) ? (int)$_POST['id'] : (int)$_GET['id'];
} else {
$rank_id = 0;
}
if ($confirmed) {
if ($rank_id) {
$sql = 'DELETE FROM ' . BB_RANKS . " WHERE rank_id = $rank_id";
@ -147,6 +153,15 @@ if ($mode != '') {
} else {
bb_die($lang['MUST_SELECT_RANK']);
}
} else {
$hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" />';
$hidden_fields .= '<input type="hidden" name="id" value="' . $rank_id . '" />';
print_confirmation([
'FORM_ACTION' => 'admin_ranks.php',
'HIDDEN_FIELDS' => $hidden_fields,
]);
}
} else {
bb_die('Invalid mode');
}

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -329,7 +329,7 @@ if ($mode == 'submit' || $mode == 'refresh') {
'TOTAL_PERCENT' => sprintf($lang['PERCENT_COMPLETED'], round($total_percent, 2)),
'LAST_CYCLE_TIME' => delta_time(TIMENOW),
'SESSION_TIME' => delta_time($last_session_data['start_time']),
'SESSION_TIME' => delta_time(($last_session_data['start_time'] == 0) ? TIMENOW : $last_session_data['start_time']),
'SESSION_AVERAGE_CYCLE_TIME' => delta_time((int)$session_average_cycle_time, 0),
'SESSION_ESTIMATED_TIME' => delta_time((int)$session_estimated_time, 0),

45
admin/admin_robots.php Normal file
View file

@ -0,0 +1,45 @@
<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
if (!empty($setmodules)) {
$module['MODS']['ROBOTS_TXT_EDITOR_TITLE'] = basename(__FILE__);
return;
}
require __DIR__ . '/pagestart.php';
$robots_file = BB_ROOT . 'robots.txt';
// Обработка сохранения
if (isset($_POST['save'])) {
$robots_txt = $_POST['robots_txt'] ?? '';
if (!is_writable($robots_file) && is_file($robots_file)) {
bb_die('File robots.txt is not writable #1');
}
$bytes = file_put_contents($robots_file, $robots_txt);
if ($bytes === false) {
bb_die('Could not write robots.txt #2');
}
bb_die($lang['ROBOTS_TXT_UPDATED_SUCCESSFULLY'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_ROBOTS_TXT_CONFIG'], '<a href="admin_robots.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
}
$current_content = '';
if (is_file($robots_file)) {
$current_content = file_get_contents($robots_file);
}
$template->assign_vars([
'S_ACTION' => 'admin_robots.php',
'ROBOTS_TXT' => htmlCHR($current_content),
]);
print_page('admin_robots.tpl', 'admin');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -14,7 +14,7 @@ if (!empty($setmodules)) {
require __DIR__ . '/pagestart.php';
$sql = 'SELECT * FROM ' . BB_CONFIG;
$sql = "SELECT * FROM " . BB_CONFIG . " WHERE config_name IN('sitemap_time', 'static_sitemap')";
if (!$result = DB()->sql_query($sql)) {
bb_die('Could not query config information in admin_sitemap');
@ -39,8 +39,8 @@ if (!$result = DB()->sql_query($sql)) {
}
}
$s_mess = $lang['SITEMAP_CREATED'] . ': <b>' . bb_date($new['sitemap_time'], $bb_cfg['post_date_format']) . '</b> ' . $lang['SITEMAP_AVAILABLE'] . ': <a href="' . make_url('sitemap/sitemap.xml') . '" target="_blank">' . make_url('sitemap/sitemap.xml') . '</a>';
$message = file_exists(SITEMAP_DIR . '/sitemap.xml') ? $s_mess : $lang['SITEMAP_NOT_CREATED'];
$s_mess = $lang['SITEMAP_CREATED'] . ': <b>' . bb_date($new['sitemap_time'], config()->get('post_date_format')) . '</b> ' . $lang['SITEMAP_AVAILABLE'] . ': <a href="' . make_url('sitemap/sitemap.xml') . '" target="_blank">' . make_url('sitemap/sitemap.xml') . '</a>';
$message = is_file(SITEMAP_DIR . '/sitemap.xml') ? $s_mess : $lang['SITEMAP_NOT_CREATED'];
$template->assign_vars([
'STATIC_SITEMAP' => $new['static_sitemap'],

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -22,27 +22,29 @@ if (isset($_POST['mode']) || isset($_GET['mode'])) {
$mode = '';
}
if ($mode == 'delete' && isset($_POST['cancel'])) {
$mode = '';
}
$pathToSmilesDir = BB_ROOT . config()->get('smilies_path');
$delimeter = '=+:';
$s_hidden_fields = '';
$smiley_paks = [];
$smiley_paks = $smiley_images = [];
// Read a listing of uploaded smilies for use in the add or edit smliey code
$dir = opendir(BB_ROOT . $bb_cfg['smilies_path']);
// Read a listing of uploaded smiles
$smilesDirectory = new DirectoryIterator($pathToSmilesDir);
while ($file = @readdir($dir)) {
if (!is_dir(realpath(BB_ROOT . $bb_cfg['smilies_path'] . '/' . $file))) {
$img_size = getimagesize(BB_ROOT . $bb_cfg['smilies_path'] . '/' . $file);
if ($img_size[0] && $img_size[1]) {
$smiley_images[] = $file;
} elseif (preg_match('/.pak$/i', $file)) {
$smiley_paks[] = $file;
foreach ($smilesDirectory as $files) {
if ($files->isFile()) {
$extension = strtolower(pathinfo($files->getFilename(), PATHINFO_EXTENSION));
if (in_array($extension, ['png', 'gif'], true) && getimagesize($pathToSmilesDir . '/' . $files->getFilename())) {
$smiley_images[] = $files->getFilename();
} else if ($extension === 'pak') {
$smiley_paks[] = $files->getFilename();
}
}
}
closedir($dir);
// Select main mode
if (isset($_GET['import_pack']) || isset($_POST['import_pack'])) {
$smile_pak = (string)request_var('smile_pak', '');
@ -71,7 +73,7 @@ if (isset($_GET['import_pack']) || isset($_POST['import_pack'])) {
}
}
$fcontents = file(BB_ROOT . $bb_cfg['smilies_path'] . '/' . $smile_pak);
$fcontents = file($pathToSmilesDir . '/' . $smile_pak);
if (empty($fcontents)) {
bb_die('Could not read smiley pak file');
@ -167,26 +169,37 @@ if (isset($_GET['import_pack']) || isset($_POST['import_pack'])) {
$template->assign_vars([
'TPL_SMILE_EDIT' => true,
'SMILEY_IMG' => BB_ROOT . $bb_cfg['smilies_path'] . '/' . $smiley_images[0],
'SMILEY_IMG' => $pathToSmilesDir . '/' . $smiley_images[0],
'S_SMILEY_ACTION' => 'admin_smilies.php',
'S_HIDDEN_FIELDS' => $s_hidden_fields,
'S_FILENAME_OPTIONS' => $filename_list,
'S_SMILEY_BASEDIR' => BB_ROOT . $bb_cfg['smilies_path']
'S_SMILEY_BASEDIR' => $pathToSmilesDir
]);
} elseif ($mode != '') {
switch ($mode) {
case 'delete':
$confirmed = isset($_POST['confirm']);
$smiley_id = (!empty($_POST['id'])) ? $_POST['id'] : $_GET['id'];
$smiley_id = (int)$smiley_id;
if ($confirmed) {
$sql = 'DELETE FROM ' . BB_SMILIES . ' WHERE smilies_id = ' . $smiley_id;
$result = DB()->sql_query($sql);
if (!$result) {
bb_die('Could not delete smiley');
}
$datastore->update('smile_replacements');
$datastore->update('smile_replacements');
bb_die($lang['SMILEY_DEL_SUCCESS'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_SMILEADMIN'], '<a href="admin_smilies.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
} else {
$hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" />';
$hidden_fields .= '<input type="hidden" name="id" value="' . $smiley_id . '" />';
print_confirmation([
'FORM_ACTION' => 'admin_smilies.php',
'HIDDEN_FIELDS' => $hidden_fields,
]);
}
break;
case 'edit':
@ -217,11 +230,11 @@ if (isset($_GET['import_pack']) || isset($_POST['import_pack'])) {
'TPL_SMILE_EDIT' => true,
'SMILEY_CODE' => $smile_data['code'],
'SMILEY_EMOTICON' => $smile_data['emoticon'],
'SMILEY_IMG' => BB_ROOT . $bb_cfg['smilies_path'] . '/' . $smiley_edit_img,
'SMILEY_IMG' => $pathToSmilesDir . '/' . $smiley_edit_img,
'S_SMILEY_ACTION' => 'admin_smilies.php',
'S_HIDDEN_FIELDS' => $s_hidden_fields,
'S_FILENAME_OPTIONS' => $filename_list,
'S_SMILEY_BASEDIR' => BB_ROOT . $bb_cfg['smilies_path']
'S_SMILEY_BASEDIR' => $pathToSmilesDir
]);
break;
@ -308,7 +321,7 @@ if (isset($_GET['import_pack']) || isset($_POST['import_pack'])) {
$template->assign_block_vars('smiles', [
'ROW_CLASS' => $row_class,
'SMILEY_IMG' => BB_ROOT . $bb_cfg['smilies_path'] . '/' . $smilies[$i]['smile_url'],
'SMILEY_IMG' => $pathToSmilesDir . '/' . $smilies[$i]['smile_url'],
'CODE' => $smilies[$i]['code'],
'EMOT' => $smilies[$i]['emoticon'],

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -15,16 +15,18 @@ if (!empty($setmodules)) {
require __DIR__ . '/pagestart.php';
require INC_DIR . '/bbcode.php';
if (isset($_POST['post']) && $bb_cfg['terms'] != $_POST['message']) {
$preview = isset($_POST['preview']);
if (isset($_POST['post']) && (config()->get('terms') !== $_POST['message'])) {
bb_update_config(['terms' => $_POST['message']]);
bb_die($lang['CONFIG_UPDATED']);
bb_die($lang['TERMS_UPDATED_SUCCESSFULLY'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_TERMS_CONFIG'], '<a href="admin_terms.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
}
$template->assign_vars([
'S_ACTION' => 'admin_terms.php',
'EXT_LINK_NW' => $bb_cfg['ext_link_new_win'],
'MESSAGE' => $bb_cfg['terms'] ?: '',
'PREVIEW_HTML' => isset($_REQUEST['preview']) ? bbcode2html($_POST['message']) : '',
'EXT_LINK_NW' => config()->get('ext_link_new_win'),
'MESSAGE' => $preview ? $_POST['message'] : config()->get('terms'),
'PREVIEW_HTML' => $preview ? bbcode2html($_POST['message']) : '',
]);
print_page('admin_terms.tpl', 'admin');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -20,12 +20,17 @@ $max_forum_name_length = 50;
$yes_sign = '&radic;';
$no_sign = 'x';
$group_id = isset($_REQUEST['g']) ? (int)$_REQUEST['g'] : 0;
$user_id = isset($_REQUEST['u']) ? (int)$_REQUEST['u'] : 0;
$cat_id = isset($_REQUEST['c']) ? (int)$_REQUEST['c'] : 0;
$group_id = isset($_REQUEST[POST_GROUPS_URL]) ? (int)$_REQUEST[POST_GROUPS_URL] : 0;
$user_id = isset($_REQUEST[POST_USERS_URL]) ? (int)$_REQUEST[POST_USERS_URL] : 0;
$cat_id = isset($_REQUEST[POST_CAT_URL]) ? (int)$_REQUEST[POST_CAT_URL] : 0;
$mode = isset($_REQUEST['mode']) ? (string)$_REQUEST['mode'] : '';
$submit = isset($_REQUEST['submit']);
// Check for demo mode
if (IN_DEMO_MODE && $submit) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
$group_data = [];
$forum_auth_fields = array(
@ -82,7 +87,7 @@ if ($submit && $mode == 'user') {
\TorrentPier\Legacy\Group::delete_permissions($group_id, $user_id);
$message = $lang['AUTH_UPDATED'] . '<br /><br />';
$message .= sprintf($lang['CLICK_RETURN_USERAUTH'], '<a href="admin_ug_auth.php?mode=' . $mode . '&u=' . $user_id . '">', '</a>') . '<br /><br />';
$message .= sprintf($lang['CLICK_RETURN_USERAUTH'], '<a href="admin_ug_auth.php?mode=' . $mode . '&' . POST_USERS_URL . '=' . $user_id . '">', '</a>') . '<br /><br />';
$message .= sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
bb_die($message);
@ -98,7 +103,7 @@ if ($submit && $mode == 'user') {
\TorrentPier\Legacy\Group::delete_permissions($group_id, $user_id);
$message = $lang['AUTH_UPDATED'] . '<br /><br />';
$message .= sprintf($lang['CLICK_RETURN_USERAUTH'], '<a href="admin_ug_auth.php?mode=' . $mode . '&u=' . $user_id . '">', '</a>') . '<br /><br />';
$message .= sprintf($lang['CLICK_RETURN_USERAUTH'], '<a href="admin_ug_auth.php?mode=' . $mode . '&' . POST_USERS_URL . '=' . $user_id . '">', '</a>') . '<br /><br />';
$message .= sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
bb_die($message);
@ -126,7 +131,7 @@ if ($submit && $mode == 'user') {
$l_auth_return = ($mode == 'user') ? $lang['CLICK_RETURN_USERAUTH'] : $lang['CLICK_RETURN_GROUPAUTH'];
$message = $lang['AUTH_UPDATED'] . '<br /><br />';
$message .= sprintf($l_auth_return, '<a href="admin_ug_auth.php?mode=' . $mode . '&u=' . $user_id . '">', '</a>') . '<br /><br />';
$message .= sprintf($l_auth_return, '<a href="admin_ug_auth.php?mode=' . $mode . '&' . POST_USERS_URL . '=' . $user_id . '">', '</a>') . '<br /><br />';
$message .= sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
bb_die($message);
@ -154,7 +159,7 @@ elseif ($submit && $mode == 'group' && (!empty($_POST['auth']) && is_array($_POS
$l_auth_return = $lang['CLICK_RETURN_GROUPAUTH'];
$message = $lang['AUTH_UPDATED'] . '<br /><br />';
$message .= sprintf($l_auth_return, '<a href="admin_ug_auth.php?mode=' . $mode . '&g=' . $group_id . '">', '</a>') . '<br /><br />';
$message .= sprintf($l_auth_return, '<a href="admin_ug_auth.php?mode=' . $mode . '&' . POST_GROUPS_URL . '=' . $group_id . '">', '</a>') . '<br /><br />';
$message .= sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
bb_die($message);
@ -180,7 +185,7 @@ if ($mode == 'user' && (!empty($_POST['username']) || $user_id)) {
$datastore->update('cat_forums');
$forums = $datastore->get('cat_forums');
}
$base_url = basename(__FILE__) . "?mode=user&amp;u=$user_id";
$base_url = basename(__FILE__) . "?mode=user&amp;" . POST_USERS_URL . "=$user_id";
$ug_data = $this_userdata;
$ug_data['session_logged_in'] = 1;
@ -192,10 +197,10 @@ if ($mode == 'user' && (!empty($_POST['username']) || $user_id)) {
$template->assign_block_vars('c', array(
'CAT_ID' => $c_id,
'CAT_TITLE' => $forums['cat_title_html'][$c_id],
'CAT_HREF' => "$base_url&amp;c=$c_id",
'CAT_HREF' => "$base_url&amp;" . POST_CAT_URL . "=$c_id",
));
if (!$c =& $_REQUEST['c'] or !in_array($c, array('all', $c_id)) or empty($c_data['forums'])) {
if (!$c =& $_REQUEST[POST_CAT_URL] or !in_array($c, array('all', $c_id)) or empty($c_data['forums'])) {
continue;
}
@ -280,7 +285,7 @@ if ($mode == 'user' && (!empty($_POST['username']) || $user_id)) {
$template->assign_vars(array(
'TPL_AUTH_UG_MAIN' => true,
'USER_OR_GROUPNAME' => profile_url($this_userdata),
'USER_OR_GROUPNAME' => profile_url($this_userdata, true),
'USER_LEVEL' => $lang['USER_LEVEL'] . ' : ' . $s_user_type,
'T_USER_OR_GROUPNAME' => $lang['USERNAME'],
'T_AUTH_TITLE' => $lang['AUTH_CONTROL_USER'],
@ -299,7 +304,7 @@ if ($mode == 'user' && (!empty($_POST['username']) || $user_id)) {
$datastore->update('cat_forums');
$forums = $datastore->get('cat_forums');
}
$base_url = basename(__FILE__) . "?mode=group&amp;g=$group_id";
$base_url = basename(__FILE__) . "?mode=group&amp;" . POST_GROUPS_URL . "=$group_id";
$ug_data = array('group_id' => $group_id);
$u_access = auth(AUTH_ALL, AUTH_LIST_ALL, $ug_data);
@ -308,10 +313,10 @@ if ($mode == 'user' && (!empty($_POST['username']) || $user_id)) {
$template->assign_block_vars('c', array(
'CAT_ID' => $c_id,
'CAT_TITLE' => $forums['cat_title_html'][$c_id],
'CAT_HREF' => "$base_url&amp;c=$c_id",
'CAT_HREF' => "$base_url&amp;" . POST_CAT_URL . "=$c_id",
));
if (!($c =& $_REQUEST['c']) || !in_array($c, array('all', $c_id)) || empty($c_data['forums'])) {
if (!($c =& $_REQUEST[POST_CAT_URL]) || !in_array($c, array('all', $c_id)) || empty($c_data['forums'])) {
continue;
}
@ -376,7 +381,7 @@ if ($mode == 'user' && (!empty($_POST['username']) || $user_id)) {
$s_hidden_fields = '
<input type="hidden" name="mode" value="' . $mode . '" />
<input type="hidden" name="g" value="' . $group_id . '" />
<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />
';
$template->assign_vars(array(
@ -414,8 +419,8 @@ $template->assign_vars(array(
'YES_SIGN' => $yes_sign,
'NO_SIGN' => $no_sign,
'S_AUTH_ACTION' => 'admin_ug_auth.php',
'SELECTED_CAT' => !empty($_REQUEST['c']) ? $_REQUEST['c'] : '',
'U_ALL_FORUMS' => !empty($base_url) ? "$base_url&amp;c=all" : '',
'SELECTED_CAT' => !empty($_REQUEST[POST_CAT_URL]) ? $_REQUEST[POST_CAT_URL] : '',
'U_ALL_FORUMS' => !empty($base_url) ? "$base_url&amp;" . POST_CAT_URL . "=all" : '',
));
print_page('admin_ug_auth.tpl', 'admin');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -14,121 +14,32 @@ if (!empty($setmodules)) {
require __DIR__ . '/pagestart.php';
if (isset($_POST['submit'])) {
$user_bansql = '';
$email_bansql = '';
$ip_bansql = '';
$submit = isset($_POST['submit']);
$user_list = [];
// Check for demo mode
if (IN_DEMO_MODE && $submit) {
bb_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
if ($submit) {
// Ban action
if (!empty($_POST['username'])) {
$this_userdata = get_userdata($_POST['username'], true);
if (!$this_userdata) {
bb_die($lang['NO_USER_ID_SPECIFIED']);
if (!$this_userdata = get_userdata($_POST['username'], true)) {
bb_die($lang['NO_USER_ID_SPECIFIED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_BANADMIN'], '<a href="admin_user_ban.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
}
$user_list[] = $this_userdata['user_id'];
}
$ip_list = [];
if (isset($_POST['ban_ip'])) {
$ip_list_temp = explode(',', $_POST['ban_ip']);
foreach ($ip_list_temp as $ip) {
if (\TorrentPier\Helpers\IPHelper::isValid($ip)) {
$ip_list[] = \TorrentPier\Helpers\IPHelper::ip2long($ip);
}
}
}
$email_list = [];
if (isset($_POST['ban_email'])) {
$email_list_temp = explode(',', $_POST['ban_email']);
foreach ($email_list_temp as $i => $iValue) {
if (preg_match('/^(([a-z0-9&\'\.\-_\+])|(\*))+@(([a-z0-9\-])|(\*))+\.([a-z0-9\-]+\.)*?[a-z]+$/is', trim($email_list_temp[$i]))) {
$email_list[] = trim($email_list_temp[$i]);
}
}
}
$sql = 'SELECT * FROM ' . BB_BANLIST;
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not obtain banlist information');
}
$current_banlist = DB()->sql_fetchrowset($result);
DB()->sql_freeresult($result);
$kill_session_sql = '';
for ($i = 0, $iMax = count($user_list); $i < $iMax; $i++) {
$in_banlist = false;
for ($j = 0, $jMax = count($current_banlist); $j < $jMax; $j++) {
if ($user_list[$i] == $current_banlist[$j]['ban_userid']) {
$in_banlist = true;
}
}
if (!$in_banlist) {
$kill_session_sql .= (($kill_session_sql != '') ? ' OR ' : '') . 'session_user_id = ' . $user_list[$i];
$sql = 'INSERT INTO ' . BB_BANLIST . ' (ban_userid) VALUES (' . $user_list[$i] . ')';
if (!getBanInfo((int)$this_userdata['user_id'])) {
$sql = 'INSERT INTO ' . BB_BANLIST . ' (ban_userid) VALUES (' . $this_userdata['user_id'] . ')';
if (!DB()->sql_query($sql)) {
bb_die('Could not insert ban_userid info into database');
}
}
}
for ($i = 0, $iMax = count($ip_list); $i < $iMax; $i++) {
$in_banlist = false;
for ($j = 0, $jMax = count($current_banlist); $j < $jMax; $j++) {
if ($ip_list[$i] == $current_banlist[$j]['ban_ip']) {
$in_banlist = true;
}
}
if (!$in_banlist) {
if (preg_match('/(ff\.)|(\.ff)/is', chunk_split($ip_list[$i], 2, '.'))) {
$kill_ip_sql = "session_ip LIKE '" . str_replace('.', '', preg_replace('/(ff\.)|(\.ff)/is', '%', chunk_split($ip_list[$i], 2, '.'))) . "'";
} else {
$kill_ip_sql = "session_ip = '" . $ip_list[$i] . "'";
}
$kill_session_sql .= (($kill_session_sql != '') ? ' OR ' : '') . $kill_ip_sql;
$sql = 'INSERT INTO ' . BB_BANLIST . " (ban_ip) VALUES ('" . $ip_list[$i] . "')";
if (!DB()->sql_query($sql)) {
bb_die('Could not insert ban_ip info into database');
}
}
}
// Now we'll delete all entries from the session table
if ($kill_session_sql != '') {
$sql = 'DELETE FROM ' . BB_SESSIONS . " WHERE $kill_session_sql";
if (!DB()->sql_query($sql)) {
bb_die('Could not delete banned sessions from database');
}
}
for ($i = 0, $iMax = count($email_list); $i < $iMax; $i++) {
$in_banlist = false;
for ($j = 0, $jMax = count($current_banlist); $j < $jMax; $j++) {
if ($email_list[$i] == $current_banlist[$j]['ban_email']) {
$in_banlist = true;
}
}
if (!$in_banlist) {
$sql = 'INSERT INTO ' . BB_BANLIST . " (ban_email) VALUES ('" . DB()->escape($email_list[$i]) . "')";
if (!DB()->sql_query($sql)) {
bb_die('Could not insert ban_email info into database');
}
}
}
// Unban action
$where_sql = '';
if (isset($_POST['unban_user'])) {
if (!empty($_POST['unban_user'])) {
$user_list = $_POST['unban_user'];
for ($i = 0, $iMax = count($user_list); $i < $iMax; $i++) {
@ -136,27 +47,6 @@ if (isset($_POST['submit'])) {
$where_sql .= (($where_sql != '') ? ', ' : '') . (int)$user_list[$i];
}
}
}
if (isset($_POST['unban_ip'])) {
$ip_list = $_POST['unban_ip'];
for ($i = 0, $iMax = count($ip_list); $i < $iMax; $i++) {
if ($ip_list[$i] != -1) {
$where_sql .= (($where_sql != '') ? ', ' : '') . DB()->escape($ip_list[$i]);
}
}
}
if (isset($_POST['unban_email'])) {
$email_list = $_POST['unban_email'];
for ($i = 0, $iMax = count($email_list); $i < $iMax; $i++) {
if ($email_list[$i] != -1) {
$where_sql .= (($where_sql != '') ? ', ' : '') . DB()->escape($email_list[$i]);
}
}
}
if ($where_sql != '') {
$sql = 'DELETE FROM ' . BB_BANLIST . " WHERE ban_id IN ($where_sql)";
@ -164,81 +54,26 @@ if (isset($_POST['submit'])) {
bb_die('Could not delete ban info from database');
}
}
}
$datastore->update('ban_list');
bb_die($lang['BAN_UPDATE_SUCESSFUL'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_BANADMIN'], '<a href="admin_user_ban.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
} else {
$template->assign_vars(['S_BANLIST_ACTION' => 'admin_user_ban.php']);
$userban_count = 0;
$ipban_count = 0;
$emailban_count = 0;
$sql = 'SELECT b.ban_id, u.user_id, u.username
FROM ' . BB_BANLIST . ' b, ' . BB_USERS . ' u
WHERE u.user_id = b.ban_userid
AND b.ban_userid <> 0
AND u.user_id <> ' . GUEST_UID . '
ORDER BY u.username ASC';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not select current user_id ban list');
}
$user_list = DB()->sql_fetchrowset($result);
DB()->sql_freeresult($result);
$select_userlist = '';
for ($i = 0, $iMax = count($user_list); $i < $iMax; $i++) {
$select_userlist .= '<option value="' . $user_list[$i]['ban_id'] . '">' . $user_list[$i]['username'] . '</option>';
$userban_count++;
foreach (getBanInfo() as $ban) {
$select_userlist .= '<option value="' . $ban['ban_id'] . '">' . get_username($ban['ban_userid']) . '</option>';
}
if ($select_userlist == '') {
$select_userlist = '<option value="-1">' . $lang['NO_BANNED_USERS'] . '</option>';
}
$select_userlist = '<select name="unban_user[]" multiple size="5">' . $select_userlist . '</select>';
$sql = 'SELECT ban_id, ban_ip, ban_email FROM ' . BB_BANLIST . ' ORDER BY ban_ip';
if (!($result = DB()->sql_query($sql))) {
bb_die('Could not select current ip ban list');
}
$banlist = DB()->sql_fetchrowset($result);
DB()->sql_freeresult($result);
$select_iplist = '';
$select_emaillist = '';
for ($i = 0, $iMax = count($banlist); $i < $iMax; $i++) {
$ban_id = $banlist[$i]['ban_id'];
if (!empty($banlist[$i]['ban_ip'])) {
$ban_ip = str_replace('255', '*', \TorrentPier\Helpers\IPHelper::long2ip_extended($banlist[$i]['ban_ip']));
$select_iplist .= '<option value="' . $ban_id . '">' . $ban_ip . '</option>';
$ipban_count++;
} elseif (!empty($banlist[$i]['ban_email'])) {
$ban_email = $banlist[$i]['ban_email'];
$select_emaillist .= '<option value="' . $ban_id . '">' . $ban_email . '</option>';
$emailban_count++;
}
}
if ($select_iplist == '') {
$select_iplist = '<option value="-1">' . $lang['NO_BANNED_IP'] . '</option>';
}
if ($select_emaillist == '') {
$select_emaillist = '<option value="-1">' . $lang['NO_BANNED_EMAIL'] . '</option>';
}
$select_iplist = '<select name="unban_ip[]" multiple size="15">' . $select_iplist . '</select>';
$select_emaillist = '<select name="unban_email[]" multiple size="10">' . $select_emaillist . '</select>';
$template->assign_vars([
'U_SEARCH_USER' => './../search.php?mode=searchuser',
'S_UNBAN_USERLIST_SELECT' => $select_userlist,
'S_UNBAN_IPLIST_SELECT' => $select_iplist,
'S_UNBAN_EMAILLIST_SELECT' => $select_emaillist,
'S_BAN_ACTION' => 'admin_user_ban.php'
]);
}

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -52,8 +52,8 @@ if (!isset($_REQUEST['dosearch'])) {
}
}
$language_list = \TorrentPier\Legacy\Select::language('', 'language_type');
$timezone_list = \TorrentPier\Legacy\Select::timezone('', 'timezone_type');
$language_list = \TorrentPier\Legacy\Common\Select::language('', 'language_type');
$timezone_list = \TorrentPier\Legacy\Common\Select::timezone('', 'timezone_type');
$sql = 'SELECT f.forum_id, f.forum_name, f.forum_parent, c.cat_id, c.cat_title
FROM ( ' . BB_FORUMS . ' AS f INNER JOIN ' . BB_CATEGORIES . ' AS c ON c.cat_id = f.cat_id )
@ -64,13 +64,12 @@ if (!isset($_REQUEST['dosearch'])) {
}
$forums = [];
$last_cat_id = -1;
$forums_list = '';
if (DB()->num_rows($result) != 0) {
$template->assign_block_vars('forums_exist', []);
$last_cat_id = -1;
$forums_list = '';
while ($row = DB()->sql_fetchrow($result)) {
if ($row['cat_id'] != $last_cat_id) {
$forums_list .= '<optgroup label="' . htmlCHR($row['cat_title']) . '">';
@ -85,7 +84,7 @@ if (!isset($_REQUEST['dosearch'])) {
$lastvisited_list = '';
foreach ($lastvisited as $days) {
$lastvisited_list .= '<option value="' . $days . '">' . $days . ' ' . (($days > 1) ? $lang['DAYS'] : $lang['DAY']) . '</option>';
$lastvisited_list .= '<option value="' . $days . '">' . delta_time((TIMENOW - 86400 * $days), TIMENOW, 'days') . '</option>';
}
$template->assign_vars([
@ -253,8 +252,7 @@ if (!isset($_REQUEST['dosearch'])) {
$text = sprintf($lang['SEARCH_FOR_USERNAME'], strip_tags(htmlspecialchars(stripslashes($username))));
$username = str_replace("\*", '%', trim(strip_tags(strtolower($username))));
$username = str_replace('*', '%', trim(strip_tags(strtolower($username))));
if (str_contains($username, '%')) {
$op = 'LIKE';
} else {
@ -274,8 +272,7 @@ if (!isset($_REQUEST['dosearch'])) {
$text = sprintf($lang['SEARCH_FOR_EMAIL'], strip_tags(htmlspecialchars(stripslashes($email))));
$email = str_replace("\*", '%', trim(strip_tags(strtolower($email))));
$email = str_replace('*', '%', trim(strip_tags(strtolower($email))));
if (str_contains($email, '%')) {
$op = 'LIKE';
} else {
@ -569,8 +566,7 @@ if (!isset($_REQUEST['dosearch'])) {
$text = strip_tags(htmlspecialchars(stripslashes($userfield_value)));
$userfield_value = str_replace("\*", '%', trim(strip_tags(strtolower($userfield_value))));
$userfield_value = str_replace('*', '%', trim(strip_tags(strtolower($userfield_value))));
if (str_contains($userfield_value, '%')) {
$op = 'LIKE';
} else {
@ -635,7 +631,7 @@ if (!isset($_REQUEST['dosearch'])) {
switch ($lastvisited_type) {
case 'in':
$text = sprintf($lang['SEARCH_FOR_LASTVISITED_INTHELAST'], $lastvisited_days, (($lastvisited_days > 1) ? $lang['DAYS'] : $lang['DAY']));
$text = sprintf($lang['SEARCH_FOR_LASTVISITED_INTHELAST'], delta_time((TIMENOW - 86400 * $lastvisited_days), TIMENOW, 'days'));
$total_sql .= 'SELECT COUNT(user_id) AS total
FROM ' . BB_USERS . "
@ -646,7 +642,7 @@ if (!isset($_REQUEST['dosearch'])) {
AND u.user_id <> " . GUEST_UID;
break;
case 'after':
$text = sprintf($lang['SEARCH_FOR_LASTVISITED_AFTERTHELAST'], $lastvisited_days, (($lastvisited_days > 1) ? $lang['DAYS'] : $lang['DAY']));
$text = sprintf($lang['SEARCH_FOR_LASTVISITED_AFTERTHELAST'], delta_time((TIMENOW - 86400 * $lastvisited_days), TIMENOW, 'days'));
$total_sql .= 'SELECT COUNT(user_id) AS total
FROM ' . BB_USERS . "
@ -845,10 +841,10 @@ if (!isset($_REQUEST['dosearch'])) {
if ($page == 1) {
$offset = 0;
} else {
$offset = (($page - 1) * $bb_cfg['topics_per_page']);
$offset = (($page - 1) * config()->get('topics_per_page'));
}
$limit = "LIMIT $offset, " . $bb_cfg['topics_per_page'];
$limit = "LIMIT $offset, " . config()->get('topics_per_page');
$select_sql .= " $limit";
@ -863,7 +859,7 @@ if (!isset($_REQUEST['dosearch'])) {
bb_die($lang['SEARCH_NO_RESULTS']);
}
}
$num_pages = ceil($total_pages['total'] / $bb_cfg['topics_per_page']);
$num_pages = ceil($total_pages['total'] / config()->get('topics_per_page'));
$pagination = '';
@ -923,7 +919,7 @@ if (!isset($_REQUEST['dosearch'])) {
$template->assign_block_vars('userrow', [
'ROW_CLASS' => $row_class,
'USER' => profile_url($rowset[$i]),
'USER' => profile_url($rowset[$i], true),
'EMAIL' => $rowset[$i]['user_email'],
'JOINDATE' => bb_date($rowset[$i]['user_regdate']),
'LASTVISIT' => $rowset[$i]['user_lastvisit'] ? bb_date($rowset[$i]['user_lastvisit']) : $lang['NEVER'],

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -14,8 +14,8 @@ if (!empty($setmodules)) {
require __DIR__ . '/pagestart.php';
if (!$bb_cfg['use_word_censor']) {
bb_die('Word censor disabled <br /><br /> ($bb_cfg[\'use_word_censor\'] in config.php)');
if (!config()->get('use_word_censor')) {
bb_die('Word censor disabled <br /><br /> (use_word_censor in config.php)');
}
$mode = request_var('mode', '');
@ -80,7 +80,8 @@ if ($mode != '') {
bb_die('Could not insert data into words table');
}
CACHE('bb_cache')->rm('censored');
$datastore->update('censor');
censor()->reload(); // Reload the singleton instance with updated words
$message .= '<br /><br />' . sprintf($lang['CLICK_RETURN_WORDADMIN'], '<a href="admin_words.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
bb_die($message);
@ -94,7 +95,8 @@ if ($mode != '') {
bb_die('Could not remove data from words table');
}
CACHE('bb_cache')->rm('censored');
$datastore->update('censor');
censor()->reload(); // Reload the singleton instance with updated words
bb_die($lang['WORD_REMOVED'] . '<br /><br />' . sprintf($lang['CLICK_RETURN_WORDADMIN'], '<a href="admin_words.php">', '</a>') . '<br /><br />' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>'));
} else {

View file

@ -2,13 +2,25 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
require __DIR__ . '/pagestart.php';
// Statistics
if (!$stats = $datastore->get('stats')) {
$datastore->update('stats');
$stats = $datastore->get('stats');
}
// Check for updates
if (!$update_data = $datastore->get('check_updates')) {
$datastore->update('check_updates');
$update_data = $datastore->get('check_updates');
}
// Generate relevant output
if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
$module = [];
@ -66,16 +78,28 @@ if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
} elseif (isset($_GET['pane']) && $_GET['pane'] == 'right') {
$template->assign_vars([
'TPL_ADMIN_MAIN' => true,
'ADMIN_LOCK' => (bool)$bb_cfg['board_disable'],
'ADMIN_LOCK_CRON' => file_exists(BB_DISABLED),
'ADMIN_LOCK' => (bool)config()->get('board_disable'),
'ADMIN_LOCK_CRON' => is_file(BB_DISABLED),
]);
// Check for updates
if (isset($update_data['available_update'])) {
$template->assign_block_vars('updater', [
'UPDATE_AVAILABLE' => $update_data['available_update'],
'NEW_VERSION_NUMBER' => $update_data['latest_version'],
'NEW_VERSION_SIZE' => $update_data['latest_version_size'],
'NEW_VERSION_DL_LINK' => $update_data['latest_version_dl_link'],
'NEW_VERSION_LINK' => $update_data['latest_version_link'],
'NEW_VERSION_HASH' => $update_data['latest_version_checksum']
]);
}
// Get forum statistics
$total_posts = get_db_stat('postcount');
$total_users = get_db_stat('usercount');
$total_topics = get_db_stat('topiccount');
$start_date = bb_date($bb_cfg['board_startdate']);
$boarddays = (TIMENOW - $bb_cfg['board_startdate']) / 86400;
$total_posts = $stats['postcount'];
$total_topics = $stats['topiccount'];
$total_users = $stats['usercount'];
$start_date = bb_date(config()->get('board_startdate'));
$boarddays = (TIMENOW - config()->get('board_startdate')) / 86400;
$posts_per_day = sprintf('%.2f', $total_posts / $boarddays);
$topics_per_day = sprintf('%.2f', $total_topics / $boarddays);
@ -83,10 +107,10 @@ if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
$avatar_dir_size = 0;
if ($avatar_dir = opendir($bb_cfg['avatars']['upload_path'])) {
if ($avatar_dir = opendir(config()->get('avatars.upload_path'))) {
while ($file = readdir($avatar_dir)) {
if ($file != '.' && $file != '..') {
$avatar_dir_size += @filesize($bb_cfg['avatars']['upload_path'] . $file);
$avatar_dir_size += @filesize(config()->get('avatars.upload_path') . $file);
}
}
closedir($avatar_dir);
@ -159,11 +183,11 @@ if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
$template->assign_block_vars('reg_user_row', [
'ROW_CLASS' => $row_class,
'USER' => profile_url($onlinerow_reg[$i]),
'STARTED' => bb_date($onlinerow_reg[$i]['session_start'], 'H:i', false),
'LASTUPDATE' => bb_date($onlinerow_reg[$i]['user_session_time'], 'H:i', false),
'USER' => profile_url($onlinerow_reg[$i], true),
'STARTED' => bb_date($onlinerow_reg[$i]['session_start'], 'd-M-Y H:i', false),
'LASTUPDATE' => bb_date($onlinerow_reg[$i]['user_session_time'], 'd-M-Y H:i', false),
'IP_ADDRESS' => $reg_ip,
'U_WHOIS_IP' => $bb_cfg['whois_info'] . $reg_ip,
'U_WHOIS_IP' => config()->get('whois_info') . $reg_ip,
]);
}
}
@ -179,10 +203,10 @@ if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
$template->assign_block_vars('guest_user_row', [
'ROW_CLASS' => $row_class,
'STARTED' => bb_date($onlinerow_guest[$i]['session_start'], 'H:i', false),
'LASTUPDATE' => bb_date($onlinerow_guest[$i]['session_time'], 'H:i', false),
'STARTED' => bb_date($onlinerow_guest[$i]['session_start'], 'd-M-Y H:i', false),
'LASTUPDATE' => bb_date($onlinerow_guest[$i]['session_time'], 'd-M-Y H:i', false),
'IP_ADDRESS' => $guest_ip,
'U_WHOIS_IP' => $bb_cfg['whois_info'] . $guest_ip,
'U_WHOIS_IP' => config()->get('whois_info') . $guest_ip,
]);
}
}
@ -194,7 +218,7 @@ if (isset($_GET['pane']) && $_GET['pane'] == 'left') {
} else {
// Generate frameset
$template->assign_vars([
'CONTENT_ENCODING' => $bb_cfg['charset'],
'CONTENT_ENCODING' => DEFAULT_CHARSET,
'TPL_ADMIN_FRAMESET' => true,
]);
send_no_cache_headers();

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -20,7 +20,7 @@ if (!IS_ADMIN) {
$sql[] = 'SELECT count(*) FROM `' . BB_USERS . '` WHERE `user_lastvisit` < UNIX_TIMESTAMP()-2592000 AND user_id NOT IN (' . EXCLUDED_USERS . ')';
$sql[] = 'SELECT count(*) FROM `' . BB_USERS . '` WHERE `user_lastvisit` < UNIX_TIMESTAMP()-7776000 AND user_id NOT IN (' . EXCLUDED_USERS . ')';
$sql[] = 'SELECT round(avg(size)/1048576) FROM `' . BB_BT_TORRENTS . '`';
$sql[] = 'SELECT round(avg(size)) FROM `' . BB_BT_TORRENTS . '`';
$sql[] = 'SELECT count(*) FROM `' . BB_BT_TORRENTS . '`';
$sql[] = 'SELECT count(distinct(topic_id)) FROM `' . BB_BT_TRACKER_SNAP . '` WHERE seeders > 0';
$sql[] = 'SELECT count(distinct(topic_id)) FROM `' . BB_BT_TRACKER_SNAP . '` WHERE seeders > 5';
@ -31,8 +31,10 @@ echo '<html><body><head></head>';
echo '<br /><br /><table border="1" cellspacing="0" cellpadding="6" align="center">';
foreach ($sql as $i => $query) {
$row = mysqli_fetch_row(DB()->query($query));
echo "<tr><td>{$lang['TR_STATS'][$i]}</td><td><b>{$row[0]}</b></td>";
$result = DB()->fetch_row($query);
$row = array_values($result)[0]; // Get first column value
$row = ($i == 2) ? humn_size($row) : $row;
echo "<tr><td>{$lang['TR_STATS'][$i]}</td><td><b>$row</b></td>";
}
echo '</table>';

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -21,7 +21,7 @@ if (!IS_ADMIN) {
$peers_in_last_minutes = [30, 15, 5, 1];
$peers_in_last_sec_limit = 300;
$announce_interval = (int)$bb_cfg['announce_interval'];
$announce_interval = (int)config()->get('announce_interval');
$stat = [];
define('TMP_TRACKER_TABLE', 'tmp_tracker');
@ -52,7 +52,7 @@ $stat += DB()->fetch_row('SELECT COUNT(DISTINCT user_id) AS u_bt_active FROM ' .
// All bt-users
$stat += DB()->fetch_row('SELECT COUNT(*) AS u_bt_all FROM ' . BB_BT_USERS);
// All bb-users
$stat += DB()->fetch_row('SELECT COUNT(*) AS u_bb_all FROM ' . BB_USERS);
$stat += DB()->fetch_row('SELECT COUNT(*) AS u_bb_all FROM ' . BB_USERS . ' WHERE user_id != ' . BOT_UID);
// Active torrents
$stat += DB()->fetch_row('SELECT COUNT(DISTINCT topic_id) AS tor_active FROM ' . TMP_TRACKER_TABLE);
// With seeder
@ -70,7 +70,7 @@ foreach ($peers_in_last_minutes as $t) {
}
// Last xx seconds
$peers_in_last_sec = [];
$rowset = DB()->fetch_rowset('SELECT COUNT(*) AS peers FROM ' . TMP_TRACKER_TABLE . ' GROUP BY update_time ORDER BY update_time DESC LIMIT ' . $peers_in_last_sec_limit);
$rowset = DB()->fetch_rowset('SELECT COUNT(*) AS peers FROM ' . TMP_TRACKER_TABLE . ' ORDER BY update_time DESC LIMIT ' . $peers_in_last_sec_limit);
foreach ($rowset as $cnt => $row) {
$peers_in_last_sec[] = sprintf('%3s', $row['peers']) . (($cnt && !(++$cnt % 15)) ? " \n" : '');
}
@ -94,8 +94,7 @@ if ($client_full || !$stats_cache = CACHE('tr_cache')->get('tracker_clients_stat
$clientString = $client_full ? substr($row['client'], 0, $client_full) : substr($row['client'], 0, 3);
if (!isset($clients[$clientString])) {
$clients[$clientString] = 1;
}
else {
} else {
$clients[$clientString]++;
}
$client_count++;
@ -117,7 +116,7 @@ if ($client_full || !$stats_cache = CACHE('tr_cache')->get('tracker_clients_stat
$n = 1;
foreach (array_slice($clients_percentage, 0, $numwant) as $client => $value) {
$client_list .= ($client_full) ? ("$client => $value<br>") : "$n. " . get_user_torrent_client($client) . " $value<br>";
$client_list .= ($client_full) ? ("$client => $value<br/>") : "$n. " . get_user_torrent_client($client) . " $value<br/>";
$n++;
}
@ -165,10 +164,10 @@ echo "\n
<td align=center>
$client_list
<br>
<br/>
\n";
echo (count($clients_percentage) > $numwant) ? ('<a href="' . 'tracker.php?client_numwant=' . ($numwant + 100) . '">' . 'Show more' . '</a><br>') : '';
echo $client_full ? '<br><b>Get more length and numbers via modifying the parameters in the url<b>' : (!empty($client_list) ? '<a href="tracker.php?client_length=6&client_numwant=10">Peer_ids with more length (version debugging)</a>': '');
echo (count($clients_percentage) > $numwant) ? ('<a href="' . 'tracker.php?client_numwant=' . ($numwant + 100) . '">' . 'Show more' . '</a><br/>') : '';
echo $client_full ? '<br/><b>Get more length and numbers via modifying the parameters in the url<b>' : (!empty($client_list) ? '<a href="tracker.php?client_length=6&client_numwant=10">Peer_ids with more length (version debugging)</a>' : '');
echo '</td></tr>';
echo '</table>';
echo !$client_full ? '<p style = "text-align:right;">Simple stats for clients are being cached for one hour.</p>' : '';

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -41,5 +41,5 @@ $ajax->exec();
/**
* @deprecated ajax_common
* Dirty class removed from here since 2.2.0
* To add new actions see at src/Legacy/Ajax.php
* To add new actions see at src/Ajax.php
*/

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,15 +11,15 @@ define('IN_TRACKER', true);
define('BB_ROOT', './../');
require dirname(__DIR__) . '/common.php';
global $bb_cfg;
if (empty($_SERVER['HTTP_USER_AGENT'])) {
// Check User-Agent for existence
$userAgent = (string)$_SERVER['HTTP_USER_AGENT'];
if (empty($userAgent)) {
header('Location: http://127.0.0.1', true, 301);
die;
}
$announce_interval = $bb_cfg['announce_interval'];
$passkey_key = $bb_cfg['passkey_key'];
$announce_interval = config()->get('announce_interval');
$passkey_key = config()->get('passkey_key');
// Recover info_hash
if (isset($_GET['?info_hash']) && !isset($_GET['info_hash'])) {
@ -36,7 +36,6 @@ if (!isset($_GET[$passkey_key]) || !is_string($_GET[$passkey_key])) {
}
// Input var names
// String
$input_vars_str = ['info_hash', 'peer_id', 'event', $passkey_key];
// Numeric
@ -66,10 +65,26 @@ if (strlen($peer_id) !== 20) {
}
// Check for client ban
if ($bb_cfg['client_ban']['enabled']) {
foreach ($bb_cfg['client_ban']['clients'] as $clientId => $reason) {
if (config()->get('client_ban.enabled')) {
$targetClient = [];
foreach (config()->get('client_ban.clients') as $clientId => $banReason) {
if (str_starts_with($peer_id, $clientId)) {
msg_die($reason);
$targetClient = [
'peer_id' => $clientId,
'ban_reason' => $banReason
];
break;
}
}
if (config()->get('client_ban.only_allow_mode')) {
if (empty($targetClient['peer_id'])) {
msg_die('Your BitTorrent client has been banned!');
}
} else {
if (!empty($targetClient['peer_id'])) {
msg_die(empty($targetClient['ban_reason']) ? 'Your BitTorrent client has been banned!' : $targetClient['ban_reason']);
}
}
}
@ -79,46 +94,88 @@ if (!isset($info_hash)) {
msg_die('info_hash was not provided');
}
/**
* Verify event
*
* @see https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/c64275f0b5dcb3c4c845d5204871adfe24f359d6/app/Http/Controllers/AnnounceController.php#L275
*/
$event = strtolower((string)$event);
if (!in_array($event, ['started', 'completed', 'stopped', 'paused', ''])) {
msg_die('Invalid event: ' . $event);
}
// Store info hash in hex format
$info_hash_hex = bin2hex($info_hash);
// Store peer id
$peer_id_sql = rtrim(DB()->escape(preg_replace('/[^a-zA-Z0-9\-\_]/', '', $peer_id)), ' ');
$peer_id_sql = preg_replace('/[^a-zA-Z0-9\-\_]/', '', $peer_id);
// Stopped event
$stopped = ($event === 'stopped');
// Check info_hash length
if (strlen($info_hash) !== 20) {
msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, 'UTF8') ? $info_hash : $info_hash_hex));
msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
}
if (!isset($port) || $port < 0 || $port > 0xFFFF) {
/**
* Block system-reserved ports since 99.9% of the time they're fake and thus not connectable
* Some clients will send port of 0 on 'stopped' events. Let them through as they won't receive peers anyway.
*
* @see https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/c64275f0b5dcb3c4c845d5204871adfe24f359d6/app/Http/Controllers/AnnounceController.php#L284
*/
if (
!isset($port)
|| !is_numeric($port)
|| ($port < 1024 && !$stopped)
|| $port > 0xFFFF
|| (!empty(config()->get('disallowed_ports')) && in_array($port, config()->get('disallowed_ports')))
) {
msg_die('Invalid port: ' . $port);
}
if (!isset($uploaded) || $uploaded < 0) {
if (!isset($uploaded) || !is_numeric($uploaded) || $uploaded < 0) {
msg_die('Invalid uploaded value: ' . $uploaded);
}
if (!isset($downloaded) || $downloaded < 0) {
if (!isset($downloaded) || !is_numeric($downloaded) || $downloaded < 0) {
msg_die('Invalid downloaded value: ' . $downloaded);
}
if (!isset($left) || $left < 0) {
if (!isset($left) || !is_numeric($left) || $left < 0) {
msg_die('Invalid left value: ' . $left);
}
/**
* Check User-Agent length
*
* @see https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/c64275f0b5dcb3c4c845d5204871adfe24f359d6/app/Http/Controllers/AnnounceController.php#L177
*/
if (strlen($userAgent) > 64) {
msg_die('User-Agent must be less than 64 characters long');
}
/**
* Block Browser by checking the User-Agent
*
* @see https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/c64275f0b5dcb3c4c845d5204871adfe24f359d6/app/Http/Controllers/AnnounceController.php#L182
*/
if (preg_match('/(Mozilla|Browser|Chrome|Safari|AppleWebKit|Opera|Links|Lynx|Bot|Unknown)/i', $userAgent)) {
msg_die('Browser disallowed');
}
// IP
$ip = $_SERVER['REMOTE_ADDR'];
if (!$bb_cfg['ignore_reported_ip'] && isset($_GET['ip']) && $ip !== $_GET['ip']) {
if (!$bb_cfg['verify_reported_ip']) {
$ip = $_GET['ip'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
foreach ($matches[0] as $x_ip) {
// 'ip' query handling
if (!config()->get('ignore_reported_ip') && isset($_GET['ip']) && $ip !== $_GET['ip']) {
if (!config()->get('verify_reported_ip') && isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$x_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
if ($x_ip === $_GET['ip']) {
if (!$bb_cfg['allow_internal_ip'] && preg_match("#(127\.([0-9]{1,3}\.){2}[0-9]{1,3}|10\.([0-9]{1,3}\.){2}[0-9]{1,3}|172\.[123][0-9]\.[0-9]{1,3}\.[0-9]{1,3}|192\.168\.[0-9]{1,3}\.[0-9]{1,3})#", $x_ip)) {
break;
}
$ip = $x_ip;
break;
$filteredIp = filter_var($x_ip, FILTER_VALIDATE_IP);
if ($filteredIp !== false && (config()->get('allow_internal_ip') || !filter_var($filteredIp, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE))) {
$ip = $filteredIp;
}
}
}
@ -144,9 +201,6 @@ if ($ip_version === 'ipv6') {
// Peer unique id
$peer_hash = hash('xxh128', $passkey . $info_hash_hex . $port);
// Events
$stopped = ($event === 'stopped');
// Set seeder & complete
$complete = $seeder = ($left == 0) ? 1 : 0;
@ -182,17 +236,20 @@ if ($lp_info) {
$hybrid_unrecord = $lp_info['hybrid_unrecord'] ?? false;
} else {
$info_hash_sql = rtrim(DB()->escape($info_hash), ' ');
/**
* Currently torrent clients send truncated v2 hashes (the design raises questions).
* https://github.com/bittorrent/bittorrent.org/issues/145#issuecomment-1720040343
* @see https://github.com/bittorrent/bittorrent.org/issues/145#issuecomment-1720040343
*/
$info_hash_where = "WHERE tor.info_hash = '$info_hash_sql' OR SUBSTRING(tor.info_hash_v2, 1, 20) = '$info_hash_sql'";
$passkey_sql = DB()->escape($passkey);
$sql = "
SELECT tor.topic_id, tor.poster_id, tor.tor_type, tor.info_hash, tor.info_hash_v2, u.*
SELECT tor.topic_id, tor.poster_id, tor.tor_type, tor.tor_status, tor.info_hash, tor.info_hash_v2, bt.*, u.user_level
FROM " . BB_BT_TORRENTS . " tor
LEFT JOIN " . BB_BT_USERS . " u ON u.auth_key = '$passkey_sql'
LEFT JOIN " . BB_BT_USERS . " bt ON bt.auth_key = '$passkey_sql'
LEFT JOIN " . BB_USERS . " u ON u.user_id = bt.user_id
$info_hash_where
LIMIT 1
";
@ -200,7 +257,7 @@ if ($lp_info) {
// Verify if torrent registered on tracker and user authorized
if (empty($row['topic_id'])) {
msg_die('Torrent not registered, info_hash = ' . $info_hash_hex);
msg_die('Torrent not registered, info_hash = ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
}
if (empty($row['user_id'])) {
msg_die('Please LOG IN and RE-DOWNLOAD this torrent (user not found)');
@ -208,27 +265,47 @@ if ($lp_info) {
// Assign variables
$user_id = $row['user_id'];
define('IS_GUEST', (int)$user_id === GUEST_UID);
define('IS_ADMIN', !IS_GUEST && (int)$row['user_level'] === ADMIN);
define('IS_MOD', !IS_GUEST && (int)$row['user_level'] === MOD);
define('IS_GROUP_MEMBER', !IS_GUEST && (int)$row['user_level'] === GROUP_MEMBER);
define('IS_USER', !IS_GUEST && (int)$row['user_level'] === USER);
define('IS_SUPER_ADMIN', IS_ADMIN && isset(config()->get('super_admins')[$user_id]));
define('IS_AM', IS_ADMIN || IS_MOD);
$topic_id = $row['topic_id'];
$releaser = (int)($user_id == $row['poster_id']);
$tor_type = $row['tor_type'];
$tor_status = $row['tor_status'];
// Check tor status
if (!IS_AM && isset(config()->get('tor_frozen')[$tor_status]) && !(isset(config()->get('tor_frozen_author_download')[$tor_status]) && $releaser)) {
msg_die('Torrent frozen and cannot be downloaded');
}
// Check hybrid status
if (!empty($row['info_hash']) && !empty($row['info_hash_v2'])) {
if ($info_hash !== $row['info_hash']) { // Change this to substr($row['info_hash_v2'], 0, 20) in the future for updating statistics, in case of v2 torrents being prioritized.
$stat_protocol = match ((int)config()->get('tracker.hybrid_stat_protocol')) {
2 => substr($row['info_hash_v2'], 0, 20),
default => $row['info_hash'] // 1
};
if ($info_hash !== $stat_protocol) {
$hybrid_unrecord = true; // This allows us to announce only for one info-hash
}
}
// Ratio limits
if ((TR_RATING_LIMITS || $bb_cfg['tracker']['limit_concurrent_ips']) && !$stopped) {
$user_ratio = ($row['u_down_total'] && $row['u_down_total'] > MIN_DL_FOR_RATIO) ? ($row['u_up_total'] + $row['u_up_release'] + $row['u_up_bonus']) / $row['u_down_total'] : 1;
if ((RATIO_ENABLED || config()->get('tracker.limit_concurrent_ips')) && !$stopped) {
$user_ratio = get_bt_ratio($row);
if ($user_ratio === null) {
$user_ratio = 1;
}
$rating_msg = '';
if (!$seeder) {
foreach ($bb_cfg['rating'] as $ratio => $limit) {
foreach (config()->get('rating') as $ratio => $limit) {
if ($user_ratio < $ratio) {
$bb_cfg['tracker']['limit_active_tor'] = 1;
$bb_cfg['tracker']['limit_leech_count'] = $limit;
config()->set('tracker.limit_active_tor', 1);
config()->set('tracker.limit_leech_count', $limit);
$rating_msg = " (ratio < $ratio)";
break;
}
@ -236,29 +313,29 @@ if ($lp_info) {
}
// Limit active torrents
if (!isset($bb_cfg['unlimited_users'][$user_id]) && $bb_cfg['tracker']['limit_active_tor'] && (($bb_cfg['tracker']['limit_seed_count'] && $seeder) || ($bb_cfg['tracker']['limit_leech_count'] && !$seeder))) {
if (!isset(config()->get('unlimited_users')[$user_id]) && config()->get('tracker.limit_active_tor') && ((config()->get('tracker.limit_seed_count') && $seeder) || (config()->get('tracker.limit_leech_count') && !$seeder))) {
$sql = "SELECT COUNT(DISTINCT topic_id) AS active_torrents
FROM " . BB_BT_TRACKER . "
WHERE user_id = $user_id
AND seeder = $seeder
AND topic_id != $topic_id";
if (!$seeder && $bb_cfg['tracker']['leech_expire_factor'] && $user_ratio < 0.5) {
$sql .= " AND update_time > " . (TIMENOW - 60 * $bb_cfg['tracker']['leech_expire_factor']);
if (!$seeder && config()->get('tracker.leech_expire_factor') && $user_ratio < 0.5) {
$sql .= " AND update_time > " . (TIMENOW - 60 * config()->get('tracker.leech_expire_factor'));
}
$sql .= " GROUP BY user_id";
if ($row = DB()->fetch_row($sql)) {
if ($seeder && $bb_cfg['tracker']['limit_seed_count'] && $row['active_torrents'] >= $bb_cfg['tracker']['limit_seed_count']) {
msg_die('Only ' . $bb_cfg['tracker']['limit_seed_count'] . ' torrent(s) allowed for seeding');
} elseif (!$seeder && $bb_cfg['tracker']['limit_leech_count'] && $row['active_torrents'] >= $bb_cfg['tracker']['limit_leech_count']) {
msg_die('Only ' . $bb_cfg['tracker']['limit_leech_count'] . ' torrent(s) allowed for leeching' . $rating_msg);
if ($seeder && config()->get('tracker.limit_seed_count') && $row['active_torrents'] >= config()->get('tracker.limit_seed_count')) {
msg_die('Only ' . config()->get('tracker.limit_seed_count') . ' torrent(s) allowed for seeding');
} elseif (!$seeder && config()->get('tracker.limit_leech_count') && $row['active_torrents'] >= config()->get('tracker.limit_leech_count')) {
msg_die('Only ' . config()->get('tracker.limit_leech_count') . ' torrent(s) allowed for leeching' . $rating_msg);
}
}
}
// Limit concurrent IPs
if ($bb_cfg['tracker']['limit_concurrent_ips'] && (($bb_cfg['tracker']['limit_seed_ips'] && $seeder) || ($bb_cfg['tracker']['limit_leech_ips'] && !$seeder))) {
if (config()->get('tracker.limit_concurrent_ips') && ((config()->get('tracker.limit_seed_ips') && $seeder) || (config()->get('tracker.limit_leech_ips') && !$seeder))) {
$sql = "SELECT COUNT(DISTINCT ip) AS ips
FROM " . BB_BT_TRACKER . "
WHERE topic_id = $topic_id
@ -266,16 +343,16 @@ if ($lp_info) {
AND seeder = $seeder
AND $ip_version != '$ip_sql'";
if (!$seeder && $bb_cfg['tracker']['leech_expire_factor']) {
$sql .= " AND update_time > " . (TIMENOW - 60 * $bb_cfg['tracker']['leech_expire_factor']);
if (!$seeder && config()->get('tracker.leech_expire_factor')) {
$sql .= " AND update_time > " . (TIMENOW - 60 * config()->get('tracker.leech_expire_factor'));
}
$sql .= " GROUP BY topic_id";
if ($row = DB()->fetch_row($sql)) {
if ($seeder && $bb_cfg['tracker']['limit_seed_ips'] && $row['ips'] >= $bb_cfg['tracker']['limit_seed_ips']) {
msg_die('You can seed only from ' . $bb_cfg['tracker']['limit_seed_ips'] . " IP's");
} elseif (!$seeder && $bb_cfg['tracker']['limit_leech_ips'] && $row['ips'] >= $bb_cfg['tracker']['limit_leech_ips']) {
msg_die('You can leech only from ' . $bb_cfg['tracker']['limit_leech_ips'] . " IP's");
if ($seeder && config()->get('tracker.limit_seed_ips') && $row['ips'] >= config()->get('tracker.limit_seed_ips')) {
msg_die('You can seed only from ' . config()->get('tracker.limit_seed_ips') . " IP's");
} elseif (!$seeder && config()->get('tracker.limit_leech_ips') && $row['ips'] >= config()->get('tracker.limit_leech_ips')) {
msg_die('You can leech only from ' . config()->get('tracker.limit_leech_ips') . " IP's");
}
}
}
@ -299,7 +376,7 @@ $up_add = ($lp_info && $uploaded > $lp_info['uploaded']) ? $uploaded - $lp_info[
$down_add = ($lp_info && $downloaded > $lp_info['downloaded']) ? $downloaded - $lp_info['downloaded'] : 0;
// Gold/Silver releases
if ($bb_cfg['tracker']['gold_silver_enabled'] && $down_add) {
if (config()->get('tracker.gold_silver_enabled') && $down_add) {
if ($tor_type == TOR_TYPE_GOLD) {
$down_add = 0;
} // Silver releases
@ -309,7 +386,7 @@ if ($bb_cfg['tracker']['gold_silver_enabled'] && $down_add) {
}
// Freeleech
if ($bb_cfg['tracker']['freeleech'] && $down_add) {
if (config()->get('tracker.freeleech') && $down_add) {
$down_add = 0;
}
@ -349,7 +426,6 @@ if ($lp_info && empty($hybrid_unrecord)) {
}
if ((!$lp_info || !$peer_info_updated) && !$stopped && empty($hybrid_unrecord)) {
$columns = "peer_hash, topic_id, user_id, $ip_version, port, seeder, releaser, tor_type, uploaded, downloaded, remain, speed_up, speed_down, up_add, down_add, update_time, complete, peer_id";
$values = "'$peer_hash', $topic_id, $user_id, '$ip_sql', $port, $seeder, $releaser, $tor_type, $uploaded, $downloaded, $left, $speed_up, $speed_down, $up_add, $down_add, $update_time, $complete, '$peer_id_sql'";
@ -388,8 +464,8 @@ $output = CACHE('tr_cache')->get(PEERS_LIST_PREFIX . $topic_id);
if (!$output) {
// Retrieve peers
$numwant = (int)$bb_cfg['tracker']['numwant'];
$compact_mode = ($bb_cfg['tracker']['compact_mode'] || !empty($compact));
$numwant = (int)config()->get('tracker.numwant');
$compact_mode = (config()->get('tracker.compact_mode') || !empty($compact));
$rowset = DB()->fetch_rowset("
SELECT ip, ipv6, port
@ -404,7 +480,6 @@ if (!$output) {
}
if ($compact_mode) {
$peers = '';
$peers6 = '';
@ -435,7 +510,7 @@ if (!$output) {
$seeders = $leechers = $client_completed = 0;
if ($bb_cfg['tracker']['scrape']) {
if (config()->get('tracker.scrape')) {
$row = DB()->fetch_row("
SELECT seeders, leechers, completed
FROM " . BB_BT_TRACKER_SNAP . "
@ -450,7 +525,6 @@ if (!$output) {
$output = [
'interval' => (int)$announce_interval,
'min interval' => (int)$announce_interval,
'complete' => (int)$seeders,
'incomplete' => (int)$leechers,
'downloaded' => (int)$client_completed,

View file

@ -1 +0,0 @@
Require all denied

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,11 +11,9 @@ if (!defined('IN_TRACKER')) {
die(basename(__FILE__));
}
global $bb_cfg;
// Exit if tracker is disabled
if ($bb_cfg['tracker']['bt_off']) {
msg_die($bb_cfg['tracker']['bt_off_reason']);
if (config()->get('tracker.bt_off')) {
msg_die(config()->get('tracker.bt_off_reason'));
}
//
@ -63,6 +61,7 @@ function dummy_exit($interval = 1800, $cache_dict = [])
$output = [
'interval' => (int)$interval,
'peers' => (string)DUMMY_PEER,
'external ip' => inet_pton($_SERVER['REMOTE_ADDR']),
];
if (!empty($cache_dict)) {

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,9 +11,7 @@ define('IN_TRACKER', true);
define('BB_ROOT', './../');
require dirname(__DIR__) . '/common.php';
global $bb_cfg;
if (!$bb_cfg['tracker']['scrape']) {
if (!config()->get('tracker.scrape')) {
msg_die('Please disable SCRAPE!');
}
@ -32,15 +30,18 @@ if (!isset($info_hash)) {
// Store info hash in hex format
$info_hash_hex = bin2hex($info_hash);
// Handle multiple hashes
// Check info_hash length
if (strlen($info_hash) !== 20) {
msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
}
// Handle multiple hashes
preg_match_all('/info_hash=([^&]*)/i', $_SERVER['QUERY_STRING'], $info_hash_array);
$torrents = [];
$info_hashes = [];
foreach ($info_hash_array[1] as $hash) {
$decoded_hash = urldecode($hash);
if (strlen($decoded_hash) !== 20) {
@ -57,18 +58,16 @@ foreach ($info_hash_array[1] as $hash) {
$info_hash_count = count($info_hashes);
if (!empty($info_hash_count)) {
if ($info_hash_count > $bb_cfg['max_scrapes']) {
$info_hashes = array_slice($info_hashes, 0, $bb_cfg['max_scrapes']);
if ($info_hash_count > config()->get('max_scrapes')) {
$info_hashes = array_slice($info_hashes, 0, config()->get('max_scrapes'));
}
$info_hashes_sql = implode('\', \'', $info_hashes);
/**
* Currently torrent clients send truncated v2 hashes (the design raises questions).
* https://github.com/bittorrent/bittorrent.org/issues/145#issuecomment-1720040343
* @see https://github.com/bittorrent/bittorrent.org/issues/145#issuecomment-1720040343
*/
$info_hash_where = "tor.info_hash IN ('$info_hashes_sql') OR SUBSTRING(tor.info_hash_v2, 1, 20) IN ('$info_hashes_sql')";
$sql = "
@ -96,8 +95,9 @@ if (!empty($info_hash_count)) {
}
}
// Verify if torrent registered on tracker
if (empty($torrents)) {
msg_die('Torrent not registered, info_hash = ' . (mb_check_encoding($info_hash, 'UTF8') ? $info_hash : $info_hash_hex));
msg_die('Torrent not registered, info_hash = ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));
}
die(\Arokettu\Bencode\Bencode::encode($torrents));

126
cliff.toml Normal file
View file

@ -0,0 +1,126 @@
# 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 = '<REPO>', 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}](<REPO>/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 = "<!-- 0 -->🚀 Features" },
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
{ message = "^ignore|^release|^changelog", skip = true },
{ message = "^chore|^ci|^misc", group = "<!-- 7 -->⚙️ Miscellaneous" },
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
{ message = "^crowdin|^crodwin", group = "<!-- 10 -->🈳 New translations" }, # crowdin pulls supporting
{ message = "^Composer", group = "<!-- 11 -->📦 Dependencies" }, # dependabot pulls supporting
{ message = "^rem|^drop|^removed", group = "<!-- 12 -->🗑️ Removed" },
{ message = ".*", group = "<!-- 13 -->💼 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"

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -39,18 +39,22 @@ if (!defined('BB_SCRIPT')) {
}
header('X-Frame-Options: SAMEORIGIN');
date_default_timezone_set('UTC');
// Cloudflare
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
// Set remote address
$allowedCDNs = ['HTTP_X_FORWARDED_FOR', 'HTTP_FASTLY_CLIENT_IP', 'HTTP_CF_CONNECTING_IP'];
foreach ($allowedCDNs as $allowedCDN) {
if (isset($_SERVER[$allowedCDN]) && filter_var($_SERVER[$allowedCDN], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
$_SERVER['REMOTE_ADDR'] = $_SERVER[$allowedCDN];
}
}
// Get all constants
require_once BB_PATH . '/library/defines.php';
// Composer
if (!file_exists(BB_PATH . '/vendor/autoload.php')) {
die('Please <a href="https://getcomposer.org/download/" target="_blank" rel="noreferrer" style="color:#0a25bb;">install composer</a> and run <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">composer install</code>');
if (!is_file(BB_PATH . '/vendor/autoload.php')) {
die('🔩 Manual install: <a href="https://getcomposer.org/download/" target="_blank" rel="noreferrer" style="color:#0a25bb;">Install composer</a> and run <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">composer install</code>.<br/>☕️ Quick install: Run <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">php install.php</code> in CLI mode.');
}
require_once BB_PATH . '/vendor/autoload.php';
@ -58,10 +62,10 @@ require_once BB_PATH . '/vendor/autoload.php';
* Gets the value of an environment variable.
*
* @param string $key
* @param mixed $default
* @param mixed|null $default
* @return mixed
*/
function env(string $key, $default = null)
function env(string $key, mixed $default = null): mixed
{
return \TorrentPier\Env::get($key, $default);
}
@ -71,118 +75,148 @@ try {
$dotenv = Dotenv\Dotenv::createMutable(BB_PATH);
$dotenv->load();
} catch (\Dotenv\Exception\InvalidPathException $pathException) {
die('Please rename from <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">.env.example</code> to <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">.env</code>, and configure it');
die('🔩 Manual install: Rename from <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">.env.example</code> to <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">.env</code>, and configure it.<br/>☕️ Quick install: Run <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">php install.php</code> in CLI mode.');
}
// Load config
require_once BB_PATH . '/library/config.php';
// Local config
if (file_exists(BB_PATH . '/library/config.local.php')) {
if (is_file(BB_PATH . '/library/config.local.php')) {
require_once BB_PATH . '/library/config.local.php';
}
/** @noinspection PhpUndefinedVariableInspection */
// Initialize Config singleton, bb_cfg from global file config
$config = \TorrentPier\Config::init($bb_cfg);
/**
* Progressive error reporting
* Get the Config instance
*
* @return \TorrentPier\Config
*/
\TorrentPier\Dev::initDebug();
function config(): \TorrentPier\Config
{
return \TorrentPier\Config::getInstance();
}
/**
* Get the Censor instance
*
* @return \TorrentPier\Censor
*/
function censor(): \TorrentPier\Censor
{
return \TorrentPier\Censor::getInstance();
}
/**
* Get the Dev instance
*
* @return \TorrentPier\Dev
*/
function dev(): \TorrentPier\Dev
{
return \TorrentPier\Dev::getInstance();
}
/**
* Get the Language instance
*
* @return \TorrentPier\Language
*/
function lang(): \TorrentPier\Language
{
return \TorrentPier\Language::getInstance();
}
/**
* Get a language string (shorthand for lang()->get())
*
* @param string $key Language key, supports dot notation (e.g., 'DATETIME.TODAY')
* @param mixed $default Default value if key doesn't exist
* @return mixed Language string or default value
*/
function __(string $key, mixed $default = null): mixed
{
return \TorrentPier\Language::getInstance()->get($key, $default);
}
/**
* Echo a language string (shorthand for echo __())
*
* @param string $key Language key, supports dot notation
* @param mixed $default Default value if key doesn't exist
* @return void
*/
function _e(string $key, mixed $default = null): void
{
echo \TorrentPier\Language::getInstance()->get($key, $default);
}
/**
* Initialize debug
*/
define('APP_ENV', env('APP_ENV', 'production'));
if (APP_ENV === 'development') {
define('DBG_USER', true); // forced debug
} else {
define('DBG_USER', isset($_COOKIE[COOKIE_DBG]));
}
(\TorrentPier\Dev::init());
/**
* Server variables initialize
*/
$server_protocol = $bb_cfg['cookie_secure'] ? 'https://' : 'http://';
$server_port = in_array((int)$bb_cfg['server_port'], [80, 443], true) ? '' : ':' . $bb_cfg['server_port'];
define('FORUM_PATH', $bb_cfg['script_path']);
define('FULL_URL', $server_protocol . $bb_cfg['server_name'] . $server_port . $bb_cfg['script_path']);
$server_protocol = config()->get('cookie_secure') ? 'https://' : 'http://';
$server_port = in_array((int)config()->get('server_port'), [80, 443], true) ? '' : ':' . config()->get('server_port');
define('FORUM_PATH', config()->get('script_path'));
define('FULL_URL', $server_protocol . config()->get('server_name') . $server_port . config()->get('script_path'));
unset($server_protocol, $server_port);
// Board / tracker shared constants and functions
define('BB_BT_TORRENTS', 'bb_bt_torrents');
define('BB_BT_TRACKER', 'bb_bt_tracker');
define('BB_BT_TRACKER_SNAP', 'bb_bt_tracker_snap');
define('BB_BT_USERS', 'bb_bt_users');
define('BT_AUTH_KEY_LENGTH', 20);
define('DL_STATUS_RELEASER', -1);
define('DL_STATUS_DOWN', 0);
define('DL_STATUS_COMPLETE', 1);
define('DL_STATUS_CANCEL', 3);
define('DL_STATUS_WILL', 4);
define('TOR_TYPE_GOLD', 1);
define('TOR_TYPE_SILVER', 2);
define('GUEST_UID', -1);
define('BOT_UID', -746);
// Initialize the new DB factory with database configuration
TorrentPier\Database\DatabaseFactory::init(config()->get('db'), config()->get('db_alias', []));
/**
* Database
* Get the Database instance
*
* @param string $db_alias
* @return \TorrentPier\Database\Database
*/
$DBS = new TorrentPier\Legacy\Dbs($bb_cfg);
function DB(string $db_alias = 'db')
function DB(string $db_alias = 'db'): \TorrentPier\Database\Database
{
global $DBS;
return $DBS->get_db_obj($db_alias);
return TorrentPier\Database\DatabaseFactory::getInstance($db_alias);
}
/**
* Cache
*/
$CACHES = new TorrentPier\Legacy\Caches($bb_cfg);
// Initialize Unified Cache System
TorrentPier\Cache\UnifiedCacheSystem::getInstance(config()->all());
function CACHE(string $cache_name)
/**
* Get cache manager instance (replaces legacy cache system)
*
* @param string $cache_name
* @return \TorrentPier\Cache\CacheManager
*/
function CACHE(string $cache_name): \TorrentPier\Cache\CacheManager
{
global $CACHES;
return $CACHES->get_cache_obj($cache_name);
return TorrentPier\Cache\UnifiedCacheSystem::getInstance()->get_cache_obj($cache_name);
}
/**
* Datastore
* Get datastore manager instance (replaces legacy datastore system)
*
* @return \TorrentPier\Cache\DatastoreManager
*/
switch ($bb_cfg['datastore_type']) {
case 'memcache':
$datastore = new TorrentPier\Legacy\Datastore\Memcache($bb_cfg['cache']['memcache'], $bb_cfg['cache']['prefix']);
break;
case 'sqlite':
$default_cfg = [
'db_file_path' => $bb_cfg['cache']['db_dir'] . 'datastore.sqlite.db',
'pconnect' => true,
'con_required' => true,
];
$datastore = new TorrentPier\Legacy\Datastore\Sqlite($default_cfg, $bb_cfg['cache']['prefix']);
break;
case 'redis':
$datastore = new TorrentPier\Legacy\Datastore\Redis($bb_cfg['cache']['redis'], $bb_cfg['cache']['prefix']);
break;
case 'filecache':
default:
$datastore = new TorrentPier\Legacy\Datastore\File($bb_cfg['cache']['db_dir'] . 'datastore/', $bb_cfg['cache']['prefix']);
function datastore(): \TorrentPier\Cache\DatastoreManager
{
return TorrentPier\Cache\UnifiedCacheSystem::getInstance()->getDatastore(config()->get('datastore_type', 'file'));
}
if (CHECK_REQIREMENTS['status'] && !CACHE('bb_cache')->get('system_req')) {
// [1] Check PHP Version
if (!\TorrentPier\Helpers\IsHelper::isPHP(CHECK_REQIREMENTS['php_min_version'])) {
die("TorrentPier requires PHP version " . CHECK_REQIREMENTS['php_min_version'] . "+ Your PHP version " . PHP_VERSION);
}
// [2] Check installed PHP Extensions on server
$data = [];
foreach (CHECK_REQIREMENTS['ext_list'] as $ext) {
if (!extension_loaded($ext)) {
$data[] = '<code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">' . $ext . '</code>';
}
}
if (!empty($data)) {
die(sprintf("TorrentPier requires %s extension(s) installed on server", implode(', ', $data)));
}
CACHE('bb_cache')->set('system_req', true);
}
/**
* Backward compatibility: Global datastore variable
* This allows existing code to continue using global $datastore
*/
$datastore = datastore();
// Functions
function utime()
@ -190,7 +224,7 @@ function utime()
return array_sum(explode(' ', microtime()));
}
function bb_log($msg, $file_name, $return_path = false)
function bb_log($msg, $file_name = 'logs', $return_path = false)
{
if (is_array($msg)) {
$msg = implode(LOG_LF, $msg);
@ -210,14 +244,15 @@ function file_write($str, $file, $max_size = LOG_MAX_SIZE, $lock = true, $replac
$bytes_written = false;
clearstatcache();
if (($max_size && file_exists($file) && is_file($file)) && filesize($file) >= $max_size) {
if (is_file($file) && ($max_size && (filesize($file) >= $max_size))) {
$file_parts = pathinfo($file);
$new_name = ($file_parts['dirname'] . '/' . $file_parts['filename'] . '_[old]_' . date('Y-m-d_H-i-s_') . getmypid() . '.' . $file_parts['extension']);
clearstatcache();
if (!file_exists($new_name) && !is_file($new_name)) {
if (!is_file($new_name)) {
rename($file, $new_name);
}
}
clearstatcache();
if (bb_mkdir(dirname($file))) {
if ($fp = fopen($file, 'ab+')) {
@ -253,6 +288,11 @@ function mkdir_rec($path, $mode): bool
return mkdir_rec(dirname($path), $mode) && mkdir($path, $mode);
}
function verify_id($id, $length): bool
{
return (is_string($id) && preg_match('#^[a-zA-Z0-9]{' . $length . '}$#', $id));
}
function clean_filename($fname)
{
static $s = ['\\', '/', ':', '*', '?', '"', '<', '>', '|', ' '];
@ -268,7 +308,7 @@ function clean_filename($fname)
* @param ?string $charset
* @return string
*/
function htmlCHR($txt, bool $double_encode = false, int $quote_style = ENT_QUOTES, ?string $charset = 'UTF-8'): string
function htmlCHR($txt, bool $double_encode = false, int $quote_style = ENT_QUOTES, ?string $charset = DEFAULT_CHARSET): string
{
return (string)htmlspecialchars($txt ?? '', $quote_style, $charset, $double_encode);
}
@ -279,7 +319,7 @@ function htmlCHR($txt, bool $double_encode = false, int $quote_style = ENT_QUOTE
*/
function str_compact($str)
{
return preg_replace('#\s+#u', ' ', trim($str ?? ''));
return preg_replace('/\s\s+/', ' ', trim($str ?? ''));
}
/**
@ -289,6 +329,7 @@ function str_compact($str)
*
* @param int $length
* @return string
* @throws Exception
*/
function make_rand_str(int $length = 10): string
{
@ -302,8 +343,32 @@ function make_rand_str(int $length = 10): string
return $randomString;
}
function array_deep(&$var, $fn, $one_dimensional = false, $array_only = false)
/**
* Calculates user ratio
*
* @param array $btu
* @return float|null
*/
function get_bt_ratio(array $btu): ?float
{
return
(!empty($btu['u_down_total']) && $btu['u_down_total'] > MIN_DL_FOR_RATIO)
? round((($btu['u_up_total'] + $btu['u_up_release'] + $btu['u_up_bonus']) / $btu['u_down_total']), 2)
: null;
}
function array_deep(&$var, $fn, $one_dimensional = false, $array_only = false, $timeout = false)
{
if ($timeout) {
static $recursions = 0;
if (time() > (TIMENOW + $timeout)) {
return [
'timeout' => true,
'recs' => $recursions
];
}
$recursions++;
}
if (is_array($var)) {
foreach ($var as $k => $v) {
if (is_array($v)) {
@ -312,7 +377,7 @@ function array_deep(&$var, $fn, $one_dimensional = false, $array_only = false)
} elseif ($array_only) {
$var[$k] = $fn($v);
} else {
array_deep($var[$k], $fn);
array_deep($var[$k], $fn, timeout: $timeout);
}
} elseif (!$array_only) {
$var[$k] = $fn($v);
@ -334,6 +399,12 @@ function hide_bb_path(string $path): string
return ltrim(str_replace(BB_PATH, '', $path), '/\\');
}
/**
* Returns memory usage statistic
*
* @param string $param
* @return int|void
*/
function sys(string $param)
{
switch ($param) {
@ -346,6 +417,15 @@ function sys(string $param)
}
}
/**
* Some shared defines
*/
// Initialize demo mode
define('IN_DEMO_MODE', env('APP_DEMO_MODE', false));
// Ratio status
define('RATIO_ENABLED', TR_RATING_LIMITS && MIN_DL_FOR_RATIO > 0);
// Initialization
if (!defined('IN_TRACKER')) {
// Init board
@ -353,24 +433,24 @@ if (!defined('IN_TRACKER')) {
} else {
define('DUMMY_PEER', pack('Nn', \TorrentPier\Helpers\IPHelper::ip2long($_SERVER['REMOTE_ADDR']), !empty($_GET['port']) ? (int)$_GET['port'] : random_int(1000, 65000)));
define('PEER_HASH_EXPIRE', round($bb_cfg['announce_interval'] * (0.85 * $bb_cfg['tracker']['expire_factor'])));
define('PEERS_LIST_EXPIRE', round($bb_cfg['announce_interval'] * 0.7));
define('SCRAPE_LIST_EXPIRE', round($bb_cfg['scrape_interval'] * 0.7));
define('PEER_HASH_EXPIRE', round(config()->get('announce_interval') * (0.85 * config()->get('tracker.expire_factor'))));
define('PEERS_LIST_EXPIRE', round(config()->get('announce_interval') * 0.7));
define('SCRAPE_LIST_EXPIRE', round(config()->get('scrape_interval') * 0.7));
define('PEER_HASH_PREFIX', 'peer_');
define('PEERS_LIST_PREFIX', 'peers_list_');
define('SCRAPE_LIST_PREFIX', 'scrape_list_');
// Init tracker
require_once BB_PATH . '/bt/includes/init_tr.php';
header('Content-Type: text/plain');
header('Pragma: no-cache');
if (!defined('IN_ADMIN')) {
// Exit if tracker is disabled via ON/OFF trigger
if (file_exists(BB_DISABLED)) {
if (is_file(BB_DISABLED)) {
dummy_exit(random_int(60, 2400));
}
}
// Init tracker
require_once BB_PATH . '/bt/includes/init_tr.php';
}

View file

@ -8,7 +8,7 @@
"torrent",
"tracker"
],
"homepage": "https://torrentpier.com",
"homepage": "https://github.com/torrentpier",
"license": "MIT",
"authors": [
{
@ -17,6 +17,16 @@
"homepage": "https://github.com/Exileum",
"role": "Developer"
},
{
"name": "Diolektor",
"homepage": "https://github.com/diolektor",
"role": "Developer"
},
{
"name": "PheRum",
"homepage": "https://github.com/PheRum",
"role": "Developer"
},
{
"name": "belomaxorka",
"email": "roman25052006.kelesh@gmail.com",
@ -36,34 +46,56 @@
"forum": "https://torrentpier.com"
},
"require": {
"php": "^8.1",
"php": ">=8.2",
"arokettu/bencode": "^4.1.0",
"arokettu/monsterid": "^4.1.0",
"arokettu/random-polyfill": "1.0.2",
"arokettu/torrent-file": "^5.2.1",
"belomaxorka/captcha": "1.*",
"bugsnag/bugsnag": "^v3.29.1",
"claviska/simpleimage": "^4.0",
"egulias/email-validator": "^4.0.1",
"filp/whoops": "^2.15",
"gemorroj/m3u-parser": "^6.0.1",
"gigablah/sphinxphp": "2.0.8",
"google/recaptcha": "^1.3",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
"jacklul/monolog-telegram": "^3.1",
"josantonius/cookie": "^2.0",
"league/flysystem": "^3.28",
"longman/ip-tools": "1.2.1",
"monolog/monolog": "^3.4",
"nette/caching": "^3.3",
"nette/database": "^3.2",
"php-curl-class/php-curl-class": "^12.0.0",
"robmorgan/phinx": "^0.16.9",
"samdark/sitemap": "2.4.1",
"symfony/mailer": "^6.3",
"symfony/polyfill": "v1.28.0",
"vlucas/phpdotenv": "^5.5"
"symfony/mailer": "^7.3",
"symfony/polyfill": "v1.32.0",
"vlucas/phpdotenv": "^5.5",
"z4kn4fein/php-semver": "^v3.0.0"
},
"require-dev": {
"symfony/var-dumper": "^6.3"
"mockery/mockery": "^1.6",
"pestphp/pest": "^3.8",
"symfony/var-dumper": "^7.3"
},
"autoload": {
"psr-4": {
"TorrentPier\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"config": {
"sort-packages": true,
"optimize-autoloader": false
"optimize-autoloader": true,
"allow-plugins": {
"pestphp/pest-plugin": true,
"php-http/discovery": true
}
},
"minimum-stability": "stable",
"prefer-stable": true

5712
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Before After
Before After

View file

@ -1,3 +0,0 @@
php_flag engine off
RemoveHandler .php .php5 .php4 .php3 .phtml .pl .asp
AddType text/plain .php .php .htm .html .phtml .pl .asp

74
dl.php
View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -20,26 +20,28 @@ $datastore->enqueue([
$download_id = request_var('id', 0);
$thumbnail = request_var('thumb', 0);
$m3u = isset($_GET['m3u']) && $_GET['m3u'];
// Send file to browser
function send_file_to_browser($attachment, $upload_dir)
{
global $bb_cfg, $lang;
$filename = ($upload_dir == '') ? $attachment['physical_filename'] : $upload_dir . '/' . $attachment['physical_filename'];
global $lang;
$filename = $upload_dir . '/' . $attachment['physical_filename'];
$gotit = false;
if (@!file_exists(@amod_realpath($filename))) {
bb_die($lang['ERROR_NO_ATTACHMENT'] . '<br /><br />' . htmlCHR($filename));
} else {
if (is_file(realpath($filename))) {
$gotit = true;
} else {
bb_die($lang['ERROR_NO_ATTACHMENT'] . '<br /><br />' . htmlCHR($filename));
}
// Correct the mime type - we force application/octet-stream for all files, except images
// Please do not change this, it is a security precaution
if (!str_contains($attachment['mimetype'], 'image')) {
$attachment['mimetype'] = 'application/octet-stream';
} else {
header('Cache-Control: public, max-age=3600');
}
//bt
@ -51,7 +53,7 @@ function send_file_to_browser($attachment, $upload_dir)
header('Pragma: public');
$real_filename = clean_filename(basename($attachment['real_filename']));
$mimetype = $attachment['mimetype'] . ';';
$charset = "charset={$bb_cfg['charset']};";
$charset = 'charset=' . DEFAULT_CHARSET . ';';
// Send out the Headers
header("Content-Type: $mimetype $charset name=\"$real_filename\"");
@ -60,7 +62,7 @@ function send_file_to_browser($attachment, $upload_dir)
// Now send the File Contents to the Browser
if ($gotit) {
$size = @filesize($filename);
$size = filesize($filename);
if ($size) {
header("Content-length: $size");
}
@ -99,6 +101,20 @@ if (!($attachment = DB()->sql_fetchrow($result))) {
$attachment['physical_filename'] = basename($attachment['physical_filename']);
if ($thumbnail) {
// Re-define $attachment['physical_filename'] for thumbnails
$attachment['physical_filename'] = THUMB_DIR . '/t_' . $attachment['physical_filename'];
} elseif ($m3u) {
// Check m3u file exist
if (!$m3uFile = (new \TorrentPier\TorrServerAPI())->getM3UPath($download_id)) {
bb_die($lang['ERROR_NO_ATTACHMENT']);
}
$attachment['physical_filename'] = $attachment['real_filename'] = basename($m3uFile);
$attachment['mimetype'] = mime_content_type($m3uFile);
$attachment['extension'] = str_replace('.', '', \TorrentPier\TorrServerAPI::M3U['extension']);
}
DB()->sql_freeresult($result);
// get forum_id for attachment authorization or private message authorization
@ -137,14 +153,15 @@ for ($i = 0; $i < $num_auth_pages && $authorised == false; $i++) {
}
}
// Check the auth rights
if (!$authorised) {
bb_die($lang['SORRY_AUTH_VIEW_ATTACH']);
bb_die($lang['SORRY_AUTH_VIEW_ATTACH'], 403);
}
$datastore->rm('cat_forums');
// Check tor status
if (!IS_AM) {
if (!IS_AM && ($attachment['mimetype'] === TORRENT_MIMETYPE)) {
$sql = 'SELECT tor_status, poster_id FROM ' . BB_BT_TORRENTS . ' WHERE attach_id = ' . (int)$attachment['attach_id'];
if (!($result = DB()->sql_query($sql))) {
@ -153,7 +170,7 @@ if (!IS_AM) {
$row = DB()->sql_fetchrow($result);
if (isset($bb_cfg['tor_frozen'][$row['tor_status']]) && !(isset($bb_cfg['tor_frozen_author_download'][$row['tor_status']]) && $userdata['user_id'] === $row['poster_id'])) {
if (isset(config()->get('tor_frozen')[$row['tor_status']]) && !(isset(config()->get('tor_frozen_author_download')[$row['tor_status']]) && $userdata['user_id'] === $row['poster_id'])) {
bb_die($lang['TOR_STATUS_FORBIDDEN'] . $lang['TOR_STATUS_NAME'][$row['tor_status']]);
}
@ -167,23 +184,27 @@ $num_rows = count($rows);
$allowed_extensions = $download_mode = [];
for ($i = 0; $i < $num_rows; $i++) {
$extension = strtolower(trim($rows[$i]['extension']));
// Get allowed extensions
if ((int)$rows[$i]['allow_group'] === 1) {
$allowed_extensions[] = $extension;
}
$download_mode[$extension] = $rows[$i]['download_mode'];
}
// Disallowed
if (!in_array($attachment['extension'], $allowed_extensions)) {
if (!in_array($attachment['extension'], $allowed_extensions) && !IS_ADMIN) {
bb_die(sprintf($lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']) . '<br /><br />' . $lang['FILENAME'] . ":&nbsp;" . $attachment['physical_filename']);
}
$download_mode = (int)$download_mode[$attachment['extension']];
if ($thumbnail) {
$attachment['physical_filename'] = THUMB_DIR . '/t_' . $attachment['physical_filename'];
// Getting download mode by extension
if (isset($download_mode[$attachment['extension']])) {
$download_mode = (int)$download_mode[$attachment['extension']];
} else {
bb_die(sprintf($lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']) . '<br /><br />' . $lang['FILENAME'] . ":&nbsp;" . $attachment['physical_filename']);
}
// Update download count
if (!$thumbnail) {
if (!$m3u && !$thumbnail && is_file(realpath($upload_dir . '/' . $attachment['physical_filename']))) {
$sql = 'UPDATE ' . BB_ATTACHMENTS_DESC . ' SET download_count = download_count + 1 WHERE attach_id = ' . (int)$attachment['attach_id'];
if (!DB()->sql_query($sql)) {
@ -192,13 +213,13 @@ if (!$thumbnail) {
}
// Determine the 'presenting'-method
if ($download_mode == PHYSICAL_LINK) {
switch ($download_mode) {
case PHYSICAL_LINK:
$url = make_url($upload_dir . '/' . $attachment['physical_filename']);
header('Location: ' . $url);
exit;
}
if (IS_GUEST && !$bb_cfg['captcha']['disabled'] && !bb_captcha('check')) {
case INLINE_LINK:
if (IS_GUEST && !config()->get('captcha.disabled') && !bb_captcha('check')) {
global $template;
$redirect_url = $_POST['redirect_url'] ?? $_SERVER['HTTP_REFERER'] ?? '/';
@ -214,7 +235,10 @@ if (IS_GUEST && !$bb_cfg['captcha']['disabled'] && !bb_captcha('check')) {
require(PAGE_HEADER);
require(PAGE_FOOTER);
}
}
send_file_to_browser($attachment, $upload_dir);
exit;
send_file_to_browser($attachment, $upload_dir);
exit;
default:
bb_die('Incorrect download mode: ' . $download_mode);
}

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,8 +11,8 @@ define('BB_SCRIPT', 'dl_list');
require __DIR__ . '/common.php';
$forum_id = isset($_REQUEST[POST_FORUM_URL]) ? (int)$_REQUEST[POST_FORUM_URL] : 0;
$topic_id = isset($_REQUEST[POST_TOPIC_URL]) ? (int)$_REQUEST[POST_TOPIC_URL] : 0;
$forum_id = $_REQUEST[POST_FORUM_URL] ?? 0;
$topic_id = $_REQUEST[POST_TOPIC_URL] ?? 0;
$mode = isset($_REQUEST['mode']) ? (string)$_REQUEST['mode'] : '';
$confirmed = isset($_POST['confirm']);
@ -52,7 +52,7 @@ $user->session_start();
set_die_append_msg();
// Check if user logged in
if (!$userdata['session_logged_in']) {
if (IS_GUEST) {
redirect(LOGIN_URL . "?redirect=$redirect_type&$redirect");
}
@ -79,7 +79,7 @@ if ($mode == 'dl_delete' && $topic_id) {
if (!$confirmed) {
$hidden_fields = [
't' => $topic_id,
POST_TOPIC_URL => $topic_id,
'mode' => 'dl_delete',
];

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -27,7 +27,6 @@ if ($mode === 'get_feed_url' && ($type === 'f' || $type === 'u') && $id >= 0) {
if ($type == 'f') {
// Check if the user has actually sent a forum ID
$sql = "SELECT allow_reg_tracker, forum_name FROM " . BB_FORUMS . " WHERE forum_id = $id LIMIT 1";
//DIE($sql);
if (!$forum_data = DB()->fetch_row($sql)) {
if ($id == 0) {
$forum_data = [];
@ -35,11 +34,11 @@ if ($mode === 'get_feed_url' && ($type === 'f' || $type === 'u') && $id >= 0) {
bb_simple_die($lang['ATOM_ERROR'] . ' #1');
}
}
if (file_exists($bb_cfg['atom']['path'] . '/f/' . $id . '.atom') && filemtime($bb_cfg['atom']['path'] . '/f/' . $id . '.atom') > $timecheck) {
redirect($bb_cfg['atom']['url'] . '/f/' . $id . '.atom');
if (is_file(config()->get('atom.path') . '/f/' . $id . '.atom') && filemtime(config()->get('atom.path') . '/f/' . $id . '.atom') > $timecheck) {
redirect(config()->get('atom.url') . '/f/' . $id . '.atom');
} else {
if (\TorrentPier\Legacy\Atom::update_forum_feed($id, $forum_data)) {
redirect($bb_cfg['atom']['url'] . '/f/' . $id . '.atom');
redirect(config()->get('atom.url') . '/f/' . $id . '.atom');
} else {
bb_simple_die($lang['ATOM_NO_FORUM']);
}
@ -53,11 +52,11 @@ if ($mode === 'get_feed_url' && ($type === 'f' || $type === 'u') && $id >= 0) {
if (!$username = get_username($id)) {
bb_simple_die($lang['ATOM_ERROR'] . ' #3');
}
if (file_exists($bb_cfg['atom']['path'] . '/u/' . floor($id / 5000) . '/' . ($id % 100) . '/' . $id . '.atom') && filemtime($bb_cfg['atom']['path'] . '/u/' . floor($id / 5000) . '/' . ($id % 100) . '/' . $id . '.atom') > $timecheck) {
redirect($bb_cfg['atom']['url'] . '/u/' . floor($id / 5000) . '/' . ($id % 100) . '/' . $id . '.atom');
if (is_file(config()->get('atom.path') . '/u/' . floor($id / 5000) . '/' . ($id % 100) . '/' . $id . '.atom') && filemtime(config()->get('atom.path') . '/u/' . floor($id / 5000) . '/' . ($id % 100) . '/' . $id . '.atom') > $timecheck) {
redirect(config()->get('atom.url') . '/u/' . floor($id / 5000) . '/' . ($id % 100) . '/' . $id . '.atom');
} else {
if (\TorrentPier\Legacy\Atom::update_user_feed($id, $username)) {
redirect($bb_cfg['atom']['url'] . '/u/' . floor($id / 5000) . '/' . ($id % 100) . '/' . $id . '.atom');
redirect(config()->get('atom.url') . '/u/' . floor($id / 5000) . '/' . ($id % 100) . '/' . $id . '.atom');
} else {
bb_simple_die($lang['ATOM_NO_USER']);
}

117
filelist.php Normal file
View file

@ -0,0 +1,117 @@
<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
define('BB_SCRIPT', 'filelist');
require __DIR__ . '/common.php';
// Start session management
$user->session_start();
if (config()->get('bt_disable_dht') && IS_GUEST) {
bb_die($lang['BT_PRIVATE_TRACKER'], 403);
}
$topic_id = isset($_GET[POST_TOPIC_URL]) ? (int)$_GET[POST_TOPIC_URL] : 0;
if (!$topic_id) {
bb_die($lang['INVALID_TOPIC_ID'], 404);
}
$sql = 'SELECT t.forum_id, t.attach_id, t.info_hash, t.info_hash_v2, t.size, ad.physical_filename
FROM ' . BB_BT_TORRENTS . ' t
LEFT JOIN ' . BB_ATTACHMENTS_DESC . ' ad
ON t.attach_id = ad.attach_id
WHERE t.topic_id = ' . $topic_id . '
LIMIT 1';
if (!$row = DB()->fetch_row($sql)) {
bb_die($lang['INVALID_TOPIC_ID_DB'], 404);
}
// Check rights
$is_auth = auth(AUTH_ALL, $row['forum_id'], $userdata);
if (!$is_auth['auth_view']) {
bb_die($lang['SORRY_AUTH_VIEW_ATTACH'], 403);
}
// Protocol meta
$meta_v1 = !empty($row['info_hash']);
$meta_v2 = !empty($row['info_hash_v2']);
// Method fields
$t_version_field = $meta_v2 ? 'v2' : 'v1';
$t_files_field = $meta_v2 ? 'getFileTree' : 'getFiles';
$t_hash_field = $meta_v2 ? 'piecesRoot' : 'sha1';
$file_path = get_attachments_dir() . '/' . $row['physical_filename'];
if (!is_file($file_path)) {
bb_die($lang['TOR_NOT_FOUND'], 410);
}
$file_contents = file_get_contents($file_path);
if (config()->get('flist_max_files')) {
$filetree_pos = $meta_v2 ? strpos($file_contents, '9:file tree') : false;
$files_pos = $meta_v1 ? strpos($file_contents, '5:files', $filetree_pos) : false;
if ($filetree_pos) {
$file_count = substr_count($file_contents, '6:length', $filetree_pos, ($files_pos ? ($files_pos - $filetree_pos) : null));
} else {
$file_count = substr_count($file_contents, '6:length', $files_pos);
}
if ($file_count > config()->get('flist_max_files')) {
bb_die(sprintf($lang['BT_FLIST_LIMIT'], config()->get('flist_max_files'), $file_count), 410);
}
}
try {
$torrent = \Arokettu\Torrent\TorrentFile::loadFromString($file_contents);
} catch (\Exception $e) {
bb_die(htmlCHR("{$lang['TORFILE_INVALID']}: {$e->getMessage()}"), 410);
}
if (IS_GUEST && $torrent->isPrivate()) {
bb_die($lang['BT_PRIVATE_TORRENT'], 403);
}
// Get torrent files
$files = $torrent->$t_version_field()->$t_files_field();
if ($meta_v2) {
$files = new \RecursiveIteratorIterator($files); // Flatten the list
}
$files_count = 0;
foreach ($files as $file) {
$files_count++;
$row_class = ($files_count % 2) ? 'row1' : 'row2';
$template->assign_block_vars('filelist', [
'ROW_NUMBER' => $files_count,
'ROW_CLASS' => $row_class,
'FILE_PATH' => clean_tor_dirname(implode('/', $file->path)),
'FILE_LENGTH' => humn_size($file->length, 2),
'FILE_HASH' => $file->$t_hash_field ?? '-'
]);
}
$torrent_name = !empty($t_name = $torrent->getName()) ? str_short(htmlCHR($t_name), 200) : $lang['UNKNOWN'];
$torrent_size = humn_size($row['size'], 2);
// Output page
$template->assign_vars([
'PAGE_TITLE' => "$torrent_name (" . $torrent_size . ")",
'FILES_COUNT' => sprintf($lang['BT_FLIST_FILE_PATH'], declension(iterator_count($files), 'files')),
'TORRENT_CREATION_DATE' => (!empty($dt = $torrent->getCreationDate()) && is_numeric($creation_date = $dt->getTimestamp())) ? date('d-M-Y H:i (e)', $creation_date) : $lang['UNKNOWN'],
'TORRENT_CLIENT' => !empty($creator = $torrent->getCreatedBy()) ? htmlCHR($creator) : $lang['UNKNOWN'],
'TORRENT_PRIVATE' => $torrent->isPrivate() ? $lang['YES'] : $lang['NO'],
'BTMR_NOTICE' => sprintf($lang['BT_FLIST_BTMR_NOTICE'], 'https://github.com/kovalensky/tmrr'),
'U_TOPIC' => TOPIC_URL . $topic_id,
]);
print_page('filelist.tpl');

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -24,7 +24,7 @@ set_die_append_msg();
$group_id = isset($_REQUEST[POST_GROUPS_URL]) ? (int)$_REQUEST[POST_GROUPS_URL] : null;
$start = isset($_REQUEST['start']) ? abs((int)$_REQUEST['start']) : 0;
$per_page = $bb_cfg['group_members_per_page'];
$per_page = config()->get('group_members_per_page');
$view_mode = isset($_REQUEST['view']) ? (string)$_REQUEST['view'] : null;
$rel_limit = 50;
@ -103,7 +103,7 @@ if (!$group_id) {
$options = '';
foreach ($params as $name => $data) {
$text = htmlCHR(str_short(rtrim($name), HTML_SELECT_MAX_LENGTH));
$text = str_short(rtrim(htmlCHR($name)), HTML_SELECT_MAX_LENGTH);
$members = ($data['m']) ? $lang['MEMBERS_IN_GROUP'] . ': ' . $data['m'] : $lang['NO_GROUP_MEMBERS'];
$candidates = ($data['c']) ? $lang['PENDING_MEMBERS'] . ': ' . $data['c'] : $lang['NO_PENDING_GROUP_MEMBERS'];
@ -162,13 +162,13 @@ if (!$group_id) {
bb_die($lang['NO_GROUPS_EXIST']);
}
if ($row['user_id']) {
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die($lang['ALREADY_MEMBER_GROUP']);
}
\TorrentPier\Legacy\Group::add_user_into_group($group_id, $userdata['user_id'], 1, TIMENOW);
if ($bb_cfg['group_send_email']) {
if (config()->get('group_send_email')) {
// Sending email
$emailer = new TorrentPier\Emailer();
@ -185,12 +185,12 @@ if (!$group_id) {
$emailer->send();
}
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die($lang['GROUP_JOINED']);
} elseif (!empty($_POST['unsub']) || !empty($_POST['unsubpending'])) {
\TorrentPier\Legacy\Group::delete_user_group($group_id, $userdata['user_id']);
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die($lang['UNSUB_SUCCESS']);
} else {
// Handle Additions, removals, approvals and denials
@ -198,33 +198,33 @@ if (!$group_id) {
if (!empty($_POST['add']) || !empty($_POST['remove']) || !empty($_POST['approve']) || !empty($_POST['deny'])) {
if (!$is_moderator) {
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die($lang['NOT_GROUP_MODERATOR']);
}
if (!empty($_POST['add'])) {
if (isset($_POST['username']) && !($row = get_userdata($_POST['username'], true))) {
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die($lang['COULD_NOT_ADD_USER']);
}
// Prevent adding moderator
if ($row['user_id'] == $group_moderator) {
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die(sprintf($lang['USER_IS_MOD_GROUP'], profile_url($row)));
}
// Prevent infinity user adding into group
if ($is_member = DB()->fetch_row("SELECT user_id FROM " . BB_USER_GROUP . " WHERE group_id = $group_id AND user_id = " . $row['user_id'] . " LIMIT 1")) {
if ($is_member['user_id']) {
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die(sprintf($lang['USER_IS_MEMBER_GROUP'], profile_url($row)));
}
}
\TorrentPier\Legacy\Group::add_user_into_group($group_id, $row['user_id']);
if ($bb_cfg['group_send_email']) {
if (config()->get('group_send_email')) {
// Sending email
$emailer = new TorrentPier\Emailer();
@ -248,7 +248,7 @@ if (!$group_id) {
$sql_in[] = (int)$members_id;
}
if (!$sql_in = implode(',', $sql_in)) {
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die($lang['NONE_SELECTED']);
}
@ -273,7 +273,7 @@ if (!$group_id) {
}
}
// Email users when they are approved
if (!empty($_POST['approve']) && $bb_cfg['group_send_email']) {
if (!empty($_POST['approve']) && config()->get('group_send_email')) {
$sql_select = "SELECT username, user_email, user_lang
FROM " . BB_USERS . "
WHERE user_id IN($sql_in)";
@ -385,16 +385,18 @@ if (!$group_id) {
'MOD_AVATAR' => $moderator_info['avatar'],
'MOD_FROM' => $moderator_info['from'],
'MOD_JOINED' => $moderator_info['joined'],
'MOD_JOINED_RAW' => $moderator_info['joined_raw'],
'MOD_POSTS' => $moderator_info['posts'],
'MOD_PM' => $moderator_info['pm'],
'MOD_EMAIL' => $moderator_info['email'],
'MOD_WWW' => $moderator_info['www'],
'MOD_TIME' => !empty($group_info['mod_time']) ? sprintf('%s <span class="signature">(%s)</span>', bb_date($group_info['mod_time']), delta_time($group_info['mod_time'])) : $lang['NONE'],
'MOD_TIME_RAW' => !empty($group_info['mod_time']) ? $group_info['mod_time'] : '',
'U_SEARCH_USER' => 'search.php?mode=searchuser',
'U_SEARCH_RELEASES' => "tracker.php?srg=$group_id",
'U_GROUP_RELEASES' => GROUP_URL . $group_id . "&view=releases",
'U_GROUP_MEMBERS' => GROUP_URL . $group_id . "&view=members",
'U_GROUP_CONFIG' => "group_edit.php?g=$group_id",
'U_GROUP_CONFIG' => "group_edit.php?" . POST_GROUPS_URL . "=$group_id",
'RELEASE_GROUP' => (bool)$group_info['release_group'],
'GROUP_TYPE' => $group_type,
@ -416,7 +418,7 @@ if (!$group_id) {
// TODO Correct SQL to posts with attach and limit them, optimization
if (!$group_info['release_group']) {
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die($lang['NOT_A_RELEASE_GROUP']);
}
@ -447,7 +449,7 @@ if (!$group_id) {
";
if (!$releases = DB()->fetch_rowset($sql)) {
set_die_append_msg(false, false, $group_id);
set_die_append_msg(group_id: $group_id);
bb_die($lang['NO_SEARCH_MATCH']);
}
@ -518,12 +520,14 @@ if (!$group_id) {
'AVATAR_IMG' => $member_info['avatar'],
'FROM' => $member_info['from'],
'JOINED' => $member_info['joined'],
'JOINED_RAW' => $member_info['joined_raw'],
'POSTS' => $member_info['posts'],
'USER_ID' => $user_id,
'PM' => $member_info['pm'],
'EMAIL' => $member_info['email'],
'WWW' => $member_info['www'],
'TIME' => $member_info['user_time']
'TIME' => $member_info['user_time'],
'TIME_RAW' => $member_info['user_time_raw']
]);
if ($is_moderator) {
@ -569,9 +573,10 @@ if (!$group_id) {
$template->assign_block_vars('pending', [
'ROW_CLASS' => $row_class,
'AVATAR_IMG' => $pending_info['avatar'],
'USER' => profile_url($pending_info),
'USER' => profile_url($member),
'FROM' => $pending_info['from'],
'JOINED' => $pending_info['joined'],
'JOINED_RAW' => $pending_info['joined_raw'],
'POSTS' => $pending_info['posts'],
'USER_ID' => $user_id,
'PM' => $pending_info['pm'],

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -35,16 +35,15 @@ if ($group_id) {
if ($is_moderator) {
// Avatar
if ($submit) {
if (!empty($_FILES['avatar']['name']) && $bb_cfg['group_avatars']['up_allowed']) {
if (!empty($_FILES['avatar']['name']) && config()->get('group_avatars.up_allowed')) {
$upload = new TorrentPier\Legacy\Common\Upload();
if ($upload->init($bb_cfg['group_avatars'], $_FILES['avatar']) and $upload->store('avatar', ['user_id' => GROUP_AVATAR_MASK . $group_id, 'avatar_ext_id' => $group_info['avatar_ext_id']])) {
if ($upload->init(config()->get('group_avatars'), $_FILES['avatar']) and $upload->store('avatar', ['user_id' => GROUP_AVATAR_MASK . $group_id, 'avatar_ext_id' => $group_info['avatar_ext_id']])) {
$avatar_ext_id = (int)$upload->file_ext_id;
DB()->query("UPDATE " . BB_GROUPS . " SET avatar_ext_id = $avatar_ext_id WHERE group_id = $group_id LIMIT 1");
} else {
bb_die(implode($upload->errors));
}
DB()->query("UPDATE " . BB_GROUPS . " SET avatar_ext_id = $avatar_ext_id WHERE group_id = $group_id LIMIT 1");
}
}
@ -77,7 +76,7 @@ if ($is_moderator) {
'S_HIDDEN_FIELDS' => $s_hidden_fields,
'S_GROUP_CONFIG_ACTION' => "group_edit.php?" . POST_GROUPS_URL . "=$group_id",
'AVATAR_EXPLAIN' => sprintf($lang['AVATAR_EXPLAIN'], $bb_cfg['group_avatars']['max_width'], $bb_cfg['group_avatars']['max_height'], humn_size($bb_cfg['group_avatars']['max_size'])),
'AVATAR_EXPLAIN' => sprintf($lang['AVATAR_EXPLAIN'], config()->get('group_avatars.max_width'), config()->get('group_avatars.max_height'), humn_size(config()->get('group_avatars.max_size'))),
'AVATAR_IMG' => get_avatar(GROUP_AVATAR_MASK . $group_id, $group_info['avatar_ext_id']),
]);

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -31,18 +31,25 @@ $datastore->enqueue([
'cat_forums'
]);
if ($bb_cfg['show_latest_news']) {
$datastore->enqueue('latest_news');
if (config()->get('show_latest_news')) {
$datastore->enqueue([
'latest_news'
]);
}
if ($bb_cfg['show_network_news']) {
$datastore->enqueue('network_news');
if (config()->get('show_network_news')) {
$datastore->enqueue([
'network_news'
]);
}
// Init userdata
$user->session_start();
// Set meta description
$page_cfg['meta_description'] = config()->get('site_desc');
// Init main vars
$viewcat = isset($_GET['c']) ? (int)$_GET['c'] : 0;
$viewcat = isset($_GET[POST_CAT_URL]) ? (int)$_GET[POST_CAT_URL] : 0;
$lastvisit = IS_GUEST ? TIMENOW : $userdata['user_lastvisit'];
// Caching output
@ -50,7 +57,7 @@ $req_page = 'index_page';
$req_page .= $viewcat ? "_c{$viewcat}" : '';
define('REQUESTED_PAGE', $req_page);
caching_output(IS_GUEST, 'send', REQUESTED_PAGE . '_guest_' . $bb_cfg['default_lang']);
caching_output(IS_GUEST, 'send', REQUESTED_PAGE . '_guest_' . config()->get('default_lang'));
$hide_cat_opt = isset($user->opt_js['h_cat']) ? (string)$user->opt_js['h_cat'] : 0;
$hide_cat_user = array_flip(explode('-', $hide_cat_opt));
@ -61,13 +68,15 @@ $tracking_topics = get_tracks('topic');
$tracking_forums = get_tracks('forum');
// Statistics
if (!$stats = $datastore->get('stats')) {
$stats = $datastore->get('stats');
if ($stats === false) {
$datastore->update('stats');
$stats = $datastore->get('stats');
}
// Forums data
if (!$forums = $datastore->get('cat_forums')) {
$forums = $datastore->get('cat_forums');
if ($forums === false) {
$datastore->update('cat_forums');
$forums = $datastore->get('cat_forums');
}
@ -76,6 +85,7 @@ $forum_name_html = $forums['forum_name_html'];
$anon = GUEST_UID;
$excluded_forums_csv = $user->get_excluded_forums(AUTH_VIEW);
$excluded_forums_array = $excluded_forums_csv ? explode(',', $excluded_forums_csv) : [];
$only_new = $user->opt_js['only_new'];
// Validate requested category id
@ -169,7 +179,8 @@ if (!$cat_forums = CACHE('bb_cache')->get($cache_name)) {
// Obtain list of moderators
$moderators = [];
if (!$mod = $datastore->get('moderators')) {
$mod = $datastore->get('moderators');
if ($mod === false) {
$datastore->update('moderators');
$mod = $datastore->get('moderators');
}
@ -250,8 +261,8 @@ foreach ($cat_forums as $cid => $c) {
$template->assign_block_vars('c.f.last', [
'LAST_TOPIC_ID' => $f['last_topic_id'],
'LAST_TOPIC_TIP' => $f['last_topic_title'],
'LAST_TOPIC_TITLE' => wbr(str_short($f['last_topic_title'], $last_topic_max_len)),
'LAST_POST_TIME' => bb_date($f['last_post_time'], $bb_cfg['last_post_date_format']),
'LAST_TOPIC_TITLE' => str_short($f['last_topic_title'], $last_topic_max_len),
'LAST_POST_TIME' => bb_date($f['last_post_time'], config()->get('last_post_date_format')),
'LAST_POST_USER' => profile_url(['username' => str_short($f['last_post_username'], 15), 'user_id' => $f['last_post_user_id'], 'user_rank' => $f['last_post_user_rank']]),
]);
}
@ -267,7 +278,7 @@ $template->assign_vars([
'TOTAL_TOPICS' => sprintf($lang['POSTED_TOPICS_TOTAL'], $stats['topiccount']),
'TOTAL_POSTS' => sprintf($lang['POSTED_ARTICLES_TOTAL'], $stats['postcount']),
'TOTAL_USERS' => sprintf($lang['REGISTERED_USERS_TOTAL'], $stats['usercount']),
'TOTAL_GENDER' => $bb_cfg['gender'] ? sprintf(
'TOTAL_GENDER' => config()->get('gender') ? sprintf(
$lang['USERS_TOTAL_GENDER'],
$stats['male'],
$stats['female'],
@ -276,22 +287,22 @@ $template->assign_vars([
'NEWEST_USER' => sprintf($lang['NEWEST_USER'], profile_url($stats['newestuser'])),
// Tracker stats
'TORRENTS_STAT' => $bb_cfg['tor_stats'] ? sprintf(
'TORRENTS_STAT' => config()->get('tor_stats') ? sprintf(
$lang['TORRENTS_STAT'],
$stats['torrentcount'],
humn_size($stats['size'])
) : '',
'PEERS_STAT' => $bb_cfg['tor_stats'] ? sprintf(
'PEERS_STAT' => config()->get('tor_stats') ? sprintf(
$lang['PEERS_STAT'],
$stats['peers'],
$stats['seeders'],
$stats['leechers']
) : '',
'SPEED_STAT' => $bb_cfg['tor_stats'] ? sprintf(
'SPEED_STAT' => config()->get('tor_stats') ? sprintf(
$lang['SPEED_STAT'],
humn_size($stats['speed']) . '/s'
) : '',
'SHOW_MOD_INDEX' => $bb_cfg['show_mod_index'],
'SHOW_MOD_INDEX' => config()->get('show_mod_index'),
'FORUM_IMG' => $images['forum'],
'FORUM_NEW_IMG' => $images['forum_new'],
'FORUM_LOCKED_IMG' => $images['forum_locked'],
@ -304,20 +315,21 @@ $template->assign_vars([
'U_SEARCH_SELF_BY_MY' => "search.php?uid={$userdata['user_id']}&amp;o=1",
'U_SEARCH_LATEST' => 'search.php?search_id=latest',
'U_SEARCH_UNANSWERED' => 'search.php?search_id=unanswered',
'U_ATOM_FEED' => file_exists($bb_cfg['atom']['path'] . '/f/0.atom') ? make_url($bb_cfg['atom']['url'] . '/f/0.atom') : false,
'U_ATOM_FEED' => is_file(config()->get('atom.path') . '/f/0.atom') ? make_url(config()->get('atom.url') . '/f/0.atom') : false,
'SHOW_LAST_TOPIC' => $show_last_topic,
'BOARD_START' => $bb_cfg['show_board_start_index'] ? ($lang['BOARD_STARTED'] . ':&nbsp;' . '<b>' . bb_date($bb_cfg['board_startdate']) . '</b>') : false,
'BOARD_START' => config()->get('show_board_start_index') ? ($lang['BOARD_STARTED'] . ':&nbsp;' . '<b>' . bb_date(config()->get('board_startdate')) . '</b>') : false,
]);
// Set tpl vars for bt_userdata
if ($bb_cfg['bt_show_dl_stat_on_index'] && !IS_GUEST) {
if (config()->get('bt_show_dl_stat_on_index') && !IS_GUEST) {
show_bt_userdata($userdata['user_id']);
}
// Latest news
if ($bb_cfg['show_latest_news']) {
if (!$latest_news = $datastore->get('latest_news')) {
if (config()->get('show_latest_news')) {
$latest_news = $datastore->get('latest_news');
if ($latest_news === false) {
$datastore->update('latest_news');
$latest_news = $datastore->get('latest_news');
}
@ -325,9 +337,13 @@ if ($bb_cfg['show_latest_news']) {
$template->assign_vars(['SHOW_LATEST_NEWS' => true]);
foreach ($latest_news as $news) {
if (in_array($news['forum_id'], $excluded_forums_array)) {
continue;
}
$template->assign_block_vars('news', [
'NEWS_TOPIC_ID' => $news['topic_id'],
'NEWS_TITLE' => str_short($news['topic_title'], $bb_cfg['max_news_title']),
'NEWS_TITLE' => str_short(censor()->censorString($news['topic_title']), config()->get('max_news_title')),
'NEWS_TIME' => bb_date($news['topic_time'], 'd-M', false),
'NEWS_IS_NEW' => is_unread($news['topic_time'], $news['topic_id'], $news['forum_id']),
]);
@ -335,8 +351,9 @@ if ($bb_cfg['show_latest_news']) {
}
// Network news
if ($bb_cfg['show_network_news']) {
if (!$network_news = $datastore->get('network_news')) {
if (config()->get('show_network_news')) {
$network_news = $datastore->get('network_news');
if ($network_news === false) {
$datastore->update('network_news');
$network_news = $datastore->get('network_news');
}
@ -344,16 +361,20 @@ if ($bb_cfg['show_network_news']) {
$template->assign_vars(['SHOW_NETWORK_NEWS' => true]);
foreach ($network_news as $net) {
if (in_array($net['forum_id'], $excluded_forums_array)) {
continue;
}
$template->assign_block_vars('net', [
'NEWS_TOPIC_ID' => $net['topic_id'],
'NEWS_TITLE' => str_short($net['topic_title'], $bb_cfg['max_net_title']),
'NEWS_TITLE' => str_short(censor()->censorString($net['topic_title']), config()->get('max_net_title')),
'NEWS_TIME' => bb_date($net['topic_time'], 'd-M', false),
'NEWS_IS_NEW' => is_unread($net['topic_time'], $net['topic_id'], $net['forum_id']),
]);
}
}
if ($bb_cfg['birthday_check_day'] && $bb_cfg['birthday_enabled']) {
if (config()->get('birthday_check_day') && config()->get('birthday_enabled')) {
$week_list = $today_list = [];
$week_all = $today_all = false;
@ -367,9 +388,9 @@ if ($bb_cfg['birthday_check_day'] && $bb_cfg['birthday_enabled']) {
$week_list[] = profile_url($week) . ' <span class="small">(' . birthday_age(date('Y-m-d', strtotime('-1 year', strtotime($week['user_birthday'])))) . ')</span>';
}
$week_all = $week_all ? '&nbsp;<a class="txtb" href="#" onclick="ajax.exec({action: \'index_data\', mode: \'birthday_week\'}); return false;" title="' . $lang['ALL'] . '">...</a>' : '';
$week_list = sprintf($lang['BIRTHDAY_WEEK'], $bb_cfg['birthday_check_day'], implode(', ', $week_list)) . $week_all;
$week_list = sprintf($lang['BIRTHDAY_WEEK'], config()->get('birthday_check_day'), implode(', ', $week_list)) . $week_all;
} else {
$week_list = sprintf($lang['NOBIRTHDAY_WEEK'], $bb_cfg['birthday_check_day']);
$week_list = sprintf($lang['NOBIRTHDAY_WEEK'], config()->get('birthday_check_day'));
}
if (!empty($stats['birthday_today_list'])) {
@ -395,8 +416,8 @@ if ($bb_cfg['birthday_check_day'] && $bb_cfg['birthday_enabled']) {
// Allow cron
if (IS_AM) {
if (file_exists(CRON_RUNNING)) {
if (file_exists(CRON_ALLOWED)) {
if (is_file(CRON_RUNNING)) {
if (is_file(CRON_ALLOWED)) {
unlink(CRON_ALLOWED);
}
rename(CRON_RUNNING, CRON_ALLOWED);

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -16,8 +16,9 @@ $user->session_start();
$info = [];
$htmlDir = LANG_DIR . 'html/';
$show = isset($_REQUEST['show']) ? (string)$_REQUEST['show'] : '';
switch ((string)$_REQUEST['show'] ?? 'not_found') {
switch ($show) {
case 'advert':
$info['title'] = $lang['ADVERT'];
$info['src'] = 'advert.html';
@ -40,10 +41,10 @@ switch ((string)$_REQUEST['show'] ?? 'not_found') {
break;
}
$require = file_exists($htmlDir . $info['src']) ? ($htmlDir . $info['src']) : false;
$require = is_file($htmlDir . $info['src']) ? ($htmlDir . $info['src']) : false;
$template->assign_vars([
'PAGE_TITLE' => mb_strtoupper($info['title'], 'UTF-8'),
'PAGE_TITLE' => mb_strtoupper($info['title'], DEFAULT_CHARSET),
'REQUIRE' => $require ? file_get_contents($require) : $lang['NOT_FOUND'],
]);

331
install.php Normal file
View file

@ -0,0 +1,331 @@
<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
define('BB_ROOT', __DIR__ . DIRECTORY_SEPARATOR);
define('BB_PATH', BB_ROOT);
// Check CLI mode
if (PHP_SAPI != 'cli') {
die('Please run <code style="background:#222;color:#00e01f;padding:2px 6px;border-radius:3px;">php ' . basename(__FILE__) . '</code> 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.2.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');
}

View file

@ -1 +0,0 @@
Require all denied

27
install/Caddyfile Normal file
View file

@ -0,0 +1,27 @@
# 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

39
install/nginx.conf Normal file
View file

@ -0,0 +1,39 @@
# 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;
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,57 +0,0 @@
SET SQL_MODE = "";
-- ----------------------------
-- Table structure for `bb_bt_tracker`
-- ----------------------------
DROP TABLE IF EXISTS `bb_bt_tracker`;
CREATE TABLE IF NOT EXISTS `bb_bt_tracker`
(
`peer_hash` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`topic_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`peer_id` varchar(20) NOT NULL,
`user_id` mediumint(9) NOT NULL DEFAULT '0',
`ip` varchar(42) NOT NULL DEFAULT '0',
`ipv6` varchar(32) DEFAULT NULL,
`port` smallint(5) unsigned NOT NULL DEFAULT '0',
`client` varchar(51) NOT NULL DEFAULT 'Unknown',
`seeder` tinyint(1) NOT NULL DEFAULT '0',
`releaser` tinyint(1) NOT NULL DEFAULT '0',
`tor_type` tinyint(1) NOT NULL DEFAULT '0',
`uploaded` bigint(20) unsigned NOT NULL DEFAULT '0',
`downloaded` bigint(20) unsigned NOT NULL DEFAULT '0',
`remain` bigint(20) unsigned NOT NULL DEFAULT '0',
`speed_up` mediumint(8) unsigned NOT NULL DEFAULT '0',
`speed_down` mediumint(8) unsigned NOT NULL DEFAULT '0',
`up_add` bigint(20) unsigned NOT NULL DEFAULT '0',
`down_add` bigint(20) unsigned NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`complete_percent` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`peer_hash`),
KEY `topic_id` (`topic_id`),
KEY `user_id` (`user_id`)
) ENGINE = MyISAM
DEFAULT CHARSET = utf8;
-- ----------------------------
-- Records of bb_bt_tracker
-- ----------------------------
-- ----------------------------
-- Table structure for `bb_bt_tracker_snap`
-- ----------------------------
DROP TABLE IF EXISTS `bb_bt_tracker_snap`;
CREATE TABLE IF NOT EXISTS `bb_bt_tracker_snap`
(
`topic_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`seeders` mediumint(8) unsigned NOT NULL DEFAULT '0',
`leechers` mediumint(8) unsigned NOT NULL DEFAULT '0',
`speed_up` int(10) unsigned NOT NULL DEFAULT '0',
`speed_down` int(10) unsigned NOT NULL DEFAULT '0',
`complete` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`topic_id`)
) ENGINE = MyISAM
DEFAULT CHARSET = utf8;
-- ----------------------------
-- Records of bb_bt_tracker_snap
-- ----------------------------

View file

@ -1,3 +0,0 @@
Схема изменений начиная с версии 2.4.0:
Изменения в базе:

View file

@ -1 +0,0 @@
Require all denied

0
internal_data/cache/.keep vendored Normal file
View file

View file

@ -1 +0,0 @@
Require all denied

0
internal_data/log/.keep Normal file
View file

View file

@ -1 +0,0 @@
Require all denied

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,11 +11,13 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $bb_cfg, $lang, $user;
global $lang, $user;
if (!$mode = (string)$this->request['mode']) {
$this->ajax_die('invalid mode (empty)');
}
$mode = (string)$this->request['mode'];
$user_id = (int)$this->request['user_id'];
if (!$user_id or !$u_data = get_userdata($user_id)) {
$this->ajax_die($lang['NO_USER_ID_SPECIFIED']);
}
@ -33,7 +35,7 @@ switch ($mode) {
$response = get_avatar($user_id, $new_ext_id);
break;
default:
$this->ajax_die('Invalid mode');
$this->ajax_die('Invalid mode: ' . $mode);
}
DB()->query("UPDATE " . BB_USERS . " SET avatar_ext_id = $new_ext_id WHERE user_id = $user_id LIMIT 1");

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,9 +11,9 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $bb_cfg, $userdata, $lang;
global $userdata, $lang;
if (!$bb_cfg['callseed']) {
if (!config()->get('callseed')) {
$this->ajax_die($lang['MODULE_OFF']);
}
@ -27,14 +27,16 @@ if (!$t_data = topic_info($topic_id)) {
$forum_id = $t_data['forum_id'];
if ($t_data['seeders'] > 2) {
if ($t_data['seeders'] >= 3) {
$this->ajax_die(sprintf($lang['CALLSEED_HAVE_SEED'], $t_data['seeders']));
} elseif ($t_data['call_seed_time'] > (TIMENOW - 86400)) {
} elseif ($t_data['call_seed_time'] >= (TIMENOW - 86400)) {
$time_left = delta_time($t_data['call_seed_time'] + 86400, TIMENOW, 'days');
$this->ajax_die(sprintf($lang['CALLSEED_MSG_SPAM'], $time_left));
} elseif (isset(config()->get('tor_no_tor_act')[$t_data['tor_status']])) {
$this->ajax_die($lang['NOT_AVAILABLE']);
}
$get_banned_users = get_banned_users() ? (', ' . implode(', ', get_banned_users())) : '';
$banned_users = ($get_banned_users = get_banned_users()) ? (', ' . implode(', ', $get_banned_users)) : '';
$user_list = DB()->fetch_rowset("
SELECT DISTINCT dl.user_id, u.user_opt, tr.user_id as active_dl
@ -43,7 +45,7 @@ $user_list = DB()->fetch_rowset("
LEFT JOIN " . BB_BT_TRACKER . " tr ON(tr.user_id = dl.user_id)
WHERE dl.topic_id = $topic_id
AND dl.user_status IN (" . DL_STATUS_COMPLETE . ", " . DL_STATUS_DOWN . ")
AND dl.user_id NOT IN ({$userdata['user_id']}, " . EXCLUDED_USERS . $get_banned_users . ")
AND dl.user_id NOT IN ({$userdata['user_id']}, " . EXCLUDED_USERS . $banned_users . ")
AND u.user_active = 1
GROUP BY dl.user_id
");
@ -73,7 +75,7 @@ function topic_info($topic_id)
$sql = "
SELECT
tor.poster_id, tor.forum_id, tor.attach_id, tor.call_seed_time,
tor.poster_id, tor.forum_id, tor.attach_id, tor.call_seed_time, tor.tor_status,
t.topic_title, sn.seeders
FROM " . BB_BT_TORRENTS . " tor
LEFT JOIN " . BB_TOPICS . " t USING(topic_id)
@ -82,7 +84,7 @@ function topic_info($topic_id)
";
if (!$torrent = DB()->fetch_row($sql)) {
bb_die($lang['TOPIC_POST_NOT_EXIST']);
bb_die($lang['TOPIC_POST_NOT_EXIST'], 404);
}
return $torrent;

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,16 +11,18 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $userdata, $bb_cfg, $lang;
global $userdata, $lang, $log_action;
if (!isset($this->request['attach_id'])) {
if (!$attach_id = (int)$this->request['attach_id']) {
$this->ajax_die($lang['EMPTY_ATTACH_ID']);
}
$attach_id = (int)$this->request['attach_id'];
$mode = (string)$this->request['mode'];
if (!$mode = (string)$this->request['mode']) {
$this->ajax_die('invalid mode (empty)');
}
if ($bb_cfg['tor_comment']) {
$comment = false;
if (config()->get('tor_comment')) {
$comment = (string)$this->request['comment'];
}
@ -42,7 +44,7 @@ switch ($mode) {
case 'status':
$new_status = (int)$this->request['status'];
// Валидность статуса
// Check status validity
if (!isset($lang['TOR_STATUS_NAME'][$new_status])) {
$this->ajax_die($lang['TOR_STATUS_FAILED']);
}
@ -53,17 +55,17 @@ switch ($mode) {
$this->ajax_die($lang['NOT_MODERATOR']);
}
// Тот же статус
// Error if same status
if ($tor['tor_status'] == $new_status) {
$this->ajax_die($lang['TOR_STATUS_DUB']);
}
// Запрет на изменение/присвоение CH-статуса модератором
// Prohibition on changing/assigning CH-status by moderator
if ($new_status == TOR_CLOSED_CPHOLD && !IS_ADMIN) {
$this->ajax_die($lang['TOR_DONT_CHANGE']);
}
// Права на изменение статуса
// Check rights to change status
if ($tor['tor_status'] == TOR_CLOSED_CPHOLD) {
if (!IS_ADMIN) {
$this->verify_mod_rights($tor['forum_id']);
@ -73,7 +75,7 @@ switch ($mode) {
$this->verify_mod_rights($tor['forum_id']);
}
// Подтверждение изменения статуса, выставленного другим модератором
// Confirmation of status change set by another moderator
if ($tor['tor_status'] != TOR_NOT_APPROVED && $tor['checked_user_id'] != $userdata['user_id'] && $tor['checked_time'] + 2 * 3600 > TIMENOW) {
if (empty($this->request['confirmed'])) {
$msg = $lang['TOR_STATUS_OF'] . " {$lang['TOR_STATUS_NAME'][$tor['tor_status']]}\n\n";
@ -85,12 +87,24 @@ switch ($mode) {
\TorrentPier\Legacy\Torrent::change_tor_status($attach_id, $new_status);
$this->response['status'] = $bb_cfg['tor_icons'][$new_status] . ' <b> ' . $lang['TOR_STATUS_NAME'][$new_status] . '</b> &middot; ' . profile_url($userdata) . ' &middot; <i>' . delta_time(TIMENOW) . $lang['TOR_BACK'] . '</i>';
// Log action
$log_msg = sprintf($lang['TOR_STATUS_LOG_ACTION'], config()->get('tor_icons')[$new_status] . ' <b> ' . $lang['TOR_STATUS_NAME'][$new_status] . '</b>', config()->get('tor_icons')[$tor['tor_status']] . ' <b> ' . $lang['TOR_STATUS_NAME'][$tor['tor_status']] . '</b>');
if ($comment && $comment != $lang['COMMENT']) {
$log_msg .= "<br/>{$lang['COMMENT']}: <b>$comment</b>.";
}
$log_action->mod('mod_topic_change_tor_status', [
'forum_id' => $tor['forum_id'],
'topic_id' => $tor['topic_id'],
'topic_title' => $tor['topic_title'],
'log_msg' => $log_msg . '<br/>-------------',
]);
if ($bb_cfg['tor_comment'] && (($comment && $comment != $lang['COMMENT']) || in_array($new_status, $bb_cfg['tor_reply']))) {
$this->response['status'] = config()->get('tor_icons')[$new_status] . ' <b> ' . $lang['TOR_STATUS_NAME'][$new_status] . '</b> &middot; ' . profile_url($userdata) . ' &middot; <i>' . delta_time(TIMENOW) . $lang['TOR_BACK'] . '</i>';
if (config()->get('tor_comment') && (($comment && $comment != $lang['COMMENT']) || in_array($new_status, config()->get('tor_reply')))) {
if ($tor['poster_id'] > 0) {
$subject = sprintf($lang['TOR_MOD_TITLE'], $tor['topic_title']);
$message = sprintf($lang['TOR_MOD_MSG'], get_username($tor['poster_id']), make_url(TOPIC_URL . $tor['topic_id']), $bb_cfg['tor_icons'][$new_status] . ' ' . $lang['TOR_STATUS_NAME'][$new_status]);
$message = sprintf($lang['TOR_MOD_MSG'], get_username($tor['poster_id']), make_url(TOPIC_URL . $tor['topic_id']), config()->get('tor_icons')[$new_status] . ' ' . $lang['TOR_STATUS_NAME'][$new_status]);
if ($comment && $comment != $lang['COMMENT']) {
$message .= "\n\n[b]" . $lang['COMMENT'] . '[/b]: ' . $comment;
@ -103,7 +117,7 @@ switch ($mode) {
break;
case 'status_reply':
if (!$bb_cfg['tor_comment']) {
if (!config()->get('tor_comment')) {
$this->ajax_die($lang['MODULE_OFF']);
}
@ -117,6 +131,9 @@ switch ($mode) {
send_pm($tor['checked_user_id'], $subject, $message, $userdata['user_id']);
\TorrentPier\Sessions::cache_rm_user_sessions($tor['checked_user_id']);
break;
default:
$this->ajax_die('Invalid mode: ' . $mode);
}
$this->response['attach_id'] = $attach_id;

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,7 +11,7 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $userdata, $bb_cfg, $lang;
global $userdata, $lang, $log_action;
if (!isset($this->request['attach_id'])) {
$this->ajax_die($lang['EMPTY_ATTACH_ID']);
@ -19,31 +19,11 @@ if (!isset($this->request['attach_id'])) {
if (!isset($this->request['type'])) {
$this->ajax_die('empty type');
}
$attach_id = (int)$this->request['attach_id'];
$type = (string)$this->request['type'];
$torrent = DB()->fetch_row("
SELECT
a.post_id, d.physical_filename, d.extension, d.tracker_status,
t.topic_first_post_id,
p.poster_id, p.topic_id, p.forum_id,
f.allow_reg_tracker
FROM
" . BB_ATTACHMENTS . " a,
" . BB_ATTACHMENTS_DESC . " d,
" . BB_POSTS . " p,
" . BB_TOPICS . " t,
" . BB_FORUMS . " f
WHERE
a.attach_id = $attach_id
AND d.attach_id = $attach_id
AND p.post_id = a.post_id
AND t.topic_id = p.topic_id
AND f.forum_id = p.forum_id
LIMIT 1
");
if (!$torrent) {
if (!$torrent = \TorrentPier\Legacy\Torrent::get_torrent_info($attach_id)) {
$this->ajax_die($lang['INVALID_ATTACH_ID']);
}
@ -63,12 +43,25 @@ switch ($type) {
case 'unset_silver_gold':
if ($type == 'set_silver') {
$tor_type = TOR_TYPE_SILVER;
$tor_type_lang = $lang['SILVER'];
} elseif ($type == 'set_gold') {
$tor_type = TOR_TYPE_GOLD;
$tor_type_lang = $lang['GOLD'];
} else {
$tor_type = 0;
$tor_type = TOR_TYPE_DEFAULT;
$tor_type_lang = "{$lang['UNSET_GOLD_TORRENT']} / {$lang['UNSET_SILVER_TORRENT']}";
}
\TorrentPier\Legacy\Torrent::change_tor_type($attach_id, $tor_type);
// Log action
$log_action->mod('mod_topic_change_tor_type', [
'forum_id' => $torrent['forum_id'],
'topic_id' => $torrent['topic_id'],
'topic_title' => $torrent['topic_title'],
'log_msg' => sprintf($lang['TOR_TYPE_LOG_ACTION'], $tor_type_lang),
]);
$title = $lang['CHANGE_TOR_TYPE'];
$url = make_url(TOPIC_URL . $torrent['topic_id']);
break;
@ -96,7 +89,7 @@ switch ($type) {
$this->prompt_for_confirm($lang['DEL_MOVE_TORRENT']);
}
\TorrentPier\Legacy\Torrent::delete_torrent($attach_id);
$url = make_url("modcp.php?t={$torrent['topic_id']}&mode=move&sid={$userdata['session_id']}");
$url = make_url("modcp.php?" . POST_TOPIC_URL . "={$torrent['topic_id']}&mode=move&sid={$userdata['session_id']}");
break;
}

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -32,7 +32,7 @@ foreach ($bf['user_opt'] as $opt_name => $opt_bit) {
DB()->query("UPDATE " . BB_USERS . " SET user_opt = {$u_data['user_opt']} WHERE user_id = $user_id LIMIT 1");
// Удаляем данные из кеша
// Remove data from cache
\TorrentPier\Sessions::cache_rm_user_sessions($user_id);
$this->response['resp_html'] = $lang['SAVED'];

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -13,7 +13,11 @@ if (!defined('IN_AJAX')) {
global $datastore, $lang;
$ranks = $datastore->get('ranks');
if (!$ranks = $datastore->get('ranks')) {
$datastore->update('ranks');
$ranks = $datastore->get('ranks');
}
$rank_id = (int)$this->request['rank_id'];
if (!$user_id = (int)$this->request['user_id'] or !$profiledata = get_userdata($user_id)) {
@ -24,11 +28,11 @@ if ($rank_id != 0 && !isset($ranks[$rank_id])) {
$this->ajax_die("invalid rank_id: $rank_id");
}
DB()->query("UPDATE " . BB_USERS . " SET user_rank = $rank_id WHERE user_id = $user_id");
DB()->query("UPDATE " . BB_USERS . " SET user_rank = $rank_id WHERE user_id = $user_id LIMIT 1");
\TorrentPier\Sessions::cache_rm_user_sessions($user_id);
$user_rank = ($rank_id) ? '<span class="' . $ranks[$rank_id]['rank_style'] . '">' . $ranks[$rank_id]['rank_title'] . '</span>' : '';
$user_rank = $rank_id ? '<span class="' . $ranks[$rank_id]['rank_style'] . '">' . $ranks[$rank_id]['rank_title'] . '</span>' : '';
$this->response['html'] = ($rank_id) ? $lang['AWARDED_RANK'] . "<b> $user_rank </b>" : $lang['SHOT_RANK'];
$this->response['rank_name'] = ($rank_id) ? $user_rank : $lang['USER'];
$this->response['html'] = $rank_id ? $lang['AWARDED_RANK'] . "<b> $user_rank </b>" : $lang['SHOT_RANK'];
$this->response['rank_name'] = $rank_id ? $user_rank : $lang['USER'];

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,7 +11,7 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $bb_cfg, $userdata, $lang;
global $userdata, $lang;
if (!$group_id = (int)$this->request['group_id'] or !$group_info = \TorrentPier\Legacy\Group::get_group_data($group_id)) {
$this->ajax_die($lang['NO_GROUP_ID_SPECIFIED']);
@ -51,4 +51,4 @@ switch ($mode) {
}
$value_sql = DB()->escape($value, true);
DB()->query("UPDATE " . BB_GROUPS . " SET $mode = $value_sql WHERE group_id = $group_id");
DB()->query("UPDATE " . BB_GROUPS . " SET $mode = $value_sql WHERE group_id = $group_id LIMIT 1");

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,15 +11,21 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $bb_cfg, $lang;
global $lang;
if (!$user_id = (int)$this->request['user_id'] or !$profiledata = get_userdata($user_id)) {
$this->ajax_die($lang['NO_USER_ID_SPECIFIED']);
}
if (!$field = (string)$this->request['field']) {
$this->ajax_die('invalid profile field');
}
// Check for demo mode
if (IN_DEMO_MODE && in_array($field, ['username', 'user_email'])) {
$this->ajax_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
$table = BB_USERS;
$value = $this->request['value'] = (string)(isset($this->request['value'])) ? $this->request['value'] : 0;
@ -49,18 +55,17 @@ switch ($field) {
break;
case 'user_gender':
if (!$bb_cfg['gender']) {
if (!config()->get('gender')) {
$this->ajax_die($lang['MODULE_OFF']);
}
if (!isset($lang['GENDER_SELECT'][$value])) {
$this->ajax_die($lang['ERROR']);
} else {
$this->response['new_value'] = $lang['GENDER_SELECT'][$value];
}
$this->response['new_value'] = $lang['GENDER_SELECT'][$value];
break;
case 'user_birthday':
if (!$bb_cfg['birthday_enabled']) {
if (!config()->get('birthday_enabled')) {
$this->ajax_die($lang['MODULE_OFF']);
}
$birthday_date = date_parse($value);
@ -68,10 +73,10 @@ switch ($field) {
if (!empty($birthday_date['year'])) {
if (strtotime($value) >= TIMENOW) {
$this->ajax_die($lang['WRONG_BIRTHDAY_FORMAT']);
} elseif (bb_date(TIMENOW, 'Y', false) - $birthday_date['year'] > $bb_cfg['birthday_max_age']) {
$this->ajax_die(sprintf($lang['BIRTHDAY_TO_HIGH'], $bb_cfg['birthday_max_age']));
} elseif (bb_date(TIMENOW, 'Y', false) - $birthday_date['year'] < $bb_cfg['birthday_min_age']) {
$this->ajax_die(sprintf($lang['BIRTHDAY_TO_LOW'], $bb_cfg['birthday_min_age']));
} elseif (bb_date(TIMENOW, 'Y', false) - $birthday_date['year'] > config()->get('birthday_max_age')) {
$this->ajax_die(sprintf($lang['BIRTHDAY_TO_HIGH'], config()->get('birthday_max_age')));
} elseif (bb_date(TIMENOW, 'Y', false) - $birthday_date['year'] < config()->get('birthday_min_age')) {
$this->ajax_die(sprintf($lang['BIRTHDAY_TO_LOW'], config()->get('birthday_min_age')));
}
}
@ -99,20 +104,9 @@ switch ($field) {
$this->response['new_value'] = $this->request['value'];
break;
case 'user_from':
case 'user_occ':
case 'user_interests':
$value = htmlCHR($value);
$this->response['new_value'] = $value;
break;
case 'user_regdate':
case 'user_lastvisit':
$tz = TIMENOW + (3600 * $bb_cfg['board_timezone']);
if (($value = strtotime($value, $tz)) < $bb_cfg['board_startdate'] or $value > TIMENOW) {
$this->ajax_die($lang['INVALID_DATE'] . $this->request['value']);
}
$this->response['new_value'] = bb_date($value, 'Y-m-d H:i', false);
$this->response['new_value'] = htmlCHR($value);
break;
case 'u_up_total':
@ -124,7 +118,11 @@ switch ($field) {
}
$table = BB_BT_USERS;
$value = (float)str_replace(',', '.', $this->request['value']);
$value = (int)$this->request['value'];
if ($value < 0) {
$this->ajax_die($lang['WRONG_INPUT']);
}
foreach (['KB' => 1, 'MB' => 2, 'GB' => 3, 'TB' => 4, 'PB' => 5, 'EB' => 6, 'ZB' => 7, 'YB' => 8] as $s => $m) {
if (stripos($this->request['value'], $s) !== false) {
@ -132,8 +130,7 @@ switch ($field) {
break;
}
}
$value = sprintf('%.0f', $value);
$this->response['new_value'] = humn_size($value, null, null, ' ');
$this->response['new_value'] = humn_size($value, space: ' ');
$btu = get_bt_userdata($user_id);
$btu[$field] = $value;
@ -144,7 +141,7 @@ switch ($field) {
case 'user_points':
$value = (float)str_replace(',', '.', $this->request['value']);
$value = sprintf('%.2f', $value);
if (strlen(strstr($value, '.', true)) > 14) {
if ($value < 0.0 || strlen(strstr($value, '.', true)) > 14) {
$this->ajax_die($lang['WRONG_INPUT']);
}
$this->response['new_value'] = $value;
@ -155,7 +152,7 @@ switch ($field) {
}
$value_sql = DB()->escape($value, true);
DB()->query("UPDATE $table SET $field = $value_sql WHERE user_id = $user_id");
DB()->query("UPDATE $table SET $field = $value_sql WHERE user_id = $user_id LIMIT 1");
\TorrentPier\Sessions::cache_rm_user_sessions($user_id);

View file

@ -0,0 +1,154 @@
<?php
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $lang;
if (!config()->get('torr_server.enabled')) {
$this->ajax_die($lang['MODULE_OFF']);
}
if (config()->get('torr_server.disable_for_guest') && IS_GUEST) {
$this->ajax_die($lang['NEED_TO_LOGIN_FIRST']);
}
$attach_id = $this->request['attach_id'] ?? '';
if (empty($attach_id) || !is_numeric($attach_id)) {
$this->ajax_die($lang['INVALID_ATTACH_ID']);
}
$file_index = $this->request['file_index'] ?? '';
if (empty($file_index) || !is_numeric($file_index)) {
$this->ajax_die("Invalid file index: $file_index");
}
if (!$info_hash = (string)$this->request['info_hash'] or !ctype_xdigit($info_hash)) {
$this->ajax_die("Invalid info_hash: $info_hash");
}
$isAudio = isset($this->request['is_audio']) && $this->request['is_audio'];
// Get ffprobe info from TorrServer
$ffpInfo = (new \TorrentPier\TorrServerAPI())->getFfpInfo($info_hash, $file_index, $attach_id);
$ffpInfo = $ffpInfo->{$file_index};
if (isset($ffpInfo->streams)) {
// Video codec information
$videoCodecIndex = array_search('video', array_column($ffpInfo->streams, 'codec_type'));
if (is_int($videoCodecIndex)) {
$videoCodecInfo = $ffpInfo->streams[$videoCodecIndex];
}
// Audio codec information
$audioTracks = array_filter($ffpInfo->streams, function ($e) {
return $e->codec_type === 'audio';
});
// Audio tracks information
$audioDub = array_map(function ($stream) {
global $lang;
$result = '<span class="warnColor2">' . sprintf($lang['AUDIO_TRACK'], (!isset($stream->index) || $stream->index === 0) ? 1 : $stream->index) . '</span><br/>';
if (isset($stream->tags->language)) {
if (isset($stream->tags->title)) {
$result .= '<b>' . mb_strtoupper($stream->tags->language, DEFAULT_CHARSET) . ' (' . $stream->tags->title . ')' . '</b>';
} else {
$result .= '<b>' . mb_strtoupper($stream->tags->language, DEFAULT_CHARSET) . '</b>';
}
$result .= '<br/>';
}
if (!empty($stream->codec_name)) {
$result .= sprintf($lang['AUDIO_CODEC'], $stream->codec_long_name, mb_strtoupper($stream->codec_name, DEFAULT_CHARSET)) . '<br/>';
}
if (!empty($stream->bit_rate)) {
$result .= sprintf($lang['BITRATE'], humn_bitrate((int)$stream->bit_rate)) . '<br/>';
}
if (!empty($stream->sample_rate)) {
$result .= sprintf($lang['SAMPLE_RATE'], humn_sample_rate((int)$stream->sample_rate)) . '<br/>';
}
if (!empty($stream->channels)) {
$result .= sprintf($lang['CHANNELS'], $stream->channels) . '<br/>';
}
if (!empty($stream->channel_layout)) {
$result .= sprintf($lang['CHANNELS_LAYOUT'], $stream->channel_layout);
}
return $result;
}, $audioTracks);
// Generate output data
$data = [
'filesize' => sprintf($lang['FILESIZE'] . ': <b>%s</b>', humn_size($ffpInfo->format->size)),
'resolution' => (!$isAudio && isset($videoCodecInfo)) ? sprintf($lang['RESOLUTION'], $videoCodecInfo->width . 'x' . $videoCodecInfo->height) : '',
'video_codec' => (!$isAudio && isset($videoCodecInfo->codec_name)) ? sprintf($lang['VIDEO_CODEC'], $videoCodecInfo->codec_long_name, mb_strtoupper($videoCodecInfo->codec_name, DEFAULT_CHARSET)) : '',
'audio_dub' => implode('<hr/>', $audioDub)
];
// Validate output data
$result = '<hr/>';
if (!empty($data['resolution'])) {
$result .= $data['resolution'] . '<br/>';
}
if (!empty($data['filesize'])) {
$result .= $data['filesize'] . '<br/>';
}
if (!empty($data['video_codec'])) {
$result .= $data['video_codec'];
}
if (!empty($data['audio_dub'])) {
$result .= '<hr/>' . $data['audio_dub'];
}
$this->response['ffprobe_data'] = $result;
}
/**
* Bitrate to human-readable format
*
* @param int $bitrate
* @param string $space
* @return string
*/
function humn_bitrate(int $bitrate, string $space = '&nbsp;'): string
{
if ($bitrate >= 1000000) {
$unit = 'Mbps';
$bitrate /= 1000000;
} elseif ($bitrate >= 1000) {
$unit = 'kbps';
$bitrate /= 1000;
} else {
$unit = 'bps';
}
return sprintf('%d', commify($bitrate)) . $space . $unit;
}
/**
* Sample rate to human-readable format
*
* @param int $sample_rate
* @param string $space
* @return string
*/
function humn_sample_rate(int $sample_rate, string $space = '&nbsp;'): string
{
if ($sample_rate >= 1000000) {
$unit = 'Mhz';
} elseif ($sample_rate >= 1000) {
$unit = 'kHz';
} else {
$unit = 'Hz';
}
return sprintf('%.1f', commify($sample_rate)) . $space . $unit;
}
$this->response['file_index'] = $file_index;

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -38,17 +38,18 @@ switch ($mode) {
$href = GROUP_URL . $row['group_id'];
if (IS_ADMIN) {
$href .= "&amp;u=$user_id";
$href .= "&amp;" . POST_USERS_URL . "=$user_id";
$link = '<a href="' . $href . '" class="' . $class . '" target="_blank">' . htmlCHR($row['group_name']) . '</a>';
$html[] = $link;
} else {
// скрытая группа и сам юзер не является ее членом
// hidden group and the user himself is not a member of it
if ($row['group_type'] == GROUP_HIDDEN && !$row['can_view']) {
continue;
}
if ($row['group_moderator'] == $user->id) {
// the user himself is the moderator of this group
$class .= ' selfMod';
$href .= "&amp;u=$user_id"; // сам юзер модератор этой группы
$href .= "&amp;" . POST_USERS_URL . "=$user_id";
}
$link = '<a href="' . $href . '" class="' . $class . '" target="_blank">' . htmlCHR($row['group_name']) . '</a>';
$html[] = $link;

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,17 +11,19 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $bb_cfg, $lang, $userdata, $datastore;
global $lang, $userdata, $datastore;
if (!$mode = (string)$this->request['mode']) {
$this->ajax_die('invalid mode (empty)');
}
$mode = (string)$this->request['mode'];
$html = '';
switch ($mode) {
case 'birthday_week':
$stats = $datastore->get('stats');
$datastore->enqueue([
'stats'
]);
$stats = $datastore->get('stats');
$users = [];
@ -29,17 +31,17 @@ switch ($mode) {
foreach ($stats['birthday_week_list'] as $week) {
$users[] = profile_url($week) . ' <span class="small">(' . birthday_age(date('Y-m-d', strtotime('-1 year', strtotime($week['user_birthday'])))) . ')</span>';
}
$html = sprintf($lang['BIRTHDAY_WEEK'], $bb_cfg['birthday_check_day'], implode(', ', $users));
$html = sprintf($lang['BIRTHDAY_WEEK'], config()->get('birthday_check_day'), implode(', ', $users));
} else {
$html = sprintf($lang['NOBIRTHDAY_WEEK'], $bb_cfg['birthday_check_day']);
$html = sprintf($lang['NOBIRTHDAY_WEEK'], config()->get('birthday_check_day'));
}
break;
case 'birthday_today':
$stats = $datastore->get('stats');
$datastore->enqueue([
'stats'
]);
$stats = $datastore->get('stats');
$users = [];
@ -57,8 +59,7 @@ switch ($mode) {
$forum_id = (int)$this->request['forum_id'];
$datastore->enqueue([
'moderators',
'cat_forums'
'moderators'
]);
$moderators = [];
@ -82,7 +83,80 @@ switch ($mode) {
$datastore->rm('moderators');
break;
case 'null_ratio':
if (!config()->get('ratio_null_enabled') || !RATIO_ENABLED) {
$this->ajax_die($lang['MODULE_OFF']);
}
if (empty($this->request['confirmed'])) {
$this->prompt_for_confirm($lang['BT_NULL_RATIO_ALERT']);
}
$user_id = (int)$this->request['user_id'];
if (!IS_ADMIN && $user_id != $userdata['user_id']) {
$this->ajax_die($lang['NOT_AUTHORISED']);
}
$btu = get_bt_userdata($user_id);
$ratio_nulled = (bool)$btu['ratio_nulled'];
$user_ratio = get_bt_ratio($btu);
if (($user_ratio === null) && !IS_ADMIN) {
$this->ajax_die($lang['BT_NULL_RATIO_NONE']);
}
if ($ratio_nulled && !IS_ADMIN) {
$this->ajax_die($lang['BT_NULL_RATIO_AGAIN']);
}
if (($user_ratio >= config()->get('ratio_to_null')) && !IS_ADMIN) {
$this->ajax_die(sprintf($lang['BT_NULL_RATIO_NOT_NEEDED'], config()->get('ratio_to_null')));
}
$ratio_nulled_sql = !IS_ADMIN ? ', ratio_nulled = 1' : '';
DB()->query("UPDATE " . BB_BT_USERS . " SET u_up_total = 0, u_down_total = 0, u_up_release = 0, u_up_bonus = 0 $ratio_nulled_sql WHERE user_id = " . $user_id);
CACHE('bb_cache')->rm('btu_' . $user_id);
$this->ajax_die($lang['BT_NULL_RATIO_SUCCESS']);
break;
case 'releaser_stats':
if (IS_GUEST) {
$this->ajax_die($lang['NEED_TO_LOGIN_FIRST']);
}
$user_id = (int)$this->request['user_id'];
$sql = "
SELECT COUNT(tor.poster_id) as total_releases, SUM(tor.size) as total_size, SUM(tor.complete_count) as total_complete, SUM(ad.download_count) as total_dl_count
FROM " . BB_BT_TORRENTS . " tor
LEFT JOIN " . BB_USERS . " u ON(u.user_id = tor.poster_id)
LEFT JOIN " . BB_ATTACHMENTS_DESC . " ad ON(ad.attach_id = tor.attach_id)
LEFT JOIN " . BB_BT_USERS . " ut ON(ut.user_id = tor.poster_id)
WHERE u.user_id = $user_id
GROUP BY tor.poster_id
LIMIT 1
";
$total_releases_size = $total_releases = $total_releases_completed = $total_releases_downloaded = 0;
if ($row = DB()->fetch_row($sql)) {
$total_releases = $row['total_releases'];
$total_releases_size = $row['total_size'];
$total_releases_downloaded = $row['total_dl_count'];
$total_releases_completed = $row['total_complete'];
}
$html = '[
' . $lang['RELEASES'] . ': <span class="seed bold">' . $total_releases . '</span> |
' . $lang['RELEASER_STAT_SIZE'] . ' <span class="seed bold">' . humn_size($total_releases_size) . '</span> |
' . $lang['DOWNLOADED'] . ': <span title="' . $lang['COMPLETED'] . ':&nbsp;' . declension((int)$total_releases_completed, 'times') . '" class="seed bold">' . declension((int)$total_releases_downloaded, 'times') . '</span> ]';
break;
case 'get_traf_stats':
if (!RATIO_ENABLED) {
$this->ajax_die($lang['MODULE_OFF']);
}
if (IS_GUEST) {
$this->ajax_die($lang['NEED_TO_LOGIN_FIRST']);
}
$user_id = (int)$this->request['user_id'];
$btu = get_bt_userdata($user_id);
$profiledata = get_userdata($user_id);
@ -98,7 +172,7 @@ switch ($mode) {
<th>' . $lang['UPLOADED'] . '</th>
<th>' . $lang['RELEASED'] . '</th>
<th>' . $lang['BONUS'] . '</th>';
$html .= ($bb_cfg['seed_bonus_enabled']) ? '<th>' . $lang['SEED_BONUS'] . '</th>' : '';
$html .= config()->get('seed_bonus_enabled') ? '<th>' . $lang['SEED_BONUS'] . '</th>' : '';
$html .= '</tr>
<tr class="row1">
<td>' . $lang['TOTAL_TRAF'] . '</td>
@ -106,23 +180,23 @@ switch ($mode) {
<td id="u_up_total"><span class="editable bold seedmed">' . humn_size($btu['u_up_total']) . '</span></td>
<td id="u_up_release"><span class="editable bold seedmed">' . humn_size($btu['u_up_release']) . '</span></td>
<td id="u_up_bonus"><span class="editable bold seedmed">' . humn_size($btu['u_up_bonus']) . '</span></td>';
$html .= ($bb_cfg['seed_bonus_enabled']) ? '<td id="user_points"><span class="editable bold points">' . $profiledata['user_points'] . '</b></td>' : '';
$html .= config()->get('seed_bonus_enabled') ? '<td id="user_points"><span class="editable bold points">' . $profiledata['user_points'] . '</b></td>' : '';
$html .= '</tr>
<tr class="row5">
<td colspan="1">' . $lang['MAX_SPEED'] . '</td>
<td colspan="2">' . $lang['DL_DL_SPEED'] . ': ' . $speed_down . '</span></td>
<td colspan="2">' . $lang['DL_UL_SPEED'] . ': ' . $speed_up . '</span></td>';
$html .= ($bb_cfg['seed_bonus_enabled']) ? '<td colspan="1"></td>' : '';
$html .= config()->get('seed_bonus_enabled') ? '<td colspan="1"></td>' : '';
$html .= '</tr>';
$this->response['user_ratio'] = '
<th><a href="' . $bb_cfg['ratio_url_help'] . '" class="bold">' . $lang['USER_RATIO'] . '</a>:</th>
<th><a href="' . config()->get('ratio_url_help') . '" class="bold">' . $lang['USER_RATIO'] . '</a>:</th>
<td>' . $user_ratio . '</td>
';
break;
default:
$this->ajax_die('Invalid mode');
$this->ajax_die('Invalid mode: ' . $mode);
}
$this->response['html'] = $html;

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,7 +11,7 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $userdata, $lang, $bb_cfg;
global $userdata, $lang;
if (!$mode = (string)$this->request['mode']) {
$this->ajax_die('invalid mode (empty)');
@ -19,13 +19,12 @@ if (!$mode = (string)$this->request['mode']) {
switch ($mode) {
case 'clear_cache':
foreach ($bb_cfg['cache']['engines'] as $cache_name => $cache_val) {
foreach (config()->get('cache.engines') as $cache_name => $cache_val) {
CACHE($cache_name)->rm();
}
$this->response['cache_html'] = '<span class="seed bold">' . $lang['ALL_CACHE_CLEARED'] . '</span>';
break;
case 'clear_datastore':
global $datastore;
@ -33,7 +32,6 @@ switch ($mode) {
$this->response['datastore_html'] = '<span class="seed bold">' . $lang['DATASTORE_CLEARED'] . '</span>';
break;
case 'clear_template_cache':
global $template;
@ -49,53 +47,43 @@ switch ($mode) {
$this->response['template_cache_html'] = '<span class="seed bold">' . $lang['ALL_TEMPLATE_CLEARED'] . '</span>';
break;
case 'indexer':
exec("indexer --config {$bb_cfg['sphinx_config_path']} --all --rotate", $result);
exec("indexer --config " . config()->get('sphinx_config_path') . " --all --rotate", $result);
if (!is_file($bb_cfg['sphinx_config_path'] . ".log")) {
file_put_contents($bb_cfg['sphinx_config_path'] . ".log", "##############################" . date("H:i:s", TIMENOW) . "##############################\r\n\r\n\r\n\r\n", FILE_APPEND);
if (!is_file(config()->get('sphinx_config_path') . ".log")) {
file_put_contents(config()->get('sphinx_config_path') . ".log", "##############################" . date("H:i:s", TIMENOW) . "##############################\r\n\r\n\r\n\r\n", FILE_APPEND);
}
file_put_contents($bb_cfg['sphinx_config_path'] . ".log", "##############################" . date("H:i:s", TIMENOW) . "##############################\r\n", FILE_APPEND);
file_put_contents(config()->get('sphinx_config_path') . ".log", "##############################" . date("H:i:s", TIMENOW) . "##############################\r\n", FILE_APPEND);
foreach ($result as $row) {
file_put_contents($bb_cfg['sphinx_config_path'] . ".log", $row . "\r\n", FILE_APPEND);
file_put_contents(config()->get('sphinx_config_path') . ".log", $row . "\r\n", FILE_APPEND);
}
file_put_contents($bb_cfg['sphinx_config_path'] . ".log", "\r\n", FILE_APPEND);
file_put_contents($bb_cfg['sphinx_config_path'] . ".log", "\r\n", FILE_APPEND);
file_put_contents(config()->get('sphinx_config_path') . ".log", "\r\n", FILE_APPEND);
file_put_contents(config()->get('sphinx_config_path') . ".log", "\r\n", FILE_APPEND);
$this->response['indexer_html'] = '<span class="seed bold">' . $lang['INDEXER'] . '</span>';
break;
case 'update_user_level':
\TorrentPier\Legacy\Group::update_user_level('all');
$this->response['update_user_level_html'] = '<span class="seed bold">' . $lang['USER_LEVELS_UPDATED'] . '</span>';
break;
case 'sync_topics':
\TorrentPier\Legacy\Admin\Common::sync('topic', 'all');
\TorrentPier\Legacy\Admin\Common::sync_all_forums();
$this->response['sync_topics_html'] = '<span class="seed bold">' . $lang['TOPICS_DATA_SYNCHRONIZED'] . '</span>';
break;
case 'sync_user_posts':
\TorrentPier\Legacy\Admin\Common::sync('user_posts', 'all');
$this->response['sync_user_posts_html'] = '<span class="seed bold">' . $lang['USER_POSTS_COUNT_SYNCHRONIZED'] . '</span>';
break;
case 'unlock_cron':
\TorrentPier\Helpers\CronHelper::enableBoard();
$this->response['unlock_cron_html'] = '<span class="seed bold">' . $lang['ADMIN_UNLOCKED'] . '</span>';
break;
default:
$this->ajax_die('Invalid mode');
$this->ajax_die('Invalid mode: ' . $mode);
}
$this->response['mode'] = $mode;

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,7 +11,7 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $userdata, $lang, $bb_cfg;
global $userdata, $lang;
if (!$mode = (string)$this->request['mode']) {
$this->ajax_die('invalid mode (empty)');
@ -21,9 +21,13 @@ if (!$user_id = (int)$this->request['user_id']) {
$this->ajax_die($lang['NO_USER_ID_SPECIFIED']);
}
// Check for demo mode
if (IN_DEMO_MODE) {
$this->ajax_die($lang['CANT_EDIT_IN_DEMO_MODE']);
}
switch ($mode) {
case 'delete_profile':
if ($userdata['user_id'] == $user_id) {
$this->ajax_die($lang['USER_DELETE_ME']);
}
@ -31,71 +35,49 @@ switch ($mode) {
$this->prompt_for_confirm($lang['USER_DELETE_CONFIRM']);
}
if ($user_id != BOT_UID) {
if (!in_array($user_id, explode(',', EXCLUDED_USERS))) {
\TorrentPier\Sessions::delete_user_sessions($user_id);
\TorrentPier\Legacy\Admin\Common::user_delete($user_id);
$user_id = $userdata['user_id']; // Store self user_id for redirect after successful deleting
$this->response['info'] = $lang['USER_DELETED'];
} else {
$this->ajax_die($lang['USER_DELETE_CSV']);
}
break;
case 'delete_topics':
if (empty($this->request['confirmed']) && $userdata['user_id'] == $user_id) {
if ($userdata['user_id'] == $user_id) {
$this->prompt_for_confirm($lang['DELETE_USER_POSTS_ME']);
}
if (empty($this->request['confirmed'])) {
$this->prompt_for_confirm($lang['DELETE_USER_ALL_POSTS_CONFIRM']);
}
if (IS_ADMIN) {
$user_topics = DB()->fetch_rowset("SELECT topic_id FROM " . BB_TOPICS . " WHERE topic_poster = $user_id", 'topic_id');
$deleted_topics = \TorrentPier\Legacy\Admin\Common::topic_delete($user_topics);
$deleted_posts = \TorrentPier\Legacy\Admin\Common::post_delete('user', $user_id);
$this->response['info'] = $lang['USER_DELETED_POSTS'];
} else {
$this->ajax_die($lang['NOT_ADMIN']);
}
break;
case 'delete_message':
if (empty($this->request['confirmed']) && $userdata['user_id'] == $user_id) {
if ($userdata['user_id'] == $user_id) {
$this->prompt_for_confirm($lang['DELETE_USER_POSTS_ME']);
}
if (empty($this->request['confirmed'])) {
$this->prompt_for_confirm($lang['DELETE_USER_POSTS_CONFIRM']);
}
if (IS_ADMIN) {
\TorrentPier\Legacy\Admin\Common::post_delete('user', $user_id);
$this->response['info'] = $lang['USER_DELETED_POSTS'];
} else {
$this->ajax_die($lang['NOT_ADMIN']);
}
break;
case 'user_activate':
if (empty($this->request['confirmed'])) {
$this->prompt_for_confirm($lang['DEACTIVATE_CONFIRM']);
}
DB()->query("UPDATE " . BB_USERS . " SET user_active = '1' WHERE user_id = " . $user_id);
DB()->query("UPDATE " . BB_USERS . " SET user_active = 1 WHERE user_id = " . $user_id);
$this->response['info'] = $lang['USER_ACTIVATE_ON'];
break;
case 'user_deactivate':
if ($userdata['user_id'] == $user_id) {
$this->ajax_die($lang['USER_DEACTIVATE_ME']);
}
@ -103,13 +85,10 @@ switch ($mode) {
$this->prompt_for_confirm($lang['ACTIVATE_CONFIRM']);
}
DB()->query("UPDATE " . BB_USERS . " SET user_active = '0' WHERE user_id = " . $user_id);
DB()->query("UPDATE " . BB_USERS . " SET user_active = 0 WHERE user_id = " . $user_id);
\TorrentPier\Sessions::delete_user_sessions($user_id);
$this->response['info'] = $lang['USER_ACTIVATE_OFF'];
break;
default:
$this->ajax_die('Invalid mode');
}

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,7 +11,7 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $userdata, $bb_cfg, $lang, $datastore, $log_action;
global $userdata, $lang, $datastore, $log_action;
if (!$mode = (string)$this->request['mode']) {
$this->ajax_die('invalid mode (empty)');
@ -22,7 +22,7 @@ switch ($mode) {
$topics = (string)$this->request['topic_ids'];
$status = (int)$this->request['status'];
// Валидность статуса
// Check status validity
if (!isset($lang['TOR_STATUS_NAME'][$status])) {
$this->ajax_die($lang['TOR_STATUS_FAILED']);
}
@ -30,9 +30,29 @@ switch ($mode) {
$topic_ids = DB()->fetch_rowset("SELECT attach_id FROM " . BB_BT_TORRENTS . " WHERE topic_id IN($topics)", 'attach_id');
foreach ($topic_ids as $attach_id) {
\TorrentPier\Legacy\Torrent::change_tor_status($attach_id, $status);
$tor = DB()->fetch_row("
SELECT
tor.forum_id, tor.topic_id, t.topic_title, tor.tor_status
FROM " . BB_BT_TORRENTS . " tor
INNER JOIN " . BB_TOPICS . " t ON(t.topic_id = tor.topic_id)
WHERE tor.attach_id = $attach_id LIMIT 1");
if (!$tor) {
$this->ajax_die($lang['TORRENT_FAILED']);
}
$this->response['status'] = $bb_cfg['tor_icons'][$status];
\TorrentPier\Legacy\Torrent::change_tor_status($attach_id, $status);
// Log action
$log_msg = sprintf($lang['TOR_STATUS_LOG_ACTION'], config()->get('tor_icons')[$status] . ' <b> ' . $lang['TOR_STATUS_NAME'][$status] . '</b>', config()->get('tor_icons')[$tor['tor_status']] . ' <b> ' . $lang['TOR_STATUS_NAME'][$tor['tor_status']] . '</b>');
$log_action->mod('mod_topic_change_tor_status', [
'forum_id' => $tor['forum_id'],
'topic_id' => $tor['topic_id'],
'topic_title' => $tor['topic_title'],
'log_msg' => $log_msg . '<br/>-------------',
]);
}
$this->response['status'] = config()->get('tor_icons')[$status];
$this->response['topics'] = explode(',', $topics);
break;
@ -57,16 +77,20 @@ switch ($mode) {
DB()->query("UPDATE " . BB_TOPICS . " SET topic_title = '$topic_title_sql' WHERE topic_id = $topic_id LIMIT 1");
// Обновление кеша новостей на главной
$news_forums = array_flip(explode(',', $bb_cfg['latest_news_forum_id']));
if (isset($news_forums[$t_data['forum_id']]) && $bb_cfg['show_latest_news']) {
$datastore->enqueue('latest_news');
// Update the news cache on the index page
$news_forums = array_flip(explode(',', config()->get('latest_news_forum_id')));
if (isset($news_forums[$t_data['forum_id']]) && config()->get('show_latest_news')) {
$datastore->enqueue([
'latest_news'
]);
$datastore->update('latest_news');
}
$net_forums = array_flip(explode(',', $bb_cfg['network_news_forum_id']));
if (isset($net_forums[$t_data['forum_id']]) && $bb_cfg['show_network_news']) {
$datastore->enqueue('network_news');
$net_forums = array_flip(explode(',', config()->get('network_news_forum_id')));
if (isset($net_forums[$t_data['forum_id']]) && config()->get('show_network_news')) {
$datastore->enqueue([
'network_news'
]);
$datastore->update('network_news');
}
@ -74,6 +98,7 @@ switch ($mode) {
$log_action->mod('mod_topic_renamed', [
'forum_id' => $t_data['forum_id'],
'topic_id' => $topic_id,
'topic_id_new' => $topic_id,
'topic_title' => $old_title,
'topic_title_new' => $new_title
]);
@ -126,8 +151,8 @@ switch ($mode) {
} else {
$user_reg_ip = \TorrentPier\Helpers\IPHelper::long2ip_extended($profiledata['user_reg_ip']);
$user_last_ip = \TorrentPier\Helpers\IPHelper::long2ip_extended($profiledata['user_last_ip']);
$reg_ip = '<a href="' . $bb_cfg['whois_info'] . $user_reg_ip . '" class="gen" target="_blank">' . $user_reg_ip . '</a>';
$last_ip = '<a href="' . $bb_cfg['whois_info'] . $user_last_ip . '" class="gen" target="_blank">' . $user_last_ip . '</a>';
$reg_ip = '<a href="' . config()->get('whois_info') . $user_reg_ip . '" class="gen" target="_blank">' . $user_reg_ip . '</a>';
$last_ip = '<a href="' . config()->get('whois_info') . $user_last_ip . '" class="gen" target="_blank">' . $user_last_ip . '</a>';
}
$this->response['ip_list_html'] = '
@ -147,5 +172,5 @@ switch ($mode) {
break;
default:
$this->ajax_die('Invalid mode');
$this->ajax_die('Invalid mode: ' . $mode);
}

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -13,11 +13,19 @@ if (!defined('IN_AJAX')) {
global $userdata, $lang;
$req_uid = (int)$this->request['user_id'];
$mode = (string)$this->request['mode'];
if (!$mode = (string)$this->request['mode']) {
$this->ajax_die('invalid mode (empty)');
}
if ($req_uid == $userdata['user_id'] || IS_ADMIN) {
switch ($mode) {
if (!$req_uid = (int)$this->request['user_id']) {
$this->ajax_die($lang['NO_USER_ID_SPECIFIED']);
}
if (!IS_ADMIN && $req_uid != $userdata['user_id']) {
$this->ajax_die($lang['NOT_AUTHORISED']);
}
switch ($mode) {
case 'generate':
if (empty($this->request['confirmed'])) {
$this->prompt_for_confirm($lang['BT_GEN_PASSKEY_NEW']);
@ -28,12 +36,8 @@ if ($req_uid == $userdata['user_id'] || IS_ADMIN) {
}
\TorrentPier\Legacy\Torrent::tracker_rm_user($req_uid);
$this->response['passkey'] = $passkey;
break;
default:
$this->ajax_die('Invalid mode');
}
} else {
$this->ajax_die($lang['NOT_AUTHORISED']);
$this->ajax_die('Invalid mode: ' . $mode);
}

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -16,7 +16,7 @@ global $lang, $userdata;
$post_id = (int)$this->request['post_id'];
$mc_type = (int)$this->request['mc_type'];
$mc_text = (string)$this->request['mc_text'];
if (!$mc_text = prepare_message($mc_text)) {
if ($mc_type != 0 && !$mc_text = prepare_message($mc_text)) {
$this->ajax_die($lang['EMPTY_MESSAGE']);
}
@ -46,23 +46,13 @@ if ($mc_type && $post['poster_id'] != $userdata['user_id']) {
\TorrentPier\Sessions::cache_rm_user_sessions($post['poster_id']);
}
switch ($mc_type) {
case 1: // Комментарий
$mc_class = 'success';
break;
case 2: // Информация
$mc_class = 'info';
break;
case 3: // Предупреждение
$mc_class = 'warning';
break;
case 4: // Нарушение
$mc_class = 'danger';
break;
default:
$mc_class = '';
break;
}
$mc_class = match ($mc_type) {
1 => 'success',
2 => 'info',
3 => 'warning',
4 => 'danger',
default => '',
};
$this->response['mc_type'] = $mc_type;
$this->response['post_id'] = $post_id;

View file

@ -2,7 +2,7 @@
/**
* TorrentPier Bull-powered BitTorrent tracker engine
*
* @copyright Copyright (c) 2005-2023 TorrentPier (https://torrentpier.com)
* @copyright Copyright (c) 2005-2025 TorrentPier (https://torrentpier.com)
* @link https://github.com/torrentpier/torrentpier for the canonical source repository
* @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License
*/
@ -11,7 +11,7 @@ if (!defined('IN_AJAX')) {
die(basename(__FILE__));
}
global $lang, $bb_cfg, $userdata;
global $lang, $userdata;
if (!isset($this->request['type'])) {
$this->ajax_die('empty type');
@ -47,13 +47,6 @@ if (isset($this->request['post_id'])) {
$is_auth = auth(AUTH_ALL, $post['forum_id'], $userdata, $post);
}
if (!defined('WORD_LIST_OBTAINED')) {
$orig_word = [];
$replace_word = [];
obtain_word_list($orig_word, $replace_word);
define('WORD_LIST_OBTAINED', true);
}
switch ($this->request['type']) {
case 'delete':
if ($post['post_id'] != $post['topic_first_post_id'] && $is_auth['auth_delete'] && ($is_auth['auth_mod'] || ($userdata['user_id'] == $post['poster_id'] && $post['topic_last_post_id'] == $post['post_id'] && $post['post_time'] + 3600 * 3 > TIMENOW))) {
@ -83,19 +76,17 @@ switch ($this->request['type']) {
$message = "[quote=\"" . $quote_username . "\"][qpost=" . $post['post_id'] . "]" . $post['post_text'] . "[/quote]\r";
// hide user passkey
$message = preg_replace('#(?<=\?uk=)[a-zA-Z0-9]{10}(?=&)#', 'passkey', $message);
$message = preg_replace('#(?<=[\?&;]' . config()->get('passkey_key') . '=)[a-zA-Z0-9]#', 'passkey', $message);
// hide sid
$message = preg_replace('#(?<=[\?&;]sid=)[a-zA-Z0-9]{12}#', 'sid', $message);
$message = preg_replace('#(?<=[\?&;]sid=)[a-zA-Z0-9]#', 'sid', $message);
if (!empty($orig_word)) {
$message = (!empty($message)) ? preg_replace($orig_word, $replace_word, $message) : '';
}
$message = censor()->censorString($message);
if ($post['post_id'] == $post['topic_first_post_id']) {
$message = "[quote]" . $post['topic_title'] . "[/quote]\r";
}
if (mb_strlen($message, 'UTF-8') > 1000) {
$this->response['redirect'] = make_url(POSTING_URL . '?mode=quote&p=' . $post_id);
if (mb_strlen($message, DEFAULT_CHARSET) > 1000) {
$this->response['redirect'] = make_url(POSTING_URL . '?mode=quote&' . POST_POST_URL . '=' . $post_id);
}
$this->response['quote'] = true;
@ -121,18 +112,18 @@ switch ($this->request['type']) {
if ($post['poster_id'] != $userdata['user_id'] && !$is_auth['auth_mod']) {
$this->ajax_die($lang['EDIT_OWN_POSTS']);
}
if ((mb_strlen($post['post_text'], 'UTF-8') > 1000) || $post['post_attachment'] || ($post['topic_first_post_id'] == $post_id)) {
$this->response['redirect'] = make_url(POSTING_URL . '?mode=editpost&p=' . $post_id);
if ((mb_strlen($post['post_text'], DEFAULT_CHARSET) > 1000) || $post['post_attachment'] || ($post['topic_first_post_id'] == $post_id)) {
$this->response['redirect'] = make_url(POSTING_URL . '?mode=editpost&' . POST_POST_URL . '=' . $post_id);
} elseif ($this->request['type'] == 'editor') {
$text = (string)$this->request['text'];
$text = prepare_message($text);
if (mb_strlen($text) > 2) {
if ($text != $post['post_text']) {
if ($bb_cfg['max_smilies']) {
$count_smilies = substr_count(bbcode2html($text), '<img class="smile" src="' . $bb_cfg['smilies_path']);
if ($count_smilies > $bb_cfg['max_smilies']) {
$this->ajax_die(sprintf($lang['MAX_SMILIES_PER_POST'], $bb_cfg['max_smilies']));
if (config()->get('max_smilies')) {
$count_smilies = substr_count(bbcode2html($text), '<img class="smile" src="' . config()->get('smilies_path'));
if ($count_smilies > config()->get('max_smilies')) {
$this->ajax_die(sprintf($lang['MAX_SMILIES_PER_POST'], config()->get('max_smilies')));
}
}
DB()->query("UPDATE " . BB_POSTS_TEXT . " SET post_text = '" . DB()->escape($text) . "' WHERE post_id = $post_id LIMIT 1");
@ -188,7 +179,7 @@ switch ($this->request['type']) {
<input title="Alt+Enter" name="preview" type="submit" value="' . $lang['PREVIEW'] . '">
<input type="button" onclick="edit_post(' . $post_id . ');" value="' . $lang['CANCEL'] . '">
<input type="button" onclick="edit_post(' . $post_id . ', \'editor\', $(\'#message-' . $post_id . '\').val()); return false;" class="bold" value="' . $lang['SUBMIT'] . '">
</div><hr>
</div><hr/>
<script type="text/javascript">
var bbcode = new BBCode("message-' . $post_id . '");
var ctrl = "ctrl";
@ -234,7 +225,7 @@ switch ($this->request['type']) {
$sql = "SELECT MAX(p.post_time) AS last_post_time FROM " . BB_POSTS . " p WHERE $where_sql";
if ($row = DB()->fetch_row($sql) and $row['last_post_time']) {
if ($userdata['user_level'] == USER) {
if ((TIMENOW - $row['last_post_time']) < $bb_cfg['flood_interval']) {
if ((TIMENOW - $row['last_post_time']) < config()->get('flood_interval')) {
$this->ajax_die($lang['FLOOD_ERROR']);
}
}
@ -260,10 +251,10 @@ switch ($this->request['type']) {
}
}
if ($bb_cfg['max_smilies']) {
$count_smilies = substr_count(bbcode2html($message), '<img class="smile" src="' . $bb_cfg['smilies_path']);
if ($count_smilies > $bb_cfg['max_smilies']) {
$this->ajax_die(sprintf($lang['MAX_SMILIES_PER_POST'], $bb_cfg['max_smilies']));
if (config()->get('max_smilies')) {
$count_smilies = substr_count(bbcode2html($message), '<img class="smile" src="' . config()->get('smilies_path'));
if ($count_smilies > config()->get('max_smilies')) {
$this->ajax_die(sprintf($lang['MAX_SMILIES_PER_POST'], config()->get('max_smilies')));
}
}
@ -281,7 +272,7 @@ switch ($this->request['type']) {
'post_text' => $message
]);
if ($bb_cfg['topic_notify_enabled']) {
if (config()->get('topic_notify_enabled')) {
$notify = !empty($this->request['notify']);
\TorrentPier\Legacy\Post::user_notification('reply', $post, $post['topic_title'], $post['forum_id'], $topic_id, $notify);
}

Some files were not shown because too many files have changed in this diff Show more