├── 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: 5 | Filename: getFile(), "\n"; ?> 6 | Line Number: getLine(); ?> 7 | 8 | 9 | 10 | Backtrace: 11 | getTrace() as $error): ?> 12 | 13 | 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 | 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__table extends Migration 6 | { 7 | 8 | protected $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('', true); 44 | } 45 | 46 | //-------------------------------------------------------------------- 47 | 48 | public function down() 49 | { 50 | $this->forge->dropTable('', 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 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
CodeIgniter Version:{ ciVersion }
PHP Version:{ phpVersion }
PHP SAPI:{ phpSAPI }
Environment:{ environment }
Base URL: 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 |
TimeZone:{ timezone }
Locale:{ locale }
Content Security Policy Enabled:{ if $cspEnabled } Yes { else } No { endif }
49 | -------------------------------------------------------------------------------- /system/Debug/Toolbar/Views/_database.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {queries} 10 | 11 | 12 | 13 | 14 | {/queries} 15 | 16 |
TimeQuery String
{duration}{! sql !}
17 | -------------------------------------------------------------------------------- /system/Debug/Toolbar/Views/_events.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {events} 11 | 12 | 13 | 14 | 15 | 16 | {/events} 17 | 18 |
TimeEvent NameTimes Called
{ duration } ms{event}{count}
19 | -------------------------------------------------------------------------------- /system/Debug/Toolbar/Views/_files.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | {userFiles} 4 | 5 | 6 | 7 | 8 | {/userFiles} 9 | {coreFiles} 10 | 11 | 12 | 13 | 14 | {/coreFiles} 15 | 16 |
{name}{path}
{name}{path}
17 | -------------------------------------------------------------------------------- /system/Debug/Toolbar/Views/_history.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | {files} 15 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | {/files} 27 | 28 |
ActionDatetimeStatusMethodURLContent-TypeIs AJAX?
17 | 18 | {datetime}{status}{method}{url}{contentType}{isAJAX}
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 | 8 | 9 | 10 | 11 | 12 | {logs} 13 | 14 | 15 | 16 | 17 | {/logs} 18 | 19 |
SeverityMessage
{level}{msg}
20 | { endif } 21 | -------------------------------------------------------------------------------- /system/Debug/Toolbar/Views/_routes.tpl: -------------------------------------------------------------------------------- 1 |

Matched Route

2 | 3 | 4 | 5 | {matchedRoute} 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | {params} 23 | 24 | 25 | 26 | 27 | {/params} 28 | {/matchedRoute} 29 | 30 |
Directory:{directory}
Controller:{controller}
Method:{method}
Params:{paramCount} / {truePCount}
{name}{value}
31 | 32 | 33 |

Defined Routes

34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | {routes} 45 | 46 | 47 | 48 | 49 | 50 | {/routes} 51 | 52 |
MethodRouteHandler
{method}{route}{handler}
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 | 9 | 10 | -------------------------------------------------------------------------------- /system/Validation/Views/single.php: -------------------------------------------------------------------------------- 1 | 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 | --------------------------------------------------------------------------------