aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Wallabag/CoreBundle/Helper/ContentProxy.php23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/Wallabag/CoreBundle/Helper/ContentProxy.php b/src/Wallabag/CoreBundle/Helper/ContentProxy.php
index 92351986..a93f4a2d 100644
--- a/src/Wallabag/CoreBundle/Helper/ContentProxy.php
+++ b/src/Wallabag/CoreBundle/Helper/ContentProxy.php
@@ -328,6 +328,18 @@ class ContentProxy
328 $parsed_entry_url = parse_url($entry->getUrl()); 328 $parsed_entry_url = parse_url($entry->getUrl());
329 $parsed_content_url = parse_url($url); 329 $parsed_content_url = parse_url($url);
330 330
331 /**
332 * The following part computes the list of part changes between two
333 * parse_url arrays.
334 *
335 * As array_diff_assoc only computes changes to go from the left array
336 * to the right one, we make two differents arrays to have both
337 * directions. We merge these two arrays and sort keys before passing
338 * the result to the switch.
339 *
340 * The resulting array gives us all changing parts between the two
341 * urls: scheme, host, path, query and/or fragment.
342 */
331 $diff_ec = array_diff_assoc($parsed_entry_url, $parsed_content_url); 343 $diff_ec = array_diff_assoc($parsed_entry_url, $parsed_content_url);
332 $diff_ce = array_diff_assoc($parsed_content_url, $parsed_entry_url); 344 $diff_ce = array_diff_assoc($parsed_content_url, $parsed_entry_url);
333 345
@@ -340,6 +352,17 @@ class ContentProxy
340 return false; 352 return false;
341 } 353 }
342 354
355 /**
356 * This switch case lets us apply different behaviors according to
357 * changing parts of urls.
358 *
359 * As $diff_keys is an array, we provide arrays as cases. ['path'] means
360 * 'only the path is different between the two urls' whereas
361 * ['fragment', 'query'] means 'only fragment and query string parts are
362 * different between the two urls'.
363 *
364 * Note that values in $diff_keys are sorted.
365 */
343 switch ($diff_keys) { 366 switch ($diff_keys) {
344 case ['path']: 367 case ['path']:
345 if (($parsed_entry_url['path'] . '/' === $parsed_content_url['path']) // diff is trailing slash, we only replace the url of the entry 368 if (($parsed_entry_url['path'] . '/' === $parsed_content_url['path']) // diff is trailing slash, we only replace the url of the entry