From bdc5152d486ca75372c271f94623b248bc127800 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Sun, 2 Dec 2018 23:24:58 +0100 Subject: namespacing: \Shaarli\History Signed-off-by: VirtualTam --- index.php | 1 + 1 file changed, 1 insertion(+) (limited to 'index.php') diff --git a/index.php b/index.php index acfcc660..cc41d80c 100644 --- a/index.php +++ b/index.php @@ -76,6 +76,7 @@ require_once 'application/PluginManager.php'; require_once 'application/Router.php'; require_once 'application/Updater.php'; use \Shaarli\Config\ConfigManager; +use Shaarli\History; use \Shaarli\Languages; use \Shaarli\Security\LoginManager; use \Shaarli\Security\SessionManager; -- cgit v1.2.3 From dfc650aa239d3a2c028d0ba13132ce75b4f4c0b4 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Mon, 3 Dec 2018 00:08:04 +0100 Subject: namespacing: \Shaarli\Feed\{Cache,CachedPage,FeedBuilder} Signed-off-by: VirtualTam --- index.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index cc41d80c..6d1ae3fc 100644 --- a/index.php +++ b/index.php @@ -57,10 +57,8 @@ require_once __DIR__ . '/vendor/autoload.php'; // Shaarli library require_once 'application/ApplicationUtils.php'; -require_once 'application/Cache.php'; -require_once 'application/CachedPage.php'; require_once 'application/config/ConfigPlugin.php'; -require_once 'application/FeedBuilder.php'; +require_once 'application/feed/Cache.php'; require_once 'application/FileUtils.php'; require_once 'application/History.php'; require_once 'application/HttpUtils.php'; @@ -76,7 +74,9 @@ require_once 'application/PluginManager.php'; require_once 'application/Router.php'; require_once 'application/Updater.php'; use \Shaarli\Config\ConfigManager; -use Shaarli\History; +use \Shaarli\Feed\CachedPage; +use \Shaarli\Feed\FeedBuilder; +use \Shaarli\History; use \Shaarli\Languages; use \Shaarli\Security\LoginManager; use \Shaarli\Security\SessionManager; -- cgit v1.2.3 From 51753e403fa69c0ce124ede27d300477e3e799ca Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Mon, 3 Dec 2018 00:34:53 +0100 Subject: namespacing: move HTTP utilities along \Shaarli\Http\ classes Signed-off-by: VirtualTam --- index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index 6d1ae3fc..66fe30f1 100644 --- a/index.php +++ b/index.php @@ -59,16 +59,16 @@ require_once __DIR__ . '/vendor/autoload.php'; require_once 'application/ApplicationUtils.php'; require_once 'application/config/ConfigPlugin.php'; require_once 'application/feed/Cache.php'; +require_once 'application/http/HttpUtils.php'; +require_once 'application/http/UrlUtils.php'; require_once 'application/FileUtils.php'; require_once 'application/History.php'; -require_once 'application/HttpUtils.php'; require_once 'application/LinkDB.php'; require_once 'application/LinkFilter.php'; require_once 'application/LinkUtils.php'; require_once 'application/NetscapeBookmarkUtils.php'; require_once 'application/PageBuilder.php'; require_once 'application/TimeZone.php'; -require_once 'application/Url.php'; require_once 'application/Utils.php'; require_once 'application/PluginManager.php'; require_once 'application/Router.php'; -- cgit v1.2.3 From 8c0f19c7971e1a4534347ce9d6d82a0a45799711 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Mon, 3 Dec 2018 00:46:04 +0100 Subject: namespacing: \Shaarli\Render\{PageBuilder,ThemeUtils} Signed-off-by: VirtualTam --- index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index 66fe30f1..719b622c 100644 --- a/index.php +++ b/index.php @@ -67,7 +67,6 @@ require_once 'application/LinkDB.php'; require_once 'application/LinkFilter.php'; require_once 'application/LinkUtils.php'; require_once 'application/NetscapeBookmarkUtils.php'; -require_once 'application/PageBuilder.php'; require_once 'application/TimeZone.php'; require_once 'application/Utils.php'; require_once 'application/PluginManager.php'; @@ -78,9 +77,10 @@ use \Shaarli\Feed\CachedPage; use \Shaarli\Feed\FeedBuilder; use \Shaarli\History; use \Shaarli\Languages; +use \Shaarli\Render\PageBuilder; +use \Shaarli\Render\ThemeUtils; use \Shaarli\Security\LoginManager; use \Shaarli\Security\SessionManager; -use \Shaarli\ThemeUtils; use \Shaarli\Thumbnailer; // Ensure the PHP version is supported -- cgit v1.2.3 From f24896b237e40718fb6eaa2869592eb0855a47fd Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Mon, 3 Dec 2018 01:10:39 +0100 Subject: namespacing: \Shaarli\Bookmark\LinkDB Signed-off-by: VirtualTam --- index.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index 719b622c..b1d37a01 100644 --- a/index.php +++ b/index.php @@ -63,7 +63,6 @@ require_once 'application/http/HttpUtils.php'; require_once 'application/http/UrlUtils.php'; require_once 'application/FileUtils.php'; require_once 'application/History.php'; -require_once 'application/LinkDB.php'; require_once 'application/LinkFilter.php'; require_once 'application/LinkUtils.php'; require_once 'application/NetscapeBookmarkUtils.php'; @@ -72,6 +71,8 @@ require_once 'application/Utils.php'; require_once 'application/PluginManager.php'; require_once 'application/Router.php'; require_once 'application/Updater.php'; + +use \Shaarli\Bookmark\LinkDB; use \Shaarli\Config\ConfigManager; use \Shaarli\Feed\CachedPage; use \Shaarli\Feed\FeedBuilder; -- cgit v1.2.3 From 6696729b88e67504fdd333cbaab43a63c3617d86 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Mon, 3 Dec 2018 01:22:45 +0100 Subject: namespacing: \Shaarli\Bookmark\LinkFilter Signed-off-by: VirtualTam --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index b1d37a01..dbb3c6fc 100644 --- a/index.php +++ b/index.php @@ -63,7 +63,6 @@ require_once 'application/http/HttpUtils.php'; require_once 'application/http/UrlUtils.php'; require_once 'application/FileUtils.php'; require_once 'application/History.php'; -require_once 'application/LinkFilter.php'; require_once 'application/LinkUtils.php'; require_once 'application/NetscapeBookmarkUtils.php'; require_once 'application/TimeZone.php'; @@ -72,6 +71,7 @@ require_once 'application/PluginManager.php'; require_once 'application/Router.php'; require_once 'application/Updater.php'; +use \Shaarli\Bookmark\Exception\LinkNotFoundException; use \Shaarli\Bookmark\LinkDB; use \Shaarli\Config\ConfigManager; use \Shaarli\Feed\CachedPage; -- cgit v1.2.3 From fe3713d2e5c91e2d07af72b39f321521d3dd470c Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Mon, 3 Dec 2018 01:35:14 +0100 Subject: namespacing: move LinkUtils along \Shaarli\Bookmark classes Signed-off-by: VirtualTam --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index dbb3c6fc..146b4457 100644 --- a/index.php +++ b/index.php @@ -57,13 +57,13 @@ require_once __DIR__ . '/vendor/autoload.php'; // Shaarli library require_once 'application/ApplicationUtils.php'; +require_once 'application/bookmark/LinkUtils.php'; require_once 'application/config/ConfigPlugin.php'; require_once 'application/feed/Cache.php'; require_once 'application/http/HttpUtils.php'; require_once 'application/http/UrlUtils.php'; require_once 'application/FileUtils.php'; require_once 'application/History.php'; -require_once 'application/LinkUtils.php'; require_once 'application/NetscapeBookmarkUtils.php'; require_once 'application/TimeZone.php'; require_once 'application/Utils.php'; -- cgit v1.2.3 From bcf056c9d92e5240e645c76a4cdc8ae159693f9a Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Mon, 3 Dec 2018 23:49:20 +0100 Subject: namespacing: \Shaarli\Updater Signed-off-by: VirtualTam --- index.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index 146b4457..ce0373e1 100644 --- a/index.php +++ b/index.php @@ -62,6 +62,7 @@ require_once 'application/config/ConfigPlugin.php'; require_once 'application/feed/Cache.php'; require_once 'application/http/HttpUtils.php'; require_once 'application/http/UrlUtils.php'; +require_once 'application/updater/UpdaterUtils.php'; require_once 'application/FileUtils.php'; require_once 'application/History.php'; require_once 'application/NetscapeBookmarkUtils.php'; @@ -69,7 +70,6 @@ require_once 'application/TimeZone.php'; require_once 'application/Utils.php'; require_once 'application/PluginManager.php'; require_once 'application/Router.php'; -require_once 'application/Updater.php'; use \Shaarli\Bookmark\Exception\LinkNotFoundException; use \Shaarli\Bookmark\LinkDB; @@ -83,6 +83,7 @@ use \Shaarli\Render\ThemeUtils; use \Shaarli\Security\LoginManager; use \Shaarli\Security\SessionManager; use \Shaarli\Thumbnailer; +use Shaarli\Updater\Updater; // Ensure the PHP version is supported try { -- cgit v1.2.3 From 9778a1551ce708b9f421a181806412a05410f1fb Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Mon, 3 Dec 2018 23:58:59 +0100 Subject: namespacing: \Shaarli\ApplicationUtils Signed-off-by: VirtualTam --- index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index ce0373e1..3a7dab25 100644 --- a/index.php +++ b/index.php @@ -56,7 +56,6 @@ require_once 'inc/rain.tpl.class.php'; require_once __DIR__ . '/vendor/autoload.php'; // Shaarli library -require_once 'application/ApplicationUtils.php'; require_once 'application/bookmark/LinkUtils.php'; require_once 'application/config/ConfigPlugin.php'; require_once 'application/feed/Cache.php'; @@ -71,6 +70,7 @@ require_once 'application/Utils.php'; require_once 'application/PluginManager.php'; require_once 'application/Router.php'; +use \Shaarli\ApplicationUtils; use \Shaarli\Bookmark\Exception\LinkNotFoundException; use \Shaarli\Bookmark\LinkDB; use \Shaarli\Config\ConfigManager; @@ -83,7 +83,7 @@ use \Shaarli\Render\ThemeUtils; use \Shaarli\Security\LoginManager; use \Shaarli\Security\SessionManager; use \Shaarli\Thumbnailer; -use Shaarli\Updater\Updater; +use \Shaarli\Updater\Updater; // Ensure the PHP version is supported try { -- cgit v1.2.3 From a932f486f20f3daf8ad657d8d39a6d6c316e66eb Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Tue, 4 Dec 2018 00:02:17 +0100 Subject: namespacing: \Shaarli\Router Signed-off-by: VirtualTam --- index.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index 3a7dab25..1dec569c 100644 --- a/index.php +++ b/index.php @@ -63,12 +63,10 @@ require_once 'application/http/HttpUtils.php'; require_once 'application/http/UrlUtils.php'; require_once 'application/updater/UpdaterUtils.php'; require_once 'application/FileUtils.php'; -require_once 'application/History.php'; require_once 'application/NetscapeBookmarkUtils.php'; require_once 'application/TimeZone.php'; require_once 'application/Utils.php'; require_once 'application/PluginManager.php'; -require_once 'application/Router.php'; use \Shaarli\ApplicationUtils; use \Shaarli\Bookmark\Exception\LinkNotFoundException; @@ -80,6 +78,7 @@ use \Shaarli\History; use \Shaarli\Languages; use \Shaarli\Render\PageBuilder; use \Shaarli\Render\ThemeUtils; +use \Shaarli\Router; use \Shaarli\Security\LoginManager; use \Shaarli\Security\SessionManager; use \Shaarli\Thumbnailer; -- cgit v1.2.3 From 349b0144011e25f2b1a727b1d28d49d55b3b2ebb Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Tue, 4 Dec 2018 00:13:42 +0100 Subject: namespacing: \Shaarli\Netscape\NetscapeBookmarkUtils Signed-off-by: VirtualTam --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index 1dec569c..bff8e8ff 100644 --- a/index.php +++ b/index.php @@ -63,7 +63,6 @@ require_once 'application/http/HttpUtils.php'; require_once 'application/http/UrlUtils.php'; require_once 'application/updater/UpdaterUtils.php'; require_once 'application/FileUtils.php'; -require_once 'application/NetscapeBookmarkUtils.php'; require_once 'application/TimeZone.php'; require_once 'application/Utils.php'; require_once 'application/PluginManager.php'; @@ -76,6 +75,7 @@ use \Shaarli\Feed\CachedPage; use \Shaarli\Feed\FeedBuilder; use \Shaarli\History; use \Shaarli\Languages; +use \Shaarli\Netscape\NetscapeBookmarkUtils; use \Shaarli\Render\PageBuilder; use \Shaarli\Render\ThemeUtils; use \Shaarli\Router; -- cgit v1.2.3 From e1850388348d4bfdf463a5aa341bc470da79cf32 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Tue, 4 Dec 2018 00:26:50 +0100 Subject: namespacing: \Shaarli\Plugin\PluginManager Signed-off-by: VirtualTam --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index bff8e8ff..633ab89e 100644 --- a/index.php +++ b/index.php @@ -65,7 +65,6 @@ require_once 'application/updater/UpdaterUtils.php'; require_once 'application/FileUtils.php'; require_once 'application/TimeZone.php'; require_once 'application/Utils.php'; -require_once 'application/PluginManager.php'; use \Shaarli\ApplicationUtils; use \Shaarli\Bookmark\Exception\LinkNotFoundException; @@ -76,6 +75,7 @@ use \Shaarli\Feed\FeedBuilder; use \Shaarli\History; use \Shaarli\Languages; use \Shaarli\Netscape\NetscapeBookmarkUtils; +use \Shaarli\Plugin\PluginManager; use \Shaarli\Render\PageBuilder; use \Shaarli\Render\ThemeUtils; use \Shaarli\Router; -- cgit v1.2.3 From 520d29578c57e476ece3bdd20c286d196b7b61b4 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 9 Feb 2019 13:52:12 +0100 Subject: Remove the redirector setting Fixes #1239 --- index.php | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index 633ab89e..9ea26c7c 100644 --- a/index.php +++ b/index.php @@ -312,9 +312,7 @@ function showDailyRSS($conf, $loginManager) $LINKSDB = new LinkDB( $conf->get('resource.datastore'), $loginManager->isLoggedIn(), - $conf->get('privacy.hide_public_links'), - $conf->get('redirector.url'), - $conf->get('redirector.encode_url') + $conf->get('privacy.hide_public_links') ); /* Some Shaarlies may have very few links, so we need to look @@ -356,11 +354,7 @@ function showDailyRSS($conf, $loginManager) // We pre-format some fields for proper output. foreach ($links as &$link) { - $link['formatedDescription'] = format_description( - $link['description'], - $conf->get('redirector.url'), - $conf->get('redirector.encode_url') - ); + $link['formatedDescription'] = format_description($link['description']); $link['timestamp'] = $link['created']->getTimestamp(); if (startsWith($link['url'], '?')) { $link['url'] = index_url($_SERVER) . $link['url']; // make permalink URL absolute @@ -433,11 +427,7 @@ function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager, $loginManager) $taglist = explode(' ', $link['tags']); uasort($taglist, 'strcasecmp'); $linksToDisplay[$key]['taglist']=$taglist; - $linksToDisplay[$key]['formatedDescription'] = format_description( - $link['description'], - $conf->get('redirector.url'), - $conf->get('redirector.encode_url') - ); + $linksToDisplay[$key]['formatedDescription'] = format_description($link['description']); $linksToDisplay[$key]['timestamp'] = $link['created']->getTimestamp(); } @@ -1662,11 +1652,7 @@ function buildLinkList($PAGE, $LINKSDB, $conf, $pluginManager, $loginManager) $linkDisp = array(); while ($i<$end && $iget('redirector.url'), - $conf->get('redirector.encode_url') - ); + $link['description'] = format_description($link['description']); $classLi = ($i % 2) != 0 ? '' : 'publicLinkHightLight'; $link['class'] = $link['private'] == 0 ? $classLi : 'private'; $link['timestamp'] = $link['created']->getTimestamp(); @@ -1727,7 +1713,6 @@ function buildLinkList($PAGE, $LINKSDB, $conf, $pluginManager, $loginManager) 'search_term' => $searchterm, 'search_tags' => $searchtags, 'visibility' => ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '', - 'redirector' => $conf->get('redirector.url'), // Optional redirector URL. 'links' => $linkDisp, ); @@ -1877,9 +1862,7 @@ try { $linkDb = new LinkDB( $conf->get('resource.datastore'), $loginManager->isLoggedIn(), - $conf->get('privacy.hide_public_links'), - $conf->get('redirector.url'), - $conf->get('redirector.encode_url') + $conf->get('privacy.hide_public_links') ); $container = new \Slim\Container(); -- cgit v1.2.3 From b790f900c937d0d8f6eccc15d2b4c26023f3d276 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 9 Feb 2019 14:04:16 +0100 Subject: Fix a warning if links sticky status isn't set - initiate its status to false when the link is created - if not defined, initiate its status to false (can happen if the updater hasn't run) --- index.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'index.php') diff --git a/index.php b/index.php index 633ab89e..1d505305 100644 --- a/index.php +++ b/index.php @@ -1181,6 +1181,8 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, $link['thumbnail'] = $thumbnailer->get($url); } + $link['sticky'] = isset($link['sticky']) ? $link['sticky'] : false; + $pluginManager->executeHooks('save_link', $link); $LINKSDB[$id] = $link; -- cgit v1.2.3 From cb974e47476284d967483f7478e3dcb5a2d974d4 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 9 Feb 2019 14:29:35 +0100 Subject: Accessibility: specify the HTML lang attribute The lang is based on the user defined one. If the language is automatic, no language will be specified. Fixes #1216 --- index.php | 1 - 1 file changed, 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index 633ab89e..50a871e0 100644 --- a/index.php +++ b/index.php @@ -1074,7 +1074,6 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, $PAGE->assign('api_enabled', $conf->get('api.enabled', true)); $PAGE->assign('api_secret', $conf->get('api.secret')); $PAGE->assign('languages', Languages::getAvailableLanguages()); - $PAGE->assign('language', $conf->get('translation.language')); $PAGE->assign('gd_enabled', extension_loaded('gd')); $PAGE->assign('thumbnails_mode', $conf->get('thumbnails.mode', Thumbnailer::MODE_NONE)); $PAGE->assign('pagetitle', t('Configure') .' - '. $conf->get('general.title', 'Shaarli')); -- cgit v1.2.3 From b49a04f796b9ad8533c53fee541132a4c2214909 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 9 Feb 2019 16:44:48 +0100 Subject: Rewrite IP ban management This adds a dedicated manager class to handle all ban interactions, which is instantiated and handled by LoginManager. IPs are now stored in the same format as the datastore, through FileUtils. Fixes #1032 #587 --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index 633ab89e..a27681dc 100644 --- a/index.php +++ b/index.php @@ -125,7 +125,7 @@ if (isset($_COOKIE['shaarli']) && !SessionManager::checkId($_COOKIE['shaarli'])) $conf = new ConfigManager(); $sessionManager = new SessionManager($_SESSION, $conf); -$loginManager = new LoginManager($GLOBALS, $conf, $sessionManager); +$loginManager = new LoginManager($conf, $sessionManager); $loginManager->generateStaySignedInToken($_SERVER['REMOTE_ADDR']); $clientIpId = client_ip_id($_SERVER); -- cgit v1.2.3 From 8d03f705ebbc891e216d509d4de0419842ebd317 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 9 Feb 2019 17:59:53 +0100 Subject: Bulk action: set visibility Added 2 buttons when link checkboxes are checked to set them either public or private. Related to #572 #1160 --- index.php | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'index.php') diff --git a/index.php b/index.php index 633ab89e..322c360c 100644 --- a/index.php +++ b/index.php @@ -1273,6 +1273,51 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, exit; } + // -------- User clicked either "Set public" or "Set private" bulk operation + if ($targetPage == Router::$PAGE_CHANGE_VISIBILITY) { + if (! $sessionManager->checkToken($_GET['token'])) { + die(t('Wrong token.')); + } + + $ids = trim($_GET['ids']); + if (strpos($ids, ' ') !== false) { + // multiple, space-separated ids provided + $ids = array_values(array_filter(preg_split('/\s+/', escape($ids)))); + } else { + // only a single id provided + $ids = [$ids]; + } + + // assert at least one id is given + if (!count($ids)) { + die('no id provided'); + } + // assert that the visibility is valid + if (!isset($_GET['newVisibility']) || !in_array($_GET['newVisibility'], ['public', 'private'])) { + die('invalid visibility'); + } else { + $private = $_GET['newVisibility'] === 'private'; + } + foreach ($ids as $id) { + $id = (int) escape($id); + $link = $LINKSDB[$id]; + $link['private'] = $private; + $pluginManager->executeHooks('save_link', $link); + $LINKSDB[$id] = $link; + } + $LINKSDB->save($conf->get('resource.page_cache')); // save to disk + + $location = '?'; + if (isset($_SERVER['HTTP_REFERER'])) { + $location = generateLocation( + $_SERVER['HTTP_REFERER'], + $_SERVER['HTTP_HOST'] + ); + } + header('Location: ' . $location); // After deleting the link, redirect to appropriate location + exit; + } + // -------- User clicked the "EDIT" button on a link: Display link edit form. if (isset($_GET['edit_link'])) { $id = (int) escape($_GET['edit_link']); -- cgit v1.2.3 From a8e7da01146455f13ef06b151a7dafedd3acf769 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 9 Feb 2019 14:13:08 +0100 Subject: Do not try to retrieve thumbnails for internal link Also adds a helper function to determine if a link is a note and apply it across multiple files. --- index.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index 633ab89e..7b54f98f 100644 --- a/index.php +++ b/index.php @@ -362,7 +362,7 @@ function showDailyRSS($conf, $loginManager) $conf->get('redirector.encode_url') ); $link['timestamp'] = $link['created']->getTimestamp(); - if (startsWith($link['url'], '?')) { + if (is_note($link['url'])) { $link['url'] = index_url($_SERVER) . $link['url']; // make permalink URL absolute } } @@ -1176,7 +1176,9 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, $link['title'] = $link['url']; } - if ($conf->get('thumbnails.mode', Thumbnailer::MODE_NONE) !== Thumbnailer::MODE_NONE) { + if ($conf->get('thumbnails.mode', Thumbnailer::MODE_NONE) !== Thumbnailer::MODE_NONE + && ! is_note($link['url']) + ) { $thumbnailer = new Thumbnailer($conf); $link['thumbnail'] = $thumbnailer->get($url); } @@ -1558,7 +1560,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, $ids = []; foreach ($LINKSDB as $link) { // A note or not HTTP(S) - if ($link['url'][0] === '?' || ! startsWith(strtolower($link['url']), 'http')) { + if (is_note($link['url']) || ! startsWith(strtolower($link['url']), 'http')) { continue; } $ids[] = $link['id']; -- cgit v1.2.3 From 18d2d3ae1500817dea422c64c8a67459906da96b Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Mon, 15 Apr 2019 17:45:58 +0200 Subject: Hotfix: History controller for the REST API has been renamed in a previous commit but the class name hasn't been updated in index.php --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index a96c9cfd..54478237 100644 --- a/index.php +++ b/index.php @@ -1888,7 +1888,7 @@ $app->group('/api/v1', function () { $this->put('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:putTag')->setName('putTag'); $this->delete('/tags/{tagName:[\w]+}', '\Shaarli\Api\Controllers\Tags:deleteTag')->setName('deleteTag'); - $this->get('/history', '\Shaarli\Api\Controllers\History:getHistory')->setName('getHistory'); + $this->get('/history', '\Shaarli\Api\Controllers\HistoryController:getHistory')->setName('getHistory'); })->add('\Shaarli\Api\ApiMiddleware'); $response = $app->run(true); -- cgit v1.2.3 From 5321f704b563df03232e2f8a1d2a26ecb8297428 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 25 May 2019 16:40:45 +0200 Subject: Daily - display the current day instead of the previous one Also mention if it's today or yesterday for clarity using `dayDesc` variable Fixes #1299 --- index.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index ff42114c..a14616ed 100644 --- a/index.php +++ b/index.php @@ -392,9 +392,16 @@ function showDailyRSS($conf, $loginManager) */ function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager, $loginManager) { - $day = date('Ymd', strtotime('-1 day')); // Yesterday, in format YYYYMMDD. if (isset($_GET['day'])) { $day = $_GET['day']; + if ($day === date('Ymd', strtotime('now'))) { + $pageBuilder->assign('dayDesc', t('Today')); + } elseif ($day === date('Ymd', strtotime('-1 days'))) { + $pageBuilder->assign('dayDesc', t('Yesterday')); + } + } else { + $day = date('Ymd', strtotime('now')); // Today, in format YYYYMMDD. + $pageBuilder->assign('dayDesc', t('Today')); } $days = $LINKSDB->days(); -- cgit v1.2.3 From 6a4872520cbbc012b5a8358cd50c78844afe8d07 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 8 Jun 2019 13:59:19 +0200 Subject: 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 --- index.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'index.php') diff --git a/index.php b/index.php index a14616ed..957d8d9a 100644 --- a/index.php +++ b/index.php @@ -1015,6 +1015,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, $conf->set('general.timezone', $tz); $conf->set('general.title', escape($_POST['title'])); $conf->set('general.header_link', escape($_POST['titleLink'])); + $conf->set('general.retrieve_description', !empty($_POST['retrieveDescription'])); $conf->set('resource.theme', escape($_POST['theme'])); $conf->set('security.session_protection_disabled', !empty($_POST['disablesessionprotection'])); $conf->set('privacy.default_private_links', !empty($_POST['privateLinkByDefault'])); @@ -1063,6 +1064,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, ); $PAGE->assign('continents', $continents); $PAGE->assign('cities', $cities); + $PAGE->assign('retrieve_description', $conf->get('general.retrieve_description')); $PAGE->assign('private_links_default', $conf->get('privacy.default_private_links', false)); $PAGE->assign('session_protection_disabled', $conf->get('security.session_protection_disabled', false)); $PAGE->assign('enable_rss_permalinks', $conf->get('feed.rss_permalinks', false)); @@ -1364,13 +1366,14 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, // If this is an HTTP(S) link, we try go get the page to extract // the title (otherwise we will to straight to the edit form.) if (empty($title) && strpos(get_url_scheme($url), 'http') !== false) { + $retrieveDescription = $conf->get('general.retrieve_description'); // Short timeout to keep the application responsive // The callback will fill $charset and $title with data from the downloaded page. get_http_response( $url, $conf->get('general.download_timeout', 30), $conf->get('general.download_max_size', 4194304), - get_curl_download_callback($charset, $title) + get_curl_download_callback($charset, $title, $description, $tags, $retrieveDescription) ); if (! empty($title) && strtolower($charset) != 'utf-8') { $title = mb_convert_encoding($title, 'utf-8', $charset); -- cgit v1.2.3 From a5a0c0399bcfea518330c4bad186da77f89ace6e Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Mon, 8 Jul 2019 23:10:00 +0200 Subject: WIP - Plugin to override default template colors * Adds a new core plugin to override default template colors * Adds a new hook when plugin settings are saved (`save_plugin_parameters`) * Use CSS native variables for main colors instead of SASS variables * Disable SASS sort order rules due to a bug in the plugin Fixes #1312 --- index.php | 1 + 1 file changed, 1 insertion(+) (limited to 'index.php') diff --git a/index.php b/index.php index 957d8d9a..f0f71dbb 100644 --- a/index.php +++ b/index.php @@ -1567,6 +1567,7 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, if ($targetPage == Router::$PAGE_SAVE_PLUGINSADMIN) { try { if (isset($_POST['parameters_form'])) { + $pluginManager->executeHooks('save_plugin_parameters', $_POST); unset($_POST['parameters_form']); foreach ($_POST as $param => $value) { $conf->set('plugins.'. $param, escape($value)); -- cgit v1.2.3 From 81cae5f5dd4a7cbd15e897572396a5d7a3e659fe Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 27 Jul 2019 10:56:57 +0200 Subject: Persist sticky status on bookmark update Fixes #1331 --- index.php | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'index.php') diff --git a/index.php b/index.php index f0f71dbb..9e473936 100644 --- a/index.php +++ b/index.php @@ -1126,22 +1126,24 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, // lf_id should only be present if the link exists. $id = isset($_POST['lf_id']) ? intval(escape($_POST['lf_id'])) : $LINKSDB->getNextId(); + $link['id'] = $id; // Linkdate is kept here to: // - use the same permalink for notes as they're displayed when creating them // - let users hack creation date of their posts // See: https://shaarli.readthedocs.io/en/master/guides/various-hacks/#changing-the-timestamp-for-a-shaare $linkdate = escape($_POST['lf_linkdate']); + $link['created'] = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $linkdate); if (isset($LINKSDB[$id])) { // Edit - $created = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $linkdate); - $updated = new DateTime(); - $shortUrl = $LINKSDB[$id]['shorturl']; + $link['updated'] = new DateTime(); + $link['shorturl'] = $LINKSDB[$id]['shorturl']; + $link['sticky'] = isset($LINKSDB[$id]['sticky']) ? $LINKSDB[$id]['sticky'] : false; $new = false; } else { // New link - $created = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $linkdate); - $updated = null; - $shortUrl = link_small_hash($created, $id); + $link['updated'] = null; + $link['shorturl'] = link_small_hash($link['created'], $id); + $link['sticky'] = false; $new = true; } @@ -1157,17 +1159,13 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, } $url = whitelist_protocols(trim($_POST['lf_url']), $conf->get('security.allowed_protocols')); - $link = array( - 'id' => $id, + $link = array_merge($link, [ 'title' => trim($_POST['lf_title']), 'url' => $url, 'description' => $_POST['lf_description'], 'private' => (isset($_POST['lf_private']) ? 1 : 0), - 'created' => $created, - 'updated' => $updated, 'tags' => str_replace(',', ' ', $tags), - 'shorturl' => $shortUrl, - ); + ]); // If title is empty, use the URL as title. if ($link['title'] == '') { @@ -1181,8 +1179,6 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, $link['thumbnail'] = $thumbnailer->get($url); } - $link['sticky'] = isset($link['sticky']) ? $link['sticky'] : false; - $pluginManager->executeHooks('save_link', $link); $LINKSDB[$id] = $link; -- cgit v1.2.3