Support new versions of Laravel and Wordpress
Diff
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(-)
@@ -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.
@@ -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());
});
}
}
@@ -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'];
@@ -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;
}
/**
@@ -131,7 +131,7 @@ class Wordpress
*/
public static function site()
{
return get_current_site();
return \get_current_site();
}
/**
@@ -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.