diff --git a/app/Resources/static/themes/material/css/main.css b/app/Resources/static/themes/material/css/main.css index 68f3f2ee5..f4230734c 100755 --- a/app/Resources/static/themes/material/css/main.css +++ b/app/Resources/static/themes/material/css/main.css @@ -308,6 +308,10 @@ nav input { margin: 0 1rem; } +span.numberItems { + float: right; +} + /* ========================================================================== * 3 = Filters slider * ========================================================================== */ diff --git a/app/config/config.yml b/app/config/config.yml index 30fd60636..31bd8a8c0 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -49,6 +49,7 @@ wallabag_core: language: en rss_limit: 50 reading_speed: 1 + cache_lifetime: 10 wallabag_user: registration_enabled: "%fosuser_registration%" diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml index 77840682d..3b67d8f69 100644 --- a/app/config/config_dev.yml +++ b/app/config/config_dev.yml @@ -40,3 +40,11 @@ swiftmailer: transport: smtp host: 'localhost' port: 1025 + +# If you want to use cache for queries used in WallabagExtension +# Uncomment the following lines +#doctrine: +# orm: +# metadata_cache_driver: apcu +# result_cache_driver: apcu +# query_cache_driver: apcu diff --git a/app/config/services.yml b/app/config/services.yml index 480408d91..95b8f26f5 100644 --- a/app/config/services.yml +++ b/app/config/services.yml @@ -16,6 +16,9 @@ services: wallabag.twig_extension: class: Wallabag\CoreBundle\Twig\WallabagExtension public: false + arguments: + - "@wallabag_core.entry_repository" + - "@security.token_storage" tags: - { name: twig.extension } diff --git a/src/Wallabag/CoreBundle/DependencyInjection/Configuration.php b/src/Wallabag/CoreBundle/DependencyInjection/Configuration.php index d1bb9820b..d8141eea9 100644 --- a/src/Wallabag/CoreBundle/DependencyInjection/Configuration.php +++ b/src/Wallabag/CoreBundle/DependencyInjection/Configuration.php @@ -36,6 +36,9 @@ class Configuration implements ConfigurationInterface ->end() ->scalarNode('paypal_url') ->end() + ->integerNode('cache_lifetime') + ->defaultValue(10) + ->end() ->end() ; diff --git a/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php b/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php index 7d08b73b7..0cbde908d 100644 --- a/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php +++ b/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php @@ -22,6 +22,7 @@ class WallabagCoreExtension extends Extension $container->setParameter('wallabag_core.reading_speed', $config['reading_speed']); $container->setParameter('wallabag_core.version', $config['version']); $container->setParameter('wallabag_core.paypal_url', $config['paypal_url']); + $container->setParameter('wallabag_core.cache_lifetime', $config['cache_lifetime']); $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('services.yml'); diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index e5c216799..24d1a57af 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php @@ -3,12 +3,15 @@ namespace Wallabag\CoreBundle\Repository; use Doctrine\ORM\EntityRepository; +use Doctrine\ORM\Query; use Pagerfanta\Adapter\DoctrineORMAdapter; use Pagerfanta\Pagerfanta; use Wallabag\CoreBundle\Entity\Tag; class EntryRepository extends EntityRepository { + private $lifeTime; + /** * Return a query builder to used by other getBuilderFor* method. * @@ -308,4 +311,25 @@ class EntryRepository extends EntityRepository return $qb->getQuery()->getSingleScalarResult(); } + + public function setLifeTime($lifeTime) + { + $this->lifeTime = $lifeTime; + } + + /** + * Enable cache for a query. + * + * @param Query $query + * + * @return Query + */ + public function enableCache(Query $query) + { + $query->useQueryCache(true); + $query->useResultCache(true); + $query->setResultCacheLifetime($this->lifeTime); + + return $query; + } } diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml index e95ef4520..1c1457e70 100644 --- a/src/Wallabag/CoreBundle/Resources/config/services.yml +++ b/src/Wallabag/CoreBundle/Resources/config/services.yml @@ -81,6 +81,8 @@ services: factory: [ "@doctrine.orm.default_entity_manager", getRepository ] arguments: - WallabagCoreBundle:Entry + calls: + - [ setLifeTime, [ "%wallabag_core.cache_lifetime%" ] ] wallabag_core.tag_repository: class: Wallabag\CoreBundle\Repository\TagRepository diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig index 50134357f..f64c3da28 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig @@ -35,16 +35,16 @@ {% set currentRoute = app.request.attributes.get('_route') %}