Passed
Push — master ( a8decd...3a3f23 )
by litefeel
02:30
created
lib/fileinfo.php 2 patches
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -6,13 +6,13 @@
 block discarded – undo
6 6
  */
7 7
 class Writing_On_GitHub_File_Info {
8 8
 
9
-    public function __construct( stdClass $data ) {
10
-        $this->sha          = $data->sha;
11
-        $this->path         = $data->path;
12
-        $this->status       = $data->status;
13
-    }
9
+	public function __construct( stdClass $data ) {
10
+		$this->sha          = $data->sha;
11
+		$this->path         = $data->path;
12
+		$this->status       = $data->status;
13
+	}
14 14
 
15
-    public $sha;
16
-    public $path;
17
-    public $status;  // added removed modified
15
+	public $sha;
16
+	public $path;
17
+	public $status;  // added removed modified
18 18
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  */
7 7
 class Writing_On_GitHub_File_Info {
8 8
 
9
-    public function __construct( stdClass $data ) {
9
+    public function __construct(stdClass $data) {
10 10
         $this->sha          = $data->sha;
11 11
         $this->path         = $data->path;
12 12
         $this->status       = $data->status;
@@ -14,5 +14,5 @@  discard block
 block discarded – undo
14 14
 
15 15
     public $sha;
16 16
     public $path;
17
-    public $status;  // added removed modified
17
+    public $status; // added removed modified
18 18
 }
Please login to merge, or discard this patch.
lib/export.php 2 patches
Indentation   +255 added lines, -255 removed lines patch added patch discarded remove patch
@@ -10,259 +10,259 @@
 block discarded – undo
10 10
  */
11 11
 class Writing_On_GitHub_Export {
12 12
 
13
-    /**
14
-     * Application container.
15
-     *
16
-     * @var Writing_On_GitHub
17
-     */
18
-    protected $app;
19
-
20
-    /**
21
-     * Initializes a new export manager.
22
-     *
23
-     * @param Writing_On_GitHub $app Application container.
24
-     */
25
-    public function __construct( Writing_On_GitHub $app ) {
26
-        $this->app = $app;
27
-    }
28
-
29
-    /**
30
-     * Updates all of the current posts in the database on master.
31
-     *
32
-     * @param  bool    $force
33
-     *
34
-     * @return string|WP_Error
35
-     */
36
-    public function full( $force = false ) {
37
-        $posts = $this->app->database()->fetch_all_supported( $force );
38
-
39
-        if ( is_wp_error( $posts ) ) {
40
-            /* @var WP_Error $posts */
41
-            return $posts;
42
-        }
43
-
44
-        $error = '';
45
-
46
-        foreach ( $posts as $post ) {
47
-            $result = $this->update( $post->id() );
48
-            if ( is_wp_error( $result ) ) {
49
-                /* @var WP_Error $result */
50
-                $error = wogh_append_error( $error, $result );
51
-            }
52
-        }
53
-
54
-        if ( is_wp_error( $error ) ) {
55
-            /* @var WP_Error $error */
56
-            return $error;
57
-        }
58
-
59
-        return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
60
-    }
61
-
62
-
63
-    /**
64
-     * Check if it exists in github
65
-     * @param  int  $post_id
66
-     * @return boolean
67
-     */
68
-    protected function github_path( $post_id ) {
69
-        $github_path = get_post_meta( $post_id, '_wogh_github_path', true );
70
-
71
-        if ( $github_path && $this->app->api()->fetch()->exists( $github_path ) ) {
72
-            return $github_path;
73
-        }
74
-
75
-        return false;
76
-    }
77
-
78
-    /**
79
-     * Updates the provided post ID in master.
80
-     *
81
-     * @param int $post_id Post ID to update.
82
-     *
83
-     * @return string|WP_Error
84
-     */
85
-    public function update( $post_id ) {
86
-        $post = $this->app->database()->fetch_by_id( $post_id );
87
-
88
-        if ( is_wp_error( $post ) ) {
89
-            /* @var WP_Error $post */
90
-            return $post;
91
-        }
92
-
93
-        if ( 'trash' === $post->status() ) {
94
-            return $this->delete( $post_id );
95
-        }
96
-
97
-        if ( $old_github_path = $this->github_path( $post->id() ) ) {
98
-            error_log("old_github_path: $old_github_path");
99
-            $post->set_old_github_path($old_github_path);
100
-        }
101
-
102
-        $result = $this->new_posts( array( $post ) );
103
-
104
-        if ( is_wp_error( $result ) ) {
105
-            /* @var WP_Error $result */
106
-            return $result;
107
-        }
108
-
109
-        return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
110
-    }
111
-
112
-    /**
113
-     * Updates GitHub-created posts with latest WordPress data.
114
-     *
115
-     * @param Writing_On_GitHub_Post[] $posts Array of Posts to create.
116
-     *
117
-     * @return string|WP_Error
118
-     */
119
-    public function new_posts( array $posts ) {
120
-        $persist = $this->app->api()->persist();
121
-
122
-        $error = '';
123
-        foreach ( $posts as $post ) {
124
-            $result = $this->new_post( $post, $persist );
125
-            if ( is_wp_error( $result ) ) {
126
-                /* @var WP_Error $result */
127
-                $error = wogh_append_error( $error, $result );
128
-            }
129
-        }
130
-
131
-        if ( is_wp_error( $error ) ) {
132
-            return $error;
133
-        }
134
-
135
-        return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
136
-    }
137
-
138
-    protected function new_post( $post, $persist ) {
139
-        $github_path = $post->github_path();
140
-        $old_github_path = $post->old_github_path();
141
-        $blob = $post->to_blob();
142
-        $result = false;
143
-
144
-        if ( $old_github_path && $old_github_path != $github_path ) {
145
-            // rename
146
-            $message = apply_filters(
147
-                'wogh_commit_msg_move_post',
148
-                sprintf(
149
-                    'Move %s to %s via WordPress at %s (%s)',
150
-                    $old_github_path, $github_path,
151
-                    site_url(),
152
-                    get_bloginfo( 'name' )
153
-                )
154
-            ) . $this->get_commit_msg_tag();
155
-
156
-            $result = $persist->delete_file( $post->old_github_path(), $blob->sha(), $message );
157
-            if ( is_wp_error( $result ) ) {
158
-                return $result;
159
-            }
160
-
161
-            $result = $persist->create_file( $blob, $message );
162
-            if ( is_wp_error( $result ) ) {
163
-                return $result;
164
-            }
165
-        } elseif ( ! $old_github_path ) {
166
-            // create new
167
-            $message = apply_filters(
168
-                'wogh_commit_msg_new_post',
169
-                sprintf(
170
-                    'Create new post %s from WordPress at %s (%s)',
171
-                    $github_path,
172
-                    site_url(),
173
-                    get_bloginfo( 'name' )
174
-                )
175
-            ) . $this->get_commit_msg_tag();
176
-            $result = $persist->create_file( $blob, $message );
177
-            if ( is_wp_error( $result ) ) {
178
-                return $result;
179
-            }
180
-        } elseif ( $old_github_path && $old_github_path == $github_path ) {
181
-            // update
182
-            $message = apply_filters(
183
-                'wogh_commit_msg_update_post',
184
-                sprintf(
185
-                    'Update post %s from WordPress at %s (%s)',
186
-                    $github_path,
187
-                    site_url(),
188
-                    get_bloginfo( 'name' )
189
-                )
190
-            ) . $this->get_commit_msg_tag();
191
-            $result = $persist->update_file( $blob, $message );
192
-            if ( is_wp_error( $result ) ) {
193
-                return $result;
194
-            }
195
-        }
196
-
197
-        $sha = $result->content->sha;
198
-        $post->set_sha($sha);
199
-        $post->set_old_github_path($github_path);
200
-
201
-        return true;
202
-    }
203
-
204
-    /**
205
-     * Deletes a provided post ID from master.
206
-     *
207
-     * @param int $post_id Post ID to delete.
208
-     *
209
-     * @return string|WP_Error
210
-     */
211
-    public function delete( $post_id ) {
212
-        $post = $this->app->database()->fetch_by_id( $post_id );
213
-
214
-        if ( is_wp_error( $post ) ) {
215
-            /* @var WP_Error $post */
216
-            return $post;
217
-        }
218
-
219
-        $github_path = get_post_meta( $post_id, '_wogh_github_path', true );
220
-
221
-        $message = apply_filters(
222
-            'wogh_commit_msg_delete',
223
-            sprintf(
224
-                'Deleting %s via WordPress at %s (%s)',
225
-                $github_path,
226
-                site_url(),
227
-                get_bloginfo( 'name' )
228
-            ),
229
-            $post
230
-        ) . $this->get_commit_msg_tag();
231
-
232
-        $result = $this->app->api()->persist()->delete_file( $github_path, $post->sha(), $message );
233
-
234
-        if ( is_wp_error( $result ) ) {
235
-            /* @var WP_Error $result */
236
-            return $result;
237
-        }
238
-
239
-        return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
240
-    }
241
-
242
-
243
-    /**
244
-     * Saves the export user to the database.
245
-     *
246
-     * @param int $user_id User ID to export with.
247
-     *
248
-     * @return bool
249
-     */
250
-    public function set_user( $user_id ) {
251
-        return update_option( self::EXPORT_USER_OPTION, (int) $user_id );
252
-    }
253
-
254
-    /**
255
-     * Gets the commit message tag.
256
-     *
257
-     * @return string
258
-     */
259
-    protected function get_commit_msg_tag() {
260
-        $tag = apply_filters( 'wogh_commit_msg_tag', 'wogh' );
261
-
262
-        if ( ! $tag ) {
263
-            throw new Exception( __( 'Commit message tag not set. Filter `wogh_commit_msg_tag` misconfigured.', 'writing-on-github' ) );
264
-        }
265
-
266
-        return ' - ' . $tag;
267
-    }
13
+	/**
14
+	 * Application container.
15
+	 *
16
+	 * @var Writing_On_GitHub
17
+	 */
18
+	protected $app;
19
+
20
+	/**
21
+	 * Initializes a new export manager.
22
+	 *
23
+	 * @param Writing_On_GitHub $app Application container.
24
+	 */
25
+	public function __construct( Writing_On_GitHub $app ) {
26
+		$this->app = $app;
27
+	}
28
+
29
+	/**
30
+	 * Updates all of the current posts in the database on master.
31
+	 *
32
+	 * @param  bool    $force
33
+	 *
34
+	 * @return string|WP_Error
35
+	 */
36
+	public function full( $force = false ) {
37
+		$posts = $this->app->database()->fetch_all_supported( $force );
38
+
39
+		if ( is_wp_error( $posts ) ) {
40
+			/* @var WP_Error $posts */
41
+			return $posts;
42
+		}
43
+
44
+		$error = '';
45
+
46
+		foreach ( $posts as $post ) {
47
+			$result = $this->update( $post->id() );
48
+			if ( is_wp_error( $result ) ) {
49
+				/* @var WP_Error $result */
50
+				$error = wogh_append_error( $error, $result );
51
+			}
52
+		}
53
+
54
+		if ( is_wp_error( $error ) ) {
55
+			/* @var WP_Error $error */
56
+			return $error;
57
+		}
58
+
59
+		return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
60
+	}
61
+
62
+
63
+	/**
64
+	 * Check if it exists in github
65
+	 * @param  int  $post_id
66
+	 * @return boolean
67
+	 */
68
+	protected function github_path( $post_id ) {
69
+		$github_path = get_post_meta( $post_id, '_wogh_github_path', true );
70
+
71
+		if ( $github_path && $this->app->api()->fetch()->exists( $github_path ) ) {
72
+			return $github_path;
73
+		}
74
+
75
+		return false;
76
+	}
77
+
78
+	/**
79
+	 * Updates the provided post ID in master.
80
+	 *
81
+	 * @param int $post_id Post ID to update.
82
+	 *
83
+	 * @return string|WP_Error
84
+	 */
85
+	public function update( $post_id ) {
86
+		$post = $this->app->database()->fetch_by_id( $post_id );
87
+
88
+		if ( is_wp_error( $post ) ) {
89
+			/* @var WP_Error $post */
90
+			return $post;
91
+		}
92
+
93
+		if ( 'trash' === $post->status() ) {
94
+			return $this->delete( $post_id );
95
+		}
96
+
97
+		if ( $old_github_path = $this->github_path( $post->id() ) ) {
98
+			error_log("old_github_path: $old_github_path");
99
+			$post->set_old_github_path($old_github_path);
100
+		}
101
+
102
+		$result = $this->new_posts( array( $post ) );
103
+
104
+		if ( is_wp_error( $result ) ) {
105
+			/* @var WP_Error $result */
106
+			return $result;
107
+		}
108
+
109
+		return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
110
+	}
111
+
112
+	/**
113
+	 * Updates GitHub-created posts with latest WordPress data.
114
+	 *
115
+	 * @param Writing_On_GitHub_Post[] $posts Array of Posts to create.
116
+	 *
117
+	 * @return string|WP_Error
118
+	 */
119
+	public function new_posts( array $posts ) {
120
+		$persist = $this->app->api()->persist();
121
+
122
+		$error = '';
123
+		foreach ( $posts as $post ) {
124
+			$result = $this->new_post( $post, $persist );
125
+			if ( is_wp_error( $result ) ) {
126
+				/* @var WP_Error $result */
127
+				$error = wogh_append_error( $error, $result );
128
+			}
129
+		}
130
+
131
+		if ( is_wp_error( $error ) ) {
132
+			return $error;
133
+		}
134
+
135
+		return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
136
+	}
137
+
138
+	protected function new_post( $post, $persist ) {
139
+		$github_path = $post->github_path();
140
+		$old_github_path = $post->old_github_path();
141
+		$blob = $post->to_blob();
142
+		$result = false;
143
+
144
+		if ( $old_github_path && $old_github_path != $github_path ) {
145
+			// rename
146
+			$message = apply_filters(
147
+				'wogh_commit_msg_move_post',
148
+				sprintf(
149
+					'Move %s to %s via WordPress at %s (%s)',
150
+					$old_github_path, $github_path,
151
+					site_url(),
152
+					get_bloginfo( 'name' )
153
+				)
154
+			) . $this->get_commit_msg_tag();
155
+
156
+			$result = $persist->delete_file( $post->old_github_path(), $blob->sha(), $message );
157
+			if ( is_wp_error( $result ) ) {
158
+				return $result;
159
+			}
160
+
161
+			$result = $persist->create_file( $blob, $message );
162
+			if ( is_wp_error( $result ) ) {
163
+				return $result;
164
+			}
165
+		} elseif ( ! $old_github_path ) {
166
+			// create new
167
+			$message = apply_filters(
168
+				'wogh_commit_msg_new_post',
169
+				sprintf(
170
+					'Create new post %s from WordPress at %s (%s)',
171
+					$github_path,
172
+					site_url(),
173
+					get_bloginfo( 'name' )
174
+				)
175
+			) . $this->get_commit_msg_tag();
176
+			$result = $persist->create_file( $blob, $message );
177
+			if ( is_wp_error( $result ) ) {
178
+				return $result;
179
+			}
180
+		} elseif ( $old_github_path && $old_github_path == $github_path ) {
181
+			// update
182
+			$message = apply_filters(
183
+				'wogh_commit_msg_update_post',
184
+				sprintf(
185
+					'Update post %s from WordPress at %s (%s)',
186
+					$github_path,
187
+					site_url(),
188
+					get_bloginfo( 'name' )
189
+				)
190
+			) . $this->get_commit_msg_tag();
191
+			$result = $persist->update_file( $blob, $message );
192
+			if ( is_wp_error( $result ) ) {
193
+				return $result;
194
+			}
195
+		}
196
+
197
+		$sha = $result->content->sha;
198
+		$post->set_sha($sha);
199
+		$post->set_old_github_path($github_path);
200
+
201
+		return true;
202
+	}
203
+
204
+	/**
205
+	 * Deletes a provided post ID from master.
206
+	 *
207
+	 * @param int $post_id Post ID to delete.
208
+	 *
209
+	 * @return string|WP_Error
210
+	 */
211
+	public function delete( $post_id ) {
212
+		$post = $this->app->database()->fetch_by_id( $post_id );
213
+
214
+		if ( is_wp_error( $post ) ) {
215
+			/* @var WP_Error $post */
216
+			return $post;
217
+		}
218
+
219
+		$github_path = get_post_meta( $post_id, '_wogh_github_path', true );
220
+
221
+		$message = apply_filters(
222
+			'wogh_commit_msg_delete',
223
+			sprintf(
224
+				'Deleting %s via WordPress at %s (%s)',
225
+				$github_path,
226
+				site_url(),
227
+				get_bloginfo( 'name' )
228
+			),
229
+			$post
230
+		) . $this->get_commit_msg_tag();
231
+
232
+		$result = $this->app->api()->persist()->delete_file( $github_path, $post->sha(), $message );
233
+
234
+		if ( is_wp_error( $result ) ) {
235
+			/* @var WP_Error $result */
236
+			return $result;
237
+		}
238
+
239
+		return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
240
+	}
241
+
242
+
243
+	/**
244
+	 * Saves the export user to the database.
245
+	 *
246
+	 * @param int $user_id User ID to export with.
247
+	 *
248
+	 * @return bool
249
+	 */
250
+	public function set_user( $user_id ) {
251
+		return update_option( self::EXPORT_USER_OPTION, (int) $user_id );
252
+	}
253
+
254
+	/**
255
+	 * Gets the commit message tag.
256
+	 *
257
+	 * @return string
258
+	 */
259
+	protected function get_commit_msg_tag() {
260
+		$tag = apply_filters( 'wogh_commit_msg_tag', 'wogh' );
261
+
262
+		if ( ! $tag ) {
263
+			throw new Exception( __( 'Commit message tag not set. Filter `wogh_commit_msg_tag` misconfigured.', 'writing-on-github' ) );
264
+		}
265
+
266
+		return ' - ' . $tag;
267
+	}
268 268
 }
Please login to merge, or discard this patch.
Spacing   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -22,7 +22,7 @@  discard block
 block discarded – undo
22 22
      *
23 23
      * @param Writing_On_GitHub $app Application container.
24 24
      */
25
-    public function __construct( Writing_On_GitHub $app ) {
25
+    public function __construct(Writing_On_GitHub $app) {
26 26
         $this->app = $app;
27 27
     }
28 28
 
@@ -33,30 +33,30 @@  discard block
 block discarded – undo
33 33
      *
34 34
      * @return string|WP_Error
35 35
      */
36
-    public function full( $force = false ) {
37
-        $posts = $this->app->database()->fetch_all_supported( $force );
36
+    public function full($force = false) {
37
+        $posts = $this->app->database()->fetch_all_supported($force);
38 38
 
39
-        if ( is_wp_error( $posts ) ) {
39
+        if (is_wp_error($posts)) {
40 40
             /* @var WP_Error $posts */
41 41
             return $posts;
42 42
         }
43 43
 
44 44
         $error = '';
45 45
 
46
-        foreach ( $posts as $post ) {
47
-            $result = $this->update( $post->id() );
48
-            if ( is_wp_error( $result ) ) {
46
+        foreach ($posts as $post) {
47
+            $result = $this->update($post->id());
48
+            if (is_wp_error($result)) {
49 49
                 /* @var WP_Error $result */
50
-                $error = wogh_append_error( $error, $result );
50
+                $error = wogh_append_error($error, $result);
51 51
             }
52 52
         }
53 53
 
54
-        if ( is_wp_error( $error ) ) {
54
+        if (is_wp_error($error)) {
55 55
             /* @var WP_Error $error */
56 56
             return $error;
57 57
         }
58 58
 
59
-        return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
59
+        return __('Export to GitHub completed successfully.', 'writing-on-github');
60 60
     }
61 61
 
62 62
 
@@ -65,10 +65,10 @@  discard block
 block discarded – undo
65 65
      * @param  int  $post_id
66 66
      * @return boolean
67 67
      */
68
-    protected function github_path( $post_id ) {
69
-        $github_path = get_post_meta( $post_id, '_wogh_github_path', true );
68
+    protected function github_path($post_id) {
69
+        $github_path = get_post_meta($post_id, '_wogh_github_path', true);
70 70
 
71
-        if ( $github_path && $this->app->api()->fetch()->exists( $github_path ) ) {
71
+        if ($github_path && $this->app->api()->fetch()->exists($github_path)) {
72 72
             return $github_path;
73 73
         }
74 74
 
@@ -82,31 +82,31 @@  discard block
 block discarded – undo
82 82
      *
83 83
      * @return string|WP_Error
84 84
      */
85
-    public function update( $post_id ) {
86
-        $post = $this->app->database()->fetch_by_id( $post_id );
85
+    public function update($post_id) {
86
+        $post = $this->app->database()->fetch_by_id($post_id);
87 87
 
88
-        if ( is_wp_error( $post ) ) {
88
+        if (is_wp_error($post)) {
89 89
             /* @var WP_Error $post */
90 90
             return $post;
91 91
         }
92 92
 
93
-        if ( 'trash' === $post->status() ) {
94
-            return $this->delete( $post_id );
93
+        if ('trash' === $post->status()) {
94
+            return $this->delete($post_id);
95 95
         }
96 96
 
97
-        if ( $old_github_path = $this->github_path( $post->id() ) ) {
97
+        if ($old_github_path = $this->github_path($post->id())) {
98 98
             error_log("old_github_path: $old_github_path");
99 99
             $post->set_old_github_path($old_github_path);
100 100
         }
101 101
 
102
-        $result = $this->new_posts( array( $post ) );
102
+        $result = $this->new_posts(array($post));
103 103
 
104
-        if ( is_wp_error( $result ) ) {
104
+        if (is_wp_error($result)) {
105 105
             /* @var WP_Error $result */
106 106
             return $result;
107 107
         }
108 108
 
109
-        return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
109
+        return __('Export to GitHub completed successfully.', 'writing-on-github');
110 110
     }
111 111
 
112 112
     /**
@@ -116,32 +116,32 @@  discard block
 block discarded – undo
116 116
      *
117 117
      * @return string|WP_Error
118 118
      */
119
-    public function new_posts( array $posts ) {
119
+    public function new_posts(array $posts) {
120 120
         $persist = $this->app->api()->persist();
121 121
 
122 122
         $error = '';
123
-        foreach ( $posts as $post ) {
124
-            $result = $this->new_post( $post, $persist );
125
-            if ( is_wp_error( $result ) ) {
123
+        foreach ($posts as $post) {
124
+            $result = $this->new_post($post, $persist);
125
+            if (is_wp_error($result)) {
126 126
                 /* @var WP_Error $result */
127
-                $error = wogh_append_error( $error, $result );
127
+                $error = wogh_append_error($error, $result);
128 128
             }
129 129
         }
130 130
 
131
-        if ( is_wp_error( $error ) ) {
131
+        if (is_wp_error($error)) {
132 132
             return $error;
133 133
         }
134 134
 
135
-        return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
135
+        return __('Export to GitHub completed successfully.', 'writing-on-github');
136 136
     }
137 137
 
138
-    protected function new_post( $post, $persist ) {
138
+    protected function new_post($post, $persist) {
139 139
         $github_path = $post->github_path();
140 140
         $old_github_path = $post->old_github_path();
141 141
         $blob = $post->to_blob();
142 142
         $result = false;
143 143
 
144
-        if ( $old_github_path && $old_github_path != $github_path ) {
144
+        if ($old_github_path && $old_github_path != $github_path) {
145 145
             // rename
146 146
             $message = apply_filters(
147 147
                 'wogh_commit_msg_move_post',
@@ -149,20 +149,20 @@  discard block
 block discarded – undo
149 149
                     'Move %s to %s via WordPress at %s (%s)',
150 150
                     $old_github_path, $github_path,
151 151
                     site_url(),
152
-                    get_bloginfo( 'name' )
152
+                    get_bloginfo('name')
153 153
                 )
154 154
             ) . $this->get_commit_msg_tag();
155 155
 
156
-            $result = $persist->delete_file( $post->old_github_path(), $blob->sha(), $message );
157
-            if ( is_wp_error( $result ) ) {
156
+            $result = $persist->delete_file($post->old_github_path(), $blob->sha(), $message);
157
+            if (is_wp_error($result)) {
158 158
                 return $result;
159 159
             }
160 160
 
161
-            $result = $persist->create_file( $blob, $message );
162
-            if ( is_wp_error( $result ) ) {
161
+            $result = $persist->create_file($blob, $message);
162
+            if (is_wp_error($result)) {
163 163
                 return $result;
164 164
             }
165
-        } elseif ( ! $old_github_path ) {
165
+        } elseif ( ! $old_github_path) {
166 166
             // create new
167 167
             $message = apply_filters(
168 168
                 'wogh_commit_msg_new_post',
@@ -170,14 +170,14 @@  discard block
 block discarded – undo
170 170
                     'Create new post %s from WordPress at %s (%s)',
171 171
                     $github_path,
172 172
                     site_url(),
173
-                    get_bloginfo( 'name' )
173
+                    get_bloginfo('name')
174 174
                 )
175 175
             ) . $this->get_commit_msg_tag();
176
-            $result = $persist->create_file( $blob, $message );
177
-            if ( is_wp_error( $result ) ) {
176
+            $result = $persist->create_file($blob, $message);
177
+            if (is_wp_error($result)) {
178 178
                 return $result;
179 179
             }
180
-        } elseif ( $old_github_path && $old_github_path == $github_path ) {
180
+        } elseif ($old_github_path && $old_github_path == $github_path) {
181 181
             // update
182 182
             $message = apply_filters(
183 183
                 'wogh_commit_msg_update_post',
@@ -185,11 +185,11 @@  discard block
 block discarded – undo
185 185
                     'Update post %s from WordPress at %s (%s)',
186 186
                     $github_path,
187 187
                     site_url(),
188
-                    get_bloginfo( 'name' )
188
+                    get_bloginfo('name')
189 189
                 )
190 190
             ) . $this->get_commit_msg_tag();
191
-            $result = $persist->update_file( $blob, $message );
192
-            if ( is_wp_error( $result ) ) {
191
+            $result = $persist->update_file($blob, $message);
192
+            if (is_wp_error($result)) {
193 193
                 return $result;
194 194
             }
195 195
         }
@@ -208,15 +208,15 @@  discard block
 block discarded – undo
208 208
      *
209 209
      * @return string|WP_Error
210 210
      */
211
-    public function delete( $post_id ) {
212
-        $post = $this->app->database()->fetch_by_id( $post_id );
211
+    public function delete($post_id) {
212
+        $post = $this->app->database()->fetch_by_id($post_id);
213 213
 
214
-        if ( is_wp_error( $post ) ) {
214
+        if (is_wp_error($post)) {
215 215
             /* @var WP_Error $post */
216 216
             return $post;
217 217
         }
218 218
 
219
-        $github_path = get_post_meta( $post_id, '_wogh_github_path', true );
219
+        $github_path = get_post_meta($post_id, '_wogh_github_path', true);
220 220
 
221 221
         $message = apply_filters(
222 222
             'wogh_commit_msg_delete',
@@ -224,19 +224,19 @@  discard block
 block discarded – undo
224 224
                 'Deleting %s via WordPress at %s (%s)',
225 225
                 $github_path,
226 226
                 site_url(),
227
-                get_bloginfo( 'name' )
227
+                get_bloginfo('name')
228 228
             ),
229 229
             $post
230 230
         ) . $this->get_commit_msg_tag();
231 231
 
232
-        $result = $this->app->api()->persist()->delete_file( $github_path, $post->sha(), $message );
232
+        $result = $this->app->api()->persist()->delete_file($github_path, $post->sha(), $message);
233 233
 
234
-        if ( is_wp_error( $result ) ) {
234
+        if (is_wp_error($result)) {
235 235
             /* @var WP_Error $result */
236 236
             return $result;
237 237
         }
238 238
 
239
-        return __( 'Export to GitHub completed successfully.', 'writing-on-github' );
239
+        return __('Export to GitHub completed successfully.', 'writing-on-github');
240 240
     }
241 241
 
242 242
 
@@ -247,8 +247,8 @@  discard block
 block discarded – undo
247 247
      *
248 248
      * @return bool
249 249
      */
250
-    public function set_user( $user_id ) {
251
-        return update_option( self::EXPORT_USER_OPTION, (int) $user_id );
250
+    public function set_user($user_id) {
251
+        return update_option(self::EXPORT_USER_OPTION, (int) $user_id);
252 252
     }
253 253
 
254 254
     /**
@@ -257,10 +257,10 @@  discard block
 block discarded – undo
257 257
      * @return string
258 258
      */
259 259
     protected function get_commit_msg_tag() {
260
-        $tag = apply_filters( 'wogh_commit_msg_tag', 'wogh' );
260
+        $tag = apply_filters('wogh_commit_msg_tag', 'wogh');
261 261
 
262
-        if ( ! $tag ) {
263
-            throw new Exception( __( 'Commit message tag not set. Filter `wogh_commit_msg_tag` misconfigured.', 'writing-on-github' ) );
262
+        if ( ! $tag) {
263
+            throw new Exception(__('Commit message tag not set. Filter `wogh_commit_msg_tag` misconfigured.', 'writing-on-github'));
264 264
         }
265 265
 
266 266
         return ' - ' . $tag;
Please login to merge, or discard this patch.
lib/database.php 2 patches
Indentation   +527 added lines, -527 removed lines patch added patch discarded remove patch
@@ -9,531 +9,531 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Database {
11 11
 
12
-    /**
13
-     * Application container.
14
-     *
15
-     * @var Writing_On_GitHub
16
-     */
17
-    protected $app;
18
-
19
-    /**
20
-     * Currently whitelisted post types.
21
-     *
22
-     * @var array
23
-     */
24
-    protected $whitelisted_post_types = array( 'post', 'page' );
25
-
26
-    /**
27
-     * Currently whitelisted post statuses.
28
-     *
29
-     * @var array
30
-     */
31
-    protected $whitelisted_post_statuses = array( 'publish' );
32
-
33
-    /**
34
-     * Instantiates a new Database object.
35
-     *
36
-     * @param Writing_On_GitHub $app Application container.
37
-     */
38
-    public function __construct( Writing_On_GitHub $app ) {
39
-        $this->app = $app;
40
-    }
41
-
42
-    /**
43
-     * Queries the database for all of the supported posts.
44
-     *
45
-     * @param  bool $force
46
-     *
47
-     * @return Writing_On_GitHub_Post[]|WP_Error
48
-     */
49
-    public function fetch_all_supported( $force = false ) {
50
-        $args  = array(
51
-            'post_type'   => $this->get_whitelisted_post_types(),
52
-            'post_status' => $this->get_whitelisted_post_statuses(),
53
-            'nopaging'    => true,
54
-            'fields'      => 'ids',
55
-        );
56
-
57
-        $query = new WP_Query( apply_filters( 'wogh_pre_fetch_all_supported', $args ) );
58
-
59
-        $post_ids = $query->get_posts();
60
-
61
-        if ( ! $post_ids ) {
62
-            return new WP_Error(
63
-                'no_results',
64
-                __( 'Querying for supported posts returned no results.', 'writing-on-github' )
65
-            );
66
-        }
67
-
68
-        /* @var Writing_On_GitHub_Post[] $results */
69
-        $results = array();
70
-        foreach ( $post_ids as $post_id ) {
71
-            // Do not export posts that have already been exported
72
-            if ( $force || ! get_post_meta( $post_id, '_wogh_sha', true ) ||
73
-                 ! get_post_meta( $post_id, '_wogh_github_path', true ) ) {
74
-
75
-                $results[] = new Writing_On_GitHub_Post( $post_id, $this->app->api() );
76
-            }
77
-        }
78
-
79
-        return $results;
80
-    }
81
-
82
-    /**
83
-     * Queries a post and returns it if it's supported.
84
-     *
85
-     * @param int $post_id Post ID to fetch.
86
-     *
87
-     * @return WP_Error|Writing_On_GitHub_Post
88
-     */
89
-    public function fetch_by_id( $post_id ) {
90
-        $post = new Writing_On_GitHub_Post( $post_id, $this->app->api() );
91
-
92
-        if ( ! $this->is_post_supported( $post ) ) {
93
-            return new WP_Error(
94
-                'unsupported_post',
95
-                sprintf(
96
-                    __(
97
-                        'Post ID %s is not supported by WOGH. See wiki to find out how to add support.',
98
-                        'writing-on-github'
99
-                    ),
100
-                    $post_id
101
-                )
102
-            );
103
-        }
104
-
105
-        return $post;
106
-    }
107
-
108
-    /**
109
-     * Saves an array of Post objects to the database
110
-     * and associates their author as well as their latest
111
-     *
112
-     * @param Writing_On_GitHub_Post[] $posts Array of Posts to save.
113
-     *
114
-     * @return string|WP_Error
115
-     */
116
-    public function save_posts( array $posts ) {
117
-
118
-        /**
119
-         * Whether an error has occurred.
120
-         *
121
-         * @var WP_Error|false $error
122
-         */
123
-        $error = false;
124
-
125
-        foreach ( $posts as $post ) {
126
-            $args = apply_filters( 'wogh_pre_import_args', $this->post_args( $post ), $post );
127
-
128
-            remove_filter( 'content_save_pre', 'wp_filter_post_kses' );
129
-            $post_id = $post->is_new() ?
130
-                wp_insert_post( $args, true ) :
131
-                wp_update_post( $args, true );
132
-            add_filter( 'content_save_pre', 'wp_filter_post_kses' );
133
-
134
-            if ( is_wp_error( $post_id ) ) {
135
-                /* @var WP_Error $post_id */
136
-                $error = wogh_append_error( $error, $post_id );
137
-
138
-                // Abort saving if updating the post fails.
139
-                continue;
140
-            }
141
-
142
-            if ( $post->is_new() ) {
143
-                $author = false;
144
-                $meta = $post->get_meta();
145
-                if ( ! empty( $meta ) && ! empty( $meta['author'] ) ) {
146
-                    $author = $meta['author'];
147
-                }
148
-                $user    = $this->fetch_commit_user( $author );
149
-                $user_id = is_wp_error( $user ) ? 0 : $user->ID;
150
-                $this->set_post_author( $post_id, $user_id );
151
-            }
152
-
153
-            $post->set_post( get_post( $post_id ) );
154
-
155
-            $meta = apply_filters( 'wogh_pre_import_meta', $post->get_meta(), $post );
156
-
157
-            update_post_meta( $post_id, '_wogh_sha', $meta['_wogh_sha'] );
158
-
159
-            // unset( $meta['tags'] );
160
-            // unset( $meta['categories'] );
161
-            // unset( $meta['author'] );
162
-            // unset( $meta['post_date'] );
163
-            // unset( $meta['post_excerpt'] );
164
-            // unset( $meta['permalink'] );
165
-            // unset( $meta['link'] );
166
-
167
-            // foreach ( $meta as $key => $value ) {
168
-            //  update_post_meta( $post_id, $key, $value );
169
-            // }
170
-        }
171
-
172
-        if ( $error ) {
173
-            return $error;
174
-        }
175
-
176
-        return __( 'Successfully saved posts.', 'writing-on-github' );
177
-    }
178
-
179
-    protected function post_args( $post ) {
180
-        $args = $post->get_args();
181
-        $meta = $post->get_meta();
182
-
183
-        // prevent backslash loss
184
-        $args['post_content'] = addslashes( $args['post_content'] );
185
-
186
-        // update tags
187
-        if ( ! empty( $meta['tags'] ) ) {
188
-            $args['tags_input'] = $meta['tags'];
189
-        }
190
-
191
-        // update categories
192
-        if ( ! empty( $meta['categories'] ) ) {
193
-            $categories = $meta['categories'];
194
-            if ( ! is_array( $categories ) ) {
195
-                $categories = array( $categories );
196
-            }
197
-            $terms = get_terms( array(
198
-                'taxonomy' => 'category',
199
-                'fields' => 'id=>name',
200
-                'hide_empty' => 0,
201
-                'name' => $categories
202
-                )
203
-            );
204
-            $map = array();
205
-            foreach ( $categories as $name ) {
206
-                $map[$name] = 1;
207
-            }
208
-
209
-            $ids = array();
210
-            if ( ! empty( $terms ) ) {
211
-                foreach ( $terms as $id => $name ) {
212
-                    $ids[] = $id;
213
-                    unset( $map[$name] );
214
-                }
215
-            }
216
-
217
-            // create new terms
218
-            if ( ! empty( $map ) ) {
219
-                foreach ( $map as $name => $value ) {
220
-                    $term = wp_insert_term( $name, 'category', array( 'parent' => 0 ) );
221
-                    // array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
222
-                    $ids[] = $term['term_id'];
223
-                }
224
-            }
225
-
226
-            $args['post_category'] = $ids;
227
-        }
228
-
229
-        return $args;
230
-    }
231
-
232
-    private function get_post_id_by_filename( $filename, $pattern  ) {
233
-        preg_match( $pattern , $filename, $matches );
234
-        $title = $matches[4];
235
-
236
-        $query = new WP_Query( array(
237
-            'name'     => $title,
238
-            'posts_per_page' => 1,
239
-            'post_type' => $this->get_whitelisted_post_types(),
240
-            'fields'         => 'ids',
241
-        ) );
242
-
243
-        $post_id = $query->get_posts();
244
-        $post_id = array_pop( $post_id );
245
-        return $post_id;
246
-    }
247
-
248
-    /**
249
-     * Deletes a post from the database based on its GitHub path.
250
-     *
251
-     * @param string $path Path of Post to delete.
252
-     *
253
-     * @return string|WP_Error
254
-     */
255
-    public function delete_post_by_path( $path ) {
256
-        $query = new WP_Query( array(
257
-            'meta_key'       => '_wogh_github_path',
258
-            'meta_value'     => $path,
259
-            'meta_compare'   => '=',
260
-            'posts_per_page' => 1,
261
-            'fields'         => 'ids',
262
-        ) );
263
-
264
-        $post_id = $query->get_posts();
265
-        $post_id = array_pop( $post_id );
266
-
267
-        if ( ! $post_id ) {
268
-            $parts     = explode( '/', $path );
269
-            $filename  = array_pop( $parts );
270
-            $directory = $parts ? array_shift( $parts ) : '';
271
-
272
-            if ( false !== strpos( $directory, 'post' ) ) {
273
-                $post_id = get_post_id_by_filename( $filename, '/([0-9]{4})-([0-9]{2})-([0-9]{2})-(.*)\.md/' );
274
-            }
275
-
276
-            if ( ! $post_id ) {
277
-                $post_id = get_post_id_by_filename( $filename, '/(.*)\.md/' );
278
-            }
279
-        }
280
-
281
-        if ( ! $post_id ) {
282
-            return new WP_Error(
283
-                'path_not_found',
284
-                sprintf(
285
-                    __( 'Post not found for path %s.', 'writing-on-github' ),
286
-                    $path
287
-                )
288
-            );
289
-        }
290
-
291
-        $result = wp_delete_post( $post_id );
292
-
293
-        // If deleting fails...
294
-        if ( false === $result ) {
295
-            $post = get_post( $post_id );
296
-
297
-            // ...and the post both exists and isn't in the trash...
298
-            if ( $post && 'trash' !== $post->post_status ) {
299
-                // ... then something went wrong.
300
-                return new WP_Error(
301
-                    'db_error',
302
-                    sprintf(
303
-                        __( 'Failed to delete post ID %d.', 'writing-on-github' ),
304
-                        $post_id
305
-                    )
306
-                );
307
-            }
308
-        }
309
-
310
-        return sprintf(
311
-            __( 'Successfully deleted post ID %d.', 'writing-on-github' ),
312
-            $post_id
313
-        );
314
-    }
315
-
316
-    public function delete_post( $post_id ) {
317
-        $result = wp_delete_post( $post_id );
318
-
319
-        // If deleting fails...
320
-        if ( false === $result ) {
321
-            $post = get_post( $post_id );
322
-
323
-            // ...and the post both exists and isn't in the trash...
324
-            if ( $post && 'trash' !== $post->post_status ) {
325
-                // ... then something went wrong.
326
-                return new WP_Error(
327
-                    'db_error',
328
-                    sprintf(
329
-                        __( 'Failed to delete post ID %d.', 'writing-on-github' ),
330
-                        $post_id
331
-                    )
332
-                );
333
-            }
334
-        }
335
-
336
-        return sprintf(
337
-            __( 'Successfully deleted post ID %d.', 'writing-on-github' ),
338
-            $post_id
339
-        );
340
-    }
341
-
342
-    /**
343
-     * Returns the list of post type permitted.
344
-     *
345
-     * @return array
346
-     */
347
-    protected function get_whitelisted_post_types() {
348
-        return apply_filters( 'wogh_whitelisted_post_types', $this->whitelisted_post_types );
349
-    }
350
-
351
-    /**
352
-     * Returns the list of post status permitted.
353
-     *
354
-     * @return array
355
-     */
356
-    protected function get_whitelisted_post_statuses() {
357
-        return apply_filters( 'wogh_whitelisted_post_statuses', $this->whitelisted_post_statuses );
358
-    }
359
-
360
-    /**
361
-     * Formats a whitelist array for a query.
362
-     *
363
-     * @param array $whitelist Whitelisted posts to format into query.
364
-     *
365
-     * @return string Whitelist formatted for query
366
-     */
367
-    protected function format_for_query( $whitelist ) {
368
-        foreach ( $whitelist as $key => $value ) {
369
-            $whitelist[ $key ] = "'$value'";
370
-        }
371
-
372
-        return implode( ', ', $whitelist );
373
-    }
374
-
375
-    /**
376
-     * Verifies that both the post's status & type
377
-     * are currently whitelisted
378
-     *
379
-     * @param  Writing_On_GitHub_Post $post Post to verify.
380
-     *
381
-     * @return boolean                          True if supported, false if not.
382
-     */
383
-    protected function is_post_supported( Writing_On_GitHub_Post $post ) {
384
-        if ( wp_is_post_revision( $post->id ) ) {
385
-            return false;
386
-        }
387
-
388
-        // We need to allow trashed posts to be queried, but they are not whitelisted for export.
389
-        if ( ! in_array( $post->status(), $this->get_whitelisted_post_statuses() ) && 'trash' !== $post->status() ) {
390
-            return false;
391
-        }
392
-
393
-        if ( ! in_array( $post->type(), $this->get_whitelisted_post_types() ) ) {
394
-            return false;
395
-        }
396
-
397
-        if ( $post->has_password() ) {
398
-            return false;
399
-        }
400
-
401
-        return apply_filters( 'wogh_is_post_supported', true, $post );
402
-    }
403
-
404
-    /**
405
-     * Retrieves the commit user for a provided display name
406
-     *
407
-     * Searches for a user with provided display name or returns
408
-     * the default user saved in the database.
409
-     *
410
-     * @param string $display_name User display name to search for.
411
-     *
412
-     * @return WP_Error|WP_User
413
-     */
414
-    protected function fetch_commit_user( $display_name ) {
415
-        // If we can't find a user and a default hasn't been set,
416
-        // we're just going to set the revision author to 0.
417
-        $user = false;
418
-
419
-        if ( ! empty( $display_name ) ) {
420
-            $search_string = esc_attr( $display_name );
421
-            $query = new WP_User_Query( array(
422
-                'search'         => "{$search_string}",
423
-                'search_columns' => array(
424
-                    'display_name',
425
-                    'user_nicename',
426
-                    'user_login',
427
-                )
428
-            ) );
429
-            $users = $query->get_results();
430
-            $user = empty($users) ? false : $users[0];
431
-        }
432
-
433
-        if ( ! $user ) {
434
-            // Use the default user.
435
-            $user = get_user_by( 'id', (int) get_option( 'wogh_default_user' ) );
436
-        }
437
-
438
-        if ( ! $user ) {
439
-            return new WP_Error(
440
-                'user_not_found',
441
-                sprintf(
442
-                    __( 'Commit user not found for email %s', 'writing-on-github' ),
443
-                    $email
444
-                )
445
-            );
446
-        }
447
-
448
-        return $user;
449
-    }
450
-
451
-    // /**
452
-    //  * Sets the author latest revision
453
-    //  * of the provided post ID to the provided user.
454
-    //  *
455
-    //  * @param int $post_id Post ID to update revision author.
456
-    //  * @param int $user_id User ID for revision author.
457
-    //  *
458
-    //  * @return string|WP_Error
459
-    //  */
460
-    // protected function set_revision_author( $post_id, $user_id ) {
461
-    //  $revision = wp_get_post_revisions( $post_id );
462
-
463
-    //  if ( ! $revision ) {
464
-    //      $new_revision = wp_save_post_revision( $post_id );
465
-
466
-    //      if ( ! $new_revision || is_wp_error( $new_revision ) ) {
467
-    //          return new WP_Error( 'db_error', 'There was a problem saving a new revision.' );
468
-    //      }
469
-
470
-    //      // `wp_save_post_revision` returns the ID, whereas `get_post_revision` returns the whole object
471
-    //      // in order to be consistent, let's make sure we have the whole object before continuing.
472
-    //      $revision = get_post( $new_revision );
473
-
474
-    //      if ( ! $revision ) {
475
-    //          return new WP_Error( 'db_error', 'There was a problem retrieving the newly recreated revision.' );
476
-    //      }
477
-    //  } else {
478
-    //      $revision = array_shift( $revision );
479
-    //  }
480
-
481
-    //  return $this->set_post_author( $revision->ID, $user_id );
482
-    // }
483
-
484
-    /**
485
-     * Updates the user ID for the provided post ID.
486
-     *
487
-     * Bypassing triggering any hooks, including creating new revisions.
488
-     *
489
-     * @param int $post_id Post ID to update.
490
-     * @param int $user_id User ID to update to.
491
-     *
492
-     * @return string|WP_Error
493
-     */
494
-    protected function set_post_author( $post_id, $user_id ) {
495
-        global $wpdb;
496
-
497
-        $result = $wpdb->update(
498
-            $wpdb->posts,
499
-            array(
500
-                'post_author' => (int) $user_id,
501
-            ),
502
-            array(
503
-                'ID' => (int) $post_id,
504
-            ),
505
-            array( '%d' ),
506
-            array( '%d' )
507
-        );
508
-
509
-        if ( false === $result ) {
510
-            return new WP_Error( 'db_error', $wpdb->last_error );
511
-        }
512
-
513
-        if ( 0 === $result ) {
514
-            return sprintf(
515
-                __( 'No change for post ID %d.', 'writing-on-github' ),
516
-                $post_id
517
-            );
518
-        }
519
-
520
-        clean_post_cache( $post_id );
521
-
522
-        return sprintf(
523
-            __( 'Successfully updated post ID %d.', 'writing-on-github' ),
524
-            $post_id
525
-        );
526
-    }
527
-
528
-    // *
529
-    //  * Update the provided post's blob sha.
530
-    //  *
531
-    //  * @param Writing_On_GitHub_Post $post Post to update.
532
-    //  * @param string                     $sha Sha to update to.
533
-    //  *
534
-    //  * @return bool|int
535
-
536
-    // public function set_post_sha( $post, $sha ) {
537
-    //  return update_post_meta( $post->id, '_wogh_sha', $sha );
538
-    // }
12
+	/**
13
+	 * Application container.
14
+	 *
15
+	 * @var Writing_On_GitHub
16
+	 */
17
+	protected $app;
18
+
19
+	/**
20
+	 * Currently whitelisted post types.
21
+	 *
22
+	 * @var array
23
+	 */
24
+	protected $whitelisted_post_types = array( 'post', 'page' );
25
+
26
+	/**
27
+	 * Currently whitelisted post statuses.
28
+	 *
29
+	 * @var array
30
+	 */
31
+	protected $whitelisted_post_statuses = array( 'publish' );
32
+
33
+	/**
34
+	 * Instantiates a new Database object.
35
+	 *
36
+	 * @param Writing_On_GitHub $app Application container.
37
+	 */
38
+	public function __construct( Writing_On_GitHub $app ) {
39
+		$this->app = $app;
40
+	}
41
+
42
+	/**
43
+	 * Queries the database for all of the supported posts.
44
+	 *
45
+	 * @param  bool $force
46
+	 *
47
+	 * @return Writing_On_GitHub_Post[]|WP_Error
48
+	 */
49
+	public function fetch_all_supported( $force = false ) {
50
+		$args  = array(
51
+			'post_type'   => $this->get_whitelisted_post_types(),
52
+			'post_status' => $this->get_whitelisted_post_statuses(),
53
+			'nopaging'    => true,
54
+			'fields'      => 'ids',
55
+		);
56
+
57
+		$query = new WP_Query( apply_filters( 'wogh_pre_fetch_all_supported', $args ) );
58
+
59
+		$post_ids = $query->get_posts();
60
+
61
+		if ( ! $post_ids ) {
62
+			return new WP_Error(
63
+				'no_results',
64
+				__( 'Querying for supported posts returned no results.', 'writing-on-github' )
65
+			);
66
+		}
67
+
68
+		/* @var Writing_On_GitHub_Post[] $results */
69
+		$results = array();
70
+		foreach ( $post_ids as $post_id ) {
71
+			// Do not export posts that have already been exported
72
+			if ( $force || ! get_post_meta( $post_id, '_wogh_sha', true ) ||
73
+				 ! get_post_meta( $post_id, '_wogh_github_path', true ) ) {
74
+
75
+				$results[] = new Writing_On_GitHub_Post( $post_id, $this->app->api() );
76
+			}
77
+		}
78
+
79
+		return $results;
80
+	}
81
+
82
+	/**
83
+	 * Queries a post and returns it if it's supported.
84
+	 *
85
+	 * @param int $post_id Post ID to fetch.
86
+	 *
87
+	 * @return WP_Error|Writing_On_GitHub_Post
88
+	 */
89
+	public function fetch_by_id( $post_id ) {
90
+		$post = new Writing_On_GitHub_Post( $post_id, $this->app->api() );
91
+
92
+		if ( ! $this->is_post_supported( $post ) ) {
93
+			return new WP_Error(
94
+				'unsupported_post',
95
+				sprintf(
96
+					__(
97
+						'Post ID %s is not supported by WOGH. See wiki to find out how to add support.',
98
+						'writing-on-github'
99
+					),
100
+					$post_id
101
+				)
102
+			);
103
+		}
104
+
105
+		return $post;
106
+	}
107
+
108
+	/**
109
+	 * Saves an array of Post objects to the database
110
+	 * and associates their author as well as their latest
111
+	 *
112
+	 * @param Writing_On_GitHub_Post[] $posts Array of Posts to save.
113
+	 *
114
+	 * @return string|WP_Error
115
+	 */
116
+	public function save_posts( array $posts ) {
117
+
118
+		/**
119
+		 * Whether an error has occurred.
120
+		 *
121
+		 * @var WP_Error|false $error
122
+		 */
123
+		$error = false;
124
+
125
+		foreach ( $posts as $post ) {
126
+			$args = apply_filters( 'wogh_pre_import_args', $this->post_args( $post ), $post );
127
+
128
+			remove_filter( 'content_save_pre', 'wp_filter_post_kses' );
129
+			$post_id = $post->is_new() ?
130
+				wp_insert_post( $args, true ) :
131
+				wp_update_post( $args, true );
132
+			add_filter( 'content_save_pre', 'wp_filter_post_kses' );
133
+
134
+			if ( is_wp_error( $post_id ) ) {
135
+				/* @var WP_Error $post_id */
136
+				$error = wogh_append_error( $error, $post_id );
137
+
138
+				// Abort saving if updating the post fails.
139
+				continue;
140
+			}
141
+
142
+			if ( $post->is_new() ) {
143
+				$author = false;
144
+				$meta = $post->get_meta();
145
+				if ( ! empty( $meta ) && ! empty( $meta['author'] ) ) {
146
+					$author = $meta['author'];
147
+				}
148
+				$user    = $this->fetch_commit_user( $author );
149
+				$user_id = is_wp_error( $user ) ? 0 : $user->ID;
150
+				$this->set_post_author( $post_id, $user_id );
151
+			}
152
+
153
+			$post->set_post( get_post( $post_id ) );
154
+
155
+			$meta = apply_filters( 'wogh_pre_import_meta', $post->get_meta(), $post );
156
+
157
+			update_post_meta( $post_id, '_wogh_sha', $meta['_wogh_sha'] );
158
+
159
+			// unset( $meta['tags'] );
160
+			// unset( $meta['categories'] );
161
+			// unset( $meta['author'] );
162
+			// unset( $meta['post_date'] );
163
+			// unset( $meta['post_excerpt'] );
164
+			// unset( $meta['permalink'] );
165
+			// unset( $meta['link'] );
166
+
167
+			// foreach ( $meta as $key => $value ) {
168
+			//  update_post_meta( $post_id, $key, $value );
169
+			// }
170
+		}
171
+
172
+		if ( $error ) {
173
+			return $error;
174
+		}
175
+
176
+		return __( 'Successfully saved posts.', 'writing-on-github' );
177
+	}
178
+
179
+	protected function post_args( $post ) {
180
+		$args = $post->get_args();
181
+		$meta = $post->get_meta();
182
+
183
+		// prevent backslash loss
184
+		$args['post_content'] = addslashes( $args['post_content'] );
185
+
186
+		// update tags
187
+		if ( ! empty( $meta['tags'] ) ) {
188
+			$args['tags_input'] = $meta['tags'];
189
+		}
190
+
191
+		// update categories
192
+		if ( ! empty( $meta['categories'] ) ) {
193
+			$categories = $meta['categories'];
194
+			if ( ! is_array( $categories ) ) {
195
+				$categories = array( $categories );
196
+			}
197
+			$terms = get_terms( array(
198
+				'taxonomy' => 'category',
199
+				'fields' => 'id=>name',
200
+				'hide_empty' => 0,
201
+				'name' => $categories
202
+				)
203
+			);
204
+			$map = array();
205
+			foreach ( $categories as $name ) {
206
+				$map[$name] = 1;
207
+			}
208
+
209
+			$ids = array();
210
+			if ( ! empty( $terms ) ) {
211
+				foreach ( $terms as $id => $name ) {
212
+					$ids[] = $id;
213
+					unset( $map[$name] );
214
+				}
215
+			}
216
+
217
+			// create new terms
218
+			if ( ! empty( $map ) ) {
219
+				foreach ( $map as $name => $value ) {
220
+					$term = wp_insert_term( $name, 'category', array( 'parent' => 0 ) );
221
+					// array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
222
+					$ids[] = $term['term_id'];
223
+				}
224
+			}
225
+
226
+			$args['post_category'] = $ids;
227
+		}
228
+
229
+		return $args;
230
+	}
231
+
232
+	private function get_post_id_by_filename( $filename, $pattern  ) {
233
+		preg_match( $pattern , $filename, $matches );
234
+		$title = $matches[4];
235
+
236
+		$query = new WP_Query( array(
237
+			'name'     => $title,
238
+			'posts_per_page' => 1,
239
+			'post_type' => $this->get_whitelisted_post_types(),
240
+			'fields'         => 'ids',
241
+		) );
242
+
243
+		$post_id = $query->get_posts();
244
+		$post_id = array_pop( $post_id );
245
+		return $post_id;
246
+	}
247
+
248
+	/**
249
+	 * Deletes a post from the database based on its GitHub path.
250
+	 *
251
+	 * @param string $path Path of Post to delete.
252
+	 *
253
+	 * @return string|WP_Error
254
+	 */
255
+	public function delete_post_by_path( $path ) {
256
+		$query = new WP_Query( array(
257
+			'meta_key'       => '_wogh_github_path',
258
+			'meta_value'     => $path,
259
+			'meta_compare'   => '=',
260
+			'posts_per_page' => 1,
261
+			'fields'         => 'ids',
262
+		) );
263
+
264
+		$post_id = $query->get_posts();
265
+		$post_id = array_pop( $post_id );
266
+
267
+		if ( ! $post_id ) {
268
+			$parts     = explode( '/', $path );
269
+			$filename  = array_pop( $parts );
270
+			$directory = $parts ? array_shift( $parts ) : '';
271
+
272
+			if ( false !== strpos( $directory, 'post' ) ) {
273
+				$post_id = get_post_id_by_filename( $filename, '/([0-9]{4})-([0-9]{2})-([0-9]{2})-(.*)\.md/' );
274
+			}
275
+
276
+			if ( ! $post_id ) {
277
+				$post_id = get_post_id_by_filename( $filename, '/(.*)\.md/' );
278
+			}
279
+		}
280
+
281
+		if ( ! $post_id ) {
282
+			return new WP_Error(
283
+				'path_not_found',
284
+				sprintf(
285
+					__( 'Post not found for path %s.', 'writing-on-github' ),
286
+					$path
287
+				)
288
+			);
289
+		}
290
+
291
+		$result = wp_delete_post( $post_id );
292
+
293
+		// If deleting fails...
294
+		if ( false === $result ) {
295
+			$post = get_post( $post_id );
296
+
297
+			// ...and the post both exists and isn't in the trash...
298
+			if ( $post && 'trash' !== $post->post_status ) {
299
+				// ... then something went wrong.
300
+				return new WP_Error(
301
+					'db_error',
302
+					sprintf(
303
+						__( 'Failed to delete post ID %d.', 'writing-on-github' ),
304
+						$post_id
305
+					)
306
+				);
307
+			}
308
+		}
309
+
310
+		return sprintf(
311
+			__( 'Successfully deleted post ID %d.', 'writing-on-github' ),
312
+			$post_id
313
+		);
314
+	}
315
+
316
+	public function delete_post( $post_id ) {
317
+		$result = wp_delete_post( $post_id );
318
+
319
+		// If deleting fails...
320
+		if ( false === $result ) {
321
+			$post = get_post( $post_id );
322
+
323
+			// ...and the post both exists and isn't in the trash...
324
+			if ( $post && 'trash' !== $post->post_status ) {
325
+				// ... then something went wrong.
326
+				return new WP_Error(
327
+					'db_error',
328
+					sprintf(
329
+						__( 'Failed to delete post ID %d.', 'writing-on-github' ),
330
+						$post_id
331
+					)
332
+				);
333
+			}
334
+		}
335
+
336
+		return sprintf(
337
+			__( 'Successfully deleted post ID %d.', 'writing-on-github' ),
338
+			$post_id
339
+		);
340
+	}
341
+
342
+	/**
343
+	 * Returns the list of post type permitted.
344
+	 *
345
+	 * @return array
346
+	 */
347
+	protected function get_whitelisted_post_types() {
348
+		return apply_filters( 'wogh_whitelisted_post_types', $this->whitelisted_post_types );
349
+	}
350
+
351
+	/**
352
+	 * Returns the list of post status permitted.
353
+	 *
354
+	 * @return array
355
+	 */
356
+	protected function get_whitelisted_post_statuses() {
357
+		return apply_filters( 'wogh_whitelisted_post_statuses', $this->whitelisted_post_statuses );
358
+	}
359
+
360
+	/**
361
+	 * Formats a whitelist array for a query.
362
+	 *
363
+	 * @param array $whitelist Whitelisted posts to format into query.
364
+	 *
365
+	 * @return string Whitelist formatted for query
366
+	 */
367
+	protected function format_for_query( $whitelist ) {
368
+		foreach ( $whitelist as $key => $value ) {
369
+			$whitelist[ $key ] = "'$value'";
370
+		}
371
+
372
+		return implode( ', ', $whitelist );
373
+	}
374
+
375
+	/**
376
+	 * Verifies that both the post's status & type
377
+	 * are currently whitelisted
378
+	 *
379
+	 * @param  Writing_On_GitHub_Post $post Post to verify.
380
+	 *
381
+	 * @return boolean                          True if supported, false if not.
382
+	 */
383
+	protected function is_post_supported( Writing_On_GitHub_Post $post ) {
384
+		if ( wp_is_post_revision( $post->id ) ) {
385
+			return false;
386
+		}
387
+
388
+		// We need to allow trashed posts to be queried, but they are not whitelisted for export.
389
+		if ( ! in_array( $post->status(), $this->get_whitelisted_post_statuses() ) && 'trash' !== $post->status() ) {
390
+			return false;
391
+		}
392
+
393
+		if ( ! in_array( $post->type(), $this->get_whitelisted_post_types() ) ) {
394
+			return false;
395
+		}
396
+
397
+		if ( $post->has_password() ) {
398
+			return false;
399
+		}
400
+
401
+		return apply_filters( 'wogh_is_post_supported', true, $post );
402
+	}
403
+
404
+	/**
405
+	 * Retrieves the commit user for a provided display name
406
+	 *
407
+	 * Searches for a user with provided display name or returns
408
+	 * the default user saved in the database.
409
+	 *
410
+	 * @param string $display_name User display name to search for.
411
+	 *
412
+	 * @return WP_Error|WP_User
413
+	 */
414
+	protected function fetch_commit_user( $display_name ) {
415
+		// If we can't find a user and a default hasn't been set,
416
+		// we're just going to set the revision author to 0.
417
+		$user = false;
418
+
419
+		if ( ! empty( $display_name ) ) {
420
+			$search_string = esc_attr( $display_name );
421
+			$query = new WP_User_Query( array(
422
+				'search'         => "{$search_string}",
423
+				'search_columns' => array(
424
+					'display_name',
425
+					'user_nicename',
426
+					'user_login',
427
+				)
428
+			) );
429
+			$users = $query->get_results();
430
+			$user = empty($users) ? false : $users[0];
431
+		}
432
+
433
+		if ( ! $user ) {
434
+			// Use the default user.
435
+			$user = get_user_by( 'id', (int) get_option( 'wogh_default_user' ) );
436
+		}
437
+
438
+		if ( ! $user ) {
439
+			return new WP_Error(
440
+				'user_not_found',
441
+				sprintf(
442
+					__( 'Commit user not found for email %s', 'writing-on-github' ),
443
+					$email
444
+				)
445
+			);
446
+		}
447
+
448
+		return $user;
449
+	}
450
+
451
+	// /**
452
+	//  * Sets the author latest revision
453
+	//  * of the provided post ID to the provided user.
454
+	//  *
455
+	//  * @param int $post_id Post ID to update revision author.
456
+	//  * @param int $user_id User ID for revision author.
457
+	//  *
458
+	//  * @return string|WP_Error
459
+	//  */
460
+	// protected function set_revision_author( $post_id, $user_id ) {
461
+	//  $revision = wp_get_post_revisions( $post_id );
462
+
463
+	//  if ( ! $revision ) {
464
+	//      $new_revision = wp_save_post_revision( $post_id );
465
+
466
+	//      if ( ! $new_revision || is_wp_error( $new_revision ) ) {
467
+	//          return new WP_Error( 'db_error', 'There was a problem saving a new revision.' );
468
+	//      }
469
+
470
+	//      // `wp_save_post_revision` returns the ID, whereas `get_post_revision` returns the whole object
471
+	//      // in order to be consistent, let's make sure we have the whole object before continuing.
472
+	//      $revision = get_post( $new_revision );
473
+
474
+	//      if ( ! $revision ) {
475
+	//          return new WP_Error( 'db_error', 'There was a problem retrieving the newly recreated revision.' );
476
+	//      }
477
+	//  } else {
478
+	//      $revision = array_shift( $revision );
479
+	//  }
480
+
481
+	//  return $this->set_post_author( $revision->ID, $user_id );
482
+	// }
483
+
484
+	/**
485
+	 * Updates the user ID for the provided post ID.
486
+	 *
487
+	 * Bypassing triggering any hooks, including creating new revisions.
488
+	 *
489
+	 * @param int $post_id Post ID to update.
490
+	 * @param int $user_id User ID to update to.
491
+	 *
492
+	 * @return string|WP_Error
493
+	 */
494
+	protected function set_post_author( $post_id, $user_id ) {
495
+		global $wpdb;
496
+
497
+		$result = $wpdb->update(
498
+			$wpdb->posts,
499
+			array(
500
+				'post_author' => (int) $user_id,
501
+			),
502
+			array(
503
+				'ID' => (int) $post_id,
504
+			),
505
+			array( '%d' ),
506
+			array( '%d' )
507
+		);
508
+
509
+		if ( false === $result ) {
510
+			return new WP_Error( 'db_error', $wpdb->last_error );
511
+		}
512
+
513
+		if ( 0 === $result ) {
514
+			return sprintf(
515
+				__( 'No change for post ID %d.', 'writing-on-github' ),
516
+				$post_id
517
+			);
518
+		}
519
+
520
+		clean_post_cache( $post_id );
521
+
522
+		return sprintf(
523
+			__( 'Successfully updated post ID %d.', 'writing-on-github' ),
524
+			$post_id
525
+		);
526
+	}
527
+
528
+	// *
529
+	//  * Update the provided post's blob sha.
530
+	//  *
531
+	//  * @param Writing_On_GitHub_Post $post Post to update.
532
+	//  * @param string                     $sha Sha to update to.
533
+	//  *
534
+	//  * @return bool|int
535
+
536
+	// public function set_post_sha( $post, $sha ) {
537
+	//  return update_post_meta( $post->id, '_wogh_sha', $sha );
538
+	// }
539 539
 }
Please login to merge, or discard this patch.
Spacing   +109 added lines, -110 removed lines patch added patch discarded remove patch
@@ -21,21 +21,21 @@  discard block
 block discarded – undo
21 21
      *
22 22
      * @var array
23 23
      */
24
-    protected $whitelisted_post_types = array( 'post', 'page' );
24
+    protected $whitelisted_post_types = array('post', 'page');
25 25
 
26 26
     /**
27 27
      * Currently whitelisted post statuses.
28 28
      *
29 29
      * @var array
30 30
      */
31
-    protected $whitelisted_post_statuses = array( 'publish' );
31
+    protected $whitelisted_post_statuses = array('publish');
32 32
 
33 33
     /**
34 34
      * Instantiates a new Database object.
35 35
      *
36 36
      * @param Writing_On_GitHub $app Application container.
37 37
      */
38
-    public function __construct( Writing_On_GitHub $app ) {
38
+    public function __construct(Writing_On_GitHub $app) {
39 39
         $this->app = $app;
40 40
     }
41 41
 
@@ -46,33 +46,33 @@  discard block
 block discarded – undo
46 46
      *
47 47
      * @return Writing_On_GitHub_Post[]|WP_Error
48 48
      */
49
-    public function fetch_all_supported( $force = false ) {
50
-        $args  = array(
49
+    public function fetch_all_supported($force = false) {
50
+        $args = array(
51 51
             'post_type'   => $this->get_whitelisted_post_types(),
52 52
             'post_status' => $this->get_whitelisted_post_statuses(),
53 53
             'nopaging'    => true,
54 54
             'fields'      => 'ids',
55 55
         );
56 56
 
57
-        $query = new WP_Query( apply_filters( 'wogh_pre_fetch_all_supported', $args ) );
57
+        $query = new WP_Query(apply_filters('wogh_pre_fetch_all_supported', $args));
58 58
 
59 59
         $post_ids = $query->get_posts();
60 60
 
61
-        if ( ! $post_ids ) {
61
+        if ( ! $post_ids) {
62 62
             return new WP_Error(
63 63
                 'no_results',
64
-                __( 'Querying for supported posts returned no results.', 'writing-on-github' )
64
+                __('Querying for supported posts returned no results.', 'writing-on-github')
65 65
             );
66 66
         }
67 67
 
68 68
         /* @var Writing_On_GitHub_Post[] $results */
69 69
         $results = array();
70
-        foreach ( $post_ids as $post_id ) {
70
+        foreach ($post_ids as $post_id) {
71 71
             // Do not export posts that have already been exported
72
-            if ( $force || ! get_post_meta( $post_id, '_wogh_sha', true ) ||
73
-                 ! get_post_meta( $post_id, '_wogh_github_path', true ) ) {
72
+            if ($force || ! get_post_meta($post_id, '_wogh_sha', true) ||
73
+                 ! get_post_meta($post_id, '_wogh_github_path', true)) {
74 74
 
75
-                $results[] = new Writing_On_GitHub_Post( $post_id, $this->app->api() );
75
+                $results[] = new Writing_On_GitHub_Post($post_id, $this->app->api());
76 76
             }
77 77
         }
78 78
 
@@ -86,10 +86,10 @@  discard block
 block discarded – undo
86 86
      *
87 87
      * @return WP_Error|Writing_On_GitHub_Post
88 88
      */
89
-    public function fetch_by_id( $post_id ) {
90
-        $post = new Writing_On_GitHub_Post( $post_id, $this->app->api() );
89
+    public function fetch_by_id($post_id) {
90
+        $post = new Writing_On_GitHub_Post($post_id, $this->app->api());
91 91
 
92
-        if ( ! $this->is_post_supported( $post ) ) {
92
+        if ( ! $this->is_post_supported($post)) {
93 93
             return new WP_Error(
94 94
                 'unsupported_post',
95 95
                 sprintf(
@@ -113,7 +113,7 @@  discard block
 block discarded – undo
113 113
      *
114 114
      * @return string|WP_Error
115 115
      */
116
-    public function save_posts( array $posts ) {
116
+    public function save_posts(array $posts) {
117 117
 
118 118
         /**
119 119
          * Whether an error has occurred.
@@ -122,39 +122,38 @@  discard block
 block discarded – undo
122 122
          */
123 123
         $error = false;
124 124
 
125
-        foreach ( $posts as $post ) {
126
-            $args = apply_filters( 'wogh_pre_import_args', $this->post_args( $post ), $post );
125
+        foreach ($posts as $post) {
126
+            $args = apply_filters('wogh_pre_import_args', $this->post_args($post), $post);
127 127
 
128
-            remove_filter( 'content_save_pre', 'wp_filter_post_kses' );
128
+            remove_filter('content_save_pre', 'wp_filter_post_kses');
129 129
             $post_id = $post->is_new() ?
130
-                wp_insert_post( $args, true ) :
131
-                wp_update_post( $args, true );
132
-            add_filter( 'content_save_pre', 'wp_filter_post_kses' );
130
+                wp_insert_post($args, true) : wp_update_post($args, true);
131
+            add_filter('content_save_pre', 'wp_filter_post_kses');
133 132
 
134
-            if ( is_wp_error( $post_id ) ) {
133
+            if (is_wp_error($post_id)) {
135 134
                 /* @var WP_Error $post_id */
136
-                $error = wogh_append_error( $error, $post_id );
135
+                $error = wogh_append_error($error, $post_id);
137 136
 
138 137
                 // Abort saving if updating the post fails.
139 138
                 continue;
140 139
             }
141 140
 
142
-            if ( $post->is_new() ) {
141
+            if ($post->is_new()) {
143 142
                 $author = false;
144 143
                 $meta = $post->get_meta();
145
-                if ( ! empty( $meta ) && ! empty( $meta['author'] ) ) {
144
+                if ( ! empty($meta) && ! empty($meta['author'])) {
146 145
                     $author = $meta['author'];
147 146
                 }
148
-                $user    = $this->fetch_commit_user( $author );
149
-                $user_id = is_wp_error( $user ) ? 0 : $user->ID;
150
-                $this->set_post_author( $post_id, $user_id );
147
+                $user    = $this->fetch_commit_user($author);
148
+                $user_id = is_wp_error($user) ? 0 : $user->ID;
149
+                $this->set_post_author($post_id, $user_id);
151 150
             }
152 151
 
153
-            $post->set_post( get_post( $post_id ) );
152
+            $post->set_post(get_post($post_id));
154 153
 
155
-            $meta = apply_filters( 'wogh_pre_import_meta', $post->get_meta(), $post );
154
+            $meta = apply_filters('wogh_pre_import_meta', $post->get_meta(), $post);
156 155
 
157
-            update_post_meta( $post_id, '_wogh_sha', $meta['_wogh_sha'] );
156
+            update_post_meta($post_id, '_wogh_sha', $meta['_wogh_sha']);
158 157
 
159 158
             // unset( $meta['tags'] );
160 159
             // unset( $meta['categories'] );
@@ -169,32 +168,32 @@  discard block
 block discarded – undo
169 168
             // }
170 169
         }
171 170
 
172
-        if ( $error ) {
171
+        if ($error) {
173 172
             return $error;
174 173
         }
175 174
 
176
-        return __( 'Successfully saved posts.', 'writing-on-github' );
175
+        return __('Successfully saved posts.', 'writing-on-github');
177 176
     }
178 177
 
179
-    protected function post_args( $post ) {
178
+    protected function post_args($post) {
180 179
         $args = $post->get_args();
181 180
         $meta = $post->get_meta();
182 181
 
183 182
         // prevent backslash loss
184
-        $args['post_content'] = addslashes( $args['post_content'] );
183
+        $args['post_content'] = addslashes($args['post_content']);
185 184
 
186 185
         // update tags
187
-        if ( ! empty( $meta['tags'] ) ) {
186
+        if ( ! empty($meta['tags'])) {
188 187
             $args['tags_input'] = $meta['tags'];
189 188
         }
190 189
 
191 190
         // update categories
192
-        if ( ! empty( $meta['categories'] ) ) {
191
+        if ( ! empty($meta['categories'])) {
193 192
             $categories = $meta['categories'];
194
-            if ( ! is_array( $categories ) ) {
195
-                $categories = array( $categories );
193
+            if ( ! is_array($categories)) {
194
+                $categories = array($categories);
196 195
             }
197
-            $terms = get_terms( array(
196
+            $terms = get_terms(array(
198 197
                 'taxonomy' => 'category',
199 198
                 'fields' => 'id=>name',
200 199
                 'hide_empty' => 0,
@@ -202,22 +201,22 @@  discard block
 block discarded – undo
202 201
                 )
203 202
             );
204 203
             $map = array();
205
-            foreach ( $categories as $name ) {
204
+            foreach ($categories as $name) {
206 205
                 $map[$name] = 1;
207 206
             }
208 207
 
209 208
             $ids = array();
210
-            if ( ! empty( $terms ) ) {
211
-                foreach ( $terms as $id => $name ) {
209
+            if ( ! empty($terms)) {
210
+                foreach ($terms as $id => $name) {
212 211
                     $ids[] = $id;
213
-                    unset( $map[$name] );
212
+                    unset($map[$name]);
214 213
                 }
215 214
             }
216 215
 
217 216
             // create new terms
218
-            if ( ! empty( $map ) ) {
219
-                foreach ( $map as $name => $value ) {
220
-                    $term = wp_insert_term( $name, 'category', array( 'parent' => 0 ) );
217
+            if ( ! empty($map)) {
218
+                foreach ($map as $name => $value) {
219
+                    $term = wp_insert_term($name, 'category', array('parent' => 0));
221 220
                     // array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id);
222 221
                     $ids[] = $term['term_id'];
223 222
                 }
@@ -229,19 +228,19 @@  discard block
 block discarded – undo
229 228
         return $args;
230 229
     }
231 230
 
232
-    private function get_post_id_by_filename( $filename, $pattern  ) {
233
-        preg_match( $pattern , $filename, $matches );
231
+    private function get_post_id_by_filename($filename, $pattern) {
232
+        preg_match($pattern, $filename, $matches);
234 233
         $title = $matches[4];
235 234
 
236
-        $query = new WP_Query( array(
235
+        $query = new WP_Query(array(
237 236
             'name'     => $title,
238 237
             'posts_per_page' => 1,
239 238
             'post_type' => $this->get_whitelisted_post_types(),
240 239
             'fields'         => 'ids',
241
-        ) );
240
+        ));
242 241
 
243 242
         $post_id = $query->get_posts();
244
-        $post_id = array_pop( $post_id );
243
+        $post_id = array_pop($post_id);
245 244
         return $post_id;
246 245
     }
247 246
 
@@ -252,55 +251,55 @@  discard block
 block discarded – undo
252 251
      *
253 252
      * @return string|WP_Error
254 253
      */
255
-    public function delete_post_by_path( $path ) {
256
-        $query = new WP_Query( array(
254
+    public function delete_post_by_path($path) {
255
+        $query = new WP_Query(array(
257 256
             'meta_key'       => '_wogh_github_path',
258 257
             'meta_value'     => $path,
259 258
             'meta_compare'   => '=',
260 259
             'posts_per_page' => 1,
261 260
             'fields'         => 'ids',
262
-        ) );
261
+        ));
263 262
 
264 263
         $post_id = $query->get_posts();
265
-        $post_id = array_pop( $post_id );
264
+        $post_id = array_pop($post_id);
266 265
 
267
-        if ( ! $post_id ) {
268
-            $parts     = explode( '/', $path );
269
-            $filename  = array_pop( $parts );
270
-            $directory = $parts ? array_shift( $parts ) : '';
266
+        if ( ! $post_id) {
267
+            $parts     = explode('/', $path);
268
+            $filename  = array_pop($parts);
269
+            $directory = $parts ? array_shift($parts) : '';
271 270
 
272
-            if ( false !== strpos( $directory, 'post' ) ) {
273
-                $post_id = get_post_id_by_filename( $filename, '/([0-9]{4})-([0-9]{2})-([0-9]{2})-(.*)\.md/' );
271
+            if (false !== strpos($directory, 'post')) {
272
+                $post_id = get_post_id_by_filename($filename, '/([0-9]{4})-([0-9]{2})-([0-9]{2})-(.*)\.md/');
274 273
             }
275 274
 
276
-            if ( ! $post_id ) {
277
-                $post_id = get_post_id_by_filename( $filename, '/(.*)\.md/' );
275
+            if ( ! $post_id) {
276
+                $post_id = get_post_id_by_filename($filename, '/(.*)\.md/');
278 277
             }
279 278
         }
280 279
 
281
-        if ( ! $post_id ) {
280
+        if ( ! $post_id) {
282 281
             return new WP_Error(
283 282
                 'path_not_found',
284 283
                 sprintf(
285
-                    __( 'Post not found for path %s.', 'writing-on-github' ),
284
+                    __('Post not found for path %s.', 'writing-on-github'),
286 285
                     $path
287 286
                 )
288 287
             );
289 288
         }
290 289
 
291
-        $result = wp_delete_post( $post_id );
290
+        $result = wp_delete_post($post_id);
292 291
 
293 292
         // If deleting fails...
294
-        if ( false === $result ) {
295
-            $post = get_post( $post_id );
293
+        if (false === $result) {
294
+            $post = get_post($post_id);
296 295
 
297 296
             // ...and the post both exists and isn't in the trash...
298
-            if ( $post && 'trash' !== $post->post_status ) {
297
+            if ($post && 'trash' !== $post->post_status) {
299 298
                 // ... then something went wrong.
300 299
                 return new WP_Error(
301 300
                     'db_error',
302 301
                     sprintf(
303
-                        __( 'Failed to delete post ID %d.', 'writing-on-github' ),
302
+                        __('Failed to delete post ID %d.', 'writing-on-github'),
304 303
                         $post_id
305 304
                     )
306 305
                 );
@@ -308,25 +307,25 @@  discard block
 block discarded – undo
308 307
         }
309 308
 
310 309
         return sprintf(
311
-            __( 'Successfully deleted post ID %d.', 'writing-on-github' ),
310
+            __('Successfully deleted post ID %d.', 'writing-on-github'),
312 311
             $post_id
313 312
         );
314 313
     }
315 314
 
316
-    public function delete_post( $post_id ) {
317
-        $result = wp_delete_post( $post_id );
315
+    public function delete_post($post_id) {
316
+        $result = wp_delete_post($post_id);
318 317
 
319 318
         // If deleting fails...
320
-        if ( false === $result ) {
321
-            $post = get_post( $post_id );
319
+        if (false === $result) {
320
+            $post = get_post($post_id);
322 321
 
323 322
             // ...and the post both exists and isn't in the trash...
324
-            if ( $post && 'trash' !== $post->post_status ) {
323
+            if ($post && 'trash' !== $post->post_status) {
325 324
                 // ... then something went wrong.
326 325
                 return new WP_Error(
327 326
                     'db_error',
328 327
                     sprintf(
329
-                        __( 'Failed to delete post ID %d.', 'writing-on-github' ),
328
+                        __('Failed to delete post ID %d.', 'writing-on-github'),
330 329
                         $post_id
331 330
                     )
332 331
                 );
@@ -334,7 +333,7 @@  discard block
 block discarded – undo
334 333
         }
335 334
 
336 335
         return sprintf(
337
-            __( 'Successfully deleted post ID %d.', 'writing-on-github' ),
336
+            __('Successfully deleted post ID %d.', 'writing-on-github'),
338 337
             $post_id
339 338
         );
340 339
     }
@@ -345,7 +344,7 @@  discard block
 block discarded – undo
345 344
      * @return array
346 345
      */
347 346
     protected function get_whitelisted_post_types() {
348
-        return apply_filters( 'wogh_whitelisted_post_types', $this->whitelisted_post_types );
347
+        return apply_filters('wogh_whitelisted_post_types', $this->whitelisted_post_types);
349 348
     }
350 349
 
351 350
     /**
@@ -354,7 +353,7 @@  discard block
 block discarded – undo
354 353
      * @return array
355 354
      */
356 355
     protected function get_whitelisted_post_statuses() {
357
-        return apply_filters( 'wogh_whitelisted_post_statuses', $this->whitelisted_post_statuses );
356
+        return apply_filters('wogh_whitelisted_post_statuses', $this->whitelisted_post_statuses);
358 357
     }
359 358
 
360 359
     /**
@@ -364,12 +363,12 @@  discard block
 block discarded – undo
364 363
      *
365 364
      * @return string Whitelist formatted for query
366 365
      */
367
-    protected function format_for_query( $whitelist ) {
368
-        foreach ( $whitelist as $key => $value ) {
369
-            $whitelist[ $key ] = "'$value'";
366
+    protected function format_for_query($whitelist) {
367
+        foreach ($whitelist as $key => $value) {
368
+            $whitelist[$key] = "'$value'";
370 369
         }
371 370
 
372
-        return implode( ', ', $whitelist );
371
+        return implode(', ', $whitelist);
373 372
     }
374 373
 
375 374
     /**
@@ -380,25 +379,25 @@  discard block
 block discarded – undo
380 379
      *
381 380
      * @return boolean                          True if supported, false if not.
382 381
      */
383
-    protected function is_post_supported( Writing_On_GitHub_Post $post ) {
384
-        if ( wp_is_post_revision( $post->id ) ) {
382
+    protected function is_post_supported(Writing_On_GitHub_Post $post) {
383
+        if (wp_is_post_revision($post->id)) {
385 384
             return false;
386 385
         }
387 386
 
388 387
         // We need to allow trashed posts to be queried, but they are not whitelisted for export.
389
-        if ( ! in_array( $post->status(), $this->get_whitelisted_post_statuses() ) && 'trash' !== $post->status() ) {
388
+        if ( ! in_array($post->status(), $this->get_whitelisted_post_statuses()) && 'trash' !== $post->status()) {
390 389
             return false;
391 390
         }
392 391
 
393
-        if ( ! in_array( $post->type(), $this->get_whitelisted_post_types() ) ) {
392
+        if ( ! in_array($post->type(), $this->get_whitelisted_post_types())) {
394 393
             return false;
395 394
         }
396 395
 
397
-        if ( $post->has_password() ) {
396
+        if ($post->has_password()) {
398 397
             return false;
399 398
         }
400 399
 
401
-        return apply_filters( 'wogh_is_post_supported', true, $post );
400
+        return apply_filters('wogh_is_post_supported', true, $post);
402 401
     }
403 402
 
404 403
     /**
@@ -411,35 +410,35 @@  discard block
 block discarded – undo
411 410
      *
412 411
      * @return WP_Error|WP_User
413 412
      */
414
-    protected function fetch_commit_user( $display_name ) {
413
+    protected function fetch_commit_user($display_name) {
415 414
         // If we can't find a user and a default hasn't been set,
416 415
         // we're just going to set the revision author to 0.
417 416
         $user = false;
418 417
 
419
-        if ( ! empty( $display_name ) ) {
420
-            $search_string = esc_attr( $display_name );
421
-            $query = new WP_User_Query( array(
418
+        if ( ! empty($display_name)) {
419
+            $search_string = esc_attr($display_name);
420
+            $query = new WP_User_Query(array(
422 421
                 'search'         => "{$search_string}",
423 422
                 'search_columns' => array(
424 423
                     'display_name',
425 424
                     'user_nicename',
426 425
                     'user_login',
427 426
                 )
428
-            ) );
427
+            ));
429 428
             $users = $query->get_results();
430 429
             $user = empty($users) ? false : $users[0];
431 430
         }
432 431
 
433
-        if ( ! $user ) {
432
+        if ( ! $user) {
434 433
             // Use the default user.
435
-            $user = get_user_by( 'id', (int) get_option( 'wogh_default_user' ) );
434
+            $user = get_user_by('id', (int) get_option('wogh_default_user'));
436 435
         }
437 436
 
438
-        if ( ! $user ) {
437
+        if ( ! $user) {
439 438
             return new WP_Error(
440 439
                 'user_not_found',
441 440
                 sprintf(
442
-                    __( 'Commit user not found for email %s', 'writing-on-github' ),
441
+                    __('Commit user not found for email %s', 'writing-on-github'),
443 442
                     $email
444 443
                 )
445 444
             );
@@ -491,7 +490,7 @@  discard block
 block discarded – undo
491 490
      *
492 491
      * @return string|WP_Error
493 492
      */
494
-    protected function set_post_author( $post_id, $user_id ) {
493
+    protected function set_post_author($post_id, $user_id) {
495 494
         global $wpdb;
496 495
 
497 496
         $result = $wpdb->update(
@@ -502,25 +501,25 @@  discard block
 block discarded – undo
502 501
             array(
503 502
                 'ID' => (int) $post_id,
504 503
             ),
505
-            array( '%d' ),
506
-            array( '%d' )
504
+            array('%d'),
505
+            array('%d')
507 506
         );
508 507
 
509
-        if ( false === $result ) {
510
-            return new WP_Error( 'db_error', $wpdb->last_error );
508
+        if (false === $result) {
509
+            return new WP_Error('db_error', $wpdb->last_error);
511 510
         }
512 511
 
513
-        if ( 0 === $result ) {
512
+        if (0 === $result) {
514 513
             return sprintf(
515
-                __( 'No change for post ID %d.', 'writing-on-github' ),
514
+                __('No change for post ID %d.', 'writing-on-github'),
516 515
                 $post_id
517 516
             );
518 517
         }
519 518
 
520
-        clean_post_cache( $post_id );
519
+        clean_post_cache($post_id);
521 520
 
522 521
         return sprintf(
523
-            __( 'Successfully updated post ID %d.', 'writing-on-github' ),
522
+            __('Successfully updated post ID %d.', 'writing-on-github'),
524 523
             $post_id
525 524
         );
526 525
     }
Please login to merge, or discard this patch.
lib/semaphore.php 2 patches
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -9,55 +9,55 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Semaphore {
11 11
 
12
-    /**
13
-     * Sempahore's option key.
14
-     */
15
-    const KEY = 'wogh_semaphore_lock';
16
-
17
-    /**
18
-     * Option key when semaphore is locked.
19
-     */
20
-    const VALUE_LOCKED = 'yes';
21
-
22
-    /**
23
-     * Option key when semaphore is unlocked.
24
-     */
25
-    const VALUE_UNLOCKED = 'no';
26
-
27
-    /**
28
-     * Clean up the old values on instantiation.
29
-     */
30
-    public function __construct() {
31
-        delete_option( self::KEY );
32
-    }
33
-
34
-    /**
35
-     * Checks if the Semaphore is open.
36
-     *
37
-     * Fails to report it's open if the the Api class can't make a call
38
-     * or the push lock has been enabled.
39
-     *
40
-     * @return bool
41
-     */
42
-    public function is_open() {
43
-        if ( self::VALUE_LOCKED === get_transient( self::KEY ) ) {
44
-            return false;
45
-        }
46
-
47
-        return true;
48
-    }
49
-
50
-    /**
51
-     * Enables the push lock.
52
-     */
53
-    public function lock() {
54
-        set_transient( self::KEY, self::VALUE_LOCKED, MINUTE_IN_SECONDS );
55
-    }
56
-
57
-    /**
58
-     * Disables the push lock.
59
-     */
60
-    public function unlock() {
61
-        set_transient( self::KEY, self::VALUE_UNLOCKED, MINUTE_IN_SECONDS );
62
-    }
12
+	/**
13
+	 * Sempahore's option key.
14
+	 */
15
+	const KEY = 'wogh_semaphore_lock';
16
+
17
+	/**
18
+	 * Option key when semaphore is locked.
19
+	 */
20
+	const VALUE_LOCKED = 'yes';
21
+
22
+	/**
23
+	 * Option key when semaphore is unlocked.
24
+	 */
25
+	const VALUE_UNLOCKED = 'no';
26
+
27
+	/**
28
+	 * Clean up the old values on instantiation.
29
+	 */
30
+	public function __construct() {
31
+		delete_option( self::KEY );
32
+	}
33
+
34
+	/**
35
+	 * Checks if the Semaphore is open.
36
+	 *
37
+	 * Fails to report it's open if the the Api class can't make a call
38
+	 * or the push lock has been enabled.
39
+	 *
40
+	 * @return bool
41
+	 */
42
+	public function is_open() {
43
+		if ( self::VALUE_LOCKED === get_transient( self::KEY ) ) {
44
+			return false;
45
+		}
46
+
47
+		return true;
48
+	}
49
+
50
+	/**
51
+	 * Enables the push lock.
52
+	 */
53
+	public function lock() {
54
+		set_transient( self::KEY, self::VALUE_LOCKED, MINUTE_IN_SECONDS );
55
+	}
56
+
57
+	/**
58
+	 * Disables the push lock.
59
+	 */
60
+	public function unlock() {
61
+		set_transient( self::KEY, self::VALUE_UNLOCKED, MINUTE_IN_SECONDS );
62
+	}
63 63
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -28,7 +28,7 @@  discard block
 block discarded – undo
28 28
      * Clean up the old values on instantiation.
29 29
      */
30 30
     public function __construct() {
31
-        delete_option( self::KEY );
31
+        delete_option(self::KEY);
32 32
     }
33 33
 
34 34
     /**
@@ -40,7 +40,7 @@  discard block
 block discarded – undo
40 40
      * @return bool
41 41
      */
42 42
     public function is_open() {
43
-        if ( self::VALUE_LOCKED === get_transient( self::KEY ) ) {
43
+        if (self::VALUE_LOCKED === get_transient(self::KEY)) {
44 44
             return false;
45 45
         }
46 46
 
@@ -51,13 +51,13 @@  discard block
 block discarded – undo
51 51
      * Enables the push lock.
52 52
      */
53 53
     public function lock() {
54
-        set_transient( self::KEY, self::VALUE_LOCKED, MINUTE_IN_SECONDS );
54
+        set_transient(self::KEY, self::VALUE_LOCKED, MINUTE_IN_SECONDS);
55 55
     }
56 56
 
57 57
     /**
58 58
      * Disables the push lock.
59 59
      */
60 60
     public function unlock() {
61
-        set_transient( self::KEY, self::VALUE_UNLOCKED, MINUTE_IN_SECONDS );
61
+        set_transient(self::KEY, self::VALUE_UNLOCKED, MINUTE_IN_SECONDS);
62 62
     }
63 63
 }
Please login to merge, or discard this patch.
lib/request.php 2 patches
Indentation   +132 added lines, -132 removed lines patch added patch discarded remove patch
@@ -9,136 +9,136 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Request {
11 11
 
12
-    /**
13
-     * Application container.
14
-     *
15
-     * @var Writing_On_GitHub
16
-     */
17
-    protected $app;
18
-
19
-    /**
20
-     * Raw request data.
21
-     *
22
-     * @var string
23
-     */
24
-    protected $raw_data;
25
-
26
-    /**
27
-     * Headers
28
-     * @var array
29
-     */
30
-    protected $headers;
31
-
32
-    /**
33
-     * Writing_On_GitHub_Request constructor.
34
-     *
35
-     * @param Writing_On_GitHub $app Application container.
36
-     */
37
-    public function __construct( Writing_On_GitHub $app ) {
38
-        $this->app = $app;
39
-    }
40
-
41
-    /**
42
-     * Validates the header's secret.
43
-     *
44
-     * @return true|WP_Error
45
-     */
46
-    public function is_secret_valid() {
47
-        $headers = $this->headers();
48
-
49
-        $this->raw_data = $this->read_raw_data();
50
-
51
-        // Validate request secret.
52
-        $hash = hash_hmac( 'sha1', $this->raw_data, $this->secret() );
53
-        if ( 'sha1=' . $hash !== $headers['X-Hub-Signature'] ) {
54
-            return false;
55
-        }
56
-
57
-        //      [X-Hub-Signature] => sha1=3cf3da70de401f7dfff053392f60cc534efed3b4
58
-        //     [Content-Type] => application/json
59
-        //     [X-Github-Delivery] => b2102500-0acf-11e7-8acb-fd86a3497c2f
60
-        //     [X-Github-Event] => ping
61
-
62
-        return true;
63
-    }
64
-
65
-    /**
66
-     * Validates the ping event.
67
-     * @return boolean
68
-     */
69
-    public function is_ping() {
70
-        $headers = $this->headers();
71
-
72
-        $event = $headers['X-Github-Event'];
73
-        return 'ping' == $event;
74
-    }
75
-
76
-    /**
77
-     * Validates the push event.
78
-     * @return boolean
79
-     */
80
-    public function is_push() {
81
-        $headers = $this->headers();
82
-
83
-        $event = $headers['X-Github-Event'];
84
-        return 'push' == $event;
85
-    }
86
-
87
-    /**
88
-     * Returns a payload object for the given request.
89
-     *
90
-     * @return Writing_On_GitHub_Payload
91
-     */
92
-    public function payload() {
93
-        return new Writing_On_GitHub_Payload( $this->app, $this->raw_data );
94
-    }
95
-
96
-    /**
97
-     * Cross-server header support.
98
-     *
99
-     * Returns an array of the request's headers.
100
-     *
101
-     * @return array
102
-     */
103
-    protected function headers() {
104
-        if ( ! empty( $this->headers ) ) {
105
-            return $this->headers;
106
-        }
107
-
108
-        if ( function_exists( 'getallheaders' ) ) {
109
-
110
-            $this->headers = getallheaders();
111
-            return $this->headers;
112
-        }
113
-        /**
114
-         * Nginx and pre 5.4 workaround.
115
-         * @see http://www.php.net/manual/en/function.getallheaders.php
116
-         */
117
-        $this->headers = array();
118
-        foreach ( $_SERVER as $name => $value ) {
119
-            if ( 'HTTP_' === substr( $name, 0, 5 ) ) {
120
-                $this->headers[ str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', substr( $name, 5 ) ) ) ) ) ] = $value;
121
-            }
122
-        }
123
-
124
-        return $this->headers;
125
-    }
126
-
127
-    /**
128
-     * Reads the raw data from STDIN.
129
-     *
130
-     * @return string
131
-     */
132
-    protected function read_raw_data() {
133
-        return file_get_contents( 'php://input' );
134
-    }
135
-
136
-    /**
137
-     * Returns the Webhook secret
138
-     *
139
-     * @return string
140
-     */
141
-    protected function secret() {
142
-        return get_option( 'wogh_secret' );
143
-    }
12
+	/**
13
+	 * Application container.
14
+	 *
15
+	 * @var Writing_On_GitHub
16
+	 */
17
+	protected $app;
18
+
19
+	/**
20
+	 * Raw request data.
21
+	 *
22
+	 * @var string
23
+	 */
24
+	protected $raw_data;
25
+
26
+	/**
27
+	 * Headers
28
+	 * @var array
29
+	 */
30
+	protected $headers;
31
+
32
+	/**
33
+	 * Writing_On_GitHub_Request constructor.
34
+	 *
35
+	 * @param Writing_On_GitHub $app Application container.
36
+	 */
37
+	public function __construct( Writing_On_GitHub $app ) {
38
+		$this->app = $app;
39
+	}
40
+
41
+	/**
42
+	 * Validates the header's secret.
43
+	 *
44
+	 * @return true|WP_Error
45
+	 */
46
+	public function is_secret_valid() {
47
+		$headers = $this->headers();
48
+
49
+		$this->raw_data = $this->read_raw_data();
50
+
51
+		// Validate request secret.
52
+		$hash = hash_hmac( 'sha1', $this->raw_data, $this->secret() );
53
+		if ( 'sha1=' . $hash !== $headers['X-Hub-Signature'] ) {
54
+			return false;
55
+		}
56
+
57
+		//      [X-Hub-Signature] => sha1=3cf3da70de401f7dfff053392f60cc534efed3b4
58
+		//     [Content-Type] => application/json
59
+		//     [X-Github-Delivery] => b2102500-0acf-11e7-8acb-fd86a3497c2f
60
+		//     [X-Github-Event] => ping
61
+
62
+		return true;
63
+	}
64
+
65
+	/**
66
+	 * Validates the ping event.
67
+	 * @return boolean
68
+	 */
69
+	public function is_ping() {
70
+		$headers = $this->headers();
71
+
72
+		$event = $headers['X-Github-Event'];
73
+		return 'ping' == $event;
74
+	}
75
+
76
+	/**
77
+	 * Validates the push event.
78
+	 * @return boolean
79
+	 */
80
+	public function is_push() {
81
+		$headers = $this->headers();
82
+
83
+		$event = $headers['X-Github-Event'];
84
+		return 'push' == $event;
85
+	}
86
+
87
+	/**
88
+	 * Returns a payload object for the given request.
89
+	 *
90
+	 * @return Writing_On_GitHub_Payload
91
+	 */
92
+	public function payload() {
93
+		return new Writing_On_GitHub_Payload( $this->app, $this->raw_data );
94
+	}
95
+
96
+	/**
97
+	 * Cross-server header support.
98
+	 *
99
+	 * Returns an array of the request's headers.
100
+	 *
101
+	 * @return array
102
+	 */
103
+	protected function headers() {
104
+		if ( ! empty( $this->headers ) ) {
105
+			return $this->headers;
106
+		}
107
+
108
+		if ( function_exists( 'getallheaders' ) ) {
109
+
110
+			$this->headers = getallheaders();
111
+			return $this->headers;
112
+		}
113
+		/**
114
+		 * Nginx and pre 5.4 workaround.
115
+		 * @see http://www.php.net/manual/en/function.getallheaders.php
116
+		 */
117
+		$this->headers = array();
118
+		foreach ( $_SERVER as $name => $value ) {
119
+			if ( 'HTTP_' === substr( $name, 0, 5 ) ) {
120
+				$this->headers[ str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', substr( $name, 5 ) ) ) ) ) ] = $value;
121
+			}
122
+		}
123
+
124
+		return $this->headers;
125
+	}
126
+
127
+	/**
128
+	 * Reads the raw data from STDIN.
129
+	 *
130
+	 * @return string
131
+	 */
132
+	protected function read_raw_data() {
133
+		return file_get_contents( 'php://input' );
134
+	}
135
+
136
+	/**
137
+	 * Returns the Webhook secret
138
+	 *
139
+	 * @return string
140
+	 */
141
+	protected function secret() {
142
+		return get_option( 'wogh_secret' );
143
+	}
144 144
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -34,7 +34,7 @@  discard block
 block discarded – undo
34 34
      *
35 35
      * @param Writing_On_GitHub $app Application container.
36 36
      */
37
-    public function __construct( Writing_On_GitHub $app ) {
37
+    public function __construct(Writing_On_GitHub $app) {
38 38
         $this->app = $app;
39 39
     }
40 40
 
@@ -49,8 +49,8 @@  discard block
 block discarded – undo
49 49
         $this->raw_data = $this->read_raw_data();
50 50
 
51 51
         // Validate request secret.
52
-        $hash = hash_hmac( 'sha1', $this->raw_data, $this->secret() );
53
-        if ( 'sha1=' . $hash !== $headers['X-Hub-Signature'] ) {
52
+        $hash = hash_hmac('sha1', $this->raw_data, $this->secret());
53
+        if ('sha1=' . $hash !== $headers['X-Hub-Signature']) {
54 54
             return false;
55 55
         }
56 56
 
@@ -90,7 +90,7 @@  discard block
 block discarded – undo
90 90
      * @return Writing_On_GitHub_Payload
91 91
      */
92 92
     public function payload() {
93
-        return new Writing_On_GitHub_Payload( $this->app, $this->raw_data );
93
+        return new Writing_On_GitHub_Payload($this->app, $this->raw_data);
94 94
     }
95 95
 
96 96
     /**
@@ -101,11 +101,11 @@  discard block
 block discarded – undo
101 101
      * @return array
102 102
      */
103 103
     protected function headers() {
104
-        if ( ! empty( $this->headers ) ) {
104
+        if ( ! empty($this->headers)) {
105 105
             return $this->headers;
106 106
         }
107 107
 
108
-        if ( function_exists( 'getallheaders' ) ) {
108
+        if (function_exists('getallheaders')) {
109 109
 
110 110
             $this->headers = getallheaders();
111 111
             return $this->headers;
@@ -115,9 +115,9 @@  discard block
 block discarded – undo
115 115
          * @see http://www.php.net/manual/en/function.getallheaders.php
116 116
          */
117 117
         $this->headers = array();
118
-        foreach ( $_SERVER as $name => $value ) {
119
-            if ( 'HTTP_' === substr( $name, 0, 5 ) ) {
120
-                $this->headers[ str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', substr( $name, 5 ) ) ) ) ) ] = $value;
118
+        foreach ($_SERVER as $name => $value) {
119
+            if ('HTTP_' === substr($name, 0, 5)) {
120
+                $this->headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
121 121
             }
122 122
         }
123 123
 
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
      * @return string
131 131
      */
132 132
     protected function read_raw_data() {
133
-        return file_get_contents( 'php://input' );
133
+        return file_get_contents('php://input');
134 134
     }
135 135
 
136 136
     /**
@@ -139,6 +139,6 @@  discard block
 block discarded – undo
139 139
      * @return string
140 140
      */
141 141
     protected function secret() {
142
-        return get_option( 'wogh_secret' );
142
+        return get_option('wogh_secret');
143 143
     }
144 144
 }
Please login to merge, or discard this patch.
lib/blob.php 2 patches
Indentation   +207 added lines, -207 removed lines patch added patch discarded remove patch
@@ -9,211 +9,211 @@
 block discarded – undo
9 9
  */
10 10
 class Writing_On_GitHub_Blob {
11 11
 
12
-    /**
13
-     * Complete blob content.
14
-     *
15
-     * @var string
16
-     */
17
-    protected $content;
18
-
19
-    /**
20
-     * Blob sha.
21
-     *
22
-     * @var string
23
-     */
24
-    protected $sha;
25
-
26
-    /**
27
-     * Blob path.
28
-     *
29
-     * @var string
30
-     */
31
-    protected $path;
32
-
33
-    /**
34
-     * Post id.
35
-     *
36
-     * @var int
37
-     */
38
-    protected $id;
39
-
40
-    /**
41
-     * Whether the blob has frontmatter.
42
-     *
43
-     * @var boolean
44
-     */
45
-    protected $frontmatter = false;
46
-
47
-    /**
48
-     * Instantiates a new Blob object.
49
-     *
50
-     * @param stdClass $data Raw blob data.
51
-     */
52
-    public function __construct( stdClass $data ) {
53
-        $this->interpret_data( $data );
54
-    }
55
-
56
-    public function id() {
57
-        return $this->id;
58
-    }
59
-
60
-    public function set_id($id) {
61
-        $this->id = $id;
62
-    }
63
-
64
-    /**
65
-     * Returns the raw blob content.
66
-     *
67
-     * @return string
68
-     */
69
-    public function content() {
70
-        return $this->content;
71
-    }
72
-
73
-    /**
74
-     * Set's the blob's content.
75
-     *
76
-     * @param string $content Raw blob content.
77
-     * @param bool   $base64 Whether the content is base64 encoded.
78
-     *
79
-     * @return $this
80
-     */
81
-    public function set_content( $content, $base64 = false ) {
82
-        if ( $base64 ) {
83
-            $content = base64_decode( $content );
84
-        }
85
-
86
-        $this->frontmatter = '---' === substr( $this->content = $content, 0, 3 ) ? true : false;
87
-
88
-        return $this;
89
-    }
90
-    /**
91
-     * Returns the blob sha.
92
-     *
93
-     * @return string
94
-     */
95
-    public function sha() {
96
-        return $this->sha;
97
-    }
98
-
99
-    /**
100
-     * Return's the blob path.
101
-     *
102
-     * @return string
103
-     */
104
-    public function path() {
105
-        return $this->path;
106
-    }
107
-
108
-    /**
109
-     * Whether the blob has frontmatter.
110
-     *
111
-     * @return bool
112
-     */
113
-    public function has_frontmatter() {
114
-        return $this->frontmatter;
115
-    }
116
-
117
-    /**
118
-     * Returns the formatted/filtered blob content used for import.
119
-     *
120
-     * @return string
121
-     */
122
-    public function content_import() {
123
-        $content = $this->content();
124
-
125
-        if ( $this->has_frontmatter() ) {
126
-            // Break out content.
127
-            preg_match( '/(^---(.*?)---$)?(.*)/ms', $content, $matches );
128
-            $content = array_pop( $matches );
129
-        }
130
-
131
-        if ( function_exists( 'wpmarkdown_markdown_to_html' ) ) {
132
-            $content = wpmarkdown_markdown_to_html( $content );
133
-        }
134
-
135
-        /**
136
-         * Filters the content for import.
137
-         */
138
-        return apply_filters( 'wogh_content_import', trim( $content ) );
139
-    }
140
-
141
-    /**
142
-     * Returns the blob meta.
143
-     *
144
-     * @return array
145
-     */
146
-    public function meta() {
147
-        $meta = array();
148
-
149
-        if ( $this->has_frontmatter() ) {
150
-            // Break out meta, if present.
151
-            preg_match( '/(^---(.*?)---$)?(.*)/ms', $this->content(), $matches );
152
-            array_pop( $matches );
153
-
154
-            $meta = spyc_load( $matches[2] );
155
-            if ( 'yes' == get_option('wogh_ignore_author') ) {
156
-                unset($meta['author']);
157
-            }
158
-            // if ( isset( $meta['link'] ) ) {
159
-            //  $meta['link'] = str_replace( home_url(), '', $meta['link'] );
160
-            // }
161
-        }
162
-
163
-        return $meta;
164
-    }
165
-
166
-    /**
167
-     * Formats the blob into an API call body.
168
-     *
169
-     * @return stdClass
170
-     */
171
-    // public function to_body() {
172
-    //  $data = new stdClass;
173
-
174
-    //  $data->mode = '100644';
175
-    //  $data->type = 'blob';
176
-
177
-    //  $data->path = $this->path();
178
-
179
-    //  if ( $this->sha() ) {
180
-    //      $data->sha = $this->sha();
181
-    //  } else {
182
-    //      $data->content = $this->content();
183
-    //  }
184
-
185
-    //  return $data;
186
-    // }
187
-
188
-
189
-    /**
190
-     * Formats the blob into an API call body.
191
-     *
192
-     * @return stdClass
193
-     */
194
-    public function to_body() {
195
-        $data = new stdClass;
196
-
197
-        // $data->mode = '100644';
198
-        // $data->type = 'blob';
199
-
200
-        $data->path = $this->path();
201
-        $data->content = base64_encode( $this->content() );
202
-        $data->sha = $this->sha;
203
-
204
-        return $data;
205
-    }
206
-
207
-    /**
208
-     * Interprets the blob's data into properties.
209
-     */
210
-    protected function interpret_data( $data ) {
211
-        $this->sha  = isset( $data->sha  ) ? $data->sha  : '';
212
-        $this->path = isset( $data->path ) ? $data->path : '';
213
-
214
-        $this->set_content(
215
-            isset( $data->content ) ? trim( $data->content ) : '',
216
-            isset( $data->encoding ) && 'base64' === $data->encoding ? true : false
217
-        );
218
-    }
12
+	/**
13
+	 * Complete blob content.
14
+	 *
15
+	 * @var string
16
+	 */
17
+	protected $content;
18
+
19
+	/**
20
+	 * Blob sha.
21
+	 *
22
+	 * @var string
23
+	 */
24
+	protected $sha;
25
+
26
+	/**
27
+	 * Blob path.
28
+	 *
29
+	 * @var string
30
+	 */
31
+	protected $path;
32
+
33
+	/**
34
+	 * Post id.
35
+	 *
36
+	 * @var int
37
+	 */
38
+	protected $id;
39
+
40
+	/**
41
+	 * Whether the blob has frontmatter.
42
+	 *
43
+	 * @var boolean
44
+	 */
45
+	protected $frontmatter = false;
46
+
47
+	/**
48
+	 * Instantiates a new Blob object.
49
+	 *
50
+	 * @param stdClass $data Raw blob data.
51
+	 */
52
+	public function __construct( stdClass $data ) {
53
+		$this->interpret_data( $data );
54
+	}
55
+
56
+	public function id() {
57
+		return $this->id;
58
+	}
59
+
60
+	public function set_id($id) {
61
+		$this->id = $id;
62
+	}
63
+
64
+	/**
65
+	 * Returns the raw blob content.
66
+	 *
67
+	 * @return string
68
+	 */
69
+	public function content() {
70
+		return $this->content;
71
+	}
72
+
73
+	/**
74
+	 * Set's the blob's content.
75
+	 *
76
+	 * @param string $content Raw blob content.
77
+	 * @param bool   $base64 Whether the content is base64 encoded.
78
+	 *
79
+	 * @return $this
80
+	 */
81
+	public function set_content( $content, $base64 = false ) {
82
+		if ( $base64 ) {
83
+			$content = base64_decode( $content );
84
+		}
85
+
86
+		$this->frontmatter = '---' === substr( $this->content = $content, 0, 3 ) ? true : false;
87
+
88
+		return $this;
89
+	}
90
+	/**
91
+	 * Returns the blob sha.
92
+	 *
93
+	 * @return string
94
+	 */
95
+	public function sha() {
96
+		return $this->sha;
97
+	}
98
+
99
+	/**
100
+	 * Return's the blob path.
101
+	 *
102
+	 * @return string
103
+	 */
104
+	public function path() {
105
+		return $this->path;
106
+	}
107
+
108
+	/**
109
+	 * Whether the blob has frontmatter.
110
+	 *
111
+	 * @return bool
112
+	 */
113
+	public function has_frontmatter() {
114
+		return $this->frontmatter;
115
+	}
116
+
117
+	/**
118
+	 * Returns the formatted/filtered blob content used for import.
119
+	 *
120
+	 * @return string
121
+	 */
122
+	public function content_import() {
123
+		$content = $this->content();
124
+
125
+		if ( $this->has_frontmatter() ) {
126
+			// Break out content.
127
+			preg_match( '/(^---(.*?)---$)?(.*)/ms', $content, $matches );
128
+			$content = array_pop( $matches );
129
+		}
130
+
131
+		if ( function_exists( 'wpmarkdown_markdown_to_html' ) ) {
132
+			$content = wpmarkdown_markdown_to_html( $content );
133
+		}
134
+
135
+		/**
136
+		 * Filters the content for import.
137
+		 */
138
+		return apply_filters( 'wogh_content_import', trim( $content ) );
139
+	}
140
+
141
+	/**
142
+	 * Returns the blob meta.
143
+	 *
144
+	 * @return array
145
+	 */
146
+	public function meta() {
147
+		$meta = array();
148
+
149
+		if ( $this->has_frontmatter() ) {
150
+			// Break out meta, if present.
151
+			preg_match( '/(^---(.*?)---$)?(.*)/ms', $this->content(), $matches );
152
+			array_pop( $matches );
153
+
154
+			$meta = spyc_load( $matches[2] );
155
+			if ( 'yes' == get_option('wogh_ignore_author') ) {
156
+				unset($meta['author']);
157
+			}
158
+			// if ( isset( $meta['link'] ) ) {
159
+			//  $meta['link'] = str_replace( home_url(), '', $meta['link'] );
160
+			// }
161
+		}
162
+
163
+		return $meta;
164
+	}
165
+
166
+	/**
167
+	 * Formats the blob into an API call body.
168
+	 *
169
+	 * @return stdClass
170
+	 */
171
+	// public function to_body() {
172
+	//  $data = new stdClass;
173
+
174
+	//  $data->mode = '100644';
175
+	//  $data->type = 'blob';
176
+
177
+	//  $data->path = $this->path();
178
+
179
+	//  if ( $this->sha() ) {
180
+	//      $data->sha = $this->sha();
181
+	//  } else {
182
+	//      $data->content = $this->content();
183
+	//  }
184
+
185
+	//  return $data;
186
+	// }
187
+
188
+
189
+	/**
190
+	 * Formats the blob into an API call body.
191
+	 *
192
+	 * @return stdClass
193
+	 */
194
+	public function to_body() {
195
+		$data = new stdClass;
196
+
197
+		// $data->mode = '100644';
198
+		// $data->type = 'blob';
199
+
200
+		$data->path = $this->path();
201
+		$data->content = base64_encode( $this->content() );
202
+		$data->sha = $this->sha;
203
+
204
+		return $data;
205
+	}
206
+
207
+	/**
208
+	 * Interprets the blob's data into properties.
209
+	 */
210
+	protected function interpret_data( $data ) {
211
+		$this->sha  = isset( $data->sha  ) ? $data->sha  : '';
212
+		$this->path = isset( $data->path ) ? $data->path : '';
213
+
214
+		$this->set_content(
215
+			isset( $data->content ) ? trim( $data->content ) : '',
216
+			isset( $data->encoding ) && 'base64' === $data->encoding ? true : false
217
+		);
218
+	}
219 219
 }
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -49,8 +49,8 @@  discard block
 block discarded – undo
49 49
      *
50 50
      * @param stdClass $data Raw blob data.
51 51
      */
52
-    public function __construct( stdClass $data ) {
53
-        $this->interpret_data( $data );
52
+    public function __construct(stdClass $data) {
53
+        $this->interpret_data($data);
54 54
     }
55 55
 
56 56
     public function id() {
@@ -78,12 +78,12 @@  discard block
 block discarded – undo
78 78
      *
79 79
      * @return $this
80 80
      */
81
-    public function set_content( $content, $base64 = false ) {
82
-        if ( $base64 ) {
83
-            $content = base64_decode( $content );
81
+    public function set_content($content, $base64 = false) {
82
+        if ($base64) {
83
+            $content = base64_decode($content);
84 84
         }
85 85
 
86
-        $this->frontmatter = '---' === substr( $this->content = $content, 0, 3 ) ? true : false;
86
+        $this->frontmatter = '---' === substr($this->content = $content, 0, 3) ? true : false;
87 87
 
88 88
         return $this;
89 89
     }
@@ -122,20 +122,20 @@  discard block
 block discarded – undo
122 122
     public function content_import() {
123 123
         $content = $this->content();
124 124
 
125
-        if ( $this->has_frontmatter() ) {
125
+        if ($this->has_frontmatter()) {
126 126
             // Break out content.
127
-            preg_match( '/(^---(.*?)---$)?(.*)/ms', $content, $matches );
128
-            $content = array_pop( $matches );
127
+            preg_match('/(^---(.*?)---$)?(.*)/ms', $content, $matches);
128
+            $content = array_pop($matches);
129 129
         }
130 130
 
131
-        if ( function_exists( 'wpmarkdown_markdown_to_html' ) ) {
132
-            $content = wpmarkdown_markdown_to_html( $content );
131
+        if (function_exists('wpmarkdown_markdown_to_html')) {
132
+            $content = wpmarkdown_markdown_to_html($content);
133 133
         }
134 134
 
135 135
         /**
136 136
          * Filters the content for import.
137 137
          */
138
-        return apply_filters( 'wogh_content_import', trim( $content ) );
138
+        return apply_filters('wogh_content_import', trim($content));
139 139
     }
140 140
 
141 141
     /**
@@ -146,13 +146,13 @@  discard block
 block discarded – undo
146 146
     public function meta() {
147 147
         $meta = array();
148 148
 
149
-        if ( $this->has_frontmatter() ) {
149
+        if ($this->has_frontmatter()) {
150 150
             // Break out meta, if present.
151
-            preg_match( '/(^---(.*?)---$)?(.*)/ms', $this->content(), $matches );
152
-            array_pop( $matches );
151
+            preg_match('/(^---(.*?)---$)?(.*)/ms', $this->content(), $matches);
152
+            array_pop($matches);
153 153
 
154
-            $meta = spyc_load( $matches[2] );
155
-            if ( 'yes' == get_option('wogh_ignore_author') ) {
154
+            $meta = spyc_load($matches[2]);
155
+            if ('yes' == get_option('wogh_ignore_author')) {
156 156
                 unset($meta['author']);
157 157
             }
158 158
             // if ( isset( $meta['link'] ) ) {
@@ -198,7 +198,7 @@  discard block
 block discarded – undo
198 198
         // $data->type = 'blob';
199 199
 
200 200
         $data->path = $this->path();
201
-        $data->content = base64_encode( $this->content() );
201
+        $data->content = base64_encode($this->content());
202 202
         $data->sha = $this->sha;
203 203
 
204 204
         return $data;
@@ -207,13 +207,13 @@  discard block
 block discarded – undo
207 207
     /**
208 208
      * Interprets the blob's data into properties.
209 209
      */
210
-    protected function interpret_data( $data ) {
211
-        $this->sha  = isset( $data->sha  ) ? $data->sha  : '';
212
-        $this->path = isset( $data->path ) ? $data->path : '';
210
+    protected function interpret_data($data) {
211
+        $this->sha  = isset($data->sha) ? $data->sha : '';
212
+        $this->path = isset($data->path) ? $data->path : '';
213 213
 
214 214
         $this->set_content(
215
-            isset( $data->content ) ? trim( $data->content ) : '',
216
-            isset( $data->encoding ) && 'base64' === $data->encoding ? true : false
215
+            isset($data->content) ? trim($data->content) : '',
216
+            isset($data->encoding) && 'base64' === $data->encoding ? true : false
217 217
         );
218 218
     }
219 219
 }
Please login to merge, or discard this patch.