$conf = new ConfigManager();
$sessionManager = new SessionManager($_SESSION, $conf);
+// LC_MESSAGES isn't defined without php-intl, in this case use LC_COLLATE locale instead.
+if (! defined('LC_MESSAGES')) {
+ define('LC_MESSAGES', LC_COLLATE);
+}
+
// Sniff browser language and set date format accordingly.
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']);
unset($_SESSION['uid']);
unset($_SESSION['ip']);
unset($_SESSION['username']);
- unset($_SESSION['privateonly']);
+ unset($_SESSION['visibility']);
unset($_SESSION['untaggedonly']);
}
setcookie('shaarli_staySignedIn', FALSE, 0, WEB_PATH);
else
{
ban_loginFailed($conf);
- $redir = '&username='. $_POST['login'];
+ $redir = '&username='. urlencode($_POST['login']);
if (isset($_GET['post'])) {
$redir .= '&post=' . urlencode($_GET['post']);
foreach (array('description', 'source', 'title', 'tags') as $param) {
// -------- Tag cloud
if ($targetPage == Router::$PAGE_TAGCLOUD)
{
- $visibility = ! empty($_SESSION['privateonly']) ? 'private' : 'all';
+ $visibility = ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '';
$filteringTags = isset($_GET['searchtags']) ? explode(' ', $_GET['searchtags']) : [];
$tags = $LINKSDB->linksCountPerTag($filteringTags, $visibility);
// -------- Tag list
if ($targetPage == Router::$PAGE_TAGLIST)
{
- $visibility = ! empty($_SESSION['privateonly']) ? 'private' : 'all';
+ $visibility = ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '';
$filteringTags = isset($_GET['searchtags']) ? explode(' ', $_GET['searchtags']) : [];
$tags = $LINKSDB->linksCountPerTag($filteringTags, $visibility);
foreach ($filteringTags as $tag) {
}
// -------- User wants to see only private links (toggle)
- if (isset($_GET['privateonly'])) {
- if (empty($_SESSION['privateonly'])) {
- $_SESSION['privateonly'] = 1; // See only private links
- } else {
- unset($_SESSION['privateonly']); // See all links
+ if (isset($_GET['visibility'])) {
+ if ($_GET['visibility'] === 'private') {
+ // Visibility not set or not already private, set private, otherwise reset it
+ if (empty($_SESSION['visibility']) || $_SESSION['visibility'] !== 'private') {
+ // See only private links
+ $_SESSION['visibility'] = 'private';
+ } else {
+ unset($_SESSION['visibility']);
+ }
+ } else if ($_GET['visibility'] === 'public') {
+ if (empty($_SESSION['visibility']) || $_SESSION['visibility'] !== 'public') {
+ // See only public links
+ $_SESSION['visibility'] = 'public';
+ } else {
+ unset($_SESSION['visibility']);
+ }
}
if (! empty($_SERVER['HTTP_REFERER'])) {
- $location = generateLocation($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'], array('privateonly'));
+ $location = generateLocation($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'], array('visibility'));
} else {
$location = '?';
}
// 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) {
// Short timeout to keep the application responsive
- list($headers, $content) = get_http_response($url, 4);
- if (strpos($headers[0], '200 OK') !== false) {
- // Retrieve charset.
- $charset = get_charset($headers, $content);
- // Extract title.
- $title = html_extract_title($content);
- // Re-encode title in utf-8 if necessary.
- if (! empty($title) && strtolower($charset) != 'utf-8') {
- $title = mb_convert_encoding($title, 'utf-8', $charset);
- }
+ // The callback will fill $charset and $title with data from the downloaded page.
+ get_http_response($url, 25, 4194304, get_curl_download_callback($charset, $title));
+ if (! empty($title) && strtolower($charset) != 'utf-8') {
+ $title = mb_convert_encoding($title, 'utf-8', $charset);
}
}
}
} else {
// Filter links according search parameters.
- $visibility = ! empty($_SESSION['privateonly']) ? 'private' : 'all';
+ $visibility = ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '';
$request = [
'searchtags' => $searchtags,
'searchterm' => $searchterm,
'result_count' => count($linksToDisplay),
'search_term' => $searchterm,
'search_tags' => $searchtags,
- 'visibility' => ! empty($_SESSION['privateonly']) ? 'private' : '',
+ 'visibility' => ! empty($_SESSION['visibility']) ? $_SESSION['visibility'] : '',
'redirector' => $conf->get('redirector.url'), // Optional redirector URL.
'links' => $linkDisp,
);