* @author Christian Weiske * @author Eric Dane * @license GPL http://www.gnu.org/licenses/gpl.html * @link http://sourceforge.net/projects/semanticscuttle */ /* Service creation: only useful services are created */ $bookmarkservice = SemanticScuttle_Service_Factory::get('Bookmark'); $tagservice = SemanticScuttle_Service_Factory::get('Tag'); $cdservice = SemanticScuttle_Service_Factory::get('CommonDescription'); $pageName = isset($pageName) ? $pageName : ''; $user = isset($user) ? $user : ''; $currenttag = isset($currenttag) ? $currenttag : ''; $this->includeTemplate($GLOBALS['top_include']); include('search.menu.php'); ?>

isAdmin($userid) && $pageName != PAGE_WATCHLIST) : ?>

getLastTagDescription($currenttag)) { $cDescription = $cdservice->getLastTagDescription($currenttag); echo nl2br(filter($cDescription['cdDescription'])); } elseif(isset($hash) && $cdservice->getLastBookmarkDescription($hash)) { $cDescription = $cdservice->getLastBookmarkDescription($hash); echo nl2br(filter($cDescription['cdTitle'])). "
"; echo nl2br(filter($cDescription['cdDescription'])). "
"; } //common tag description edit if ($userservice->isLoggedOn()) { if ($currenttag != '' && ($GLOBALS['enableCommonTagDescriptionEditedByAll'] || $currentUser->isAdmin() ) ) { echo ' '; echo !is_array($cDescription) || strlen($cDescription['cdDescription'])==0?T_('Edit the common description of this tag'):''; echo ' '; } else if (isset($hash)) { echo ' ('; echo T_('Edit the common description of this bookmark').')'; } } ?>

getUserByUsername($user); if($tagservice->getDescription($currenttag, $userObject['uId'])) { ?>

getDescription($currenttag, $userObject['uId']); echo nl2br(filter($pDescription['tDescription'])); //personal tag description edit if($userservice->isLoggedOn()) { if($currenttag!= '') { echo ' '; echo strlen($pDescription['tDescription'])==0?T_('Edit your personal description of this tag'):''; echo ' '; } } ?>

0) { ?> 1) { ?>

- / / / '; echo T_('Bookmarks from other users for this tag').''; //echo T_(' for these tags'); } else if ($userservice->isLoggedOn()){ echo ' - '; echo ''; echo T_('Only your bookmarks for this tag').''; //echo T_(' for these tags'); } } ?>

'. T_('First') .''; $bprev = ''. T_('Previous') .''; } else { $prev = $page - 1; $prev = 'page='. $prev; $start = ($page - 1) * $perpage; $bfirst= ''. T_('First') .''; $bprev = ''. T_('Previous') .''; } // Next $next = $page + 1; $totalpages = ceil($total / $perpage); if (count($bookmarks) < $perpage || $perpage * $page == $total) { $bnext = ''. T_('Next') .''; $blast = ''. T_('Last') ."\n"; } else { $bnext = ''. T_('Next') .''; $blast = ''. T_('Last') ."\n"; } // RSS $brss = ''; $size = count($rsschannels); for ($i = 0; $i < $size; $i++) { $brss = '' . '' . htmlspecialchars($rsschannels[$i][0]) .'' . ''; } $pagesBanner = '

'. $bfirst .' / '. $bprev .' / '. $bnext .' / '. $blast .' / '. sprintf(T_('Page %d of %d'), $page, $totalpages) ." ". $brss ."

\n"; if (getPerPageCount($currentUser) > 10) { echo $pagesBanner; // display a page banner if too many bookmarks to manage } ?> 0 ? ' start="'. ++$start .'"' : ''); ?> id="bookmarks"> &$row) { $addresses[$row['bId']] = $row['bAddress']; } $otherCounts = $bookmarkservice->countOthers($addresses); if ($userservice->isLoggedOn()) { $existence = $bookmarkservice->bookmarksExist( $addresses, $currentUser->getId() ); } if ($userservice->isLoggedOn()) { $watchedNames = $userservice->getWatchNames( $currentUser->getId(), true ); } else { $watchedNames = null; } foreach ($bookmarks as $key => &$row) { switch ($row['bStatus']) { case 0: $access = ''; break; case 1: $access = ' shared'; break; case 2: $access = ' private'; 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']; foreach ($tags as $tkey => &$tag) { $tagcaturl = sprintf( $cat_url, filter($row['username'], 'url'), filter($tag, 'url') ); $cats .= sprintf( ', ', $tagcaturl, filter($tag) ); $tagsForCopy .= $tag . ','; } $cats = substr($cats, 0, -2); if ($cats != '') { $cats = T_('Tags:') . ' ' . $cats; } // Edit and delete links $edit = ''; if ($bookmarkservice->editAllowed($row)) { $edit = ' - ' . T_('Edit') . '' . ' ' . T_('Delete') .''; } // Last update $update = ' ('. date($GLOBALS['shortdate'], strtotime($row['bModified'])). ') '; // User attribution if ($userservice->isLoggedOn() && $currentUser->getUsername() == $row['username'] ) { $copy = ' ' . T_('by') . ' '; $copy .= T_('you'); } else if (isset($row['username'])) { $copy = ' ' . T_('by') . ' '; $copy .= '' . SemanticScuttle_Model_UserArray::getName($row) . ''; } // others if (!isset($hash)) { $others = $otherCounts[$row['bAddress']]; $ostart = ''; $oend = ''; switch ($others) { case 0: break; case 1: $copy .= sprintf(T_(' and %s1 other%s'), $ostart, $oend); break; default: $copy .= sprintf(T_(' and %2$s%1$s others%3$s'), $others, $ostart, $oend); } } // 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 = "| Cache"; if (file_exists($cacheInfo .'/'. $assetHash .'/haspdf')) { $cacheLink .= " | PDF"; } if (file_exists($cacheInfo .'/'. $assetHash .'/haspng')) { $cacheLink .= " | PNG"; } } 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 = "| Cache"; // 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 .= " | PDF"; } 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 .= " | PNG"; } curl_close($fp); } } curl_close($fp); } } // Copy link if ($userservice->isLoggedOn() && ($currentUser->getId() != $row['uId']) && !$existence[$row['bAddress']] ) { $copy .= ' - ' . T_('Copy') . ''; } // Nofollow option $rel = ''; if ($GLOBALS['nofollow']) { $rel = ' rel="nofollow"'; } $address = $row['bAddress']; $oaddress = $address; // Redirection option if ($GLOBALS['useredir']) { $address = $GLOBALS['url_redir'] . $address; } // Admin specific design if ($userservice->isAdmin($row['username']) && $GLOBALS['enableAdminColors'] ) { $adminBgClass = ' class="adminBackground"'; $adminStar = ' '; } else { $adminBgClass = ''; $adminStar = ''; } // Private Note (just visible by the owner and his/her contacts) if ($watchedNames !== null && ($currentUser->getId() == $row['uId'] || in_array($row['username'], $watchedNames) ) ) { $privateNoteField = $row['bPrivateNote']; } else { $privateNoteField = ''; } if ($GLOBALS['enableVoting'] && $GLOBALS['hideBelowVoting'] !== null && $row['bVoting'] < $GLOBALS['hideBelowVoting'] ) { $access .= ' below-threshold'; } // Output echo '
  • '."\n"; include 'bookmarks-thumbnail.inc.tpl.php'; include 'bookmarks-vote.inc.tpl.php'; echo ' ' . "\n"; echo ' \n"; if ($row['bDescription'] == '') { $bkDescription = $GLOBALS['blankDescription']; } else { // Improve description display (anchors, links, ...) $bkDescription = preg_replace('|\[\/.*?\]|', '', filter($row['bDescription'])); // remove final anchor $bkDescription = preg_replace('|\[(.*?)\]|', ' $1 » ', $bkDescription); // highlight starting anchor $bkDescription = preg_replace('@((http|https|ftp)://.*?)( |\r|$)@', '$1$3', $bkDescription); // make url clickable } echo '
    '. nl2br($bkDescription) ."
    \n"; echo '
    ' . htmlspecialchars(shortenString($oaddress)) . "
    \n"; echo '
    ' . $cats . "\n" . $copy . "\n" . $edit . "\n" . $update . "\n" . $cacheLink ."\n" . ' | Permalink' ."\n" . ' | Wayback Machine' ."\n" . "
    \n"; echo $privateNoteField != '' ? '
    '.$privateNoteField."
    \n" : ''; echo ' '; include 'bookmarks-vote-horizontal.inc.tpl.php'; echo " \n"; echo "
  • \n"; } ?> 7) { echo '

    '.T_('Top of the page').'

    '; } if (isset($bookmarks) && count($bookmarks) > 1) { echo $pagesBanner; // display previous and next links pages + RSS link } } else { echo '

    '.T_('No bookmarks available').'

    '; } $this->includeTemplate('sidebar.tpl'); $this->includeTemplate($GLOBALS['bottom_include']); ?>