diff options
Diffstat (limited to 'data')
-rw-r--r-- | data/config.default.php | 18 | ||||
-rw-r--r-- | data/templates/default/bookmarks.tpl.php | 99 | ||||
-rw-r--r-- | data/templates/default/top.inc.php | 1 |
3 files changed, 115 insertions, 3 deletions
diff --git a/data/config.default.php b/data/config.default.php index bb9eddb..73b098b 100644 --- a/data/config.default.php +++ b/data/config.default.php @@ -778,6 +778,24 @@ $unittestUrl = null; */ $allowUnittestMode = false; +/*************************************************** + * Caching support + * + * Use the following configuration if you want to provide a link + * to a cached copy of your bookmarks. + * + * Please note that these feature just provide the link if a cached + * copy exists. + * + * You should download SemanticScuttle bookmarks using a tool like + * https://git.fluxo.info/?p=httruta.git + */ + +/** + * Set to the base public URL of you cache folder. + */ +$cacheUrl = null; + /** * bookmark-bot email address mapping * Input address as key, user email as target diff --git a/data/templates/default/bookmarks.tpl.php b/data/templates/default/bookmarks.tpl.php index 2a3d169..20b5336 100644 --- a/data/templates/default/bookmarks.tpl.php +++ b/data/templates/default/bookmarks.tpl.php @@ -112,6 +112,7 @@ if($userservice->isLoggedOn()) { window.onload = playerLoad; </script> +<?php if (count($bookmarks) > 1) { ?> <p id="sort"><?php echo $total.' '.T_("bookmark(s)"); ?> - <?php echo T_("Sort by:"); ?> <?php $titleArrow = ''; @@ -162,6 +163,7 @@ default: <a href="?sort=<?php echo $votingSort ?>"><?php echo T_("Voting").$votingArrow; ?></a> <span>/</span> <?php } ?> +<?php } ?> <?php if ($currenttag!= '') { @@ -275,6 +277,12 @@ if ($currenttag!= '') { break; } + // Add username in case bookmark was loaded using getBookmark() + if (!isset($row['username']) && isset($row['uId'])) { + $userinfo = $userservice->getObjectUser($row['uId']); + $row['username'] = $userinfo->username; + } + $cats = ''; $tagsForCopy = ''; $tags = $row['tags']; @@ -310,12 +318,13 @@ if ($currenttag!= '') { $update = ' <small title="'. T_('Last update') .'">('. date($GLOBALS['shortdate'], strtotime($row['bModified'])). ') </small>'; // User attribution - $copy = ' ' . T_('by') . ' '; if ($userservice->isLoggedOn() && $currentUser->getUsername() == $row['username'] ) { + $copy = ' ' . T_('by') . ' '; $copy .= T_('you'); - } else { + } else if (isset($row['username'])) { + $copy = ' ' . T_('by') . ' '; $copy .= '<a href="' . createURL('bookmarks', $row['username']) . '">' . SemanticScuttle_Model_UserArray::getName($row) . '</a>'; @@ -337,6 +346,86 @@ if ($currenttag!= '') { } } + // Local cache + $cacheInfo = $GLOBALS['dir_cache'] .'/urls'; + $cacheLink = null; + if ($GLOBALS['cacheUrl'] != null) { + // Hashing discussion at http://linuxprocess.free.fr/MHonArc/Oct-2005/msg00016.html + $assetHash = sha1($row['bAddress'] . "\n"); + $assetHash = substr($assetHash, 0, 2) . '/' . substr($assetHash, 2, 2) . '/' . $assetHash; + $assetBase = $GLOBALS['cacheUrl'] . '/' . $assetHash; + $assetLink = $assetBase; + $assetPdf = $assetBase.'/screenshot.pdf'; + $assetPng = $assetBase .'/screenshot.png'; + + // Handle PDF links + $assetFile = basename(parse_url($row['bAddress'])['path']); + $assetExt = strtolower(pathinfo($assetFile, PATHINFO_EXTENSION)); + if ($assetExt == 'pdf') { + $assetLink = $GLOBALS['cacheUrl'] . '/' . $assetHash . '/' . $assetFile; + } + + // Check if the link exists + if (file_exists($cacheInfo .'/'. $assetHash .'/hascache')) { + $cacheLink = "| <a href=\"$assetLink\">Cache</a>"; + + if (file_exists($cacheInfo .'/'. $assetHash .'/haspdf')) { + $cacheLink .= " | <a href=\"$assetPdf\">PDF</a>"; + } + + if (file_exists($cacheInfo .'/'. $assetHash .'/haspng')) { + $cacheLink .= " | <a href=\"$assetPng\">PNG</a>"; + } + } + else if ($fp = curl_init($assetBase)) { + curl_setopt($fp, CURLOPT_NOBODY, true); + curl_exec($fp); + + $retcode = curl_getinfo($fp, CURLINFO_HTTP_CODE); + + if ($retcode != 404) { + if (!file_exists($cacheInfo .'/'. $assetHash)) { + mkdir($cacheInfo .'/'. $assetHash, 0755, true); + } + + touch($cacheInfo .'/'. $assetHash .'/hascache'); + $cacheLink = "| <a href=\"$assetLink\">Cache</a>"; + + // Check if PDF is available + if ($fp = curl_init($assetPdf)) { + curl_setopt($fp, CURLOPT_NOBODY, true); + curl_exec($fp); + + $retcode = curl_getinfo($fp, CURLINFO_HTTP_CODE); + + if ($retcode != 404) { + touch($cacheInfo .'/'. $assetHash .'/haspdf'); + $cacheLink .= " | <a href=\"$assetPdf\">PDF</a>"; + } + + curl_close($fp); + } + + // Check if PNG is available + if ($fp = curl_init($assetPng)) { + curl_setopt($fp, CURLOPT_NOBODY, true); + curl_exec($fp); + + $retcode = curl_getinfo($fp, CURLINFO_HTTP_CODE); + + if ($retcode != 404) { + touch($cacheInfo .'/'. $assetHash .'/haspng'); + $cacheLink .= " | <a href=\"$assetPng\">PNG</a>"; + } + + curl_close($fp); + } + } + + curl_close($fp); + } + } + // Copy link if ($userservice->isLoggedOn() && ($currentUser->getId() != $row['uId']) @@ -425,6 +514,8 @@ if ($currenttag!= '') { . $copy . "\n" . $edit . "\n" . $update . "\n" + . $cacheLink ."\n" + . ' | <a href="/permalink/'. $row['bId'] . '">Permalink</a>' ."\n" . " </div>\n"; echo $privateNoteField != '' ? ' <div class="privateNote" title="'. T_('Private Note on this bookmark') .'">'.$privateNoteField."</div>\n" @@ -443,8 +534,10 @@ if ($currenttag!= '') { if(getPerPageCount($currentUser)>7) { echo '<p class="backToTop"><a href="#header" title="'.T_('Come back to the top of this page.').'">'.T_('Top of the page').'</a></p>'; } - echo $pagesBanner; // display previous and next links pages + RSS link + if (isset($bookmarks) && count($bookmarks) > 1) { + echo $pagesBanner; // display previous and next links pages + RSS link + } } else { echo '<p class="error">'.T_('No bookmarks available').'</p>'; diff --git a/data/templates/default/top.inc.php b/data/templates/default/top.inc.php index 55be4a7..79cc2e2 100644 --- a/data/templates/default/top.inc.php +++ b/data/templates/default/top.inc.php @@ -3,6 +3,7 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1"> <title><?php echo filter($GLOBALS['sitename'] .(isset($pagetitle) ? ' ยป ' . $pagetitle : '')); ?></title> <link rel="icon" type="image/png" href="<?php echo $theme->resource('icon.png');?>" /> <link rel="stylesheet" type="text/css" href="<?php echo $theme->resource('scuttle.css');?>" /> |