diff options
-rw-r--r-- | app/DoctrineMigrations/Version20170511115400.php | 55 | ||||
-rw-r--r-- | src/Wallabag/CoreBundle/Entity/Entry.php | 35 | ||||
-rw-r--r-- | src/Wallabag/CoreBundle/Helper/ContentProxy.php | 4 | ||||
-rw-r--r-- | tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php | 3 |
4 files changed, 93 insertions, 4 deletions
diff --git a/app/DoctrineMigrations/Version20170511115400.php b/app/DoctrineMigrations/Version20170511115400.php new file mode 100644 index 00000000..64ee9e0a --- /dev/null +++ b/app/DoctrineMigrations/Version20170511115400.php | |||
@@ -0,0 +1,55 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Application\Migrations; | ||
4 | |||
5 | use Doctrine\DBAL\Migrations\AbstractMigration; | ||
6 | use Doctrine\DBAL\Schema\Schema; | ||
7 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||
8 | use Symfony\Component\DependencyInjection\ContainerInterface; | ||
9 | |||
10 | /** | ||
11 | * Added `headers` field in entry table. | ||
12 | */ | ||
13 | class Version20170511115400 extends AbstractMigration implements ContainerAwareInterface | ||
14 | { | ||
15 | /** | ||
16 | * @var ContainerInterface | ||
17 | */ | ||
18 | private $container; | ||
19 | |||
20 | public function setContainer(ContainerInterface $container = null) | ||
21 | { | ||
22 | $this->container = $container; | ||
23 | } | ||
24 | |||
25 | private function getTable($tableName) | ||
26 | { | ||
27 | return $this->container->getParameter('database_table_prefix').$tableName; | ||
28 | } | ||
29 | |||
30 | /** | ||
31 | * @param Schema $schema | ||
32 | */ | ||
33 | public function up(Schema $schema) | ||
34 | { | ||
35 | $entryTable = $schema->getTable($this->getTable('entry')); | ||
36 | |||
37 | $this->skipIf($entryTable->hasColumn('headers'), 'It seems that you already played this migration.'); | ||
38 | |||
39 | $entryTable->addColumn('headers', 'text', [ | ||
40 | 'notnull' => false, | ||
41 | ]); | ||
42 | } | ||
43 | |||
44 | /** | ||
45 | * @param Schema $schema | ||
46 | */ | ||
47 | public function down(Schema $schema) | ||
48 | { | ||
49 | $entryTable = $schema->getTable($this->getTable('entry')); | ||
50 | |||
51 | $this->skipIf(!$entryTable->hasColumn('headers'), 'It seems that you already played this migration.'); | ||
52 | |||
53 | $entryTable->dropColumn('headers'); | ||
54 | } | ||
55 | } | ||
diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index b71c467c..08a67c34 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php | |||
@@ -133,7 +133,7 @@ class Entry | |||
133 | /** | 133 | /** |
134 | * @var array | 134 | * @var array |
135 | * | 135 | * |
136 | * @ORM\Column(name="published_by", type="json_array", nullable=true) | 136 | * @ORM\Column(name="published_by", type="array", nullable=true) |
137 | * | 137 | * |
138 | * @Groups({"entries_for_user", "export_all"}) | 138 | * @Groups({"entries_for_user", "export_all"}) |
139 | */ | 139 | */ |
@@ -202,6 +202,15 @@ class Entry | |||
202 | private $httpStatus; | 202 | private $httpStatus; |
203 | 203 | ||
204 | /** | 204 | /** |
205 | * @var array | ||
206 | * | ||
207 | * @ORM\Column(name="headers", type="array", nullable=true) | ||
208 | * | ||
209 | * @Groups({"entries_for_user", "export_all"}) | ||
210 | */ | ||
211 | private $headers; | ||
212 | |||
213 | /** | ||
205 | * @Exclude | 214 | * @Exclude |
206 | * | 215 | * |
207 | * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="entries") | 216 | * @ORM\ManyToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="entries") |
@@ -716,7 +725,7 @@ class Entry | |||
716 | } | 725 | } |
717 | 726 | ||
718 | /** | 727 | /** |
719 | * @return string | 728 | * @return array |
720 | */ | 729 | */ |
721 | public function getPublishedBy() | 730 | public function getPublishedBy() |
722 | { | 731 | { |
@@ -724,7 +733,7 @@ class Entry | |||
724 | } | 733 | } |
725 | 734 | ||
726 | /** | 735 | /** |
727 | * @param string $publishedBy | 736 | * @param array $publishedBy |
728 | * | 737 | * |
729 | * @return Entry | 738 | * @return Entry |
730 | */ | 739 | */ |
@@ -734,4 +743,24 @@ class Entry | |||
734 | 743 | ||
735 | return $this; | 744 | return $this; |
736 | } | 745 | } |
746 | |||
747 | /** | ||
748 | * @return array | ||
749 | */ | ||
750 | public function getHeaders() | ||
751 | { | ||
752 | return $this->headers; | ||
753 | } | ||
754 | |||
755 | /** | ||
756 | * @param array $headers | ||
757 | * | ||
758 | * @return Entry | ||
759 | */ | ||
760 | public function setHeaders($headers) | ||
761 | { | ||
762 | $this->headers = $headers; | ||
763 | |||
764 | return $this; | ||
765 | } | ||
737 | } | 766 | } |
diff --git a/src/Wallabag/CoreBundle/Helper/ContentProxy.php b/src/Wallabag/CoreBundle/Helper/ContentProxy.php index d45aef88..9a08db3d 100644 --- a/src/Wallabag/CoreBundle/Helper/ContentProxy.php +++ b/src/Wallabag/CoreBundle/Helper/ContentProxy.php | |||
@@ -87,6 +87,10 @@ class ContentProxy | |||
87 | $entry->setPublishedBy($content['authors']); | 87 | $entry->setPublishedBy($content['authors']); |
88 | } | 88 | } |
89 | 89 | ||
90 | if (!empty($content['all_headers'])) { | ||
91 | $entry->setHeaders($content['all_headers']); | ||
92 | } | ||
93 | |||
90 | $entry->setLanguage(isset($content['language']) ? $content['language'] : ''); | 94 | $entry->setLanguage(isset($content['language']) ? $content['language'] : ''); |
91 | $entry->setMimetype(isset($content['content_type']) ? $content['content_type'] : ''); | 95 | $entry->setMimetype(isset($content['content_type']) ? $content['content_type'] : ''); |
92 | $entry->setReadingTime(Utils::getReadingTime($html)); | 96 | $entry->setReadingTime(Utils::getReadingTime($html)); |
diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index 35438c83..698e5e13 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php | |||
@@ -142,6 +142,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
142 | $this->assertContains('Google', $content->getTitle()); | 142 | $this->assertContains('Google', $content->getTitle()); |
143 | $this->assertEquals('2015-03-28 15:37:39', $content->getPublishedAt()->format('Y-m-d H:i:s')); | 143 | $this->assertEquals('2015-03-28 15:37:39', $content->getPublishedAt()->format('Y-m-d H:i:s')); |
144 | $this->assertEquals('Morgane Tual', $author[0]); | 144 | $this->assertEquals('Morgane Tual', $author[0]); |
145 | $this->assertArrayHasKey('x-varnish1', $content->getHeaders()); | ||
145 | } | 146 | } |
146 | 147 | ||
147 | public function testPostWithMultipleAuthors() | 148 | public function testPostWithMultipleAuthors() |
@@ -914,7 +915,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
914 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $entry); | 915 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $entry); |
915 | $this->assertEquals($url, $entry->getUrl()); | 916 | $this->assertEquals($url, $entry->getUrl()); |
916 | $this->assertContains('Perpignan', $entry->getTitle()); | 917 | $this->assertContains('Perpignan', $entry->getTitle()); |
917 | $this->assertContains('/d9bc0fcd.jpeg', $entry->getContent()); | 918 | $this->assertContains('/c4789a7f.jpeg', $entry->getContent()); |
918 | 919 | ||
919 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 0); | 920 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 0); |
920 | } | 921 | } |