1
0
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:
Toby Zerner
2015-07-04 12:24:48 +09:30
parent 12dd550a14
commit a74b40fe47
324 changed files with 6443 additions and 4197 deletions

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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 = []);
}

View File

@@ -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);
}
}
}