From 4e6cadc26e9dac2e3ac402dddfb821ba4ad00481 Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Thu, 27 Sep 2018 06:11:54 +0900 Subject: [PATCH] Update socialhub.utl.php --- helper/socialhub.utl.php | 309 ++++++++++++++------------------------- 1 file changed, 107 insertions(+), 202 deletions(-) diff --git a/helper/socialhub.utl.php b/helper/socialhub.utl.php index f4ff8a9..d10d185 100644 --- a/helper/socialhub.utl.php +++ b/helper/socialhub.utl.php @@ -1,223 +1,128 @@ - * @brief SocialHub API (refactoring from SocioRouter API) + * @brief SocialHub Utilities (refactoring from SocioRouter Utilities) */ + +if(!function_exists("socialhub_send_message")) { + function socialhub_send_message($provider, $adapter, $message, $options=array()) { + $response = false; + $status = array( + "message" => $message + ); -loadHelper("hybridauth.lnk"); -loadHelper("hybridauth.dbt"); + switch($provider) { + case "facebook": + $status['link'] = get_value_in_array("link", $options, ""); + $status['picture'] = get_value_in_array("picture", $options, ""); + $response = $adapter->setUserStatus($status); + break; -set_session_token(); -$_token = get_session_token(); + case "linkedin": + $status['content'] = array( + "title" => get_value_in_array("title", $options, ""), + "description" => get_value_in_array("description", $options, ""), + "submitted-url" => get_value_in_array("link", $options, ""), + "submitted-image-url" => get_value_in_array("picture", $options, "") + ); + $status['visibility'] = array( + "code" => "anyone" + ); + $response = $adapter->setUserStatus($status); + break; -$provider = get_requested_value("provider"); -$action = get_requested_value("action"); -$redirect_uri = get_requested_value("redirect_uri"); -$user_id = get_requested_value("user_id"); + case "twitter": + $status['link'] = get_value_in_array("link", $options, ""); + $status['picture'] = get_value_in_array("picture", $options, ""); + $response = $adapter->setUserStatus($status); + break; -$connection_id = get_requested_value("connection_id"); -$message = get_requested_value("message"); + default: + set_error("Unknown provider"); + show_errors(); + } -$api_session_id = get_session("api_session_id"); -$session_data = array(); -if(!empty($api_session_id)) { - $fr = read_storage_file($api_session_id, array( - "storage_type" => "session" - )); - if(!$fr) { - // renew api session id - $api_session_id = ""; - set_session("api_session_id", $api_session_id); - } else { - $session_data = json_decode($fr); - $provider = get_property_value("provider", $session_data); - $action = get_property_value("action", $session_data); - $redirect_uri = get_property_value("redirect_uri", $session_data); - $user_id = get_property_value("user_id", $session_data); - $connection_id = get_property_value("connection_id", $session_data); - $message = get_property_value("message", $session_data); + return $response; + } +} + +if(!function_exists("socialhub_parse_object_id")) { + function socialhub_parse_object_id($provider, $response) { + $object_id = false; + + switch($provider) { + case "facebook": + $decodedBody = get_property_value("decodedBody", $response, true); + $object_id = $decodedBody['id']; + break; + case "linkedin": + $object_id = get_property_value("updateKey", $response); + break; + case "twitter": + $object_id = get_property_value("id_str", $response); + break; + } + + return $object_id; } } -if(empty($provider)) { - set_error("provider is required field."); - show_errors(); +if(!function_exists("socialhub_get_object")) { + function socialhub_get_object($provider, $adapter, $object_id) { + $result = false; + $access_token = $adapter->getAccessToken(); + + switch($provider) { + case "facebook": + $result = array( + "post" => socialhub_get_object_facebook($provider, $adapter, $object_id, "post"), + "likes" => socialhub_get_object_facebook($provider, $adapter, $object_id, "likes"), + "comments" => socialhub_get_object_facebook($provider, $adapter, $object_id, "comments"), + "sharedposts" => socialhub_get_object_facebook($provider, $adapter, $object_id, "sharedposts"), + "reactions" => socialhub_get_object_facebook($provider, $adapter, $object_id, "reactions"), + ); + break; + } + + return $result; + } } -$hauth_adapter = null; -$hauth_session = null; -$hauth_profile = null; +if(!function_exists("socialhub_get_object_facebook")) { + function socialhub_get_object_facebook($adapter, $object_id, $type="post") { + $result = false; + $response = false; -// load library -$configfile = hybridauth_load($provider); -if(!$configfile) { - set_error("can not load hybridauth library"); - show_errors(); -} -$hauth = new Hybrid_Auth($configfile); - -// try session restore -$session_flag = false; -if(!empty($connection_id)) { - $hauth_session = get_stored_hybridauth_session($connection_id); - if(!empty($hauth_session)) { try { - $hauth->restoreSessionData($hauth_session); - $session_flag = true; + switch($object_type) { + case "post": + $response = $adapter->api()->get("/" . $object_id, $access_token); + break; + case "likes": + $response = $adapter->api()->get("/" . $object_id . "/likes", $access_token); + break; + case "comments": + $response = $adapter->api()->get("/" . $object_id . "/comments", $access_token); + break; + case "sharedposts": + $response = $adapter->api()->get("/" . $object_id . "/sharedposts", $access_token); + break; + case "reactions": + $response = $adapter->api()->get("/" . $object_id . "/reactions", $access_token); + break; + } } catch(Exception $e) { - set_error("maybe, your connection is broken."); + set_error($e->getMessage()); show_errors(); } + + // get response body + $body = get_property_value("body", $response, true); + $decoded_body = json_decode($body); + $result = $decoded_body; + + return $result; } } - -// check hybridauth request -if($hauth->isConnectedWith($provider)) { - $hauth_session = $hauth->getSessionData(); - $connection_id = store_hybridauth_session($hauth_session, $user_id); - if($connection_id) { - $session_flag = true; - } -} - -// save session -$api_session_id = get_hashed_text(make_random_id(32)); -$session_data = array( - "api_session_id" => $api_session_id, - "provider" => $provider, - "action" => $action, - "redirect_uri" => $redirect_uri, - "user_id" => $user_id, - "connection_id" => $connection_id, - "message" => $message -); -$fw = write_storage_file(json_encode($session_data), array( - "storage_type" => "session", - "filename" => $api_session_id -)); -if(!$fw) { - set_error("maybe, your storage is write-protected."); - show_errors(); -} else { - set_session("api_session_id", $api_session_id); -} - -if(hybridauth_check_redirect()) { - hybridauth_process(); -} - -// try authenticate -try { - if(!$session_flag) { - $hauth_adapter = $hauth->authenticate($provider); - } else { - $hauth_adapter = $hauth->getAdapter($provider); - } - $session_flag = true; -} catch(Exception $e) { - $hauth_adapter = $hauth->authenticate($provider); -} - -if(!$session_flag) { - // if failed authenticate - redirect_uri(get_route_link("api.socialhub", array( - "provider" => $provider, - "action" => $action, - "redirect_uri" => $redirect_uri, - "user_id" => $user_id, - "connection_id" => $connection_id - ), false)); -} - -// get user profile -$hauth_profile = $hauth_adapter->getUserProfile(); - -// do action -$context = array(); -switch($action) { - case "inbound": - break; - case "outbound": - $response = socialhub_send_message($provider, $hauth_adapter, $message); - $object_id = socialhub_parse_object_id($provider, $response); - $context = array( - "success" => !(!$object_id), - "message" => "Have a nice day", - "user_id" => $user_id, - "provider" => $provider, - "object_id" => $object_id - ); - break; - case "new": - $context = array( - "success" => true, - "message" => "Authenticated", - "user_id" => $user_id, - "provider" => $provider, - "profile" => $hauth_profile, - ); - break; - case "login": - $context = array( - "success" => true, - "message" => "Authenticated", - "user_id" => $user_id, - "provider" => $provider, - "profile" => $hauth_profile, - ); - break; - case "bgworker": - $response = socialhub_send_message($provider, $hauth_adapter, $message); - $object_id = socialhub_parse_object_id($provider, $response); - $context = array( - "success" => !(!$object_id), - "message" => "Have a nice day", - "id" => $user_id, - "connection" => $connection_id, - "provider" => $provider, - "object_id" => $object_id - ); - break; - case "cancel": // listen cancel authenticated callback - break; - case "delete": // listen delete ping - break; - case "object": // get object by id - $object_id = get_requested_value("object_id"); - $context = array( - "success" => true, - "message" => "Found", - "response" => socialhub_get_object($provider, $hauth_adapter, $object_id) - ); - break; - default: - set_error("Unknown action"); - show_errors(); -} - -var_dump($redirect_uri); - -if(empty($redirect_uri)) { - header("Content-Type: application/json"); - echo json_encode($context); -} else { - $_display_name = get_hashed_text($hauth_profile->displayName, "base64"); - $_idt_hash = get_hashed_text($hauth_profile->identifier, "sha1"); - $_idt_name = $_idt_hash . "@" . $provider; - $_idt = get_hashed_text($_idt_name, "sha1"); - - // renew api session id - $api_session_id = ""; - set_session("api_session_id", $api_session_id); - - // go to redirect uri - redirect_with_params($redirect_uri, array( - "connection_id" => $connection_id, - "provider" => $provider, - "display_name" => $_display_name, - "idt" => $_idt, - "_token" => $_token - )); -}