From 2508024ec44fefd69ea7a77748fd46ec2aedeab8 Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Sun, 30 Dec 2018 13:49:26 +0900 Subject: [PATCH 1/4] Update wprest.php --- helper/wprest.php | 83 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/helper/wprest.php b/helper/wprest.php index e446abc..6a73eb0 100644 --- a/helper/wprest.php +++ b/helper/wprest.php @@ -110,3 +110,86 @@ if(!function_exists("get_wp_new_message")) { return $new_message; } } + +if(!function_exists("authenticate_wp")) { + function authenticate_wp($wp_server_url, $client_id, $client_secret, $route="", $code="", $scope="basic", $state="") { + $flag = false; + + $wp_access_token = get_session("wp_access_token"); + $result = array( + "redirect_uri" => false, + "response" => false + ); + + if(empty($wp_access_token)) { + if(empty($code)) { + // step 1 + $redirect_uri = get_web_build_qs($wp_server_url . "/oauth/authorize", array( + "client_id" => $client_id, + "redirect_uri" => get_route_link($route), + "response_type" => "code", + "scope" => $scope, + "state" => $state + )); + $result['redirect_uri'] = $redirect_uri; + } else { + // step 2 + $response = get_web_json($wp_server_url . "/oauth/token/", "jsondata", array( + "headers" => array( + "Content-Type" => "application/x-www-form-urlencoded", + "Authorization" => sprintf("Basic %s", base64_encode($client_id . ":" . $client_secret)) + ), + "data" => array( + "grant_type" => "authorization_code", + "code" => $code, + "client_id" => $client_id, + "client_secret" => $client_secret, + "redirect_uri" => get_route_link($route), + "state" => $state + ) + )); + + // store access token to session + set_session("wp_access_token", $response->access_token); + set_session("wp_expires_in", $response->expires_in); + set_session("wp_token_type", $response->token_type); + set_session("wp_scope", $response->scope); + set_session("refresh_token", $response->refresh_token); + + // store respose to result + $result['redirect_uri'] = get_route_link($route); + $result['response'] = $response; + } + + if(!array_key_empty("redirect_uri", $result)) { + redirect_uri($result['redirect_uri']); + } + } else { + $flag = true; + } + + return $result; + } +} + +if(!function_exists("write_wp_post")) { + function write_wp_post($wp_server_url, $access_token, $title, $content, $author=1, $status="publish") { + $response = get_web_page(get_web_build_qs($wp_server_url, array( + "rest_route" => "/wp/v2/posts" + )), "jsondata", array( + "headers" => array( + "Content-Type" => "application/x-www-form-urlencoded", + "Authorization" => "Bearer " . $access_token + ), + "data" => array( + "title" => $title, + "content" => $content, + "author" => $author, + "status" => $status + ) + ) + ); + + return $response; + } +} From 7803edba07e3a451cc14f1652bd7c9b888424008 Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Sun, 30 Dec 2018 15:08:20 +0900 Subject: [PATCH 2/4] Update wprest.php --- helper/wprest.php | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/helper/wprest.php b/helper/wprest.php index 6a73eb0..8171b3f 100644 --- a/helper/wprest.php +++ b/helper/wprest.php @@ -173,23 +173,40 @@ if(!function_exists("authenticate_wp")) { } if(!function_exists("write_wp_post")) { - function write_wp_post($wp_server_url, $access_token, $title, $content, $author=1, $status="publish") { - $response = get_web_page(get_web_build_qs($wp_server_url, array( + function write_wp_post($wp_server_url, $access_token, $data=array()) { + $default_data = array( + "title" => "Untitled", + "content" => "insert your content", + "author" => 2, + "status" => "publish", + "categories" => "" + ); + + foreach($data as $k=>$v) { + $default_data[$k] = $v; + } + + $response = get_web_json(get_web_build_qs($wp_server_url, array( "rest_route" => "/wp/v2/posts" )), "jsondata", array( "headers" => array( "Content-Type" => "application/x-www-form-urlencoded", "Authorization" => "Bearer " . $access_token ), - "data" => array( - "title" => $title, - "content" => $content, - "author" => $author, - "status" => $status - ) + "data" => $default_data ) ); return $response; } } + +if(!function_exists("get_wp_categories")) { + function get_wp_categories($wp_server_url, $access_token) { + $response = get_web_json(get_web_build_qs($wp_server_url, array( + "rest_route" => "/wp/v2/categories" + )), "get"); + + return $response; + } +} From 6236802d457a4bab2416585349230049a42f7253 Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Sun, 30 Dec 2018 15:10:51 +0900 Subject: [PATCH 3/4] Create wppost.php --- route/wppost.php | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 route/wppost.php diff --git a/route/wppost.php b/route/wppost.php new file mode 100644 index 0000000..ef1460b --- /dev/null +++ b/route/wppost.php @@ -0,0 +1,48 @@ + get_requested_value("title"), + "content" => get_requested_value("content"), + "author" => 2, + "status" => get_requested_value("status"), + "categories" => get_requested_value("categories") + ); + + // run post + $response = write_wp_post($wp_server_url, $wp_access_token, $form_data); + redirect_uri(get_route_link($route)); + + break; + + default: + // set session token + set_session_token(); + + // authenticate + $client_id = ""; + $client_secret = ""; + authenticate_wp($wp_server_url, $client_id, $client_secret, $route, $code); + + $categories = get_wp_categories($wp_server_url, $wp_access_token); + $data = array( + "route" => $route, + "categories" => $categories, + "_token" => get_session_token() + ); + + renderView("view_wppost", $data); +} From ddfffb0db96b7e9c9edb085aa1beccdf3fde4c77 Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Sun, 30 Dec 2018 15:11:18 +0900 Subject: [PATCH 4/4] Create view_wppost.php --- view/view_wppost.php | 62 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 view/view_wppost.php diff --git a/view/view_wppost.php b/view/view_wppost.php new file mode 100644 index 0000000..1c553af --- /dev/null +++ b/view/view_wppost.php @@ -0,0 +1,62 @@ + + + + Write to Wordpress + + + + +
+
+
+ Write to Wordpress + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
+
+ + +