chore: Add code coverage with xdebug
chore: Move DB interface back to Nsl module
refactor: Move NslWeb namespace to Nsl\Web
fix: neosluger.conf was accidentally deleted
refactor: Print actual LICENCE plain-text file in licence-raw
style: js files indentation
chore: Move assets to single directory
style: css files indentation
feat: Use MySQL as default database
refactor: Improve DB tests, remove urls() and logs() functions from dbs Those two functions were not compliant with the `\Nsl\DB\DB` interface, so they had to be separately implemented in order to create testable database drivers. The best practice is to test the drivers by using the interface, otherwise we're not testing the drivers' actual behaviour.
refactor: Make DateTime objects DateTimeImmutable Immutability makes it much easier to reason about the code. For example: $dt = \Nsl\now()->add(new \DateInterval("PT5S"); assert(\Nsl\now() == $dt); // Is this true? If `\Nsl\now()` returns `\DateTime`, the assertion is true. However, now that it returns `\DateTimeImmutable`, it's false. This new behaviour is less prone to surprises, especially when testing.
fix: DB\Dummy still duplicated the creation_dt as the first log
feat: Add MySQL first implementation This implementation lacks some code and the tests from the last time are not enough for the many cases this or other db may have to controll. It's still a good enough first implementation of the database driver.
fix: Different classes were not in agreement of the current datetime The old approach for getting the current datetime (i.e. `now()`) wasn't aware of the server's timezone and could get different values when calling the multiple functions that returned a current time many times.
refactor: Improve names, documentation of configuration constants
refactor: Simplify and document the steps taken in web/main.php Avoiding early returns is a pain when the code path has lots of ramifications. Using if statements that perform an action an return is a nice way to encapsulate behaviour for a condition, which is better documented with a short line expressing the intent for that block.
refactor: Simplify php pages by making them behave like scripts Removing the `*main` functions makes them easier to read. It didn't make sense that some pages had main functions and others didn't. The reason was that I added the function if the logic was more complex than calling `render`, but in reality it made the code inconsistent.
refactor: Remove Result class Since the program's memory status is restored with every petition, it's much easier to have a global error log and print it in the error page when the error page is rendered.
chore: Remove MongoDB The class is a mess and not worth refactoring because I'm going to delete it anyway. MongoDB's licence is arguably not free software and the original Sluger actually used MySQL, which is what I'm going to implement next.
refactor: Move server-helpers to utils and Nsl namespace It made no sense that these functions were inside the settings namespace.