]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php
Merge pull request #2751 from bdunogier/2.2-guzzle_subscribers_improvement
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / GuzzleSiteAuthenticator / GrabySiteConfigBuilder.php
index 6d4129e8063216ecd3ee97981bd43df3c047ad41..1c866f17e47eb6f228028caef5293b7dbee76039 100644 (file)
@@ -54,7 +54,7 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
             'loginUri' => $config->login_uri ?: null,
             'usernameField' => $config->login_username_field ?: null,
             'passwordField' => $config->login_password_field ?: null,
-            'extraFields' => is_array($config->login_extra_fields) ? $config->login_extra_fields : [],
+            'extraFields' => $this->processExtraFields($config->login_extra_fields),
             'notLoggedInXpath' => $config->not_logged_in_xpath ?: null,
         ];
 
@@ -65,4 +65,30 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
 
         return new SiteConfig($parameters);
     }
+
+    /**
+     * Processes login_extra_fields config, transforming an '=' separated array of strings
+     * into a key/value array.
+     *
+     * @param array|mixed $extraFieldsStrings
+     *
+     * @return array
+     */
+    protected function processExtraFields($extraFieldsStrings)
+    {
+        if (!is_array($extraFieldsStrings)) {
+            return [];
+        }
+
+        $extraFields = [];
+        foreach ($extraFieldsStrings as $extraField) {
+            if (strpos($extraField, '=') === false) {
+                continue;
+            }
+            list($fieldName, $fieldValue) = explode('=', $extraField, 2);
+            $extraFields[$fieldName] = $fieldValue;
+        }
+
+        return $extraFields;
+    }
 }