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 +++ a/src/Models/Meta.php @@ -26,6 +26,22 @@ 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 +++ a/src/Models/Option.php @@ -1,7 +1,8 @@ setTable(DB_PREFIX . Wordpress::getSiteId() . '_options'); + } + } /** * Get an option by its name. diff --git a/src/Models/Post.php b/src/Models/Post.php index 41c60ef..c24e1a5 100644 --- a/src/Models/Post.php +++ a/src/Models/Post.php @@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Koselig\Exceptions\UnsatisfiedDependencyException; use Koselig\Support\Action; +use Koselig\Support\Wordpress; use WP_Post; /** @@ -20,6 +21,22 @@ protected $primaryKey = 'ID'; protected $dates = ['post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt']; 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. diff --git a/src/Models/User.php b/src/Models/User.php index 9974e88..1ff21ae 100644 --- a/src/Models/User.php +++ a/src/Models/User.php @@ -5,6 +5,7 @@ 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. -- rgit 0.1.5