it: 'Italiano'
items_on_page: 12
theme: material
- language: en
+ language: '%locale%'
rss_limit: 50
reading_speed: 1
cache_lifetime: 10
password: "%database_password%"
charset: UTF8
path: "%database_path%"
+ unix_socket: "%database_socket%"
server_version: 5.6
orm:
database_password: ~
database_path: "%kernel.root_dir%/../data/db/wallabag.sqlite"
database_table_prefix: wallabag_
+ database_socket: null
mailer_transport: smtp
mailer_host: 127.0.0.1
rabbitmq_password: guest
# Redis processing
+ redis_scheme: tcp
redis_host: localhost
redis_port: 6379
+ redis_path: null
::
- bin/console lexik:maintenance:lock --no-interaction
+ bin/console lexik:maintenance:lock -e=prod --no-interaction
Du kannst deine IP Adresse in ``app/config/config.yml`` setzen, wenn du Zugriff zu wallabag haben willst, auch wenn der Wartungsmodus aktiv ist. Zum Beispiel:
::
- bin/console lexik:maintenance:unlock
+ bin/console lexik:maintenance:unlock -e=prod
.. code:: bash
# for Pocket import
- bin/console rabbitmq:consumer import_pocket -w
+ bin/console rabbitmq:consumer -e=prod import_pocket -w
# for Readability import
- bin/console rabbitmq:consumer import_readability -w
+ bin/console rabbitmq:consumer -e=prod import_readability -w
# for Instapaper import
- bin/console rabbitmq:consumer import_instapaper -w
+ bin/console rabbitmq:consumer -e=prod import_instapaper -w
# for wallabag v1 import
- bin/console rabbitmq:consumer import_wallabag_v1 -w
+ bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w
# for wallabag v2 import
- bin/console rabbitmq:consumer import_wallabag_v2 -w
+ bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w
# for Firefox import
- bin/console rabbitmq:consumer import_firefox -w
+ bin/console rabbitmq:consumer -e=prod import_firefox -w
# for Chrome import
- bin/console rabbitmq:consumer import_chrome -w
+ bin/console rabbitmq:consumer -e=prod import_chrome -w
.. code:: bash
# for Pocket import
- bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
+ bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
# for Readability import
- bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
+ bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
# for Instapaper import
- bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
+ bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
# for wallabag v1 import
- bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
+ bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
# for wallabag v2 import
- bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
+ bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
# for Firefox import
- bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
+ bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
# for Chrome import
- bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
+ bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
Wenn du den Import nur für ein paar Nachrichten und nicht für alle starten willst, kannst du die Nummer (im folgenden Beispiel 12) angeben. Der Redis Worker wird dann nach der 12. Nachricht stoppen:
.. code:: bash
- bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12
+ bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12
::
- bin/console lexik:maintenance:lock --no-interaction
+ bin/console lexik:maintenance:lock --no-interaction -e=prod
You can set your IP address in ``app/config/config.yml`` if you want to access to wallabag even if maintenance mode is enabled. For example:
::
- bin/console lexik:maintenance:unlock
+ bin/console lexik:maintenance:unlock -e=prod
.. code:: bash
# for Pocket import
- bin/console rabbitmq:consumer import_pocket -w
+ bin/console rabbitmq:consumer -e=prod import_pocket -w
# for Readability import
- bin/console rabbitmq:consumer import_readability -w
+ bin/console rabbitmq:consumer -e=prod import_readability -w
# for Instapaper import
- bin/console rabbitmq:consumer import_instapaper -w
+ bin/console rabbitmq:consumer -e=prod import_instapaper -w
# for wallabag v1 import
- bin/console rabbitmq:consumer import_wallabag_v1 -w
+ bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w
# for wallabag v2 import
- bin/console rabbitmq:consumer import_wallabag_v2 -w
+ bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w
# for Firefox import
- bin/console rabbitmq:consumer import_firefox -w
+ bin/console rabbitmq:consumer -e=prod import_firefox -w
# for Chrome import
- bin/console rabbitmq:consumer import_chrome -w
+ bin/console rabbitmq:consumer -e=prod import_chrome -w
.. code:: bash
# for Pocket import
- bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
+ bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
# for Readability import
- bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
+ bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
# for Instapaper import
- bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
+ bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
# for wallabag v1 import
- bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
+ bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
# for wallabag v2 import
- bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
+ bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
# for Firefox import
- bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
+ bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
# for Chrome import
- bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
+ bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
If you want to launch the import only for some messages and not all, you can specify this number (here 12) and the worker will stop right after the 12th message :
.. code:: bash
- bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12
+ bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12
::
- bin/console lexik:maintenance:lock --no-interaction
+ bin/console lexik:maintenance:lock --no-interaction -e=prod
Vous pouvez spécifier votre adresse IP dans ``app/config/config.yml`` si vous souhaitez accéder à wallabag même si
le mode maintenance est activé. Par exemple :
::
- bin/console lexik:maintenance:unlock
+ bin/console lexik:maintenance:unlock -e=prod
.. code:: bash
# for Pocket import
- bin/console rabbitmq:consumer import_pocket -w
+ bin/console rabbitmq:consumer -e=prod import_pocket -w
# for Readability import
- bin/console rabbitmq:consumer import_readability -w
+ bin/console rabbitmq:consumer -e=prod import_readability -w
# for Instapaper import
- bin/console rabbitmq:consumer import_instapaper -w
+ bin/console rabbitmq:consumer -e=prod import_instapaper -w
# for wallabag v1 import
- bin/console rabbitmq:consumer import_wallabag_v1 -w
+ bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w
# for wallabag v2 import
- bin/console rabbitmq:consumer import_wallabag_v2 -w
+ bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w
# for Firefox import
- bin/console rabbitmq:consumer import_firefox -w
+ bin/console rabbitmq:consumer -e=prod import_firefox -w
# for Chrome import
- bin/console rabbitmq:consumer import_chrome -w
+ bin/console rabbitmq:consumer -e=prod import_chrome -w
.. code:: bash
# for Pocket import
- bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
+ bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
# for Readability import
- bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
+ bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
# for Instapaper import
- bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
+ bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
# for wallabag v1 import
- bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
+ bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
# for wallabag v2 import
- bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
+ bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
# for Firefox import
- bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
+ bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
# for Chrome import
- bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
+ bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log
Si vous souhaitez démarrer l'import pour quelques messages uniquement, vous pouvez spécifier cette valeur en paramètre (ici 12) et le client va s'arrêter après le 12ème message :
.. code:: bash
- bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12
+ bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12
->getRepository('WallabagCoreBundle:Entry')
->removeTag($this->getUser()->getId(), $tag);
+ $this->cleanOrphanTag($tag);
+
$json = $this->get('serializer')->serialize($tag, 'json');
return (new JsonResponse())->setJson($json);
->getRepository('WallabagCoreBundle:Entry')
->removeTags($this->getUser()->getId(), $tags);
+ $this->cleanOrphanTag($tags);
+
$json = $this->get('serializer')->serialize($tags, 'json');
return (new JsonResponse())->setJson($json);
->getRepository('WallabagCoreBundle:Entry')
->removeTag($this->getUser()->getId(), $tag);
+ $this->cleanOrphanTag($tag);
+
$json = $this->get('serializer')->serialize($tag, 'json');
return (new JsonResponse())->setJson($json);
return (new JsonResponse())->setJson($json);
}
+ /**
+ * Remove orphan tag in case no entries are associated to it.
+ *
+ * @param Tag|array $tags
+ */
+ private function cleanOrphanTag($tags)
+ {
+ if (!is_array($tags)) {
+ $tags = [$tags];
+ }
+
+ $em = $this->getDoctrine()->getManager();
+
+ foreach ($tags as $tag) {
+ if (count($tag->getEntries()) === 0) {
+ $em->remove($tag);
+ }
+ }
+
+ $em->flush();
+ }
+
/**
* Validate that the first id is equal to the second one.
* If not, throw exception. It means a user try to access information from an other user.
$entry->removeTag($tag);
$em = $this->getDoctrine()->getManager();
$em->flush();
- if (count($tag->getEntries()) == 0) {
+
+ // remove orphan tag in case no entries are associated to it
+ if (count($tag->getEntries()) === 0) {
$em->remove($tag);
+ $em->flush();
}
- $em->flush();
$redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer'));
arguments:
- "@doctrine"
- wallabag_core.table_prefix_subscriber:
+ wallabag_core.subscriber.table_prefix:
class: Wallabag\CoreBundle\Subscriber\TablePrefixSubscriber
arguments:
- "%database_table_prefix%"
class: Predis\Client
arguments:
-
+ scheme: '%redis_scheme%'
host: '%redis_host%'
port: '%redis_port%'
- schema: tcp
+ path: '%redis_path%'
wallabag_core.exception_controller:
class: Wallabag\CoreBundle\Controller\ExceptionController
is_public_label: 'Publiczny'
save_label: 'Zapisz'
public:
- # shared_by_wallabag: "This article has been shared by <a href='%wallabag_instance%'>wallabag</a>"
+ shared_by_wallabag: "Ten artykuł został udostępniony przez <a href='%wallabag_instance%'>wallabag</a>"
about:
page_title: 'O nas'
*/
public function testDeleteUserTag($tag)
{
+ $tagName = $tag['label'];
+
$this->client->request('DELETE', '/api/tags/'.$tag['id'].'.json');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
->findAllByTagId($this->user->getId(), $tag['id']);
$this->assertCount(0, $entries);
+
+ $tag = $this->client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:Tag')
+ ->findOneByLabel($tagName);
+
+ $this->assertNull($tag, $tagName.' was removed because it begun an orphan tag');
}
public function testDeleteTagByLabel()
$this->logInAs('admin');
$client = $this->getClient();
- $content = $client->getContainer()
- ->get('doctrine.orm.entity_manager')
+ $em = $client->getContainer()
+ ->get('doctrine.orm.entity_manager');
+
+ $content = $em
->getRepository('WallabagCoreBundle:Entry')
->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
// empty content
$content->setContent('');
- $client->getContainer()->get('doctrine.orm.entity_manager')->persist($content);
- $client->getContainer()->get('doctrine.orm.entity_manager')->flush();
+ $em->persist($content);
+ $em->flush();
$client->request('GET', '/reload/'.$content->getId());
$this->assertEquals(302, $client->getResponse()->getStatusCode());
- $content = $client->getContainer()
- ->get('doctrine.orm.entity_manager')
+ $content = $em
->getRepository('WallabagCoreBundle:Entry')
->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
$this->logInAs('admin');
$client = $this->getClient();
+ $em = $client->getContainer()
+ ->get('doctrine.orm.entity_manager');
+
// add a new content to be removed later
- $user = $client->getContainer()
- ->get('doctrine.orm.entity_manager')
+ $user = $em
->getRepository('WallabagUserBundle:User')
->findOneByUserName('admin');
$content->setArchived(true);
$content->setLanguage('fr');
- $client->getContainer()
- ->get('doctrine.orm.entity_manager')
- ->persist($content);
- $client->getContainer()
- ->get('doctrine.orm.entity_manager')
- ->flush();
+ $em->persist($content);
+ $em->flush();
$client->request('GET', '/view/'.$content->getId());
$this->assertEquals(200, $client->getResponse()->getStatusCode());
namespace Tests\Wallabag\CoreBundle\Controller;
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
+use Wallabag\CoreBundle\Entity\Tag;
class TagControllerTest extends WallabagCoreTestCase
{
$client->request('GET', '/remove-tag/'.$entry->getId().'/'.$tag->getId());
$this->assertEquals(404, $client->getResponse()->getStatusCode());
+
+ $tag = $client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:Tag')
+ ->findOneByLabel($this->tagName);
+
+ $this->assertNull($tag, $this->tagName.' was removed because it begun an orphan tag');
}
public function testShowEntriesForTagAction()
{
$this->logInAs('admin');
$client = $this->getClient();
+ $em = $client->getContainer()
+ ->get('doctrine.orm.entity_manager');
+
+ $tag = new Tag();
+ $tag->setLabel($this->tagName);
$entry = $client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Entry')
->findByUrlAndUserId('http://0.0.0.0/entry4', $this->getLoggedInUserId());
- $tag = $client->getContainer()
- ->get('doctrine.orm.entity_manager')
- ->getRepository('WallabagCoreBundle:Tag')
- ->findOneByEntryAndTagLabel($entry, 'foo');
-
- $crawler = $client->request('GET', '/tag/list/'.$tag->getSlug());
+ $tag->addEntry($entry);
- $this->assertEquals(200, $client->getResponse()->getStatusCode());
- $this->assertCount(2, $crawler->filter('div[class=entry]'));
+ $em->persist($entry);
+ $em->persist($tag);
+ $em->flush();
$tag = $client->getContainer()
->get('doctrine.orm.entity_manager')
->getRepository('WallabagCoreBundle:Tag')
- ->findOneByLabel('baz');
+ ->findOneByEntryAndTagLabel($entry, $this->tagName);
$crawler = $client->request('GET', '/tag/list/'.$tag->getSlug());
$this->assertEquals(200, $client->getResponse()->getStatusCode());
- $this->assertCount(1, $crawler->filter('div[class=entry]'));
+ $this->assertCount(1, $crawler->filter('[id*="entry-"]'));
+
+ $entry->removeTag($tag);
+ $em->remove($tag);
+ $em->flush();
}
}