diff --git a/Makefile b/Makefile index 83c5f37ad..b33352616 100755 --- a/Makefile +++ b/Makefile @@ -27,8 +27,7 @@ build: ## Run grunt @grunt test: ## Launch wallabag testsuite - @if [ ! -d "vendor/phpunit" ]; then composer install; fi - @ant prepare && vendor/phpunit/phpunit/phpunit -v + @ant prepare && bin/simple-phpunit -v release: ## Create a package. Need a VERSION parameter (eg: `make release VERSION=master`). ifndef VERSION diff --git a/app/DoctrineMigrations/Version20160410190541.php b/app/DoctrineMigrations/Version20160410190541.php index 0cdec0085..f166a3251 100644 --- a/app/DoctrineMigrations/Version20160410190541.php +++ b/app/DoctrineMigrations/Version20160410190541.php @@ -31,10 +31,11 @@ class Version20160410190541 extends AbstractMigration implements ContainerAwareI { $entryTable = $schema->getTable($this->getTable('entry')); - $this->skipIf($entryTable->hasColumn('uuid'), 'It seems that you already played this migration.'); + $this->skipIf($entryTable->hasColumn('uid'), 'It seems that you already played this migration.'); - $entryTable->addColumn('uuid', 'guid', [ + $entryTable->addColumn('uid', 'string', [ 'notnull' => false, + 'length' => 23, ]); $this->addSql('INSERT INTO '.$this->getTable('craue_config_setting')." (name, value, section) VALUES ('share_public', '1', 'entry')"); } @@ -45,7 +46,7 @@ class Version20160410190541 extends AbstractMigration implements ContainerAwareI public function down(Schema $schema) { $entryTable = $schema->getTable($this->getTable('entry')); - $entryTable->dropColumn('uuid'); + $entryTable->dropColumn('uid'); $this->addSql('DELETE FROM '.$this->getTable('craue_config_setting')." WHERE name = 'share_public'"); } diff --git a/app/DoctrineMigrations/Version20161214094403.php b/app/DoctrineMigrations/Version20161214094403.php new file mode 100644 index 000000000..5948b5fa5 --- /dev/null +++ b/app/DoctrineMigrations/Version20161214094403.php @@ -0,0 +1,53 @@ +container = $container; + } + + private function getTable($tableName) + { + return $this->container->getParameter('database_table_prefix').$tableName; + } + + /** + * @param Schema $schema + */ + public function up(Schema $schema) + { + $entryTable = $schema->getTable($this->getTable('entry')); + $this->skipIf($entryTable->hasIndex($this->indexName), 'It seems that you already played this migration.'); + + $entryTable->addIndex(['uid'], $this->indexName); + } + + /** + * @param Schema $schema + */ + public function down(Schema $schema) + { + $entryTable = $schema->getTable($this->getTable('entry')); + $this->skipIf(false === $entryTable->hasIndex($this->indexName), 'It seems that you already played this migration.'); + + $entryTable->dropIndex($this->indexName); + } +} diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index b03f49eda..f7398e69e 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -539,8 +539,8 @@ class EntryController extends Controller { $this->checkUserAction($entry); - if (null === $entry->getUuid()) { - $entry->generateUuid(); + if (null === $entry->getUid()) { + $entry->generateUid(); $em = $this->getDoctrine()->getManager(); $em->persist($entry); @@ -548,7 +548,7 @@ class EntryController extends Controller } return $this->redirect($this->generateUrl('share_entry', [ - 'uuid' => $entry->getUuid(), + 'uid' => $entry->getUid(), ])); } @@ -565,7 +565,7 @@ class EntryController extends Controller { $this->checkUserAction($entry); - $entry->cleanUuid(); + $entry->cleanUid(); $em = $this->getDoctrine()->getManager(); $em->persist($entry); @@ -581,7 +581,7 @@ class EntryController extends Controller * * @param Entry $entry * - * @Route("/share/{uuid}", requirements={"uuid" = ".+"}, name="share_entry") + * @Route("/share/{uid}", requirements={"uid" = ".+"}, name="share_entry") * @Cache(maxage="25200", smaxage="25200", public=true) * * @return \Symfony\Component\HttpFoundation\Response diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index 3ae5334f3..7276b437c 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -22,7 +22,10 @@ use Wallabag\AnnotationBundle\Entity\Annotation; * @ORM\Table( * name="`entry`", * options={"collate"="utf8mb4_unicode_ci", "charset"="utf8mb4"}, - * indexes={@ORM\Index(name="created_at", columns={"created_at"})} + * indexes={ + * @ORM\Index(name="created_at", columns={"created_at"}), + * @ORM\Index(name="uid", columns={"uid"}) + * } * ) * @ORM\HasLifecycleCallbacks() * @Hateoas\Relation("self", href = "expr('/api/entries/' ~ object.getId())") @@ -44,11 +47,11 @@ class Entry /** * @var string * - * @ORM\Column(name="uuid", type="text", nullable=true) + * @ORM\Column(name="uid", type="string", length=23, nullable=true) * * @Groups({"entries_for_user", "export_all"}) */ - private $uuid; + private $uid; /** * @var string @@ -649,34 +652,34 @@ class Entry /** * @return string */ - public function getUuid() + public function getUid() { - return $this->uuid; + return $this->uid; } /** - * @param string $uuid + * @param string $uid * * @return Entry */ - public function setUuid($uuid) + public function setUid($uid) { - $this->uuid = $uuid; + $this->uid = $uid; return $this; } - public function generateUuid() + public function generateUid() { - if (null === $this->uuid) { + if (null === $this->uid) { // @see http://blog.kevingomez.fr/til/2015/07/26/why-is-uniqid-slow/ for true parameter - $this->uuid = uniqid('', true); + $this->uid = uniqid('', true); } } - public function cleanUuid() + public function cleanUid() { - $this->uuid = null; + $this->uid = null; } /** diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index c347cca5a..06ed2db60 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php @@ -810,15 +810,15 @@ class EntryControllerTest extends WallabagCoreTestCase ->getRepository('WallabagCoreBundle:Entry') ->findOneByUser($this->getLoggedInUserId()); - // no uuid - $client->request('GET', '/share/'.$content->getUuid()); + // no uid + $client->request('GET', '/share/'.$content->getUid()); $this->assertEquals(404, $client->getResponse()->getStatusCode()); - // generating the uuid + // generating the uid $client->request('GET', '/share/'.$content->getId()); $this->assertEquals(302, $client->getResponse()->getStatusCode()); - // follow link with uuid + // follow link with uid $crawler = $client->followRedirect(); $this->assertEquals(200, $client->getResponse()->getStatusCode()); $this->assertContains('max-age=25200', $client->getResponse()->headers->get('cache-control')); @@ -832,7 +832,7 @@ class EntryControllerTest extends WallabagCoreTestCase // sharing is now disabled $client->getContainer()->get('craue_config')->set('share_public', 0); - $client->request('GET', '/share/'.$content->getUuid()); + $client->request('GET', '/share/'.$content->getUid()); $this->assertEquals(404, $client->getResponse()->getStatusCode()); $client->request('GET', '/view/'.$content->getId()); @@ -843,7 +843,7 @@ class EntryControllerTest extends WallabagCoreTestCase $this->assertEquals(302, $client->getResponse()->getStatusCode()); // share is now disable - $client->request('GET', '/share/'.$content->getUuid()); + $client->request('GET', '/share/'.$content->getUid()); $this->assertEquals(404, $client->getResponse()->getStatusCode()); }