annotate default/assets/vendors/theme-widgets/vendor/abraham/twitteroauth/src/Util.php @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 <?php
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 * The MIT License
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 * Copyright (c) 2007 Andy Smith
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 namespace Abraham\TwitterOAuth;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 class Util
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 * @param $input
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 * @return array|mixed|string
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 public static function urlencodeRfc3986($input)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 $output = '';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 if (is_array($input)) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 $output = array_map([__NAMESPACE__ . '\Util', 'urlencodeRfc3986'], $input);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 } elseif (is_scalar($input)) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 $output = rawurlencode($input);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 return $output;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 * @param string $string
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 * @return string
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 public static function urldecodeRfc3986($string)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 return urldecode($string);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 * This function takes a input like a=b&a=c&d=e and returns the parsed
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 * parameters like this
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 * array('a' => array('b','c'), 'd' => 'e')
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 * @param string $input
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43 * @return array
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 public static function parseParameters($input)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 if (!is_string($input)) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48 return [];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 $pairs = explode('&', $input);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 $parameters = [];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 foreach ($pairs as $pair) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 $split = explode('=', $pair, 2);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 $parameter = Util::urldecodeRfc3986($split[0]);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 $value = isset($split[1]) ? Util::urldecodeRfc3986($split[1]) : '';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59 if (isset($parameters[$parameter])) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 // We have already recieved parameter(s) with this name, so add to the list
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 // of parameters with this name
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 if (is_scalar($parameters[$parameter])) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 // This is the first duplicate, so transform scalar (string) into an array
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 // so we can add the duplicates
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 $parameters[$parameter] = [$parameters[$parameter]];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 $parameters[$parameter][] = $value;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 $parameters[$parameter] = $value;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 return $parameters;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 * @param array $params
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 * @return string
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 public static function buildHttpQuery(array $params)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 if (empty($params)) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85 return '';
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 // Urlencode both keys and values
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 $keys = Util::urlencodeRfc3986(array_keys($params));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 $values = Util::urlencodeRfc3986(array_values($params));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 $params = array_combine($keys, $values);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 // Parameters are sorted by name, using lexicographical byte value ordering.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94 // Ref: Spec: 9.1.1 (1)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95 uksort($params, 'strcmp');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97 $pairs = [];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
98 foreach ($params as $parameter => $value) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
99 if (is_array($value)) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
100 // If two or more parameters share the same name, they are sorted by their value
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
101 // Ref: Spec: 9.1.1 (1)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
102 // June 12th, 2010 - changed to sort because of issue 164 by hidetaka
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
103 sort($value, SORT_STRING);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
104 foreach ($value as $duplicateValue) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
105 $pairs[] = $parameter . '=' . $duplicateValue;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
106 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
107 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
108 $pairs[] = $parameter . '=' . $value;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
109 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
110 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
111 // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
112 // Each name-value pair is separated by an '&' character (ASCII code 38)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
113 return implode('&', $pairs);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
114 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
115 }