From 3385af123f6b4dfc59aeaa69f180381307b64368 Mon Sep 17 00:00:00 2001 From: Lionel Martin Date: Mon, 20 May 2013 19:00:28 +0200 Subject: [PATCH 1/8] Added json_encode implementation for php<5.2 --- index.php | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index 1d13e55..eaa7c53 100644 --- a/index.php +++ b/index.php @@ -2122,7 +2122,42 @@ function isTZvalid($continent,$city) } return false; } - +if (!function_exists('json_encode')) { + function json_encode($data) { + switch ($type = gettype($data)) { + case 'NULL': + return 'null'; + case 'boolean': + return ($data ? 'true' : 'false'); + case 'integer': + case 'double': + case 'float': + return $data; + case 'string': + return '"' . addslashes($data) . '"'; + case 'object': + $data = get_object_vars($data); + case 'array': + $output_index_count = 0; + $output_indexed = array(); + $output_associative = array(); + foreach ($data as $key => $value) { + $output_indexed[] = json_encode($value); + $output_associative[] = json_encode($key) . ':' . json_encode($value); + if ($output_index_count !== NULL && $output_index_count++ !== $key) { + $output_index_count = NULL; + } + } + if ($output_index_count !== NULL) { + return '[' . implode(',', $output_indexed) . ']'; + } else { + return '{' . implode(',', $output_associative) . '}'; + } + default: + return ''; // Not supported + } + } +} // Webservices (for use with jQuery/jQueryUI) // eg. index.php?ws=tags&term=minecr @@ -2419,4 +2454,4 @@ if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=d if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'ws=')) { processWS(); exit; } // Webservices (for jQuery/jQueryUI) if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['config']['LINKS_PER_PAGE']; renderPage(); -?> \ No newline at end of file +?> From fbd9e52716d2309437dd39760b45d6fa0026cf71 Mon Sep 17 00:00:00 2001 From: BoboTiG Date: Fri, 26 Jul 2013 08:57:19 +0200 Subject: [PATCH 2/8] RSS/Atom: add a parameter to print only the N last links --- index.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/index.php b/index.php index 1d13e55..553c2c9 100644 --- a/index.php +++ b/index.php @@ -876,7 +876,7 @@ class linkdb implements Iterator, Countable, ArrayAccess } // ------------------------------------------------------------------------------------------ -// Ouput the last 50 links in RSS 2.0 format. +// Ouput the last N links in RSS 2.0 format. function showRSS() { header('Content-Type: application/rss+xml; charset=utf-8'); @@ -898,6 +898,7 @@ function showRSS() if (!empty($_GET['searchterm'])) $linksToDisplay = $LINKSDB->filterFulltext($_GET['searchterm']); elseif (!empty($_GET['searchtags'])) $linksToDisplay = $LINKSDB->filterTags(trim($_GET['searchtags'])); else $linksToDisplay = $LINKSDB; + $nblinksToDisplay = !empty($_GET['nb']) ? max($_GET['nb'] + 0, 1) : 50; $pageaddr=htmlspecialchars(indexUrl()); echo ''; @@ -912,7 +913,7 @@ function showRSS() } $i=0; $keys=array(); foreach($linksToDisplay as $key=>$value) { $keys[]=$key; } // No, I can't use array_keys(). - while ($i<50 && $ifilterFulltext($_GET['searchterm']); elseif (!empty($_GET['searchtags'])) $linksToDisplay = $LINKSDB->filterTags(trim($_GET['searchtags'])); else $linksToDisplay = $LINKSDB; + $nblinksToDisplay = !empty($_GET['nb']) ? max($_GET['nb'] + 0, 1) : 50; $pageaddr=htmlspecialchars(indexUrl()); $latestDate = ''; $entries=''; $i=0; $keys=array(); foreach($linksToDisplay as $key=>$value) { $keys[]=$key; } // No, I can't use array_keys(). - while ($i<50 && $i \ No newline at end of file +?> From ff63b7d111e4074d96bcc3a824202e7847b29830 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Fri, 23 Aug 2013 17:02:15 +0200 Subject: [PATCH 3/8] Corrected error message for lack of write access in ./data --- index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index d88f471..e6d607e 100644 --- a/index.php +++ b/index.php @@ -89,7 +89,7 @@ if (!is_dir($GLOBALS['config']['DATADIR'])) { mkdir($GLOBALS['config']['DATADIR' if (!is_dir('tmp')) { mkdir('tmp',0705); chmod('tmp',0705); } // For RainTPL temporary files. if (!is_file($GLOBALS['config']['DATADIR'].'/.htaccess')) { file_put_contents($GLOBALS['config']['DATADIR'].'/.htaccess',"Allow from none\nDeny from all\n"); } // Protect data files. // Second check to see if Shaarli can write in its directory, because on some hosts is_writable() is not reliable. -if (!is_file($GLOBALS['config']['DATADIR'].'/.htaccess')) die('
ERROR: Shaarli does not have the right to write in its own directory ('.realpath(dirname(__FILE__)).').
'); +if (!is_file($GLOBALS['config']['DATADIR'].'/.htaccess')) die('
ERROR: Shaarli does not have the right to write in its data directory ('.realpath($GLOBALS['config']['DATADIR']).').
'); if ($GLOBALS['config']['ENABLE_LOCALCACHE']) { if (!is_dir($GLOBALS['config']['CACHEDIR'])) { mkdir($GLOBALS['config']['CACHEDIR'],0705); chmod($GLOBALS['config']['CACHEDIR'],0705); } @@ -2440,4 +2440,4 @@ if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=d if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'ws=')) { processWS(); exit; } // Webservices (for jQuery/jQueryUI) if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['config']['LINKS_PER_PAGE']; renderPage(); -?> \ No newline at end of file +?> From f0075b1743ef2ca1f0afcb41428cd40c2d2bf4f8 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Fri, 23 Aug 2013 17:37:59 +0200 Subject: [PATCH 4/8] Smaller logo file Better PNG compression of logo file, as produced by Page Speed. --- images/logo.png | Bin 6253 -> 5456 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/logo.png b/images/logo.png index 20989288e96563477a0ca9e419b0c0410a6d8824..f8b0c94f24c0924d453592686c2a8d7170acc99b 100644 GIT binary patch literal 5456 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 literal 6253 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 Xb(FS#c)&eY00000NkvXXu0mjfkajos From 03545ef69170ab4aeebd77be41c9edbd28324cd5 Mon Sep 17 00:00:00 2001 From: lehollandaisvolant Date: Tue, 3 Sep 2013 15:55:13 +0200 Subject: [PATCH 5/8] =?UTF-8?q?Ajout=20d=E2=80=99un=20UA=20lors=20de=20la?= =?UTF-8?q?=20r=C3=A9cup=C3=A9ration=20d=E2=80=99une=20page=20externe=20(c?= =?UTF-8?q?ertains=20site=20veulent=20un=20UA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index d88f471..2154c06 100644 --- a/index.php +++ b/index.php @@ -566,7 +566,7 @@ function getHTTP($url,$timeout=30) { try { - $options = array('http'=>array('method'=>'GET','timeout' => $timeout)); // Force network timeout + $options = array('http'=>array('method'=>'GET','timeout' => $timeout, 'user_agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0')); // Force network timeout $context = stream_context_create($options); $data=file_get_contents($url,false,$context,-1, 4000000); // We download at most 4 Mb from source. if (!$data) { return array('HTTP Error',array(),''); } @@ -2440,4 +2440,4 @@ if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=d if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'ws=')) { processWS(); exit; } // Webservices (for jQuery/jQueryUI) if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['config']['LINKS_PER_PAGE']; renderPage(); -?> \ No newline at end of file +?> From 3057373a250648a081107eb3eab530b628a576f1 Mon Sep 17 00:00:00 2001 From: Bronco Date: Mon, 16 Sep 2013 10:32:02 +0200 Subject: [PATCH 6/8] Added the possibility to put a description in the bookmarklet's URL --- index.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index d88f471..04288ac 100644 --- a/index.php +++ b/index.php @@ -1538,7 +1538,8 @@ function renderPage() $link_is_new = true; // This is a new link $linkdate = strval(date('Ymd_His')); $title = (empty($_GET['title']) ? '' : $_GET['title'] ); // Get title if it was provided in URL (by the bookmarklet). - $description=''; $tags=''; $private=0; + $description = (empty($_GET['description']) ? '' : $_GET['description'] )."\n"; // Get description if it was provided in URL (by the bookmarklet). [Bronco added that] + $tags=''; $private=0; if (($url!='') && parse_url($url,PHP_URL_SCHEME)=='') $url = 'http://'.$url; // If this is an HTTP link, we try go get the page to extact the title (otherwise we will to straight to the edit form.) if (empty($title) && parse_url($url,PHP_URL_SCHEME)=='http') @@ -2440,4 +2441,4 @@ if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=d if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'ws=')) { processWS(); exit; } // Webservices (for jQuery/jQueryUI) if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['config']['LINKS_PER_PAGE']; renderPage(); -?> \ No newline at end of file +?> From fc93ae1d1a661ff33d1f1ed1100ae09277a77456 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sat, 21 Sep 2013 18:15:41 +0200 Subject: [PATCH 7/8] Import NETSCAPE-Bookmark compatible milliseconds NETSCAPE-Bookmark sometimes contains dates as milliseconds instead of seconds. For instance, this is the case of the files gererated for Google +1s by Google Takeout. This patch make these files compatible. --- index.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/index.php b/index.php index d88f471..b65bfb7 100644 --- a/index.php +++ b/index.php @@ -1695,7 +1695,11 @@ function importFile() { $attr=$m[1]; $value=$m[2]; if ($attr=='HREF') $link['url']=html_entity_decode($value,ENT_QUOTES,'UTF-8'); - elseif ($attr=='ADD_DATE') $raw_add_date=intval($value); + elseif ($attr=='ADD_DATE') + { + $raw_add_date=intval($value); + if ($raw_add_date>30000000000) $raw_add_date/=1000; //If larger than year 2920, then was likely stored in milliseconds instead of seconds + } elseif ($attr=='PRIVATE') $link['private']=($value=='0'?0:1); elseif ($attr=='TAGS') $link['tags']=html_entity_decode(str_replace(',',' ',$value),ENT_QUOTES,'UTF-8'); } From 3fac0a52577ac0d1ac0a78fde5f5dba154a70e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20SAUVAGE?= Date: Tue, 24 Sep 2013 11:17:22 +0200 Subject: [PATCH 8/8] Added tags+private in shaarli URL Manually merged pull request https://github.com/sebsauvage/Shaarli/pull/99 --- index.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index 9446c66..327109f 100644 --- a/index.php +++ b/index.php @@ -1541,7 +1541,8 @@ function renderPage() $linkdate = strval(date('Ymd_His')); $title = (empty($_GET['title']) ? '' : $_GET['title'] ); // Get title if it was provided in URL (by the bookmarklet). $description = (empty($_GET['description']) ? '' : $_GET['description'] )."\n"; // Get description if it was provided in URL (by the bookmarklet). [Bronco added that] - $tags=''; $private=0; + $tags = (empty($_GET['tags']) ? '' : $_GET['tags'] ); // Get tags if it was provided in URL + $private = (!empty($_GET['private']) && $_GET['private'] === "1" ? 1 : 0); // Get private if it was provided in URL if (($url!='') && parse_url($url,PHP_URL_SCHEME)=='') $url = 'http://'.$url; // If this is an HTTP link, we try go get the page to extact the title (otherwise we will to straight to the edit form.) if (empty($title) && parse_url($url,PHP_URL_SCHEME)=='http') @@ -1573,7 +1574,7 @@ function renderPage() } } if ($url=='') $url='?'.smallHash($linkdate); // In case of empty URL, this is just a text (with a link that point to itself) - $link = array('linkdate'=>$linkdate,'title'=>$title,'url'=>$url,'description'=>$description,'tags'=>$tags,'private'=>0); + $link = array('linkdate'=>$linkdate,'title'=>$title,'url'=>$url,'description'=>$description,'tags'=>$tags,'private'=>$private); } $PAGE = new pageBuilder;