diff options
Diffstat (limited to 'data')
| -rw-r--r-- | data/config.default.php | 18 | ||||
| -rw-r--r-- | data/schema/2.sql | 2 | ||||
| -rw-r--r-- | data/templates/default/bookmarks.tpl.php | 81 | 
3 files changed, 100 insertions, 1 deletions
| diff --git a/data/config.default.php b/data/config.default.php index 5e560a7..95df176 100644 --- a/data/config.default.php +++ b/data/config.default.php @@ -778,4 +778,22 @@ $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; +  ?> diff --git a/data/schema/2.sql b/data/schema/2.sql index 6c3bfaf..171e011 100644 --- a/data/schema/2.sql +++ b/data/schema/2.sql @@ -1,4 +1,4 @@ -ALTER TABLE `sc_bookmarks` CHANGE `bDescription` `bDescription` VARCHAR( 1500 ) +ALTER TABLE `sc_bookmarks` CHANGE `bDescription` `bDescription` VARCHAR( 1500 );  CREATE TABLE `sc_tagscache` (     `tcId` int(11) NOT NULL auto_increment,     `tag1` varchar(100) NOT NULL default '', diff --git a/data/templates/default/bookmarks.tpl.php b/data/templates/default/bookmarks.tpl.php index 2a3d169..818eea0 100644 --- a/data/templates/default/bookmarks.tpl.php +++ b/data/templates/default/bookmarks.tpl.php @@ -337,6 +337,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 +505,7 @@ if ($currenttag!= '') {              . $copy . "\n"              . $edit . "\n"              . $update . "\n" +            . $cacheLink ."\n"              . "  </div>\n";  		echo $privateNoteField != ''              ? '    <div class="privateNote" title="'. T_('Private Note on this bookmark') .'">'.$privateNoteField."</div>\n" | 
