Commit Graph

1589 Commits

Author SHA1 Message Date
33deea4791 Fixes #1738 : Search Title within discussions (#1741) 2019-03-07 00:20:37 +01:00
e8ab49abc1 Merge pull request #1743 from flarum/fl/test-structure
Improve test suite structure
2019-03-03 20:17:35 +01:00
654ab4cc29 prefixes indices when installing too 2019-02-05 09:50:15 +01:00
e0becd0c7b Capsule manager (#1744)
Refactored to use the Capsule Database manager for setting up the
Flarum (mysql) connection.

This will introduce the reconnector automatically, fixing #1740
2019-02-04 23:31:12 +01:00
ed43ad9c3f Properly wrap error bag in session
Second part of fixing #1683.
2019-02-03 21:16:43 +01:00
4611abe5db Fix error redirect when resetting passwords
This was an oversight from the large database column renamings.

Fixes #1683.
2019-02-03 21:06:47 +01:00
cf746079ed Make integration tests independent
This creates a dedicated test suite for integration tests. All of them
can be run independently, and there is no order dependency - previously,
all integration tests needed the installer test to run first, and they
would fail if installation failed.

Now, the developer will have to set up a Flarum database to be used by
these tests. A setup script to make this simple will be added in the
next commit.

Small tradeoff: the installer is NOT tested in our test suite anymore,
only implicitly through the setup script. If we decide that this is a
problem, we can still set up separate, dedicated installer tests which
should probably test the web installer.
2019-02-03 20:39:32 +01:00
1a9f1f7a3d Use Collection class rather than collect() helper 2019-02-01 14:12:29 +01:00
4d1411e2a8 Improve problem description for wrong PHP version 2019-02-01 13:00:25 +01:00
968152b740 DatabaseConfig: Implement Arrayable contract 2019-02-01 13:00:07 +01:00
ed9591c16f Installer: Support reverting asset publication 2019-01-31 22:43:07 +01:00
8ad326941f Migrator: Fix resetting core migrations 2019-01-31 22:42:35 +01:00
7ff9a90204 Check MariaDB version, update MySQL constraint
See flarum/docs#43.
2019-01-31 21:52:10 +01:00
f4fb1ab272 Simplify DataProviderInterface
Instead of passing all these objects / arrays from one object to the
next, simply pass an Installation instance around for configuration.
2019-01-31 21:52:10 +01:00
484c6d2edb Extract DatabaseConfig class with validation 2019-01-31 21:52:09 +01:00
8b68ff6232 Extract AdminUser class that enforces invariants 2019-01-31 21:52:09 +01:00
0a59b7164e Move password confirmation validation to frontends
Since this is not strictly speaking a domain invariant, but rather
specific to the user interface where passwords are not displayed, and
should therefore be entered twice to prevent mistakes going unnoticed,
this stuff should be checked in the frontend, not in the install steps.

Next step: Ensure that all domain-specific validation is done in the
installer's domain layer. This will ensure these validations cannot be
forgotten, and keep the frontends DRY.
2019-01-31 21:52:08 +01:00
0879829dc4 Use dedicated temporary variable instead of array 2019-01-31 21:52:08 +01:00
78ba3bd854 Combine building and storing config in one step 2019-01-31 21:52:08 +01:00
44c91099cd Get rid of DefaultsDataProvider
Since we do not provide a development VM anymore, it does not make sense
to have "default" credentials etc.

To reproduce something similar, I'd suggest using a YAML or JSON file
together with the `--file` option.
2019-01-31 21:52:07 +01:00
4585f03ee3 Switch to a whitelist for enabling extensions 2019-01-31 21:52:07 +01:00
bc9e8f68f1 Move default settings to install step
The various installation "frontends" (such as GUI and console) can now
provide custom overrides, if they want to.
2019-01-31 21:52:06 +01:00
f5a21584c2 Collapse namespace imports 2019-01-31 21:52:06 +01:00
e0a508a765 Catch pipeline's own exception 2019-01-31 21:52:06 +01:00
89e018a4f0 Simplify PrerequisiteInterface
I went with a return type of Collection, because it is easier to call
methods such as isEmpty() directly on those objects.
2019-01-31 21:52:05 +01:00
790d5beee5 Split up the installer logic
This is probably the most complicated way I could find to fix #1587.

Jokes aside, this was done with a few goals in mind:
- Reduce coupling between the installer and the rest of Flarum's
  "Application", which we are building during installation.
- Move the installer logic to several smaller classes, which can then
  be used by the web frontend and the console task, instead of the
  former hacking its way into the latter to be "DRY".
- Separate installer infrastructure (the "pipeline", with the ability
  to revert steps upon failure) from the actual steps being taken.

The problem was conceptual, and would certainly re-occur in a similar
fashion if we wouldn't tackle it at its roots.

It is fixed now, because we no longer use the ExtensionManager for
enabling extensions, but instead duplicate some of its logic. That is
fine because we don't want to do everything it does, e.g. omit
extenders' lifecycle hooks (which depend on the Application instance
being complete).

> for each desired change, make the change easy (warning: this may be
> hard), then make the easy change

- Kent Beck, https://twitter.com/kentbeck/status/250733358307500032

Fixes #1587.
2019-01-31 21:52:04 +01:00
0ab9facc4b Make the Request available to the Formatter\Rendering event (#1721)
This is important because extensions may wish to render post content
differently depending on Request factors such as the actor. For example,
an attachments extension might wish to hide attachments from guests.

This solution is a bit of a hack-job for now, but soon when we refactor
the API layer to use tobscure/json-api-server, and also refactor the
Formatter layer, it can be revised.
2019-01-22 23:33:49 +01:00
1b2d4f1e1d set prefixing indices to be done automatically, now that illuminate can take care of that 2019-01-15 20:49:33 +01:00
390148456c reverts #96e2824 2019-01-15 20:39:38 +01:00
208bad393f Mail: Add an array of supported drivers
This can be used for e.g. validation, or a dropdown in the frontend.
It can also be extended by extensions, such as flagrow/mail-drivers.

Refs #1169.
2018-12-20 13:36:08 +01:00
8a93f8b6b6 Apply fixes from StyleCI (#1714)
[ci skip] [skip ci]
2018-12-20 13:13:58 +01:00
9db04a4e19 Register service providers alphabetically
Order should not matter - and this is the only one that can
realistically stay consistent.
2018-12-20 13:13:04 +01:00
ac5e26a254 Use a custom service provider for email configuration 2018-12-20 13:10:30 +01:00
9794a08f39 updated constraint for 5.7 (#1698) 2018-12-20 08:20:52 +10:30
ababb8ebef Don't resolve services when binding listeners
Refs #1578.
2018-12-19 22:47:58 +01:00
cb3baf9955 Apply fixes from StyleCI (#1713)
[ci skip] [skip ci]
2018-12-19 22:42:54 +01:00
dbe8cba14e Avoid unnecessary event subscribers
Refs #1578.
2018-12-19 22:27:32 +01:00
9fe671c9bb Fix UpdateServiceProvider
- Shorten registration of routes
- Do not resolve view factory before booting
2018-12-19 22:17:44 +01:00
0e5f334a0b Locale: Don't resolve manager just to configure it
Refs #1578.
2018-12-19 22:07:31 +01:00
e4514d8413 Shorten registration of routes 2018-12-19 21:57:59 +01:00
1080d25561 Frontends: Populate default routes only when they are resolved 2018-12-19 21:55:58 +01:00
ba594de13a Make site extenders run after extensions
Fixes #1708.
2018-12-19 21:30:29 +01:00
671fdec8d0 fixes #1695, post comment count is incorrectly calculated based on all posts, including events 2018-12-19 15:07:32 +01:00
9eca9192ca fixes a notice due to the forum variable not being defined before compacting 2018-12-19 11:40:48 +01:00
3468bdf511 Run local extenders before booting service providers
We still need to discuss the priority of local extenders vs. those
from enabled extensions, but let's first fix the actual bug.

Refs #1708.
2018-12-18 11:16:57 +01:00
54503d2c29 API: Populate default routes only when they are resolved
Refs #1708.
2018-12-18 10:33:01 +01:00
565131e2a7 Allow passing strings (names of invokable classes) to Formatter extender
In preparation for fixing #1703.
2018-12-15 12:05:17 +01:00
f0da3cf304 Remove obsolete binding 2018-12-14 11:28:11 +10:30
6acc91577d Apply fixes from StyleCI (#1701)
[ci skip] [skip ci]
2018-12-14 01:48:19 +01:00
3e0cd3a21f Use class constant to get qualified class names 2018-12-14 01:47:54 +01:00