mirror of
https://github.com/flarum/core.git
synced 2025-10-10 22:44:25 +02:00
Massive refactor
- Use contextual namespaces within Flarum\Core - Clean up and docblock everything - Refactor Activity/Notification blueprint stuff - Refactor Formatter stuff - Refactor Search stuff - Upgrade to JSON-API 1.0 - Removed “addedPosts” and “removedPosts” relationships from discussion API. This was used for adding/removing event posts after renaming a discussion etc. Instead we should make an additional request to get all new posts Todo: - Fix Extenders and extensions - Get rid of repository interfaces - Fix other bugs I’ve inevitably introduced
This commit is contained in:
@@ -1,26 +1,21 @@
|
||||
<?php namespace Flarum\Support;
|
||||
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Zend\Diactoros\Response\EmptyResponse;
|
||||
use Zend\Diactoros\Response\RedirectResponse;
|
||||
|
||||
abstract class Action
|
||||
{
|
||||
abstract public function handle(Request $request, $routeParams = []);
|
||||
|
||||
public function __construct(Actor $actor, Dispatcher $bus)
|
||||
{
|
||||
$this->actor = $actor;
|
||||
$this->bus = $bus;
|
||||
}
|
||||
|
||||
protected function callAction($class, $params = [])
|
||||
{
|
||||
$action = app($class);
|
||||
return $action->call($params);
|
||||
}
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param array $routeParams
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
*/
|
||||
abstract public function handle(Request $request, array $routeParams = []);
|
||||
|
||||
/**
|
||||
* @return EmptyResponse
|
||||
*/
|
||||
protected function success()
|
||||
{
|
||||
return new EmptyResponse();
|
||||
@@ -28,11 +23,12 @@ abstract class Action
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @return \Psr\Http\Message\ResponseInterface
|
||||
* @return RedirectResponse
|
||||
*/
|
||||
protected function redirectTo($url)
|
||||
{
|
||||
$content = sprintf('<!DOCTYPE html>
|
||||
$content = sprintf(<<<'HTML'
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
@@ -43,7 +39,9 @@ abstract class Action
|
||||
<body>
|
||||
Redirecting to <a href="%1$s">%1$s</a>.
|
||||
</body>
|
||||
</html>', htmlspecialchars($url, ENT_QUOTES, 'UTF-8'));
|
||||
</html>
|
||||
HTML
|
||||
, htmlspecialchars($url, ENT_QUOTES, 'UTF-8'));
|
||||
|
||||
$response = new RedirectResponse($url);
|
||||
$response->getBody()->write($content);
|
||||
|
@@ -1,23 +0,0 @@
|
||||
<?php namespace Flarum\Support;
|
||||
|
||||
use Flarum\Core\Models\Guest;
|
||||
|
||||
class Actor
|
||||
{
|
||||
protected $user;
|
||||
|
||||
public function getUser()
|
||||
{
|
||||
return $this->user ?: new Guest;
|
||||
}
|
||||
|
||||
public function setUser($user)
|
||||
{
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
public function isAuthenticated()
|
||||
{
|
||||
return (bool) $this->user;
|
||||
}
|
||||
}
|
@@ -1,17 +1,22 @@
|
||||
<?php namespace Flarum\Support;
|
||||
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Zend\Diactoros\Response;
|
||||
|
||||
abstract class HtmlAction extends Action
|
||||
{
|
||||
public function handle(Request $request, $routeParams = [])
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param array $routeParams
|
||||
* @return \Zend\Diactoros\Response
|
||||
*/
|
||||
public function handle(Request $request, array $routeParams = [])
|
||||
{
|
||||
$view = $this->render($request, $routeParams);
|
||||
|
||||
$response = new Response();
|
||||
$response->getBody()->write($view->render());
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
@@ -20,5 +25,5 @@ abstract class HtmlAction extends Action
|
||||
* @param array $routeParams
|
||||
* @return \Illuminate\Contracts\View\View
|
||||
*/
|
||||
abstract protected function render(Request $request, $routeParams = []);
|
||||
abstract protected function render(Request $request, array $routeParams = []);
|
||||
}
|
||||
|
@@ -1,10 +1,22 @@
|
||||
<?php namespace Flarum\Support;
|
||||
|
||||
use Flarum\Extend\ExtenderInterface;
|
||||
use Illuminate\Support\ServiceProvider as IlluminateServiceProvider;
|
||||
use Illuminate\Contracts\Events\Dispatcher;
|
||||
use InvalidArgumentException;
|
||||
|
||||
class ServiceProvider extends IlluminateServiceProvider
|
||||
{
|
||||
/**
|
||||
* Bootstrap the application events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
$this->extend($this->extenders());
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
@@ -12,19 +24,33 @@ class ServiceProvider extends IlluminateServiceProvider
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function extend()
|
||||
/**
|
||||
* @return ExtenderInterface[]
|
||||
*/
|
||||
public function extenders()
|
||||
{
|
||||
// @todo don't support func_get_args
|
||||
foreach (func_get_args() as $extenders) {
|
||||
if (! is_array($extenders)) {
|
||||
$extenders = [$extenders];
|
||||
}
|
||||
foreach ($extenders as $extender) {
|
||||
$extender->extend($this->app);
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ExtenderInterface|ExtenderInterface[] $extenders
|
||||
* @return void
|
||||
*/
|
||||
protected function extend($extenders)
|
||||
{
|
||||
if (! is_array($extenders)) {
|
||||
$extenders = [$extenders];
|
||||
}
|
||||
|
||||
foreach ($extenders as $extender) {
|
||||
if (! $extender instanceof ExtenderInterface) {
|
||||
throw new InvalidArgumentException('Argument must be an object of type '
|
||||
. ExtenderInterface::class);
|
||||
}
|
||||
|
||||
$extender->extend($this->app);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user