66ad0634e2
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@326 b3834d28-1941-0410-a4f8-b48e95affb8f
329 lines
11 KiB
PHP
329 lines
11 KiB
PHP
<?php
|
|
|
|
/* Service creation: only useful services are created */
|
|
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
|
|
$tagservice =& ServiceFactory::getServiceInstance('TagService');
|
|
$cdservice =& ServiceFactory::getServiceInstance('CommonDescriptionService');
|
|
|
|
|
|
$pageName = isset($pageName)?$pageName:"";
|
|
$user = isset($user)?$user:"";
|
|
$currenttag = isset($currenttag)?$currenttag:"";
|
|
|
|
|
|
$this->includeTemplate($GLOBALS['top_include']);
|
|
|
|
include('search.inc.php');
|
|
?>
|
|
|
|
<?php if($pageName == PAGE_INDEX):?>
|
|
<p id="welcome"><?php echo $GLOBALS['welcomeMessage'];?></p>
|
|
<?php endif?>
|
|
|
|
|
|
<?php if($GLOBALS['enableAdminColors']!=false && isset($userid) && $userservice->isAdmin($userid) && $pageName != PAGE_WATCHLIST) : ?>
|
|
<div style="width:70%;text-align:center;">
|
|
<img src="<?php echo ROOT ?>images/logo_24.gif" width="12px"/> <?php echo T_('Bookmarks on this page are managed by an admin user.'); ?><img src="<?php echo ROOT ?>images/logo_24.gif" width="12px"/>
|
|
</div>
|
|
<?php endif?>
|
|
|
|
|
|
<?php
|
|
// common tag description
|
|
if(($currenttag!= '' && $GLOBALS['enableCommonTagDescription'])
|
|
|| (isset($hash) && $GLOBALS['enableCommonBookmarkDescription'])):?>
|
|
|
|
|
|
<p class="commondescription"><?php
|
|
$cDescription = '';
|
|
if($currenttag!= '' && $cdservice->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'])). "<br/>";
|
|
echo nl2br(filter($cDescription['cdDescription'])). "<br/>";
|
|
}
|
|
|
|
//common tag description edit
|
|
if($userservice->isLoggedOn()) {
|
|
if($currenttag!= '' && ($GLOBALS['enableCommonTagDescriptionEditedByAll'] || $currentUser->isAdmin())) {
|
|
echo ' <a href="'. createURL('tagcommondescriptionedit', $currenttag).'" title="'.T_('Edit the common description of this tag').'">';
|
|
echo !is_array($cDescription) || strlen($cDescription['cdDescription'])==0?T_('Edit the common description of this tag'):'';
|
|
echo ' <img src="'.ROOT.'images/b_edit.png" /></a>';
|
|
} elseif(isset($hash)) {
|
|
echo ' (<a href="'.createURL('bookmarkcommondescriptionedit', $hash).'" title="'.T_('Edit the common description of this bookmark').'">';
|
|
echo T_('Edit the common description of this bookmark').'</a>)';
|
|
}
|
|
}
|
|
?></p>
|
|
<?php endif ?>
|
|
|
|
|
|
<?php
|
|
/* personal tag description */
|
|
if($currenttag!= '' && $user!='') {
|
|
$userObject = $userservice->getUserByUsername($user);
|
|
if($tagservice->getDescription($currenttag, $userObject['uId'])) { ?>
|
|
|
|
<p class="commondescription"><?php
|
|
$pDescription = $tagservice->getDescription($currenttag, $userObject['uId']);
|
|
echo nl2br(filter($pDescription['tDescription']));
|
|
|
|
//personal tag description edit
|
|
if($userservice->isLoggedOn()) {
|
|
if($currenttag!= '') {
|
|
echo ' <a href="'. createURL('tagedit', $currenttag).'" title="'.T_('Edit your personal description of this tag').'" >';
|
|
echo strlen($pDescription['tDescription'])==0?T_('Edit your personal description of this tag'):'';
|
|
echo ' <img src="'.ROOT.'images/b_edit.png" /></a>';
|
|
}
|
|
}
|
|
?></p>
|
|
|
|
<?php
|
|
}
|
|
}
|
|
?>
|
|
|
|
<?php if (count($bookmarks) > 0) { ?>
|
|
<script type="text/javascript">
|
|
window.onload = playerLoad;
|
|
</script>
|
|
|
|
<p id="sort"><?php echo $total.' '.T_("bookmark(s)"); ?> - <?php echo T_("Sort by:"); ?>
|
|
<?php
|
|
switch(getSortOrder()) {
|
|
case 'date_asc':
|
|
$dateArrow = ' ↑';
|
|
$dateSort = 'date_desc';
|
|
$titleSort = 'title_asc';
|
|
break;
|
|
case 'title_asc':
|
|
$titleArrow = ' ↑';
|
|
$dateSort = 'date_desc';
|
|
$titleSort = 'title_desc';
|
|
break;
|
|
case 'title_desc':
|
|
$titleArrow = ' ↓';
|
|
$dateSort = 'date_desc';
|
|
$titleSort = 'title_asc';
|
|
break;
|
|
case 'date_desc':
|
|
default:
|
|
$dateArrow = ' ↓';
|
|
$dateSort = 'date_asc';
|
|
$titleSort = 'title_asc';
|
|
break;
|
|
}
|
|
?> <a href="?sort=<?php echo $dateSort ?>"><?php echo T_("Date").$dateArrow; ?></a><span>
|
|
/ </span> <a href="?sort=<?php echo $titleSort ?>"><?php echo T_("Title").$titleArrow; ?></a><span>
|
|
/ </span> <?php
|
|
if($currenttag!= '') {
|
|
if($user!= '') {
|
|
echo ' - ';
|
|
echo '<a href="'. createURL('tags', $currenttag) .'">';
|
|
echo T_('Bookmarks from other users for this tag').'</a>';
|
|
//echo T_(' for these tags');
|
|
} else if($userservice->isLoggedOn()){
|
|
echo ' - ';
|
|
echo '<a href="'. createURL('bookmarks', $currentUser->getUsername().'/'.$currenttag) .'">';
|
|
echo T_('Only your bookmarks for this tag').'</a>';
|
|
//echo T_(' for these tags');
|
|
}
|
|
}
|
|
?></p>
|
|
|
|
|
|
|
|
<ol <?php echo ($start > 0 ? ' start="'. ++$start .'"' : ''); ?>
|
|
id="bookmarks">
|
|
|
|
<?php
|
|
foreach(array_keys($bookmarks) as $key) {
|
|
$row =& $bookmarks[$key];
|
|
switch ($row['bStatus']) {
|
|
case 0:
|
|
$access = '';
|
|
break;
|
|
case 1:
|
|
$access = ' shared';
|
|
break;
|
|
case 2:
|
|
$access = ' private';
|
|
break;
|
|
}
|
|
|
|
$cats = '';
|
|
$tagsForCopy = '';
|
|
$tags = $row['tags'];
|
|
foreach(array_keys($tags) as $key) {
|
|
|
|
$tag =& $tags[$key];
|
|
$cats .= '<a href="'. sprintf($cat_url, filter($row['username'], 'url'), filter($tag, 'url')) .'" rel="tag">'. filter($tag) .'</a>, ';
|
|
$tagsForCopy.= $tag.',';
|
|
}
|
|
$cats = substr($cats, 0, -2);
|
|
if ($cats != '') {
|
|
$cats = ' '.T_('Tags:').' '. $cats;
|
|
}
|
|
|
|
// Edit and delete links
|
|
$edit = '';
|
|
if ($bookmarkservice->editAllowed($row['bId'])) {
|
|
$edit = ' - <a href="'. createURL('edit', $row['bId']) .'">'. T_('Edit') .'</a><script type="text/javascript">document.write(" - <a href=\"#\" onclick=\"deleteBookmark(this, '. $row['bId'] .'); return false;\">'. T_('Delete') .'<\/a>");</script>';
|
|
}
|
|
|
|
// Last update
|
|
$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_('you');
|
|
} else {
|
|
$copy.= '<a href="'. createURL('bookmarks', $row['username']) .'">'. $row['username'] .'</a>';
|
|
}
|
|
|
|
// Udders!
|
|
if (!isset($hash)) {
|
|
$others = $bookmarkservice->countOthers($row['bAddress']);
|
|
$ostart = '<a href="'. createURL('history', $row['bHash']) .'">';
|
|
$oend = '</a>';
|
|
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);
|
|
}
|
|
}
|
|
|
|
// Copy link
|
|
if ($userservice->isLoggedOn()
|
|
&& ($currentUser->getId() != $row['uId'])
|
|
&& !$bookmarkservice->bookmarkExists($row['bAddress'], $currentUser->getId())) {
|
|
$copy .= ' - <a href="'. createURL('bookmarks', $currentUser->getUsername() .'?action=add&copyOf='. $row['bId']) .'">'. T_('Copy') .'</a>';
|
|
}
|
|
|
|
// Nofollow option
|
|
$rel = '';
|
|
if ($GLOBALS['nofollow']) {
|
|
$rel = ' rel="nofollow"';
|
|
}
|
|
|
|
$address = filter($row['bAddress']);
|
|
|
|
// Redirection option
|
|
if ($GLOBALS['useredir']) {
|
|
$address = $GLOBALS['url_redir'] . $address;
|
|
}
|
|
|
|
// Admin specific design
|
|
if($userservice->isAdmin($row['uId'])) {
|
|
$adminBgClass = 'class="adminBackground"';
|
|
$adminStar = ' <img src="'. ROOT .'images/logo_24.gif" width="12px" title="'. T_('This bookmark is certified by an admin user.') .'" />';
|
|
} else {
|
|
$adminBgClass = '';
|
|
$adminStar = '';
|
|
}
|
|
|
|
// Private Note (just visible by the owner and his/her contacts)
|
|
if($userservice->isLoggedOn() && ($currentUser->getId() == $row['uId'] || in_array($row['username'], $userservice->getWatchNames($currentUser->getId(), true)))) {
|
|
$privateNoteField = $row['bPrivateNote'];
|
|
} else {
|
|
$privateNoteField = '';
|
|
}
|
|
|
|
// Output
|
|
echo '<li class="xfolkentry'. $access .'" >'."\n";
|
|
if ($GLOBALS['enableWebsiteThumbnails']) {
|
|
$thumbnailHash = md5($address.$GLOBALS['thumbnailsUserId'].$GLOBALS['thumbnailsKey']);
|
|
//echo '<a href="'. $address .'"'. $rel .' ><img class="thumbnail" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />';
|
|
echo '<img class="thumbnail" onclick="window.location.href=\''.$address.'\'" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />';
|
|
}
|
|
|
|
echo '<div '.$adminBgClass.' >';;
|
|
|
|
echo '<div class="link"><a href="'. $address .'"'. $rel .' class="taggedlink" target="_blank">'. filter($row['bTitle']) ."</a>" . $adminStar . "</div>\n";
|
|
if ($row['bDescription'] == '') {
|
|
$bkDescription = '-';
|
|
} else {
|
|
// Improve description display (anchors, links, ...)
|
|
$bkDescription = preg_replace('|\[\/.*?\]|', '', filter($row['bDescription'])); // remove final anchor
|
|
$bkDescription = preg_replace('|\[(.*?)\]|', ' <span class="anchorBookmark">$1</span> » ', $bkDescription); // highlight starting anchor
|
|
$bkDescription = preg_replace('@((http|https|ftp)://.*?)( |\r|$)@', '<a href="$1" rel="nofollow">$1</a>$3', $bkDescription); // make url clickable
|
|
|
|
}
|
|
echo '<div class="description">'. nl2br($bkDescription) ."</div>\n";
|
|
//if(!isset($hash)) {
|
|
echo '<div class="address">'.shortenString($address).'</div>';
|
|
//}
|
|
|
|
echo '<div class="meta">'. $cats . $copy . $edit . $update ."</div>\n";
|
|
echo $privateNoteField!=''?'<div class="privateNote" title="'. T_('Private Note on this bookmark') .'">'.$privateNoteField."</div>\n":'';
|
|
echo '</div>';
|
|
|
|
echo "</li>\n";
|
|
}
|
|
?>
|
|
|
|
</ol>
|
|
|
|
<?php
|
|
// PAGINATION
|
|
|
|
// Ordering
|
|
$sortOrder = '';
|
|
if (GET_SORT != '') {
|
|
$sortOrder = 'sort='. GET_SORT;
|
|
}
|
|
|
|
$sortAmp = (($sortOrder) ? '&'. $sortOrder : '');
|
|
$sortQue = (($sortOrder) ? '?'. $sortOrder : '');
|
|
|
|
// Previous
|
|
$perpage = getPerPageCount();
|
|
if (!$page || $page < 2) {
|
|
$page = 1;
|
|
$start = 0;
|
|
$bfirst = '<span class="disable">'. T_('First') .'</span>';
|
|
$bprev = '<span class="disable">'. T_('Previous') .'</span>';
|
|
} else {
|
|
$prev = $page - 1;
|
|
$prev = 'page='. $prev;
|
|
$start = ($page - 1) * $perpage;
|
|
$bfirst= '<a href="'. sprintf($nav_url, $user, $currenttag, '') . $sortQue .'">'. T_('First') .'</a>';
|
|
$bprev = '<a href="'. sprintf($nav_url, $user, $currenttag, '?') . $prev . $sortAmp .'">'. T_('Previous') .'</a>';
|
|
}
|
|
|
|
// Next
|
|
$next = $page + 1;
|
|
$totalpages = ceil($total / $perpage);
|
|
if (count($bookmarks) < $perpage || $perpage * $page == $total) {
|
|
$bnext = '<span class="disable">'. T_('Next') .'</span>';
|
|
$blast = '<span class="disable">'. T_('Last') ."</span>\n";
|
|
} else {
|
|
$bnext = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $next . $sortAmp .'">'. T_('Next') .'</a>';
|
|
$blast = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $totalpages . $sortAmp .'">'. T_('Last') ."</a>\n";
|
|
}
|
|
|
|
// RSS
|
|
$brss = '';
|
|
$size = count($rsschannels);
|
|
for ($i = 0; $i < $size; $i++) {
|
|
$brss = '<a style="background:#FFFFFF" href="'. $rsschannels[$i][1] .'" title="'. $rsschannels[$i][0] .'"><img src="'. ROOT .'images/rss.gif" width="16" height="16" alt="'. $rsschannels[$i][0] .'" /></a>';
|
|
}
|
|
|
|
echo '<p class="paging">'. $bfirst .'<span> / </span>'. $bprev .'<span> / </span>'. $bnext .'<span> / </span>'. $blast .'<span> / </span>'. sprintf(T_('Page %d of %d'), $page, $totalpages) ." ". $brss ." </p>\n";
|
|
|
|
|
|
|
|
|
|
} else {
|
|
echo '<p class="error">'.T_('No bookmarks available').'</p>';
|
|
}
|
|
$this->includeTemplate('sidebar.tpl');
|
|
$this->includeTemplate($GLOBALS['bottom_include']);
|
|
?>
|