diff options
Diffstat (limited to 'src/Wallabag')
-rw-r--r-- | src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php b/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php index 6d4129e8..1c866f17 100644 --- a/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php +++ b/src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php | |||
@@ -54,7 +54,7 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder | |||
54 | 'loginUri' => $config->login_uri ?: null, | 54 | 'loginUri' => $config->login_uri ?: null, |
55 | 'usernameField' => $config->login_username_field ?: null, | 55 | 'usernameField' => $config->login_username_field ?: null, |
56 | 'passwordField' => $config->login_password_field ?: null, | 56 | 'passwordField' => $config->login_password_field ?: null, |
57 | 'extraFields' => is_array($config->login_extra_fields) ? $config->login_extra_fields : [], | 57 | 'extraFields' => $this->processExtraFields($config->login_extra_fields), |
58 | 'notLoggedInXpath' => $config->not_logged_in_xpath ?: null, | 58 | 'notLoggedInXpath' => $config->not_logged_in_xpath ?: null, |
59 | ]; | 59 | ]; |
60 | 60 | ||
@@ -65,4 +65,30 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder | |||
65 | 65 | ||
66 | return new SiteConfig($parameters); | 66 | return new SiteConfig($parameters); |
67 | } | 67 | } |
68 | |||
69 | /** | ||
70 | * Processes login_extra_fields config, transforming an '=' separated array of strings | ||
71 | * into a key/value array. | ||
72 | * | ||
73 | * @param array|mixed $extraFieldsStrings | ||
74 | * | ||
75 | * @return array | ||
76 | */ | ||
77 | protected function processExtraFields($extraFieldsStrings) | ||
78 | { | ||
79 | if (!is_array($extraFieldsStrings)) { | ||
80 | return []; | ||
81 | } | ||
82 | |||
83 | $extraFields = []; | ||
84 | foreach ($extraFieldsStrings as $extraField) { | ||
85 | if (strpos($extraField, '=') === false) { | ||
86 | continue; | ||
87 | } | ||
88 | list($fieldName, $fieldValue) = explode('=', $extraField, 2); | ||
89 | $extraFields[$fieldName] = $fieldValue; | ||
90 | } | ||
91 | |||
92 | return $extraFields; | ||
93 | } | ||
68 | } | 94 | } |