]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #3340 from Kdecherf/fix-webpack
authorJérémy Benoist <j0k3r@users.noreply.github.com>
Thu, 7 Sep 2017 05:17:05 +0000 (07:17 +0200)
committerGitHub <noreply@github.com>
Thu, 7 Sep 2017 05:17:05 +0000 (07:17 +0200)
Fix webpack error on comments

composer.json
src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTagData.php
src/Wallabag/CoreBundle/Helper/EntriesExport.php
src/Wallabag/CoreBundle/Repository/EntryRepository.php
tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php
tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php
tests/Wallabag/CoreBundle/Controller/RssControllerTest.php

index e609af40a711fd922b7d7af60d6f0975691c5610..fa0a4a39d7309145058f80221557fe4c169dab56 100644 (file)
@@ -84,7 +84,8 @@
         "symfony/dom-crawler": "^3.1",
         "friendsofsymfony/jsrouting-bundle": "^1.6",
         "bdunogier/guzzle-site-authenticator": "^1.0.0@dev",
-        "defuse/php-encryption": "^2.1"
+        "defuse/php-encryption": "^2.1",
+        "html2text/html2text": "^4.1"
     },
     "require-dev": {
         "doctrine/doctrine-fixtures-bundle": "~2.2",
index 6de561e0d5843908e414fe44473380f172a008ff..0ecfd18b55ddab8c00f1616586f78a9f576af5c3 100644 (file)
@@ -19,7 +19,7 @@ class LoadTagData extends AbstractFixture implements OrderedFixtureInterface
 
         $manager->persist($tag1);
 
-        $this->addReference('foo-tag', $tag1);
+        $this->addReference('foo-bar-tag', $tag1);
 
         $tag2 = new Tag();
         $tag2->setLabel('bar');
@@ -35,6 +35,13 @@ class LoadTagData extends AbstractFixture implements OrderedFixtureInterface
 
         $this->addReference('baz-tag', $tag3);
 
+        $tag4 = new Tag();
+        $tag4->setLabel('foo');
+
+        $manager->persist($tag4);
+
+        $this->addReference('foo-tag', $tag4);
+
         $manager->flush();
     }
 
index de259e7ffc25246acbab2299078b63afd38778cd..838b97342eb171ed8ee671f75b70549720e7ee32 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace Wallabag\CoreBundle\Helper;
 
+use Html2Text\Html2Text;
 use JMS\Serializer\SerializationContext;
 use JMS\Serializer\SerializerBuilder;
 use PHPePub\Core\EPub;
@@ -408,7 +409,8 @@ class EntriesExport
         $bar = str_repeat('=', 100);
         foreach ($this->entries as $entry) {
             $content .= "\n\n" . $bar . "\n\n" . $entry->getTitle() . "\n\n" . $bar . "\n\n";
-            $content .= trim(preg_replace('/\s+/S', ' ', strip_tags($entry->getContent()))) . "\n\n";
+            $html = new Html2Text($entry->getContent(), ['do_links' => 'none', 'width' => 100]);
+            $content .= $html->getText();
         }
 
         return Response::create(
index ecc159fc0463b8585c75d90e1a8ba53d76e99d80..05f0e0ba17e665bb4cea4ed942d8e7aa1fd406e2 100644 (file)
@@ -133,7 +133,7 @@ class EntryRepository extends EntityRepository
     {
         $qb = $this->createQueryBuilder('e')
             ->leftJoin('e.tags', 't')
-            ->where('e.user =:userId')->setParameter('userId', $userId);
+            ->where('e.user = :userId')->setParameter('userId', $userId);
 
         if (null !== $isArchived) {
             $qb->andWhere('e.isArchived = :isArchived')->setParameter('isArchived', (bool) $isArchived);
@@ -152,8 +152,23 @@ class EntryRepository extends EntityRepository
         }
 
         if ('' !== $tags) {
-            foreach (explode(',', $tags) as $tag) {
-                $qb->andWhere('t.label = :label')->setParameter('label', $tag);
+            foreach (explode(',', $tags) as $i => $tag) {
+                $entryAlias = 'e' . $i;
+                $tagAlias = 't' . $i;
+
+                // Complexe queries to ensure multiple tags are associated to an entry
+                // https://stackoverflow.com/a/6638146/569101
+                $qb->andWhere($qb->expr()->in(
+                    'e.id',
+                    $this->createQueryBuilder($entryAlias)
+                        ->select($entryAlias . '.id')
+                        ->leftJoin($entryAlias . '.tags', $tagAlias)
+                        ->where($tagAlias . '.label = :label' . $i)
+                        ->getDQL()
+                ));
+
+                // bound parameter to the main query builder
+                $qb->setParameter('label' . $i, $tag);
             }
         }
 
@@ -181,7 +196,7 @@ class EntryRepository extends EntityRepository
             ->innerJoin('e.tags', 't')
             ->innerJoin('e.user', 'u')
             ->addSelect('t', 'u')
-            ->where('e.user=:userId')->setParameter('userId', $userId)
+            ->where('e.user = :userId')->setParameter('userId', $userId)
         ;
 
         return $qb->getQuery()->getResult();
@@ -323,7 +338,7 @@ class EntryRepository extends EntityRepository
     {
         $qb = $this->createQueryBuilder('e')
             ->select('count(e)')
-            ->where('e.user=:userId')->setParameter('userId', $userId)
+            ->where('e.user = :userId')->setParameter('userId', $userId)
         ;
 
         return (int) $qb->getQuery()->getSingleScalarResult();
index f4c8a6304f7477b1907932384793472cb652cc14..fcec3f3b2fba1ad15f11c55ba3d8d318fbc833c5 100644 (file)
@@ -292,6 +292,9 @@ class EntryRestControllerTest extends WallabagApiTestCase
         $this->assertSame(1, $content['page']);
         $this->assertGreaterThanOrEqual(1, $content['pages']);
 
+        $this->assertContains('foo', array_column($content['_embedded']['items'][0]['tags'], 'label'), 'Entries tags should have "foo" tag');
+        $this->assertContains('bar', array_column($content['_embedded']['items'][0]['tags'], 'label'), 'Entries tags should have "bar" tag');
+
         $this->assertArrayHasKey('_links', $content);
         $this->assertArrayHasKey('self', $content['_links']);
         $this->assertArrayHasKey('first', $content['_links']);
index 3e216381eb797903c2b7b38dfcafe33327201d66..ab7f23cc516a51acf4f959b39c8d7cc584745b89 100644 (file)
@@ -239,7 +239,8 @@ class ExportControllerTest extends WallabagCoreTestCase
         $this->assertSame($contentInDB->getLanguage(), $content[0]['language']);
         $this->assertSame($contentInDB->getReadingtime(), $content[0]['reading_time']);
         $this->assertSame($contentInDB->getDomainname(), $content[0]['domain_name']);
-        $this->assertSame(['foo bar', 'baz'], $content[0]['tags']);
+        $this->assertContains('baz', $content[0]['tags']);
+        $this->assertContains('foo', $content[0]['tags']);
     }
 
     public function testXmlExport()
index 6167fe2dbf82d2a880f0f34ca5f397b181297351..c6ca49374cd002086226fa66714102b7992d462e 100644 (file)
@@ -184,13 +184,13 @@ class RssControllerTest extends WallabagCoreTestCase
         $em->flush();
 
         $client = $this->getClient();
-        $client->request('GET', '/admin/SUPERTOKEN/tags/foo-bar.xml');
+        $client->request('GET', '/admin/SUPERTOKEN/tags/foo.xml');
 
         $this->assertSame(200, $client->getResponse()->getStatusCode());
 
-        $this->validateDom($client->getResponse()->getContent(), 'tag (foo bar)', 'tags/foo-bar');
+        $this->validateDom($client->getResponse()->getContent(), 'tag (foo)', 'tags/foo');
 
-        $client->request('GET', '/admin/SUPERTOKEN/tags/foo-bar.xml?page=3000');
+        $client->request('GET', '/admin/SUPERTOKEN/tags/foo.xml?page=3000');
         $this->assertSame(302, $client->getResponse()->getStatusCode());
     }
 }