mirror of
https://github.com/ad-aures/castopod.git
synced 2026-04-14 20:17:46 +02:00
feat: set min PHP version to 8.5 + upgrade CI4 to 4.7
update all dependencies to latest
This commit is contained in:
parent
6b302ad8bf
commit
ed57e13b40
109 changed files with 577 additions and 381 deletions
|
|
@ -4,7 +4,7 @@
|
|||
# ⚠️ NOT optimized for production
|
||||
# should be used only for development purposes
|
||||
#---------------------------------------------------
|
||||
FROM php:8.4-fpm
|
||||
FROM php:8.5-fpm
|
||||
|
||||
LABEL maintainer="Yassine Doghri <yassine@doghri.fr>"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
image: code.castopod.org:5050/adaures/castopod:ci-php8.4
|
||||
image: code.castopod.org:5050/adaures/castopod:ci-php8.5
|
||||
|
||||
stages:
|
||||
- prepare
|
||||
|
|
|
|||
|
|
@ -8,6 +8,19 @@ use CodeIgniter\Config\BaseConfig;
|
|||
|
||||
class CURLRequest extends BaseConfig
|
||||
{
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* CURLRequest Share Connection Options
|
||||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* Share connection options between requests.
|
||||
*
|
||||
* @var list<int>
|
||||
*
|
||||
* @see https://www.php.net/manual/en/curl.constants.php#constant.curl-lock-data-connect
|
||||
*/
|
||||
public array $shareConnectionOptions = [CURL_LOCK_DATA_CONNECT, CURL_LOCK_DATA_DNS];
|
||||
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* CURLRequest Share Options
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ declare(strict_types=1);
|
|||
namespace Config;
|
||||
|
||||
use CodeIgniter\Cache\CacheInterface;
|
||||
use CodeIgniter\Cache\Handlers\ApcuHandler;
|
||||
use CodeIgniter\Cache\Handlers\DummyHandler;
|
||||
use CodeIgniter\Cache\Handlers\FileHandler;
|
||||
use CodeIgniter\Cache\Handlers\MemcachedHandler;
|
||||
|
|
@ -113,14 +114,24 @@ class Cache extends BaseConfig
|
|||
* Your Redis server can be specified below, if you are using
|
||||
* the Redis or Predis drivers.
|
||||
*
|
||||
* @var array{host?: string, password?: string|null, port?: int, timeout?: int, database?: int}
|
||||
* @var array{
|
||||
* host?: string,
|
||||
* password?: string|null,
|
||||
* port?: int,
|
||||
* timeout?: int,
|
||||
* async?: bool,
|
||||
* persistent?: bool,
|
||||
* database?: int
|
||||
* }
|
||||
*/
|
||||
public array $redis = [
|
||||
'host' => '127.0.0.1',
|
||||
'password' => null,
|
||||
'port' => 6379,
|
||||
'timeout' => 0,
|
||||
'database' => 0,
|
||||
'host' => '127.0.0.1',
|
||||
'password' => null,
|
||||
'port' => 6379,
|
||||
'timeout' => 0,
|
||||
'async' => false, // specific to Predis and ignored by the native Redis extension
|
||||
'persistent' => false,
|
||||
'database' => 0,
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
@ -134,6 +145,7 @@ class Cache extends BaseConfig
|
|||
* @var array<string, class-string<CacheInterface>>
|
||||
*/
|
||||
public array $validHandlers = [
|
||||
'apcu' => ApcuHandler::class,
|
||||
'dummy' => DummyHandler::class,
|
||||
'file' => FileHandler::class,
|
||||
'memcached' => MemcachedHandler::class,
|
||||
|
|
@ -160,4 +172,28 @@ class Cache extends BaseConfig
|
|||
* @var bool|list<string>
|
||||
*/
|
||||
public $cacheQueryString = false;
|
||||
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* Web Page Caching: Cache Status Codes
|
||||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* HTTP status codes that are allowed to be cached. Only responses with
|
||||
* these status codes will be cached by the PageCache filter.
|
||||
*
|
||||
* Default: [] - Cache all status codes (backward compatible)
|
||||
*
|
||||
* Recommended: [200] - Only cache successful responses
|
||||
*
|
||||
* You can also use status codes like:
|
||||
* [200, 404, 410] - Cache successful responses and specific error codes
|
||||
* [200, 201, 202, 203, 204] - All 2xx successful responses
|
||||
*
|
||||
* WARNING: Using [] may cache temporary error pages (404, 500, etc).
|
||||
* Consider restricting to [200] for production applications to avoid
|
||||
* caching errors that should be temporary.
|
||||
*
|
||||
* @var list<int>
|
||||
*/
|
||||
public array $cacheStatusCodes = [];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,14 +26,24 @@ class ContentSecurityPolicy extends BaseConfig
|
|||
*/
|
||||
public ?string $reportURI = null;
|
||||
|
||||
/**
|
||||
* Specifies a reporting endpoint to which violation reports ought to be sent.
|
||||
*/
|
||||
public ?string $reportTo = null;
|
||||
|
||||
/**
|
||||
* Instructs user agents to rewrite URL schemes, changing HTTP to HTTPS. This directive is for websites with large
|
||||
* numbers of old URLs that need to be rewritten.
|
||||
*/
|
||||
public bool $upgradeInsecureRequests = false;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// CSP DIRECTIVES SETTINGS
|
||||
// NOTE: once you set a policy to 'none', it cannot be further restricted
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Will default to self if not overridden
|
||||
* Will default to `'self'` if not overridden
|
||||
*
|
||||
* @var list<string>|string|null
|
||||
*/
|
||||
|
|
@ -46,6 +56,21 @@ class ContentSecurityPolicy extends BaseConfig
|
|||
*/
|
||||
public string | array $scriptSrc = 'self';
|
||||
|
||||
/**
|
||||
* Specifies valid sources for JavaScript <script> elements.
|
||||
*
|
||||
* @var list<string>|string
|
||||
*/
|
||||
public array|string $scriptSrcElem = 'self';
|
||||
|
||||
/**
|
||||
* Specifies valid sources for JavaScript inline event
|
||||
* handlers and JavaScript URLs.
|
||||
*
|
||||
* @var list<string>|string
|
||||
*/
|
||||
public array|string $scriptSrcAttr = 'self';
|
||||
|
||||
/**
|
||||
* Lists allowed stylesheets' URLs.
|
||||
*
|
||||
|
|
@ -53,6 +78,21 @@ class ContentSecurityPolicy extends BaseConfig
|
|||
*/
|
||||
public string | array $styleSrc = 'self';
|
||||
|
||||
/**
|
||||
* Specifies valid sources for stylesheets <link> elements.
|
||||
*
|
||||
* @var list<string>|string
|
||||
*/
|
||||
public array|string $styleSrcElem = 'self';
|
||||
|
||||
/**
|
||||
* Specifies valid sources for stylesheets inline
|
||||
* style attributes and `<style>` elements.
|
||||
*
|
||||
* @var list<string>|string
|
||||
*/
|
||||
public array|string $styleSrcAttr = 'self';
|
||||
|
||||
/**
|
||||
* Defines the origins from which images can be loaded.
|
||||
*
|
||||
|
|
@ -132,6 +172,11 @@ class ContentSecurityPolicy extends BaseConfig
|
|||
*/
|
||||
public string | array | null $manifestSrc = null;
|
||||
|
||||
/**
|
||||
* @var list<string>|string
|
||||
*/
|
||||
public array|string $workerSrc = [];
|
||||
|
||||
/**
|
||||
* Limits the kinds of plugins a page may invoke.
|
||||
*
|
||||
|
|
@ -147,17 +192,17 @@ class ContentSecurityPolicy extends BaseConfig
|
|||
public string | array | null $sandbox = null;
|
||||
|
||||
/**
|
||||
* Nonce tag for style
|
||||
* Nonce placeholder for style tags.
|
||||
*/
|
||||
public string $styleNonceTag = '{csp-style-nonce}';
|
||||
|
||||
/**
|
||||
* Nonce tag for script
|
||||
* Nonce placeholder for script tags.
|
||||
*/
|
||||
public string $scriptNonceTag = '{csp-script-nonce}';
|
||||
|
||||
/**
|
||||
* Replace nonce tag automatically
|
||||
* Replace nonce tag automatically?
|
||||
*/
|
||||
public bool $autoNonce = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,11 @@ class Email extends BaseConfig
|
|||
*/
|
||||
public string $SMTPHost = '';
|
||||
|
||||
/**
|
||||
* Which SMTP authentication method to use: login, plain
|
||||
*/
|
||||
public string $SMTPAuthMethod = 'login';
|
||||
|
||||
/**
|
||||
* SMTP Username
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -25,6 +25,23 @@ class Encryption extends BaseConfig
|
|||
*/
|
||||
public string $key = '';
|
||||
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* Previous Encryption Keys
|
||||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* When rotating encryption keys, add old keys here to maintain ability
|
||||
* to decrypt data encrypted with previous keys. Encryption always uses
|
||||
* the current $key. Decryption tries current key first, then falls back
|
||||
* to previous keys if decryption fails.
|
||||
*
|
||||
* In .env file, use comma-separated string:
|
||||
* encryption.previousKeys = hex2bin:9be8c64fcea509867...,hex2bin:3f5a1d8e9c2b7a4f6...
|
||||
*
|
||||
* @var list<string>|string
|
||||
*/
|
||||
public array|string $previousKeys = '';
|
||||
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* Encryption Driver to Use
|
||||
|
|
|
|||
|
|
@ -63,4 +63,13 @@ class Format extends BaseConfig
|
|||
'application/xml' => 0,
|
||||
'text/xml' => 0,
|
||||
];
|
||||
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* Maximum depth for JSON encoding.
|
||||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* This value determines how deep the JSON encoder will traverse nested structures.
|
||||
*/
|
||||
public int $jsonEncodeDepth = 512;
|
||||
}
|
||||
|
|
|
|||
42
app/Config/Hostnames.php
Normal file
42
app/Config/Hostnames.php
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Config;
|
||||
|
||||
class Hostnames
|
||||
{
|
||||
// List of known two-part TLDs for subdomain extraction
|
||||
public const TWO_PART_TLDS = [
|
||||
'co.uk', 'org.uk', 'gov.uk', 'ac.uk', 'sch.uk', 'ltd.uk', 'plc.uk',
|
||||
'com.au', 'net.au', 'org.au', 'edu.au', 'gov.au', 'asn.au', 'id.au',
|
||||
'co.jp', 'ac.jp', 'go.jp', 'or.jp', 'ne.jp', 'gr.jp',
|
||||
'co.nz', 'org.nz', 'govt.nz', 'ac.nz', 'net.nz', 'geek.nz', 'maori.nz', 'school.nz',
|
||||
'co.in', 'net.in', 'org.in', 'ind.in', 'ac.in', 'gov.in', 'res.in',
|
||||
'com.cn', 'net.cn', 'org.cn', 'gov.cn', 'edu.cn',
|
||||
'com.sg', 'net.sg', 'org.sg', 'gov.sg', 'edu.sg', 'per.sg',
|
||||
'co.za', 'org.za', 'gov.za', 'ac.za', 'net.za',
|
||||
'co.kr', 'or.kr', 'go.kr', 'ac.kr', 'ne.kr', 'pe.kr',
|
||||
'co.th', 'or.th', 'go.th', 'ac.th', 'net.th', 'in.th',
|
||||
'com.my', 'net.my', 'org.my', 'edu.my', 'gov.my', 'mil.my', 'name.my',
|
||||
'com.mx', 'org.mx', 'net.mx', 'edu.mx', 'gob.mx',
|
||||
'com.br', 'net.br', 'org.br', 'gov.br', 'edu.br', 'art.br', 'eng.br',
|
||||
'co.il', 'org.il', 'ac.il', 'gov.il', 'net.il', 'muni.il',
|
||||
'co.id', 'or.id', 'ac.id', 'go.id', 'net.id', 'web.id', 'my.id',
|
||||
'com.hk', 'edu.hk', 'gov.hk', 'idv.hk', 'net.hk', 'org.hk',
|
||||
'com.tw', 'net.tw', 'org.tw', 'edu.tw', 'gov.tw', 'idv.tw',
|
||||
'com.sa', 'net.sa', 'org.sa', 'gov.sa', 'edu.sa', 'sch.sa', 'med.sa',
|
||||
'co.ae', 'net.ae', 'org.ae', 'gov.ae', 'ac.ae', 'sch.ae',
|
||||
'com.tr', 'net.tr', 'org.tr', 'gov.tr', 'edu.tr', 'av.tr', 'gen.tr',
|
||||
'co.ke', 'or.ke', 'go.ke', 'ac.ke', 'sc.ke', 'me.ke', 'mobi.ke', 'info.ke',
|
||||
'com.ng', 'org.ng', 'gov.ng', 'edu.ng', 'net.ng', 'sch.ng', 'name.ng',
|
||||
'com.pk', 'net.pk', 'org.pk', 'gov.pk', 'edu.pk', 'fam.pk',
|
||||
'com.eg', 'edu.eg', 'gov.eg', 'org.eg', 'net.eg',
|
||||
'com.cy', 'net.cy', 'org.cy', 'gov.cy', 'ac.cy',
|
||||
'com.lk', 'org.lk', 'edu.lk', 'gov.lk', 'net.lk', 'int.lk',
|
||||
'com.bd', 'net.bd', 'org.bd', 'ac.bd', 'gov.bd', 'mil.bd',
|
||||
'com.ar', 'net.ar', 'org.ar', 'gov.ar', 'edu.ar', 'mil.ar',
|
||||
'gob.cl', 'com.pl', 'net.pl', 'org.pl', 'gov.pl', 'edu.pl',
|
||||
'co.ir', 'ac.ir', 'org.ir', 'id.ir', 'gov.ir', 'sch.ir', 'net.ir',
|
||||
];
|
||||
}
|
||||
|
|
@ -17,6 +17,8 @@ class Images extends BaseConfig
|
|||
|
||||
/**
|
||||
* The path to the image library. Required for ImageMagick, GraphicsMagick, or NetPBM.
|
||||
*
|
||||
* @deprecated 4.7.0 No longer used.
|
||||
*/
|
||||
public string $libraryPath = '/usr/local/bin/convert';
|
||||
|
||||
|
|
|
|||
|
|
@ -46,4 +46,19 @@ class Migrations extends BaseConfig
|
|||
* - Y_m_d_His_
|
||||
*/
|
||||
public string $timestampFormat = 'Y-m-d-His_';
|
||||
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* Enable/Disable Migration Lock
|
||||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* Locking is disabled by default.
|
||||
*
|
||||
* When enabled, it will prevent multiple migration processes
|
||||
* from running at the same time by using a lock mechanism.
|
||||
*
|
||||
* This is useful in production environments to avoid conflicts
|
||||
* or race conditions during concurrent deployments.
|
||||
*/
|
||||
public bool $lock = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ namespace Config;
|
|||
*
|
||||
* NOTE: This class does not extend BaseConfig for performance reasons.
|
||||
* So you cannot replace the property values with Environment Variables.
|
||||
*
|
||||
* WARNING: Do not use these options when running the app in the Worker Mode.
|
||||
*/
|
||||
class Optimize
|
||||
{
|
||||
|
|
|
|||
|
|
@ -98,6 +98,15 @@ class Routing extends BaseRouting
|
|||
*/
|
||||
public bool $autoRoute = false;
|
||||
|
||||
/**
|
||||
* If TRUE, the system will look for attributes on controller
|
||||
* class and methods that can run before and after the
|
||||
* controller/method.
|
||||
*
|
||||
* If FALSE, will ignore any attributes.
|
||||
*/
|
||||
public bool $useControllerAttributes = true;
|
||||
|
||||
/**
|
||||
* For Defined Routes.
|
||||
* If TRUE, will enable the use of the 'prioritize' option
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ class Session extends BaseConfig
|
|||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* The session storage driver to use:
|
||||
* - `CodeIgniter\Session\Handlers\ArrayHandler` (for testing)
|
||||
* - `CodeIgniter\Session\Handlers\FileHandler`
|
||||
* - `CodeIgniter\Session\Handlers\DatabaseHandler`
|
||||
* - `CodeIgniter\Session\Handlers\MemcachedHandler`
|
||||
|
|
|
|||
|
|
@ -117,4 +117,29 @@ class Toolbar extends BaseConfig
|
|||
* @var list<string>
|
||||
*/
|
||||
public array $watchedExtensions = ['php', 'css', 'js', 'html', 'svg', 'json', 'env'];
|
||||
|
||||
/**
|
||||
* --------------------------------------------------------------------------
|
||||
* Ignored HTTP Headers
|
||||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* CodeIgniter Debug Toolbar normally injects HTML and JavaScript into every
|
||||
* HTML response. This is correct for full page loads, but it breaks requests
|
||||
* that expect only a clean HTML fragment.
|
||||
*
|
||||
* Libraries like HTMX, Unpoly, and Hotwire (Turbo) update parts of the page or
|
||||
* manage navigation on the client side. Injecting the Debug Toolbar into their
|
||||
* responses can cause invalid HTML, duplicated scripts, or JavaScript errors
|
||||
* (such as infinite loops or "Maximum call stack size exceeded").
|
||||
*
|
||||
* Any request containing one of the following headers is treated as a
|
||||
* client-managed or partial request, and the Debug Toolbar injection is skipped.
|
||||
*
|
||||
* @var array<string, string|null>
|
||||
*/
|
||||
public array $disableOnHeaders = [
|
||||
'X-Requested-With' => 'xmlhttprequest', // AJAX requests
|
||||
'HX-Request' => 'true', // HTMX requests
|
||||
'X-Up-Version' => null, // Unpoly partial requests
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -232,9 +232,13 @@ class UserAgents extends BaseConfig
|
|||
*/
|
||||
public array $robots = [
|
||||
'googlebot' => 'Googlebot',
|
||||
'google-pagerenderer' => 'Google Page Renderer',
|
||||
'google-read-aloud' => 'Google Read Aloud',
|
||||
'google-safety' => 'Google Safety Bot',
|
||||
'msnbot' => 'MSNBot',
|
||||
'baiduspider' => 'Baiduspider',
|
||||
'bingbot' => 'Bing',
|
||||
'bingpreview' => 'BingPreview',
|
||||
'slurp' => 'Inktomi Slurp',
|
||||
'yahoo' => 'Yahoo',
|
||||
'ask jeeves' => 'Ask Jeeves',
|
||||
|
|
@ -250,5 +254,11 @@ class UserAgents extends BaseConfig
|
|||
'ia_archiver' => 'Alexa Crawler',
|
||||
'MJ12bot' => 'Majestic-12',
|
||||
'Uptimebot' => 'Uptimebot',
|
||||
'duckduckbot' => 'DuckDuckBot',
|
||||
'sogou' => 'Sogou Spider',
|
||||
'exabot' => 'Exabot',
|
||||
'bot' => 'Generic Bot',
|
||||
'crawler' => 'Generic Crawler',
|
||||
'spider' => 'Generic Spider',
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,4 +54,21 @@ class View extends BaseView
|
|||
* @var list<class-string<ViewDecoratorInterface>>
|
||||
*/
|
||||
public array $decorators = [Decorator::class];
|
||||
|
||||
/**
|
||||
* Subdirectory within app/Views for namespaced view overrides.
|
||||
*
|
||||
* Namespaced views will be searched in:
|
||||
*
|
||||
* app/Views/{$appOverridesFolder}/{Namespace}/{view_path}.{php|html...}
|
||||
*
|
||||
* This allows application-level overrides for package or module views
|
||||
* without modifying vendor source files.
|
||||
*
|
||||
* Examples:
|
||||
* 'overrides' -> app/Views/overrides/Example/Blog/post/card.php
|
||||
* 'vendor' -> app/Views/vendor/Example/Blog/post/card.php
|
||||
* '' -> app/Views/Example/Blog/post/card.php (direct mapping)
|
||||
*/
|
||||
public string $appOverridesFolder = 'overrides';
|
||||
}
|
||||
|
|
|
|||
52
app/Config/WorkerMode.php
Normal file
52
app/Config/WorkerMode.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Config;
|
||||
|
||||
/**
|
||||
* This configuration controls how CodeIgniter behaves when running
|
||||
* in worker mode (with FrankenPHP).
|
||||
*/
|
||||
class WorkerMode
|
||||
{
|
||||
/**
|
||||
* Persistent Services
|
||||
*
|
||||
* List of service names that should persist across requests.
|
||||
* These services will NOT be reset between requests.
|
||||
*
|
||||
* Services not in this list will be reset for each request to prevent
|
||||
* state leakage.
|
||||
*
|
||||
* Recommended persistent services:
|
||||
* - `autoloader`: PSR-4 autoloading configuration
|
||||
* - `locator`: File locator
|
||||
* - `exceptions`: Exception handler
|
||||
* - `commands`: CLI commands registry
|
||||
* - `codeigniter`: Main application instance
|
||||
* - `superglobals`: Superglobals wrapper
|
||||
* - `routes`: Router configuration
|
||||
* - `cache`: Cache instance
|
||||
*
|
||||
* @var list<string>
|
||||
*/
|
||||
public array $persistentServices = [
|
||||
'autoloader',
|
||||
'locator',
|
||||
'exceptions',
|
||||
'commands',
|
||||
'codeigniter',
|
||||
'superglobals',
|
||||
'routes',
|
||||
'cache',
|
||||
];
|
||||
|
||||
/**
|
||||
* Force Garbage Collection
|
||||
*
|
||||
* Whether to force garbage collection after each request.
|
||||
* Helps prevent memory leaks at a small performance cost.
|
||||
*/
|
||||
public bool $forceGarbageCollection = true;
|
||||
}
|
||||
|
|
@ -145,11 +145,9 @@ class EpisodeCommentController extends BaseController
|
|||
$pager = $commentReplies->pager;
|
||||
|
||||
$orderedItems = [];
|
||||
if ($paginatedReplies !== null) {
|
||||
foreach ($paginatedReplies as $reply) {
|
||||
$replyObject = new CommentObject($reply);
|
||||
$orderedItems[] = $replyObject;
|
||||
}
|
||||
foreach ($paginatedReplies as $reply) {
|
||||
$replyObject = new CommentObject($reply);
|
||||
$orderedItems[] = $replyObject;
|
||||
}
|
||||
|
||||
$collection = new OrderedCollectionPage($pager, $orderedItems);
|
||||
|
|
|
|||
|
|
@ -403,10 +403,8 @@ class EpisodeController extends BaseController
|
|||
$pager = $episodeComments->pager;
|
||||
|
||||
$orderedItems = [];
|
||||
if ($paginatedComments !== null) {
|
||||
foreach ($paginatedComments as $comment) {
|
||||
$orderedItems[] = new NoteObject($comment)->toArray();
|
||||
}
|
||||
foreach ($paginatedComments as $comment) {
|
||||
$orderedItems[] = new NoteObject($comment)->toArray();
|
||||
}
|
||||
|
||||
// @phpstan-ignore-next-line
|
||||
|
|
|
|||
|
|
@ -285,10 +285,8 @@ class PodcastController extends BaseController
|
|||
$pager = $episodes->pager;
|
||||
|
||||
$orderedItems = [];
|
||||
if ($paginatedEpisodes !== null) {
|
||||
foreach ($paginatedEpisodes as $episode) {
|
||||
$orderedItems[] = new PodcastEpisode($episode)->toArray();
|
||||
}
|
||||
foreach ($paginatedEpisodes as $episode) {
|
||||
$orderedItems[] = new PodcastEpisode($episode)->toArray();
|
||||
}
|
||||
|
||||
// @phpstan-ignore-next-line
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ class RssFeed extends SimpleXMLElement
|
|||
|
||||
foreach ($nodes as $element) {
|
||||
$namespaces = $element->getNamespaces();
|
||||
$namespace = $namespaces[array_key_first($namespaces)] ?? null;
|
||||
$namespace = array_first($namespaces) ?? null;
|
||||
|
||||
if (trim((string) $element) === '') {
|
||||
$simpleRSS = $this->addChild($element->getName(), null, $namespace);
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ use Override;
|
|||
class ActorModel extends FediverseActorModel
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Actor>
|
||||
*/
|
||||
protected $returnType = Actor::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class CategoryModel extends Model
|
|||
protected $allowedFields = ['parent_id', 'code', 'apple_category', 'google_category'];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Category>
|
||||
*/
|
||||
protected $returnType = Category::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class CreditModel extends Model
|
|||
protected $table = 'credits';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Credit>
|
||||
*/
|
||||
protected $returnType = Credit::class;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ use Modules\Fediverse\Objects\TombstoneObject;
|
|||
class EpisodeCommentModel extends UuidModel
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<EpisodeComment>
|
||||
*/
|
||||
protected $returnType = EpisodeComment::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ class EpisodeModel extends UuidModel
|
|||
];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Episode>
|
||||
*/
|
||||
protected $returnType = Episode::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class LanguageModel extends Model
|
|||
protected $allowedFields = ['code', 'native_name'];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Language>
|
||||
*/
|
||||
protected $returnType = Language::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class LikeModel extends UuidModel
|
|||
protected $allowedFields = ['actor_id', 'comment_id'];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Like>
|
||||
*/
|
||||
protected $returnType = Like::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class PageModel extends Model
|
|||
protected $allowedFields = ['id', 'title', 'slug', 'content_markdown', 'content_html'];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Page>
|
||||
*/
|
||||
protected $returnType = Page::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ class PersonModel extends Model
|
|||
];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Person>
|
||||
*/
|
||||
protected $returnType = Person::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ class PodcastModel extends Model
|
|||
];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Podcast>
|
||||
*/
|
||||
protected $returnType = Podcast::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ use Modules\Fediverse\Models\PostModel as FediversePostModel;
|
|||
class PostModel extends FediversePostModel
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Post>
|
||||
*/
|
||||
protected $returnType = Post::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@
|
|||
"homepage": "https://castopod.org",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"require": {
|
||||
"php": "^8.4",
|
||||
"php": "^8.5",
|
||||
"adaures/castopod-plugins-manager": "dev-main",
|
||||
"adaures/ipcat-php": "^v1.0.0",
|
||||
"adaures/podcast-persons-taxonomy": "^v1.0.1",
|
||||
"aws/aws-sdk-php": "^3.369.35",
|
||||
"aws/aws-sdk-php": "^3.369.37",
|
||||
"chrisjean/php-ico": "^1.0.4",
|
||||
"cocur/slugify": "4.7.1",
|
||||
"codeigniter4/framework": "4.6.5",
|
||||
"codeigniter4/framework": "4.7.0",
|
||||
"codeigniter4/settings": "v2.2.0",
|
||||
"codeigniter4/shield": "1.2.0",
|
||||
"codeigniter4/tasks": "dev-develop",
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
"mikey179/vfsstream": "^v1.6.12",
|
||||
"phpstan/extension-installer": "^1.4.3",
|
||||
"phpstan/phpstan": "^2.1.39",
|
||||
"phpunit/phpunit": "^13.0.3",
|
||||
"phpunit/phpunit": "^13.0.5",
|
||||
"rector/rector": "^2.3.6",
|
||||
"symplify/coding-standard": "^13.0.0",
|
||||
"symplify/easy-coding-standard": "^13.0.4"
|
||||
|
|
|
|||
55
composer.lock
generated
55
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "469f61ba87e9ecee8c664a7c48999320",
|
||||
"content-hash": "de1c665976cbb37fec3de326336d83f5",
|
||||
"packages": [
|
||||
{
|
||||
"name": "adaures/castopod-plugins-manager",
|
||||
|
|
@ -261,16 +261,16 @@
|
|||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php",
|
||||
"version": "3.369.35",
|
||||
"version": "3.369.37",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||
"reference": "0f3e296342fe965271b5dd0bded4a18bdab8aba5"
|
||||
"reference": "bc599ce989b101ee630d5e1a1aeda387632df47b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0f3e296342fe965271b5dd0bded4a18bdab8aba5",
|
||||
"reference": "0f3e296342fe965271b5dd0bded4a18bdab8aba5",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/bc599ce989b101ee630d5e1a1aeda387632df47b",
|
||||
"reference": "bc599ce989b101ee630d5e1a1aeda387632df47b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -352,9 +352,9 @@
|
|||
"support": {
|
||||
"forum": "https://github.com/aws/aws-sdk-php/discussions",
|
||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.369.35"
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.369.37"
|
||||
},
|
||||
"time": "2026-02-16T19:15:41+00:00"
|
||||
"time": "2026-02-18T19:16:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "brick/math",
|
||||
|
|
@ -539,23 +539,23 @@
|
|||
},
|
||||
{
|
||||
"name": "codeigniter4/framework",
|
||||
"version": "v4.6.5",
|
||||
"version": "v4.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/codeigniter4/framework.git",
|
||||
"reference": "116e0919590a412c09d2b9e4f6b8addda18224d8"
|
||||
"reference": "e7753bc03f8b74af428f46b5e2bb74925487c930"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/codeigniter4/framework/zipball/116e0919590a412c09d2b9e4f6b8addda18224d8",
|
||||
"reference": "116e0919590a412c09d2b9e4f6b8addda18224d8",
|
||||
"url": "https://api.github.com/repos/codeigniter4/framework/zipball/e7753bc03f8b74af428f46b5e2bb74925487c930",
|
||||
"reference": "e7753bc03f8b74af428f46b5e2bb74925487c930",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-intl": "*",
|
||||
"ext-mbstring": "*",
|
||||
"laminas/laminas-escaper": "^2.17",
|
||||
"php": "^8.1",
|
||||
"laminas/laminas-escaper": "^2.18",
|
||||
"php": "^8.2",
|
||||
"psr/log": "^3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
|
|
@ -569,6 +569,7 @@
|
|||
"predis/predis": "^3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-apcu": "If you use Cache class ApcuHandler",
|
||||
"ext-curl": "If you use CURLRequest class",
|
||||
"ext-dom": "If you use TestResponse",
|
||||
"ext-exif": "If you run Image class tests",
|
||||
|
|
@ -580,7 +581,9 @@
|
|||
"ext-memcached": "If you use Cache class MemcachedHandler with Memcached",
|
||||
"ext-mysqli": "If you use MySQL",
|
||||
"ext-oci8": "If you use Oracle Database",
|
||||
"ext-pcntl": "If you use Signals",
|
||||
"ext-pgsql": "If you use PostgreSQL",
|
||||
"ext-posix": "If you use Signals",
|
||||
"ext-readline": "Improves CLI::input() usability",
|
||||
"ext-redis": "If you use Cache class RedisHandler",
|
||||
"ext-simplexml": "If you format XML",
|
||||
|
|
@ -609,7 +612,7 @@
|
|||
"slack": "https://codeigniterchat.slack.com",
|
||||
"source": "https://github.com/codeigniter4/CodeIgniter4"
|
||||
},
|
||||
"time": "2026-02-01T17:59:34+00:00"
|
||||
"time": "2026-02-01T20:39:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "codeigniter4/queue",
|
||||
|
|
@ -4556,16 +4559,16 @@
|
|||
},
|
||||
{
|
||||
"name": "friendsofphp/php-cs-fixer",
|
||||
"version": "v3.94.0",
|
||||
"version": "v3.94.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
|
||||
"reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4"
|
||||
"reference": "d1a3634e29916367b885250e1fc4dfd5ffe3b091"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/883b20fb38c7866de9844ab6d0a205c423bde2d4",
|
||||
"reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4",
|
||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d1a3634e29916367b885250e1fc4dfd5ffe3b091",
|
||||
"reference": "d1a3634e29916367b885250e1fc4dfd5ffe3b091",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4648,7 +4651,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
|
||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.0"
|
||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -4656,7 +4659,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-02-11T16:44:33+00:00"
|
||||
"time": "2026-02-18T12:24:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mikey179/vfsstream",
|
||||
|
|
@ -5431,16 +5434,16 @@
|
|||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "13.0.3",
|
||||
"version": "13.0.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "a9c20642ffd2098c0f9e687c00849afbce2f23c7"
|
||||
"reference": "d57826e8921a534680c613924bfd921ded8047f4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a9c20642ffd2098c0f9e687c00849afbce2f23c7",
|
||||
"reference": "a9c20642ffd2098c0f9e687c00849afbce2f23c7",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d57826e8921a534680c613924bfd921ded8047f4",
|
||||
"reference": "d57826e8921a534680c613924bfd921ded8047f4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -5509,7 +5512,7 @@
|
|||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/13.0.3"
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/13.0.5"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -5533,7 +5536,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-02-16T08:38:33+00:00"
|
||||
"time": "2026-02-18T12:40:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
# ⚠️ NOT optimized for production
|
||||
# should be used only for continuous integration
|
||||
#---------------------------------------------------
|
||||
FROM php:8.4-fpm-alpine3.21
|
||||
FROM php:8.5-fpm-alpine3.23
|
||||
|
||||
LABEL maintainer="Yassine Doghri <yassine@doghri.fr>"
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
# 2. BUILD the FrankenPHP/debian based prod image
|
||||
#---------------------------------------------------
|
||||
|
||||
ARG PHP_VERSION="8.4"
|
||||
ARG PHP_VERSION="8.5"
|
||||
|
||||
####################################################
|
||||
# BUNDLE STAGE
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
FROM docker.io/golang:1.25-bookworm AS CRON_BUILDER
|
||||
|
||||
ARG SUPERCRONIC_VERSION=v0.2.34
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y git && \
|
||||
git clone https://github.com/aptible/supercronic.git && \
|
||||
cd supercronic && \
|
||||
git checkout $SUPERCRONIC_VERSION && \
|
||||
go build && \
|
||||
mv supercronic /usr/local/bin
|
||||
|
||||
|
||||
FROM docker.io/php:8.4-fpm
|
||||
|
||||
COPY --from=CRON_BUILDER /usr/local/bin/supercronic /usr/local/bin/supercronic
|
||||
|
||||
COPY docker/production/common/prepare_environment.sh /prepare_environment.sh
|
||||
COPY docker/production/app/entrypoint.sh /entrypoint.sh
|
||||
COPY docker/production/common/uploads.template.ini /uploads.template.ini
|
||||
COPY docker/production/common/crontab.txt /crontab.txt
|
||||
COPY docker/production/app/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
COPY castopod /var/www/castopod
|
||||
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y supervisor ffmpeg curl gettext-base libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libxpm-dev libpcre2-8-0 libicu-dev && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
pecl install -o -f redis && \
|
||||
rm -rf /tmp/pear && \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm && \
|
||||
docker-php-ext-install mysqli gd intl exif && \
|
||||
docker-php-ext-enable mysqli gd intl exif redis && \
|
||||
chmod +x /entrypoint.sh && \
|
||||
chmod -R 750 /var/www/castopod && \
|
||||
chown -R root:www-data /var/www/castopod && \
|
||||
chown -R www-data:www-data /var/www/castopod/writable /var/www/castopod/public/media
|
||||
|
||||
WORKDIR /var/www/castopod
|
||||
VOLUME /var/www/castopod/public/media
|
||||
EXPOSE 9000
|
||||
|
||||
ENTRYPOINT [ "sh", "-c" ]
|
||||
CMD [ "/entrypoint.sh" ]
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
FROM docker.io/golang:1.25-bookworm AS CRON_BUILDER
|
||||
|
||||
ARG SUPERCRONIC_VERSION=v0.2.34
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y git && \
|
||||
git clone https://github.com/aptible/supercronic.git && \
|
||||
cd supercronic && \
|
||||
git checkout $SUPERCRONIC_VERSION && \
|
||||
go build && \
|
||||
mv supercronic /usr/local/bin
|
||||
|
||||
|
||||
FROM docker.io/php:8.4-cli
|
||||
|
||||
ARG UNIT_VERSION=1.34.2
|
||||
|
||||
COPY --from=CRON_BUILDER /usr/local/bin/supercronic /usr/local/bin/supercronic
|
||||
|
||||
COPY docker/production/common/prepare_environment.sh /prepare_environment.sh
|
||||
COPY docker/production/castopod/entrypoint.sh /entrypoint.sh
|
||||
COPY castopod /var/www/castopod
|
||||
COPY docker/production/castopod/config.template.json /config.template.json
|
||||
COPY docker/production/common/uploads.template.ini /uploads.template.ini
|
||||
COPY docker/production/common/crontab.txt /crontab.txt
|
||||
COPY docker/production/castopod/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y supervisor ffmpeg curl gettext-base libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libxpm-dev libpcre2-dev libicu-dev git && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
git clone https://github.com/nginx/unit.git && \
|
||||
cd unit && \
|
||||
git checkout $UNIT_VERSION && \
|
||||
./configure --user=www-data --group=www-data && \
|
||||
./configure php && \
|
||||
make && \
|
||||
make install && \
|
||||
cd .. && \
|
||||
rm -rf unit && \
|
||||
pecl install -o -f redis && \
|
||||
rm -rf /tmp/pear && \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm && \
|
||||
docker-php-ext-install mysqli gd intl exif && \
|
||||
docker-php-ext-enable mysqli gd intl exif redis && \
|
||||
ln -s /dev/stdout /var/log/unit.log && \
|
||||
mkdir -p /usr/local/var/lib/unit /usr/local/var/run/unit /usr/local/var/log/unit && \
|
||||
chmod 544 /entrypoint.sh && \
|
||||
chmod -R 750 /var/www/castopod && \
|
||||
chown -R root:www-data /var/www/castopod && \
|
||||
chown -R www-data:www-data /var/www/castopod/writable /var/www/castopod/public/media
|
||||
|
||||
WORKDIR /var/www/castopod
|
||||
VOLUME /var/www/castopod/public/media
|
||||
EXPOSE 8000
|
||||
|
||||
ENTRYPOINT [ "sh", "-c" ]
|
||||
CMD [ "/entrypoint.sh" ]
|
||||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -10,15 +10,15 @@ installieren.
|
|||
|
||||
## Voraussetzungen
|
||||
|
||||
- PHP v8.4 oder höher
|
||||
- PHP v8.5 oder höher
|
||||
- MySQL Version 8.4 oder höher oder MariaDB Version 11.4 oder höher
|
||||
- HTTPS-Unterstützung
|
||||
- Eine [ntp-synchronisierte Uhr](https://wiki.debian.org/NTP) um die eingehenden
|
||||
Anfragen zu überprüfen
|
||||
|
||||
### PHP v8.4 oder höher
|
||||
### PHP v8.5 oder höher
|
||||
|
||||
PHP version 8.4 oder höher ist erforderlich, mit folgenden Erweiterungen
|
||||
PHP version 8.5 oder höher ist erforderlich, mit folgenden Erweiterungen
|
||||
installiert:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -10,15 +10,15 @@ compatibles con PHP-MySQL.
|
|||
|
||||
## Requisitos
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL versión 8.4 o superior o MariaDB versión 11.4 o superior
|
||||
- Soporte HTTPS
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -10,15 +10,15 @@ serveurs web compatibles avec PHP-MySQL.
|
|||
|
||||
## Prérequis
|
||||
|
||||
- PHP v8.4 ou supérieure
|
||||
- PHP v8.5 ou supérieure
|
||||
- MySQL version 8.4 ou supérieure ou MariaDB version 11.4 ou supérieure
|
||||
- Prise en charge HTTPS
|
||||
- Une horloge [synchronisée ntp](https://wiki.debian.org/NTP) pour valider les
|
||||
requêtes fédérés entrantes
|
||||
|
||||
### PHP v8.4 ou supérieure
|
||||
### PHP v8.5 ou supérieure
|
||||
|
||||
PHP version 8.4 ou supérieure est requise, avec les extensions suivantes
|
||||
PHP version 8.5 ou supérieure est requise, avec les extensions suivantes
|
||||
installées :
|
||||
|
||||
- [intl](https://www.php.net/manual/fr/intl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -10,15 +10,15 @@ serveurs web compatibles avec PHP-MySQL.
|
|||
|
||||
## Prérequis
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 ou supérieure ou MariaDB version 11.4 ou supérieure
|
||||
- Prise en charge HTTPS
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://www.php.net/manual/fr/intl.requirements.php)
|
||||
- [libcurl](https://www.php.net/manual/fr/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -10,15 +10,15 @@ com PHP-MySQL.
|
|||
|
||||
## Requisitos
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL versão 8.4 ou superior ou MariaDB versão 11.4 ou superior
|
||||
- Suporte a HTTPS
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,14 +9,14 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## 要求
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL 8.4 或更高版本与 MariaDB 11.4 或更高版本
|
||||
- HTTPS 支持
|
||||
- 用于验证的 [NTP 同步时钟](https://wiki.debian.org/NTP) 传入请求
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -9,15 +9,15 @@ shared hosting, you can install it on most PHP-MySQL compatible web servers.
|
|||
|
||||
## Requirements
|
||||
|
||||
- PHP v8.4 or higher
|
||||
- PHP v8.5 or higher
|
||||
- MySQL version 8.4 or higher or MariaDB version 11.4 or higher
|
||||
- HTTPS support
|
||||
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
|
||||
incoming requests
|
||||
|
||||
### PHP v8.4 or higher
|
||||
### PHP v8.5 or higher
|
||||
|
||||
PHP version 8.4 or higher is required, with the following extensions installed:
|
||||
PHP version 8.5 or higher is required, with the following extensions installed:
|
||||
|
||||
- [intl](https://php.net/manual/en/intl.requirements.php)
|
||||
- [libcurl](https://php.net/manual/en/curl.requirements.php)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ declare(strict_types=1);
|
|||
|
||||
namespace Modules\Admin\Controllers;
|
||||
|
||||
use App\Entities\Clip\BaseClip;
|
||||
use App\Entities\Clip\VideoClip;
|
||||
use App\Entities\Episode;
|
||||
use App\Entities\Podcast;
|
||||
|
|
@ -59,6 +60,7 @@ class VideoClipsController extends BaseController
|
|||
])
|
||||
->orderBy('created_at', 'desc');
|
||||
|
||||
/** @var BaseClip[] $clips */
|
||||
$clips = $videoClipsBuilder->paginate(10);
|
||||
|
||||
$videoClips = [];
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsPodcastByCountryModel extends Model
|
|||
protected $table = 'analytics_podcasts_by_country';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsPodcastsByCountry>
|
||||
*/
|
||||
protected $returnType = AnalyticsPodcastsByCountry::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsPodcastByEpisodeModel extends Model
|
|||
protected $table = 'analytics_podcasts_by_episode';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsPodcastsByEpisode>
|
||||
*/
|
||||
protected $returnType = AnalyticsPodcastsByEpisode::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsPodcastByHourModel extends Model
|
|||
protected $table = 'analytics_podcasts_by_hour';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsPodcastsByHour>
|
||||
*/
|
||||
protected $returnType = AnalyticsPodcastsByHour::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsPodcastByPlayerModel extends Model
|
|||
protected $table = 'analytics_podcasts_by_player';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsPodcastsByPlayer>
|
||||
*/
|
||||
protected $returnType = AnalyticsPodcastsByPlayer::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsPodcastByRegionModel extends Model
|
|||
protected $table = 'analytics_podcasts_by_region';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsPodcastsByRegion>
|
||||
*/
|
||||
protected $returnType = AnalyticsPodcastsByRegion::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsPodcastByServiceModel extends Model
|
|||
protected $table = 'analytics_podcasts_by_player';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsPodcastsByService>
|
||||
*/
|
||||
protected $returnType = AnalyticsPodcastsByService::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class AnalyticsPodcastBySubscriptionModel extends Model
|
|||
protected $table = 'analytics_podcasts_by_subscription';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsPodcastsBySubscription>
|
||||
*/
|
||||
protected $returnType = AnalyticsPodcastsBySubscription::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class AnalyticsPodcastModel extends Model
|
|||
protected $table = 'analytics_podcasts';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsPodcasts>
|
||||
*/
|
||||
protected $returnType = AnalyticsPodcasts::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsUnknownUserAgentsModel extends Model
|
|||
protected $table = 'analytics_unknown_useragents';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsUnknownUserAgent>
|
||||
*/
|
||||
protected $returnType = AnalyticsUnknownUserAgent::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsWebsiteByBrowserModel extends Model
|
|||
protected $table = 'analytics_website_by_browser';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsWebsiteByBrowser>
|
||||
*/
|
||||
protected $returnType = AnalyticsWebsiteByBrowser::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsWebsiteByEntryPageModel extends Model
|
|||
protected $table = 'analytics_website_by_entry_page';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsWebsiteByEntryPage>
|
||||
*/
|
||||
protected $returnType = AnalyticsWebsiteByEntryPage::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ class AnalyticsWebsiteByRefererModel extends Model
|
|||
protected $table = 'analytics_website_by_referer';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<AnalyticsWebsiteByReferer>
|
||||
*/
|
||||
protected $returnType = AnalyticsWebsiteByReferer::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ use Modules\Fediverse\Config\Fediverse;
|
|||
use Modules\Fediverse\Entities\Activity;
|
||||
use Modules\Fediverse\Entities\Actor;
|
||||
use Modules\Fediverse\Entities\Post;
|
||||
use Modules\Fediverse\Models\ActivityModel;
|
||||
use Modules\Fediverse\Models\ActorModel;
|
||||
use Modules\Fediverse\Objects\OrderedCollectionObject;
|
||||
use Modules\Fediverse\Objects\OrderedCollectionPage;
|
||||
|
||||
|
|
@ -262,6 +264,7 @@ class ActorController extends Controller
|
|||
public function outbox(): ResponseInterface
|
||||
{
|
||||
// get published activities by publication date
|
||||
/** @var ActivityModel $actorActivity */
|
||||
$actorActivity = model('ActivityModel', false)
|
||||
->where('actor_id', $this->actor->id)
|
||||
->where('`created_at` <= UTC_TIMESTAMP()', null, false)
|
||||
|
|
@ -274,6 +277,7 @@ class ActorController extends Controller
|
|||
$pager = $actorActivity->pager;
|
||||
$collection = new OrderedCollectionObject(null, $pager);
|
||||
} else {
|
||||
/** @var Activity[] $paginatedActivity */
|
||||
$paginatedActivity = $actorActivity->paginate(12, 'default', $pageNumber);
|
||||
$pager = $actorActivity->pager;
|
||||
$orderedItems = [];
|
||||
|
|
@ -292,6 +296,7 @@ class ActorController extends Controller
|
|||
public function followers(): ResponseInterface
|
||||
{
|
||||
// get followers for a specific actor
|
||||
/** @var ActorModel $followers */
|
||||
$followers = model('ActorModel', false)
|
||||
->join('fediverse_follows', 'fediverse_follows.actor_id = id', 'inner')
|
||||
->where('fediverse_follows.target_actor_id', $this->actor->id)
|
||||
|
|
@ -304,6 +309,7 @@ class ActorController extends Controller
|
|||
$pager = $followers->pager;
|
||||
$followersCollection = new OrderedCollectionObject(null, $pager);
|
||||
} else {
|
||||
/** @var Actor[] $paginatedFollowers */
|
||||
$paginatedFollowers = $followers->paginate(12, 'default', $pageNumber);
|
||||
$pager = $followers->pager;
|
||||
|
||||
|
|
|
|||
|
|
@ -97,11 +97,9 @@ class PostController extends Controller
|
|||
$orderedItems = [];
|
||||
$noteObjectClass = $this->config->noteObject;
|
||||
|
||||
if ($paginatedReplies !== null) {
|
||||
foreach ($paginatedReplies as $reply) {
|
||||
$replyObject = new $noteObjectClass($reply);
|
||||
$orderedItems[] = $replyObject->toArray();
|
||||
}
|
||||
foreach ($paginatedReplies as $reply) {
|
||||
$replyObject = new $noteObjectClass($reply);
|
||||
$orderedItems[] = $replyObject->toArray();
|
||||
}
|
||||
|
||||
$collection = new OrderedCollectionPage($pager, $orderedItems);
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ if (! function_exists('create_preview_card_from_url')) {
|
|||
|
||||
if ($mediaData !== []) {
|
||||
$mediaUrl = array_key_first($mediaData);
|
||||
$media = array_values($mediaData)[0];
|
||||
$media = array_first($mediaData);
|
||||
|
||||
if (array_key_exists('title', $media)) {
|
||||
$typeMapping = [
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ class ActivityModel extends UuidModel
|
|||
];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Activity>
|
||||
*/
|
||||
protected $returnType = Activity::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class ActorModel extends Model
|
|||
];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Actor>
|
||||
*/
|
||||
protected $returnType = Actor::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class BlockedDomainModel extends Model
|
|||
protected $allowedFields = ['name'];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<BlockedDomain>
|
||||
*/
|
||||
protected $returnType = BlockedDomain::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class FavouriteModel extends UuidModel
|
|||
protected $allowedFields = ['actor_id', 'post_id'];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Favourite>
|
||||
*/
|
||||
protected $returnType = Favourite::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ class FollowModel extends Model
|
|||
protected $allowedFields = ['actor_id', 'target_actor_id'];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Follow>
|
||||
*/
|
||||
protected $returnType = Follow::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class NotificationModel extends UuidModel
|
|||
protected $primaryKey = 'id';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Notification>
|
||||
*/
|
||||
protected $returnType = Notification::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ class PostModel extends UuidModel
|
|||
];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Post>
|
||||
*/
|
||||
protected $returnType = Post::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ class PreviewCardModel extends Model
|
|||
];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<PreviewCard>
|
||||
*/
|
||||
protected $returnType = PreviewCard::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ class OrderedCollectionObject extends ObjectType
|
|||
protected ?string $last = null;
|
||||
|
||||
/**
|
||||
* @param ObjectType[]|null $orderedItems
|
||||
* @param ObjectType[]|list<string>|null $orderedItems
|
||||
*/
|
||||
public function __construct(
|
||||
protected ?array $orderedItems = null,
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ if (! function_exists('download_file')) {
|
|||
curl_setopt($ch, CURLOPT_MAXREDIRS, 20);
|
||||
|
||||
curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
fclose($file);
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ class TranscriptParser
|
|||
|
||||
$lines = explode(PHP_EOL, $this->transcriptContent);
|
||||
// add a newline as last item, if it isn't already a newline
|
||||
if ($lines[array_key_last($lines)] !== '') {
|
||||
if (array_last($lines) !== '') {
|
||||
$lines[] = PHP_EOL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -564,7 +564,6 @@ class VideoClipper
|
|||
|
||||
imagefill($img, 0, 0, $alphacolor);
|
||||
imagecopyresampled($img, $src, 0, 0, 0, 0, $ns, $ns, $s, $s);
|
||||
imagedestroy($src);
|
||||
|
||||
imagearc($img, $radius - 1, $radius - 1, $radius * 2, $radius * 2, 180, 270, $alphacolor);
|
||||
imagefilltoborder($img, 0, 0, $alphacolor, $alphacolor);
|
||||
|
|
@ -586,7 +585,6 @@ class VideoClipper
|
|||
imagealphablending($dest, false);
|
||||
imagefilledrectangle($dest, 0, 0, $s, $s, $alphacolor);
|
||||
imagecopyresampled($dest, $img, 0, 0, 0, 0, $s, $s, $ns, $ns);
|
||||
imagedestroy($img);
|
||||
|
||||
# output image
|
||||
imagealphablending($source, false);
|
||||
|
|
@ -595,7 +593,6 @@ class VideoClipper
|
|||
imagecopy($source, $dest, $ws - $corner, $hs - $corner, $corner, $corner, $corner, $corner);
|
||||
imagecopy($source, $dest, 0, $hs - $corner, 0, $corner, $corner, $corner);
|
||||
imagealphablending($source, true);
|
||||
imagedestroy($dest);
|
||||
|
||||
return $source;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class PlatformModel extends Model
|
|||
protected $allowedFields = ['podcast_id', 'type', 'slug', 'link_url', 'account_id', 'is_visible'];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var class-string<Platform>
|
||||
*/
|
||||
protected $returnType = Platform::class;
|
||||
|
||||
|
|
|
|||
|
|
@ -52,13 +52,13 @@
|
|||
"leaflet": "^1.9.4",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
"lit": "^3.3.2",
|
||||
"marked": "^17.0.2",
|
||||
"marked": "^17.0.3",
|
||||
"wavesurfer.js": "^7.12.1",
|
||||
"xml-formatter": "^3.6.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^20.4.1",
|
||||
"@commitlint/config-conventional": "^20.4.1",
|
||||
"@commitlint/cli": "^20.4.2",
|
||||
"@commitlint/config-conventional": "^20.4.2",
|
||||
"@csstools/css-tokenizer": "^4.0.0",
|
||||
"@eslint/eslintrc": "^3.3.3",
|
||||
"@eslint/js": "^10.0.1",
|
||||
|
|
|
|||
|
|
@ -49,6 +49,5 @@ parameters:
|
|||
- Modules\PremiumPodcasts\Config\Services
|
||||
- Modules\Api\Rest\V1\Config\Services
|
||||
ignoreErrors:
|
||||
- '#^Call to an undefined method CodeIgniter\\Cache\\CacheInterface\:\:deleteMatching\(\)#'
|
||||
- identifier: missingType.generics
|
||||
- '#\$callback of static method CodeIgniter\\Events\\Events\:\:on\(\) expects callable\(mixed\)\: mixed, Closure\(mixed, mixed\)\: void given.#'
|
||||
|
|
|
|||
133
pnpm-lock.yaml
generated
133
pnpm-lock.yaml
generated
|
|
@ -74,8 +74,8 @@ importers:
|
|||
specifier: ^3.3.2
|
||||
version: 3.3.2
|
||||
marked:
|
||||
specifier: ^17.0.2
|
||||
version: 17.0.2
|
||||
specifier: ^17.0.3
|
||||
version: 17.0.3
|
||||
wavesurfer.js:
|
||||
specifier: ^7.12.1
|
||||
version: 7.12.1
|
||||
|
|
@ -84,11 +84,11 @@ importers:
|
|||
version: 3.6.7
|
||||
devDependencies:
|
||||
"@commitlint/cli":
|
||||
specifier: ^20.4.1
|
||||
version: 20.4.1(@types/node@24.7.0)(typescript@5.9.3)
|
||||
specifier: ^20.4.2
|
||||
version: 20.4.2(@types/node@24.7.0)(typescript@5.9.3)
|
||||
"@commitlint/config-conventional":
|
||||
specifier: ^20.4.1
|
||||
version: 20.4.1
|
||||
specifier: ^20.4.2
|
||||
version: 20.4.2
|
||||
"@csstools/css-tokenizer":
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
|
|
@ -1137,18 +1137,18 @@ packages:
|
|||
}
|
||||
engines: { node: ">=0.1.90" }
|
||||
|
||||
"@commitlint/cli@20.4.1":
|
||||
"@commitlint/cli@20.4.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==,
|
||||
integrity: sha512-YjYSX2yj/WsVoxh9mNiymfFS2ADbg2EK4+1WAsMuckwKMCqJ5PDG0CJU/8GvmHWcv4VRB2V02KqSiecRksWqZQ==,
|
||||
}
|
||||
engines: { node: ">=v18" }
|
||||
hasBin: true
|
||||
|
||||
"@commitlint/config-conventional@20.4.1":
|
||||
"@commitlint/config-conventional@20.4.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==,
|
||||
integrity: sha512-rwkTF55q7Q+6dpSKUmJoScV0f3EpDlWKw2UPzklkLS4o5krMN1tPWAVOgHRtyUTMneIapLeQwaCjn44Td6OzBQ==,
|
||||
}
|
||||
engines: { node: ">=v18" }
|
||||
|
||||
|
|
@ -1187,10 +1187,10 @@ packages:
|
|||
}
|
||||
engines: { node: ">=v18" }
|
||||
|
||||
"@commitlint/lint@20.4.1":
|
||||
"@commitlint/lint@20.4.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==,
|
||||
integrity: sha512-buquzNRtFng6xjXvBU1abY/WPEEjCgUipNQrNmIWe8QuJ6LWLtei/LDBAzEe5ASm45+Q9L2Xi3/GVvlj50GAug==,
|
||||
}
|
||||
engines: { node: ">=v18" }
|
||||
|
||||
|
|
@ -1229,10 +1229,10 @@ packages:
|
|||
}
|
||||
engines: { node: ">=v18" }
|
||||
|
||||
"@commitlint/rules@20.4.1":
|
||||
"@commitlint/rules@20.4.2":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==,
|
||||
integrity: sha512-oz83pnp5Yq6uwwTAabuVQPNlPfeD2Y5ZjMb7Wx8FSUlu4sLYJjbBWt8031Z0osCFPfHzAwSYrjnfDFKtuSMdKg==,
|
||||
}
|
||||
engines: { node: ">=v18" }
|
||||
|
||||
|
|
@ -2520,10 +2520,10 @@ packages:
|
|||
}
|
||||
engines: { node: ">= 20" }
|
||||
|
||||
"@octokit/endpoint@11.0.2":
|
||||
"@octokit/endpoint@11.0.3":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==,
|
||||
integrity: sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==,
|
||||
}
|
||||
engines: { node: ">= 20" }
|
||||
|
||||
|
|
@ -2549,10 +2549,10 @@ packages:
|
|||
peerDependencies:
|
||||
"@octokit/core": ">=6"
|
||||
|
||||
"@octokit/plugin-retry@8.0.3":
|
||||
"@octokit/plugin-retry@8.1.0":
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==,
|
||||
integrity: sha512-O1FZgXeiGb2sowEr/hYTr6YunGdSAFWnr2fyW39Ah85H8O33ELASQxcvOFF5LE6Tjekcyu2ms4qAzJVhSaJxTw==,
|
||||
}
|
||||
engines: { node: ">= 20" }
|
||||
peerDependencies:
|
||||
|
|
@ -3487,10 +3487,10 @@ packages:
|
|||
}
|
||||
engines: { node: ">= 16" }
|
||||
|
||||
balanced-match@4.0.2:
|
||||
balanced-match@4.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==,
|
||||
integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==,
|
||||
}
|
||||
engines: { node: 20 || >=22 }
|
||||
|
||||
|
|
@ -3506,11 +3506,12 @@ packages:
|
|||
integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==,
|
||||
}
|
||||
|
||||
baseline-browser-mapping@2.9.19:
|
||||
baseline-browser-mapping@2.10.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==,
|
||||
integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==,
|
||||
}
|
||||
engines: { node: ">=6.0.0" }
|
||||
hasBin: true
|
||||
|
||||
before-after-hook@4.0.0:
|
||||
|
|
@ -5161,10 +5162,10 @@ packages:
|
|||
}
|
||||
engines: { node: 6.* || 8.* || >= 10.* }
|
||||
|
||||
get-east-asian-width@1.4.0:
|
||||
get-east-asian-width@1.5.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==,
|
||||
integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==,
|
||||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
|
|
@ -5337,10 +5338,10 @@ packages:
|
|||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
globby@16.1.0:
|
||||
globby@16.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ==,
|
||||
integrity: sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==,
|
||||
}
|
||||
engines: { node: ">=20" }
|
||||
|
||||
|
|
@ -5439,10 +5440,10 @@ packages:
|
|||
}
|
||||
engines: { node: ">= 0.4" }
|
||||
|
||||
hashery@1.4.0:
|
||||
hashery@1.5.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==,
|
||||
integrity: sha512-nhQ6ExaOIqti2FDWoEMWARUqIKyjr2VcZzXShrI+A3zpeiuPWzx6iPftt44LhP74E5sW36B75N6VHbvRtpvO6Q==,
|
||||
}
|
||||
engines: { node: ">=20" }
|
||||
|
||||
|
|
@ -6543,10 +6544,10 @@ packages:
|
|||
engines: { node: ">= 18" }
|
||||
hasBin: true
|
||||
|
||||
marked@17.0.2:
|
||||
marked@17.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==,
|
||||
integrity: sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==,
|
||||
}
|
||||
engines: { node: ">= 20" }
|
||||
hasBin: true
|
||||
|
|
@ -6705,10 +6706,10 @@ packages:
|
|||
integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==,
|
||||
}
|
||||
|
||||
minipass@7.1.2:
|
||||
minipass@7.1.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==,
|
||||
integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==,
|
||||
}
|
||||
engines: { node: ">=16 || 14 >=14.17" }
|
||||
|
||||
|
|
@ -8737,10 +8738,10 @@ packages:
|
|||
}
|
||||
engines: { node: ">=18" }
|
||||
|
||||
string-width@8.1.1:
|
||||
string-width@8.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==,
|
||||
integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==,
|
||||
}
|
||||
engines: { node: ">=20" }
|
||||
|
||||
|
|
@ -10646,7 +10647,7 @@ snapshots:
|
|||
|
||||
"@cacheable/utils@2.3.4":
|
||||
dependencies:
|
||||
hashery: 1.4.0
|
||||
hashery: 1.5.0
|
||||
keyv: 5.6.0
|
||||
|
||||
"@codemirror/autocomplete@6.20.0":
|
||||
|
|
@ -10737,10 +10738,10 @@ snapshots:
|
|||
"@colors/colors@1.5.0":
|
||||
optional: true
|
||||
|
||||
"@commitlint/cli@20.4.1(@types/node@24.7.0)(typescript@5.9.3)":
|
||||
"@commitlint/cli@20.4.2(@types/node@24.7.0)(typescript@5.9.3)":
|
||||
dependencies:
|
||||
"@commitlint/format": 20.4.0
|
||||
"@commitlint/lint": 20.4.1
|
||||
"@commitlint/lint": 20.4.2
|
||||
"@commitlint/load": 20.4.0(@types/node@24.7.0)(typescript@5.9.3)
|
||||
"@commitlint/read": 20.4.0
|
||||
"@commitlint/types": 20.4.0
|
||||
|
|
@ -10750,7 +10751,7 @@ snapshots:
|
|||
- "@types/node"
|
||||
- typescript
|
||||
|
||||
"@commitlint/config-conventional@20.4.1":
|
||||
"@commitlint/config-conventional@20.4.2":
|
||||
dependencies:
|
||||
"@commitlint/types": 20.4.0
|
||||
conventional-changelog-conventionalcommits: 9.1.0
|
||||
|
|
@ -10781,11 +10782,11 @@ snapshots:
|
|||
"@commitlint/types": 20.4.0
|
||||
semver: 7.7.4
|
||||
|
||||
"@commitlint/lint@20.4.1":
|
||||
"@commitlint/lint@20.4.2":
|
||||
dependencies:
|
||||
"@commitlint/is-ignored": 20.4.1
|
||||
"@commitlint/parse": 20.4.1
|
||||
"@commitlint/rules": 20.4.1
|
||||
"@commitlint/rules": 20.4.2
|
||||
"@commitlint/types": 20.4.0
|
||||
|
||||
"@commitlint/load@20.4.0(@types/node@24.7.0)(typescript@5.9.3)":
|
||||
|
|
@ -10828,7 +10829,7 @@ snapshots:
|
|||
lodash.mergewith: 4.6.2
|
||||
resolve-from: 5.0.0
|
||||
|
||||
"@commitlint/rules@20.4.1":
|
||||
"@commitlint/rules@20.4.2":
|
||||
dependencies:
|
||||
"@commitlint/ensure": 20.4.1
|
||||
"@commitlint/message": 20.4.0
|
||||
|
|
@ -11476,7 +11477,7 @@ snapshots:
|
|||
|
||||
"@keyv/bigmap@1.3.1(keyv@5.6.0)":
|
||||
dependencies:
|
||||
hashery: 1.4.0
|
||||
hashery: 1.5.0
|
||||
hookified: 1.15.1
|
||||
keyv: 5.6.0
|
||||
|
||||
|
|
@ -11552,7 +11553,7 @@ snapshots:
|
|||
before-after-hook: 4.0.0
|
||||
universal-user-agent: 7.0.3
|
||||
|
||||
"@octokit/endpoint@11.0.2":
|
||||
"@octokit/endpoint@11.0.3":
|
||||
dependencies:
|
||||
"@octokit/types": 16.0.0
|
||||
universal-user-agent: 7.0.3
|
||||
|
|
@ -11570,7 +11571,7 @@ snapshots:
|
|||
"@octokit/core": 7.0.6
|
||||
"@octokit/types": 16.0.0
|
||||
|
||||
"@octokit/plugin-retry@8.0.3(@octokit/core@7.0.6)":
|
||||
"@octokit/plugin-retry@8.1.0(@octokit/core@7.0.6)":
|
||||
dependencies:
|
||||
"@octokit/core": 7.0.6
|
||||
"@octokit/request-error": 7.1.0
|
||||
|
|
@ -11589,7 +11590,7 @@ snapshots:
|
|||
|
||||
"@octokit/request@10.0.7":
|
||||
dependencies:
|
||||
"@octokit/endpoint": 11.0.2
|
||||
"@octokit/endpoint": 11.0.3
|
||||
"@octokit/request-error": 7.1.0
|
||||
"@octokit/types": 16.0.0
|
||||
fast-content-type-parse: 3.0.0
|
||||
|
|
@ -11811,7 +11812,7 @@ snapshots:
|
|||
dependencies:
|
||||
"@octokit/core": 7.0.6
|
||||
"@octokit/plugin-paginate-rest": 14.0.0(@octokit/core@7.0.6)
|
||||
"@octokit/plugin-retry": 8.0.3(@octokit/core@7.0.6)
|
||||
"@octokit/plugin-retry": 8.1.0(@octokit/core@7.0.6)
|
||||
"@octokit/plugin-throttling": 11.0.3(@octokit/core@7.0.6)
|
||||
"@semantic-release/error": 4.0.0
|
||||
aggregate-error: 5.0.0
|
||||
|
|
@ -12196,15 +12197,13 @@ snapshots:
|
|||
|
||||
balanced-match@3.0.1: {}
|
||||
|
||||
balanced-match@4.0.2:
|
||||
dependencies:
|
||||
jackspeak: 4.2.3
|
||||
balanced-match@4.0.3: {}
|
||||
|
||||
base64-js@1.3.1: {}
|
||||
|
||||
base64-js@1.5.1: {}
|
||||
|
||||
baseline-browser-mapping@2.9.19: {}
|
||||
baseline-browser-mapping@2.10.0: {}
|
||||
|
||||
before-after-hook@4.0.0: {}
|
||||
|
||||
|
|
@ -12233,7 +12232,7 @@ snapshots:
|
|||
|
||||
brace-expansion@5.0.2:
|
||||
dependencies:
|
||||
balanced-match: 4.0.2
|
||||
balanced-match: 4.0.3
|
||||
|
||||
braces@3.0.3:
|
||||
dependencies:
|
||||
|
|
@ -12245,7 +12244,7 @@ snapshots:
|
|||
|
||||
browserslist@4.28.1:
|
||||
dependencies:
|
||||
baseline-browser-mapping: 2.9.19
|
||||
baseline-browser-mapping: 2.10.0
|
||||
caniuse-lite: 1.0.30001770
|
||||
electron-to-chromium: 1.5.286
|
||||
node-releases: 2.0.27
|
||||
|
|
@ -12387,7 +12386,7 @@ snapshots:
|
|||
cli-truncate@5.1.1:
|
||||
dependencies:
|
||||
slice-ansi: 7.1.2
|
||||
string-width: 8.1.1
|
||||
string-width: 8.2.0
|
||||
|
||||
cli-width@3.0.0: {}
|
||||
|
||||
|
|
@ -13290,7 +13289,7 @@ snapshots:
|
|||
|
||||
get-caller-file@2.0.5: {}
|
||||
|
||||
get-east-asian-width@1.4.0: {}
|
||||
get-east-asian-width@1.5.0: {}
|
||||
|
||||
get-intrinsic@1.3.0:
|
||||
dependencies:
|
||||
|
|
@ -13357,14 +13356,14 @@ snapshots:
|
|||
foreground-child: 3.3.1
|
||||
jackspeak: 4.2.3
|
||||
minimatch: 10.2.1
|
||||
minipass: 7.1.2
|
||||
minipass: 7.1.3
|
||||
package-json-from-dist: 1.0.1
|
||||
path-scurry: 2.0.1
|
||||
|
||||
glob@13.0.5:
|
||||
dependencies:
|
||||
minimatch: 10.2.1
|
||||
minipass: 7.1.2
|
||||
minipass: 7.1.3
|
||||
path-scurry: 2.0.1
|
||||
|
||||
glob@7.2.3:
|
||||
|
|
@ -13422,7 +13421,7 @@ snapshots:
|
|||
slash: 5.1.0
|
||||
unicorn-magic: 0.3.0
|
||||
|
||||
globby@16.1.0:
|
||||
globby@16.1.1:
|
||||
dependencies:
|
||||
"@sindresorhus/merge-streams": 4.0.0
|
||||
fast-glob: 3.3.3
|
||||
|
|
@ -13485,7 +13484,7 @@ snapshots:
|
|||
dependencies:
|
||||
has-symbols: 1.1.0
|
||||
|
||||
hashery@1.4.0:
|
||||
hashery@1.5.0:
|
||||
dependencies:
|
||||
hookified: 1.15.1
|
||||
|
||||
|
|
@ -13709,7 +13708,7 @@ snapshots:
|
|||
|
||||
is-fullwidth-code-point@5.1.0:
|
||||
dependencies:
|
||||
get-east-asian-width: 1.4.0
|
||||
get-east-asian-width: 1.5.0
|
||||
|
||||
is-generator-function@1.1.2:
|
||||
dependencies:
|
||||
|
|
@ -14053,7 +14052,7 @@ snapshots:
|
|||
|
||||
marked@15.0.12: {}
|
||||
|
||||
marked@17.0.2: {}
|
||||
marked@17.0.3: {}
|
||||
|
||||
math-intrinsics@1.1.0: {}
|
||||
|
||||
|
|
@ -14112,7 +14111,7 @@ snapshots:
|
|||
|
||||
minimist@1.2.8: {}
|
||||
|
||||
minipass@7.1.2: {}
|
||||
minipass@7.1.3: {}
|
||||
|
||||
mitt@3.0.1: {}
|
||||
|
||||
|
|
@ -14373,7 +14372,7 @@ snapshots:
|
|||
path-scurry@2.0.1:
|
||||
dependencies:
|
||||
lru-cache: 11.2.6
|
||||
minipass: 7.1.2
|
||||
minipass: 7.1.3
|
||||
|
||||
path-type@4.0.0: {}
|
||||
|
||||
|
|
@ -15363,12 +15362,12 @@ snapshots:
|
|||
string-width@7.2.0:
|
||||
dependencies:
|
||||
emoji-regex: 10.6.0
|
||||
get-east-asian-width: 1.4.0
|
||||
get-east-asian-width: 1.5.0
|
||||
strip-ansi: 7.1.2
|
||||
|
||||
string-width@8.1.1:
|
||||
string-width@8.2.0:
|
||||
dependencies:
|
||||
get-east-asian-width: 1.4.0
|
||||
get-east-asian-width: 1.5.0
|
||||
strip-ansi: 7.1.2
|
||||
|
||||
string.prototype.matchall@4.0.12:
|
||||
|
|
@ -15484,7 +15483,7 @@ snapshots:
|
|||
fastest-levenshtein: 1.0.16
|
||||
file-entry-cache: 11.1.2
|
||||
global-modules: 2.0.0
|
||||
globby: 16.1.0
|
||||
globby: 16.1.1
|
||||
globjoin: 0.1.4
|
||||
html-tags: 5.1.0
|
||||
ignore: 7.0.5
|
||||
|
|
@ -15501,7 +15500,7 @@ snapshots:
|
|||
postcss-safe-parser: 7.0.1(postcss@8.5.6)
|
||||
postcss-selector-parser: 7.1.1
|
||||
postcss-value-parser: 4.2.0
|
||||
string-width: 8.1.1
|
||||
string-width: 8.2.0
|
||||
supports-hyperlinks: 4.4.0
|
||||
svg-tags: 1.0.0
|
||||
table: 6.9.0
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ use Config\Paths;
|
|||
*---------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$minPhpVersion = '8.4'; // If you update this, don't forget to update `spark`.
|
||||
$minPhpVersion = '8.5'; // If you update this, don't forget to update `spark`.
|
||||
if (version_compare(PHP_VERSION, $minPhpVersion, '<')) {
|
||||
$message = sprintf(
|
||||
'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s',
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ use Rector\ValueObject\PhpVersion;
|
|||
return RectorConfig::configure()
|
||||
->withPaths([__DIR__ . '/app', __DIR__ . '/modules', __DIR__ . '/tests', __DIR__ . '/public'])
|
||||
->withBootstrapFiles([__DIR__ . '/vendor/codeigniter4/framework/system/Test/bootstrap.php'])
|
||||
->withPhpVersion(PhpVersion::PHP_84)
|
||||
->withPhpSets(php84: true)
|
||||
->withPhpVersion(PhpVersion::PHP_85)
|
||||
->withPhpSets(php85: true)
|
||||
->withPreparedSets(
|
||||
typeDeclarations: true,
|
||||
codeQuality: true,
|
||||
|
|
|
|||
2
spark
2
spark
|
|
@ -40,7 +40,7 @@ if (str_starts_with(PHP_SAPI, 'cgi')) {
|
|||
*---------------------------------------------------------------
|
||||
*/
|
||||
|
||||
$minPhpVersion = '8.4'; // If you update this, don't forget to update `public/index.php`.
|
||||
$minPhpVersion = '8.5'; // If you update this, don't forget to update `public/index.php`.
|
||||
if (version_compare(PHP_VERSION, $minPhpVersion, '<')) {
|
||||
$message = sprintf(
|
||||
'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s',
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ class ExampleModel extends Model
|
|||
protected $primaryKey = 'id';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @var 'object'
|
||||
*/
|
||||
protected $returnType = 'object';
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue