/** * Imports a payload. * * @param WordPress_GitHub_Sync_Payload $payload GitHub payload object. * * @return string|WP_Error */ public function payload(WordPress_GitHub_Sync_Payload $payload) { /** * Whether there's an error during import. * * @var false|WP_Error $error */ $error = false; $result = $this->commit($this->app->api()->fetch()->commit($payload->get_commit_id())); if (is_wp_error($result)) { $error = $result; } $removed = array(); foreach ($payload->get_commits() as $commit) { $removed = array_merge($removed, $commit->removed); } foreach (array_unique($removed) as $path) { $result = $this->app->database()->delete_post_by_path($path); if (is_wp_error($result)) { if ($error) { $error->add($result->get_error_code(), $result->get_error_message()); } else { $error = $result; } } } if ($error) { return $error; } return __('Payload processed', 'wordpress-github-sync'); }
public function test_should_be_valid_payload() { $payload = new WordPress_GitHub_Sync_Payload($this->app, file_get_contents($this->data_dir . 'payload-valid.json')); $this->assertTrue($payload->should_import()); $this->assertEquals('ad4e0a9e2597de40106d5f52e2041d8ebaeb0087', $payload->get_commit_id()); $this->assertEquals('*****@*****.**', $payload->get_author_email()); $this->assertCount(1, $commits = $payload->get_commits()); $this->assertEquals('ad4e0a9e2597de40106d5f52e2041d8ebaeb0087', $commits[0]->id); }