Keith Carangelo
a7d43caccb
Added support for OR (~) and optional AND (+) operators for tag searches.
2021-09-08 15:26:58 -04:00
Ajabep
2ea2c99dcb
Fix a bug
...
When we try to access the atom feed and have no bookmarks, it raised the following exception :
```
Call to a member function reorder() on array /webroot/application/bookmark/BookmarkFileService.php:143
#0 /webroot/application/feed/FeedBuilder.php(106): Shaarli\Bookmark\BookmarkFileService->search(Array, 'public', false, false, true)
#1 /webroot/application/front/controller/visitor/FeedController.php(47): Shaarli\Feed\FeedBuilder->buildData('atom', Array)
#2 /webroot/application/front/controller/visitor/FeedController.php(20): Shaarli\Front\Controller\Visitor\FeedController->processRequest('atom', Object(Slim\Http\Request), Object(Slim\Http\Response))
#3 [internal function]: Shaarli\Front\Controller\Visitor\FeedController->atom(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#4 /webroot/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#5 /webroot/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#6 /webroot/application/front/ShaarliMiddleware.php(55): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#7 [internal function]: Shaarli\Front\ShaarliMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route))
#8 /webroot/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Array, Array)
#9 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route))
#10 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route))
#11 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response))
#12 /webroot/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#13 /webroot/vendor/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))
#14 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))
#15 /webroot/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))
#16 /webroot/vendor/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))
#17 /webroot/index.php(177): Slim\App->run(true)
#18 {main}
```
2021-04-02 21:14:09 +02:00
ArthurHoaro
bcba6bd353
New plugin hook: ability to add custom filters to Shaarli search engine
...
A new plugin hook has been added: hook_test_filter_search_entry
This hook allows to filter out bookmark with custom plugin code when a search is performed.
Related to #143
2021-02-04 11:02:50 +01:00
ArthurHoaro
8997ae6c8e
Merge pull request #1697 from ArthurHoaro/feature/pagination
...
Handle pagination through BookmarkService
2021-02-04 10:57:44 +01:00
ArthurHoaro
9b8c0a4560
Handle pagination through BookmarkService
...
Handle all search results through SearchResult object.
This is a required step toward implementing a BookmarkService based on SQL database.
Related to #953
2021-01-20 15:01:29 +01:00
ArthurHoaro
9ef8555ad2
Support search highlights when matching URL content
...
DefaultFormatter:
- format 'a' tag content and not href attribute
- format hashtags properly
Markdown(Extra)Formatter:
- Extend Parsedown to format highlight properly: https://github.com/erusev/parsedown/wiki/Tutorial:-Create-Extensions
Fixes #1681
2021-01-19 17:49:19 +01:00
ArthurHoaro
8ed5fbef8f
Merge pull request #1665 from ArthurHoaro/fix/metadata-regexes-2
...
Fix metadata extract regex (2)
2020-12-29 11:43:39 +01:00
ArthurHoaro
88a8e284b2
Fix metadata extract regex (2)
...
Reference: https://stackoverflow.com/questions/8055727/negating-a-backreference-in-regular-expressions
Fixes #1656
2020-12-17 13:56:24 +01:00
ArthurHoaro
8a6b7e96b7
Fix: soft fail if the mutex is not working
...
And display the error in server admin page
Fixes #1650
2020-11-24 13:39:35 +01:00
ArthurHoaro
b99e00f7cd
Manually fix remaining PHPCS errors
2020-11-09 10:56:49 +01:00
ArthurHoaro
53054b2bf6
Apply PHP Code Beautifier on source code for linter automatic fixes
2020-11-09 10:56:24 +01:00
ArthurHoaro
d9d71b10c3
Merge pull request #1621 from ArthurHoaro/feature/tag-separators
2020-11-08 14:07:33 +01:00
ArthurHoaro
c51d65238b
Merge pull request #1629 from ArthurHoaro/fix/demo-vimeo
...
Replace vimeo link in demo bookmarks due to IP ban on the demo instance
2020-11-08 14:06:45 +01:00
ArthurHoaro
00d3dd91ef
Fix an issue truncating extracted metadata content
...
Previous regex forced the selection to stop at either the first single or double quote found, regardless of the opening quote. Using '\1', we're sure to wait for the proper quote before stopping the capture.
2020-11-08 13:54:39 +01:00
ArthurHoaro
9952de2fe0
Replace vimeo link in demo bookmarks due to IP ban on the demo instance
...
Fixes #1148
2020-11-08 11:58:17 +01:00
ArthurHoaro
b3bd8c3e8d
Feature: support any tag separator
...
So it allows to have multiple words tags.
Breaking change: commas ',' are no longer a default separator.
Fixes #594
2020-11-05 17:54:42 +01:00
ArthurHoaro
740b32b520
Default formatter: add a setting to disable auto-linkification
...
+ update documentation
+ single parameter for both URL and hashtags
Fixes #1094
2020-11-03 12:43:35 +01:00
ArthurHoaro
156061d445
Raise 404 error instead of 500 if permalink access is denied
2020-10-28 13:16:18 +01:00
ArthurHoaro
36e6d88dbf
Feature: add weekly and monthly view/RSS feed for daily page
...
- Heavy refactoring of DailyController
- Add a banner like in tag cloud to display monthly and weekly links
- Translations: t() now supports variables with optional first letter
uppercase
Fixes #160
2020-10-27 19:45:02 +01:00
ArthurHoaro
9c04921a8c
Feature: Share private bookmarks using a URL containing a private key
...
- Add a share link next to « Permalink » in linklist (using share icon
from fork awesome)
- This link generates a private key associated to the bookmark
- Accessing the bookmark while logged out with the proper key will
display it
Fixes #475
2020-10-27 19:32:57 +01:00
ArthurHoaro
21e72da9ee
Asynchronous retrieval of bookmark's thumbnails
...
This feature is based general.enable_async_metadata setting and works with existing metadata.js file.
The script is compatible with any template:
- the thumbnail div bloc must have attribute
- the bookmark bloc must have attribute with the bookmark ID as value
Fixes #1564
2020-10-20 10:15:18 +02:00
ArthurHoaro
4e3875c0ce
Feature: highlight fulltext search results
...
How it works:
1. when a fulltext search is made, Shaarli looks for the first
occurence position of every term matching the search. No change here,
but we store these positions in an array, in Bookmark's additionalContent.
2. when formatting bookmarks (through BookmarkFormatter
implementation):
1. first we insert specific tokens at every search result positions
2. we format the content (escape HTML, apply markdown, etc.)
3. as a last step, we replace our token with displayable span
elements
Cons: this tightens coupling between search filters and formatters
Pros: it was absolutely necessary not to perform the
search twice. this solution has close to no impact on performances.
Fixes #205
2020-10-16 20:31:12 +02:00
ArthurHoaro
4b3aca6623
Strict types: fix an issue in daily where the date could be an int
2020-10-16 12:04:46 +02:00
ArthurHoaro
efb7d21b52
Add strict types for bookmarks management
...
Parameters typing and using strict types overall increase the codebase
quality by enforcing the a given parameter will have the expected type.
It also removes the need to unnecessary unit tests checking methods
behavior with invalid input.
2020-10-13 13:50:11 +02:00
ArthurHoaro
fd1ddad98d
Add mutex on datastore I/O operations
...
To make sure that there is no concurrent operation on the datastore file.
Fixes #1132
2020-10-13 12:38:19 +02:00
ArthurHoaro
458b6b9918
Merge pull request #1540 from ArthurHoaro/fix/metadata-regexes
...
Improve regex to extract HTML metadata (title, description, etc.)
2020-10-13 12:26:55 +02:00
ArthurHoaro
1ea09a1b8b
Fix warning if the encoding retrieved from external headers is invalid
...
Also fixed the regex to support this failing header: charset="utf-8"\r\n"
2020-09-30 11:11:19 +02:00
ArthurHoaro
6128ab6a55
Merge pull request #1552 from ArthurHoaro/feature/better-initializer
2020-09-12 12:14:18 +02:00
ArthurHoaro
da7acb9830
Improve default bookmarks after install
...
Used @nodiscc suggestion in #1148 (slightly edited).
It provides a description of what Shaarli does, Markdown rendering demo, and a thumbnail link.
Fixes #1148
2020-09-10 16:29:17 +02:00
ArthurHoaro
27ddfec3c3
Fix visibility issue on daily page
...
This filter (links by day) didn't apply any visibility parameter.
Fixes #1543
2020-09-06 14:11:02 +02:00
ArthurHoaro
2cd0509b50
Improve regex to extract HTML metadata (title, description, etc.)
...
Also added a bunch of tests to cover more use cases.
Fixes #1375
2020-09-03 17:46:26 +02:00
ArthurHoaro
a8e210faa6
Fixed: Pinned bookmarks are displayed first in ATOM/RSS feeds
...
Fixes #1485
2020-08-29 10:06:40 +02:00
ArthurHoaro
1a68ae5a29
Bookmark's thumbnails PHPDoc improvement
2020-08-01 11:14:03 +02:00
ArthurHoaro
d6e5f04d39
Remove anonymous permission and initialize bookmarks on login
2020-08-01 11:10:57 +02:00
ArthurHoaro
301c7ab1a0
Better support for notes permalink
2020-07-28 20:46:11 +02:00
ArthurHoaro
c4ad3d4f06
Process Shaarli install through Slim controller
2020-07-23 21:19:21 +02:00
ArthurHoaro
1a8ac737e5
Process main page (linklist) through Slim controller
...
Including a bunch of improvements on the container,
and helper used across new controllers.
2020-07-23 21:19:21 +02:00
ArthurHoaro
c22fa57a55
Handle shaare creation/edition/deletion through Slim controllers
2020-07-23 21:19:21 +02:00
ArthurHoaro
c4d5be53c2
Process Daily RSS feed through Slim controller
...
The daily RSS template has been entirely rewritten to handle the whole feed through the template engine.
2020-07-23 21:19:21 +02:00
ArthurHoaro
69e29ff65e
Process daily page through Slim controller
2020-07-23 21:19:21 +02:00
ArthurHoaro
c79473bd84
Handle tag filtering in the Bookmark service
2020-07-23 21:19:21 +02:00
ArthurHoaro
03340c18ea
Slim router: handle add tag route
2020-07-23 21:19:21 +02:00
ArthurHoaro
b0428aa9b0
Migrate cache purge function to a proper class
...
And update dependencies and tests.
Note that SESSION['tags'] has been removed a log ago
2020-07-23 21:19:21 +02:00
ArthurHoaro
485b168a96
Process picwall rendering through Slim controller + UT
2020-07-23 21:19:21 +02:00
ArthurHoaro
a39acb2518
Fix an issue with private tags and fix nomarkdown tag
...
The new bookmark service wasn't handling private tags properly.
nomarkdown tag is now shown only for logged in user in bookmarks, and hidden for everyone in tag clouds/lists.
Fixes #726
2020-01-18 11:39:26 +01:00
ArthurHoaro
e26e2060f5
Add and update unit test for the new system (Bookmark + Service)
...
See #1307
2020-01-18 09:56:32 +01:00
ArthurHoaro
cf92b4dd15
Apply the new system (Bookmark + Service) to the whole code base
...
See https://github.com/shaarli/Shaarli/issues/1307
2020-01-18 09:55:59 +01:00
ArthurHoaro
336a28fa4a
Introduce Bookmark object and Service layer to retrieve them
...
See https://github.com/shaarli/Shaarli/issues/1307 for details
2020-01-17 18:42:11 +01:00
ArthurHoaro
9f9627059a
Make sure that bookmark sort is consistent, even with equal timestamps
...
Fixes #1348
2019-08-07 13:18:02 +02:00
ArthurHoaro
6a4872520c
Automatically retrieve description for new bookmarks
...
If the option is enabled, it will try to find a meta tag containing
the page description and keywords, just like we do for the page title.
It will either look for regular meta tag or OpenGraph ones.
The option is disabled by default.
Note that keywords meta tags is mostly not used.
In `configure` template, the variable associated with this setting
is `$retrieve_description`.
Fixes #1302
2019-07-06 12:21:52 +02:00