mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-26 19:11:07 +00:00
commit
d8dc7372ab
44 changed files with 90 additions and 68 deletions
|
@ -28,7 +28,7 @@ class Version20161001072726 extends AbstractMigration implements ContainerAwareI
|
||||||
*/
|
*/
|
||||||
public function up(Schema $schema)
|
public function up(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() === 'sqlite', 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
$this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
||||||
|
|
||||||
// remove all FK from entry_tag
|
// remove all FK from entry_tag
|
||||||
switch ($this->connection->getDatabasePlatform()->getName()) {
|
switch ($this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
|
|
@ -27,7 +27,7 @@ class Version20161022134138 extends AbstractMigration implements ContainerAwareI
|
||||||
*/
|
*/
|
||||||
public function up(Schema $schema)
|
public function up(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'This migration only apply to MySQL');
|
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
|
||||||
|
|
||||||
$this->addSql('ALTER DATABASE ' . $this->connection->getParams()['dbname'] . ' CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;');
|
$this->addSql('ALTER DATABASE ' . $this->connection->getParams()['dbname'] . ' CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;');
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ class Version20161022134138 extends AbstractMigration implements ContainerAwareI
|
||||||
*/
|
*/
|
||||||
public function down(Schema $schema)
|
public function down(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'This migration only apply to MySQL');
|
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
|
||||||
|
|
||||||
$this->addSql('ALTER DATABASE ' . $this->connection->getParams()['dbname'] . ' CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;');
|
$this->addSql('ALTER DATABASE ' . $this->connection->getParams()['dbname'] . ' CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;');
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ class Version20161024212538 extends AbstractMigration implements ContainerAwareI
|
||||||
|
|
||||||
$clientsTable->dropColumn('user_id', 'integer');
|
$clientsTable->dropColumn('user_id', 'integer');
|
||||||
|
|
||||||
if ($this->connection->getDatabasePlatform()->getName() !== 'sqlite') {
|
if ('sqlite' !== $this->connection->getDatabasePlatform()->getName()) {
|
||||||
$clientsTable->removeForeignKey($this->constraintName);
|
$clientsTable->removeForeignKey($this->constraintName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ class Version20170510082609 extends AbstractMigration implements ContainerAwareI
|
||||||
*/
|
*/
|
||||||
public function up(Schema $schema)
|
public function up(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'This migration only apply to MySQL');
|
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
|
||||||
|
|
||||||
foreach ($this->fields as $field) {
|
foreach ($this->fields as $field) {
|
||||||
$this->addSql('ALTER TABLE ' . $this->getTable('user') . ' CHANGE ' . $field . ' ' . $field . ' VARCHAR(180) NOT NULL;');
|
$this->addSql('ALTER TABLE ' . $this->getTable('user') . ' CHANGE ' . $field . ' ' . $field . ' VARCHAR(180) NOT NULL;');
|
||||||
|
@ -46,7 +46,7 @@ class Version20170510082609 extends AbstractMigration implements ContainerAwareI
|
||||||
*/
|
*/
|
||||||
public function down(Schema $schema)
|
public function down(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'This migration only apply to MySQL');
|
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
|
||||||
|
|
||||||
foreach ($this->fields as $field) {
|
foreach ($this->fields as $field) {
|
||||||
$this->addSql('ALTER TABLE ' . $this->getTable('user') . ' CHANGE ' . $field . ' ' . $field . ' VARCHAR(255) NOT NULL;');
|
$this->addSql('ALTER TABLE ' . $this->getTable('user') . ' CHANGE ' . $field . ' ' . $field . ' VARCHAR(255) NOT NULL;');
|
||||||
|
|
|
@ -27,7 +27,7 @@ class Version20170719231144 extends AbstractMigration implements ContainerAwareI
|
||||||
*/
|
*/
|
||||||
public function up(Schema $schema)
|
public function up(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() === 'sqlite', 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
$this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
||||||
|
|
||||||
// Find tags which need to be merged
|
// Find tags which need to be merged
|
||||||
$dupTags = $this->connection->query('
|
$dupTags = $this->connection->query('
|
||||||
|
|
|
@ -350,3 +350,10 @@ fos_js_routing:
|
||||||
- howto
|
- howto
|
||||||
- fos_user_security_logout
|
- fos_user_security_logout
|
||||||
- new
|
- new
|
||||||
|
|
||||||
|
jms_serializer:
|
||||||
|
handlers:
|
||||||
|
# to be removed if we switch to (default) ISO8601 datetime instead of ATOM
|
||||||
|
# see: https://github.com/schmittjoh/JMSSerializerBundle/pull/494
|
||||||
|
datetime:
|
||||||
|
default_format: "Y-m-d\\TH:i:sO" # ATOM
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
"ext-iconv": "*",
|
"ext-iconv": "*",
|
||||||
"ext-tokenizer": "*",
|
"ext-tokenizer": "*",
|
||||||
"ext-pdo": "*",
|
"ext-pdo": "*",
|
||||||
"symfony/symfony": "3.2.*",
|
"symfony/symfony": "3.3.*",
|
||||||
"doctrine/orm": "^2.5",
|
"doctrine/orm": "^2.5",
|
||||||
"doctrine/doctrine-bundle": "^1.6",
|
"doctrine/doctrine-bundle": "^1.6",
|
||||||
"doctrine/doctrine-cache-bundle": "^1.2",
|
"doctrine/doctrine-cache-bundle": "^1.2",
|
||||||
|
@ -51,15 +51,15 @@
|
||||||
"symfony/swiftmailer-bundle": "^2.3",
|
"symfony/swiftmailer-bundle": "^2.3",
|
||||||
"symfony/monolog-bundle": "^3.0",
|
"symfony/monolog-bundle": "^3.0",
|
||||||
"sensio/distribution-bundle": "^5.0",
|
"sensio/distribution-bundle": "^5.0",
|
||||||
"sensio/framework-extra-bundle": "^3.0.2",
|
"sensio/framework-extra-bundle": "^3.0",
|
||||||
"incenteev/composer-parameter-handler": "^2.0",
|
"incenteev/composer-parameter-handler": "^2.0",
|
||||||
"nelmio/cors-bundle": "~1.4.0",
|
"nelmio/cors-bundle": "~1.4",
|
||||||
"friendsofsymfony/rest-bundle": "~2.1",
|
"friendsofsymfony/rest-bundle": "~2.1",
|
||||||
"jms/serializer-bundle": "~1.1",
|
"jms/serializer-bundle": "~2.2",
|
||||||
"nelmio/api-doc-bundle": "~2.7",
|
"nelmio/api-doc-bundle": "~2.7",
|
||||||
"mgargano/simplehtmldom": "~1.5",
|
"mgargano/simplehtmldom": "~1.5",
|
||||||
"wallabag/tcpdf": "^6.2",
|
"wallabag/tcpdf": "^6.2",
|
||||||
"simplepie/simplepie": "~1.3.1",
|
"simplepie/simplepie": "~1.5",
|
||||||
"willdurand/hateoas-bundle": "~1.0",
|
"willdurand/hateoas-bundle": "~1.0",
|
||||||
"liip/theme-bundle": "~1.1",
|
"liip/theme-bundle": "~1.1",
|
||||||
"lexik/form-filter-bundle": "~5.0",
|
"lexik/form-filter-bundle": "~5.0",
|
||||||
|
@ -89,12 +89,12 @@
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/doctrine-fixtures-bundle": "~2.2",
|
"doctrine/doctrine-fixtures-bundle": "~2.2",
|
||||||
"doctrine/data-fixtures": "~1.1.1",
|
"doctrine/data-fixtures": "~1.1",
|
||||||
"sensio/generator-bundle": "^3.0",
|
"sensio/generator-bundle": "^3.0",
|
||||||
"symfony/phpunit-bridge": "^3.3",
|
"symfony/phpunit-bridge": "^3.3",
|
||||||
"friendsofphp/php-cs-fixer": "~2.0",
|
"friendsofphp/php-cs-fixer": "~2.0",
|
||||||
"m6web/redis-mock": "^2.0",
|
"m6web/redis-mock": "^2.0",
|
||||||
"dama/doctrine-test-bundle": "^1.0"
|
"dama/doctrine-test-bundle": "^3.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"post-cmd": [
|
"post-cmd": [
|
||||||
|
|
|
@ -32,6 +32,6 @@
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
<listeners>
|
<listeners>
|
||||||
<listener class="\DAMA\DoctrineTestBundle\PHPUnit\PHPUnitStaticDbConnectionListener" />
|
<listener class="\DAMA\DoctrineTestBundle\PHPUnit\LegacyPHPUnitListener" />
|
||||||
</listeners>
|
</listeners>
|
||||||
</phpunit>
|
</phpunit>
|
||||||
|
|
|
@ -31,7 +31,7 @@ class WallabagAnnotationController extends FOSRestController
|
||||||
$total = count($annotationRows);
|
$total = count($annotationRows);
|
||||||
$annotations = ['total' => $total, 'rows' => $annotationRows];
|
$annotations = ['total' => $total, 'rows' => $annotationRows];
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($annotations, 'json');
|
$json = $this->get('jms_serializer')->serialize($annotations, 'json');
|
||||||
|
|
||||||
return (new JsonResponse())->setJson($json);
|
return (new JsonResponse())->setJson($json);
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ class WallabagAnnotationController extends FOSRestController
|
||||||
$em->persist($annotation);
|
$em->persist($annotation);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($annotation, 'json');
|
$json = $this->get('jms_serializer')->serialize($annotation, 'json');
|
||||||
|
|
||||||
return JsonResponse::fromJsonString($json);
|
return JsonResponse::fromJsonString($json);
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ class WallabagAnnotationController extends FOSRestController
|
||||||
$em->persist($annotation);
|
$em->persist($annotation);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($annotation, 'json');
|
$json = $this->get('jms_serializer')->serialize($annotation, 'json');
|
||||||
|
|
||||||
return JsonResponse::fromJsonString($json);
|
return JsonResponse::fromJsonString($json);
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ class WallabagAnnotationController extends FOSRestController
|
||||||
$em->remove($annotation);
|
$em->remove($annotation);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($annotation, 'json');
|
$json = $this->get('jms_serializer')->serialize($annotation, 'json');
|
||||||
|
|
||||||
return (new JsonResponse())->setJson($json);
|
return (new JsonResponse())->setJson($json);
|
||||||
}
|
}
|
||||||
|
|
|
@ -752,7 +752,7 @@ class EntryRestController extends WallabagRestController
|
||||||
$context = new SerializationContext();
|
$context = new SerializationContext();
|
||||||
$context->setSerializeNull(true);
|
$context->setSerializeNull(true);
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($data, 'json', $context);
|
$json = $this->get('jms_serializer')->serialize($data, 'json', $context);
|
||||||
|
|
||||||
return (new JsonResponse())->setJson($json);
|
return (new JsonResponse())->setJson($json);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ class TagRestController extends WallabagRestController
|
||||||
->getRepository('WallabagCoreBundle:Tag')
|
->getRepository('WallabagCoreBundle:Tag')
|
||||||
->findAllTags($this->getUser()->getId());
|
->findAllTags($this->getUser()->getId());
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($tags, 'json');
|
$json = $this->get('jms_serializer')->serialize($tags, 'json');
|
||||||
|
|
||||||
return (new JsonResponse())->setJson($json);
|
return (new JsonResponse())->setJson($json);
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ class TagRestController extends WallabagRestController
|
||||||
|
|
||||||
$this->cleanOrphanTag($tag);
|
$this->cleanOrphanTag($tag);
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($tag, 'json');
|
$json = $this->get('jms_serializer')->serialize($tag, 'json');
|
||||||
|
|
||||||
return (new JsonResponse())->setJson($json);
|
return (new JsonResponse())->setJson($json);
|
||||||
}
|
}
|
||||||
|
@ -100,7 +100,7 @@ class TagRestController extends WallabagRestController
|
||||||
|
|
||||||
$this->cleanOrphanTag($tags);
|
$this->cleanOrphanTag($tags);
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($tags, 'json');
|
$json = $this->get('jms_serializer')->serialize($tags, 'json');
|
||||||
|
|
||||||
return (new JsonResponse())->setJson($json);
|
return (new JsonResponse())->setJson($json);
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ class TagRestController extends WallabagRestController
|
||||||
|
|
||||||
$this->cleanOrphanTag($tag);
|
$this->cleanOrphanTag($tag);
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize($tag, 'json');
|
$json = $this->get('jms_serializer')->serialize($tag, 'json');
|
||||||
|
|
||||||
return (new JsonResponse())->setJson($json);
|
return (new JsonResponse())->setJson($json);
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ class TagRestController extends WallabagRestController
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
foreach ($tags as $tag) {
|
foreach ($tags as $tag) {
|
||||||
if (count($tag->getEntries()) === 0) {
|
if (0 === count($tag->getEntries())) {
|
||||||
$em->remove($tag);
|
$em->remove($tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ class UserRestController extends WallabagRestController
|
||||||
public function putUserAction(Request $request)
|
public function putUserAction(Request $request)
|
||||||
{
|
{
|
||||||
if (!$this->getParameter('fosuser_registration') || !$this->get('craue_config')->get('api_user_registration')) {
|
if (!$this->getParameter('fosuser_registration') || !$this->get('craue_config')->get('api_user_registration')) {
|
||||||
$json = $this->get('serializer')->serialize(['error' => "Server doesn't allow registrations"], 'json');
|
$json = $this->get('jms_serializer')->serialize(['error' => "Server doesn't allow registrations"], 'json');
|
||||||
|
|
||||||
return (new JsonResponse())
|
return (new JsonResponse())
|
||||||
->setJson($json)
|
->setJson($json)
|
||||||
|
@ -92,7 +92,7 @@ class UserRestController extends WallabagRestController
|
||||||
$errors['password'] = $this->translateErrors($data['plainPassword']['children']['first']['errors']);
|
$errors['password'] = $this->translateErrors($data['plainPassword']['children']['first']['errors']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$json = $this->get('serializer')->serialize(['error' => $errors], 'json');
|
$json = $this->get('jms_serializer')->serialize(['error' => $errors], 'json');
|
||||||
|
|
||||||
return (new JsonResponse())
|
return (new JsonResponse())
|
||||||
->setJson($json)
|
->setJson($json)
|
||||||
|
@ -127,7 +127,7 @@ class UserRestController extends WallabagRestController
|
||||||
*/
|
*/
|
||||||
private function sendUser(User $user, $group = 'user_api', $status = JsonResponse::HTTP_OK)
|
private function sendUser(User $user, $group = 'user_api', $status = JsonResponse::HTTP_OK)
|
||||||
{
|
{
|
||||||
$json = $this->get('serializer')->serialize(
|
$json = $this->get('jms_serializer')->serialize(
|
||||||
$user,
|
$user,
|
||||||
'json',
|
'json',
|
||||||
SerializationContext::create()->setGroups([$group])
|
SerializationContext::create()->setGroups([$group])
|
||||||
|
|
|
@ -19,7 +19,7 @@ class WallabagRestController extends FOSRestController
|
||||||
public function getVersionAction()
|
public function getVersionAction()
|
||||||
{
|
{
|
||||||
$version = $this->container->getParameter('wallabag_core.version');
|
$version = $this->container->getParameter('wallabag_core.version');
|
||||||
$json = $this->get('serializer')->serialize($version, 'json');
|
$json = $this->get('jms_serializer')->serialize($version, 'json');
|
||||||
|
|
||||||
return (new JsonResponse())->setJson($json);
|
return (new JsonResponse())->setJson($json);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ class ListUserCommand extends ContainerAwareCommand
|
||||||
'%s/%s%s user(s) displayed.',
|
'%s/%s%s user(s) displayed.',
|
||||||
count($users),
|
count($users),
|
||||||
$nbUsers,
|
$nbUsers,
|
||||||
$input->getArgument('search') === null ? '' : ' (filtered)'
|
null === $input->getArgument('search') ? '' : ' (filtered)'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ class ShowUserCommand extends ContainerAwareCommand
|
||||||
sprintf('Email: %s', $user->getEmail()),
|
sprintf('Email: %s', $user->getEmail()),
|
||||||
sprintf('Display name: %s', $user->getName()),
|
sprintf('Display name: %s', $user->getName()),
|
||||||
sprintf('Creation date: %s', $user->getCreatedAt()->format('Y-m-d H:i:s')),
|
sprintf('Creation date: %s', $user->getCreatedAt()->format('Y-m-d H:i:s')),
|
||||||
sprintf('Last login: %s', $user->getLastLogin() !== null ? $user->getLastLogin()->format('Y-m-d H:i:s') : 'never'),
|
sprintf('Last login: %s', null !== $user->getLastLogin() ? $user->getLastLogin()->format('Y-m-d H:i:s') : 'never'),
|
||||||
sprintf('2FA activated: %s', $user->isTwoFactorAuthentication() ? 'yes' : 'no'),
|
sprintf('2FA activated: %s', $user->isTwoFactorAuthentication() ? 'yes' : 'no'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -348,7 +348,7 @@ class ConfigController extends Controller
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
foreach ($tags as $tag) {
|
foreach ($tags as $tag) {
|
||||||
if (count($tag->getEntries()) === 0) {
|
if (0 === count($tag->getEntries())) {
|
||||||
$em->remove($tag);
|
$em->remove($tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,7 +195,7 @@ class EntryController extends Controller
|
||||||
public function showUnreadAction(Request $request, $page)
|
public function showUnreadAction(Request $request, $page)
|
||||||
{
|
{
|
||||||
// load the quickstart if no entry in database
|
// load the quickstart if no entry in database
|
||||||
if ((int) $page === 1 && $this->get('wallabag_core.entry_repository')->countAllEntriesByUser($this->getUser()->getId()) === 0) {
|
if (1 === (int) $page && 0 === $this->get('wallabag_core.entry_repository')->countAllEntriesByUser($this->getUser()->getId())) {
|
||||||
return $this->redirect($this->generateUrl('quickstart'));
|
return $this->redirect($this->generateUrl('quickstart'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ class ExportController extends Controller
|
||||||
$methodBuilder = 'getBuilderFor' . $method . 'ByUser';
|
$methodBuilder = 'getBuilderFor' . $method . 'ByUser';
|
||||||
$repository = $this->get('wallabag_core.entry_repository');
|
$repository = $this->get('wallabag_core.entry_repository');
|
||||||
|
|
||||||
if ($category === 'tag_entries') {
|
if ('tag_entries' === $category) {
|
||||||
$tag = $this->get('wallabag_core.tag_repository')->findOneBySlug($request->query->get('tag'));
|
$tag = $this->get('wallabag_core.tag_repository')->findOneBySlug($request->query->get('tag'));
|
||||||
|
|
||||||
$entries = $repository->findAllByTagId(
|
$entries = $repository->findAllByTagId(
|
||||||
|
|
|
@ -65,7 +65,7 @@ class TagController extends Controller
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
// remove orphan tag in case no entries are associated to it
|
// remove orphan tag in case no entries are associated to it
|
||||||
if (count($tag->getEntries()) === 0) {
|
if (0 === count($tag->getEntries())) {
|
||||||
$em->remove($tag);
|
$em->remove($tag);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ class TablePrefixSubscriber implements EventSubscriber
|
||||||
$classMetadata->setPrimaryTable(['name' => $this->prefix . $classMetadata->getTableName()]);
|
$classMetadata->setPrimaryTable(['name' => $this->prefix . $classMetadata->getTableName()]);
|
||||||
|
|
||||||
foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
|
foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
|
||||||
if ($mapping['type'] === ClassMetadataInfo::MANY_TO_MANY && isset($classMetadata->associationMappings[$fieldName]['joinTable']['name'])) {
|
if (ClassMetadataInfo::MANY_TO_MANY === $mapping['type'] && isset($classMetadata->associationMappings[$fieldName]['joinTable']['name'])) {
|
||||||
$mappedTableName = $classMetadata->associationMappings[$fieldName]['joinTable']['name'];
|
$mappedTableName = $classMetadata->associationMappings[$fieldName]['joinTable']['name'];
|
||||||
$classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix . $mappedTableName;
|
$classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix . $mappedTableName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ class StringToListTransformer implements DataTransformerInterface
|
||||||
*/
|
*/
|
||||||
public function reverseTransform($string)
|
public function reverseTransform($string)
|
||||||
{
|
{
|
||||||
if ($string === null) {
|
if (null === $string) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
|
||||||
{
|
{
|
||||||
// required by credentials below
|
// required by credentials below
|
||||||
$host = strtolower($host);
|
$host = strtolower($host);
|
||||||
if (substr($host, 0, 4) === 'www.') {
|
if ('www.' === substr($host, 0, 4)) {
|
||||||
$host = substr($host, 4);
|
$host = substr($host, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
|
||||||
|
|
||||||
$extraFields = [];
|
$extraFields = [];
|
||||||
foreach ($extraFieldsStrings as $extraField) {
|
foreach ($extraFieldsStrings as $extraField) {
|
||||||
if (strpos($extraField, '=') === false) {
|
if (false === strpos($extraField, '=')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ class ContentProxy
|
||||||
$date = $value;
|
$date = $value;
|
||||||
|
|
||||||
// is it a timestamp?
|
// is it a timestamp?
|
||||||
if (filter_var($date, FILTER_VALIDATE_INT) !== false) {
|
if (false !== filter_var($date, FILTER_VALIDATE_INT)) {
|
||||||
$date = '@' . $date;
|
$date = '@' . $date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Matches
|
||||||
{
|
{
|
||||||
public function __invoke($subject, $pattern)
|
public function __invoke($subject, $pattern)
|
||||||
{
|
{
|
||||||
if ($pattern[0] === "'") {
|
if ("'" === $pattern[0]) {
|
||||||
$pattern = sprintf("'%%%s%%'", substr($pattern, 1, -1));
|
$pattern = sprintf("'%%%s%%'", substr($pattern, 1, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ class NotMatches
|
||||||
{
|
{
|
||||||
public function __invoke($subject, $pattern)
|
public function __invoke($subject, $pattern)
|
||||||
{
|
{
|
||||||
if ($pattern[0] === "'") {
|
if ("'" === $pattern[0]) {
|
||||||
$pattern = sprintf("'%%%s%%'", substr($pattern, 1, -1));
|
$pattern = sprintf("'%%%s%%'", substr($pattern, 1, -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,6 @@ class Matches
|
||||||
{
|
{
|
||||||
public function __invoke($subject, $pattern)
|
public function __invoke($subject, $pattern)
|
||||||
{
|
{
|
||||||
return stripos($subject, $pattern) !== false;
|
return false !== stripos($subject, $pattern);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,6 @@ class NotMatches
|
||||||
{
|
{
|
||||||
public function __invoke($subject, $pattern)
|
public function __invoke($subject, $pattern)
|
||||||
{
|
{
|
||||||
return stripos($subject, $pattern) === false;
|
return false === stripos($subject, $pattern);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,7 +165,7 @@ abstract class AbstractImport implements ImportInterface
|
||||||
$entryToBeFlushed[] = $entry;
|
$entryToBeFlushed[] = $entry;
|
||||||
|
|
||||||
// flush every 20 entries
|
// flush every 20 entries
|
||||||
if (($i % 20) === 0) {
|
if (0 === ($i % 20)) {
|
||||||
$this->em->flush();
|
$this->em->flush();
|
||||||
|
|
||||||
foreach ($entryToBeFlushed as $entry) {
|
foreach ($entryToBeFlushed as $entry) {
|
||||||
|
|
|
@ -171,7 +171,7 @@ abstract class BrowserImport extends AbstractImport
|
||||||
$entryToBeFlushed[] = $entry;
|
$entryToBeFlushed[] = $entry;
|
||||||
|
|
||||||
// flush every 20 entries
|
// flush every 20 entries
|
||||||
if (($i % 20) === 0) {
|
if (0 === ($i % 20)) {
|
||||||
$this->em->flush();
|
$this->em->flush();
|
||||||
|
|
||||||
foreach ($entryToBeFlushed as $entry) {
|
foreach ($entryToBeFlushed as $entry) {
|
||||||
|
|
|
@ -45,7 +45,7 @@ class ChromeImport extends BrowserImport
|
||||||
'created_at' => substr($entry['date_added'], 0, 10),
|
'created_at' => substr($entry['date_added'], 0, 10),
|
||||||
];
|
];
|
||||||
|
|
||||||
if (array_key_exists('tags', $entry) && $entry['tags'] !== '') {
|
if (array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||||
$data['tags'] = $entry['tags'];
|
$data['tags'] = $entry['tags'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ class FirefoxImport extends BrowserImport
|
||||||
'created_at' => substr($entry['dateAdded'], 0, 10),
|
'created_at' => substr($entry['dateAdded'], 0, 10),
|
||||||
];
|
];
|
||||||
|
|
||||||
if (array_key_exists('tags', $entry) && $entry['tags'] !== '') {
|
if (array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||||
$data['tags'] = $entry['tags'];
|
$data['tags'] = $entry['tags'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ class InstapaperImport extends AbstractImport
|
||||||
|
|
||||||
$entries = [];
|
$entries = [];
|
||||||
$handle = fopen($this->filepath, 'r');
|
$handle = fopen($this->filepath, 'r');
|
||||||
while (($data = fgetcsv($handle, 10240)) !== false) {
|
while (false !== ($data = fgetcsv($handle, 10240))) {
|
||||||
if ('URL' === $data[0]) {
|
if ('URL' === $data[0]) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -80,8 +80,8 @@ class InstapaperImport extends AbstractImport
|
||||||
'url' => $data[0],
|
'url' => $data[0],
|
||||||
'title' => $data[1],
|
'title' => $data[1],
|
||||||
'status' => $data[3],
|
'status' => $data[3],
|
||||||
'is_archived' => $data[3] === 'Archive' || $data[3] === 'Starred',
|
'is_archived' => 'Archive' === $data[3] || 'Starred' === $data[3],
|
||||||
'is_starred' => $data[3] === 'Starred',
|
'is_starred' => 'Starred' === $data[3],
|
||||||
'html' => false,
|
'html' => false,
|
||||||
'tags' => $tags,
|
'tags' => $tags,
|
||||||
];
|
];
|
||||||
|
|
|
@ -149,7 +149,7 @@ class PocketImport extends AbstractImport
|
||||||
// - first call get 5k offset 0
|
// - first call get 5k offset 0
|
||||||
// - second call get 5k offset 5k
|
// - second call get 5k offset 5k
|
||||||
// - and so on
|
// - and so on
|
||||||
if (count($entries['list']) === self::NB_ELEMENTS) {
|
if (self::NB_ELEMENTS === count($entries['list'])) {
|
||||||
++$run;
|
++$run;
|
||||||
|
|
||||||
return $this->import(self::NB_ELEMENTS * $run);
|
return $this->import(self::NB_ELEMENTS * $run);
|
||||||
|
@ -175,7 +175,7 @@ class PocketImport extends AbstractImport
|
||||||
*/
|
*/
|
||||||
public function parseEntry(array $importedEntry)
|
public function parseEntry(array $importedEntry)
|
||||||
{
|
{
|
||||||
$url = isset($importedEntry['resolved_url']) && $importedEntry['resolved_url'] !== '' ? $importedEntry['resolved_url'] : $importedEntry['given_url'];
|
$url = isset($importedEntry['resolved_url']) && '' !== $importedEntry['resolved_url'] ? $importedEntry['resolved_url'] : $importedEntry['given_url'];
|
||||||
|
|
||||||
$existingEntry = $this->em
|
$existingEntry = $this->em
|
||||||
->getRepository('WallabagCoreBundle:Entry')
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
|
@ -194,15 +194,15 @@ class PocketImport extends AbstractImport
|
||||||
$this->fetchContent($entry, $url);
|
$this->fetchContent($entry, $url);
|
||||||
|
|
||||||
// 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted
|
// 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted
|
||||||
$entry->setArchived($importedEntry['status'] === 1 || $this->markAsRead);
|
$entry->setArchived(1 === $importedEntry['status'] || $this->markAsRead);
|
||||||
|
|
||||||
// 0 or 1 - 1 If the item is starred
|
// 0 or 1 - 1 If the item is starred
|
||||||
$entry->setStarred($importedEntry['favorite'] === 1);
|
$entry->setStarred(1 === $importedEntry['favorite']);
|
||||||
|
|
||||||
$title = 'Untitled';
|
$title = 'Untitled';
|
||||||
if (isset($importedEntry['resolved_title']) && $importedEntry['resolved_title'] !== '') {
|
if (isset($importedEntry['resolved_title']) && '' !== $importedEntry['resolved_title']) {
|
||||||
$title = $importedEntry['resolved_title'];
|
$title = $importedEntry['resolved_title'];
|
||||||
} elseif (isset($importedEntry['given_title']) && $importedEntry['given_title'] !== '') {
|
} elseif (isset($importedEntry['given_title']) && '' !== $importedEntry['given_title']) {
|
||||||
$title = $importedEntry['given_title'];
|
$title = $importedEntry['given_title'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ class WallabagV1Import extends WallabagImport
|
||||||
$data['html'] = $this->fetchingErrorMessage;
|
$data['html'] = $this->fetchingErrorMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (array_key_exists('tags', $entry) && $entry['tags'] !== '') {
|
if (array_key_exists('tags', $entry) && '' !== $entry['tags']) {
|
||||||
$data['tags'] = $entry['tags'];
|
$data['tags'] = $entry['tags'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1268,7 +1268,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||||
'ru',
|
'ru',
|
||||||
],
|
],
|
||||||
'fr-FR' => [
|
'fr-FR' => [
|
||||||
'http://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/',
|
'https://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/',
|
||||||
'fr_FR',
|
'fr_FR',
|
||||||
],
|
],
|
||||||
'de' => [
|
'de' => [
|
||||||
|
@ -1300,7 +1300,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||||
null,
|
null,
|
||||||
],
|
],
|
||||||
'es-ES' => [
|
'es-ES' => [
|
||||||
'http://www.muylinux.com/2015/04/17/odf-reino-unido-microsoft-google/',
|
'https://www.muylinux.com/2015/04/17/odf-reino-unido-microsoft-google/',
|
||||||
'es_ES',
|
'es_ES',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
@ -1343,7 +1343,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||||
*/
|
*/
|
||||||
public function testRestrictedArticle()
|
public function testRestrictedArticle()
|
||||||
{
|
{
|
||||||
$url = 'http://www.monde-diplomatique.fr/2017/05/BONNET/57475';
|
$url = 'https://www.monde-diplomatique.fr/2017/05/BONNET/57475';
|
||||||
$this->logInAs('admin');
|
$this->logInAs('admin');
|
||||||
$client = $this->getClient();
|
$client = $this->getClient();
|
||||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||||
|
|
|
@ -114,10 +114,11 @@ class ChromeControllerTest extends WallabagCoreTestCase
|
||||||
->get('doctrine.orm.entity_manager')
|
->get('doctrine.orm.entity_manager')
|
||||||
->getRepository('WallabagCoreBundle:Entry')
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
->findByUrlAndUserId(
|
->findByUrlAndUserId(
|
||||||
'http://www.usinenouvelle.com/article/la-multiplication-des-chefs-de-projet-est-une-catastrophe-manageriale-majeure-affirme-le-sociologue-francois-dupuy.N307730',
|
'https://www.usinenouvelle.com/article/la-multiplication-des-chefs-de-projet-est-une-catastrophe-manageriale-majeure-affirme-le-sociologue-francois-dupuy.N307730',
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
|
||||||
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://www.usinenouvelle.com is ok');
|
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://www.usinenouvelle.com is ok');
|
||||||
$this->assertNotEmpty($content->getLanguage(), 'Language for http://www.usinenouvelle.com is ok');
|
$this->assertNotEmpty($content->getLanguage(), 'Language for http://www.usinenouvelle.com is ok');
|
||||||
$this->assertSame(1, count($content->getTags()));
|
$this->assertSame(1, count($content->getTags()));
|
||||||
|
|
|
@ -118,6 +118,7 @@ class FirefoxControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
|
||||||
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for http://lexpansion.lexpress.fr is ok');
|
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for http://lexpansion.lexpress.fr is ok');
|
||||||
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://lexpansion.lexpress.fr is ok');
|
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://lexpansion.lexpress.fr is ok');
|
||||||
$this->assertNotEmpty($content->getLanguage(), 'Language for http://lexpansion.lexpress.fr is ok');
|
$this->assertNotEmpty($content->getLanguage(), 'Language for http://lexpansion.lexpress.fr is ok');
|
||||||
|
@ -131,6 +132,7 @@ class FirefoxControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
|
||||||
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://stackoverflow.com is ok');
|
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://stackoverflow.com is ok');
|
||||||
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://stackoverflow.com is ok');
|
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://stackoverflow.com is ok');
|
||||||
$this->assertEmpty($content->getLanguage(), 'Language for https://stackoverflow.com is ok');
|
$this->assertEmpty($content->getLanguage(), 'Language for https://stackoverflow.com is ok');
|
||||||
|
|
|
@ -118,6 +118,7 @@ class PinboardControllerTest extends WallabagCoreTestCase
|
||||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
||||||
$this->assertContains('flashes.import.notice.summary', $body[0]);
|
$this->assertContains('flashes.import.notice.summary', $body[0]);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
|
||||||
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://ma.ttias.be is ok');
|
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://ma.ttias.be is ok');
|
||||||
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://ma.ttias.be is ok');
|
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://ma.ttias.be is ok');
|
||||||
$this->assertNotEmpty($content->getLanguage(), 'Language for https://ma.ttias.be is ok');
|
$this->assertNotEmpty($content->getLanguage(), 'Language for https://ma.ttias.be is ok');
|
||||||
|
@ -161,6 +162,7 @@ class PinboardControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content1);
|
||||||
$this->assertTrue($content1->isArchived());
|
$this->assertTrue($content1->isArchived());
|
||||||
|
|
||||||
$content2 = $client->getContainer()
|
$content2 = $client->getContainer()
|
||||||
|
@ -171,6 +173,7 @@ class PinboardControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content2);
|
||||||
$this->assertTrue($content2->isArchived());
|
$this->assertTrue($content2->isArchived());
|
||||||
|
|
||||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
||||||
|
|
|
@ -111,13 +111,14 @@ class ReadabilityControllerTest extends WallabagCoreTestCase
|
||||||
->get('doctrine.orm.entity_manager')
|
->get('doctrine.orm.entity_manager')
|
||||||
->getRepository('WallabagCoreBundle:Entry')
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
->findByUrlAndUserId(
|
->findByUrlAndUserId(
|
||||||
'http://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/',
|
'https://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/',
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
||||||
$this->assertContains('flashes.import.notice.summary', $body[0]);
|
$this->assertContains('flashes.import.notice.summary', $body[0]);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
|
||||||
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for http://www.zataz.com is ok');
|
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for http://www.zataz.com is ok');
|
||||||
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://www.zataz.com is ok');
|
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://www.zataz.com is ok');
|
||||||
$this->assertNotEmpty($content->getLanguage(), 'Language for http://www.zataz.com is ok');
|
$this->assertNotEmpty($content->getLanguage(), 'Language for http://www.zataz.com is ok');
|
||||||
|
@ -159,16 +160,18 @@ class ReadabilityControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content1);
|
||||||
$this->assertTrue($content1->isArchived());
|
$this->assertTrue($content1->isArchived());
|
||||||
|
|
||||||
$content2 = $client->getContainer()
|
$content2 = $client->getContainer()
|
||||||
->get('doctrine.orm.entity_manager')
|
->get('doctrine.orm.entity_manager')
|
||||||
->getRepository('WallabagCoreBundle:Entry')
|
->getRepository('WallabagCoreBundle:Entry')
|
||||||
->findByUrlAndUserId(
|
->findByUrlAndUserId(
|
||||||
'https://facebook.github.io/graphql/',
|
'https://facebook.github.io/graphql/October2016/',
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content2);
|
||||||
$this->assertTrue($content2->isArchived());
|
$this->assertTrue($content2->isArchived());
|
||||||
|
|
||||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
||||||
|
|
|
@ -119,6 +119,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
|
||||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
||||||
$this->assertContains('flashes.import.notice.summary', $body[0]);
|
$this->assertContains('flashes.import.notice.summary', $body[0]);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
|
||||||
$this->assertEmpty($content->getMimetype(), 'Mimetype for http://www.framablog.org is empty');
|
$this->assertEmpty($content->getMimetype(), 'Mimetype for http://www.framablog.org is empty');
|
||||||
$this->assertEmpty($content->getPreviewPicture(), 'Preview picture for http://www.framablog.org is empty');
|
$this->assertEmpty($content->getPreviewPicture(), 'Preview picture for http://www.framablog.org is empty');
|
||||||
$this->assertEmpty($content->getLanguage(), 'Language for http://www.framablog.org is empty');
|
$this->assertEmpty($content->getLanguage(), 'Language for http://www.framablog.org is empty');
|
||||||
|
@ -160,6 +161,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content1);
|
||||||
$this->assertTrue($content1->isArchived());
|
$this->assertTrue($content1->isArchived());
|
||||||
|
|
||||||
$content2 = $client->getContainer()
|
$content2 = $client->getContainer()
|
||||||
|
@ -170,6 +172,7 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content2);
|
||||||
$this->assertTrue($content2->isArchived());
|
$this->assertTrue($content2->isArchived());
|
||||||
|
|
||||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
||||||
|
|
|
@ -119,6 +119,8 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
|
||||||
|
|
||||||
// empty because it wasn't re-imported
|
// empty because it wasn't re-imported
|
||||||
$this->assertEmpty($content->getMimetype(), 'Mimetype for http://www.liberation.fr is empty');
|
$this->assertEmpty($content->getMimetype(), 'Mimetype for http://www.liberation.fr is empty');
|
||||||
$this->assertEmpty($content->getPreviewPicture(), 'Preview picture for http://www.liberation.fr is empty');
|
$this->assertEmpty($content->getPreviewPicture(), 'Preview picture for http://www.liberation.fr is empty');
|
||||||
|
@ -136,6 +138,7 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
|
||||||
$this->getLoggedInUserId()
|
$this->getLoggedInUserId()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
|
||||||
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://www.mediapart.fr is ok');
|
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://www.mediapart.fr is ok');
|
||||||
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://www.mediapart.fr is ok');
|
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://www.mediapart.fr is ok');
|
||||||
$this->assertNotEmpty($content->getLanguage(), 'Language for https://www.mediapart.fr is ok');
|
$this->assertNotEmpty($content->getLanguage(), 'Language for https://www.mediapart.fr is ok');
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
"article__excerpt": "The GraphQL Type system describes the capabilities of a GraphQL server and is used to determine if a query is valid. The type system also describes the input types of query variables to determine if…",
|
"article__excerpt": "The GraphQL Type system describes the capabilities of a GraphQL server and is used to determine if a query is valid. The type system also describes the input types of query variables to determine if…",
|
||||||
"favorite": false,
|
"favorite": false,
|
||||||
"date_archived": "2016-07-19T06:48:31",
|
"date_archived": "2016-07-19T06:48:31",
|
||||||
"article__url": "https://facebook.github.io/graphql/",
|
"article__url": "https://facebook.github.io/graphql/October2016/",
|
||||||
"date_added": "2016-06-24T17:50:16",
|
"date_added": "2016-06-24T17:50:16",
|
||||||
"date_favorited": null,
|
"date_favorited": null,
|
||||||
"article__title": "GraphQL",
|
"article__title": "GraphQL",
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
"date_added": "2016-09-08T11:55:58+0200",
|
"date_added": "2016-09-08T11:55:58+0200",
|
||||||
"favorite": 0,
|
"favorite": 0,
|
||||||
"article__title": "90% des dossiers médicaux des Coréens du sud vendus à des entreprises privées - ZATAZ",
|
"article__title": "90% des dossiers médicaux des Coréens du sud vendus à des entreprises privées - ZATAZ",
|
||||||
"article__url": "http://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/"
|
"article__url": "https://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"recommendations": []
|
"recommendations": []
|
||||||
|
|
|
@ -71,14 +71,14 @@
|
||||||
"is_starred": 0,
|
"is_starred": 0,
|
||||||
"id": 608,
|
"id": 608,
|
||||||
"title": "90% des dossiers médicaux des Coréens du sud vendus à des entreprises privées - ZATAZ",
|
"title": "90% des dossiers médicaux des Coréens du sud vendus à des entreprises privées - ZATAZ",
|
||||||
"url": "http://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/",
|
"url": "https://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/",
|
||||||
"content": "<p class=\"c2\"><strong>La Corée du Sud vibre en ce moment à la lecture d’une information qui pend aux nez des Français. Une entreprise privée a récupéré 90% des dossiers médicaux des habitants du pays du matin calme au soleil levant pour les revendre.</strong></p>\n<p>Une entreprise spécialisée dans le développement de logiciels en charge de gérer les frais médicaux, programmes utilisés dans les hôpitaux et la Korean Pharmaceutical Information Center, a offert il y a quelques mois ses logiciels de gestion d’officines. Plus de la moitié des pharmacies du pays ont utilisé l’outil. Sauf que <a href=\"http://www.koreaherald.com/view.php?ud=20150726000368\" target=\"_blank\">les données sauvegardées ont été revendues</a> à IMS Health Korea. Cette entreprise, dont le siège social est basé aux USA, a ensuite commercialisé, illégalement, les données à d’autres sociétés en Corée.</p>\n<p>La loi 2011 sur le droit de la protection des renseignements personnels interdit l’utilisation des renseignements personnels et des renseignements médicaux sans le consentement des patients. Le Pharmaceutical Information Center est actuellement jugé pour cette collecte illégale, qui date de 2013, et la distribution des informations médicales de 90% des Coréens.</p>\n<blockquote readability=\"4\">\n<p><strong>Un cas qui pourrait toucher la France ?</strong></p>\n</blockquote>\n<p class=\"c2\">Depuis février 2015, l’ouverture des données de santé dans l’hexagone a été décidée par le législateur. L’assurance-maladie a annoncé qu’elle proposait, en accès libre, sa base de données « <em>Damir</em> » sur le site data.gouv.fr. Un big data de la santé qui regroupe les informations issues de 1,2 milliard de feuilles de soins, de 500 millions d’actes médicaux et de 11 millions d’hospitalisations. Ce big data ne propose pas les identités (pas de nom, de numéro de sécurité sociale, …), uniquement des millions de chiffres et de données de santé. Cette faramineuse base de données, qui double de volume chaque année, permet d’extraire, par exemple, des statistiques liées à la santé dans les régions. <a href=\"http://www.assemblee-nationale.fr/14/amendements/2302/CION-SOC/AS1387.pdf\" target=\"_blank\">L’article 47 de loi</a> permet aux acteurs privés d’accéder aux données de la CNAMTS. C’est l’Institut national des données de santé (<a href=\"http://www.institut-des-donnees-de-sante.fr/\" target=\"_blank\">INDS</a>) qui a en charge de répondre aux demandes du « privé » pour accéder aux données plus ciblées (et payantes).</p>\n",
|
"content": "<p class=\"c2\"><strong>La Corée du Sud vibre en ce moment à la lecture d’une information qui pend aux nez des Français. Une entreprise privée a récupéré 90% des dossiers médicaux des habitants du pays du matin calme au soleil levant pour les revendre.</strong></p>\n<p>Une entreprise spécialisée dans le développement de logiciels en charge de gérer les frais médicaux, programmes utilisés dans les hôpitaux et la Korean Pharmaceutical Information Center, a offert il y a quelques mois ses logiciels de gestion d’officines. Plus de la moitié des pharmacies du pays ont utilisé l’outil. Sauf que <a href=\"http://www.koreaherald.com/view.php?ud=20150726000368\" target=\"_blank\">les données sauvegardées ont été revendues</a> à IMS Health Korea. Cette entreprise, dont le siège social est basé aux USA, a ensuite commercialisé, illégalement, les données à d’autres sociétés en Corée.</p>\n<p>La loi 2011 sur le droit de la protection des renseignements personnels interdit l’utilisation des renseignements personnels et des renseignements médicaux sans le consentement des patients. Le Pharmaceutical Information Center est actuellement jugé pour cette collecte illégale, qui date de 2013, et la distribution des informations médicales de 90% des Coréens.</p>\n<blockquote readability=\"4\">\n<p><strong>Un cas qui pourrait toucher la France ?</strong></p>\n</blockquote>\n<p class=\"c2\">Depuis février 2015, l’ouverture des données de santé dans l’hexagone a été décidée par le législateur. L’assurance-maladie a annoncé qu’elle proposait, en accès libre, sa base de données « <em>Damir</em> » sur le site data.gouv.fr. Un big data de la santé qui regroupe les informations issues de 1,2 milliard de feuilles de soins, de 500 millions d’actes médicaux et de 11 millions d’hospitalisations. Ce big data ne propose pas les identités (pas de nom, de numéro de sécurité sociale, …), uniquement des millions de chiffres et de données de santé. Cette faramineuse base de données, qui double de volume chaque année, permet d’extraire, par exemple, des statistiques liées à la santé dans les régions. <a href=\"http://www.assemblee-nationale.fr/14/amendements/2302/CION-SOC/AS1387.pdf\" target=\"_blank\">L’article 47 de loi</a> permet aux acteurs privés d’accéder aux données de la CNAMTS. C’est l’Institut national des données de santé (<a href=\"http://www.institut-des-donnees-de-sante.fr/\" target=\"_blank\">INDS</a>) qui a en charge de répondre aux demandes du « privé » pour accéder aux données plus ciblées (et payantes).</p>\n",
|
||||||
"annotations": [],
|
"annotations": [],
|
||||||
"mimetype": "text/html",
|
"mimetype": "text/html",
|
||||||
"language": "fr-FR",
|
"language": "fr-FR",
|
||||||
"reading_time": 1,
|
"reading_time": 1,
|
||||||
"domain_name": "www.zataz.com",
|
"domain_name": "www.zataz.com",
|
||||||
"preview_picture": "http://www.zataz.com/wp-content/uploads/HD-Virus.png",
|
"preview_picture": "https://www.zataz.com/wp-content/uploads/HD-Virus.png",
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue