Completed
Push — master ( b70849...e26cf8 )
by James
06:26
created
src/Core/Application.php 2 patches
Indentation   +151 added lines, -151 removed lines patch added patch discarded remove patch
@@ -13,155 +13,155 @@
 block discarded – undo
13 13
  * @package Intraxia\Jaxion
14 14
  */
15 15
 class Application extends Container implements ApplicationContract {
16
-	/**
17
-	 * Define plugin version on Application.
18
-	 */
19
-	const VERSION = '';
20
-
21
-	/**
22
-	 * Singleton instance of the Application object
23
-	 *
24
-	 * @var Application[]
25
-	 */
26
-	protected static $instances = array();
27
-
28
-	/**
29
-	 * Instantiates a new Application container.
30
-	 *
31
-	 * The Application constructor enforces the presence of of a single instance
32
-	 * of the Application. If an instance already exists, an Exception will be thrown.
33
-	 *
34
-	 * @param Config $config
35
-	 * @param array  $providers
36
-	 *
37
-	 * @throws ApplicationAlreadyBootedException
38
-	 */
39
-	public function __construct( $config, array $providers = array() ) {
40
-		if ( isset( static::$instances[ get_called_class() ] ) ) {
41
-			throw new ApplicationAlreadyBootedException;
42
-		}
43
-
44
-		static::$instances[ get_called_class() ] = $this;
45
-
46
-		if ( ! ( $config instanceof Config ) ) {
47
-			$config = new Config( ConfigType::PLUGIN, $config );
48
-		}
49
-
50
-		$this->register_constants( $config );
51
-		$this->register_core_services( $config );
52
-
53
-		register_activation_hook( $config->file, array( $this, 'activate' ) );
54
-		register_deactivation_hook( $config->file, array( $this, 'deactivate' ) );
55
-
56
-		parent::__construct( $providers );
57
-	}
58
-
59
-	/**
60
-	 * {@inheritDoc}
61
-	 *
62
-	 * @throws UnexpectedValueException
63
-	 */
64
-	public function boot() {
65
-		$loader = $this->fetch( 'loader' );
66
-
67
-		if ( ! ( $loader instanceof LoaderContract ) ) {
68
-			throw new UnexpectedValueException;
69
-		}
70
-
71
-		foreach ( $this as $alias => $value ) {
72
-			if ( $value instanceof HasActions ) {
73
-				$loader->register_actions( $value );
74
-			}
75
-
76
-			if ( $value instanceof HasFilters ) {
77
-				$loader->register_filters( $value );
78
-			}
79
-
80
-			if ( $value instanceof HasShortcode ) {
81
-				$loader->register_shortcode( $value );
82
-			}
83
-		}
84
-
85
-		add_action( 'plugins_loaded', array( $loader, 'run' ) );
86
-	}
87
-
88
-	/**
89
-	 * {@inheritdoc}
90
-	 *
91
-	 * @codeCoverageIgnore
92
-	 */
93
-	public function activate() {
94
-		// no-op
95
-	}
96
-
97
-	/**
98
-	 * {@inheritdoc}
99
-	 *
100
-	 * @codeCoverageIgnore
101
-	 */
102
-	public function deactivate() {
103
-		// no-op
104
-	}
105
-
106
-	/**
107
-	 * {@inheritDoc}
108
-	 *
109
-	 * @return Application
110
-	 * @throws ApplicationNotBootedException
111
-	 */
112
-	public static function instance() {
113
-		if ( ! isset( static::$instances[ get_called_class() ] ) ) {
114
-			throw new ApplicationNotBootedException;
115
-		}
116
-
117
-		return static::$instances[ get_called_class() ];
118
-	}
119
-
120
-	/**
121
-	 * {@inheritDoc}
122
-	 */
123
-	public static function shutdown() {
124
-		if ( isset( static::$instances[ get_called_class() ] ) ) {
125
-			unset( static::$instances[ get_called_class() ] );
126
-		}
127
-	}
128
-
129
-	/**
130
-	 * Sets the plugin's url, path, and basename.
131
-	 *
132
-	 * @param Config $config
133
-	 */
134
-	private function register_constants( Config $config ) {
135
-		$this->share( 'file', function() use ( $config ) {
136
-			return $config->file;
137
-		} );
138
-		$this->share( 'url', function() use ( $config ) {
139
-			return $config->url;
140
-		} );
141
-		$this->share( 'path', function() use ( $config ) {
142
-			return $config->path;
143
-		} );
144
-		$this->share( 'basename', function() use ( $config ) {
145
-			return $config->basename;
146
-		} );
147
-		$this->share( 'slug', function() use ( $config ) {
148
-			return $config->slug;
149
-		} );
150
-		$this->share( 'version', static::VERSION );
151
-	}
152
-
153
-	/**
154
-	 * Registers the built-in services with the Application container.
155
-	 *
156
-	 * @param Config $config
157
-	 */
158
-	private function register_core_services( Config $config ) {
159
-		$this->share( array( 'config' => 'Intraxia\Jaxion\Core\Config' ), $config );
160
-		$this->share( array( 'loader' => 'Intraxia\Jaxion\Contract\Core\Loader' ), function () {
161
-			return new Loader;
162
-		} );
163
-		$this->share( array( 'i18n' => 'Intaxia\Jaxion\Contract\Core\I18n' ), function ( Container $app ) {
164
-			return new I18n( $app->fetch( 'basename' ), $app->fetch( 'path' ) );
165
-		} );
166
-	}
16
+    /**
17
+     * Define plugin version on Application.
18
+     */
19
+    const VERSION = '';
20
+
21
+    /**
22
+     * Singleton instance of the Application object
23
+     *
24
+     * @var Application[]
25
+     */
26
+    protected static $instances = array();
27
+
28
+    /**
29
+     * Instantiates a new Application container.
30
+     *
31
+     * The Application constructor enforces the presence of of a single instance
32
+     * of the Application. If an instance already exists, an Exception will be thrown.
33
+     *
34
+     * @param Config $config
35
+     * @param array  $providers
36
+     *
37
+     * @throws ApplicationAlreadyBootedException
38
+     */
39
+    public function __construct( $config, array $providers = array() ) {
40
+        if ( isset( static::$instances[ get_called_class() ] ) ) {
41
+            throw new ApplicationAlreadyBootedException;
42
+        }
43
+
44
+        static::$instances[ get_called_class() ] = $this;
45
+
46
+        if ( ! ( $config instanceof Config ) ) {
47
+            $config = new Config( ConfigType::PLUGIN, $config );
48
+        }
49
+
50
+        $this->register_constants( $config );
51
+        $this->register_core_services( $config );
52
+
53
+        register_activation_hook( $config->file, array( $this, 'activate' ) );
54
+        register_deactivation_hook( $config->file, array( $this, 'deactivate' ) );
55
+
56
+        parent::__construct( $providers );
57
+    }
58
+
59
+    /**
60
+     * {@inheritDoc}
61
+     *
62
+     * @throws UnexpectedValueException
63
+     */
64
+    public function boot() {
65
+        $loader = $this->fetch( 'loader' );
66
+
67
+        if ( ! ( $loader instanceof LoaderContract ) ) {
68
+            throw new UnexpectedValueException;
69
+        }
70
+
71
+        foreach ( $this as $alias => $value ) {
72
+            if ( $value instanceof HasActions ) {
73
+                $loader->register_actions( $value );
74
+            }
75
+
76
+            if ( $value instanceof HasFilters ) {
77
+                $loader->register_filters( $value );
78
+            }
79
+
80
+            if ( $value instanceof HasShortcode ) {
81
+                $loader->register_shortcode( $value );
82
+            }
83
+        }
84
+
85
+        add_action( 'plugins_loaded', array( $loader, 'run' ) );
86
+    }
87
+
88
+    /**
89
+     * {@inheritdoc}
90
+     *
91
+     * @codeCoverageIgnore
92
+     */
93
+    public function activate() {
94
+        // no-op
95
+    }
96
+
97
+    /**
98
+     * {@inheritdoc}
99
+     *
100
+     * @codeCoverageIgnore
101
+     */
102
+    public function deactivate() {
103
+        // no-op
104
+    }
105
+
106
+    /**
107
+     * {@inheritDoc}
108
+     *
109
+     * @return Application
110
+     * @throws ApplicationNotBootedException
111
+     */
112
+    public static function instance() {
113
+        if ( ! isset( static::$instances[ get_called_class() ] ) ) {
114
+            throw new ApplicationNotBootedException;
115
+        }
116
+
117
+        return static::$instances[ get_called_class() ];
118
+    }
119
+
120
+    /**
121
+     * {@inheritDoc}
122
+     */
123
+    public static function shutdown() {
124
+        if ( isset( static::$instances[ get_called_class() ] ) ) {
125
+            unset( static::$instances[ get_called_class() ] );
126
+        }
127
+    }
128
+
129
+    /**
130
+     * Sets the plugin's url, path, and basename.
131
+     *
132
+     * @param Config $config
133
+     */
134
+    private function register_constants( Config $config ) {
135
+        $this->share( 'file', function() use ( $config ) {
136
+            return $config->file;
137
+        } );
138
+        $this->share( 'url', function() use ( $config ) {
139
+            return $config->url;
140
+        } );
141
+        $this->share( 'path', function() use ( $config ) {
142
+            return $config->path;
143
+        } );
144
+        $this->share( 'basename', function() use ( $config ) {
145
+            return $config->basename;
146
+        } );
147
+        $this->share( 'slug', function() use ( $config ) {
148
+            return $config->slug;
149
+        } );
150
+        $this->share( 'version', static::VERSION );
151
+    }
152
+
153
+    /**
154
+     * Registers the built-in services with the Application container.
155
+     *
156
+     * @param Config $config
157
+     */
158
+    private function register_core_services( Config $config ) {
159
+        $this->share( array( 'config' => 'Intraxia\Jaxion\Core\Config' ), $config );
160
+        $this->share( array( 'loader' => 'Intraxia\Jaxion\Contract\Core\Loader' ), function () {
161
+            return new Loader;
162
+        } );
163
+        $this->share( array( 'i18n' => 'Intaxia\Jaxion\Contract\Core\I18n' ), function ( Container $app ) {
164
+            return new I18n( $app->fetch( 'basename' ), $app->fetch( 'path' ) );
165
+        } );
166
+    }
167 167
 }
Please login to merge, or discard this patch.
Spacing   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -36,24 +36,24 @@  discard block
 block discarded – undo
36 36
 	 *
37 37
 	 * @throws ApplicationAlreadyBootedException
38 38
 	 */
39
-	public function __construct( $config, array $providers = array() ) {
40
-		if ( isset( static::$instances[ get_called_class() ] ) ) {
39
+	public function __construct($config, array $providers = array()) {
40
+		if (isset(static::$instances[get_called_class()])) {
41 41
 			throw new ApplicationAlreadyBootedException;
42 42
 		}
43 43
 
44
-		static::$instances[ get_called_class() ] = $this;
44
+		static::$instances[get_called_class()] = $this;
45 45
 
46
-		if ( ! ( $config instanceof Config ) ) {
47
-			$config = new Config( ConfigType::PLUGIN, $config );
46
+		if (!($config instanceof Config)) {
47
+			$config = new Config(ConfigType::PLUGIN, $config);
48 48
 		}
49 49
 
50
-		$this->register_constants( $config );
51
-		$this->register_core_services( $config );
50
+		$this->register_constants($config);
51
+		$this->register_core_services($config);
52 52
 
53
-		register_activation_hook( $config->file, array( $this, 'activate' ) );
54
-		register_deactivation_hook( $config->file, array( $this, 'deactivate' ) );
53
+		register_activation_hook($config->file, array($this, 'activate'));
54
+		register_deactivation_hook($config->file, array($this, 'deactivate'));
55 55
 
56
-		parent::__construct( $providers );
56
+		parent::__construct($providers);
57 57
 	}
58 58
 
59 59
 	/**
@@ -62,27 +62,27 @@  discard block
 block discarded – undo
62 62
 	 * @throws UnexpectedValueException
63 63
 	 */
64 64
 	public function boot() {
65
-		$loader = $this->fetch( 'loader' );
65
+		$loader = $this->fetch('loader');
66 66
 
67
-		if ( ! ( $loader instanceof LoaderContract ) ) {
67
+		if (!($loader instanceof LoaderContract)) {
68 68
 			throw new UnexpectedValueException;
69 69
 		}
70 70
 
71
-		foreach ( $this as $alias => $value ) {
72
-			if ( $value instanceof HasActions ) {
73
-				$loader->register_actions( $value );
71
+		foreach ($this as $alias => $value) {
72
+			if ($value instanceof HasActions) {
73
+				$loader->register_actions($value);
74 74
 			}
75 75
 
76
-			if ( $value instanceof HasFilters ) {
77
-				$loader->register_filters( $value );
76
+			if ($value instanceof HasFilters) {
77
+				$loader->register_filters($value);
78 78
 			}
79 79
 
80
-			if ( $value instanceof HasShortcode ) {
81
-				$loader->register_shortcode( $value );
80
+			if ($value instanceof HasShortcode) {
81
+				$loader->register_shortcode($value);
82 82
 			}
83 83
 		}
84 84
 
85
-		add_action( 'plugins_loaded', array( $loader, 'run' ) );
85
+		add_action('plugins_loaded', array($loader, 'run'));
86 86
 	}
87 87
 
88 88
 	/**
@@ -110,19 +110,19 @@  discard block
 block discarded – undo
110 110
 	 * @throws ApplicationNotBootedException
111 111
 	 */
112 112
 	public static function instance() {
113
-		if ( ! isset( static::$instances[ get_called_class() ] ) ) {
113
+		if (!isset(static::$instances[get_called_class()])) {
114 114
 			throw new ApplicationNotBootedException;
115 115
 		}
116 116
 
117
-		return static::$instances[ get_called_class() ];
117
+		return static::$instances[get_called_class()];
118 118
 	}
119 119
 
120 120
 	/**
121 121
 	 * {@inheritDoc}
122 122
 	 */
123 123
 	public static function shutdown() {
124
-		if ( isset( static::$instances[ get_called_class() ] ) ) {
125
-			unset( static::$instances[ get_called_class() ] );
124
+		if (isset(static::$instances[get_called_class()])) {
125
+			unset(static::$instances[get_called_class()]);
126 126
 		}
127 127
 	}
128 128
 
@@ -131,23 +131,23 @@  discard block
 block discarded – undo
131 131
 	 *
132 132
 	 * @param Config $config
133 133
 	 */
134
-	private function register_constants( Config $config ) {
135
-		$this->share( 'file', function() use ( $config ) {
134
+	private function register_constants(Config $config) {
135
+		$this->share('file', function() use ($config) {
136 136
 			return $config->file;
137 137
 		} );
138
-		$this->share( 'url', function() use ( $config ) {
138
+		$this->share('url', function() use ($config) {
139 139
 			return $config->url;
140 140
 		} );
141
-		$this->share( 'path', function() use ( $config ) {
141
+		$this->share('path', function() use ($config) {
142 142
 			return $config->path;
143 143
 		} );
144
-		$this->share( 'basename', function() use ( $config ) {
144
+		$this->share('basename', function() use ($config) {
145 145
 			return $config->basename;
146 146
 		} );
147
-		$this->share( 'slug', function() use ( $config ) {
147
+		$this->share('slug', function() use ($config) {
148 148
 			return $config->slug;
149 149
 		} );
150
-		$this->share( 'version', static::VERSION );
150
+		$this->share('version', static::VERSION);
151 151
 	}
152 152
 
153 153
 	/**
@@ -155,13 +155,13 @@  discard block
 block discarded – undo
155 155
 	 *
156 156
 	 * @param Config $config
157 157
 	 */
158
-	private function register_core_services( Config $config ) {
159
-		$this->share( array( 'config' => 'Intraxia\Jaxion\Core\Config' ), $config );
160
-		$this->share( array( 'loader' => 'Intraxia\Jaxion\Contract\Core\Loader' ), function () {
158
+	private function register_core_services(Config $config) {
159
+		$this->share(array('config' => 'Intraxia\Jaxion\Core\Config'), $config);
160
+		$this->share(array('loader' => 'Intraxia\Jaxion\Contract\Core\Loader'), function() {
161 161
 			return new Loader;
162 162
 		} );
163
-		$this->share( array( 'i18n' => 'Intaxia\Jaxion\Contract\Core\I18n' ), function ( Container $app ) {
164
-			return new I18n( $app->fetch( 'basename' ), $app->fetch( 'path' ) );
163
+		$this->share(array('i18n' => 'Intaxia\Jaxion\Contract\Core\I18n'), function(Container $app) {
164
+			return new I18n($app->fetch('basename'), $app->fetch('path'));
165 165
 		} );
166 166
 	}
167 167
 }
Please login to merge, or discard this patch.
src/Core/ConfigType.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -12,7 +12,7 @@
 block discarded – undo
12 12
  * @subpackage Core
13 13
  */
14 14
 class ConfigType extends Enum {
15
-	const PLUGIN = 'plugin';
16
-	const THEME = 'theme';
17
-	const MU_PLUGIN = 'mu-plugin';
15
+    const PLUGIN = 'plugin';
16
+    const THEME = 'theme';
17
+    const MU_PLUGIN = 'mu-plugin';
18 18
 }
Please login to merge, or discard this patch.
src/Core/Config.php 2 patches
Indentation   +86 added lines, -86 removed lines patch added patch discarded remove patch
@@ -11,104 +11,104 @@
 block discarded – undo
11 11
  * @subpackage Core
12 12
  */
13 13
 class Config {
14
-	/**
15
-	 * Configuration type.
16
-	 *
17
-	 * @var ConfigType
18
-	 */
19
-	public $type;
14
+    /**
15
+     * Configuration type.
16
+     *
17
+     * @var ConfigType
18
+     */
19
+    public $type;
20 20
 
21
-	/**
22
-	 * App entry file.
23
-	 *
24
-	 * @var string
25
-	 */
26
-	public $file;
21
+    /**
22
+     * App entry file.
23
+     *
24
+     * @var string
25
+     */
26
+    public $file;
27 27
 
28
-	/**
29
-	 * App url.
30
-	 *
31
-	 * @var string
32
-	 */
33
-	public $url;
28
+    /**
29
+     * App url.
30
+     *
31
+     * @var string
32
+     */
33
+    public $url;
34 34
 
35
-	/**
36
-	 * App path.
37
-	 *
38
-	 * @var string
39
-	 */
40
-	public $path;
35
+    /**
36
+     * App path.
37
+     *
38
+     * @var string
39
+     */
40
+    public $path;
41 41
 
42
-	/**
43
-	 * App slug.
44
-	 *
45
-	 * @var string
46
-	 */
47
-	public $slug;
42
+    /**
43
+     * App slug.
44
+     *
45
+     * @var string
46
+     */
47
+    public $slug;
48 48
 
49
-	/**
50
-	 * App basename.
51
-	 *
52
-	 * @var string
53
-	 */
54
-	public $basename;
49
+    /**
50
+     * App basename.
51
+     *
52
+     * @var string
53
+     */
54
+    public $basename;
55 55
 
56
-	/**
57
-	 * Loaded configuration files.
58
-	 *
59
-	 * @var array
60
-	 */
61
-	private $loaded = array();
56
+    /**
57
+     * Loaded configuration files.
58
+     *
59
+     * @var array
60
+     */
61
+    private $loaded = array();
62 62
 
63
-	/**
64
-	 * Config constructor.
65
-	 *
66
-	 * @param string $type
67
-	 * @param string $file
68
-	 */
69
-	public function __construct( $type, $file ) {
70
-		$this->type = new ConfigType( $type );
71
-		$this->file = $file;
63
+    /**
64
+     * Config constructor.
65
+     *
66
+     * @param string $type
67
+     * @param string $file
68
+     */
69
+    public function __construct( $type, $file ) {
70
+        $this->type = new ConfigType( $type );
71
+        $this->file = $file;
72 72
 
73
-		switch ( $this->type->getValue() ) {
74
-			case ConfigType::PLUGIN:
75
-			case ConfigType::MU_PLUGIN:
76
-				$this->url = plugin_dir_url( $file );
77
-				$this->path = plugin_dir_path( $file );
78
-				$this->slug = dirname( $this->basename = plugin_basename( $file ) );
79
-				break;
80
-			case ConfigType::THEME:
81
-				$this->url = get_stylesheet_directory_uri() . '/';
82
-				$this->path = get_stylesheet_directory() . '/';
83
-				$this->slug = dirname( $this->basename = plugin_basename( $file ) );
84
-				break;
85
-		}
86
-	}
73
+        switch ( $this->type->getValue() ) {
74
+            case ConfigType::PLUGIN:
75
+            case ConfigType::MU_PLUGIN:
76
+                $this->url = plugin_dir_url( $file );
77
+                $this->path = plugin_dir_path( $file );
78
+                $this->slug = dirname( $this->basename = plugin_basename( $file ) );
79
+                break;
80
+            case ConfigType::THEME:
81
+                $this->url = get_stylesheet_directory_uri() . '/';
82
+                $this->path = get_stylesheet_directory() . '/';
83
+                $this->slug = dirname( $this->basename = plugin_basename( $file ) );
84
+                break;
85
+        }
86
+    }
87 87
 
88
-	/**
89
-	 * Load a configuration JSON file from the config folder.
90
-	 *
91
-	 * @param string $filename
92
-	 *
93
-	 * @return array|null
94
-	 */
95
-	public function get_config_json( $filename ) {
96
-		if ( isset( $this->loaded[ $filename ] ) ) {
97
-			return $this->loaded[ $filename ];
98
-		}
88
+    /**
89
+     * Load a configuration JSON file from the config folder.
90
+     *
91
+     * @param string $filename
92
+     *
93
+     * @return array|null
94
+     */
95
+    public function get_config_json( $filename ) {
96
+        if ( isset( $this->loaded[ $filename ] ) ) {
97
+            return $this->loaded[ $filename ];
98
+        }
99 99
 
100
-		$config = $this->path . 'config/' . $filename . '.json';
100
+        $config = $this->path . 'config/' . $filename . '.json';
101 101
 
102
-		if ( ! file_exists( $config ) ) {
103
-			return null;
104
-		}
102
+        if ( ! file_exists( $config ) ) {
103
+            return null;
104
+        }
105 105
 
106
-		$contents = file_get_contents( $config );
106
+        $contents = file_get_contents( $config );
107 107
 
108
-		if ( false === $contents ) {
109
-			return null;
110
-		}
108
+        if ( false === $contents ) {
109
+            return null;
110
+        }
111 111
 
112
-		return $this->loaded[ $filename ] = json_decode( $contents, true );
113
-	}
112
+        return $this->loaded[ $filename ] = json_decode( $contents, true );
113
+    }
114 114
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -66,21 +66,21 @@  discard block
 block discarded – undo
66 66
 	 * @param string $type
67 67
 	 * @param string $file
68 68
 	 */
69
-	public function __construct( $type, $file ) {
70
-		$this->type = new ConfigType( $type );
69
+	public function __construct($type, $file) {
70
+		$this->type = new ConfigType($type);
71 71
 		$this->file = $file;
72 72
 
73
-		switch ( $this->type->getValue() ) {
73
+		switch ($this->type->getValue()) {
74 74
 			case ConfigType::PLUGIN:
75 75
 			case ConfigType::MU_PLUGIN:
76
-				$this->url = plugin_dir_url( $file );
77
-				$this->path = plugin_dir_path( $file );
78
-				$this->slug = dirname( $this->basename = plugin_basename( $file ) );
76
+				$this->url = plugin_dir_url($file);
77
+				$this->path = plugin_dir_path($file);
78
+				$this->slug = dirname($this->basename = plugin_basename($file));
79 79
 				break;
80 80
 			case ConfigType::THEME:
81
-				$this->url = get_stylesheet_directory_uri() . '/';
82
-				$this->path = get_stylesheet_directory() . '/';
83
-				$this->slug = dirname( $this->basename = plugin_basename( $file ) );
81
+				$this->url = get_stylesheet_directory_uri().'/';
82
+				$this->path = get_stylesheet_directory().'/';
83
+				$this->slug = dirname($this->basename = plugin_basename($file));
84 84
 				break;
85 85
 		}
86 86
 	}
@@ -92,23 +92,23 @@  discard block
 block discarded – undo
92 92
 	 *
93 93
 	 * @return array|null
94 94
 	 */
95
-	public function get_config_json( $filename ) {
96
-		if ( isset( $this->loaded[ $filename ] ) ) {
97
-			return $this->loaded[ $filename ];
95
+	public function get_config_json($filename) {
96
+		if (isset($this->loaded[$filename])) {
97
+			return $this->loaded[$filename];
98 98
 		}
99 99
 
100
-		$config = $this->path . 'config/' . $filename . '.json';
100
+		$config = $this->path.'config/'.$filename.'.json';
101 101
 
102
-		if ( ! file_exists( $config ) ) {
102
+		if (!file_exists($config)) {
103 103
 			return null;
104 104
 		}
105 105
 
106
-		$contents = file_get_contents( $config );
106
+		$contents = file_get_contents($config);
107 107
 
108
-		if ( false === $contents ) {
108
+		if (false === $contents) {
109 109
 			return null;
110 110
 		}
111 111
 
112
-		return $this->loaded[ $filename ] = json_decode( $contents, true );
112
+		return $this->loaded[$filename] = json_decode($contents, true);
113 113
 	}
114 114
 }
Please login to merge, or discard this patch.
src/Contract/Assets/Register.php 2 patches
Indentation   +53 added lines, -53 removed lines patch added patch discarded remove patch
@@ -4,57 +4,57 @@
 block discarded – undo
4 4
 use Intraxia\Jaxion\Contract\Core\HasActions;
5 5
 
6 6
 interface Register extends HasActions {
7
-	/**
8
-	 * Enable debug mode for the enqueued assets.
9
-	 *
10
-	 * Debug mode will enqueue unminified versions of the registered assets.
11
-	 * Primarily, this is intended to be used along with WordPress's `SCRIPT_DEBUG`
12
-	 * constant, which enables unminified core assets to be enqueued.
13
-	 *
14
-	 * @param bool $debug
15
-	 */
16
-	public function set_debug( $debug );
17
-
18
-	/**
19
-	 * Provides a method to register new scripts outside of the constructor.
20
-	 *
21
-	 * @param array $script
22
-	 */
23
-	public function register_script( $script );
24
-
25
-	/**
26
-	 * Provides a method to register new styles outside of the constructor.
27
-	 *
28
-	 * @param array $style
29
-	 */
30
-	public function register_style( $style );
31
-
32
-	/**
33
-	 * Enqueues the web & shared scripts on the Register.
34
-	 */
35
-	public function enqueue_web_scripts();
36
-
37
-	/**
38
-	 * Enqueues the web & shared styles on the Register.
39
-	 */
40
-	public function enqueue_web_styles();
41
-
42
-	/**
43
-	 * Enqueues the admin & shared scripts on the Register.
44
-	 *
45
-	 * @param string $hook Passes a string representing the current page.
46
-	 */
47
-	public function enqueue_admin_scripts( $hook );
48
-
49
-	/**
50
-	 * Enqueues the admin & shared styles on the Register.
51
-	 *
52
-	 * @param string $hook Passes a string representing the current page.
53
-	 */
54
-	public function enqueue_admin_styles( $hook );
55
-
56
-	/**
57
-	 * Enqueues the block styles & registers the block.
58
-	 */
59
-	public function register_blocks();
7
+    /**
8
+     * Enable debug mode for the enqueued assets.
9
+     *
10
+     * Debug mode will enqueue unminified versions of the registered assets.
11
+     * Primarily, this is intended to be used along with WordPress's `SCRIPT_DEBUG`
12
+     * constant, which enables unminified core assets to be enqueued.
13
+     *
14
+     * @param bool $debug
15
+     */
16
+    public function set_debug( $debug );
17
+
18
+    /**
19
+     * Provides a method to register new scripts outside of the constructor.
20
+     *
21
+     * @param array $script
22
+     */
23
+    public function register_script( $script );
24
+
25
+    /**
26
+     * Provides a method to register new styles outside of the constructor.
27
+     *
28
+     * @param array $style
29
+     */
30
+    public function register_style( $style );
31
+
32
+    /**
33
+     * Enqueues the web & shared scripts on the Register.
34
+     */
35
+    public function enqueue_web_scripts();
36
+
37
+    /**
38
+     * Enqueues the web & shared styles on the Register.
39
+     */
40
+    public function enqueue_web_styles();
41
+
42
+    /**
43
+     * Enqueues the admin & shared scripts on the Register.
44
+     *
45
+     * @param string $hook Passes a string representing the current page.
46
+     */
47
+    public function enqueue_admin_scripts( $hook );
48
+
49
+    /**
50
+     * Enqueues the admin & shared styles on the Register.
51
+     *
52
+     * @param string $hook Passes a string representing the current page.
53
+     */
54
+    public function enqueue_admin_styles( $hook );
55
+
56
+    /**
57
+     * Enqueues the block styles & registers the block.
58
+     */
59
+    public function register_blocks();
60 60
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -13,21 +13,21 @@  discard block
 block discarded – undo
13 13
 	 *
14 14
 	 * @param bool $debug
15 15
 	 */
16
-	public function set_debug( $debug );
16
+	public function set_debug($debug);
17 17
 
18 18
 	/**
19 19
 	 * Provides a method to register new scripts outside of the constructor.
20 20
 	 *
21 21
 	 * @param array $script
22 22
 	 */
23
-	public function register_script( $script );
23
+	public function register_script($script);
24 24
 
25 25
 	/**
26 26
 	 * Provides a method to register new styles outside of the constructor.
27 27
 	 *
28 28
 	 * @param array $style
29 29
 	 */
30
-	public function register_style( $style );
30
+	public function register_style($style);
31 31
 
32 32
 	/**
33 33
 	 * Enqueues the web & shared scripts on the Register.
@@ -44,14 +44,14 @@  discard block
 block discarded – undo
44 44
 	 *
45 45
 	 * @param string $hook Passes a string representing the current page.
46 46
 	 */
47
-	public function enqueue_admin_scripts( $hook );
47
+	public function enqueue_admin_scripts($hook);
48 48
 
49 49
 	/**
50 50
 	 * Enqueues the admin & shared styles on the Register.
51 51
 	 *
52 52
 	 * @param string $hook Passes a string representing the current page.
53 53
 	 */
54
-	public function enqueue_admin_styles( $hook );
54
+	public function enqueue_admin_styles($hook);
55 55
 
56 56
 	/**
57 57
 	 * Enqueues the block styles & registers the block.
Please login to merge, or discard this patch.
src/Assets/Register.php 2 patches
Spacing   +53 added lines, -53 removed lines patch added patch discarded remove patch
@@ -59,7 +59,7 @@  discard block
 block discarded – undo
59 59
 	 * @param string $url
60 60
 	 * @param string $version
61 61
 	 */
62
-	public function __construct( $url, $version = null ) {
62
+	public function __construct($url, $version = null) {
63 63
 		$this->url     = $url;
64 64
 		$this->version = $version ?: null; // Empty string should remain null.
65 65
 	}
@@ -69,8 +69,8 @@  discard block
 block discarded – undo
69 69
 	 *
70 70
 	 * @param bool $debug
71 71
 	 */
72
-	public function set_debug( $debug ) {
73
-		if ( $debug ) {
72
+	public function set_debug($debug) {
73
+		if ($debug) {
74 74
 			$this->min = '';
75 75
 		} else {
76 76
 			$this->min = '.min';
@@ -82,7 +82,7 @@  discard block
 block discarded – undo
82 82
 	 *
83 83
 	 * @param array $script
84 84
 	 */
85
-	public function register_script( $script ) {
85
+	public function register_script($script) {
86 86
 		$this->scripts[] = $script;
87 87
 	}
88 88
 
@@ -91,7 +91,7 @@  discard block
 block discarded – undo
91 91
 	 *
92 92
 	 * @param array $style
93 93
 	 */
94
-	public function register_style( $style ) {
94
+	public function register_style($style) {
95 95
 		$this->styles[] = $style;
96 96
 	}
97 97
 
@@ -99,9 +99,9 @@  discard block
 block discarded – undo
99 99
 	 * {@inheritDoc}
100 100
 	 */
101 101
 	public function enqueue_web_scripts() {
102
-		foreach ( $this->scripts as $script ) {
103
-			if ( in_array( $script['type'], array( 'web', 'shared' ) ) ) {
104
-				$this->enqueue_script( $script );
102
+		foreach ($this->scripts as $script) {
103
+			if (in_array($script['type'], array('web', 'shared'))) {
104
+				$this->enqueue_script($script);
105 105
 			}
106 106
 		}
107 107
 	}
@@ -110,9 +110,9 @@  discard block
 block discarded – undo
110 110
 	 * {@inheritDoc}
111 111
 	 */
112 112
 	public function enqueue_web_styles() {
113
-		foreach ( $this->styles as $style ) {
114
-			if ( in_array( $style['type'], array( 'web', 'shared' ) ) ) {
115
-				$this->enqueue_style( $style );
113
+		foreach ($this->styles as $style) {
114
+			if (in_array($style['type'], array('web', 'shared'))) {
115
+				$this->enqueue_style($style);
116 116
 			}
117 117
 		}
118 118
 	}
@@ -122,10 +122,10 @@  discard block
 block discarded – undo
122 122
 	 *
123 123
 	 * @param string $hook Passes a string representing the current page.
124 124
 	 */
125
-	public function enqueue_admin_scripts( $hook ) {
126
-		foreach ( $this->scripts as $script ) {
127
-			if ( in_array( $script['type'], array( 'admin', 'shared' ) ) ) {
128
-				$this->enqueue_script( $script, $hook );
125
+	public function enqueue_admin_scripts($hook) {
126
+		foreach ($this->scripts as $script) {
127
+			if (in_array($script['type'], array('admin', 'shared'))) {
128
+				$this->enqueue_script($script, $hook);
129 129
 			}
130 130
 		}
131 131
 	}
@@ -135,10 +135,10 @@  discard block
 block discarded – undo
135 135
 	 *
136 136
 	 * @param string $hook Passes a string representing the current page.
137 137
 	 */
138
-	public function enqueue_admin_styles( $hook ) {
139
-		foreach ( $this->styles as $style ) {
140
-			if ( in_array( $style['type'], array( 'admin', 'shared' ) ) ) {
141
-				$this->enqueue_style( $style, $hook );
138
+	public function enqueue_admin_styles($hook) {
139
+		foreach ($this->styles as $style) {
140
+			if (in_array($style['type'], array('admin', 'shared'))) {
141
+				$this->enqueue_style($style, $hook);
142 142
 			}
143 143
 		}
144 144
 	}
@@ -149,46 +149,46 @@  discard block
 block discarded – undo
149 149
 	public function register_blocks() {
150 150
 		$blocks = array();
151 151
 
152
-		foreach ( $this->styles as $style ) {
153
-			if ( in_array( $style['type'], array( 'block' ) ) ) {
152
+		foreach ($this->styles as $style) {
153
+			if (in_array($style['type'], array('block'))) {
154 154
 				wp_register_style(
155 155
 					$style['handle'],
156
-					$this->url . $style['src'] . $this->min . '.css',
157
-					isset( $style['deps'] ) ? $style['deps'] : array(),
156
+					$this->url.$style['src'].$this->min.'.css',
157
+					isset($style['deps']) ? $style['deps'] : array(),
158 158
 					$this->version,
159
-					isset( $style['media'] ) ? $style['media'] : 'all'
159
+					isset($style['media']) ? $style['media'] : 'all'
160 160
 				);
161 161
 
162
-				if ( ! isset( $blocks[ $style['block'] ] ) ) {
163
-					$blocks[ $style['block'] ] = array();
162
+				if (!isset($blocks[$style['block']])) {
163
+					$blocks[$style['block']] = array();
164 164
 				}
165 165
 
166
-				$blocks[ $style['block'] ]['editor_style'] = $style['handle'];
166
+				$blocks[$style['block']]['editor_style'] = $style['handle'];
167 167
 			}
168 168
 		}
169 169
 
170
-		foreach ( $this->scripts as $script ) {
171
-			if ( in_array( $script['type'], array( 'block' ) ) ) {
170
+		foreach ($this->scripts as $script) {
171
+			if (in_array($script['type'], array('block'))) {
172 172
 				wp_register_script(
173 173
 					$script['handle'],
174
-					$this->url . $script['src'] . $this->min . '.js',
175
-					isset( $script['deps'] ) ? $script['deps'] : array(),
174
+					$this->url.$script['src'].$this->min.'.js',
175
+					isset($script['deps']) ? $script['deps'] : array(),
176 176
 					$this->version,
177
-					isset( $script['footer'] ) ? $script['footer'] : false
177
+					isset($script['footer']) ? $script['footer'] : false
178 178
 				);
179 179
 
180
-				$this->localize_script( $script );
180
+				$this->localize_script($script);
181 181
 
182
-				if ( ! isset( $blocks[ $script['block'] ] ) ) {
183
-					$blocks[ $script['block'] ] = array();
182
+				if (!isset($blocks[$script['block']])) {
183
+					$blocks[$script['block']] = array();
184 184
 				}
185 185
 
186
-				$blocks[ $script['block'] ]['editor_script'] = $script['handle'];
186
+				$blocks[$script['block']]['editor_script'] = $script['handle'];
187 187
 			}
188 188
 		}
189 189
 
190
-		foreach ( $blocks as $slug => $opts ) {
191
-			register_block_type( $slug, $opts );
190
+		foreach ($blocks as $slug => $opts) {
191
+			register_block_type($slug, $opts);
192 192
 		}
193 193
 	}
194 194
 
@@ -228,17 +228,17 @@  discard block
 block discarded – undo
228 228
 	 * @param array  $script The script attachment callback.
229 229
 	 * @param string $hook   The location hook. Only passed on admin side.
230 230
 	 */
231
-	protected function enqueue_script( $script, $hook = null ) {
232
-		if ( $script['condition']( $hook ) ) {
231
+	protected function enqueue_script($script, $hook = null) {
232
+		if ($script['condition']($hook)) {
233 233
 			wp_enqueue_script(
234 234
 				$script['handle'],
235
-				$this->url . $script['src'] . $this->min . '.js',
236
-				isset( $script['deps'] ) ? $script['deps'] : array(),
235
+				$this->url.$script['src'].$this->min.'.js',
236
+				isset($script['deps']) ? $script['deps'] : array(),
237 237
 				$this->version,
238
-				isset( $script['footer'] ) ? $script['footer'] : false
238
+				isset($script['footer']) ? $script['footer'] : false
239 239
 			);
240 240
 
241
-			$this->localize_script( $script );
241
+			$this->localize_script($script);
242 242
 		}
243 243
 	}
244 244
 
@@ -248,14 +248,14 @@  discard block
 block discarded – undo
248 248
 	 * @param array  $style The style attachment callback.
249 249
 	 * @param string $hook  The location hook.
250 250
 	 */
251
-	protected function enqueue_style( $style, $hook = null ) {
252
-		if ( $style['condition']( $hook ) ) {
251
+	protected function enqueue_style($style, $hook = null) {
252
+		if ($style['condition']($hook)) {
253 253
 			wp_enqueue_style(
254 254
 				$style['handle'],
255
-				$this->url . $style['src'] . $this->min . '.css',
256
-				isset( $style['deps'] ) ? $style['deps'] : array(),
255
+				$this->url.$style['src'].$this->min.'.css',
256
+				isset($style['deps']) ? $style['deps'] : array(),
257 257
 				$this->version,
258
-				isset( $style['media'] ) ? $style['media'] : 'all'
258
+				isset($style['media']) ? $style['media'] : 'all'
259 259
 			);
260 260
 		}
261 261
 	}
@@ -265,13 +265,13 @@  discard block
 block discarded – undo
265 265
 	 *
266 266
 	 * @param  array $script  Script defintion.
267 267
 	 */
268
-	protected function localize_script( $script ) {
269
-		if ( ! isset( $script['localize'] ) ) {
268
+	protected function localize_script($script) {
269
+		if (!isset($script['localize'])) {
270 270
 			return;
271 271
 		}
272 272
 
273
-		if ( is_callable( $script['localize'] ) ) { // @todo make all properties callables
274
-			$script['localize'] = call_user_func( $script['localize'] );
273
+		if (is_callable($script['localize'])) { // @todo make all properties callables
274
+			$script['localize'] = call_user_func($script['localize']);
275 275
 		}
276 276
 
277 277
 		wp_localize_script(
Please login to merge, or discard this patch.
Indentation   +240 added lines, -240 removed lines patch added patch discarded remove patch
@@ -12,272 +12,272 @@
 block discarded – undo
12 12
  * @subpackage Register
13 13
  */
14 14
 class Register implements RegisterContract {
15
-	/**
16
-	 * Minification string for enqueued assets.
17
-	 *
18
-	 * @var string
19
-	 */
20
-	private $min = '.min';
15
+    /**
16
+     * Minification string for enqueued assets.
17
+     *
18
+     * @var string
19
+     */
20
+    private $min = '.min';
21 21
 
22
-	/**
23
-	 * Url to the plugin directory.
24
-	 *
25
-	 * @var string
26
-	 */
27
-	protected $url;
22
+    /**
23
+     * Url to the plugin directory.
24
+     *
25
+     * @var string
26
+     */
27
+    protected $url;
28 28
 
29
-	/**
30
-	 * Script/plugin version.
31
-	 *
32
-	 * @var string
33
-	 */
34
-	protected $version;
29
+    /**
30
+     * Script/plugin version.
31
+     *
32
+     * @var string
33
+     */
34
+    protected $version;
35 35
 
36
-	/**
37
-	 * Array of script definition arrays.
38
-	 *
39
-	 * @var array
40
-	 */
41
-	private $scripts = array();
36
+    /**
37
+     * Array of script definition arrays.
38
+     *
39
+     * @var array
40
+     */
41
+    private $scripts = array();
42 42
 
43
-	/**
44
-	 * Array of style definition arrays.
45
-	 *
46
-	 * @var array
47
-	 */
48
-	private $styles = array();
43
+    /**
44
+     * Array of style definition arrays.
45
+     *
46
+     * @var array
47
+     */
48
+    private $styles = array();
49 49
 
50
-	/**
51
-	 * Instantiates a new instance of the Register class.
52
-	 *
53
-	 * The URL param should be relative to the plugin directory. The URL
54
-	 * form should always end with a '/'. All asset location definitions
55
-	 * should not begin with a slash and should be relative to the plugin's
56
-	 * root directory. The URL provided by default from the Application
57
-	 * class is compatible.
58
-	 *
59
-	 * @param string $url
60
-	 * @param string $version
61
-	 */
62
-	public function __construct( $url, $version = null ) {
63
-		$this->url     = $url;
64
-		$this->version = $version ?: null; // Empty string should remain null.
65
-	}
50
+    /**
51
+     * Instantiates a new instance of the Register class.
52
+     *
53
+     * The URL param should be relative to the plugin directory. The URL
54
+     * form should always end with a '/'. All asset location definitions
55
+     * should not begin with a slash and should be relative to the plugin's
56
+     * root directory. The URL provided by default from the Application
57
+     * class is compatible.
58
+     *
59
+     * @param string $url
60
+     * @param string $version
61
+     */
62
+    public function __construct( $url, $version = null ) {
63
+        $this->url     = $url;
64
+        $this->version = $version ?: null; // Empty string should remain null.
65
+    }
66 66
 
67
-	/**
68
-	 * {@inheritdoc}
69
-	 *
70
-	 * @param bool $debug
71
-	 */
72
-	public function set_debug( $debug ) {
73
-		if ( $debug ) {
74
-			$this->min = '';
75
-		} else {
76
-			$this->min = '.min';
77
-		}
78
-	}
67
+    /**
68
+     * {@inheritdoc}
69
+     *
70
+     * @param bool $debug
71
+     */
72
+    public function set_debug( $debug ) {
73
+        if ( $debug ) {
74
+            $this->min = '';
75
+        } else {
76
+            $this->min = '.min';
77
+        }
78
+    }
79 79
 
80
-	/**
81
-	 * {@inheritdoc}
82
-	 *
83
-	 * @param array $script
84
-	 */
85
-	public function register_script( $script ) {
86
-		$this->scripts[] = $script;
87
-	}
80
+    /**
81
+     * {@inheritdoc}
82
+     *
83
+     * @param array $script
84
+     */
85
+    public function register_script( $script ) {
86
+        $this->scripts[] = $script;
87
+    }
88 88
 
89
-	/**
90
-	 * {@inheritdoc}
91
-	 *
92
-	 * @param array $style
93
-	 */
94
-	public function register_style( $style ) {
95
-		$this->styles[] = $style;
96
-	}
89
+    /**
90
+     * {@inheritdoc}
91
+     *
92
+     * @param array $style
93
+     */
94
+    public function register_style( $style ) {
95
+        $this->styles[] = $style;
96
+    }
97 97
 
98
-	/**
99
-	 * {@inheritDoc}
100
-	 */
101
-	public function enqueue_web_scripts() {
102
-		foreach ( $this->scripts as $script ) {
103
-			if ( in_array( $script['type'], array( 'web', 'shared' ) ) ) {
104
-				$this->enqueue_script( $script );
105
-			}
106
-		}
107
-	}
98
+    /**
99
+     * {@inheritDoc}
100
+     */
101
+    public function enqueue_web_scripts() {
102
+        foreach ( $this->scripts as $script ) {
103
+            if ( in_array( $script['type'], array( 'web', 'shared' ) ) ) {
104
+                $this->enqueue_script( $script );
105
+            }
106
+        }
107
+    }
108 108
 
109
-	/**
110
-	 * {@inheritDoc}
111
-	 */
112
-	public function enqueue_web_styles() {
113
-		foreach ( $this->styles as $style ) {
114
-			if ( in_array( $style['type'], array( 'web', 'shared' ) ) ) {
115
-				$this->enqueue_style( $style );
116
-			}
117
-		}
118
-	}
109
+    /**
110
+     * {@inheritDoc}
111
+     */
112
+    public function enqueue_web_styles() {
113
+        foreach ( $this->styles as $style ) {
114
+            if ( in_array( $style['type'], array( 'web', 'shared' ) ) ) {
115
+                $this->enqueue_style( $style );
116
+            }
117
+        }
118
+    }
119 119
 
120
-	/**
121
-	 * {@inheritDoc}
122
-	 *
123
-	 * @param string $hook Passes a string representing the current page.
124
-	 */
125
-	public function enqueue_admin_scripts( $hook ) {
126
-		foreach ( $this->scripts as $script ) {
127
-			if ( in_array( $script['type'], array( 'admin', 'shared' ) ) ) {
128
-				$this->enqueue_script( $script, $hook );
129
-			}
130
-		}
131
-	}
120
+    /**
121
+     * {@inheritDoc}
122
+     *
123
+     * @param string $hook Passes a string representing the current page.
124
+     */
125
+    public function enqueue_admin_scripts( $hook ) {
126
+        foreach ( $this->scripts as $script ) {
127
+            if ( in_array( $script['type'], array( 'admin', 'shared' ) ) ) {
128
+                $this->enqueue_script( $script, $hook );
129
+            }
130
+        }
131
+    }
132 132
 
133
-	/**
134
-	 * {@inheritDoc}
135
-	 *
136
-	 * @param string $hook Passes a string representing the current page.
137
-	 */
138
-	public function enqueue_admin_styles( $hook ) {
139
-		foreach ( $this->styles as $style ) {
140
-			if ( in_array( $style['type'], array( 'admin', 'shared' ) ) ) {
141
-				$this->enqueue_style( $style, $hook );
142
-			}
143
-		}
144
-	}
133
+    /**
134
+     * {@inheritDoc}
135
+     *
136
+     * @param string $hook Passes a string representing the current page.
137
+     */
138
+    public function enqueue_admin_styles( $hook ) {
139
+        foreach ( $this->styles as $style ) {
140
+            if ( in_array( $style['type'], array( 'admin', 'shared' ) ) ) {
141
+                $this->enqueue_style( $style, $hook );
142
+            }
143
+        }
144
+    }
145 145
 
146
-	/**
147
-	 * {@inheritDoc}
148
-	 */
149
-	public function register_blocks() {
150
-		$blocks = array();
146
+    /**
147
+     * {@inheritDoc}
148
+     */
149
+    public function register_blocks() {
150
+        $blocks = array();
151 151
 
152
-		foreach ( $this->styles as $style ) {
153
-			if ( in_array( $style['type'], array( 'block' ) ) ) {
154
-				wp_register_style(
155
-					$style['handle'],
156
-					$this->url . $style['src'] . $this->min . '.css',
157
-					isset( $style['deps'] ) ? $style['deps'] : array(),
158
-					$this->version,
159
-					isset( $style['media'] ) ? $style['media'] : 'all'
160
-				);
152
+        foreach ( $this->styles as $style ) {
153
+            if ( in_array( $style['type'], array( 'block' ) ) ) {
154
+                wp_register_style(
155
+                    $style['handle'],
156
+                    $this->url . $style['src'] . $this->min . '.css',
157
+                    isset( $style['deps'] ) ? $style['deps'] : array(),
158
+                    $this->version,
159
+                    isset( $style['media'] ) ? $style['media'] : 'all'
160
+                );
161 161
 
162
-				if ( ! isset( $blocks[ $style['block'] ] ) ) {
163
-					$blocks[ $style['block'] ] = array();
164
-				}
162
+                if ( ! isset( $blocks[ $style['block'] ] ) ) {
163
+                    $blocks[ $style['block'] ] = array();
164
+                }
165 165
 
166
-				$blocks[ $style['block'] ]['editor_style'] = $style['handle'];
167
-			}
168
-		}
166
+                $blocks[ $style['block'] ]['editor_style'] = $style['handle'];
167
+            }
168
+        }
169 169
 
170
-		foreach ( $this->scripts as $script ) {
171
-			if ( in_array( $script['type'], array( 'block' ) ) ) {
172
-				wp_register_script(
173
-					$script['handle'],
174
-					$this->url . $script['src'] . $this->min . '.js',
175
-					isset( $script['deps'] ) ? $script['deps'] : array(),
176
-					$this->version,
177
-					isset( $script['footer'] ) ? $script['footer'] : false
178
-				);
170
+        foreach ( $this->scripts as $script ) {
171
+            if ( in_array( $script['type'], array( 'block' ) ) ) {
172
+                wp_register_script(
173
+                    $script['handle'],
174
+                    $this->url . $script['src'] . $this->min . '.js',
175
+                    isset( $script['deps'] ) ? $script['deps'] : array(),
176
+                    $this->version,
177
+                    isset( $script['footer'] ) ? $script['footer'] : false
178
+                );
179 179
 
180
-				$this->localize_script( $script );
180
+                $this->localize_script( $script );
181 181
 
182
-				if ( ! isset( $blocks[ $script['block'] ] ) ) {
183
-					$blocks[ $script['block'] ] = array();
184
-				}
182
+                if ( ! isset( $blocks[ $script['block'] ] ) ) {
183
+                    $blocks[ $script['block'] ] = array();
184
+                }
185 185
 
186
-				$blocks[ $script['block'] ]['editor_script'] = $script['handle'];
187
-			}
188
-		}
186
+                $blocks[ $script['block'] ]['editor_script'] = $script['handle'];
187
+            }
188
+        }
189 189
 
190
-		foreach ( $blocks as $slug => $opts ) {
191
-			register_block_type( $slug, $opts );
192
-		}
193
-	}
190
+        foreach ( $blocks as $slug => $opts ) {
191
+            register_block_type( $slug, $opts );
192
+        }
193
+    }
194 194
 
195
-	/**
196
-	 * {@inheritDoc}
197
-	 *
198
-	 * @return array[]
199
-	 */
200
-	public function action_hooks() {
201
-		return array(
202
-			array(
203
-				'hook'   => 'wp_enqueue_scripts',
204
-				'method' => 'enqueue_web_scripts',
205
-			),
206
-			array(
207
-				'hook'   => 'wp_enqueue_scripts',
208
-				'method' => 'enqueue_web_styles',
209
-			),
210
-			array(
211
-				'hook'   => 'admin_enqueue_scripts',
212
-				'method' => 'enqueue_admin_scripts',
213
-			),
214
-			array(
215
-				'hook'   => 'admin_enqueue_scripts',
216
-				'method' => 'enqueue_admin_styles',
217
-			),
218
-			array(
219
-				'hook'   => 'init',
220
-				'method' => 'register_blocks',
221
-			),
222
-		);
223
-	}
195
+    /**
196
+     * {@inheritDoc}
197
+     *
198
+     * @return array[]
199
+     */
200
+    public function action_hooks() {
201
+        return array(
202
+            array(
203
+                'hook'   => 'wp_enqueue_scripts',
204
+                'method' => 'enqueue_web_scripts',
205
+            ),
206
+            array(
207
+                'hook'   => 'wp_enqueue_scripts',
208
+                'method' => 'enqueue_web_styles',
209
+            ),
210
+            array(
211
+                'hook'   => 'admin_enqueue_scripts',
212
+                'method' => 'enqueue_admin_scripts',
213
+            ),
214
+            array(
215
+                'hook'   => 'admin_enqueue_scripts',
216
+                'method' => 'enqueue_admin_styles',
217
+            ),
218
+            array(
219
+                'hook'   => 'init',
220
+                'method' => 'register_blocks',
221
+            ),
222
+        );
223
+    }
224 224
 
225
-	/**
226
-	 * Enqueues an individual script if the style's condition is met.
227
-	 *
228
-	 * @param array  $script The script attachment callback.
229
-	 * @param string $hook   The location hook. Only passed on admin side.
230
-	 */
231
-	protected function enqueue_script( $script, $hook = null ) {
232
-		if ( $script['condition']( $hook ) ) {
233
-			wp_enqueue_script(
234
-				$script['handle'],
235
-				$this->url . $script['src'] . $this->min . '.js',
236
-				isset( $script['deps'] ) ? $script['deps'] : array(),
237
-				$this->version,
238
-				isset( $script['footer'] ) ? $script['footer'] : false
239
-			);
225
+    /**
226
+     * Enqueues an individual script if the style's condition is met.
227
+     *
228
+     * @param array  $script The script attachment callback.
229
+     * @param string $hook   The location hook. Only passed on admin side.
230
+     */
231
+    protected function enqueue_script( $script, $hook = null ) {
232
+        if ( $script['condition']( $hook ) ) {
233
+            wp_enqueue_script(
234
+                $script['handle'],
235
+                $this->url . $script['src'] . $this->min . '.js',
236
+                isset( $script['deps'] ) ? $script['deps'] : array(),
237
+                $this->version,
238
+                isset( $script['footer'] ) ? $script['footer'] : false
239
+            );
240 240
 
241
-			$this->localize_script( $script );
242
-		}
243
-	}
241
+            $this->localize_script( $script );
242
+        }
243
+    }
244 244
 
245
-	/**
246
-	 * Enqueues an individual stylesheet if the style's condition is met.
247
-	 *
248
-	 * @param array  $style The style attachment callback.
249
-	 * @param string $hook  The location hook.
250
-	 */
251
-	protected function enqueue_style( $style, $hook = null ) {
252
-		if ( $style['condition']( $hook ) ) {
253
-			wp_enqueue_style(
254
-				$style['handle'],
255
-				$this->url . $style['src'] . $this->min . '.css',
256
-				isset( $style['deps'] ) ? $style['deps'] : array(),
257
-				$this->version,
258
-				isset( $style['media'] ) ? $style['media'] : 'all'
259
-			);
260
-		}
261
-	}
245
+    /**
246
+     * Enqueues an individual stylesheet if the style's condition is met.
247
+     *
248
+     * @param array  $style The style attachment callback.
249
+     * @param string $hook  The location hook.
250
+     */
251
+    protected function enqueue_style( $style, $hook = null ) {
252
+        if ( $style['condition']( $hook ) ) {
253
+            wp_enqueue_style(
254
+                $style['handle'],
255
+                $this->url . $style['src'] . $this->min . '.css',
256
+                isset( $style['deps'] ) ? $style['deps'] : array(),
257
+                $this->version,
258
+                isset( $style['media'] ) ? $style['media'] : 'all'
259
+            );
260
+        }
261
+    }
262 262
 
263
-	/**
264
-	 * Registers the localization of the provided script.
265
-	 *
266
-	 * @param  array $script  Script defintion.
267
-	 */
268
-	protected function localize_script( $script ) {
269
-		if ( ! isset( $script['localize'] ) ) {
270
-			return;
271
-		}
263
+    /**
264
+     * Registers the localization of the provided script.
265
+     *
266
+     * @param  array $script  Script defintion.
267
+     */
268
+    protected function localize_script( $script ) {
269
+        if ( ! isset( $script['localize'] ) ) {
270
+            return;
271
+        }
272 272
 
273
-		if ( is_callable( $script['localize'] ) ) { // @todo make all properties callables
274
-			$script['localize'] = call_user_func( $script['localize'] );
275
-		}
273
+        if ( is_callable( $script['localize'] ) ) { // @todo make all properties callables
274
+            $script['localize'] = call_user_func( $script['localize'] );
275
+        }
276 276
 
277
-		wp_localize_script(
278
-			$script['handle'],
279
-			$script['localize']['name'],
280
-			$script['localize']['data']
281
-		);
282
-	}
277
+        wp_localize_script(
278
+            $script['handle'],
279
+            $script['localize']['name'],
280
+            $script['localize']['data']
281
+        );
282
+    }
283 283
 }
Please login to merge, or discard this patch.
src/Axolotl/Model.php 2 patches
Indentation   +734 added lines, -734 removed lines patch added patch discarded remove patch
@@ -22,738 +22,738 @@
 block discarded – undo
22 22
  * @since      0.1.0
23 23
  */
24 24
 abstract class Model implements Serializes {
25
-	/**
26
-	 * Table attribute key.
27
-	 */
28
-	const TABLE_KEY = '@@table';
29
-
30
-	/**
31
-	 * Object attribute key.
32
-	 */
33
-	const OBJECT_KEY = '@@object';
34
-
35
-	/**
36
-	 * Memoized values for class methods.
37
-	 *
38
-	 * @var array
39
-	 */
40
-	private static $memo = array();
41
-
42
-	/**
43
-	 * Model attributes.
44
-	 *
45
-	 * @var array
46
-	 */
47
-	private $attributes = array(
48
-		self::TABLE_KEY  => array(),
49
-		self::OBJECT_KEY => null,
50
-	);
51
-
52
-	/**
53
-	 * Model's original attributes.
54
-	 *
55
-	 * @var array
56
-	 */
57
-	private $original = array(
58
-		self::TABLE_KEY  => array(),
59
-		self::OBJECT_KEY => null,
60
-	);
61
-
62
-	/**
63
-	 * Default attribute values.
64
-	 *
65
-	 * @var array
66
-	 */
67
-	protected $defaults = array();
68
-
69
-	/**
70
-	 * Properties which are allowed to be set on the model.
71
-	 *
72
-	 * If this array is empty, any attributes can be set on the model.
73
-	 *
74
-	 * @var string[]
75
-	 */
76
-	protected $fillable = array();
77
-
78
-	/**
79
-	 * Properties which cannot be automatically filled on the model.
80
-	 *
81
-	 * If the model is unguarded, these properties can be filled.
82
-	 *
83
-	 * @var array
84
-	 */
85
-	protected $guarded = array();
86
-
87
-	/**
88
-	 * Properties which should not be serialized.
89
-	 *
90
-	 * @var array
91
-	 */
92
-	protected $hidden = array();
93
-
94
-	/**
95
-	 * Properties which should be serialized.
96
-	 *
97
-	 * @var array
98
-	 */
99
-	protected $visible = array();
100
-
101
-	/**
102
-	 * Whether the model's properties are guarded.
103
-	 *
104
-	 * When false, allows guarded properties to be filled.
105
-	 *
106
-	 * @var bool
107
-	 */
108
-	protected $is_guarded = true;
109
-
110
-	/**
111
-	 * Constructs a new model with provided attributes.
112
-	 *
113
-	 * If self::OBJECT_KEY is passed as one of the attributes, the underlying post
114
-	 * will be overwritten.
115
-	 *
116
-	 * @param array <string, mixed> $attributes
117
-	 */
118
-	public function __construct( array $attributes = array() ) {
119
-		$this->maybe_boot();
120
-		$this->sync_original();
121
-
122
-		if ( $this->uses_wp_object() ) {
123
-			$this->create_wp_object();
124
-		}
125
-
126
-		$this->unguard();
127
-		$this->refresh( $attributes );
128
-		$this->reguard();
129
-	}
130
-
131
-	/**
132
-	 * Refreshes the model's current attributes with the provided array.
133
-	 *
134
-	 * The model's attributes will match what was provided in the array,
135
-	 * and any attributes not passed
136
-	 *
137
-	 * @param array $attributes
138
-	 *
139
-	 * @return $this
140
-	 */
141
-	public function refresh( array $attributes ) {
142
-		$this->clear();
143
-
144
-		return $this->merge( $attributes );
145
-	}
146
-
147
-	/**
148
-	 * Merges the provided attributes with the provided array.
149
-	 *
150
-	 * @param array $attributes
151
-	 *
152
-	 * @return $this
153
-	 */
154
-	public function merge( array $attributes ) {
155
-		foreach ( $attributes as $name => $value ) {
156
-			$this->set_attribute( $name, $value );
157
-		}
158
-
159
-		return $this;
160
-	}
161
-
162
-	/**
163
-	 * Get the model's table attributes.
164
-	 *
165
-	 * Returns the array of for the model that will either need to be
166
-	 * saved in postmeta or a separate table.
167
-	 *
168
-	 * @return array
169
-	 */
170
-	public function get_table_attributes() {
171
-		return $this->attributes[ self::TABLE_KEY ];
172
-	}
173
-
174
-	/**
175
-	 * Get the model's original attributes.
176
-	 *
177
-	 * @return array
178
-	 */
179
-	public function get_original_table_attributes() {
180
-		return $this->original[ self::TABLE_KEY ];
181
-	}
182
-
183
-	/**
184
-	 * Retrieve an array of the attributes on the model
185
-	 * that have changed compared to the model's
186
-	 * original data.
187
-	 *
188
-	 * @return array
189
-	 */
190
-	public function get_changed_table_attributes() {
191
-		$changed = array();
192
-
193
-		foreach ( $this->get_table_attributes() as $key => $value ) {
194
-			if ( $value !==
195
-				 $this->get_original_attribute( $key )
196
-			) {
197
-				$changed[ $key ] = $value;
198
-			}
199
-		}
200
-
201
-		return $changed;
202
-	}
203
-
204
-	/**
205
-	 * Get the model's underlying post.
206
-	 *
207
-	 * Returns the underlying WP_Post object for the model, representing
208
-	 * the data that will be save in the wp_posts table.
209
-	 *
210
-	 * @return false|WP_Post|WP_Term
211
-	 */
212
-	public function get_underlying_wp_object() {
213
-		if ( isset( $this->attributes[ self::OBJECT_KEY ] ) ) {
214
-			return $this->attributes[ self::OBJECT_KEY ];
215
-		}
216
-
217
-		return false;
218
-	}
219
-
220
-	/**
221
-	 * Get the model's original underlying post.
222
-	 *
223
-	 * @return WP_Post
224
-	 */
225
-	public function get_original_underlying_wp_object() {
226
-		return $this->original[ self::OBJECT_KEY ];
227
-	}
228
-
229
-	/**
230
-	 * Get the model attributes on the WordPress object
231
-	 * that have changed compared to the model's
232
-	 * original attributes.
233
-	 *
234
-	 * @return array
235
-	 */
236
-	public function get_changed_wp_object_attributes() {
237
-		$changed = array();
238
-
239
-		foreach ( $this->get_wp_object_keys() as $key ) {
240
-			if ( $this->get_attribute( $key ) !==
241
-				 $this->get_original_attribute( $key )
242
-			) {
243
-				$changed[ $key ] = $this->get_attribute( $key );
244
-			}
245
-		}
246
-
247
-		return $changed;
248
-	}
249
-
250
-	/**
251
-	 * Magic __set method.
252
-	 *
253
-	 * Passes the name and value to set_attribute, which is where the magic happens.
254
-	 *
255
-	 * @param string $name
256
-	 * @param mixed  $value
257
-	 */
258
-	public function __set( $name, $value ) {
259
-		$this->set_attribute( $name, $value );
260
-	}
261
-
262
-	/**
263
-	 * Sets the model attributes.
264
-	 *
265
-	 * Checks whether the model attribute can be set, check if it
266
-	 * maps to the WP_Post property, otherwise, assigns it to the
267
-	 * table attribute array.
268
-	 *
269
-	 * @param string $name
270
-	 * @param mixed  $value
271
-	 *
272
-	 * @return $this
273
-	 *
274
-	 * @throws GuardedPropertyException
275
-	 */
276
-	public function set_attribute( $name, $value ) {
277
-		if ( self::OBJECT_KEY === $name ) {
278
-			return $this->override_wp_object( $value );
279
-		}
280
-
281
-		if ( self::TABLE_KEY === $name ) {
282
-			return $this->override_table( $value );
283
-		}
284
-
285
-		if ( ! $this->is_fillable( $name ) ) {
286
-			throw new GuardedPropertyException( $name );
287
-		}
288
-
289
-		if ( $method = $this->has_map_method( $name ) ) {
290
-			$this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()} = $value;
291
-		} else {
292
-			$this->attributes[ self::TABLE_KEY ][ $name ] = $value;
293
-		}
294
-
295
-		return $this;
296
-	}
297
-
298
-	/**
299
-	 * Retrieves all the attribute keys for the model.
300
-	 *
301
-	 * @return array
302
-	 */
303
-	public function get_attribute_keys() {
304
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
305
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
306
-		}
307
-
308
-		return self::$memo[ get_called_class() ][ __METHOD__ ]
309
-			= array_merge(
310
-				$this->fillable,
311
-				$this->guarded,
312
-				$this->get_compute_methods()
313
-			);
314
-	}
315
-
316
-	/**
317
-	 * Retrieves the attribute keys that aren't mapped to a post.
318
-	 *
319
-	 * @return array
320
-	 */
321
-	public function get_table_keys() {
322
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
323
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
324
-		}
325
-
326
-		$keys = array();
327
-
328
-		foreach ( $this->get_attribute_keys() as $key ) {
329
-			if ( ! $this->has_map_method( $key ) &&
330
-				 ! $this->has_compute_method( $key )
331
-			) {
332
-				$keys[] = $key;
333
-			}
334
-		}
335
-
336
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
337
-	}
338
-
339
-	/**
340
-	 * Retrieves the attribute keys that are mapped to a post.
341
-	 *
342
-	 * @return array
343
-	 */
344
-	public function get_wp_object_keys() {
345
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
346
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
347
-		}
348
-
349
-		$keys = array();
350
-
351
-		foreach ( $this->get_attribute_keys() as $key ) {
352
-			if ( $this->has_map_method( $key ) ) {
353
-				$keys[] = $key;
354
-			}
355
-		}
356
-
357
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
358
-	}
359
-
360
-	/**
361
-	 * Returns the model's keys that are computed at call time.
362
-	 *
363
-	 * @return array
364
-	 */
365
-	public function get_computed_keys() {
366
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
367
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
368
-		}
369
-
370
-		$keys = array();
371
-
372
-		foreach ( $this->get_attribute_keys() as $key ) {
373
-			if ( $this->has_compute_method( $key ) ) {
374
-				$keys[] = $key;
375
-			}
376
-		}
377
-
378
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
379
-	}
380
-
381
-	/**
382
-	 * Serializes the model's public data into an array.
383
-	 *
384
-	 * @return array
385
-	 */
386
-	public function serialize() {
387
-		$attributes = array();
388
-
389
-		if ( $this->visible ) {
390
-			// If visible attributes are set, we'll only reveal those.
391
-			foreach ( $this->visible as $key ) {
392
-				$attributes[ $key ] = $this->get_attribute( $key );
393
-			}
394
-		} elseif ( $this->hidden ) {
395
-			// If hidden attributes are set, we'll grab everything and hide those.
396
-			foreach ( $this->get_attribute_keys() as $key ) {
397
-				if ( ! in_array( $key, $this->hidden ) ) {
398
-					$attributes[ $key ] = $this->get_attribute( $key );
399
-				}
400
-			}
401
-		} else {
402
-			// If nothing is hidden/visible, we'll grab and reveal everything.
403
-			foreach ( $this->get_attribute_keys() as $key ) {
404
-				$attributes[ $key ] = $this->get_attribute( $key );
405
-			}
406
-		}
407
-
408
-		return array_map( function ( $attribute ) {
409
-			if ( $attribute instanceof Serializes ) {
410
-				return $attribute->serialize();
411
-			}
412
-
413
-			return $attribute;
414
-		}, $attributes );
415
-	}
416
-
417
-	/**
418
-	 * Syncs the current attributes to the model's original.
419
-	 *
420
-	 * @return $this
421
-	 */
422
-	public function sync_original() {
423
-		$this->original = $this->attributes;
424
-
425
-		if ( $this->attributes[ self::OBJECT_KEY ] ) {
426
-			$this->original[ self::OBJECT_KEY ] = clone $this->attributes[ self::OBJECT_KEY ];
427
-		}
428
-
429
-		foreach ( $this->original[ self::TABLE_KEY ] as $key => $item ) {
430
-			if ( is_object( $item ) ) {
431
-				$this->original[ $key ] = clone $item;
432
-			}
433
-		}
434
-
435
-		return $this;
436
-	}
437
-
438
-	/**
439
-	 * Checks if a given attribute is mass-fillable.
440
-	 *
441
-	 * Returns true if the attribute can be filled, false if it can't.
442
-	 *
443
-	 * @param string $name
444
-	 *
445
-	 * @return bool
446
-	 */
447
-	private function is_fillable( $name ) {
448
-		// If this model isn't guarded, everything is fillable.
449
-		if ( ! $this->is_guarded ) {
450
-			return true;
451
-		}
452
-
453
-		// If it's in the fillable array, then it's fillable.
454
-		if ( in_array( $name, $this->fillable ) ) {
455
-			return true;
456
-		}
457
-
458
-		// If it's explicitly guarded, then it's not fillable.
459
-		if ( in_array( $name, $this->guarded ) ) {
460
-			return false;
461
-		}
462
-
463
-		// If fillable hasn't been defined, then everything else fillable.
464
-		return ! $this->fillable;
465
-	}
466
-
467
-	/**
468
-	 * Overrides the current WordPress object with a provided one.
469
-	 *
470
-	 * Resets the post's default values and stores it in the attributes.
471
-	 *
472
-	 * @param WP_Post|WP_Term|null $value
473
-	 *
474
-	 * @return $this
475
-	 */
476
-	private function override_wp_object( $value ) {
477
-		if ( is_object( $value ) ) {
478
-			$this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $value );
479
-		} else {
480
-			$this->attributes[ self::OBJECT_KEY ] = null;
481
-
482
-			if ( $this->uses_wp_object() ) {
483
-				$this->create_wp_object();
484
-			}
485
-		}
486
-
487
-		return $this;
488
-	}
489
-
490
-	/**
491
-	 * Overrides the current table attributes array with a provided one.
492
-	 *
493
-	 * @param array $value
494
-	 *
495
-	 * @return $this
496
-	 */
497
-	private function override_table( array $value ) {
498
-		$this->attributes[ self::TABLE_KEY ] = $value;
499
-
500
-		return $this;
501
-	}
502
-
503
-	/**
504
-	 * Create and set with a new blank post.
505
-	 *
506
-	 * Creates a new WP_Post object, assigns it the default attributes,
507
-	 * and stores it in the attributes.
508
-	 *
509
-	 * @throws LogicException
510
-	 */
511
-	private function create_wp_object() {
512
-		switch ( true ) {
513
-			case $this instanceof UsesWordPressPost:
514
-				$object = new WP_Post( (object) array() );
515
-				break;
516
-			case $this instanceof UsesWordPressTerm:
517
-				$object = new WP_Term( (object) array() );
518
-				break;
519
-			default:
520
-				throw new LogicException;
521
-				break;
522
-		}
523
-
524
-		$this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $object );
525
-	}
526
-
527
-	/**
528
-	 * Enforces values on the post that can't change.
529
-	 *
530
-	 * Primarily, this is used to make sure the post_type always maps
531
-	 * to the model's "$type" property, but this can all be overridden
532
-	 * by the developer to enforce other values in the model.
533
-	 *
534
-	 * @param object $object
535
-	 *
536
-	 * @return object
537
-	 */
538
-	protected function set_wp_object_constants( $object ) {
539
-		if ( $this instanceof UsesWordPressPost ) {
540
-			$object->post_type = static::get_post_type();
541
-		}
542
-
543
-		if ( $this instanceof UsesWordPressTerm ) {
544
-			$object->taxonomy = static::get_taxonomy();
545
-		}
546
-
547
-		return $object;
548
-	}
549
-
550
-	/**
551
-	 * Magic __get method.
552
-	 *
553
-	 * Passes the name and value to get_attribute, which is where the magic happens.
554
-	 *
555
-	 * @param string $name
556
-	 *
557
-	 * @return mixed
558
-	 */
559
-	public function __get( $name ) {
560
-		return $this->get_attribute( $name );
561
-	}
562
-
563
-	/**
564
-	 * Retrieves the model attribute.
565
-	 *
566
-	 * @param string $name
567
-	 *
568
-	 * @return mixed
569
-	 *
570
-	 * @throws PropertyDoesNotExistException If property isn't found.
571
-	 */
572
-	public function get_attribute( $name ) {
573
-		if ( $method = $this->has_map_method( $name ) ) {
574
-			return $this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()};
575
-		}
576
-
577
-		if ( $method = $this->has_compute_method( $name ) ) {
578
-			return $this->{$method}();
579
-		}
580
-
581
-		if ( isset( $this->attributes[ self::TABLE_KEY ][ $name ] ) ) {
582
-			return $this->attributes[ self::TABLE_KEY ][ $name ];
583
-		}
584
-
585
-		if ( isset( $this->defaults[ $name ] ) ) {
586
-			return $this->defaults[ $name ];
587
-		}
588
-
589
-		return null;
590
-	}
591
-
592
-	/**
593
-	 * Retrieve the model's original attribute value.
594
-	 *
595
-	 * @param string $name
596
-	 *
597
-	 * @return mixed
598
-	 *
599
-	 * @throws PropertyDoesNotExistException If property isn't found.
600
-	 */
601
-	public function get_original_attribute( $name ) {
602
-		$original_attributes = $this->original;
603
-
604
-		if ( ! is_object( $original_attributes[ static::OBJECT_KEY ] ) ) {
605
-			unset( $original_attributes[ static::OBJECT_KEY ] );
606
-		}
607
-
608
-		$original = new static( $original_attributes );
609
-
610
-		return $original->get_attribute( $name );
611
-	}
612
-
613
-	/**
614
-	 * Fetches the Model's primary ID, depending on the model
615
-	 * implementation.
616
-	 *
617
-	 * @return int
618
-	 *
619
-	 * @throws LogicException
620
-	 */
621
-	public function get_primary_id() {
622
-		if ( $this instanceof UsesWordPressPost ) {
623
-			return $this->get_underlying_wp_object()->ID;
624
-		}
625
-
626
-		if ( $this instanceof UsesWordPressTerm ) {
627
-			return $this->get_underlying_wp_object()->term_id;
628
-		}
629
-
630
-		if ( $this instanceof UsesCustomTable ) {
631
-			return $this->get_attribute( $this->get_primary_key() );
632
-		}
633
-
634
-		// Model w/o wp_object not yet supported.
635
-		throw new LogicException;
636
-	}
637
-
638
-	/**
639
-	 * Checks whether the attribute has a map method.
640
-	 *
641
-	 * This is used to determine whether the attribute maps to a
642
-	 * property on the underlying WP_Post object. Returns the
643
-	 * method if one exists, returns false if it doesn't.
644
-	 *
645
-	 * @param string $name
646
-	 *
647
-	 * @return false|string
648
-	 */
649
-	protected function has_map_method( $name ) {
650
-		if ( method_exists( $this, $method = "map_{$name}" ) ) {
651
-			return $method;
652
-		}
653
-
654
-		return false;
655
-	}
656
-
657
-	/**
658
-	 * Checks whether the attribute has a compute method.
659
-	 *
660
-	 * This is used to determine if the attribute should be computed
661
-	 * from other attributes.
662
-	 *
663
-	 * @param string $name
664
-	 *
665
-	 * @return false|string
666
-	 */
667
-	protected function has_compute_method( $name ) {
668
-		if ( method_exists( $this, $method = "compute_{$name}" ) ) {
669
-			return $method;
670
-		}
671
-
672
-		return false;
673
-	}
674
-
675
-	/**
676
-	 * Clears all the current attributes from the model.
677
-	 *
678
-	 * This does not touch the model's original attributes, and will
679
-	 * only clear fillable attributes, unless the model is unguarded.
680
-	 *
681
-	 * @throws Exception
682
-	 * @return $this
683
-	 */
684
-	public function clear() {
685
-		$keys = array_merge(
686
-			$this->get_table_keys(),
687
-			$this->get_wp_object_keys()
688
-		);
689
-
690
-		foreach ( $keys as $key ) {
691
-			try {
692
-				$this->set_attribute( $key, null );
693
-			} catch ( Exception $e ) {
694
-				// We won't clear out guarded attributes.
695
-				if ( ! ( $e instanceof GuardedPropertyException ) ) {
696
-					throw $e;
697
-				}
698
-			}
699
-		}
700
-
701
-		return $this;
702
-	}
703
-
704
-	/**
705
-	 * Unguards the model.
706
-	 *
707
-	 * Sets the model to be unguarded, allowing the filling of
708
-	 * guarded attributes.
709
-	 */
710
-	public function unguard() {
711
-		$this->is_guarded = false;
712
-	}
713
-
714
-	/**
715
-	 * Reguards the model.
716
-	 *
717
-	 * Sets the model to be guarded, preventing filling of
718
-	 * guarded attributes.
719
-	 */
720
-	public function reguard() {
721
-		$this->is_guarded = true;
722
-	}
723
-
724
-	/**
725
-	 * Retrieves all the compute methods on the model.
726
-	 *
727
-	 * @return array
728
-	 */
729
-	protected function get_compute_methods() {
730
-		$methods = get_class_methods( get_called_class() );
731
-		$methods = array_filter( $methods, function ( $method ) {
732
-			return strrpos( $method, 'compute_', - strlen( $method ) ) !== false;
733
-		} );
734
-		$methods = array_map( function ( $method ) {
735
-			return substr( $method, strlen( 'compute_' ) );
736
-		}, $methods );
737
-
738
-		return $methods;
739
-	}
740
-
741
-	/**
742
-	 * Sets up the memo array for the creating model.
743
-	 */
744
-	private function maybe_boot() {
745
-		if ( ! isset( self::$memo[ get_called_class() ] ) ) {
746
-			self::$memo[ get_called_class() ] = array();
747
-		}
748
-	}
749
-
750
-	/**
751
-	 * Whether this Model uses an underlying WordPress object.
752
-	 *
753
-	 * @return bool
754
-	 */
755
-	protected function uses_wp_object() {
756
-		return $this instanceof UsesWordPressPost ||
757
-			$this instanceof UsesWordPressTerm;
758
-	}
25
+    /**
26
+     * Table attribute key.
27
+     */
28
+    const TABLE_KEY = '@@table';
29
+
30
+    /**
31
+     * Object attribute key.
32
+     */
33
+    const OBJECT_KEY = '@@object';
34
+
35
+    /**
36
+     * Memoized values for class methods.
37
+     *
38
+     * @var array
39
+     */
40
+    private static $memo = array();
41
+
42
+    /**
43
+     * Model attributes.
44
+     *
45
+     * @var array
46
+     */
47
+    private $attributes = array(
48
+        self::TABLE_KEY  => array(),
49
+        self::OBJECT_KEY => null,
50
+    );
51
+
52
+    /**
53
+     * Model's original attributes.
54
+     *
55
+     * @var array
56
+     */
57
+    private $original = array(
58
+        self::TABLE_KEY  => array(),
59
+        self::OBJECT_KEY => null,
60
+    );
61
+
62
+    /**
63
+     * Default attribute values.
64
+     *
65
+     * @var array
66
+     */
67
+    protected $defaults = array();
68
+
69
+    /**
70
+     * Properties which are allowed to be set on the model.
71
+     *
72
+     * If this array is empty, any attributes can be set on the model.
73
+     *
74
+     * @var string[]
75
+     */
76
+    protected $fillable = array();
77
+
78
+    /**
79
+     * Properties which cannot be automatically filled on the model.
80
+     *
81
+     * If the model is unguarded, these properties can be filled.
82
+     *
83
+     * @var array
84
+     */
85
+    protected $guarded = array();
86
+
87
+    /**
88
+     * Properties which should not be serialized.
89
+     *
90
+     * @var array
91
+     */
92
+    protected $hidden = array();
93
+
94
+    /**
95
+     * Properties which should be serialized.
96
+     *
97
+     * @var array
98
+     */
99
+    protected $visible = array();
100
+
101
+    /**
102
+     * Whether the model's properties are guarded.
103
+     *
104
+     * When false, allows guarded properties to be filled.
105
+     *
106
+     * @var bool
107
+     */
108
+    protected $is_guarded = true;
109
+
110
+    /**
111
+     * Constructs a new model with provided attributes.
112
+     *
113
+     * If self::OBJECT_KEY is passed as one of the attributes, the underlying post
114
+     * will be overwritten.
115
+     *
116
+     * @param array <string, mixed> $attributes
117
+     */
118
+    public function __construct( array $attributes = array() ) {
119
+        $this->maybe_boot();
120
+        $this->sync_original();
121
+
122
+        if ( $this->uses_wp_object() ) {
123
+            $this->create_wp_object();
124
+        }
125
+
126
+        $this->unguard();
127
+        $this->refresh( $attributes );
128
+        $this->reguard();
129
+    }
130
+
131
+    /**
132
+     * Refreshes the model's current attributes with the provided array.
133
+     *
134
+     * The model's attributes will match what was provided in the array,
135
+     * and any attributes not passed
136
+     *
137
+     * @param array $attributes
138
+     *
139
+     * @return $this
140
+     */
141
+    public function refresh( array $attributes ) {
142
+        $this->clear();
143
+
144
+        return $this->merge( $attributes );
145
+    }
146
+
147
+    /**
148
+     * Merges the provided attributes with the provided array.
149
+     *
150
+     * @param array $attributes
151
+     *
152
+     * @return $this
153
+     */
154
+    public function merge( array $attributes ) {
155
+        foreach ( $attributes as $name => $value ) {
156
+            $this->set_attribute( $name, $value );
157
+        }
158
+
159
+        return $this;
160
+    }
161
+
162
+    /**
163
+     * Get the model's table attributes.
164
+     *
165
+     * Returns the array of for the model that will either need to be
166
+     * saved in postmeta or a separate table.
167
+     *
168
+     * @return array
169
+     */
170
+    public function get_table_attributes() {
171
+        return $this->attributes[ self::TABLE_KEY ];
172
+    }
173
+
174
+    /**
175
+     * Get the model's original attributes.
176
+     *
177
+     * @return array
178
+     */
179
+    public function get_original_table_attributes() {
180
+        return $this->original[ self::TABLE_KEY ];
181
+    }
182
+
183
+    /**
184
+     * Retrieve an array of the attributes on the model
185
+     * that have changed compared to the model's
186
+     * original data.
187
+     *
188
+     * @return array
189
+     */
190
+    public function get_changed_table_attributes() {
191
+        $changed = array();
192
+
193
+        foreach ( $this->get_table_attributes() as $key => $value ) {
194
+            if ( $value !==
195
+                    $this->get_original_attribute( $key )
196
+            ) {
197
+                $changed[ $key ] = $value;
198
+            }
199
+        }
200
+
201
+        return $changed;
202
+    }
203
+
204
+    /**
205
+     * Get the model's underlying post.
206
+     *
207
+     * Returns the underlying WP_Post object for the model, representing
208
+     * the data that will be save in the wp_posts table.
209
+     *
210
+     * @return false|WP_Post|WP_Term
211
+     */
212
+    public function get_underlying_wp_object() {
213
+        if ( isset( $this->attributes[ self::OBJECT_KEY ] ) ) {
214
+            return $this->attributes[ self::OBJECT_KEY ];
215
+        }
216
+
217
+        return false;
218
+    }
219
+
220
+    /**
221
+     * Get the model's original underlying post.
222
+     *
223
+     * @return WP_Post
224
+     */
225
+    public function get_original_underlying_wp_object() {
226
+        return $this->original[ self::OBJECT_KEY ];
227
+    }
228
+
229
+    /**
230
+     * Get the model attributes on the WordPress object
231
+     * that have changed compared to the model's
232
+     * original attributes.
233
+     *
234
+     * @return array
235
+     */
236
+    public function get_changed_wp_object_attributes() {
237
+        $changed = array();
238
+
239
+        foreach ( $this->get_wp_object_keys() as $key ) {
240
+            if ( $this->get_attribute( $key ) !==
241
+                    $this->get_original_attribute( $key )
242
+            ) {
243
+                $changed[ $key ] = $this->get_attribute( $key );
244
+            }
245
+        }
246
+
247
+        return $changed;
248
+    }
249
+
250
+    /**
251
+     * Magic __set method.
252
+     *
253
+     * Passes the name and value to set_attribute, which is where the magic happens.
254
+     *
255
+     * @param string $name
256
+     * @param mixed  $value
257
+     */
258
+    public function __set( $name, $value ) {
259
+        $this->set_attribute( $name, $value );
260
+    }
261
+
262
+    /**
263
+     * Sets the model attributes.
264
+     *
265
+     * Checks whether the model attribute can be set, check if it
266
+     * maps to the WP_Post property, otherwise, assigns it to the
267
+     * table attribute array.
268
+     *
269
+     * @param string $name
270
+     * @param mixed  $value
271
+     *
272
+     * @return $this
273
+     *
274
+     * @throws GuardedPropertyException
275
+     */
276
+    public function set_attribute( $name, $value ) {
277
+        if ( self::OBJECT_KEY === $name ) {
278
+            return $this->override_wp_object( $value );
279
+        }
280
+
281
+        if ( self::TABLE_KEY === $name ) {
282
+            return $this->override_table( $value );
283
+        }
284
+
285
+        if ( ! $this->is_fillable( $name ) ) {
286
+            throw new GuardedPropertyException( $name );
287
+        }
288
+
289
+        if ( $method = $this->has_map_method( $name ) ) {
290
+            $this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()} = $value;
291
+        } else {
292
+            $this->attributes[ self::TABLE_KEY ][ $name ] = $value;
293
+        }
294
+
295
+        return $this;
296
+    }
297
+
298
+    /**
299
+     * Retrieves all the attribute keys for the model.
300
+     *
301
+     * @return array
302
+     */
303
+    public function get_attribute_keys() {
304
+        if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
305
+            return self::$memo[ get_called_class() ][ __METHOD__ ];
306
+        }
307
+
308
+        return self::$memo[ get_called_class() ][ __METHOD__ ]
309
+            = array_merge(
310
+                $this->fillable,
311
+                $this->guarded,
312
+                $this->get_compute_methods()
313
+            );
314
+    }
315
+
316
+    /**
317
+     * Retrieves the attribute keys that aren't mapped to a post.
318
+     *
319
+     * @return array
320
+     */
321
+    public function get_table_keys() {
322
+        if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
323
+            return self::$memo[ get_called_class() ][ __METHOD__ ];
324
+        }
325
+
326
+        $keys = array();
327
+
328
+        foreach ( $this->get_attribute_keys() as $key ) {
329
+            if ( ! $this->has_map_method( $key ) &&
330
+                 ! $this->has_compute_method( $key )
331
+            ) {
332
+                $keys[] = $key;
333
+            }
334
+        }
335
+
336
+        return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
337
+    }
338
+
339
+    /**
340
+     * Retrieves the attribute keys that are mapped to a post.
341
+     *
342
+     * @return array
343
+     */
344
+    public function get_wp_object_keys() {
345
+        if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
346
+            return self::$memo[ get_called_class() ][ __METHOD__ ];
347
+        }
348
+
349
+        $keys = array();
350
+
351
+        foreach ( $this->get_attribute_keys() as $key ) {
352
+            if ( $this->has_map_method( $key ) ) {
353
+                $keys[] = $key;
354
+            }
355
+        }
356
+
357
+        return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
358
+    }
359
+
360
+    /**
361
+     * Returns the model's keys that are computed at call time.
362
+     *
363
+     * @return array
364
+     */
365
+    public function get_computed_keys() {
366
+        if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
367
+            return self::$memo[ get_called_class() ][ __METHOD__ ];
368
+        }
369
+
370
+        $keys = array();
371
+
372
+        foreach ( $this->get_attribute_keys() as $key ) {
373
+            if ( $this->has_compute_method( $key ) ) {
374
+                $keys[] = $key;
375
+            }
376
+        }
377
+
378
+        return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
379
+    }
380
+
381
+    /**
382
+     * Serializes the model's public data into an array.
383
+     *
384
+     * @return array
385
+     */
386
+    public function serialize() {
387
+        $attributes = array();
388
+
389
+        if ( $this->visible ) {
390
+            // If visible attributes are set, we'll only reveal those.
391
+            foreach ( $this->visible as $key ) {
392
+                $attributes[ $key ] = $this->get_attribute( $key );
393
+            }
394
+        } elseif ( $this->hidden ) {
395
+            // If hidden attributes are set, we'll grab everything and hide those.
396
+            foreach ( $this->get_attribute_keys() as $key ) {
397
+                if ( ! in_array( $key, $this->hidden ) ) {
398
+                    $attributes[ $key ] = $this->get_attribute( $key );
399
+                }
400
+            }
401
+        } else {
402
+            // If nothing is hidden/visible, we'll grab and reveal everything.
403
+            foreach ( $this->get_attribute_keys() as $key ) {
404
+                $attributes[ $key ] = $this->get_attribute( $key );
405
+            }
406
+        }
407
+
408
+        return array_map( function ( $attribute ) {
409
+            if ( $attribute instanceof Serializes ) {
410
+                return $attribute->serialize();
411
+            }
412
+
413
+            return $attribute;
414
+        }, $attributes );
415
+    }
416
+
417
+    /**
418
+     * Syncs the current attributes to the model's original.
419
+     *
420
+     * @return $this
421
+     */
422
+    public function sync_original() {
423
+        $this->original = $this->attributes;
424
+
425
+        if ( $this->attributes[ self::OBJECT_KEY ] ) {
426
+            $this->original[ self::OBJECT_KEY ] = clone $this->attributes[ self::OBJECT_KEY ];
427
+        }
428
+
429
+        foreach ( $this->original[ self::TABLE_KEY ] as $key => $item ) {
430
+            if ( is_object( $item ) ) {
431
+                $this->original[ $key ] = clone $item;
432
+            }
433
+        }
434
+
435
+        return $this;
436
+    }
437
+
438
+    /**
439
+     * Checks if a given attribute is mass-fillable.
440
+     *
441
+     * Returns true if the attribute can be filled, false if it can't.
442
+     *
443
+     * @param string $name
444
+     *
445
+     * @return bool
446
+     */
447
+    private function is_fillable( $name ) {
448
+        // If this model isn't guarded, everything is fillable.
449
+        if ( ! $this->is_guarded ) {
450
+            return true;
451
+        }
452
+
453
+        // If it's in the fillable array, then it's fillable.
454
+        if ( in_array( $name, $this->fillable ) ) {
455
+            return true;
456
+        }
457
+
458
+        // If it's explicitly guarded, then it's not fillable.
459
+        if ( in_array( $name, $this->guarded ) ) {
460
+            return false;
461
+        }
462
+
463
+        // If fillable hasn't been defined, then everything else fillable.
464
+        return ! $this->fillable;
465
+    }
466
+
467
+    /**
468
+     * Overrides the current WordPress object with a provided one.
469
+     *
470
+     * Resets the post's default values and stores it in the attributes.
471
+     *
472
+     * @param WP_Post|WP_Term|null $value
473
+     *
474
+     * @return $this
475
+     */
476
+    private function override_wp_object( $value ) {
477
+        if ( is_object( $value ) ) {
478
+            $this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $value );
479
+        } else {
480
+            $this->attributes[ self::OBJECT_KEY ] = null;
481
+
482
+            if ( $this->uses_wp_object() ) {
483
+                $this->create_wp_object();
484
+            }
485
+        }
486
+
487
+        return $this;
488
+    }
489
+
490
+    /**
491
+     * Overrides the current table attributes array with a provided one.
492
+     *
493
+     * @param array $value
494
+     *
495
+     * @return $this
496
+     */
497
+    private function override_table( array $value ) {
498
+        $this->attributes[ self::TABLE_KEY ] = $value;
499
+
500
+        return $this;
501
+    }
502
+
503
+    /**
504
+     * Create and set with a new blank post.
505
+     *
506
+     * Creates a new WP_Post object, assigns it the default attributes,
507
+     * and stores it in the attributes.
508
+     *
509
+     * @throws LogicException
510
+     */
511
+    private function create_wp_object() {
512
+        switch ( true ) {
513
+            case $this instanceof UsesWordPressPost:
514
+                $object = new WP_Post( (object) array() );
515
+                break;
516
+            case $this instanceof UsesWordPressTerm:
517
+                $object = new WP_Term( (object) array() );
518
+                break;
519
+            default:
520
+                throw new LogicException;
521
+                break;
522
+        }
523
+
524
+        $this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $object );
525
+    }
526
+
527
+    /**
528
+     * Enforces values on the post that can't change.
529
+     *
530
+     * Primarily, this is used to make sure the post_type always maps
531
+     * to the model's "$type" property, but this can all be overridden
532
+     * by the developer to enforce other values in the model.
533
+     *
534
+     * @param object $object
535
+     *
536
+     * @return object
537
+     */
538
+    protected function set_wp_object_constants( $object ) {
539
+        if ( $this instanceof UsesWordPressPost ) {
540
+            $object->post_type = static::get_post_type();
541
+        }
542
+
543
+        if ( $this instanceof UsesWordPressTerm ) {
544
+            $object->taxonomy = static::get_taxonomy();
545
+        }
546
+
547
+        return $object;
548
+    }
549
+
550
+    /**
551
+     * Magic __get method.
552
+     *
553
+     * Passes the name and value to get_attribute, which is where the magic happens.
554
+     *
555
+     * @param string $name
556
+     *
557
+     * @return mixed
558
+     */
559
+    public function __get( $name ) {
560
+        return $this->get_attribute( $name );
561
+    }
562
+
563
+    /**
564
+     * Retrieves the model attribute.
565
+     *
566
+     * @param string $name
567
+     *
568
+     * @return mixed
569
+     *
570
+     * @throws PropertyDoesNotExistException If property isn't found.
571
+     */
572
+    public function get_attribute( $name ) {
573
+        if ( $method = $this->has_map_method( $name ) ) {
574
+            return $this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()};
575
+        }
576
+
577
+        if ( $method = $this->has_compute_method( $name ) ) {
578
+            return $this->{$method}();
579
+        }
580
+
581
+        if ( isset( $this->attributes[ self::TABLE_KEY ][ $name ] ) ) {
582
+            return $this->attributes[ self::TABLE_KEY ][ $name ];
583
+        }
584
+
585
+        if ( isset( $this->defaults[ $name ] ) ) {
586
+            return $this->defaults[ $name ];
587
+        }
588
+
589
+        return null;
590
+    }
591
+
592
+    /**
593
+     * Retrieve the model's original attribute value.
594
+     *
595
+     * @param string $name
596
+     *
597
+     * @return mixed
598
+     *
599
+     * @throws PropertyDoesNotExistException If property isn't found.
600
+     */
601
+    public function get_original_attribute( $name ) {
602
+        $original_attributes = $this->original;
603
+
604
+        if ( ! is_object( $original_attributes[ static::OBJECT_KEY ] ) ) {
605
+            unset( $original_attributes[ static::OBJECT_KEY ] );
606
+        }
607
+
608
+        $original = new static( $original_attributes );
609
+
610
+        return $original->get_attribute( $name );
611
+    }
612
+
613
+    /**
614
+     * Fetches the Model's primary ID, depending on the model
615
+     * implementation.
616
+     *
617
+     * @return int
618
+     *
619
+     * @throws LogicException
620
+     */
621
+    public function get_primary_id() {
622
+        if ( $this instanceof UsesWordPressPost ) {
623
+            return $this->get_underlying_wp_object()->ID;
624
+        }
625
+
626
+        if ( $this instanceof UsesWordPressTerm ) {
627
+            return $this->get_underlying_wp_object()->term_id;
628
+        }
629
+
630
+        if ( $this instanceof UsesCustomTable ) {
631
+            return $this->get_attribute( $this->get_primary_key() );
632
+        }
633
+
634
+        // Model w/o wp_object not yet supported.
635
+        throw new LogicException;
636
+    }
637
+
638
+    /**
639
+     * Checks whether the attribute has a map method.
640
+     *
641
+     * This is used to determine whether the attribute maps to a
642
+     * property on the underlying WP_Post object. Returns the
643
+     * method if one exists, returns false if it doesn't.
644
+     *
645
+     * @param string $name
646
+     *
647
+     * @return false|string
648
+     */
649
+    protected function has_map_method( $name ) {
650
+        if ( method_exists( $this, $method = "map_{$name}" ) ) {
651
+            return $method;
652
+        }
653
+
654
+        return false;
655
+    }
656
+
657
+    /**
658
+     * Checks whether the attribute has a compute method.
659
+     *
660
+     * This is used to determine if the attribute should be computed
661
+     * from other attributes.
662
+     *
663
+     * @param string $name
664
+     *
665
+     * @return false|string
666
+     */
667
+    protected function has_compute_method( $name ) {
668
+        if ( method_exists( $this, $method = "compute_{$name}" ) ) {
669
+            return $method;
670
+        }
671
+
672
+        return false;
673
+    }
674
+
675
+    /**
676
+     * Clears all the current attributes from the model.
677
+     *
678
+     * This does not touch the model's original attributes, and will
679
+     * only clear fillable attributes, unless the model is unguarded.
680
+     *
681
+     * @throws Exception
682
+     * @return $this
683
+     */
684
+    public function clear() {
685
+        $keys = array_merge(
686
+            $this->get_table_keys(),
687
+            $this->get_wp_object_keys()
688
+        );
689
+
690
+        foreach ( $keys as $key ) {
691
+            try {
692
+                $this->set_attribute( $key, null );
693
+            } catch ( Exception $e ) {
694
+                // We won't clear out guarded attributes.
695
+                if ( ! ( $e instanceof GuardedPropertyException ) ) {
696
+                    throw $e;
697
+                }
698
+            }
699
+        }
700
+
701
+        return $this;
702
+    }
703
+
704
+    /**
705
+     * Unguards the model.
706
+     *
707
+     * Sets the model to be unguarded, allowing the filling of
708
+     * guarded attributes.
709
+     */
710
+    public function unguard() {
711
+        $this->is_guarded = false;
712
+    }
713
+
714
+    /**
715
+     * Reguards the model.
716
+     *
717
+     * Sets the model to be guarded, preventing filling of
718
+     * guarded attributes.
719
+     */
720
+    public function reguard() {
721
+        $this->is_guarded = true;
722
+    }
723
+
724
+    /**
725
+     * Retrieves all the compute methods on the model.
726
+     *
727
+     * @return array
728
+     */
729
+    protected function get_compute_methods() {
730
+        $methods = get_class_methods( get_called_class() );
731
+        $methods = array_filter( $methods, function ( $method ) {
732
+            return strrpos( $method, 'compute_', - strlen( $method ) ) !== false;
733
+        } );
734
+        $methods = array_map( function ( $method ) {
735
+            return substr( $method, strlen( 'compute_' ) );
736
+        }, $methods );
737
+
738
+        return $methods;
739
+    }
740
+
741
+    /**
742
+     * Sets up the memo array for the creating model.
743
+     */
744
+    private function maybe_boot() {
745
+        if ( ! isset( self::$memo[ get_called_class() ] ) ) {
746
+            self::$memo[ get_called_class() ] = array();
747
+        }
748
+    }
749
+
750
+    /**
751
+     * Whether this Model uses an underlying WordPress object.
752
+     *
753
+     * @return bool
754
+     */
755
+    protected function uses_wp_object() {
756
+        return $this instanceof UsesWordPressPost ||
757
+            $this instanceof UsesWordPressTerm;
758
+    }
759 759
 }
Please login to merge, or discard this patch.
Spacing   +123 added lines, -123 removed lines patch added patch discarded remove patch
@@ -115,16 +115,16 @@  discard block
 block discarded – undo
115 115
 	 *
116 116
 	 * @param array <string, mixed> $attributes
117 117
 	 */
118
-	public function __construct( array $attributes = array() ) {
118
+	public function __construct(array $attributes = array()) {
119 119
 		$this->maybe_boot();
120 120
 		$this->sync_original();
121 121
 
122
-		if ( $this->uses_wp_object() ) {
122
+		if ($this->uses_wp_object()) {
123 123
 			$this->create_wp_object();
124 124
 		}
125 125
 
126 126
 		$this->unguard();
127
-		$this->refresh( $attributes );
127
+		$this->refresh($attributes);
128 128
 		$this->reguard();
129 129
 	}
130 130
 
@@ -138,10 +138,10 @@  discard block
 block discarded – undo
138 138
 	 *
139 139
 	 * @return $this
140 140
 	 */
141
-	public function refresh( array $attributes ) {
141
+	public function refresh(array $attributes) {
142 142
 		$this->clear();
143 143
 
144
-		return $this->merge( $attributes );
144
+		return $this->merge($attributes);
145 145
 	}
146 146
 
147 147
 	/**
@@ -151,9 +151,9 @@  discard block
 block discarded – undo
151 151
 	 *
152 152
 	 * @return $this
153 153
 	 */
154
-	public function merge( array $attributes ) {
155
-		foreach ( $attributes as $name => $value ) {
156
-			$this->set_attribute( $name, $value );
154
+	public function merge(array $attributes) {
155
+		foreach ($attributes as $name => $value) {
156
+			$this->set_attribute($name, $value);
157 157
 		}
158 158
 
159 159
 		return $this;
@@ -168,7 +168,7 @@  discard block
 block discarded – undo
168 168
 	 * @return array
169 169
 	 */
170 170
 	public function get_table_attributes() {
171
-		return $this->attributes[ self::TABLE_KEY ];
171
+		return $this->attributes[self::TABLE_KEY];
172 172
 	}
173 173
 
174 174
 	/**
@@ -177,7 +177,7 @@  discard block
 block discarded – undo
177 177
 	 * @return array
178 178
 	 */
179 179
 	public function get_original_table_attributes() {
180
-		return $this->original[ self::TABLE_KEY ];
180
+		return $this->original[self::TABLE_KEY];
181 181
 	}
182 182
 
183 183
 	/**
@@ -190,11 +190,11 @@  discard block
 block discarded – undo
190 190
 	public function get_changed_table_attributes() {
191 191
 		$changed = array();
192 192
 
193
-		foreach ( $this->get_table_attributes() as $key => $value ) {
194
-			if ( $value !==
195
-				 $this->get_original_attribute( $key )
193
+		foreach ($this->get_table_attributes() as $key => $value) {
194
+			if ($value !==
195
+				 $this->get_original_attribute($key)
196 196
 			) {
197
-				$changed[ $key ] = $value;
197
+				$changed[$key] = $value;
198 198
 			}
199 199
 		}
200 200
 
@@ -210,8 +210,8 @@  discard block
 block discarded – undo
210 210
 	 * @return false|WP_Post|WP_Term
211 211
 	 */
212 212
 	public function get_underlying_wp_object() {
213
-		if ( isset( $this->attributes[ self::OBJECT_KEY ] ) ) {
214
-			return $this->attributes[ self::OBJECT_KEY ];
213
+		if (isset($this->attributes[self::OBJECT_KEY])) {
214
+			return $this->attributes[self::OBJECT_KEY];
215 215
 		}
216 216
 
217 217
 		return false;
@@ -223,7 +223,7 @@  discard block
 block discarded – undo
223 223
 	 * @return WP_Post
224 224
 	 */
225 225
 	public function get_original_underlying_wp_object() {
226
-		return $this->original[ self::OBJECT_KEY ];
226
+		return $this->original[self::OBJECT_KEY];
227 227
 	}
228 228
 
229 229
 	/**
@@ -236,11 +236,11 @@  discard block
 block discarded – undo
236 236
 	public function get_changed_wp_object_attributes() {
237 237
 		$changed = array();
238 238
 
239
-		foreach ( $this->get_wp_object_keys() as $key ) {
240
-			if ( $this->get_attribute( $key ) !==
241
-				 $this->get_original_attribute( $key )
239
+		foreach ($this->get_wp_object_keys() as $key) {
240
+			if ($this->get_attribute($key) !==
241
+				 $this->get_original_attribute($key)
242 242
 			) {
243
-				$changed[ $key ] = $this->get_attribute( $key );
243
+				$changed[$key] = $this->get_attribute($key);
244 244
 			}
245 245
 		}
246 246
 
@@ -255,8 +255,8 @@  discard block
 block discarded – undo
255 255
 	 * @param string $name
256 256
 	 * @param mixed  $value
257 257
 	 */
258
-	public function __set( $name, $value ) {
259
-		$this->set_attribute( $name, $value );
258
+	public function __set($name, $value) {
259
+		$this->set_attribute($name, $value);
260 260
 	}
261 261
 
262 262
 	/**
@@ -273,23 +273,23 @@  discard block
 block discarded – undo
273 273
 	 *
274 274
 	 * @throws GuardedPropertyException
275 275
 	 */
276
-	public function set_attribute( $name, $value ) {
277
-		if ( self::OBJECT_KEY === $name ) {
278
-			return $this->override_wp_object( $value );
276
+	public function set_attribute($name, $value) {
277
+		if (self::OBJECT_KEY === $name) {
278
+			return $this->override_wp_object($value);
279 279
 		}
280 280
 
281
-		if ( self::TABLE_KEY === $name ) {
282
-			return $this->override_table( $value );
281
+		if (self::TABLE_KEY === $name) {
282
+			return $this->override_table($value);
283 283
 		}
284 284
 
285
-		if ( ! $this->is_fillable( $name ) ) {
286
-			throw new GuardedPropertyException( $name );
285
+		if (!$this->is_fillable($name)) {
286
+			throw new GuardedPropertyException($name);
287 287
 		}
288 288
 
289
-		if ( $method = $this->has_map_method( $name ) ) {
290
-			$this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()} = $value;
289
+		if ($method = $this->has_map_method($name)) {
290
+			$this->attributes[self::OBJECT_KEY]->{$this->{$method}()} = $value;
291 291
 		} else {
292
-			$this->attributes[ self::TABLE_KEY ][ $name ] = $value;
292
+			$this->attributes[self::TABLE_KEY][$name] = $value;
293 293
 		}
294 294
 
295 295
 		return $this;
@@ -301,11 +301,11 @@  discard block
 block discarded – undo
301 301
 	 * @return array
302 302
 	 */
303 303
 	public function get_attribute_keys() {
304
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
305
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
304
+		if (isset(self::$memo[get_called_class()][__METHOD__])) {
305
+			return self::$memo[get_called_class()][__METHOD__];
306 306
 		}
307 307
 
308
-		return self::$memo[ get_called_class() ][ __METHOD__ ]
308
+		return self::$memo[get_called_class()][__METHOD__]
309 309
 			= array_merge(
310 310
 				$this->fillable,
311 311
 				$this->guarded,
@@ -319,21 +319,21 @@  discard block
 block discarded – undo
319 319
 	 * @return array
320 320
 	 */
321 321
 	public function get_table_keys() {
322
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
323
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
322
+		if (isset(self::$memo[get_called_class()][__METHOD__])) {
323
+			return self::$memo[get_called_class()][__METHOD__];
324 324
 		}
325 325
 
326 326
 		$keys = array();
327 327
 
328
-		foreach ( $this->get_attribute_keys() as $key ) {
329
-			if ( ! $this->has_map_method( $key ) &&
330
-				 ! $this->has_compute_method( $key )
328
+		foreach ($this->get_attribute_keys() as $key) {
329
+			if (!$this->has_map_method($key) &&
330
+				 !$this->has_compute_method($key)
331 331
 			) {
332 332
 				$keys[] = $key;
333 333
 			}
334 334
 		}
335 335
 
336
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
336
+		return self::$memo[get_called_class()][__METHOD__] = $keys;
337 337
 	}
338 338
 
339 339
 	/**
@@ -342,19 +342,19 @@  discard block
 block discarded – undo
342 342
 	 * @return array
343 343
 	 */
344 344
 	public function get_wp_object_keys() {
345
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
346
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
345
+		if (isset(self::$memo[get_called_class()][__METHOD__])) {
346
+			return self::$memo[get_called_class()][__METHOD__];
347 347
 		}
348 348
 
349 349
 		$keys = array();
350 350
 
351
-		foreach ( $this->get_attribute_keys() as $key ) {
352
-			if ( $this->has_map_method( $key ) ) {
351
+		foreach ($this->get_attribute_keys() as $key) {
352
+			if ($this->has_map_method($key)) {
353 353
 				$keys[] = $key;
354 354
 			}
355 355
 		}
356 356
 
357
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
357
+		return self::$memo[get_called_class()][__METHOD__] = $keys;
358 358
 	}
359 359
 
360 360
 	/**
@@ -363,19 +363,19 @@  discard block
 block discarded – undo
363 363
 	 * @return array
364 364
 	 */
365 365
 	public function get_computed_keys() {
366
-		if ( isset( self::$memo[ get_called_class() ][ __METHOD__ ] ) ) {
367
-			return self::$memo[ get_called_class() ][ __METHOD__ ];
366
+		if (isset(self::$memo[get_called_class()][__METHOD__])) {
367
+			return self::$memo[get_called_class()][__METHOD__];
368 368
 		}
369 369
 
370 370
 		$keys = array();
371 371
 
372
-		foreach ( $this->get_attribute_keys() as $key ) {
373
-			if ( $this->has_compute_method( $key ) ) {
372
+		foreach ($this->get_attribute_keys() as $key) {
373
+			if ($this->has_compute_method($key)) {
374 374
 				$keys[] = $key;
375 375
 			}
376 376
 		}
377 377
 
378
-		return self::$memo[ get_called_class() ][ __METHOD__ ] = $keys;
378
+		return self::$memo[get_called_class()][__METHOD__] = $keys;
379 379
 	}
380 380
 
381 381
 	/**
@@ -386,32 +386,32 @@  discard block
 block discarded – undo
386 386
 	public function serialize() {
387 387
 		$attributes = array();
388 388
 
389
-		if ( $this->visible ) {
389
+		if ($this->visible) {
390 390
 			// If visible attributes are set, we'll only reveal those.
391
-			foreach ( $this->visible as $key ) {
392
-				$attributes[ $key ] = $this->get_attribute( $key );
391
+			foreach ($this->visible as $key) {
392
+				$attributes[$key] = $this->get_attribute($key);
393 393
 			}
394
-		} elseif ( $this->hidden ) {
394
+		} elseif ($this->hidden) {
395 395
 			// If hidden attributes are set, we'll grab everything and hide those.
396
-			foreach ( $this->get_attribute_keys() as $key ) {
397
-				if ( ! in_array( $key, $this->hidden ) ) {
398
-					$attributes[ $key ] = $this->get_attribute( $key );
396
+			foreach ($this->get_attribute_keys() as $key) {
397
+				if (!in_array($key, $this->hidden)) {
398
+					$attributes[$key] = $this->get_attribute($key);
399 399
 				}
400 400
 			}
401 401
 		} else {
402 402
 			// If nothing is hidden/visible, we'll grab and reveal everything.
403
-			foreach ( $this->get_attribute_keys() as $key ) {
404
-				$attributes[ $key ] = $this->get_attribute( $key );
403
+			foreach ($this->get_attribute_keys() as $key) {
404
+				$attributes[$key] = $this->get_attribute($key);
405 405
 			}
406 406
 		}
407 407
 
408
-		return array_map( function ( $attribute ) {
409
-			if ( $attribute instanceof Serializes ) {
408
+		return array_map(function($attribute) {
409
+			if ($attribute instanceof Serializes) {
410 410
 				return $attribute->serialize();
411 411
 			}
412 412
 
413 413
 			return $attribute;
414
-		}, $attributes );
414
+		}, $attributes);
415 415
 	}
416 416
 
417 417
 	/**
@@ -422,13 +422,13 @@  discard block
 block discarded – undo
422 422
 	public function sync_original() {
423 423
 		$this->original = $this->attributes;
424 424
 
425
-		if ( $this->attributes[ self::OBJECT_KEY ] ) {
426
-			$this->original[ self::OBJECT_KEY ] = clone $this->attributes[ self::OBJECT_KEY ];
425
+		if ($this->attributes[self::OBJECT_KEY]) {
426
+			$this->original[self::OBJECT_KEY] = clone $this->attributes[self::OBJECT_KEY];
427 427
 		}
428 428
 
429
-		foreach ( $this->original[ self::TABLE_KEY ] as $key => $item ) {
430
-			if ( is_object( $item ) ) {
431
-				$this->original[ $key ] = clone $item;
429
+		foreach ($this->original[self::TABLE_KEY] as $key => $item) {
430
+			if (is_object($item)) {
431
+				$this->original[$key] = clone $item;
432 432
 			}
433 433
 		}
434 434
 
@@ -444,24 +444,24 @@  discard block
 block discarded – undo
444 444
 	 *
445 445
 	 * @return bool
446 446
 	 */
447
-	private function is_fillable( $name ) {
447
+	private function is_fillable($name) {
448 448
 		// If this model isn't guarded, everything is fillable.
449
-		if ( ! $this->is_guarded ) {
449
+		if (!$this->is_guarded) {
450 450
 			return true;
451 451
 		}
452 452
 
453 453
 		// If it's in the fillable array, then it's fillable.
454
-		if ( in_array( $name, $this->fillable ) ) {
454
+		if (in_array($name, $this->fillable)) {
455 455
 			return true;
456 456
 		}
457 457
 
458 458
 		// If it's explicitly guarded, then it's not fillable.
459
-		if ( in_array( $name, $this->guarded ) ) {
459
+		if (in_array($name, $this->guarded)) {
460 460
 			return false;
461 461
 		}
462 462
 
463 463
 		// If fillable hasn't been defined, then everything else fillable.
464
-		return ! $this->fillable;
464
+		return !$this->fillable;
465 465
 	}
466 466
 
467 467
 	/**
@@ -473,13 +473,13 @@  discard block
 block discarded – undo
473 473
 	 *
474 474
 	 * @return $this
475 475
 	 */
476
-	private function override_wp_object( $value ) {
477
-		if ( is_object( $value ) ) {
478
-			$this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $value );
476
+	private function override_wp_object($value) {
477
+		if (is_object($value)) {
478
+			$this->attributes[self::OBJECT_KEY] = $this->set_wp_object_constants($value);
479 479
 		} else {
480
-			$this->attributes[ self::OBJECT_KEY ] = null;
480
+			$this->attributes[self::OBJECT_KEY] = null;
481 481
 
482
-			if ( $this->uses_wp_object() ) {
482
+			if ($this->uses_wp_object()) {
483 483
 				$this->create_wp_object();
484 484
 			}
485 485
 		}
@@ -494,8 +494,8 @@  discard block
 block discarded – undo
494 494
 	 *
495 495
 	 * @return $this
496 496
 	 */
497
-	private function override_table( array $value ) {
498
-		$this->attributes[ self::TABLE_KEY ] = $value;
497
+	private function override_table(array $value) {
498
+		$this->attributes[self::TABLE_KEY] = $value;
499 499
 
500 500
 		return $this;
501 501
 	}
@@ -509,19 +509,19 @@  discard block
 block discarded – undo
509 509
 	 * @throws LogicException
510 510
 	 */
511 511
 	private function create_wp_object() {
512
-		switch ( true ) {
512
+		switch (true) {
513 513
 			case $this instanceof UsesWordPressPost:
514
-				$object = new WP_Post( (object) array() );
514
+				$object = new WP_Post((object) array());
515 515
 				break;
516 516
 			case $this instanceof UsesWordPressTerm:
517
-				$object = new WP_Term( (object) array() );
517
+				$object = new WP_Term((object) array());
518 518
 				break;
519 519
 			default:
520 520
 				throw new LogicException;
521 521
 				break;
522 522
 		}
523 523
 
524
-		$this->attributes[ self::OBJECT_KEY ] = $this->set_wp_object_constants( $object );
524
+		$this->attributes[self::OBJECT_KEY] = $this->set_wp_object_constants($object);
525 525
 	}
526 526
 
527 527
 	/**
@@ -535,12 +535,12 @@  discard block
 block discarded – undo
535 535
 	 *
536 536
 	 * @return object
537 537
 	 */
538
-	protected function set_wp_object_constants( $object ) {
539
-		if ( $this instanceof UsesWordPressPost ) {
538
+	protected function set_wp_object_constants($object) {
539
+		if ($this instanceof UsesWordPressPost) {
540 540
 			$object->post_type = static::get_post_type();
541 541
 		}
542 542
 
543
-		if ( $this instanceof UsesWordPressTerm ) {
543
+		if ($this instanceof UsesWordPressTerm) {
544 544
 			$object->taxonomy = static::get_taxonomy();
545 545
 		}
546 546
 
@@ -556,8 +556,8 @@  discard block
 block discarded – undo
556 556
 	 *
557 557
 	 * @return mixed
558 558
 	 */
559
-	public function __get( $name ) {
560
-		return $this->get_attribute( $name );
559
+	public function __get($name) {
560
+		return $this->get_attribute($name);
561 561
 	}
562 562
 
563 563
 	/**
@@ -569,21 +569,21 @@  discard block
 block discarded – undo
569 569
 	 *
570 570
 	 * @throws PropertyDoesNotExistException If property isn't found.
571 571
 	 */
572
-	public function get_attribute( $name ) {
573
-		if ( $method = $this->has_map_method( $name ) ) {
574
-			return $this->attributes[ self::OBJECT_KEY ]->{$this->{$method}()};
572
+	public function get_attribute($name) {
573
+		if ($method = $this->has_map_method($name)) {
574
+			return $this->attributes[self::OBJECT_KEY]->{$this->{$method}()};
575 575
 		}
576 576
 
577
-		if ( $method = $this->has_compute_method( $name ) ) {
577
+		if ($method = $this->has_compute_method($name)) {
578 578
 			return $this->{$method}();
579 579
 		}
580 580
 
581
-		if ( isset( $this->attributes[ self::TABLE_KEY ][ $name ] ) ) {
582
-			return $this->attributes[ self::TABLE_KEY ][ $name ];
581
+		if (isset($this->attributes[self::TABLE_KEY][$name])) {
582
+			return $this->attributes[self::TABLE_KEY][$name];
583 583
 		}
584 584
 
585
-		if ( isset( $this->defaults[ $name ] ) ) {
586
-			return $this->defaults[ $name ];
585
+		if (isset($this->defaults[$name])) {
586
+			return $this->defaults[$name];
587 587
 		}
588 588
 
589 589
 		return null;
@@ -598,16 +598,16 @@  discard block
 block discarded – undo
598 598
 	 *
599 599
 	 * @throws PropertyDoesNotExistException If property isn't found.
600 600
 	 */
601
-	public function get_original_attribute( $name ) {
601
+	public function get_original_attribute($name) {
602 602
 		$original_attributes = $this->original;
603 603
 
604
-		if ( ! is_object( $original_attributes[ static::OBJECT_KEY ] ) ) {
605
-			unset( $original_attributes[ static::OBJECT_KEY ] );
604
+		if (!is_object($original_attributes[static::OBJECT_KEY])) {
605
+			unset($original_attributes[static::OBJECT_KEY]);
606 606
 		}
607 607
 
608
-		$original = new static( $original_attributes );
608
+		$original = new static($original_attributes);
609 609
 
610
-		return $original->get_attribute( $name );
610
+		return $original->get_attribute($name);
611 611
 	}
612 612
 
613 613
 	/**
@@ -619,16 +619,16 @@  discard block
 block discarded – undo
619 619
 	 * @throws LogicException
620 620
 	 */
621 621
 	public function get_primary_id() {
622
-		if ( $this instanceof UsesWordPressPost ) {
622
+		if ($this instanceof UsesWordPressPost) {
623 623
 			return $this->get_underlying_wp_object()->ID;
624 624
 		}
625 625
 
626
-		if ( $this instanceof UsesWordPressTerm ) {
626
+		if ($this instanceof UsesWordPressTerm) {
627 627
 			return $this->get_underlying_wp_object()->term_id;
628 628
 		}
629 629
 
630
-		if ( $this instanceof UsesCustomTable ) {
631
-			return $this->get_attribute( $this->get_primary_key() );
630
+		if ($this instanceof UsesCustomTable) {
631
+			return $this->get_attribute($this->get_primary_key());
632 632
 		}
633 633
 
634 634
 		// Model w/o wp_object not yet supported.
@@ -646,8 +646,8 @@  discard block
 block discarded – undo
646 646
 	 *
647 647
 	 * @return false|string
648 648
 	 */
649
-	protected function has_map_method( $name ) {
650
-		if ( method_exists( $this, $method = "map_{$name}" ) ) {
649
+	protected function has_map_method($name) {
650
+		if (method_exists($this, $method = "map_{$name}")) {
651 651
 			return $method;
652 652
 		}
653 653
 
@@ -664,8 +664,8 @@  discard block
 block discarded – undo
664 664
 	 *
665 665
 	 * @return false|string
666 666
 	 */
667
-	protected function has_compute_method( $name ) {
668
-		if ( method_exists( $this, $method = "compute_{$name}" ) ) {
667
+	protected function has_compute_method($name) {
668
+		if (method_exists($this, $method = "compute_{$name}")) {
669 669
 			return $method;
670 670
 		}
671 671
 
@@ -687,12 +687,12 @@  discard block
 block discarded – undo
687 687
 			$this->get_wp_object_keys()
688 688
 		);
689 689
 
690
-		foreach ( $keys as $key ) {
690
+		foreach ($keys as $key) {
691 691
 			try {
692
-				$this->set_attribute( $key, null );
693
-			} catch ( Exception $e ) {
692
+				$this->set_attribute($key, null);
693
+			} catch (Exception $e) {
694 694
 				// We won't clear out guarded attributes.
695
-				if ( ! ( $e instanceof GuardedPropertyException ) ) {
695
+				if (!($e instanceof GuardedPropertyException)) {
696 696
 					throw $e;
697 697
 				}
698 698
 			}
@@ -727,13 +727,13 @@  discard block
 block discarded – undo
727 727
 	 * @return array
728 728
 	 */
729 729
 	protected function get_compute_methods() {
730
-		$methods = get_class_methods( get_called_class() );
731
-		$methods = array_filter( $methods, function ( $method ) {
732
-			return strrpos( $method, 'compute_', - strlen( $method ) ) !== false;
730
+		$methods = get_class_methods(get_called_class());
731
+		$methods = array_filter($methods, function($method) {
732
+			return strrpos($method, 'compute_', - strlen($method)) !== false;
733 733
 		} );
734
-		$methods = array_map( function ( $method ) {
735
-			return substr( $method, strlen( 'compute_' ) );
736
-		}, $methods );
734
+		$methods = array_map(function($method) {
735
+			return substr($method, strlen('compute_'));
736
+		}, $methods);
737 737
 
738 738
 		return $methods;
739 739
 	}
@@ -742,8 +742,8 @@  discard block
 block discarded – undo
742 742
 	 * Sets up the memo array for the creating model.
743 743
 	 */
744 744
 	private function maybe_boot() {
745
-		if ( ! isset( self::$memo[ get_called_class() ] ) ) {
746
-			self::$memo[ get_called_class() ] = array();
745
+		if (!isset(self::$memo[get_called_class()])) {
746
+			self::$memo[get_called_class()] = array();
747 747
 		}
748 748
 	}
749 749
 
Please login to merge, or discard this patch.
src/Axolotl/GuardedPropertyException.php 2 patches
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -10,21 +10,21 @@
 block discarded – undo
10 10
  * @subpackage Axolotl
11 11
  */
12 12
 class GuardedPropertyException extends RuntimeException {
13
-	/**
14
-	 * Property that threw.
15
-	 *
16
-	 * @var string
17
-	 */
18
-	public $property;
13
+    /**
14
+     * Property that threw.
15
+     *
16
+     * @var string
17
+     */
18
+    public $property;
19 19
 
20
-	/**
21
-	 * Construct a GuardedPropertyException.
22
-	 *
23
-	 * @param string $property Property that was guarded.
24
-	 */
25
-	public function __construct( $property ) {
26
-		parent::__construct();
20
+    /**
21
+     * Construct a GuardedPropertyException.
22
+     *
23
+     * @param string $property Property that was guarded.
24
+     */
25
+    public function __construct( $property ) {
26
+        parent::__construct();
27 27
 
28
-		$this->property = $property;
29
-	}
28
+        $this->property = $property;
29
+    }
30 30
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -22,7 +22,7 @@
 block discarded – undo
22 22
 	 *
23 23
 	 * @param string $property Property that was guarded.
24 24
 	 */
25
-	public function __construct( $property ) {
25
+	public function __construct($property) {
26 26
 		parent::__construct();
27 27
 
28 28
 		$this->property = $property;
Please login to merge, or discard this patch.