PluginProbe
Photonic Gallery & Lightbox for Flickr, SmugMug & Others / 2.44
Photonic Gallery & Lightbox for Flickr, SmugMug & Others v2.44
3.35 3.34 3.33 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31 2.32 2.33 2.34 2.40 2.41 2.42 2.43 2.44 2.45 All 140 releases
photonic / Modules / Authenticator.php

Authenticator.php in Photonic Gallery & Lightbox for Flickr, SmugMug & Others 2.44, at Modules/Authenticator.php

104 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Photonic_Plugin\Modules;
3
4 trait Authenticator {
5 abstract function get_access_token($token);
6
7 public function oauth_signature_method() {
8 return 'HMAC-SHA1';
9 }
10
11 /**
12 * Encodes the URL as per RFC3986 specs. This replaces some strings in addition to the ones done by a rawurlencode.
13 * This has been adapted from the OAuth for PHP project.
14 *
15 * @static
16 * @param $input
17 * @return array|mixed|string
18 */
19 public static function urlencode_rfc3986($input) {
20 if (is_array($input)) {
21 return array_map(['Photonic_Plugin\Modules\Authenticator', 'urlencode_rfc3986'], $input);
22 }
23 else if (is_scalar($input)) {
24 return str_replace(
25 '+',
26 ' ',
27 str_replace('%7E', '~', rawurlencode($input))
28 );
29 }
30 else {
31 return '';
32 }
33 }
34
35 /**
36 * Takes an array of parameters, then parses it and generates a query string. Prior to generating the query string the parameters are sorted in their natural order.
37 * Without sorting the signatures between this application and the provider might differ.
38 *
39 * @static
40 * @param $params
41 * @return string
42 */
43 public static function build_query($params) {
44 if (!$params) {
45 return '';
46 }
47 $keys = array_map(['Photonic_Plugin\Modules\Authenticator', 'urlencode_rfc3986'], array_keys($params));
48 $values = array_map(['Photonic_Plugin\Modules\Authenticator', 'urlencode_rfc3986'], array_values($params));
49 $params = array_combine($keys, $values);
50
51 // Sort by keys (natsort)
52 uksort($params, 'strnatcmp');
53 $pairs = [];
54 foreach ($params as $key => $value) {
55 if (is_array($value)) {
56 natsort($value);
57 foreach ($value as $v2) {
58 $pairs[] = ($v2 == '') ? "$key=0" : "$key=$v2";
59 }
60 }
61 else {
62 $pairs[] = ($value == '') ? "$key=0" : "$key=$value";
63 }
64 }
65
66 $string = implode('&', $pairs);
67 return $string;
68 }
69
70 /**
71 * Takes a token response from a request token call, then puts it in an appropriate array.
72 *
73 * @param $response
74 * @return array
75 */
76 abstract public function parse_token($response);
77
78 /**
79 * Saves the token in the authentication options.
80 *
81 * @param $token
82 */
83 public function save_token($token) {
84 $photonic_authentication = get_option('photonic_authentication');
85 if (!isset($photonic_authentication)) {
86 $photonic_authentication = [];
87 }
88 $photonic_authentication[$this->provider] = $token;
89 update_option('photonic_authentication', $photonic_authentication);
90 }
91
92 /**
93 * Fetches a token from authentication options
94 *
95 * @return array|null
96 */
97 public function get_cached_token() {
98 $photonic_authentication = get_option('photonic_authentication');
99 if (!empty($photonic_authentication) && isset($photonic_authentication[$this->provider])) {
100 return $photonic_authentication[$this->provider];
101 }
102 return null;
103 }
104 }