~groctel/neosluger

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.
Next
Do not follow this link