update Codeigniter 4.7.3
This commit is contained in:
@@ -6,6 +6,22 @@ use CodeIgniter\Config\BaseConfig;
|
|||||||
|
|
||||||
class CURLRequest extends 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
|
* CURLRequest Share Options
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace Config;
|
namespace Config;
|
||||||
|
|
||||||
use CodeIgniter\Cache\CacheInterface;
|
use CodeIgniter\Cache\CacheInterface;
|
||||||
|
use CodeIgniter\Cache\Handlers\ApcuHandler;
|
||||||
use CodeIgniter\Cache\Handlers\DummyHandler;
|
use CodeIgniter\Cache\Handlers\DummyHandler;
|
||||||
use CodeIgniter\Cache\Handlers\FileHandler;
|
use CodeIgniter\Cache\Handlers\FileHandler;
|
||||||
use CodeIgniter\Cache\Handlers\MemcachedHandler;
|
use CodeIgniter\Cache\Handlers\MemcachedHandler;
|
||||||
@@ -78,7 +79,7 @@ class Cache extends BaseConfig
|
|||||||
* Your file storage preferences can be specified below, if you are using
|
* Your file storage preferences can be specified below, if you are using
|
||||||
* the File driver.
|
* the File driver.
|
||||||
*
|
*
|
||||||
* @var array<string, int|string|null>
|
* @var array{storePath?: string, mode?: int}
|
||||||
*/
|
*/
|
||||||
public array $file = [
|
public array $file = [
|
||||||
'storePath' => WRITEPATH . 'cache/',
|
'storePath' => WRITEPATH . 'cache/',
|
||||||
@@ -95,7 +96,7 @@ class Cache extends BaseConfig
|
|||||||
*
|
*
|
||||||
* @see https://codeigniter.com/user_guide/libraries/caching.html#memcached
|
* @see https://codeigniter.com/user_guide/libraries/caching.html#memcached
|
||||||
*
|
*
|
||||||
* @var array<string, bool|int|string>
|
* @var array{host?: string, port?: int, weight?: int, raw?: bool}
|
||||||
*/
|
*/
|
||||||
public array $memcached = [
|
public array $memcached = [
|
||||||
'host' => '127.0.0.1',
|
'host' => '127.0.0.1',
|
||||||
@@ -112,14 +113,24 @@ class Cache extends BaseConfig
|
|||||||
* Your Redis server can be specified below, if you are using
|
* Your Redis server can be specified below, if you are using
|
||||||
* the Redis or Predis drivers.
|
* the Redis or Predis drivers.
|
||||||
*
|
*
|
||||||
* @var array<string, int|string|null>
|
* @var array{
|
||||||
|
* host?: string,
|
||||||
|
* password?: string|null,
|
||||||
|
* port?: int,
|
||||||
|
* timeout?: int,
|
||||||
|
* async?: bool,
|
||||||
|
* persistent?: bool,
|
||||||
|
* database?: int
|
||||||
|
* }
|
||||||
*/
|
*/
|
||||||
public array $redis = [
|
public array $redis = [
|
||||||
'host' => '127.0.0.1',
|
'host' => '127.0.0.1',
|
||||||
'password' => null,
|
'password' => null,
|
||||||
'port' => 6379,
|
'port' => 6379,
|
||||||
'timeout' => 0,
|
'timeout' => 0,
|
||||||
'database' => 0,
|
'async' => false, // specific to Predis and ignored by the native Redis extension
|
||||||
|
'persistent' => false,
|
||||||
|
'database' => 0,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -133,6 +144,7 @@ class Cache extends BaseConfig
|
|||||||
* @var array<string, class-string<CacheInterface>>
|
* @var array<string, class-string<CacheInterface>>
|
||||||
*/
|
*/
|
||||||
public array $validHandlers = [
|
public array $validHandlers = [
|
||||||
|
'apcu' => ApcuHandler::class,
|
||||||
'dummy' => DummyHandler::class,
|
'dummy' => DummyHandler::class,
|
||||||
'file' => FileHandler::class,
|
'file' => FileHandler::class,
|
||||||
'memcached' => MemcachedHandler::class,
|
'memcached' => MemcachedHandler::class,
|
||||||
@@ -159,4 +171,28 @@ class Cache extends BaseConfig
|
|||||||
* @var bool|list<string>
|
* @var bool|list<string>
|
||||||
*/
|
*/
|
||||||
public $cacheQueryString = false;
|
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 = [];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,11 @@ class ContentSecurityPolicy extends BaseConfig
|
|||||||
*/
|
*/
|
||||||
public ?string $reportURI = null;
|
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
|
* Instructs user agents to rewrite URL schemes, changing
|
||||||
* HTTP to HTTPS. This directive is for websites with
|
* HTTP to HTTPS. This directive is for websites with
|
||||||
@@ -38,12 +43,12 @@ class ContentSecurityPolicy extends BaseConfig
|
|||||||
public bool $upgradeInsecureRequests = false;
|
public bool $upgradeInsecureRequests = false;
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
// Sources allowed
|
// CSP DIRECTIVES SETTINGS
|
||||||
// NOTE: once you set a policy to 'none', it cannot be further restricted
|
// 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
|
* @var list<string>|string|null
|
||||||
*/
|
*/
|
||||||
@@ -56,6 +61,21 @@ class ContentSecurityPolicy extends BaseConfig
|
|||||||
*/
|
*/
|
||||||
public $scriptSrc = 'self';
|
public $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.
|
* Lists allowed stylesheets' URLs.
|
||||||
*
|
*
|
||||||
@@ -63,6 +83,21 @@ class ContentSecurityPolicy extends BaseConfig
|
|||||||
*/
|
*/
|
||||||
public $styleSrc = 'self';
|
public $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.
|
* Defines the origins from which images can be loaded.
|
||||||
*
|
*
|
||||||
@@ -145,6 +180,11 @@ class ContentSecurityPolicy extends BaseConfig
|
|||||||
*/
|
*/
|
||||||
public $manifestSrc;
|
public $manifestSrc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var list<string>|string
|
||||||
|
*/
|
||||||
|
public array|string $workerSrc = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Limits the kinds of plugins a page may invoke.
|
* Limits the kinds of plugins a page may invoke.
|
||||||
*
|
*
|
||||||
@@ -160,17 +200,17 @@ class ContentSecurityPolicy extends BaseConfig
|
|||||||
public $sandbox;
|
public $sandbox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nonce tag for style
|
* Nonce placeholder for style tags.
|
||||||
*/
|
*/
|
||||||
public string $styleNonceTag = '{csp-style-nonce}';
|
public string $styleNonceTag = '{csp-style-nonce}';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nonce tag for script
|
* Nonce placeholder for script tags.
|
||||||
*/
|
*/
|
||||||
public string $scriptNonceTag = '{csp-script-nonce}';
|
public string $scriptNonceTag = '{csp-script-nonce}';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replace nonce tag automatically
|
* Replace nonce tag automatically?
|
||||||
*/
|
*/
|
||||||
public bool $autoNonce = true;
|
public bool $autoNonce = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ class Cookie extends BaseConfig
|
|||||||
* (empty string) means default SameSite attribute set by browsers (`Lax`)
|
* (empty string) means default SameSite attribute set by browsers (`Lax`)
|
||||||
* will be set on cookies. If set to `None`, `$secure` must also be set.
|
* will be set on cookies. If set to `None`, `$secure` must also be set.
|
||||||
*
|
*
|
||||||
* @phpstan-var 'None'|'Lax'|'Strict'|''
|
* @var ''|'Lax'|'None'|'Strict'
|
||||||
*/
|
*/
|
||||||
public string $samesite = 'Lax';
|
public string $samesite = 'Lax';
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,112 @@ class Database extends Config
|
|||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Sample database connection for SQLite3.
|
||||||
|
// *
|
||||||
|
// * @var array<string, mixed>
|
||||||
|
// */
|
||||||
|
// public array $default = [
|
||||||
|
// 'database' => 'database.db',
|
||||||
|
// 'DBDriver' => 'SQLite3',
|
||||||
|
// 'DBPrefix' => '',
|
||||||
|
// 'DBDebug' => true,
|
||||||
|
// 'swapPre' => '',
|
||||||
|
// 'failover' => [],
|
||||||
|
// 'foreignKeys' => true,
|
||||||
|
// 'busyTimeout' => 1000,
|
||||||
|
// 'synchronous' => null,
|
||||||
|
// 'dateFormat' => [
|
||||||
|
// 'date' => 'Y-m-d',
|
||||||
|
// 'datetime' => 'Y-m-d H:i:s',
|
||||||
|
// 'time' => 'H:i:s',
|
||||||
|
// ],
|
||||||
|
// ];
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Sample database connection for Postgre.
|
||||||
|
// *
|
||||||
|
// * @var array<string, mixed>
|
||||||
|
// */
|
||||||
|
// public array $default = [
|
||||||
|
// 'DSN' => '',
|
||||||
|
// 'hostname' => 'localhost',
|
||||||
|
// 'username' => 'root',
|
||||||
|
// 'password' => 'root',
|
||||||
|
// 'database' => 'ci4',
|
||||||
|
// 'schema' => 'public',
|
||||||
|
// 'DBDriver' => 'Postgre',
|
||||||
|
// 'DBPrefix' => '',
|
||||||
|
// 'pConnect' => false,
|
||||||
|
// 'DBDebug' => true,
|
||||||
|
// 'charset' => 'utf8',
|
||||||
|
// 'swapPre' => '',
|
||||||
|
// 'failover' => [],
|
||||||
|
// 'port' => 5432,
|
||||||
|
// 'dateFormat' => [
|
||||||
|
// 'date' => 'Y-m-d',
|
||||||
|
// 'datetime' => 'Y-m-d H:i:s',
|
||||||
|
// 'time' => 'H:i:s',
|
||||||
|
// ],
|
||||||
|
// ];
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Sample database connection for SQLSRV.
|
||||||
|
// *
|
||||||
|
// * @var array<string, mixed>
|
||||||
|
// */
|
||||||
|
// public array $default = [
|
||||||
|
// 'DSN' => '',
|
||||||
|
// 'hostname' => 'localhost',
|
||||||
|
// 'username' => 'root',
|
||||||
|
// 'password' => 'root',
|
||||||
|
// 'database' => 'ci4',
|
||||||
|
// 'schema' => 'dbo',
|
||||||
|
// 'DBDriver' => 'SQLSRV',
|
||||||
|
// 'DBPrefix' => '',
|
||||||
|
// 'pConnect' => false,
|
||||||
|
// 'DBDebug' => true,
|
||||||
|
// 'charset' => 'utf8',
|
||||||
|
// 'swapPre' => '',
|
||||||
|
// 'encrypt' => false,
|
||||||
|
// 'failover' => [],
|
||||||
|
// 'port' => 1433,
|
||||||
|
// 'dateFormat' => [
|
||||||
|
// 'date' => 'Y-m-d',
|
||||||
|
// 'datetime' => 'Y-m-d H:i:s',
|
||||||
|
// 'time' => 'H:i:s',
|
||||||
|
// ],
|
||||||
|
// ];
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Sample database connection for OCI8.
|
||||||
|
// *
|
||||||
|
// * You may need the following environment variables:
|
||||||
|
// * NLS_LANG = 'AMERICAN_AMERICA.UTF8'
|
||||||
|
// * NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
|
||||||
|
// * NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
|
||||||
|
// * NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
|
||||||
|
// *
|
||||||
|
// * @var array<string, mixed>
|
||||||
|
// */
|
||||||
|
// public array $default = [
|
||||||
|
// 'DSN' => 'localhost:1521/FREEPDB1',
|
||||||
|
// 'username' => 'root',
|
||||||
|
// 'password' => 'root',
|
||||||
|
// 'DBDriver' => 'OCI8',
|
||||||
|
// 'DBPrefix' => '',
|
||||||
|
// 'pConnect' => false,
|
||||||
|
// 'DBDebug' => true,
|
||||||
|
// 'charset' => 'AL32UTF8',
|
||||||
|
// 'swapPre' => '',
|
||||||
|
// 'failover' => [],
|
||||||
|
// 'dateFormat' => [
|
||||||
|
// 'date' => 'Y-m-d',
|
||||||
|
// 'datetime' => 'Y-m-d H:i:s',
|
||||||
|
// 'time' => 'H:i:s',
|
||||||
|
// ],
|
||||||
|
// ];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This database connection is used when running PHPUnit database tests.
|
* This database connection is used when running PHPUnit database tests.
|
||||||
*
|
*
|
||||||
@@ -64,11 +170,12 @@ class Database extends Config
|
|||||||
'swapPre' => '',
|
'swapPre' => '',
|
||||||
'encrypt' => false,
|
'encrypt' => false,
|
||||||
'compress' => false,
|
'compress' => false,
|
||||||
'strictOn' => false,
|
'strictOn' => true,
|
||||||
'failover' => [],
|
'failover' => [],
|
||||||
'port' => 3306,
|
'port' => 3306,
|
||||||
'foreignKeys' => true,
|
'foreignKeys' => true,
|
||||||
'busyTimeout' => 1000,
|
'busyTimeout' => 1000,
|
||||||
|
'synchronous' => null,
|
||||||
'dateFormat' => [
|
'dateFormat' => [
|
||||||
'date' => 'Y-m-d',
|
'date' => 'Y-m-d',
|
||||||
'datetime' => 'Y-m-d H:i:s',
|
'datetime' => 'Y-m-d H:i:s',
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class Email extends BaseConfig
|
|||||||
public string $mailPath = '/usr/sbin/sendmail';
|
public string $mailPath = '/usr/sbin/sendmail';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP Server Address
|
* SMTP Server Hostname
|
||||||
*/
|
*/
|
||||||
public string $SMTPHost ="web110.dogado.de";
|
public string $SMTPHost ="web110.dogado.de";
|
||||||
|
|
||||||
@@ -58,9 +58,13 @@ class Email extends BaseConfig
|
|||||||
public bool $SMTPKeepAlive = false;
|
public bool $SMTPKeepAlive = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP Encryption. Either tls or ssl
|
* SMTP Encryption.
|
||||||
|
*
|
||||||
|
* @var string '', 'tls' or 'ssl'. 'tls' will issue a STARTTLS command
|
||||||
|
* to the server. 'ssl' means implicit SSL. Connection on port
|
||||||
|
* 465 should set this to ''.
|
||||||
*/
|
*/
|
||||||
public string $SMTPCrypto = '';
|
public string $SMTPCrypto = 'ssl';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable word-wrap
|
* Enable word-wrap
|
||||||
@@ -75,7 +79,7 @@ class Email extends BaseConfig
|
|||||||
/**
|
/**
|
||||||
* Type of mail, either 'text' or 'html'
|
* Type of mail, either 'text' or 'html'
|
||||||
*/
|
*/
|
||||||
public string $mailType = 'html';
|
public string $mailType = 'text';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Character set (utf-8, iso-8859-1, etc.)
|
* Character set (utf-8, iso-8859-1, etc.)
|
||||||
|
|||||||
@@ -23,6 +23,23 @@ class Encryption extends BaseConfig
|
|||||||
*/
|
*/
|
||||||
public string $key = '';
|
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
|
* Encryption Driver to Use
|
||||||
|
|||||||
@@ -25,7 +25,9 @@ use CodeIgniter\HotReloader\HotReloader;
|
|||||||
|
|
||||||
Events::on('pre_system', static function (): void {
|
Events::on('pre_system', static function (): void {
|
||||||
if (ENVIRONMENT !== 'testing') {
|
if (ENVIRONMENT !== 'testing') {
|
||||||
if (ini_get('zlib.output_compression')) {
|
$value = ini_get('zlib.output_compression');
|
||||||
|
|
||||||
|
if (filter_var($value, FILTER_VALIDATE_BOOLEAN) || (int) $value > 0) {
|
||||||
throw FrameworkException::forEnabledZlibOutputCompression();
|
throw FrameworkException::forEnabledZlibOutputCompression();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,10 @@ class Filters extends BaseFilters
|
|||||||
* List of filter aliases that are always
|
* List of filter aliases that are always
|
||||||
* applied before and after every request.
|
* applied before and after every request.
|
||||||
*
|
*
|
||||||
* @var array<string, array<string, array<string, string>>>|array<string, list<string>>
|
* @var array{
|
||||||
|
* before: array<string, array{except: list<string>|string}>|list<string>,
|
||||||
|
* after: array<string, array{except: list<string>|string}>|list<string>
|
||||||
|
* }
|
||||||
*/
|
*/
|
||||||
public array $globals = [
|
public array $globals = [
|
||||||
'before' => [
|
'before' => [
|
||||||
|
|||||||
@@ -61,4 +61,13 @@ class Format extends BaseConfig
|
|||||||
'application/xml' => 0,
|
'application/xml' => 0,
|
||||||
'text/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;
|
||||||
}
|
}
|
||||||
|
|||||||
40
app/Config/Hostnames.php
Normal file
40
app/Config/Hostnames.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
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',
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -16,6 +16,8 @@ class Images extends BaseConfig
|
|||||||
/**
|
/**
|
||||||
* The path to the image library.
|
* The path to the image library.
|
||||||
* Required for ImageMagick, GraphicsMagick, or NetPBM.
|
* Required for ImageMagick, GraphicsMagick, or NetPBM.
|
||||||
|
*
|
||||||
|
* @deprecated 4.7.0 No longer used.
|
||||||
*/
|
*/
|
||||||
public string $libraryPath = '/usr/local/bin/convert';
|
public string $libraryPath = '/usr/local/bin/convert';
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace Config;
|
|||||||
|
|
||||||
use CodeIgniter\Config\BaseConfig;
|
use CodeIgniter\Config\BaseConfig;
|
||||||
use CodeIgniter\Log\Handlers\FileHandler;
|
use CodeIgniter\Log\Handlers\FileHandler;
|
||||||
|
use CodeIgniter\Log\Handlers\HandlerInterface;
|
||||||
|
|
||||||
class Logger extends BaseConfig
|
class Logger extends BaseConfig
|
||||||
{
|
{
|
||||||
@@ -73,7 +74,7 @@ class Logger extends BaseConfig
|
|||||||
* Handlers are executed in the order defined in this array, starting with
|
* Handlers are executed in the order defined in this array, starting with
|
||||||
* the handler on top and continuing down.
|
* the handler on top and continuing down.
|
||||||
*
|
*
|
||||||
* @var array<class-string, array<string, int|list<string>|string>>
|
* @var array<class-string<HandlerInterface>, array<string, int|list<string>|string>>
|
||||||
*/
|
*/
|
||||||
public array $handlers = [
|
public array $handlers = [
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -47,4 +47,19 @@ class Migrations extends BaseConfig
|
|||||||
* - Y_m_d_His_
|
* - Y_m_d_His_
|
||||||
*/
|
*/
|
||||||
public string $timestampFormat = '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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ namespace Config;
|
|||||||
*
|
*
|
||||||
* NOTE: This class does not extend BaseConfig for performance reasons.
|
* NOTE: This class does not extend BaseConfig for performance reasons.
|
||||||
* So you cannot replace the property values with Environment Variables.
|
* 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
|
class Optimize
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class Paths
|
|||||||
* This must contain the name of your "system" folder. Include
|
* This must contain the name of your "system" folder. Include
|
||||||
* the path if the folder is not in the same directory as this file.
|
* the path if the folder is not in the same directory as this file.
|
||||||
*/
|
*/
|
||||||
public $systemDirectory = __DIR__ . '/../../../vendor/codeigniter4/framework/system';
|
public string $systemDirectory = __DIR__ . '/../../../vendor/codeigniter4/framework/system';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ---------------------------------------------------------------
|
* ---------------------------------------------------------------
|
||||||
@@ -75,4 +75,16 @@ class Paths
|
|||||||
* is used when no value is provided to `Services::renderer()`.
|
* is used when no value is provided to `Services::renderer()`.
|
||||||
*/
|
*/
|
||||||
public string $viewDirectory = __DIR__ . '/../Views';
|
public string $viewDirectory = __DIR__ . '/../Views';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ---------------------------------------------------------------
|
||||||
|
* ENVIRONMENT DIRECTORY NAME
|
||||||
|
* ---------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* This variable must contain the name of the directory where
|
||||||
|
* the .env file is located.
|
||||||
|
* Please consider security implications when changing this
|
||||||
|
* value - the directory should not be publicly accessible.
|
||||||
|
*/
|
||||||
|
public string $envDirectory = __DIR__ . '/../../';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,7 @@
|
|||||||
|
|
||||||
use CodeIgniter\Router\RouteCollection;
|
use CodeIgniter\Router\RouteCollection;
|
||||||
|
|
||||||
/**
|
/** @var RouteCollection $routes */
|
||||||
* @var RouteCollection $routes
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,15 @@ class Routing extends BaseRouting
|
|||||||
*/
|
*/
|
||||||
public bool $autoRoute = false;
|
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.
|
* For Defined Routes.
|
||||||
* If TRUE, will enable the use of the 'prioritize' option
|
* If TRUE, will enable the use of the 'prioritize' option
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ class Session extends BaseConfig
|
|||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* The session storage driver to use:
|
* The session storage driver to use:
|
||||||
|
* - `CodeIgniter\Session\Handlers\ArrayHandler` (for testing)
|
||||||
* - `CodeIgniter\Session\Handlers\FileHandler`
|
* - `CodeIgniter\Session\Handlers\FileHandler`
|
||||||
* - `CodeIgniter\Session\Handlers\DatabaseHandler`
|
* - `CodeIgniter\Session\Handlers\DatabaseHandler`
|
||||||
* - `CodeIgniter\Session\Handlers\MemcachedHandler`
|
* - `CodeIgniter\Session\Handlers\MemcachedHandler`
|
||||||
|
|||||||
@@ -119,4 +119,29 @@ class Toolbar extends BaseConfig
|
|||||||
public array $watchedExtensions = [
|
public array $watchedExtensions = [
|
||||||
'php', 'css', 'js', 'html', 'svg', 'json', 'env',
|
'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
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -230,9 +230,13 @@ class UserAgents extends BaseConfig
|
|||||||
*/
|
*/
|
||||||
public array $robots = [
|
public array $robots = [
|
||||||
'googlebot' => 'Googlebot',
|
'googlebot' => 'Googlebot',
|
||||||
|
'google-pagerenderer' => 'Google Page Renderer',
|
||||||
|
'google-read-aloud' => 'Google Read Aloud',
|
||||||
|
'google-safety' => 'Google Safety Bot',
|
||||||
'msnbot' => 'MSNBot',
|
'msnbot' => 'MSNBot',
|
||||||
'baiduspider' => 'Baiduspider',
|
'baiduspider' => 'Baiduspider',
|
||||||
'bingbot' => 'Bing',
|
'bingbot' => 'Bing',
|
||||||
|
'bingpreview' => 'BingPreview',
|
||||||
'slurp' => 'Inktomi Slurp',
|
'slurp' => 'Inktomi Slurp',
|
||||||
'yahoo' => 'Yahoo',
|
'yahoo' => 'Yahoo',
|
||||||
'ask jeeves' => 'Ask Jeeves',
|
'ask jeeves' => 'Ask Jeeves',
|
||||||
@@ -248,5 +252,11 @@ class UserAgents extends BaseConfig
|
|||||||
'ia_archiver' => 'Alexa Crawler',
|
'ia_archiver' => 'Alexa Crawler',
|
||||||
'MJ12bot' => 'Majestic-12',
|
'MJ12bot' => 'Majestic-12',
|
||||||
'Uptimebot' => 'Uptimebot',
|
'Uptimebot' => 'Uptimebot',
|
||||||
|
'duckduckbot' => 'DuckDuckBot',
|
||||||
|
'sogou' => 'Sogou Spider',
|
||||||
|
'exabot' => 'Exabot',
|
||||||
|
'bot' => 'Generic Bot',
|
||||||
|
'crawler' => 'Generic Crawler',
|
||||||
|
'spider' => 'Generic Spider',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ namespace Config;
|
|||||||
use CodeIgniter\Config\View as BaseView;
|
use CodeIgniter\Config\View as BaseView;
|
||||||
use CodeIgniter\View\ViewDecoratorInterface;
|
use CodeIgniter\View\ViewDecoratorInterface;
|
||||||
|
|
||||||
/**
|
|
||||||
* @phpstan-type parser_callable (callable(mixed): mixed)
|
|
||||||
* @phpstan-type parser_callable_string (callable(mixed): mixed)&string
|
|
||||||
*/
|
|
||||||
class View extends BaseView
|
class View extends BaseView
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@@ -34,8 +30,7 @@ class View extends BaseView
|
|||||||
* { title|esc(js) }
|
* { title|esc(js) }
|
||||||
* { created_on|date(Y-m-d)|esc(attr) }
|
* { created_on|date(Y-m-d)|esc(attr) }
|
||||||
*
|
*
|
||||||
* @var array<string, string>
|
* @var array<string, (callable(mixed): mixed)&string>
|
||||||
* @phpstan-var array<string, parser_callable_string>
|
|
||||||
*/
|
*/
|
||||||
public $filters = [];
|
public $filters = [];
|
||||||
|
|
||||||
@@ -44,8 +39,7 @@ class View extends BaseView
|
|||||||
* by the core Parser by creating aliases that will be replaced with
|
* by the core Parser by creating aliases that will be replaced with
|
||||||
* any callable. Can be single or tag pair.
|
* any callable. Can be single or tag pair.
|
||||||
*
|
*
|
||||||
* @var array<string, callable|list<string>|string>
|
* @var array<string, (callable(mixed...): mixed)|((callable(mixed...): mixed)&string)|list<(callable(mixed...): mixed)&string>>
|
||||||
* @phpstan-var array<string, list<parser_callable_string>|parser_callable_string|parser_callable>
|
|
||||||
*/
|
*/
|
||||||
public $plugins = [];
|
public $plugins = [];
|
||||||
|
|
||||||
@@ -59,4 +53,21 @@ class View extends BaseView
|
|||||||
* @var list<class-string<ViewDecoratorInterface>>
|
* @var list<class-string<ViewDecoratorInterface>>
|
||||||
*/
|
*/
|
||||||
public array $decorators = [];
|
public array $decorators = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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';
|
||||||
}
|
}
|
||||||
|
|||||||
62
app/Config/WorkerMode.php
Normal file
62
app/Config/WorkerMode.php
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
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',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset Event Listeners
|
||||||
|
*
|
||||||
|
* List of event names whose listeners should be removed between requests.
|
||||||
|
* Use this if you register event listeners inside other event callbacks
|
||||||
|
* (rather than at the top level of Config/Events.php), which would cause
|
||||||
|
* them to accumulate across requests in worker mode.
|
||||||
|
*
|
||||||
|
* @var list<string>
|
||||||
|
*/
|
||||||
|
public array $resetEventListeners = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force Garbage Collection
|
||||||
|
*
|
||||||
|
* Whether to force garbage collection after each request.
|
||||||
|
* Helps prevent memory leaks at a small performance cost.
|
||||||
|
*/
|
||||||
|
public bool $forceGarbageCollection = true;
|
||||||
|
}
|
||||||
@@ -3,44 +3,28 @@
|
|||||||
namespace App\Controllers;
|
namespace App\Controllers;
|
||||||
|
|
||||||
use CodeIgniter\Controller;
|
use CodeIgniter\Controller;
|
||||||
use CodeIgniter\HTTP\CLIRequest;
|
|
||||||
use CodeIgniter\HTTP\IncomingRequest;
|
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
use CodeIgniter\HTTP\ResponseInterface;
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class BaseController
|
|
||||||
*
|
|
||||||
* BaseController provides a convenient place for loading components
|
* BaseController provides a convenient place for loading components
|
||||||
* and performing functions that are needed by all your controllers.
|
* and performing functions that are needed by all your controllers.
|
||||||
* Extend this class in any new controllers:
|
|
||||||
* class Home extends BaseController
|
|
||||||
*
|
*
|
||||||
* For security be sure to declare any new methods as protected or private.
|
* Extend this class in any new controllers:
|
||||||
|
* ```
|
||||||
|
* class Home extends BaseController
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* For security, be sure to declare any new methods as protected or private.
|
||||||
*/
|
*/
|
||||||
abstract class BaseController extends Controller
|
abstract class BaseController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Instance of the main Request object.
|
|
||||||
*
|
|
||||||
* @var CLIRequest|IncomingRequest
|
|
||||||
*/
|
|
||||||
protected $request;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An array of helpers to be loaded automatically upon
|
|
||||||
* class instantiation. These helpers will be available
|
|
||||||
* to all other controllers that extend BaseController.
|
|
||||||
*
|
|
||||||
* @var list<string>
|
|
||||||
*/
|
|
||||||
protected $helpers = [];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Be sure to declare properties for any property fetch you initialized.
|
* Be sure to declare properties for any property fetch you initialized.
|
||||||
* The creation of dynamic property is deprecated in PHP 8.2.
|
* The creation of dynamic property is deprecated in PHP 8.2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// protected $session;
|
// protected $session;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,11 +32,14 @@ abstract class BaseController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||||
{
|
{
|
||||||
// Do Not Edit This Line
|
// Load here all helpers you want to be available in your controllers that extend BaseController.
|
||||||
|
// Caution: Do not put the this below the parent::initController() call below.
|
||||||
|
// $this->helpers = ['form', 'url'];
|
||||||
|
|
||||||
|
// Caution: Do not edit this line.
|
||||||
parent::initController($request, $response, $logger);
|
parent::initController($request, $response, $logger);
|
||||||
|
|
||||||
// Preload any models, libraries, etc, here.
|
// Preload any models, libraries, etc, here.
|
||||||
|
// $this->session = service('session');
|
||||||
// E.g.: $this->session = service('session');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ $errorId = uniqid('error', true);
|
|||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="environment">
|
<div class="environment">
|
||||||
Displayed at <?= esc(date('H:i:sa')) ?> —
|
Displayed at <?= esc(date('H:i:s')) ?> —
|
||||||
PHP: <?= esc(PHP_VERSION) ?> —
|
PHP: <?= esc(PHP_VERSION) ?> —
|
||||||
CodeIgniter: <?= esc(CodeIgniter::CI_VERSION) ?> --
|
CodeIgniter: <?= esc(CodeIgniter::CI_VERSION) ?> --
|
||||||
Environment: <?= ENVIRONMENT ?>
|
Environment: <?= ENVIRONMENT ?>
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<phpunit
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd"
|
|
||||||
bootstrap="system/Test/bootstrap.php"
|
|
||||||
backupGlobals="false"
|
|
||||||
beStrictAboutOutputDuringTests="true"
|
|
||||||
colors="true"
|
|
||||||
columns="max"
|
|
||||||
failOnRisky="true"
|
|
||||||
failOnWarning="true"
|
|
||||||
cacheDirectory="build/.phpunit.cache">
|
|
||||||
<coverage
|
|
||||||
includeUncoveredFiles="true"
|
|
||||||
pathCoverage="false"
|
|
||||||
ignoreDeprecatedCodeUnits="true"
|
|
||||||
disableCodeCoverageIgnore="true">
|
|
||||||
<report>
|
|
||||||
<clover outputFile="build/logs/clover.xml"/>
|
|
||||||
<html outputDirectory="build/logs/html"/>
|
|
||||||
<php outputFile="build/logs/coverage.serialized"/>
|
|
||||||
<text outputFile="php://stdout" showUncoveredFiles="false"/>
|
|
||||||
</report>
|
|
||||||
</coverage>
|
|
||||||
<testsuites>
|
|
||||||
<testsuite name="App">
|
|
||||||
<directory>./tests</directory>
|
|
||||||
</testsuite>
|
|
||||||
</testsuites>
|
|
||||||
<logging>
|
|
||||||
<testdoxHtml outputFile="build/logs/testdox.html"/>
|
|
||||||
<testdoxText outputFile="build/logs/testdox.txt"/>
|
|
||||||
<junit outputFile="build/logs/logfile.xml"/>
|
|
||||||
</logging>
|
|
||||||
<source>
|
|
||||||
<include>
|
|
||||||
<directory suffix=".php">./app</directory>
|
|
||||||
</include>
|
|
||||||
<exclude>
|
|
||||||
<directory suffix=".php">./app/Views</directory>
|
|
||||||
<file>./app/Config/Routes.php</file>
|
|
||||||
</exclude>
|
|
||||||
</source>
|
|
||||||
<php>
|
|
||||||
<server name="app.baseURL" value="http://example.com/"/>
|
|
||||||
<server name="CODEIGNITER_SCREAM_DEPRECATIONS" value="0"/>
|
|
||||||
<!-- Directory containing phpunit.xml -->
|
|
||||||
<const name="HOMEPATH" value="./"/>
|
|
||||||
<!-- Directory containing the Paths config file -->
|
|
||||||
<const name="CONFIGPATH" value="./app/Config/"/>
|
|
||||||
<!-- Directory containing the front controller (index.php) -->
|
|
||||||
<const name="PUBLICPATH" value="./public/"/>
|
|
||||||
<!-- Database configuration -->
|
|
||||||
<!-- Uncomment to provide your own database for testing
|
|
||||||
<env name="database.tests.hostname" value="localhost"/>
|
|
||||||
<env name="database.tests.database" value="tests"/>
|
|
||||||
<env name="database.tests.username" value="tests_user"/>
|
|
||||||
<env name="database.tests.password" value=""/>
|
|
||||||
<env name="database.tests.DBDriver" value="MySQLi"/>
|
|
||||||
<env name="database.tests.DBPrefix" value="tests_"/>
|
|
||||||
-->
|
|
||||||
</php>
|
|
||||||
</phpunit>
|
|
||||||
14
preload.php
14
preload.php
@@ -9,6 +9,9 @@
|
|||||||
* the LICENSE file that was distributed with this source code.
|
* the LICENSE file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use CodeIgniter\Boot;
|
||||||
|
use Config\Paths;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*---------------------------------------------------------------
|
*---------------------------------------------------------------
|
||||||
* Sample file for Preloading
|
* Sample file for Preloading
|
||||||
@@ -54,6 +57,7 @@ class preload
|
|||||||
'/system/Config/Routes.php',
|
'/system/Config/Routes.php',
|
||||||
'/system/Language/',
|
'/system/Language/',
|
||||||
'/system/bootstrap.php',
|
'/system/bootstrap.php',
|
||||||
|
'/system/util_bootstrap.php',
|
||||||
'/system/rewrite.php',
|
'/system/rewrite.php',
|
||||||
'/Views/',
|
'/Views/',
|
||||||
// Errors occur.
|
// Errors occur.
|
||||||
@@ -69,10 +73,10 @@ class preload
|
|||||||
|
|
||||||
private function loadAutoloader(): void
|
private function loadAutoloader(): void
|
||||||
{
|
{
|
||||||
$paths = new Config\Paths();
|
$paths = new Paths();
|
||||||
require rtrim($paths->systemDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'Boot.php';
|
require rtrim($paths->systemDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'Boot.php';
|
||||||
|
|
||||||
CodeIgniter\Boot::preload($paths);
|
Boot::preload($paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,7 +90,7 @@ class preload
|
|||||||
$phpFiles = new RegexIterator(
|
$phpFiles = new RegexIterator(
|
||||||
$fullTree,
|
$fullTree,
|
||||||
'/.+((?<!Test)+\.php$)/i',
|
'/.+((?<!Test)+\.php$)/i',
|
||||||
RecursiveRegexIterator::GET_MATCH
|
RecursiveRegexIterator::GET_MATCH,
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ($phpFiles as $key => $file) {
|
foreach ($phpFiles as $key => $file) {
|
||||||
@@ -97,7 +101,9 @@ class preload
|
|||||||
}
|
}
|
||||||
|
|
||||||
require_once $file[0];
|
require_once $file[0];
|
||||||
echo 'Loaded: ' . $file[0] . "\n";
|
// Uncomment only for debugging (to inspect which files are included).
|
||||||
|
// Never use this in production - preload scripts must not generate output.
|
||||||
|
// echo 'Loaded: ' . $file[0] . "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use Config\Paths;
|
|||||||
*---------------------------------------------------------------
|
*---------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$minPhpVersion = '8.1'; // If you update this, don't forget to update `spark`.
|
$minPhpVersion = '8.2'; // If you update this, don't forget to update `spark`.
|
||||||
if (version_compare(PHP_VERSION, $minPhpVersion, '<')) {
|
if (version_compare(PHP_VERSION, $minPhpVersion, '<')) {
|
||||||
$message = sprintf(
|
$message = sprintf(
|
||||||
'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s',
|
'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s',
|
||||||
|
|||||||
11
spark
11
spark
@@ -10,6 +10,9 @@
|
|||||||
* the LICENSE file that was distributed with this source code.
|
* the LICENSE file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use CodeIgniter\Boot;
|
||||||
|
use Config\Paths;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* --------------------------------------------------------------------
|
* --------------------------------------------------------------------
|
||||||
* CODEIGNITER COMMAND-LINE TOOLS
|
* CODEIGNITER COMMAND-LINE TOOLS
|
||||||
@@ -35,12 +38,12 @@ if (str_starts_with(PHP_SAPI, 'cgi')) {
|
|||||||
*---------------------------------------------------------------
|
*---------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$minPhpVersion = '8.1'; // If you update this, don't forget to update `public/index.php`.
|
$minPhpVersion = '8.2'; // If you update this, don't forget to update `public/index.php`.
|
||||||
if (version_compare(PHP_VERSION, $minPhpVersion, '<')) {
|
if (version_compare(PHP_VERSION, $minPhpVersion, '<')) {
|
||||||
$message = sprintf(
|
$message = sprintf(
|
||||||
'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s',
|
'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s',
|
||||||
$minPhpVersion,
|
$minPhpVersion,
|
||||||
PHP_VERSION
|
PHP_VERSION,
|
||||||
);
|
);
|
||||||
|
|
||||||
exit($message);
|
exit($message);
|
||||||
@@ -76,9 +79,9 @@ chdir(FCPATH);
|
|||||||
require FCPATH . '../smarthome/app/Config/Paths.php';
|
require FCPATH . '../smarthome/app/Config/Paths.php';
|
||||||
// ^^^ Change this line if you move your application folder
|
// ^^^ Change this line if you move your application folder
|
||||||
|
|
||||||
$paths = new Config\Paths();
|
$paths = new Paths();
|
||||||
|
|
||||||
// LOAD THE FRAMEWORK BOOTSTRAP FILE
|
// LOAD THE FRAMEWORK BOOTSTRAP FILE
|
||||||
require $paths->systemDirectory . '/Boot.php';
|
require $paths->systemDirectory . '/Boot.php';
|
||||||
|
|
||||||
exit(CodeIgniter\Boot::bootSpark($paths));
|
exit(Boot::bootSpark($paths));
|
||||||
|
|||||||
Reference in New Issue
Block a user