├── README.md
├── app
├── .htaccess
├── Common.php
├── Config
│ ├── App.php
│ ├── Autoload.php
│ ├── Boot
│ │ ├── development.php
│ │ ├── production.php
│ │ └── testing.php
│ ├── Cache.php
│ ├── Constants.php
│ ├── ContentSecurityPolicy.php
│ ├── Database.php
│ ├── DocTypes.php
│ ├── Email.php
│ ├── Encryption.php
│ ├── Events.php
│ ├── Exceptions.php
│ ├── Filters.php
│ ├── ForeignCharacters.php
│ ├── Format.php
│ ├── Honeypot.php
│ ├── Images.php
│ ├── Kint.php
│ ├── Logger.php
│ ├── Migrations.php
│ ├── Mimes.php
│ ├── Modules.php
│ ├── Pager.php
│ ├── Paths.php
│ ├── Routes.php
│ ├── Services.php
│ ├── Toolbar.php
│ ├── UserAgents.php
│ ├── Validation.php
│ └── View.php
├── Controllers
│ ├── BaseController.php
│ ├── Home.php
│ └── Products.php
├── Database
│ ├── Migrations
│ │ └── .gitkeep
│ └── Seeds
│ │ └── .gitkeep
├── Filters
│ ├── .gitkeep
│ └── Cors.php
├── Helpers
│ └── .gitkeep
├── Language
│ └── .gitkeep
├── Libraries
│ └── .gitkeep
├── Models
│ ├── .gitkeep
│ └── ProductModel.php
├── ThirdParty
│ └── .gitkeep
├── Views
│ ├── errors
│ │ ├── cli
│ │ │ ├── error_404.php
│ │ │ ├── error_exception.php
│ │ │ └── production.php
│ │ └── html
│ │ │ ├── debug.css
│ │ │ ├── debug.js
│ │ │ ├── error_404.php
│ │ │ ├── error_exception.php
│ │ │ └── production.php
│ └── welcome_message.php
└── index.html
├── composer.json
├── license.txt
├── phpunit.xml.dist
├── public
├── .htaccess
├── favicon.ico
├── index.php
└── robots.txt
├── restful_db.sql
├── spark
├── system
├── .htaccess
├── API
│ └── ResponseTrait.php
├── Autoloader
│ ├── Autoloader.php
│ └── FileLocator.php
├── CLI
│ ├── BaseCommand.php
│ ├── CLI.php
│ ├── CommandRunner.php
│ ├── Console.php
│ └── Exceptions
│ │ └── CLIException.php
├── Cache
│ ├── CacheFactory.php
│ ├── CacheInterface.php
│ ├── Exceptions
│ │ ├── CacheException.php
│ │ └── ExceptionInterface.php
│ └── Handlers
│ │ ├── DummyHandler.php
│ │ ├── FileHandler.php
│ │ ├── MemcachedHandler.php
│ │ ├── PredisHandler.php
│ │ ├── RedisHandler.php
│ │ └── WincacheHandler.php
├── CodeIgniter.php
├── Commands
│ ├── Database
│ │ ├── CreateMigration.php
│ │ ├── Migrate.php
│ │ ├── MigrateRefresh.php
│ │ ├── MigrateRollback.php
│ │ ├── MigrateStatus.php
│ │ └── Seed.php
│ ├── Help.php
│ ├── ListCommands.php
│ ├── Server
│ │ ├── Serve.php
│ │ └── rewrite.php
│ ├── Sessions
│ │ ├── CreateMigration.php
│ │ └── Views
│ │ │ └── migration.tpl.php
│ └── Utilities
│ │ ├── Namespaces.php
│ │ └── Routes.php
├── Common.php
├── ComposerScripts.php
├── Config
│ ├── AutoloadConfig.php
│ ├── BaseConfig.php
│ ├── BaseService.php
│ ├── Config.php
│ ├── DotEnv.php
│ ├── ForeignCharacters.php
│ ├── Routes.php
│ ├── Services.php
│ └── View.php
├── Controller.php
├── Database
│ ├── BaseBuilder.php
│ ├── BaseConnection.php
│ ├── BasePreparedQuery.php
│ ├── BaseResult.php
│ ├── BaseUtils.php
│ ├── Config.php
│ ├── ConnectionInterface.php
│ ├── Database.php
│ ├── Exceptions
│ │ ├── DataException.php
│ │ ├── DatabaseException.php
│ │ └── ExceptionInterface.php
│ ├── Forge.php
│ ├── Migration.php
│ ├── MigrationRunner.php
│ ├── ModelFactory.php
│ ├── MySQLi
│ │ ├── Builder.php
│ │ ├── Connection.php
│ │ ├── Forge.php
│ │ ├── PreparedQuery.php
│ │ ├── Result.php
│ │ └── Utils.php
│ ├── Postgre
│ │ ├── Builder.php
│ │ ├── Connection.php
│ │ ├── Forge.php
│ │ ├── PreparedQuery.php
│ │ ├── Result.php
│ │ └── Utils.php
│ ├── PreparedQueryInterface.php
│ ├── Query.php
│ ├── QueryInterface.php
│ ├── ResultInterface.php
│ ├── SQLite3
│ │ ├── Builder.php
│ │ ├── Connection.php
│ │ ├── Forge.php
│ │ ├── PreparedQuery.php
│ │ ├── Result.php
│ │ ├── Table.php
│ │ └── Utils.php
│ └── Seeder.php
├── Debug
│ ├── Exceptions.php
│ ├── Iterator.php
│ ├── Timer.php
│ ├── Toolbar.php
│ └── Toolbar
│ │ ├── Collectors
│ │ ├── BaseCollector.php
│ │ ├── Config.php
│ │ ├── Database.php
│ │ ├── Events.php
│ │ ├── Files.php
│ │ ├── History.php
│ │ ├── Logs.php
│ │ ├── Routes.php
│ │ ├── Timers.php
│ │ └── Views.php
│ │ └── Views
│ │ ├── _config.tpl
│ │ ├── _database.tpl
│ │ ├── _events.tpl
│ │ ├── _files.tpl
│ │ ├── _history.tpl
│ │ ├── _logs.tpl
│ │ ├── _routes.tpl
│ │ ├── toolbar.css
│ │ ├── toolbar.js
│ │ ├── toolbar.tpl.php
│ │ └── toolbarloader.js.php
├── Email
│ └── Email.php
├── Encryption
│ ├── EncrypterInterface.php
│ ├── Encryption.php
│ ├── Exceptions
│ │ └── EncryptionException.php
│ └── Handlers
│ │ ├── BaseHandler.php
│ │ └── OpenSSLHandler.php
├── Entity.php
├── Events
│ └── Events.php
├── Exceptions
│ ├── AlertError.php
│ ├── CastException.php
│ ├── ConfigException.php
│ ├── CriticalError.php
│ ├── DownloadException.php
│ ├── EmergencyError.php
│ ├── ExceptionInterface.php
│ ├── FrameworkException.php
│ ├── ModelException.php
│ └── PageNotFoundException.php
├── Files
│ ├── Exceptions
│ │ ├── FileException.php
│ │ └── FileNotFoundException.php
│ └── File.php
├── Filters
│ ├── CSRF.php
│ ├── DebugToolbar.php
│ ├── Exceptions
│ │ └── FilterException.php
│ ├── FilterInterface.php
│ ├── Filters.php
│ └── Honeypot.php
├── Format
│ ├── Exceptions
│ │ └── FormatException.php
│ ├── FormatterInterface.php
│ ├── JSONFormatter.php
│ └── XMLFormatter.php
├── HTTP
│ ├── CLIRequest.php
│ ├── CURLRequest.php
│ ├── ContentSecurityPolicy.php
│ ├── DownloadResponse.php
│ ├── Exceptions
│ │ └── HTTPException.php
│ ├── Files
│ │ ├── FileCollection.php
│ │ ├── UploadedFile.php
│ │ └── UploadedFileInterface.php
│ ├── Header.php
│ ├── IncomingRequest.php
│ ├── Message.php
│ ├── Negotiate.php
│ ├── RedirectResponse.php
│ ├── Request.php
│ ├── RequestInterface.php
│ ├── Response.php
│ ├── ResponseInterface.php
│ ├── URI.php
│ └── UserAgent.php
├── Helpers
│ ├── array_helper.php
│ ├── cookie_helper.php
│ ├── date_helper.php
│ ├── filesystem_helper.php
│ ├── form_helper.php
│ ├── html_helper.php
│ ├── inflector_helper.php
│ ├── number_helper.php
│ ├── security_helper.php
│ ├── text_helper.php
│ ├── url_helper.php
│ └── xml_helper.php
├── Honeypot
│ ├── Exceptions
│ │ └── HoneypotException.php
│ └── Honeypot.php
├── I18n
│ ├── Exceptions
│ │ └── I18nException.php
│ ├── Time.php
│ └── TimeDifference.php
├── Images
│ ├── Exceptions
│ │ └── ImageException.php
│ ├── Handlers
│ │ ├── BaseHandler.php
│ │ ├── GDHandler.php
│ │ └── ImageMagickHandler.php
│ ├── Image.php
│ └── ImageHandlerInterface.php
├── Language
│ ├── Language.php
│ └── en
│ │ ├── CLI.php
│ │ ├── Cache.php
│ │ ├── Cast.php
│ │ ├── Core.php
│ │ ├── Database.php
│ │ ├── Email.php
│ │ ├── Encryption.php
│ │ ├── Entity.php
│ │ ├── Files.php
│ │ ├── Filters.php
│ │ ├── Format.php
│ │ ├── HTTP.php
│ │ ├── Images.php
│ │ ├── Language.php
│ │ ├── Log.php
│ │ ├── Migrations.php
│ │ ├── Number.php
│ │ ├── Pager.php
│ │ ├── RESTful.php
│ │ ├── Redirect.php
│ │ ├── Router.php
│ │ ├── Session.php
│ │ ├── Time.php
│ │ ├── Validation.php
│ │ └── View.php
├── Log
│ ├── Exceptions
│ │ └── LogException.php
│ ├── Handlers
│ │ ├── BaseHandler.php
│ │ ├── ChromeLoggerHandler.php
│ │ ├── FileHandler.php
│ │ └── HandlerInterface.php
│ └── Logger.php
├── Model.php
├── Pager
│ ├── Exceptions
│ │ └── PagerException.php
│ ├── Pager.php
│ ├── PagerInterface.php
│ ├── PagerRenderer.php
│ └── Views
│ │ ├── default_full.php
│ │ ├── default_head.php
│ │ └── default_simple.php
├── RESTful
│ ├── ResourceController.php
│ └── ResourcePresenter.php
├── Router
│ ├── Exceptions
│ │ ├── RedirectException.php
│ │ └── RouterException.php
│ ├── RouteCollection.php
│ ├── RouteCollectionInterface.php
│ ├── Router.php
│ └── RouterInterface.php
├── Security
│ ├── Exceptions
│ │ └── SecurityException.php
│ └── Security.php
├── Session
│ ├── Exceptions
│ │ └── SessionException.php
│ ├── Handlers
│ │ ├── ArrayHandler.php
│ │ ├── BaseHandler.php
│ │ ├── DatabaseHandler.php
│ │ ├── FileHandler.php
│ │ ├── MemcachedHandler.php
│ │ └── RedisHandler.php
│ ├── Session.php
│ └── SessionInterface.php
├── Test
│ ├── CIDatabaseTestCase.php
│ ├── CIUnitTestCase.php
│ ├── ControllerResponse.php
│ ├── ControllerTester.php
│ ├── DOMParser.php
│ ├── FeatureResponse.php
│ ├── FeatureTestCase.php
│ ├── Filters
│ │ └── CITestStreamFilter.php
│ ├── Mock
│ │ ├── MockAppConfig.php
│ │ ├── MockAutoload.php
│ │ ├── MockBuilder.php
│ │ ├── MockCLIConfig.php
│ │ ├── MockCURLRequest.php
│ │ ├── MockCache.php
│ │ ├── MockCodeIgniter.php
│ │ ├── MockCommon.php
│ │ ├── MockConnection.php
│ │ ├── MockEmail.php
│ │ ├── MockEvents.php
│ │ ├── MockFileLogger.php
│ │ ├── MockIncomingRequest.php
│ │ ├── MockLanguage.php
│ │ ├── MockLogger.php
│ │ ├── MockQuery.php
│ │ ├── MockResourceController.php
│ │ ├── MockResourcePresenter.php
│ │ ├── MockResponse.php
│ │ ├── MockResult.php
│ │ ├── MockSecurity.php
│ │ ├── MockServices.php
│ │ ├── MockSession.php
│ │ └── MockTable.php
│ ├── ReflectionHelper.php
│ ├── TestLogger.php
│ └── bootstrap.php
├── ThirdParty
│ ├── Escaper
│ │ ├── Escaper.php
│ │ └── Exception
│ │ │ ├── ExceptionInterface.php
│ │ │ ├── InvalidArgumentException.php
│ │ │ └── RuntimeException.php
│ ├── Kint
│ │ ├── CallFinder.php
│ │ ├── Kint.php
│ │ ├── Object
│ │ │ ├── BasicObject.php
│ │ │ ├── BlobObject.php
│ │ │ ├── ClosureObject.php
│ │ │ ├── DateTimeObject.php
│ │ │ ├── InstanceObject.php
│ │ │ ├── MethodObject.php
│ │ │ ├── ParameterObject.php
│ │ │ ├── Representation
│ │ │ │ ├── ColorRepresentation.php
│ │ │ │ ├── DocstringRepresentation.php
│ │ │ │ ├── MicrotimeRepresentation.php
│ │ │ │ ├── Representation.php
│ │ │ │ ├── SourceRepresentation.php
│ │ │ │ └── SplFileInfoRepresentation.php
│ │ │ ├── ResourceObject.php
│ │ │ ├── StreamObject.php
│ │ │ ├── ThrowableObject.php
│ │ │ ├── TraceFrameObject.php
│ │ │ └── TraceObject.php
│ │ ├── Parser
│ │ │ ├── ArrayObjectPlugin.php
│ │ │ ├── Base64Plugin.php
│ │ │ ├── BinaryPlugin.php
│ │ │ ├── BlacklistPlugin.php
│ │ │ ├── ClassMethodsPlugin.php
│ │ │ ├── ClassStaticsPlugin.php
│ │ │ ├── ClosurePlugin.php
│ │ │ ├── ColorPlugin.php
│ │ │ ├── DOMDocumentPlugin.php
│ │ │ ├── DateTimePlugin.php
│ │ │ ├── FsPathPlugin.php
│ │ │ ├── IteratorPlugin.php
│ │ │ ├── JsonPlugin.php
│ │ │ ├── MicrotimePlugin.php
│ │ │ ├── MysqliPlugin.php
│ │ │ ├── Parser.php
│ │ │ ├── Plugin.php
│ │ │ ├── ProxyPlugin.php
│ │ │ ├── SerializePlugin.php
│ │ │ ├── SimpleXMLElementPlugin.php
│ │ │ ├── SplFileInfoPlugin.php
│ │ │ ├── SplObjectStoragePlugin.php
│ │ │ ├── StreamPlugin.php
│ │ │ ├── TablePlugin.php
│ │ │ ├── ThrowablePlugin.php
│ │ │ ├── TimestampPlugin.php
│ │ │ ├── ToStringPlugin.php
│ │ │ ├── TracePlugin.php
│ │ │ └── XmlPlugin.php
│ │ ├── Renderer
│ │ │ ├── CliRenderer.php
│ │ │ ├── PlainRenderer.php
│ │ │ ├── Renderer.php
│ │ │ ├── Rich
│ │ │ │ ├── BinaryPlugin.php
│ │ │ │ ├── BlacklistPlugin.php
│ │ │ │ ├── CallablePlugin.php
│ │ │ │ ├── ClosurePlugin.php
│ │ │ │ ├── ColorPlugin.php
│ │ │ │ ├── DepthLimitPlugin.php
│ │ │ │ ├── DocstringPlugin.php
│ │ │ │ ├── MicrotimePlugin.php
│ │ │ │ ├── ObjectPluginInterface.php
│ │ │ │ ├── Plugin.php
│ │ │ │ ├── PluginInterface.php
│ │ │ │ ├── RecursionPlugin.php
│ │ │ │ ├── SimpleXMLElementPlugin.php
│ │ │ │ ├── SourcePlugin.php
│ │ │ │ ├── TabPluginInterface.php
│ │ │ │ ├── TablePlugin.php
│ │ │ │ ├── TimestampPlugin.php
│ │ │ │ └── TraceFramePlugin.php
│ │ │ ├── RichRenderer.php
│ │ │ ├── Text
│ │ │ │ ├── BlacklistPlugin.php
│ │ │ │ ├── DepthLimitPlugin.php
│ │ │ │ ├── MicrotimePlugin.php
│ │ │ │ ├── Plugin.php
│ │ │ │ ├── RecursionPlugin.php
│ │ │ │ └── TracePlugin.php
│ │ │ └── TextRenderer.php
│ │ ├── Utils.php
│ │ ├── init.php
│ │ ├── init_helpers.php
│ │ └── resources
│ │ │ └── compiled
│ │ │ ├── aante-light.css
│ │ │ ├── microtime.js
│ │ │ ├── original.css
│ │ │ ├── plain.css
│ │ │ ├── plain.js
│ │ │ ├── rich.js
│ │ │ ├── shared.js
│ │ │ ├── solarized-dark.css
│ │ │ └── solarized.css
│ └── PSR
│ │ └── Log
│ │ ├── AbstractLogger.php
│ │ ├── InvalidArgumentException.php
│ │ ├── LogLevel.php
│ │ ├── LoggerAwareInterface.php
│ │ ├── LoggerAwareTrait.php
│ │ ├── LoggerInterface.php
│ │ ├── LoggerTrait.php
│ │ └── NullLogger.php
├── Throttle
│ ├── Throttler.php
│ └── ThrottlerInterface.php
├── Typography
│ └── Typography.php
├── Validation
│ ├── CreditCardRules.php
│ ├── Exceptions
│ │ └── ValidationException.php
│ ├── FileRules.php
│ ├── FormatRules.php
│ ├── Rules.php
│ ├── Validation.php
│ ├── ValidationInterface.php
│ └── Views
│ │ ├── list.php
│ │ └── single.php
├── View
│ ├── Cell.php
│ ├── Exceptions
│ │ └── ViewException.php
│ ├── Filters.php
│ ├── Parser.php
│ ├── Plugins.php
│ ├── RendererInterface.php
│ ├── Table.php
│ └── View.php
├── bootstrap.php
└── index.html
└── writable
├── .htaccess
├── cache
└── index.html
├── logs
└── index.html
├── session
└── index.html
└── uploads
└── index.html
/app/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | Require all denied
3 |
4 |
5 | Deny from all
6 |
7 |
--------------------------------------------------------------------------------
/app/Common.php:
--------------------------------------------------------------------------------
1 | 0)
26 | {
27 | \ob_end_flush();
28 | }
29 |
30 | \ob_start(function ($buffer) {
31 | return $buffer;
32 | });
33 | }
34 |
35 | /*
36 | * --------------------------------------------------------------------
37 | * Debug Toolbar Listeners.
38 | * --------------------------------------------------------------------
39 | * If you delete, they will no longer be collected.
40 | */
41 | if (ENVIRONMENT !== 'production')
42 | {
43 | Events::on('DBQuery', 'CodeIgniter\Debug\Toolbar\Collectors\Database::collect');
44 | Services::toolbar()->respond();
45 | }
46 | });
47 |
--------------------------------------------------------------------------------
/app/Config/Exceptions.php:
--------------------------------------------------------------------------------
1 | \CodeIgniter\Filters\CSRF::class,
11 | 'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
12 | 'honeypot' => \CodeIgniter\Filters\Honeypot::class,
13 | 'cors' => \App\Filters\Cors::class,
14 | ];
15 |
16 | // Always applied before every request
17 | public $globals = [
18 | 'before' => [
19 | 'cors'
20 | //'honeypot'
21 | // 'csrf',
22 | ],
23 | 'after' => [
24 | 'toolbar',
25 | //'honeypot'
26 | ],
27 | ];
28 |
29 | // Works on all of a particular HTTP method
30 | // (GET, POST, etc) as BEFORE filters only
31 | // like: 'post' => ['CSRF', 'throttle'],
32 | public $methods = [];
33 |
34 | // List filter aliases and any before/after uri patterns
35 | // that they should run on, like:
36 | // 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']],
37 | public $filters = [];
38 | }
39 |
--------------------------------------------------------------------------------
/app/Config/ForeignCharacters.php:
--------------------------------------------------------------------------------
1 | \CodeIgniter\Format\JSONFormatter::class,
39 | 'application/xml' => \CodeIgniter\Format\XMLFormatter::class,
40 | 'text/xml' => \CodeIgniter\Format\XMLFormatter::class,
41 | ];
42 |
43 | //--------------------------------------------------------------------
44 |
45 | /**
46 | * A Factory method to return the appropriate formatter for the given mime type.
47 | *
48 | * @param string $mime
49 | *
50 | * @return \CodeIgniter\Format\FormatterInterface
51 | */
52 | public function getFormatter(string $mime)
53 | {
54 | if (! array_key_exists($mime, $this->formatters))
55 | {
56 | throw new \InvalidArgumentException('No Formatter defined for mime type: ' . $mime);
57 | }
58 |
59 | $class = $this->formatters[$mime];
60 |
61 | if (! class_exists($class))
62 | {
63 | throw new \BadMethodCallException($class . ' is not a valid Formatter.');
64 | }
65 |
66 | return new $class();
67 | }
68 |
69 | //--------------------------------------------------------------------
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/app/Config/Honeypot.php:
--------------------------------------------------------------------------------
1 | {label}';
34 | }
35 |
--------------------------------------------------------------------------------
/app/Config/Images.php:
--------------------------------------------------------------------------------
1 | \CodeIgniter\Images\Handlers\GDHandler::class,
29 | 'imagick' => \CodeIgniter\Images\Handlers\ImageMagickHandler::class,
30 | ];
31 | }
32 |
--------------------------------------------------------------------------------
/app/Config/Kint.php:
--------------------------------------------------------------------------------
1 | php spark migrate:create
41 | |
42 | | Typical formats:
43 | | YmdHis_
44 | | Y-m-d-His_
45 | | Y_m_d_His_
46 | |
47 | */
48 | public $timestampFormat = 'Y-m-d-His_';
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/app/Config/Modules.php:
--------------------------------------------------------------------------------
1 | enabled)
59 | {
60 | return false;
61 | }
62 |
63 | $alias = strtolower($alias);
64 |
65 | return in_array($alias, $this->activeExplorers);
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/app/Config/Pager.php:
--------------------------------------------------------------------------------
1 | 'CodeIgniter\Pager\Views\default_full',
22 | 'default_simple' => 'CodeIgniter\Pager\Views\default_simple',
23 | 'default_head' => 'CodeIgniter\Pager\Views\default_head',
24 | ];
25 |
26 | /*
27 | |--------------------------------------------------------------------------
28 | | Items Per Page
29 | |--------------------------------------------------------------------------
30 | |
31 | | The default number of results shown in a single page.
32 | |
33 | */
34 | public $perPage = 20;
35 | }
36 |
--------------------------------------------------------------------------------
/app/Config/Routes.php:
--------------------------------------------------------------------------------
1 | setDefaultNamespace('App\Controllers');
19 | $routes->setDefaultController('Home');
20 | $routes->setDefaultMethod('index');
21 | $routes->setTranslateURIDashes(false);
22 | $routes->set404Override();
23 | $routes->setAutoRoute(true);
24 |
25 | /**
26 | * --------------------------------------------------------------------
27 | * Route Definitions
28 | * --------------------------------------------------------------------
29 | */
30 |
31 | // We get a performance increase by specifying the default
32 | // route since we don't have to scan directories.
33 | //$routes->get('/', 'Home::index');
34 | $routes->resource('products');
35 | /**
36 | * --------------------------------------------------------------------
37 | * Additional Routing
38 | * --------------------------------------------------------------------
39 | *
40 | * There will often be times that you need additional routing and you
41 | * need to it be able to override any defaults in this file. Environment
42 | * based routes is one such time. require() additional route files here
43 | * to make that happen.
44 | *
45 | * You will have access to the $routes object within that file without
46 | * needing to reload it.
47 | */
48 | if (file_exists(APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php'))
49 | {
50 | require APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php';
51 | }
52 |
--------------------------------------------------------------------------------
/app/Config/Services.php:
--------------------------------------------------------------------------------
1 | 'CodeIgniter\Validation\Views\list',
30 | 'single' => 'CodeIgniter\Validation\Views\single',
31 | ];
32 |
33 | //--------------------------------------------------------------------
34 | // Rules
35 | //--------------------------------------------------------------------
36 | }
37 |
--------------------------------------------------------------------------------
/app/Config/View.php:
--------------------------------------------------------------------------------
1 | session = \Config\Services::session();
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/app/Controllers/Home.php:
--------------------------------------------------------------------------------
1 |
4 | Message: = $message, "\n"; ?>
5 | Filename: = $exception->getFile(), "\n"; ?>
6 | Line Number: = $exception->getLine(); ?>
7 |
8 |
9 |
10 | Backtrace:
11 | getTrace() as $error): ?>
12 |
13 | = trim('-' . $error['line'] . ' - ' . $error['file'] . '::' . $error['function']) . "\n" ?>
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/Views/errors/cli/production.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 404 Page Not Found
6 |
7 |
70 |
71 |
72 |
73 |
404 - File Not Found
74 |
75 |
76 |
77 | = esc($message) ?>
78 |
79 | Sorry! Cannot seem to find the page you were looking for.
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/app/Views/errors/html/production.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Whoops!
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 |
Whoops!
18 |
19 |
We seem to have hit a snag. Please try again later...
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "codeigniter4/codeigniter4",
3 | "type": "project",
4 | "description": "The CodeIgniter framework v4",
5 | "homepage": "https://codeigniter.com",
6 | "license": "MIT",
7 | "require": {
8 | "php": ">=7.2",
9 | "ext-curl": "*",
10 | "ext-intl": "*",
11 | "ext-json": "*",
12 | "ext-mbstring": "*",
13 | "kint-php/kint": "^3.3",
14 | "psr/log": "^1.1",
15 | "laminas/laminas-escaper": "^2.6"
16 | },
17 | "require-dev": {
18 | "codeigniter4/codeigniter4-standard": "^1.0",
19 | "mikey179/vfsstream": "1.6.*",
20 | "phpunit/phpunit": "^8.5",
21 | "squizlabs/php_codesniffer": "^3.3"
22 | },
23 | "autoload": {
24 | "psr-4": {
25 | "CodeIgniter\\": "system/"
26 | }
27 | },
28 | "scripts": {
29 | "post-update-cmd": [
30 | "@composer dump-autoload",
31 | "CodeIgniter\\ComposerScripts::postUpdate",
32 | "bash admin/setup.sh"
33 | ]
34 | },
35 | "support": {
36 | "forum": "http://forum.codeigniter.com/",
37 | "source": "https://github.com/codeigniter4/CodeIgniter4",
38 | "slack": "https://codeigniterchat.slack.com"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014-2019 British Columbia Institute of Technology
4 | Copyright (c) 2019-2020 CodeIgniter Foundation
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/phpunit.xml.dist:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 | ./tests
15 |
16 |
17 |
18 |
19 |
20 | ./app
21 |
22 | ./app/Views
23 | ./app/Config/Routes.php
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/public/.htaccess:
--------------------------------------------------------------------------------
1 | # Disable directory browsing
2 | Options All -Indexes
3 |
4 | # ----------------------------------------------------------------------
5 | # Rewrite engine
6 | # ----------------------------------------------------------------------
7 |
8 | # Turning on the rewrite engine is necessary for the following rules and features.
9 | # FollowSymLinks must be enabled for this to work.
10 |
11 | Options +FollowSymlinks
12 | RewriteEngine On
13 |
14 | # If you installed CodeIgniter in a subfolder, you will need to
15 | # change the following line to match the subfolder you need.
16 | # http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
17 | # RewriteBase /
18 |
19 | # Redirect Trailing Slashes...
20 | RewriteCond %{REQUEST_FILENAME} !-d
21 | RewriteRule ^(.*)/$ /$1 [L,R=301]
22 |
23 | # Rewrite "www.example.com -> example.com"
24 | RewriteCond %{HTTPS} !=on
25 | RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
26 | RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
27 |
28 | # Checks to see if the user is attempting to access a valid file,
29 | # such as an image or css document, if this isn't true it sends the
30 | # request to the front controller, index.php
31 | RewriteCond %{REQUEST_FILENAME} !-f
32 | RewriteCond %{REQUEST_FILENAME} !-d
33 | RewriteRule ^(.*)$ index.php/$1 [L]
34 |
35 | # Ensure Authorization header is passed along
36 | RewriteCond %{HTTP:Authorization} .
37 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
38 |
39 |
40 |
41 | # If we don't have mod_rewrite installed, all 404's
42 | # can be sent to index.php, and everything works as normal.
43 | ErrorDocument 404 index.php
44 |
45 |
46 | # Disable server signature start
47 | ServerSignature Off
48 | # Disable server signature end
49 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfikricom/RESTful-API-CodeIgniter-4/411d6f393de64e4201592f5a85dd53080c1b32a0/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 | systemDirectory, '/ ') . '/bootstrap.php';
37 |
38 | /*
39 | *---------------------------------------------------------------
40 | * LAUNCH THE APPLICATION
41 | *---------------------------------------------------------------
42 | * Now that everything is setup, it's time to actually fire
43 | * up the engines and make this app do its thang.
44 | */
45 | $app->run();
46 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/restful_db.sql:
--------------------------------------------------------------------------------
1 | -- phpMyAdmin SQL Dump
2 | -- version 4.9.0.1
3 | -- https://www.phpmyadmin.net/
4 | --
5 | -- Host: 127.0.0.1
6 | -- Generation Time: Jul 05, 2020 at 09:31 AM
7 | -- Server version: 10.3.16-MariaDB
8 | -- PHP Version: 7.3.7
9 |
10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
11 | SET AUTOCOMMIT = 0;
12 | START TRANSACTION;
13 | SET time_zone = "+00:00";
14 |
15 |
16 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
17 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
18 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
19 | /*!40101 SET NAMES utf8mb4 */;
20 |
21 | --
22 | -- Database: `restful_db`
23 | --
24 |
25 | -- --------------------------------------------------------
26 |
27 | --
28 | -- Table structure for table `product`
29 | --
30 |
31 | CREATE TABLE `product` (
32 | `product_id` int(11) NOT NULL,
33 | `product_name` varchar(100) DEFAULT NULL,
34 | `product_price` double DEFAULT NULL
35 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
36 |
37 | --
38 | -- Dumping data for table `product`
39 | --
40 |
41 | INSERT INTO `product` (`product_id`, `product_name`, `product_price`) VALUES
42 | (12, 'Product Updated', 2399),
43 | (14, 'Product 3', 4000),
44 | (15, 'Product 4', 6000),
45 | (16, 'Product 5', 7000),
46 | (17, 'Product New Added', 32000);
47 |
48 | --
49 | -- Indexes for dumped tables
50 | --
51 |
52 | --
53 | -- Indexes for table `product`
54 | --
55 | ALTER TABLE `product`
56 | ADD PRIMARY KEY (`product_id`);
57 |
58 | --
59 | -- AUTO_INCREMENT for dumped tables
60 | --
61 |
62 | --
63 | -- AUTO_INCREMENT for table `product`
64 | --
65 | ALTER TABLE `product`
66 | MODIFY `product_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=18;
67 | COMMIT;
68 |
69 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
70 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
71 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
72 |
--------------------------------------------------------------------------------
/spark:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | systemDirectory, '/ ') . '/bootstrap.php';
45 |
46 | // Grab our Console
47 | $console = new \CodeIgniter\CLI\Console($app);
48 |
49 | // We want errors to be shown when using it from the CLI.
50 | error_reporting(-1);
51 | ini_set('display_errors', 1);
52 |
53 | // Show basic information before we do anything else.
54 | $console->showHeader();
55 |
56 | // fire off the command in the main framework.
57 | $response = $console->run();
58 | if ($response->getStatusCode() >= 300)
59 | {
60 | exit($response->getStatusCode());
61 | }
62 |
--------------------------------------------------------------------------------
/system/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | Require all denied
3 |
4 |
5 | Deny from all
6 |
7 |
--------------------------------------------------------------------------------
/system/CLI/Exceptions/CLIException.php:
--------------------------------------------------------------------------------
1 | \Database\Migrations;
2 |
3 | use CodeIgniter\Database\Migration;
4 |
5 | class Migration_create_= $tableName ?>_table extends Migration
6 | {
7 |
8 | protected $DBGroup = '= $DBGroup ?>';
9 |
10 |
11 | public function up()
12 | {
13 | $this->forge->addField([
14 | 'id' => [
15 | 'type' => 'VARCHAR',
16 | 'constraint' => 128,
17 | 'null' => false
18 | ],
19 | 'ip_address' => [
20 | 'type' => 'VARCHAR',
21 | 'constraint' => 45,
22 | 'null' => false
23 | ],
24 | 'timestamp' => [
25 | 'type' => 'INT',
26 | 'constraint' => 10,
27 | 'unsigned' => true,
28 | 'null' => false,
29 | 'default' => 0
30 | ],
31 | 'data' => [
32 | 'type' => 'TEXT',
33 | 'null' => false,
34 | 'default' => ''
35 | ],
36 | ]);
37 |
38 | $this->forge->addKey(['id', 'ip_address'], true);
39 |
40 | $this->forge->addKey('id', true);
41 |
42 | $this->forge->addKey('timestamp');
43 | $this->forge->createTable('= $tableName ?>', true);
44 | }
45 |
46 | //--------------------------------------------------------------------
47 |
48 | public function down()
49 | {
50 | $this->forge->dropTable('= $tableName ?>', true);
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/system/Database/Exceptions/DataException.php:
--------------------------------------------------------------------------------
1 | CodeIgniter::CI_VERSION,
62 | 'phpVersion' => phpversion(),
63 | 'phpSAPI' => php_sapi_name(),
64 | 'environment' => ENVIRONMENT,
65 | 'baseURL' => $config->baseURL,
66 | 'timezone' => app_timezone(),
67 | 'locale' => Services::request()->getLocale(),
68 | 'cspEnabled' => $config->CSPEnabled,
69 | ];
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/system/Debug/Toolbar/Views/_config.tpl:
--------------------------------------------------------------------------------
1 |
2 | Read the CodeIgniter docs...
3 |
4 |
5 |
6 |
7 |
8 | CodeIgniter Version: |
9 | { ciVersion } |
10 |
11 |
12 | PHP Version: |
13 | { phpVersion } |
14 |
15 |
16 | PHP SAPI: |
17 | { phpSAPI } |
18 |
19 |
20 | Environment: |
21 | { environment } |
22 |
23 |
24 | Base URL: |
25 |
26 | { if $baseURL == '' }
27 |
28 | The $baseURL should always be set manually to prevent possible URL personification from external parties.
29 |
30 | { else }
31 | { baseURL }
32 | { endif }
33 | |
34 |
35 |
36 | TimeZone: |
37 | { timezone } |
38 |
39 |
40 | Locale: |
41 | { locale } |
42 |
43 |
44 | Content Security Policy Enabled: |
45 | { if $cspEnabled } Yes { else } No { endif } |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/system/Debug/Toolbar/Views/_database.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Time |
5 | Query String |
6 |
7 |
8 |
9 | {queries}
10 |
11 | {duration} |
12 | {! sql !} |
13 |
14 | {/queries}
15 |
16 |
17 |
--------------------------------------------------------------------------------
/system/Debug/Toolbar/Views/_events.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Time |
5 | Event Name |
6 | Times Called |
7 |
8 |
9 |
10 | {events}
11 |
12 | { duration } ms |
13 | {event} |
14 | {count} |
15 |
16 | {/events}
17 |
18 |
19 |
--------------------------------------------------------------------------------
/system/Debug/Toolbar/Views/_files.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {userFiles}
4 |
5 | {name} |
6 | {path} |
7 |
8 | {/userFiles}
9 | {coreFiles}
10 |
11 | {name} |
12 | {path} |
13 |
14 | {/coreFiles}
15 |
16 |
17 |
--------------------------------------------------------------------------------
/system/Debug/Toolbar/Views/_history.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Action |
5 | Datetime |
6 | Status |
7 | Method |
8 | URL |
9 | Content-Type |
10 | Is AJAX? |
11 |
12 |
13 |
14 | {files}
15 |
16 |
17 |
18 | |
19 | {datetime} |
20 | {status} |
21 | {method} |
22 | {url} |
23 | {contentType} |
24 | {isAJAX} |
25 |
26 | {/files}
27 |
28 |
29 |
--------------------------------------------------------------------------------
/system/Debug/Toolbar/Views/_logs.tpl:
--------------------------------------------------------------------------------
1 | { if $logs == [] }
2 | Nothing was logged. If you were expecting logged items, ensure that LoggerConfig file has the correct threshold set.
3 | { else }
4 |
5 |
6 |
7 | Severity |
8 | Message |
9 |
10 |
11 |
12 | {logs}
13 |
14 | {level} |
15 | {msg} |
16 |
17 | {/logs}
18 |
19 |
20 | { endif }
21 |
--------------------------------------------------------------------------------
/system/Debug/Toolbar/Views/_routes.tpl:
--------------------------------------------------------------------------------
1 | Matched Route
2 |
3 |
4 |
5 | {matchedRoute}
6 |
7 | Directory: |
8 | {directory} |
9 |
10 |
11 | Controller: |
12 | {controller} |
13 |
14 |
15 | Method: |
16 | {method} |
17 |
18 |
19 | Params: |
20 | {paramCount} / {truePCount} |
21 |
22 | {params}
23 |
24 | {name} |
25 | {value} |
26 |
27 | {/params}
28 | {/matchedRoute}
29 |
30 |
31 |
32 |
33 | Defined Routes
34 |
35 |
36 |
37 |
38 | Method |
39 | Route |
40 | Handler |
41 |
42 |
43 |
44 | {routes}
45 |
46 | {method} |
47 | {route} |
48 | {handler} |
49 |
50 | {/routes}
51 |
52 |
53 |
--------------------------------------------------------------------------------
/system/Encryption/EncrypterInterface.php:
--------------------------------------------------------------------------------
1 | 'Command "{0}" not found.',
19 | 'helpUsage' => 'Usage:',
20 | 'helpDescription' => 'Description:',
21 | 'helpOptions' => 'Options:',
22 | 'helpArguments' => 'Arguments:',
23 | 'invalidColor' => 'Invalid {0} color: {1}.',
24 | ];
25 |
--------------------------------------------------------------------------------
/system/Language/en/Cache.php:
--------------------------------------------------------------------------------
1 | 'Cache unable to write to {0}',
19 | 'invalidHandlers' => 'Cache config must have an array of $validHandlers.',
20 | 'noBackup' => 'Cache config must have a handler and backupHandler set.',
21 | 'handlerNotFound' => 'Cache config has an invalid handler or backup handler specified.',
22 | ];
23 |
--------------------------------------------------------------------------------
/system/Language/en/Cast.php:
--------------------------------------------------------------------------------
1 | 'Maximum stack depth exceeded',
18 | 'jsonErrorStateMismatch' => 'Underflow or the modes mismatch',
19 | 'jsonErrorCtrlChar' => 'Unexpected control character found',
20 | 'jsonErrorSyntax' => 'Syntax error, malformed JSON',
21 | 'jsonErrorUtf8' => 'Malformed UTF-8 characters, possibly incorrectly encoded',
22 | 'jsonErrorUnknown' => 'Unknown error',
23 | ];
24 |
--------------------------------------------------------------------------------
/system/Language/en/Core.php:
--------------------------------------------------------------------------------
1 | 'Invalid file: {0}',
19 | 'copyError' => 'An error was encountered while attempting to replace the file({0}). Please make sure your file directory is writable.',
20 | 'missingExtension' => '{0} extension is not loaded.',
21 | 'noHandlers' => '{0} must provide at least one Handler.',
22 | ];
23 |
--------------------------------------------------------------------------------
/system/Language/en/Database.php:
--------------------------------------------------------------------------------
1 | '{0} is not a valid Model Event callback.',
19 | 'invalidArgument' => 'You must provide a valid {0}.',
20 | 'invalidAllowedFields' => 'Allowed fields must be specified for model: {0}',
21 | 'emptyDataset' => 'There is no data to {0}.',
22 | 'failGetFieldData' => 'Failed to get field data from database.',
23 | 'failGetIndexData' => 'Failed to get index data from database.',
24 | 'failGetForeignKeyData' => 'Failed to get foreign key data from database.',
25 | 'parseStringFail' => 'Parsing key string failed.',
26 | 'featureUnavailable' => 'This feature is not available for the database you are using.',
27 | 'tableNotFound' => 'Table `{0}` was not found in the current database.',
28 | 'noPrimaryKey' => '`{0}` model class does not specify a Primary Key.',
29 | 'noDateFormat' => '`{0}` model class does not have a valid dateFormat.',
30 | 'fieldNotExists' => 'Field `{0}` not found.',
31 | 'forEmptyInputGiven' => 'Empty statement is given for the field `{0}`',
32 | 'forFindColumnHaveMultipleColumns' => 'Only single column allowed in Column name.',
33 | ];
34 |
--------------------------------------------------------------------------------
/system/Language/en/Email.php:
--------------------------------------------------------------------------------
1 | 'The email validation method must be passed an array.',
18 | 'invalidAddress' => 'Invalid email address: {0}',
19 | 'attachmentMissing' => 'Unable to locate the following email attachment: {0}',
20 | 'attachmentUnreadable' => 'Unable to open this attachment: {0}',
21 | 'noFrom' => 'Cannot send mail with no "From" header.',
22 | 'noRecipients' => 'You must include recipients: To, Cc, or Bcc',
23 | 'sendFailurePHPMail' => 'Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.',
24 | 'sendFailureSendmail' => 'Unable to send email using PHP Sendmail. Your server might not be configured to send mail using this method.',
25 | 'sendFailureSmtp' => 'Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.',
26 | 'sent' => 'Your message has been successfully sent using the following protocol: {0, string}',
27 | 'noSocket' => 'Unable to open a socket to Sendmail. Please check settings.',
28 | 'noHostname' => 'You did not specify a SMTP hostname.',
29 | 'SMTPError' => 'The following SMTP error was encountered: {0}',
30 | 'noSMTPAuth' => 'Error: You must assign a SMTP username and password.',
31 | 'failedSMTPLogin' => 'Failed to send AUTH LOGIN command. Error: {0}',
32 | 'SMTPAuthUsername' => 'Failed to authenticate username. Error: {0}',
33 | 'SMTPAuthPassword' => 'Failed to authenticate password. Error: {0}',
34 | 'SMTPDataFailure' => 'Unable to send data: {0}',
35 | 'exitStatus' => 'Exit status code: {0}',
36 | ];
37 |
--------------------------------------------------------------------------------
/system/Language/en/Encryption.php:
--------------------------------------------------------------------------------
1 | 'No driver requested; Miss Daisy will be so upset!',
18 | 'noHandlerAvailable' => 'Unable to find an available {0} encryption handler.',
19 | 'unKnownHandler' => '"{0}" cannot be configured.',
20 | 'starterKeyNeeded' => 'Encrypter needs a starter key.',
21 | 'authenticationFailed' => 'Decrypting: authentication failed.',
22 | 'encryptionFailed' => 'Encryption failed.',
23 | ];
24 |
--------------------------------------------------------------------------------
/system/Language/en/Entity.php:
--------------------------------------------------------------------------------
1 | 'Trying to access non existent property {0} of {1}',
19 | ];
20 |
--------------------------------------------------------------------------------
/system/Language/en/Files.php:
--------------------------------------------------------------------------------
1 | 'File not found: {0}',
18 | 'cannotMove' => 'Could not move file {0} to {1} ({2})',
19 | ];
20 |
--------------------------------------------------------------------------------
/system/Language/en/Filters.php:
--------------------------------------------------------------------------------
1 | '{0} filter must have a matching alias defined.',
19 | 'incorrectInterface' => '{0} must implement CodeIgniter\Filters\FilterInterface.',
20 | ];
21 |
--------------------------------------------------------------------------------
/system/Language/en/Format.php:
--------------------------------------------------------------------------------
1 | 'Failed to parse json string, error: "{0}".',
19 | 'missingExtension' => 'The SimpleXML extension is required to format XML.',
20 | ];
21 |
--------------------------------------------------------------------------------
/system/Language/en/Images.php:
--------------------------------------------------------------------------------
1 | 'You must specify a source image in your preferences.',
19 | 'gdRequired' => 'The GD image library is required to use this feature.',
20 | 'gdRequiredForProps' => 'Your server must support the GD image library in order to determine the image properties.',
21 | 'gifNotSupported' => 'GIF images are often not supported due to licensing restrictions. You may have to use JPG or PNG images instead.',
22 | 'jpgNotSupported' => 'JPG images are not supported.',
23 | 'pngNotSupported' => 'PNG images are not supported.',
24 | 'fileNotSupported' => 'The supplied file is not a supported image type.',
25 | 'unsupportedImageCreate' => 'Your server does not support the GD function required to process this type of image.',
26 | 'jpgOrPngRequired' => 'The image resize protocol specified in your preferences only works with JPEG or PNG image types.',
27 | 'rotateUnsupported' => 'Image rotation does not appear to be supported by your server.',
28 | 'libPathInvalid' => 'The path to your image library is not correct. Please set the correct path in your image preferences. {0, string)',
29 | 'imageProcessFailed' => 'Image processing failed. Please verify that your server supports the chosen protocol and that the path to your image library is correct.',
30 | 'rotationAngleRequired' => 'An angle of rotation is required to rotate the image.',
31 | 'invalidPath' => 'The path to the image is not correct.',
32 | 'copyFailed' => 'The image copy routine failed.',
33 | 'missingFont' => 'Unable to find a font to use.',
34 | 'saveFailed' => 'Unable to save the image. Please make sure the image and file directory are writable.',
35 | 'invalidDirection' => 'Flip direction can be only `vertical` or `horizontal`. Given: {0}',
36 | 'exifNotSupported' => 'Reading EXIF data is not supported by this PHP installation.',
37 | ];
38 |
--------------------------------------------------------------------------------
/system/Language/en/Language.php:
--------------------------------------------------------------------------------
1 | 'Get line must be a string or array of strings.',
19 | ];
20 |
--------------------------------------------------------------------------------
/system/Language/en/Log.php:
--------------------------------------------------------------------------------
1 | '{0} is an invalid log level.',
19 | ];
20 |
--------------------------------------------------------------------------------
/system/Language/en/Number.php:
--------------------------------------------------------------------------------
1 | 'TB',
19 | 'gigabyteAbbr' => 'GB',
20 | 'megabyteAbbr' => 'MB',
21 | 'kilobyteAbbr' => 'KB',
22 | 'bytes' => 'Bytes',
23 |
24 | // don't forget the space in front of these!
25 | 'thousand' => ' thousand',
26 | 'million' => ' million',
27 | 'billion' => ' billion',
28 | 'trillion' => ' trillion',
29 | 'quadrillion' => ' quadrillion',
30 | ];
31 |
--------------------------------------------------------------------------------
/system/Language/en/Pager.php:
--------------------------------------------------------------------------------
1 | 'Page navigation',
19 | 'first' => 'First',
20 | 'previous' => 'Previous',
21 | 'next' => 'Next',
22 | 'last' => 'Last',
23 | 'older' => 'Older',
24 | 'newer' => 'Newer',
25 | 'invalidTemplate' => '{0} is not a valid Pager template.',
26 | 'invalidPaginationGroup' => '{0} is not a valid Pagination group.',
27 | ];
28 |
--------------------------------------------------------------------------------
/system/Language/en/RESTful.php:
--------------------------------------------------------------------------------
1 | '"{0}" action not implemented.',
18 | ];
19 |
--------------------------------------------------------------------------------
/system/Language/en/Redirect.php:
--------------------------------------------------------------------------------
1 | 'Unable to redirect to "{0}". Error status code "{1}"',
19 | ];
20 |
--------------------------------------------------------------------------------
/system/Language/en/Router.php:
--------------------------------------------------------------------------------
1 | 'A parameter does not match the expected type.',
19 | 'missingDefaultRoute' => 'Unable to determine what should be displayed. A default route has not been specified in the routing file.',
20 | ];
21 |
--------------------------------------------------------------------------------
/system/Language/en/Session.php:
--------------------------------------------------------------------------------
1 | '`sessionSavePath` must have the table name for the Database Session Handler to work.',
19 | 'invalidSavePath' => 'Session: Configured save path "{0}" is not a directory, does not exist or cannot be created.',
20 | 'writeProtectedSavePath' => 'Session: Configured save path "{0}" is not writable by the PHP process.',
21 | 'emptySavePath' => 'Session: No save path configured.',
22 | 'invalidSavePathFormat' => 'Session: Invalid Redis save path format: {0}',
23 | ];
24 |
--------------------------------------------------------------------------------
/system/Language/en/Time.php:
--------------------------------------------------------------------------------
1 | 'Months must be between 1 and 12. Given: {0}',
19 | 'invalidDay' => 'Days must be between 1 and 31. Given: {0}',
20 | 'invalidOverDay' => 'Days must be between 1 and {0}. Given: {1}',
21 | 'invalidHours' => 'Hours must be between 0 and 23. Given: {0}',
22 | 'invalidMinutes' => 'Minutes must be between 0 and 59. Given: {0}',
23 | 'invalidSeconds' => 'Seconds must be between 0 and 59. Given: {0}',
24 | 'years' => '{0, plural, =1{# year} other{# years}}',
25 | 'months' => '{0, plural, =1{# month} other{# months}}',
26 | 'weeks' => '{0, plural, =1{# week} other{# weeks}}',
27 | 'days' => '{0, plural, =1{# day} other{# days}}',
28 | 'hours' => '{0, plural, =1{# hour} other{# hours}}',
29 | 'minutes' => '{0, plural, =1{# minute} other{# minutes}}',
30 | 'seconds' => '{0, plural, =1{# second} other{# seconds}}',
31 | 'ago' => '{0} ago',
32 | 'inFuture' => 'in {0}',
33 | 'yesterday' => 'Yesterday',
34 | 'tomorrow' => 'Tomorrow',
35 | 'now' => 'Just now',
36 | ];
37 |
--------------------------------------------------------------------------------
/system/Language/en/View.php:
--------------------------------------------------------------------------------
1 | '{class}::{method} is not a valid method.',
18 | 'missingCellParameters' => '{class}::{method} has no params.',
19 | 'invalidCellParameter' => '{0} is not a valid param name.',
20 | 'noCellClass' => 'No view cell class provided.',
21 | 'invalidCellClass' => 'Unable to locate view cell class: {0}.',
22 | 'tagSyntaxError' => 'You have a syntax error in your Parser tags: {0}',
23 | ];
24 |
--------------------------------------------------------------------------------
/system/Log/Exceptions/LogException.php:
--------------------------------------------------------------------------------
1 | setSurroundCount(2);
8 | ?>
9 |
10 |
47 |
--------------------------------------------------------------------------------
/system/Pager/Views/default_head.php:
--------------------------------------------------------------------------------
1 | setSurroundCount(0);
7 |
8 | if ($pager->hasPrevious())
9 | {
10 | echo '' . PHP_EOL;
11 | }
12 |
13 | echo '' . PHP_EOL;
14 |
15 | if ($pager->hasNext())
16 | {
17 | echo '' . PHP_EOL;
18 | }
19 |
--------------------------------------------------------------------------------
/system/Pager/Views/default_simple.php:
--------------------------------------------------------------------------------
1 | setSurroundCount(0);
7 | ?>
8 |
22 |
--------------------------------------------------------------------------------
/system/Router/Exceptions/RedirectException.php:
--------------------------------------------------------------------------------
1 | output = $output;
23 |
24 | return $this;
25 | }
26 |
27 | //--------------------------------------------------------------------
28 |
29 | protected function sendRequest(array $curl_options = []): string
30 | {
31 | // Save so we can access later.
32 | $this->curl_options = $curl_options;
33 |
34 | return $this->output;
35 | }
36 |
37 | //--------------------------------------------------------------------
38 | // for testing purposes only
39 | public function getBaseURI()
40 | {
41 | return $this->baseURI;
42 | }
43 |
44 | // for testing purposes only
45 | public function getDelay()
46 | {
47 | return $this->delay;
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockCodeIgniter.php:
--------------------------------------------------------------------------------
1 | clear();
19 | }
20 |
21 | $this->archive = get_object_vars($this);
22 | return true;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockEvents.php:
--------------------------------------------------------------------------------
1 | handles = $config['handles'] ?? [];
22 | $this->destination = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockIncomingRequest.php:
--------------------------------------------------------------------------------
1 | language[$locale ?? $this->locale][$file] = $data;
32 |
33 | return $this;
34 | }
35 |
36 | //--------------------------------------------------------------------
37 |
38 | /**
39 | * Provides an override that allows us to set custom
40 | * data to be returned easily during testing.
41 | *
42 | * @param string $path
43 | *
44 | * @return array|mixed
45 | */
46 | protected function requireFile(string $path): array
47 | {
48 | return $this->data ?? [];
49 | }
50 |
51 | //--------------------------------------------------------------------
52 |
53 | /**
54 | * Arbitrarily turnoff internationalization support for testing
55 | */
56 | public function disableIntlSupport()
57 | {
58 | $this->intlSupport = false;
59 | }
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockQuery.php:
--------------------------------------------------------------------------------
1 | model;
11 | }
12 |
13 | public function getModelName()
14 | {
15 | return $this->modelName;
16 | }
17 |
18 | public function getFormat()
19 | {
20 | return $this->format;
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockResourcePresenter.php:
--------------------------------------------------------------------------------
1 | model;
11 | }
12 |
13 | public function getModelName()
14 | {
15 | return $this->modelName;
16 | }
17 |
18 | public function getFormat()
19 | {
20 | return $this->format;
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockResponse.php:
--------------------------------------------------------------------------------
1 | pretend;
22 | }
23 |
24 | // artificial error for testing
25 | public function misbehave()
26 | {
27 | $this->statusCode = 0;
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockResult.php:
--------------------------------------------------------------------------------
1 | CSRFHash;
11 |
12 | return $this;
13 | }
14 |
15 | //--------------------------------------------------------------------
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockServices.php:
--------------------------------------------------------------------------------
1 | TESTPATH . '_support/',
10 | ];
11 | public $classmap = [];
12 |
13 | //--------------------------------------------------------------------
14 |
15 | public function __construct()
16 | {
17 | // Don't call the parent since we don't want the default mappings.
18 | // parent::__construct();
19 | }
20 |
21 | //--------------------------------------------------------------------
22 | public static function locator(bool $getShared = true)
23 | {
24 | return new \CodeIgniter\Autoloader\FileLocator(static::autoloader());
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockSession.php:
--------------------------------------------------------------------------------
1 | driver, true);
31 | }
32 |
33 | //--------------------------------------------------------------------
34 |
35 | /**
36 | * Starts the session.
37 | * Extracted for testing reasons.
38 | */
39 | protected function startSession()
40 | {
41 | // session_start();
42 | }
43 |
44 | //--------------------------------------------------------------------
45 |
46 | /**
47 | * Takes care of setting the cookie on the client side.
48 | * Extracted for testing reasons.
49 | */
50 | protected function setCookie()
51 | {
52 | $this->cookies[] = [
53 | $this->sessionCookieName,
54 | session_id(),
55 | (empty($this->sessionExpiration) ? 0 : time() + $this->sessionExpiration),
56 | $this->cookiePath,
57 | $this->cookieDomain,
58 | $this->cookieSecure,
59 | true,
60 | ];
61 | }
62 |
63 | //--------------------------------------------------------------------
64 |
65 | public function regenerate(bool $destroy = false)
66 | {
67 | $this->didRegenerate = true;
68 | $_SESSION['__ci_last_regenerate'] = time();
69 | }
70 |
71 | //--------------------------------------------------------------------
72 | }
73 |
--------------------------------------------------------------------------------
/system/Test/Mock/MockTable.php:
--------------------------------------------------------------------------------
1 | assertLogged() methods.
15 | *
16 | * @param string $level
17 | * @param string $message
18 | * @param array $context
19 | *
20 | * @return boolean
21 | */
22 | public function log($level, $message, array $context = []): bool
23 | {
24 | // While this requires duplicate work, we want to ensure
25 | // we have the final message to test against.
26 | $log_message = $this->interpolate($message, $context);
27 |
28 | // Determine the file and line by finding the first
29 | // backtrace that is not part of our logging system.
30 | $trace = debug_backtrace();
31 | $file = null;
32 |
33 | foreach ($trace as $row)
34 | {
35 | if (! in_array($row['function'], ['log', 'log_message']))
36 | {
37 | $file = basename($row['file'] ?? '');
38 | break;
39 | }
40 | }
41 |
42 | self::$op_logs[] = [
43 | 'level' => $level,
44 | 'message' => $log_message,
45 | 'file' => $file,
46 | ];
47 |
48 | // Let the parent do it's thing.
49 | return parent::log($level, $message, $context);
50 | }
51 |
52 | //--------------------------------------------------------------------
53 |
54 | /**
55 | * Used by CIUnitTestCase class to provide ->assertLogged() methods.
56 | *
57 | * @param string $level
58 | * @param string $message
59 | *
60 | * @return boolean
61 | */
62 | public static function didLog(string $level, $message)
63 | {
64 | foreach (self::$op_logs as $log)
65 | {
66 | if (strtolower($log['level']) === strtolower($level) && $message === $log['message'])
67 | {
68 | return true;
69 | }
70 | }
71 |
72 | return false;
73 | }
74 |
75 | //--------------------------------------------------------------------
76 | // Expose cleanFileNames()
77 | public function cleanup($file)
78 | {
79 | return $this->cleanFileNames($file);
80 | }
81 |
82 | }
83 |
--------------------------------------------------------------------------------
/system/ThirdParty/Escaper/Exception/ExceptionInterface.php:
--------------------------------------------------------------------------------
1 | access_path) {
38 | return parent::getAccessPath().'('.$this->getParams().')';
39 | }
40 | }
41 |
42 | public function getSize()
43 | {
44 | }
45 |
46 | public function getParams()
47 | {
48 | if (null !== $this->paramcache) {
49 | return $this->paramcache;
50 | }
51 |
52 | $out = array();
53 |
54 | foreach ($this->parameters as $p) {
55 | $type = $p->getType();
56 |
57 | $ref = $p->reference ? '&' : '';
58 |
59 | if ($type) {
60 | $out[] = $type.' '.$ref.$p->getName();
61 | } else {
62 | $out[] = $ref.$p->getName();
63 | }
64 | }
65 |
66 | return $this->paramcache = \implode(', ', $out);
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Object/DateTimeObject.php:
--------------------------------------------------------------------------------
1 | dt = clone $dt;
41 | }
42 |
43 | public function getValueShort()
44 | {
45 | $stamp = $this->dt->format('Y-m-d H:i:s');
46 | if ((int) ($micro = $this->dt->format('u'))) {
47 | $stamp .= '.'.$micro;
48 | }
49 | $stamp .= $this->dt->format('P T');
50 |
51 | return $stamp;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Object/Representation/Representation.php:
--------------------------------------------------------------------------------
1 | label = $label;
40 |
41 | if (null === $name) {
42 | $name = $label;
43 | }
44 |
45 | $this->setName($name);
46 | }
47 |
48 | public function getLabel()
49 | {
50 | if (\is_array($this->contents) && \count($this->contents) > 1) {
51 | return $this->label.' ('.\count($this->contents).')';
52 | }
53 |
54 | return $this->label;
55 | }
56 |
57 | public function getName()
58 | {
59 | return $this->name;
60 | }
61 |
62 | public function setName($name)
63 | {
64 | $this->name = \preg_replace('/[^a-z0-9]+/', '_', \strtolower($name));
65 | }
66 |
67 | public function labelIsImplicit()
68 | {
69 | return $this->implicit_label;
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Object/ResourceObject.php:
--------------------------------------------------------------------------------
1 | resource_type) {
35 | return $this->resource_type.' resource';
36 | }
37 |
38 | return 'resource';
39 | }
40 |
41 | public function transplant(BasicObject $old)
42 | {
43 | parent::transplant($old);
44 |
45 | if ($old instanceof self) {
46 | $this->resource_type = $old->resource_type;
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Object/StreamObject.php:
--------------------------------------------------------------------------------
1 | stream_meta = $meta;
38 | }
39 |
40 | public function getValueShort()
41 | {
42 | if (empty($this->stream_meta['uri'])) {
43 | return;
44 | }
45 |
46 | $uri = $this->stream_meta['uri'];
47 |
48 | if (\stream_is_local($uri)) {
49 | return Kint::shortenPath($uri);
50 | }
51 |
52 | return $uri;
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Object/ThrowableObject.php:
--------------------------------------------------------------------------------
1 | message = $throw->getMessage();
46 | }
47 |
48 | public function getValueShort()
49 | {
50 | if (\strlen($this->message)) {
51 | return '"'.$this->message.'"';
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Object/TraceObject.php:
--------------------------------------------------------------------------------
1 | size) {
40 | return 'empty';
41 | }
42 |
43 | return parent::getSize();
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/ArrayObjectPlugin.php:
--------------------------------------------------------------------------------
1 | getFlags();
50 |
51 | if (ArrayObject::STD_PROP_LIST === $flags) {
52 | return;
53 | }
54 |
55 | $var->setFlags(ArrayObject::STD_PROP_LIST);
56 |
57 | $o = $this->parser->parse($var, $o);
58 |
59 | $var->setFlags($flags);
60 |
61 | $this->parser->haltParse();
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/BinaryPlugin.php:
--------------------------------------------------------------------------------
1 | encoding, array('ASCII', 'UTF-8'), true)) {
46 | $o->value->hints[] = 'binary';
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/ColorPlugin.php:
--------------------------------------------------------------------------------
1 | 32) {
46 | return;
47 | }
48 |
49 | $trimmed = \strtolower(\trim($var));
50 |
51 | if (!isset(ColorRepresentation::$color_map[$trimmed]) && !\preg_match('/^(?:(?:rgb|hsl)[^\\)]{6,}\\)|#[0-9a-fA-F]{3,8})$/', $trimmed)) {
52 | return;
53 | }
54 |
55 | $rep = new ColorRepresentation($var);
56 |
57 | if ($rep->variant) {
58 | $o->removeRepresentation($o->value);
59 | $o->addRepresentation($rep, 0);
60 | $o->hints[] = 'color';
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/DateTimePlugin.php:
--------------------------------------------------------------------------------
1 | transplant($o);
52 |
53 | $o = $object;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/FsPathPlugin.php:
--------------------------------------------------------------------------------
1 | 2048) {
49 | return;
50 | }
51 |
52 | if (!\preg_match('/[\\/\\'.DIRECTORY_SEPARATOR.']/', $var)) {
53 | return;
54 | }
55 |
56 | if (\preg_match('/[?<>"*|]/', $var)) {
57 | return;
58 | }
59 |
60 | if (!@\file_exists($var)) {
61 | return;
62 | }
63 |
64 | if (\in_array($var, self::$blacklist, true)) {
65 | return;
66 | }
67 |
68 | $r = new SplFileInfoRepresentation(new SplFileInfo($var));
69 | $r->hints[] = 'fspath';
70 | $o->addRepresentation($r, 0);
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/JsonPlugin.php:
--------------------------------------------------------------------------------
1 | depth = $o->depth;
59 |
60 | if ($o->access_path) {
61 | $base_obj->access_path = 'json_decode('.$o->access_path.', true)';
62 | }
63 |
64 | $r = new Representation('Json');
65 | $r->contents = $this->parser->parse($json, $base_obj);
66 |
67 | if (!\in_array('depth_limit', $r->contents->hints, true)) {
68 | $r->contents = $r->contents->value->contents;
69 | }
70 |
71 | $o->addRepresentation($r, 0);
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/Plugin.php:
--------------------------------------------------------------------------------
1 | parser = $p;
37 | }
38 |
39 | /**
40 | * An array of types (As returned by gettype) for all data this plugin can operate on.
41 | *
42 | * @return array List of types
43 | */
44 | public function getTypes()
45 | {
46 | return array();
47 | }
48 |
49 | public function getTriggers()
50 | {
51 | return Parser::TRIGGER_NONE;
52 | }
53 |
54 | abstract public function parse(&$variable, BasicObject &$o, $trigger);
55 | }
56 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/ProxyPlugin.php:
--------------------------------------------------------------------------------
1 | types = $types;
48 | $this->triggers = $triggers;
49 | $this->callback = $callback;
50 | }
51 |
52 | public function getTypes()
53 | {
54 | return $this->types;
55 | }
56 |
57 | public function getTriggers()
58 | {
59 | return $this->triggers;
60 | }
61 |
62 | public function parse(&$var, BasicObject &$o, $trigger)
63 | {
64 | return \call_user_func_array($this->callback, array(&$var, &$o, $trigger, $this->parser));
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/SplFileInfoPlugin.php:
--------------------------------------------------------------------------------
1 | addRepresentation($r, 0);
53 | $o->size = $r->getSize();
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/SplObjectStoragePlugin.php:
--------------------------------------------------------------------------------
1 | getRepresentation('iterator'))) {
46 | return;
47 | }
48 |
49 | $r = $o->getRepresentation('iterator');
50 | if ($r) {
51 | $o->size = !\is_array($r->contents) ? null : \count($r->contents);
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/ThrowablePlugin.php:
--------------------------------------------------------------------------------
1 | transplant($o);
54 | $r = new SourceRepresentation($var->getFile(), $var->getLine());
55 | $r->showfilename = true;
56 | $throw->addRepresentation($r, 0);
57 |
58 | $o = $throw;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Parser/ToStringPlugin.php:
--------------------------------------------------------------------------------
1 | hasMethod('__toString')) {
53 | return;
54 | }
55 |
56 | foreach (self::$blacklist as $class) {
57 | if ($var instanceof $class) {
58 | return;
59 | }
60 | }
61 |
62 | $r = new Representation('toString');
63 | $r->contents = (string) $var;
64 |
65 | $o->addRepresentation($r);
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Rich/BinaryPlugin.php:
--------------------------------------------------------------------------------
1 | ';
38 |
39 | $chunks = \str_split($r->contents, self::$line_length);
40 |
41 | foreach ($chunks as $index => $chunk) {
42 | $out .= \sprintf('%08X', $index * self::$line_length).":\t";
43 | $out .= \implode(' ', \str_split(\str_pad(\bin2hex($chunk), 2 * self::$line_length, ' '), self::$chunk_length));
44 | $out .= "\t".\preg_replace('/[^\\x20-\\x7E]/', '.', $chunk)."\n";
45 | }
46 |
47 | $out .= '';
48 |
49 | return $out;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Rich/BlacklistPlugin.php:
--------------------------------------------------------------------------------
1 | '.$this->renderLockedHeader($o, 'Blacklisted').'';
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Rich/ClosurePlugin.php:
--------------------------------------------------------------------------------
1 | renderer->renderChildren($o);
37 |
38 | if (!($o instanceof ClosureObject)) {
39 | $header = $this->renderer->renderHeader($o);
40 | } else {
41 | $header = '';
42 |
43 | if (null !== ($s = $o->getModifiers())) {
44 | $header .= ''.$s.' ';
45 | }
46 |
47 | if (null !== ($s = $o->getName())) {
48 | $header .= ''.$this->renderer->escape($s).'('.$this->renderer->escape($o->getParams()).') ';
49 | }
50 |
51 | $header .= 'Closure ';
52 | $header .= $this->renderer->escape(Kint::shortenPath($o->filename)).':'.(int) $o->startline;
53 | }
54 |
55 | $header = $this->renderer->renderHeaderWrapper($o, (bool) \strlen($children), $header);
56 |
57 | return ''.$header.$children.'
';
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Rich/DepthLimitPlugin.php:
--------------------------------------------------------------------------------
1 | '.$this->renderLockedHeader($o, 'Depth Limit').'';
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Rich/ObjectPluginInterface.php:
--------------------------------------------------------------------------------
1 | '.$this->renderLockedHeader($o, 'Recursion').'';
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Rich/TabPluginInterface.php:
--------------------------------------------------------------------------------
1 | contents);
37 |
38 | if ($dt) {
39 | return ''.$dt->setTimeZone(new DateTimeZone('UTC'))->format('Y-m-d H:i:s T').'
';
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Text/BlacklistPlugin.php:
--------------------------------------------------------------------------------
1 | depth) {
37 | $out .= $this->renderer->colorTitle($this->renderer->renderTitle($o)).PHP_EOL;
38 | }
39 |
40 | $out .= $this->renderer->renderHeader($o).' '.$this->renderer->colorValue('BLACKLISTED').PHP_EOL;
41 |
42 | return $out;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Text/DepthLimitPlugin.php:
--------------------------------------------------------------------------------
1 | depth) {
37 | $out .= $this->renderer->colorTitle($this->renderer->renderTitle($o)).PHP_EOL;
38 | }
39 |
40 | $out .= $this->renderer->renderHeader($o).' '.$this->renderer->colorValue('DEPTH LIMIT').PHP_EOL;
41 |
42 | return $out;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Text/Plugin.php:
--------------------------------------------------------------------------------
1 | renderer = $r;
38 | }
39 |
40 | abstract public function render(BasicObject $o);
41 | }
42 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/Renderer/Text/RecursionPlugin.php:
--------------------------------------------------------------------------------
1 | depth) {
37 | $out .= $this->renderer->colorTitle($this->renderer->renderTitle($o)).PHP_EOL;
38 | }
39 |
40 | $out .= $this->renderer->renderHeader($o).' '.$this->renderer->colorValue('RECURSION').PHP_EOL;
41 |
42 | return $out;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/init.php:
--------------------------------------------------------------------------------
1 | = 0));
40 | \define('KINT_PHP70', (\version_compare(PHP_VERSION, '7.0') >= 0));
41 | \define('KINT_PHP72', (\version_compare(PHP_VERSION, '7.2') >= 0));
42 | \define('KINT_PHP73', (\version_compare(PHP_VERSION, '7.3') >= 0));
43 | \define('KINT_PHP74', (\version_compare(PHP_VERSION, '7.4') >= 0));
44 |
45 | // Dynamic default settings
46 | Kint::$file_link_format = \ini_get('xdebug.file_link_format');
47 | if (isset($_SERVER['DOCUMENT_ROOT'])) {
48 | Kint::$app_root_dirs = array(
49 | $_SERVER['DOCUMENT_ROOT'] => '',
50 | \realpath($_SERVER['DOCUMENT_ROOT']) => '',
51 | );
52 | }
53 |
54 | Utils::composerSkipFlags();
55 |
56 | if ((!\defined('KINT_SKIP_FACADE') || !KINT_SKIP_FACADE) && !\class_exists('Kint')) {
57 | \class_alias('Kint\\Kint', 'Kint');
58 | }
59 |
60 | if (!\defined('KINT_SKIP_HELPERS') || !KINT_SKIP_HELPERS) {
61 | require_once __DIR__.'/init_helpers.php';
62 | }
63 |
--------------------------------------------------------------------------------
/system/ThirdParty/Kint/resources/compiled/microtime.js:
--------------------------------------------------------------------------------
1 | void 0===window.kintMicrotimeInitialized&&(window.kintMicrotimeInitialized=1,window.addEventListener("load",function(){"use strict";var c={},i=Array.prototype.slice.call(document.querySelectorAll("[data-kint-microtime-group]"),0);i.forEach(function(i){if(i.querySelector(".kint-microtime-lap")){var t=i.getAttribute("data-kint-microtime-group"),e=parseFloat(i.querySelector(".kint-microtime-lap").innerHTML),r=parseFloat(i.querySelector(".kint-microtime-avg").innerHTML);void 0===c[t]&&(c[t]={}),(void 0===c[t].min||c[t].min>e)&&(c[t].min=e),(void 0===c[t].max||c[t].maxlogger = $logger;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/system/ThirdParty/PSR/Log/NullLogger.php:
--------------------------------------------------------------------------------
1 | logger) { }`
11 | * blocks.
12 | */
13 | class NullLogger extends AbstractLogger
14 | {
15 | /**
16 | * Logs with an arbitrary level.
17 | *
18 | * @param mixed $level
19 | * @param string $message
20 | * @param array $context
21 | * @return null
22 | */
23 | public function log($level, $message, array $context = [])
24 | {
25 | // noop
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/system/Validation/Exceptions/ValidationException.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | - = esc($error) ?>
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/Validation/Views/single.php:
--------------------------------------------------------------------------------
1 | = esc($error) ?>
2 |
--------------------------------------------------------------------------------
/system/View/Exceptions/ViewException.php:
--------------------------------------------------------------------------------
1 | $class, 'method' => $method]));
11 | }
12 |
13 | public static function forMissingCellParameters(string $class, string $method)
14 | {
15 | return new static(lang('View.missingCellParameters', ['class' => $class, 'method' => $method]));
16 | }
17 |
18 | public static function forInvalidCellParameter(string $key)
19 | {
20 | return new static(lang('View.invalidCellParameter', [$key]));
21 | }
22 |
23 | public static function forNoCellClass()
24 | {
25 | return new static(lang('View.noCellClass'));
26 | }
27 |
28 | public static function forInvalidCellClass(string $class = null)
29 | {
30 | return new static(lang('View.invalidCellClass', [$class]));
31 | }
32 |
33 | public static function forTagSyntaxError(string $output)
34 | {
35 | return new static(lang('View.tagSyntaxError', [$output]));
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/system/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/writable/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | Require all denied
3 |
4 |
5 | Deny from all
6 |
7 |
--------------------------------------------------------------------------------
/writable/cache/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/writable/logs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/writable/session/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/writable/uploads/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 403 Forbidden
5 |
6 |
7 |
8 | Directory access is forbidden.
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------