aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--app/DoctrineMigrations/Version20170511115400.php55
-rw-r--r--src/Wallabag/CoreBundle/Entity/Entry.php31
-rw-r--r--src/Wallabag/CoreBundle/Helper/ContentProxy.php4
-rw-r--r--tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php1
4 files changed, 90 insertions, 1 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..f0983b1c 100644
--- a/src/Wallabag/CoreBundle/Entity/Entry.php
+++ b/src/Wallabag/CoreBundle/Entity/Entry.php
@@ -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="json_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 {
@@ -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 string $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..82ac3ac3 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()