summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2020-04-01 02:09:08 +0200
committerGravatar GitHub <noreply@github.com> 2020-04-01 02:09:08 +0200
commit656b61ff2956351538cc70fe79cc534b1eb58e0c (patch)
tree445103013e333a4c4296f0bc19f4fdc9635c3b15
parent5858aaf7fc4f4ebfe7cc4036d46a93397b06ccde (diff)
Fix fetch content for complex HEAD (#2867)
* Fix contentSelectorPreviewAction Was not compatible with https://github.com/FreshRSS/FreshRSS/pull/2588 * Fix lib_phpQuery for <head ...> #fix https://github.com/FreshRSS/FreshRSS/issues/2864 * Replace split() by explode() for PHP7 compatibility https://php.net/str-split * Fix for document with a `<head>` tag more complicated, like `<head profile="http://www.w3.org/1999/xhtml/vocab">`
-rwxr-xr-xapp/Controllers/feedController.php12
-rw-r--r--lib/lib_phpQuery.php9
2 files changed, 14 insertions, 7 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index 38aa09223..43a6b7287 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -753,14 +753,20 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
//Check Feed ID validity.
$entryDAO = FreshRSS_Factory::createEntryDao();
$entries = $entryDAO->listWhere('f', $feed_id);
+ $entry = null;
- if (empty($entries)) {
+ //Get first entry (syntax robust for Generator or Array)
+ foreach ($entries as $myEntry) {
+ $entry = $myEntry;
+ break;
+ }
+
+ if ($entry == null) {
$this->view->fatalError = _t('feedback.sub.feed.selector_preview.no_entries');
return;
}
- //Get feed & entry.
- $entry = $entries[0];
+ //Get feed.
$feed = $entry->feed(true);
if (!$feed) {
diff --git a/lib/lib_phpQuery.php b/lib/lib_phpQuery.php
index 194efa0c6..53a3952cb 100644
--- a/lib/lib_phpQuery.php
+++ b/lib/lib_phpQuery.php
@@ -501,9 +501,10 @@ class DOMDocumentWrapper {
$metaContentType = $matches[0][0];
$markup = substr($markup, 0, $matches[0][1])
.substr($markup, $matches[0][1]+strlen($metaContentType));
- $headStart = stripos($markup, '<head>');
- $markup = substr($markup, 0, $headStart+6).$metaContentType
- .substr($markup, $headStart+6);
+ $headStart = stripos($markup, '<head');
+ $headStop = stripos($markup, '>', $headStart);
+ $markup = substr($markup, 0, $headStop+1).$metaContentType
+ .substr($markup, $headStop+1);
return $markup;
}
protected function charsetAppendToHTML($html, $charset, $xhtml = false) {
@@ -4206,7 +4207,7 @@ class phpQueryObject
.($node->getAttribute('id')
? '#'.$node->getAttribute('id'):'')
.($node->getAttribute('class')
- ? '.'.join('.', split(' ', $node->getAttribute('class'))):'')
+ ? '.'.join('.', explode(' ', $node->getAttribute('class'))):'')
.($node->getAttribute('name')
? '[name="'.$node->getAttribute('name').'"]':'')
.($node->getAttribute('value') && strpos($node->getAttribute('value'), '<'.'?php') === false