]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #2708 from jcharaoui/import-disablecontentupdate
authorJérémy Benoist <j0k3r@users.noreply.github.com>
Fri, 2 Jun 2017 09:26:37 +0000 (11:26 +0200)
committerGitHub <noreply@github.com>
Fri, 2 Jun 2017 09:26:37 +0000 (11:26 +0200)
Import disableContentUpdate

app/config/parameters.yml.dist
src/Wallabag/CoreBundle/Controller/EntryController.php
src/Wallabag/CoreBundle/Controller/TagController.php
src/Wallabag/CoreBundle/Helper/DownloadImages.php
src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php
src/Wallabag/UserBundle/Entity/User.php
src/Wallabag/UserBundle/EventListener/CreateConfigListener.php
tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php

index 97f51ed1f676966e5b405cd624cede955a20221d..afcee0399006a400030573bc9c5cf6d0e270c988 100644 (file)
@@ -10,17 +10,18 @@ parameters:
     # database_user: %env.database_user%
     # database_password: %env.database_password%
 
-    database_driver: pdo_sqlite
+    database_driver: pdo_mysql
     database_host: 127.0.0.1
     database_port: ~
-    database_name: symfony
+    database_name: wallabag
     database_user: root
     database_password: ~
-    database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
+    # For SQLite, database_path should be "%kernel.root_dir%/../data/db/wallabag.sqlite"
+    database_path: null
     database_table_prefix: wallabag_
     database_socket: null
-    # with MySQL, use "utf8mb4" if you got problem with content with emojis
-    database_charset: utf8
+    # with PostgreSQL and SQLite, you must set "utf8"
+    database_charset: utf8mb4
 
     mailer_transport: smtp
     mailer_host: 127.0.0.1
index 4b2bc7da4e8116d58a13a19e0026978ed216e558..fafa49f1b0bb69a156db8318a6ab3e9a9c2bba02 100644 (file)
@@ -314,8 +314,7 @@ class EntryController extends Controller
 
         $pagerAdapter = new DoctrineORMAdapter($qb->getQuery(), true, false);
 
-        $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')
-            ->prepare($pagerAdapter, $page);
+        $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')->prepare($pagerAdapter);
 
         try {
             $entries->setCurrentPage($page);
index 736eb1dc0b33b4e5240938386f097942d5639003..9422bae43644b1796518d14ec5680661e4547fcd 100644 (file)
@@ -125,8 +125,7 @@ class TagController extends Controller
 
         $pagerAdapter = new ArrayAdapter($entriesByTag);
 
-        $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')
-            ->prepare($pagerAdapter, $page);
+        $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')->prepare($pagerAdapter);
 
         try {
             $entries->setCurrentPage($page);
index 0d330d2a315c5f01d9d1d11022cde49c7f29ae86..54e23a052684bc87c3508fd2dbc632d15294c891 100644 (file)
@@ -54,7 +54,7 @@ class DownloadImages
         $crawler = new Crawler($html);
         $result = $crawler
             ->filterXpath('//img')
-            ->extract(array('src'));
+            ->extract(['src']);
 
         $relativePath = $this->getRelativePath($entryId);
 
@@ -66,6 +66,11 @@ class DownloadImages
                 continue;
             }
 
+            // if image contains "&" and we can't find it in the html it might be because it's encoded as &amp;
+            if (false !== stripos($image, '&') && false === stripos($html, $image)) {
+                $image = str_replace('&', '&amp;', $image);
+            }
+
             $html = str_replace($image, $imagePath, $html);
         }
 
@@ -114,7 +119,7 @@ class DownloadImages
         $ext = $this->mimeGuesser->guess($res->getHeader('content-type'));
         $this->logger->debug('DownloadImages: Checking extension', ['ext' => $ext, 'header' => $res->getHeader('content-type')]);
         if (!in_array($ext, ['jpeg', 'jpg', 'gif', 'png'], true)) {
-            $this->logger->error('DownloadImages: Processed image with not allowed extension. Skipping '.$imagePath);
+            $this->logger->error('DownloadImages: Processed image with not allowed extension. Skipping: '.$imagePath);
 
             return false;
         }
index 7d3798b95523b96e13c789df9abb0de18a101a78..df579ebdc1fe260205528dfbd194d1a18462ed1e 100644 (file)
@@ -20,16 +20,15 @@ class PreparePagerForEntries
 
     /**
      * @param AdapterInterface $adapter
-     * @param int              $page
      *
      * @return null|Pagerfanta
      */
-    public function prepare(AdapterInterface $adapter, $page = 1)
+    public function prepare(AdapterInterface $adapter)
     {
         $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
 
         if (null === $user || !is_object($user)) {
-            return null;
+            return;
         }
 
         $entries = new Pagerfanta($adapter);
index 1ff3046a8c798a226e5964d8ebdde28b170a3040..ed6ce3319c5b89f47781c40961e860a4e71a3f68 100644 (file)
@@ -64,7 +64,7 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf
     protected $email;
 
     /**
-     * @var date
+     * @var \DateTime
      *
      * @ORM\Column(name="created_at", type="datetime")
      *
@@ -73,7 +73,7 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf
     protected $createdAt;
 
     /**
-     * @var date
+     * @var \DateTime
      *
      * @ORM\Column(name="updated_at", type="datetime")
      *
@@ -157,7 +157,7 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf
     }
 
     /**
-     * @return string
+     * @return \DateTime
      */
     public function getCreatedAt()
     {
@@ -165,7 +165,7 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf
     }
 
     /**
-     * @return string
+     * @return \DateTime
      */
     public function getUpdatedAt()
     {
index 0bdd1cae061d365a751911de1fc73f5f34c34e00..e4d55c19746ff78f0df97bc052c464426f57b87d 100644 (file)
@@ -5,7 +5,6 @@ namespace Wallabag\UserBundle\EventListener;
 use Doctrine\ORM\EntityManager;
 use FOS\UserBundle\Event\UserEvent;
 use FOS\UserBundle\FOSUserEvents;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Wallabag\CoreBundle\Entity\Config;
 
@@ -47,7 +46,7 @@ class CreateConfigListener implements EventSubscriberInterface
         ];
     }
 
-    public function createConfig(UserEvent $event, $eventName = null, EventDispatcherInterface $eventDispatcher = null)
+    public function createConfig(UserEvent $event)
     {
         $config = new Config($event->getUser());
         $config->setTheme($this->theme);
index 85f12d87b27277f7f8a543fc0d947798d35c82ce..9125f8dcb2da20fbeb0ebd61a67efbdba11f00dc 100644 (file)
@@ -12,7 +12,24 @@ use GuzzleHttp\Stream\Stream;
 
 class DownloadImagesTest extends \PHPUnit_Framework_TestCase
 {
-    public function testProcessHtml()
+    public function dataForSuccessImage()
+    {
+        return [
+            'imgur' => [
+                '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>',
+                'http://imgur.com/gallery/WxtWY',
+            ],
+            'image with &' => [
+                '<div><img src="https://i2.wp.com/www.tvaddons.ag/wp-content/uploads/2017/01/Screen-Shot-2017-01-07-at-10.17.40-PM.jpg?w=640&amp;ssl=1" /></div>',
+                'https://www.tvaddons.ag/realdebrid-kodi-jarvis/',
+            ],
+        ];
+    }
+
+    /**
+     * @dataProvider dataForSuccessImage
+     */
+    public function testProcessHtml($html, $url)
     {
         $client = new Client();
 
@@ -27,9 +44,10 @@ class DownloadImagesTest extends \PHPUnit_Framework_TestCase
 
         $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger);
 
-        $res = $download->processHtml(123, '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>', 'http://imgur.com/gallery/WxtWY');
+        $res = $download->processHtml(123, $html, $url);
 
-        $this->assertContains('http://wallabag.io/assets/images/9/b/9b0ead26/c638b4c2.png', $res);
+        // this the base path of all image (since it's calculated using the entry id: 123)
+        $this->assertContains('http://wallabag.io/assets/images/9/b/9b0ead26/', $res);
     }
 
     public function testProcessHtmlWithBadImage()