]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
fix bug #209: titles with colon bad parsed
authorNicolas Lœuillet <nicolas.loeuillet@gmail.com>
Thu, 12 Sep 2013 17:28:59 +0000 (19:28 +0200)
committerNicolas Lœuillet <nicolas.loeuillet@gmail.com>
Thu, 12 Sep 2013 17:28:59 +0000 (19:28 +0200)
inc/poche/PocheReadability.php [new file with mode: 0644]
inc/poche/Url.class.php
inc/poche/config.inc.php

diff --git a/inc/poche/PocheReadability.php b/inc/poche/PocheReadability.php
new file mode 100644 (file)
index 0000000..48ae90d
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+class PocheReadability extends Readability
+{
+    /**
+    * Get the article title as an H1.
+    *
+    * @return DOMElement
+    */
+    protected function getArticleTitle() {
+        $curTitle = '';
+        $origTitle = '';
+
+        try {
+            $curTitle = $origTitle = $this->getInnerText($this->dom->getElementsByTagName('title')->item(0));
+        } catch(Exception $e) {}
+        
+        if (preg_match('/ [\|\-] /', $curTitle))
+        {
+            $curTitle = preg_replace('/(.*)[\|\-] .*/i', '$1', $origTitle);
+            
+            if (count(explode(' ', $curTitle)) < 3) {
+                $curTitle = preg_replace('/[^\|\-]*[\|\-](.*)/i', '$1', $origTitle);
+            }
+        }
+        else if(strlen($curTitle) > 150 || strlen($curTitle) < 15)
+        {
+            $hOnes = $this->dom->getElementsByTagName('h1');
+            if($hOnes->length == 1)
+            {
+                $curTitle = $this->getInnerText($hOnes->item(0));
+            }
+        }
+
+        $curTitle = trim($curTitle);
+
+        if (count(explode(' ', $curTitle)) <= 4) {
+            $curTitle = $origTitle;
+        }
+        
+        $articleTitle = $this->dom->createElement('h1');
+        $articleTitle->innerHTML = $curTitle;
+        
+        return $articleTitle;
+    }
+}
\ No newline at end of file
index 5a8930144358674169bf94746aad80a8f725226c..600a216651f45d8cc7576e8cc3e7ac36bef3cf94 100644 (file)
@@ -354,7 +354,7 @@ class Url
         }
         if (isset($splink)) {
             // Build DOM tree from HTML
-            $readability = new Readability($html, $url);
+            $readability = new PocheReadability($html, $url);
             $xpath = new DOMXPath($readability->dom);
             // Loop through single_page_link xpath expressions
             $single_page_url = null;
index 45526695acc28adf3db3a112d939ca8858223395..aaa26af896958c4fbe9ce2c91330ee9c02045140 100755 (executable)
@@ -20,6 +20,7 @@ require_once __DIR__ . '/../../inc/poche/Url.class.php';
 require_once __DIR__ . '/../../inc/3rdparty/class.messages.php';
 require_once __DIR__ . '/../../inc/poche/Poche.class.php';
 require_once __DIR__ . '/../../inc/3rdparty/Readability.php';
+require_once __DIR__ . '/../../inc/poche/PocheReadability.php';
 require_once __DIR__ . '/../../inc/3rdparty/Encoding.php';
 require_once __DIR__ . '/../../inc/poche/Database.class.php';
 require_once __DIR__ . '/../../vendor/autoload.php';
@@ -47,11 +48,4 @@ if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timez
     date_default_timezone_set('UTC');
 }
 
-$poche = new Poche();
-#XSRF protection with token
-// if (!empty($_POST)) {
-//     if (!Session::isToken($_POST['token'])) {
-//         die(_('Wrong token'));
-//     }
-//     unset($_SESSION['tokens']);
-// }
\ No newline at end of file
+$poche = new Poche();
\ No newline at end of file