X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=index.php;h=d9692927ca292f41a43323ab6713b732b633a7df;hb=05f41b062a76238545ace056fc1cab9acd1deb1a;hp=01dae52b3aa3ffd505d6f5b29b3ce96bd9382537;hpb=76ec20af1637ea1858ae9f38e42018cc33232754;p=github%2Fshaarli%2FShaarli.git
diff --git a/index.php b/index.php
index 01dae52b..d9692927 100644
--- a/index.php
+++ b/index.php
@@ -1,5 +1,5 @@
savedb(); // save to disk
- pubsubhub();
invalidateCaches();
echo '';
exit;
@@ -1071,6 +1070,7 @@ HTML;
if ($link['title']=='') $link['title']=$link['url']; // If title is empty, use the URL as title.
$LINKSDB[$linkdate] = $link;
$LINKSDB->savedb(); // save to disk
+ pubsubhub();
invalidateCaches();
// If we are called from the bookmarklet, we must close the popup:
@@ -1406,6 +1406,7 @@ function templateLinkList()
$i = ($page-1)*$_SESSION['LINKS_PER_PAGE']; // Start index.
$end = $i+$_SESSION['LINKS_PER_PAGE'];
$redir = empty($GLOBALS['redirector']) ? '' : $GLOBALS['redirector']; // optional redirector URL
+ $token = ''; if (isLoggedIn()) $token=getToken();
while ($i<$end && $i';
+ if (isLoggedIn())
+ {
+ $actions=' ';
+ $actions.=' ';
+ }
$tags='';
if ($link['tags']!='')
{
@@ -1509,13 +1515,21 @@ function thumbnail($url,$href=false)
if (!$GLOBALS['config']['ENABLE_LOCALCACHE']) return ''; // If local cache is disabled, no thumbnails for services which require the use a local cache.
- if ($domain=='flickr.com' || endsWith($domain,'.flickr.com') || $domain=='vimeo.com')
+ if ($domain=='flickr.com' || endsWith($domain,'.flickr.com')
+ || $domain=='vimeo.com'
+ || $domain=='ted.com' || endsWith($domain,'.ted.com')
+ )
{
if ($domain=='vimeo.com')
{ // Make sure this vimeo url points to a video (/xxx... where xxx is numeric)
$path = parse_url($url,PHP_URL_PATH);
if (!preg_match('!/\d+.+?!',$path)) return ''; // This is not a single video URL.
}
+ if ($domain=='ted.com' || endsWith($domain,'.ted.com'))
+ { // Make sure this TED url points to a video (/talks/...)
+ $path = parse_url($url,PHP_URL_PATH);
+ if ("/talks/" !== substr($path,0,7)) return ''; // This is not a single video URL.
+ }
$sign = hash_hmac('sha256', $url, $GLOBALS['salt']); // We use the salt to sign data (it's random, secret, and specific to each installation)
return '';
}
@@ -1875,6 +1889,35 @@ function genThumbnail()
}
}
}
+
+ if ($domain=='ted.com' || endsWith($domain,'.ted.com'))
+ {
+ // The thumbnail for TED talks is located in the tag on that page
+ // http://www.ted.com/talks/mikko_hypponen_fighting_viruses_defending_the_net.html
+ //
+ list($httpstatus,$headers,$data) = getHTTP($url,5);
+ if (strpos($httpstatus,'200 OK')!==false)
+ {
+ // Extract the link to the thumbnail
+ preg_match('!link rel="image_src" href="(http://images.ted.com/images/ted/.+_\d+x\d+\.jpg)[^s]!',$data,$matches);
+ if (!empty($matches[1]))
+ { // Let's download the image.
+ $imageurl=$matches[1];
+ list($httpstatus,$headers,$data) = getHTTP($imageurl,20); // No control on image size, so wait long enough.
+ if (strpos($httpstatus,'200 OK')!==false)
+ {
+ $filepath=$GLOBALS['config']['CACHEDIR'].'/'.$thumbname;
+ file_put_contents($filepath,$data); // Save image to cache.
+ if (resizeImage($filepath))
+ {
+ header('Content-Type: image/jpeg');
+ echo file_get_contents($filepath);
+ return;
+ }
+ }
+ }
+ }
+ }
// For all other domains, we try to download the image and make a thumbnail.
list($httpstatus,$headers,$data) = getHTTP($url,30); // We allow 30 seconds max to download (and downloads are limited to 4 Mb)
@@ -1944,4 +1987,4 @@ if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['c
if (startswith($_SERVER["QUERY_STRING"],'do=rss')) { showRSS(); exit; }
if (startswith($_SERVER["QUERY_STRING"],'do=atom')) { showATOM(); exit; }
renderPage();
-?>
\ No newline at end of file
+?>