/
home
/
altere25
/
usaigc.com
/
wp-content
/
plugins
/
wpdatatables
/
source
/
/home/altere25/usaigc.com/wp-content/plugins/wpdatatables/source
mkdir
upload
Name
Size
Mode
Actions
lang/
-
0755
rm
class.chartjs.wpdatachart.php
41732
0644
edit
dl
rm
class.date.wpdatacolumn.php
1768
0644
edit
dl
rm
class.datetime.wpdatacolumn.php
1857
0644
edit
dl
rm
class.email.wpdatacolumn.php
1196
0644
edit
dl
rm
class.feedback.php
567
0644
edit
dl
rm
class.float.wpdatacolumn.php
1777
0644
edit
dl
rm
class.google.wpdatachart.php
22760
0644
edit
dl
rm
class.image.wpdatacolumn.php
1164
0644
edit
dl
rm
class.int.wpdatacolumn.php
1674
0644
edit
dl
rm
class.link.wpdatacolumn.php
7543
0644
edit
dl
rm
class.sql.php
7690
0644
edit
dl
rm
class.string.wpdatacolumn.php
886
0644
edit
dl
rm
class.time.wpdatacolumn.php
1639
0644
edit
dl
rm
class.tpl.php
2016
0644
edit
dl
rm
class.wdtbrowsechartstable.php
22104
0644
edit
dl
rm
class.wdtbrowsetable.php
19798
0644
edit
dl
rm
class.wdtconfigcontroller.php
60401
0644
edit
dl
rm
class.wdtexception.php
388
0644
edit
dl
rm
class.wdtnestedjson.php
8859
0644
edit
dl
rm
class.wdtsettingscontroller.php
5431
0644
edit
dl
rm
class.wdttools.php
60736
0644
edit
dl
rm
class.wpdatachart.php
41516
0644
edit
dl
rm
class.wpdatacolumn.php
17433
0644
edit
dl
rm
class.wpdatatable.php
110805
0644
edit
dl
rm
class.wpdatatablecache.php
11752
0644
edit
dl
rm
class.wpdatatablerows.php
18571
0644
edit
dl
rm
class.wpdatatablestemplates.php
487136
0644
edit
dl
rm
class.wpexcelcolumn.php
9359
0644
edit
dl
rm
Edit:
/home/altere25/usaigc.com/wp-content/plugins/wpdatatables/source/class.wdtnestedjson.php
(8859B)
<?php defined('ABSPATH') or die('Access denied.'); class WDTNestedJson { private $_url = ''; private $_method = 'get'; private $_authOption = ''; private $_username = ''; private $_password = ''; private $_customHeaders = []; private $_root = ''; public function __construct($params = null) { if (isset($params->url)) $this->setUrl($params->url); if (isset($params->method)) $this->setMethod($params->method); if (isset($params->authOption)) $this->setAuthOption($params->authOption); if (isset($params->username)) $this->setUsername($params->username); if (isset($params->password)) $this->setPassword($params->password); if (isset($params->customHeaders)) $this->setCustomHeaders($params->customHeaders); if (isset($params->root)) $this->setRoot($params->root); } /** * @return mixed */ public function getUrl() { return $this->_url; } /** * @param mixed $url */ public function setUrl($url) { $this->_url = $url; } /** * @return string */ public function getMethod() { return $this->_method; } /** * @param string $method */ public function setMethod($method) { $this->_method = $method; } /** * @return string */ public function getAuthOption() { return $this->_authOption; } /** * @param string $authOption */ public function setAuthOption($authOption) { $this->_authOption = $authOption; } /** * @return string */ public function getUsername() { return $this->_username; } /** * @param string $username */ public function setUsername($username) { $this->_username = $username; } /** * @return string */ public function getPassword() { return $this->_password; } /** * @param string $password */ public function setPassword($password) { $this->_password = $password; } /** * @return array */ public function getCustomHeaders() { return $this->_customHeaders; } /** * @param mixed $customHeaders */ public function setCustomHeaders($customHeaders) { $this->_customHeaders = $customHeaders; } /** * @return string */ public function getRoot() { return $this->_root; } /** * @param string $root */ public function setRoot($root) { $this->_root = $root; } /** * Prepare Endpoint arguments * @return array */ public function prepareEndPointArgs($tableID) { $endPointArgs = array( 'method' => strtoupper($this->getMethod()), 'sslverify' => false, 'timeout' => 100 ); if ($this->getUsername() !== '' && $this->getPassword() !== '') { $endPointArgs['headers'] = array('Authorization' => 'Basic ' . base64_encode($this->getUsername() . ':' . $this->getPassword())); } if ($this->getCustomHeaders() !== []) { $customHeaders = $this->getCustomHeaders(); if (!empty($customHeaders)) { foreach ($customHeaders as $customHeader) { $headerKey = $customHeader->setKeyName; $headerValue = $customHeader->setKeyValue; $endPointArgs['headers'][$headerKey] = $headerValue; } } } return apply_filters('wpdatatables_filter_nested_json_endpoint_args', $endPointArgs, $this->getAllArgs(), $tableID); } /** * Get all JSON arguments */ public function getAllArgs() { $args = new stdClass(); $args->url = $this->getUrl(); $args->method = $this->getMethod(); $args->authOption = $this->getAuthOption(); $args->username = $this->getUsername(); $args->password = $this->getPassword(); $args->customHeaders = $this->getCustomHeaders(); $args->root = $this->getRoot(); return $args; } /** * Get data from JSON * * @throws Exception */ public function getData($tableID) { $response = $this->getResponse($tableID); if ($response === '' || $response === null) { throw new Exception('Response is empty. Please check is valid URL.'); } if (!is_array($response)) { throw new Exception($response); } return $this->getRowsByRootPath($response, $tableID); } /** * Get response from JSON API */ public function getResponse($tableID) { $endPointArgs = $this->prepareEndPointArgs($tableID); $response = wp_remote_request($this->getUrl(), $endPointArgs);; if (is_wp_error($response) || !in_array(intval($response['response']['code']), array(200, 201), true)) { return wp_remote_retrieve_response_message($response); } $response_body = wp_remote_retrieve_body($response); return json_decode($response_body, true); } /** * Get data by filtering array with root path */ private function getDataByRootPath($response, $root) { $filteredDataByChosenRoot = $response; foreach ($root as $tag) { if (array_key_exists($tag, $filteredDataByChosenRoot)) { $filteredDataByChosenRoot = $filteredDataByChosenRoot[$tag]; } else { $temp = array(); for ($depth = 0; $depth < count($filteredDataByChosenRoot); $depth++) { if (!isset($filteredDataByChosenRoot[$depth][$tag])) { continue; } $temp[] = $filteredDataByChosenRoot[$depth][$tag]; } $filteredDataByChosenRoot = $temp; } } if (empty($filteredDataByChosenRoot)) { $filteredDataByChosenRoot = $response; } return $filteredDataByChosenRoot; } /** * Get rows by filtering array with root path * @throws Exception */ private function getRowsByRootPath($response, $tableID) { $root = explode('->', $this->getRoot()); if (count($root) > 1) { array_shift($root); } $filteredDataByChosenRoot = $this->getDataByRootPath($response, $root); $data = $this->getFinalArray($filteredDataByChosenRoot, $tableID); $rows = $this->prepareFinalArrayWithSameStructure($data); return apply_filters('wpdatatables_filter_nested_json_rows_by_root_path', $rows, $this->getRoot(), $response); } /** * Get final array data from response */ private function getFinalArray($filteredDataByChosenRoot, $tableID) { $oneLevelDeepArrayValues = apply_filters('wpdatatables_get_one_level_deep_json_data_from_array_as_string', false, $this->getUrl(), $tableID); $arrayValuesSeparator = apply_filters('wpdatatables_set_one_level_deep_json_data_separator', '<br>', $this->getUrl(), $tableID); $isArrayContainsOnlyArrays = array_filter($filteredDataByChosenRoot, 'is_array') === $filteredDataByChosenRoot; $data = []; if (!$isArrayContainsOnlyArrays) { $tempData = array(); foreach ($filteredDataByChosenRoot as $filteredDataKey => $value) { if (is_array($value)) { if ($oneLevelDeepArrayValues) { foreach ($value as $keyVal => $val) { if (is_array($val)) { unset($value[$keyVal]); } else { if (!is_numeric($keyVal)) { $value[$keyVal] = $keyVal . ' = ' . $val; } } } $value = implode($arrayValuesSeparator, $value); } else { continue; } } $tempData[$filteredDataKey] = $value; } if(!empty($tempData)) $data[] = $tempData; } else { foreach ($filteredDataByChosenRoot as $filteredData) { $tempData = array(); foreach ($filteredData as $key => $value) { if (is_array($value)) { if ($oneLevelDeepArrayValues) { foreach ($value as $keyVal => $val) { if (is_array($val)) { unset($value[$keyVal]); } else { if (!is_numeric($keyVal)) { $value[$keyVal] = $keyVal . ' = ' . $val; } } } $value = implode($arrayValuesSeparator, $value); } else { continue; } } $tempData[$key] = $value; } if(!empty($tempData)) $data[] = $tempData; } } return apply_filters('wpdatatables_filter_nested_json_final_array', $data, $filteredDataByChosenRoot, $tableID); } /** * Prepare final array with same structure * @throws Exception */ private function prepareFinalArrayWithSameStructure($data) { $keys = array(); $rows = array(); foreach ($data as $el) { if (empty($el)) return $rows; if (empty($keys)) { $keys = array_keys($el); continue; } $keys = array_intersect($keys, array_keys($el)); } foreach ($data as $el) { $row = array(); foreach ($el as $key => $value) { if (in_array($key, $keys, true)) { $row[$key] = $value; } } $rows[] = $row; } if (empty($rows[0]) || isset($rows[0][0])) throw new Exception('Unable to retrieve data for chosen root path.'); return $rows; } /** * Get root elements from JSON URL */ public function prepareRoots($parent, $now, $root, $array) { if (is_null($array)) { return null; } $root[] = $parent; foreach ($array as $key => $value) { if (is_array($value) && !empty($value)) { if (!is_numeric($key)) { $now = sprintf('%s%s%s', $parent, '->', $key); $root[] = $now; } else { $now = $parent; } $root = $this->prepareRoots($now, $key, $root, $value); } } return array_unique($root); } }
Save
cmd:
run