From 25953e509228ea716261e737493e1fcd71e193be Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sun, 29 Apr 2018 12:47:56 +0100 Subject: [PATCH] Support new versions of Laravel and Wordpress --- src/Providers/KoseligServiceProvider.php | 2 ++ src/Providers/QueryServiceProvider.php | 5 +++++ src/Routing/Routing.php | 4 ++-- src/Routing/TemplateRoute.php | 6 +++--- src/Support/Wordpress.php | 2 +- src/helpers.php | 28 ++++++++++++++++++++++++++++ 6 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/Providers/KoseligServiceProvider.php b/src/Providers/KoseligServiceProvider.php index 5f446f3..5264c1f 100644 --- a/src/Providers/KoseligServiceProvider.php +++ b/src/Providers/KoseligServiceProvider.php @@ -5,7 +5,9 @@ use Illuminate\Support\ServiceProvider; use Koselig\Auth\AuthServiceProvider; use Koselig\Hashing\HashServiceProvider; use Koselig\Mail\WordpressMailServiceProvider; +use Koselig\Models\Post; use Koselig\Routing\RoutingServiceProvider; +use Koselig\Support\Wordpress; /** * Registers all the other service providers used by this package. diff --git a/src/Providers/QueryServiceProvider.php b/src/Providers/QueryServiceProvider.php index d042834..b9fd843 100644 --- a/src/Providers/QueryServiceProvider.php +++ b/src/Providers/QueryServiceProvider.php @@ -4,6 +4,7 @@ namespace Koselig\Providers; use Illuminate\Support\ServiceProvider; use Koselig\Models\Post; use Koselig\Proxy\Query; +use Koselig\Support\Wordpress; /** * Service provider that provides bindings for the several queries that Wordpress @@ -33,5 +34,9 @@ class QueryServiceProvider extends ServiceProvider return $this->cached[$post] ?? $this->cached[$post] = Post::find($post); }); + + $this->app->singleton(Post::class, function () { + return Post::find(Wordpress::id()); + }); } } diff --git a/src/Routing/Routing.php b/src/Routing/Routing.php index ae40345..757e0a0 100644 --- a/src/Routing/Routing.php +++ b/src/Routing/Routing.php @@ -183,8 +183,8 @@ class Routing $action = ['uses' => $action]; } - if (!empty(Route::getGroupStack())) { - $group = end(Route::getGroupStack()); + if (!empty($stack = Route::getGroupStack())) { + $group = end($stack); $action['uses'] = isset($group['namespace']) && strpos($action['uses'], '\\') !== 0 ? $group['namespace'] . '\\' . $action['uses'] : $action['uses']; diff --git a/src/Routing/TemplateRoute.php b/src/Routing/TemplateRoute.php index 9778735..8930caa 100644 --- a/src/Routing/TemplateRoute.php +++ b/src/Routing/TemplateRoute.php @@ -41,7 +41,7 @@ class TemplateRoute extends Route */ public function matches(Request $request, $includingMethod = true) { - $post = $request->post(); + $post = $request->page(); if (!$post) { // the page we are on either isn't in the CMS or doesn't have a template. @@ -50,11 +50,11 @@ class TemplateRoute extends Route $slug = $post->getMeta('_wp_page_template'); - if (!empty($this->getAction()['domain']) && !Wordpress::multisite($this->getAction()['domain'])) { + if (!empty($this->getAction('domain')) && !Wordpress::multisite($this->getAction('domain'))) { return false; } - return $this->uri === $slug; + return $this->uri === 'template/' . $slug; } /** diff --git a/src/Support/Wordpress.php b/src/Support/Wordpress.php index 46f87bd..9549c5d 100644 --- a/src/Support/Wordpress.php +++ b/src/Support/Wordpress.php @@ -131,7 +131,7 @@ class Wordpress */ public static function site() { - return get_current_site(); + return \get_current_site(); } /** diff --git a/src/helpers.php b/src/helpers.php index 1fc35e8..2999d7a 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -4,6 +4,34 @@ use Koselig\Models\Meta; use Koselig\Models\Post; use Koselig\Support\RecursiveMenuIterator; +if (!function_exists('__')) { + /** + * Tries to get a translation from both Laravel and Wordpress. + * + * @param $key key of the translation + * @param array|string $replace replacements for laravel or domain for wordpress + * @param string $locale locale for laravel, not used for wordpress + * @return string + */ + function __($key, $replace = [], $locale = null) + { + if (is_array($replace)) { + try { + return app('translator')->getFromJson($key, $replace, $locale); + } catch (\Exception $e) { + // failed to get translation from Laravel + if ((!empty($replace) && !is_string($replace)) || !empty($locale)) { + // this doesn't look like something we can pass to WordPress, lets + // rethrow the exception + throw $e; + } + } + } + + return translate($key, empty($replace) ? 'default' : $replace); + } +} + if (!function_exists('query')) { /** * Get the main query or convert a {@link WP_Query} to a {@link \Koselig\Proxy\Query} proxy instance. -- libgit2 1.7.2