aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--app/DoctrineMigrations/Version20170511115400.php55
-rw-r--r--src/Wallabag/CoreBundle/Entity/Entry.php35
-rw-r--r--src/Wallabag/CoreBundle/Helper/ContentProxy.php4
-rw-r--r--tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php3
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
3namespace Application\Migrations;
4
5use Doctrine\DBAL\Migrations\AbstractMigration;
6use Doctrine\DBAL\Schema\Schema;
7use Symfony\Component\DependencyInjection\ContainerAwareInterface;
8use Symfony\Component\DependencyInjection\ContainerInterface;
9
10/**
11 * Added `headers` field in entry table.
12 */
13class 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 }