From 5fedbbcf848e492ff9f1caf55f1098670b8c1501 Mon Sep 17 00:00:00 2001 From: ekazak Date: Mon, 6 Jun 2022 13:05:53 +0300 Subject: [PATCH] LAW-5279 --- .../plugins/wp-rest-api-event/HttpClient.php | 15 +++ .../event/EventSubscriber.php | 65 ++++++++++--- .../themes/lawcarta/assets/js/customPopups.js | 93 +++++++++++++++++++ 3 files changed, 158 insertions(+), 15 deletions(-) mode change 100644 => 100755 htdocs/wp-content/plugins/wp-rest-api-event/HttpClient.php mode change 100644 => 100755 htdocs/wp-content/plugins/wp-rest-api-event/event/EventSubscriber.php create mode 100644 htdocs/wp-content/themes/lawcarta/assets/js/customPopups.js diff --git a/htdocs/wp-content/plugins/wp-rest-api-event/HttpClient.php b/htdocs/wp-content/plugins/wp-rest-api-event/HttpClient.php old mode 100644 new mode 100755 index 29051cb..26bcff5 --- a/htdocs/wp-content/plugins/wp-rest-api-event/HttpClient.php +++ b/htdocs/wp-content/plugins/wp-rest-api-event/HttpClient.php @@ -7,6 +7,21 @@ namespace app\wpRestApiEvent; */ class HttpClient { + /** + * @param string $eventType + * @param $data + * + * @return null|string + */ + public function logEvent(string $eventType, $data) + { + $data['event'] = [ + 'slug' => $eventType, + ]; + + return $this->doPostRequest(LAWCARTA_WP_REST_API_EVENT_LOG_URL, $data); + } + /** * @param $data * @return null|string diff --git a/htdocs/wp-content/plugins/wp-rest-api-event/event/EventSubscriber.php b/htdocs/wp-content/plugins/wp-rest-api-event/event/EventSubscriber.php old mode 100644 new mode 100755 index be1d323..99c1667 --- a/htdocs/wp-content/plugins/wp-rest-api-event/event/EventSubscriber.php +++ b/htdocs/wp-content/plugins/wp-rest-api-event/event/EventSubscriber.php @@ -49,6 +49,16 @@ class EventSubscriber */ private static $server; + /** + * @var string + */ + private static $userIp; + + /** + * @var string + */ + private static $sessionId; + /** * @var string */ @@ -56,8 +66,9 @@ class EventSubscriber public static function onInit() { + add_action('wpcf7_after_flamingo', [self::class, 'onDemoRequest']); apply_filters('parse_request', [self::class, 'onParseRequest']); - apply_filters('http_response', [self::class, 'onResponse'], 0); +// apply_filters('http_response', [self::class, 'onResponse'], 0); //apply_filters('shutdown', [self::class, 'onResponse'], 0); register_shutdown_function([self::class, 'onShutdown']); apply_filters('pre_http_request', [self::class, 'onRequest'], 0); @@ -89,15 +100,24 @@ class EventSubscriber ])); } + public static function onDemoRequest() + { + $client = HttpClient::create(); + $client->logEvent('demo-request', self::getSuperGlobals()); + } + public static function setGlobals() { - self::$get = $_GET; - self::$post = $_POST; - self::$cookie = $_COOKIE; - self::$session = $_SESSION; - self::$env = $_ENV; - self::$request = $_REQUEST; - self::$server = $_SERVER; + self::$get = $_GET; + self::$post = $_POST; + self::$cookie = $_COOKIE; + self::$session = $_SESSION; + self::$env = $_ENV; + self::$request = $_REQUEST; + self::$server = $_SERVER; + self::$userIp = self::getTheUserIp(); + self::$sessionId = $_COOKIE['PHPSESSID'] ?? null; + if (function_exists('getallheaders')) { self::$headers = getallheaders(); @@ -112,13 +132,28 @@ class EventSubscriber private static function getSuperGlobals() { return [ - 'request' => self::$request, - 'server' => self::$server, - 'get' => self::$get, - 'post' => self::$post, - 'cookie' => self::$cookie, - 'env' => self::$env, - 'headers' => self::$headers + 'request' => self::$request, + 'server' => self::$server, + 'get' => self::$get, + 'post' => self::$post, + 'cookie' => self::$cookie, + 'env' => self::$env, + 'headers' => self::$headers, + 'user_ip' => self::$userIp, + 'session_id' => self::$sessionId, ]; } + + private static function getTheUserIp() + { + if ( ! empty($_SERVER['HTTP_CLIENT_IP'])) { + $ip = $_SERVER['HTTP_CLIENT_IP']; + } elseif ( ! empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + } else { + $ip = $_SERVER['REMOTE_ADDR']; + } + + return $ip; + } } \ No newline at end of file diff --git a/htdocs/wp-content/themes/lawcarta/assets/js/customPopups.js b/htdocs/wp-content/themes/lawcarta/assets/js/customPopups.js new file mode 100644 index 0000000..fc29d94 --- /dev/null +++ b/htdocs/wp-content/themes/lawcarta/assets/js/customPopups.js @@ -0,0 +1,93 @@ + +window.customConfirm = function(msg, okCallback, cancelCallback) { + + var confirmHtml = ''; + + var okCallbackWrap = function(e){ + e.preventDefault(); + if (okCallback) okCallback(); + $('#modal-confirm').modal('hide'); + }; + + var cancelCallbackWrap = function(e){ + e.preventDefault(); + if (cancelCallback) cancelCallback(); + $('#modal-confirm').modal('hide'); + }; + + var removeCallback = function(){ + document.getElementById('modal-confirm-ok').removeEventListener("click", okCallbackWrap , false); + document.getElementById('modal-confirm-cancel').removeEventListener("click", cancelCallbackWrap , false); + }; + + document.body.insertAdjacentHTML('beforeEnd', confirmHtml); + removeCallback(); + document.getElementById('modal-confirm-ok').addEventListener("click", okCallbackWrap , false); + document.getElementById('modal-confirm-cancel').addEventListener("click", cancelCallbackWrap , false); + + $('#modal-confirm').on('hidden.bs.modal', function(){ + removeCallback(); + document.body.removeChild(document.getElementById('modal-confirm')); + }); + + $('#modal-confirm').modal(); + +}; + +window.customAlert = function(msg) { + + var confirmHtml = ''; + + document.body.insertAdjacentHTML('beforeEnd', confirmHtml); + + $('#modal-alert').on('hidden.bs.modal', function(){ + document.body.removeChild(document.getElementById('modal-alert')); + }); + + $('#modal-alert').modal(); + +}; + + + +window.customCopyLink = function(copylink) { + + + var copyToClipboard = function(str) { + var el = document.createElement('textarea'); + el.classList.add('can-copy'); + el.value = str; + document.body.appendChild(el); + el.select(); + document.execCommand('copy'); + document.body.removeChild(el); + $('#modal-copylink').modal('hide'); + window.customAlert('Link is copied to the clipboard'); + }; + + copyToClipboard(copylink); + +}; \ No newline at end of file