From d4e4cba2073f99be617321d0636e790d9dbda668 Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sun, 16 Oct 2016 23:25:16 +0100 Subject: [PATCH] Multisite support in models --- src/Models/Meta.php | 16 ++++++++++++++++ src/Models/Option.php | 17 +++++++++++++++++ src/Models/Post.php | 17 +++++++++++++++++ src/Models/User.php | 1 + 4 files changed, 51 insertions(+) diff --git a/src/Models/Meta.php b/src/Models/Meta.php index bea4fe7..644ff8a 100644 --- a/src/Models/Meta.php +++ b/src/Models/Meta.php @@ -26,6 +26,22 @@ class Meta extends Model public static $cache = []; /** + * Create a new Eloquent model instance. + * + * @param array $attributes + * @return void + */ + public function __construct(array $attributes = []) + { + parent::__construct($attributes); + + // Set the current table to the site's own table if we're in a multisite + if (Wordpress::multisite() && (Wordpress::getSiteId() !== 0 && Wordpress::getSiteId() !== 1)) { + $this->setTable(DB_PREFIX . Wordpress::getSiteId() . '_postmeta'); + } + } + + /** * Get metadata for a page (or the current page). * * Meta::get('my_meta_key'); diff --git a/src/Models/Option.php b/src/Models/Option.php index f85e3c8..976759c 100644 --- a/src/Models/Option.php +++ b/src/Models/Option.php @@ -2,6 +2,7 @@ namespace Koselig\Models; use Illuminate\Database\Eloquent\Model; +use Koselig\Support\Wordpress; /** * Table containing all Wordpress options. @@ -15,6 +16,22 @@ class Option extends Model public $timestamps = false; /** + * Create a new Eloquent model instance. + * + * @param array $attributes + * @return void + */ + public function __construct(array $attributes = []) + { + parent::__construct($attributes); + + // Set the current table to the site's own table if we're in a multisite + if (Wordpress::multisite() && (Wordpress::getSiteId() !== 0 && Wordpress::getSiteId() !== 1)) { + $this->setTable(DB_PREFIX . Wordpress::getSiteId() . '_options'); + } + } + + /** * Get an option by its name. * * @param $name diff --git a/src/Models/Post.php b/src/Models/Post.php index 41c60ef..c24e1a5 100644 --- a/src/Models/Post.php +++ b/src/Models/Post.php @@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Koselig\Exceptions\UnsatisfiedDependencyException; use Koselig\Support\Action; +use Koselig\Support\Wordpress; use WP_Post; /** @@ -22,6 +23,22 @@ class Post extends Model public $timestamps = false; /** + * Create a new Eloquent model instance. + * + * @param array $attributes + * @return void + */ + public function __construct(array $attributes = []) + { + parent::__construct($attributes); + + // Set the current table to the site's own table if we're in a multisite + if (Wordpress::multisite() && (Wordpress::getSiteId() !== 0 && Wordpress::getSiteId() !== 1)) { + $this->setTable(DB_PREFIX . Wordpress::getSiteId() . '_posts'); + } + } + + /** * The "booting" method of the model. * * @return void diff --git a/src/Models/User.php b/src/Models/User.php index 9974e88..1ff21ae 100644 --- a/src/Models/User.php +++ b/src/Models/User.php @@ -5,6 +5,7 @@ use Illuminate\Auth\Authenticatable; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; +use Koselig\Support\Wordpress; /** * Table containing all the users within the CMS. -- libgit2 1.7.2