Major refactoring: transform user into object, define parameters used into each file, ...

git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@173 b3834d28-1941-0410-a4f8-b48e95affb8f
This commit is contained in:
mensonge 2008-11-25 15:57:29 +00:00
parent 9aafe7551e
commit 15b91c7e66
51 changed files with 2247 additions and 1820 deletions

View File

@ -19,6 +19,8 @@
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$tplVars = array();

View File

@ -19,6 +19,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
require_once('header.inc.php');
/* Service creation: only useful services are created */
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$bookmark2tagservice = & ServiceFactory :: getServiceInstance('Bookmark2Tagservice');
$bookmarkservice = & ServiceFactory :: getServiceInstance('BookmarkService');
@ -28,18 +29,20 @@ $templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
// Header variables
$tplVars['subtitle'] = T_('Manage users');
$tplVars['loadjs'] = true;
$tplVars['sidebar_blocks'] = array('users' );
if ( !$userservice->isLoggedOn() ) {
header('Location: '. createURL('login', ''));
exit();
}
$currentUser = $userservice->getCurrentUser();
$currentUserID = $userservice->getCurrentUserId();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
//$currentUser = $userservice->getCurrentUser();
//$currentUserID = $userservice->getCurrentUserId();
//$currentUsername = $currentUser[$userservice->getFieldName('username')];
$currentObjectUser = $userservice->getCurrentObjectUser();
if ( !$userservice->isAdmin($currentUserID) ) {
header('Location: '. createURL('bookmarks', $currentUsername));
if ( !$currentObjectUser->isAdmin() ) {
header('Location: '. createURL('bookmarks', $currentObjectUser->getUsername()));
exit();
}
@ -66,7 +69,7 @@ if ( $action ) {
}
$templatename = 'userlist.tpl';
$users =& $userservice->getAllUsers();
$users =& $userservice->getObjectUsers();
if ( !is_array($users) ) {
$users = array();

View File

@ -24,8 +24,15 @@ header('Last-Modified: '. gmdate("D, d M Y H:i:s") .' GMT');
header('Cache-Control: no-cache, must-revalidate');
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice = & ServiceFactory :: getServiceInstance('BookmarkService');
$bookmark = intval($_GET['id']);
/* Managing all possible inputs */
isset($_GET['id']) ? define('GET_ID', $_GET['id']): define('GET_ID', '');
$bookmark = intval(GET_ID);
if (!$bookmarkservice->editAllowed($bookmark)) {
$result = T_('You are not allowed to delete this bookmark');
} elseif ($bookmarkservice->deleteBookmark($bookmark)) {

View File

@ -25,6 +25,9 @@ header("Cache-Control: no-cache, must-revalidate");
require_once('header.inc.php');
/* Managing all possible inputs */
isset($_GET['url']) ? define('GET_URL', $_GET['url']): define('GET_URL', '');
function getTitle($url) {
$fd = @fopen($url, 'r');
if ($fd) {
@ -65,6 +68,6 @@ echo '<?xml version="1.0" encoding="utf-8"?>';
getTitle
</method>
<result>
<?php echo getTitle($_GET['url']); ?>
<?php echo getTitle(GET_URL); ?>
</result>
</response>

View File

@ -24,11 +24,18 @@ header("Last-Modified: ". gmdate("D, d M Y H:i:s") ." GMT");
header("Cache-Control: no-cache, must-revalidate");
require_once('header.inc.php');
/* Service creation: only useful services are created */
$userservice = & ServiceFactory :: getServiceInstance('UserService');
if ($userservice->isReserved($_GET['username'])) {
/* Managing all possible inputs */
isset($_GET['username']) ? define('GET_USERNAME', $_GET['username']): define('GET_USERNAME', '');
if ($userservice->isReserved(GET_USERNAME)) {
$result = 'false';
} else {
$result = $userservice->getUserByUsername($_GET['username']) ? 'false' : 'true';
$result = $userservice->getUserByUsername(GET_USERNAME) ? 'false' : 'true';
}
?>
<response>

View File

@ -20,11 +20,15 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
list($url, $user) = explode('/', $_SERVER['PATH_INFO']);
if (!$user) {
header('Location: '. createURL('populartags'));
@ -51,8 +55,8 @@ if (isset($user) && $user != '') {
if (is_int($user)) {
$userid = intval($user);
} else {
if ($userinfo = $userservice->getUserByUsername($user)) {
$userid =& $userinfo[$userservice->getFieldName('primary')];
if ($userinfo = $userservice->getObjectUserByUsername($user)) {
$userid = $userinfo->getId();
} else {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);

View File

@ -1,64 +1,76 @@
<?php
/***************************************************************************
Copyright (C) 2006 - 2007 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2006 - 2007 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice = & ServiceFactory :: getServiceInstance('BookmarkService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$cdservice = & ServiceFactory :: getServiceInstance('CommonDescriptionService');
/* Managing all possible inputs */
isset($_POST['confirm']) ? define('POST_CONFIRM', $_POST['confirm']): define('POST_CONFIRM', '');
isset($_POST['cancel']) ? define('POST_CANCEL', $_POST['cancel']): define('POST_CANCEL', '');
isset($_POST['hash']) ? define('POST_HASH', $_POST['hash']): define('POST_HASH', '');
isset($_POST['title']) ? define('POST_TITLE', $_POST['title']): define('POST_TITLE', '');
isset($_POST['description']) ? define('POST_DESCRIPTION', $_POST['description']): define('POST_DESCRIPTION', '');
isset($_POST['referrer']) ? define('POST_REFERRER', $_POST['referrer']): define('POST_REFERRER', '');
list ($url, $hash) = explode('/', $_SERVER['PATH_INFO']);
$template = 'bookmarkcommondescriptionedit.tpl';
$logged_on_user = $userservice->getCurrentUser();
//$logged_on_user = $userservice->getCurrentUser();
$currentObjectUser = $userservice->getCurrentObjectUser();
//permissions
if($logged_on_user == null) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
if(is_null($currentObjectUser)) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
if ($_POST['confirm']) {
if (strlen($hash)>0 &&
$cdservice->addBookmarkDescription($_POST['hash'], stripslashes($_POST['title']), stripslashes($_POST['description']), $logged_on_user['uId'], time())
) {
$tplVars['msg'] = T_('Bookmark common description updated');
header('Location: '. $_POST['referrer']);
} else {
$tplVars['error'] = T_('Failed to update the bookmark common description');
$template = 'error.500.tpl';
}
} elseif ($_POST['cancel']) {
$logged_on_user = $userservice->getCurrentUser();
header('Location: '. $_POST['referrer']);
if (POST_CONFIRM) {
if (strlen($hash)>0 &&
$cdservice->addBookmarkDescription(POST_HASH, stripslashes(POST_TITLE), stripslashes(POST_DESCRIPTION), $currentObjectUser->getId(), time())
) {
$tplVars['msg'] = T_('Bookmark common description updated');
header('Location: '. POST_REFERRER);
} else {
$tplVars['error'] = T_('Failed to update the bookmark common description');
$template = 'error.500.tpl';
}
} elseif (POST_CANCEL) {
$logged_on_user = $userservice->getCurrentUser();
header('Location: '. POST_REFERRER);
} else {
$bkm = $bookmarkservice->getBookmarkByHash($hash);
$bkm = $bookmarkservice->getBookmarkByHash($hash);
$tplVars['subtitle'] = T_('Edit Bookmark Common Description') .': '. $bkm['bAddress'];
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $hash;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['hash'] = $hash;
$tplVars['description'] = $cdservice->getLastBookmarkDescription($hash);
$tplVars['subtitle'] = T_('Edit Bookmark Common Description') .': '. $bkm['bAddress'];
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $hash;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['hash'] = $hash;
$tplVars['description'] = $cdservice->getLastBookmarkDescription($hash);
}
$templateservice->loadTemplate($template, $tplVars);
?>

View File

@ -1,26 +1,27 @@
<?php
/***************************************************************************
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
@ -28,59 +29,85 @@ $cacheservice =& ServiceFactory::getServiceInstance('CacheService');
$tplVars = array();
if (isset($_GET['action']) && ($_GET['action'] == "add") && !$userservice->isLoggedOn()) {
$loginqry = str_replace("'", '%27', stripslashes($_SERVER['QUERY_STRING']));
header('Location: '. createURL('login', '?'. $loginqry));
exit();
/* Managing all possible inputs */
isset($_GET['action']) ? define('GET_ACTION', $_GET['action']): define('GET_ACTION', '');
isset($_POST['submitted']) ? define('POST_SUBMITTED', $_POST['submitted']): define('POST_SUBMITTED', '');
isset($_GET['title']) ? define('GET_TITLE', $_GET['title']): define('GET_TITLE', '');
isset($_GET['address']) ? define('GET_ADDRESS', $_GET['address']): define('GET_ADDRESS', '');
isset($_GET['description']) ? define('GET_DESCRIPTION', $_GET['description']): define('GET_DESCRIPTION', '');
isset($_GET['tags']) ? define('GET_TAGS', $_GET['tags']): define('GET_TAGS', '');
isset($_POST['title']) ? define('POST_TITLE', $_POST['title']): define('POST_TITLE', '');
isset($_POST['address']) ? define('POST_ADDRESS', $_POST['address']): define('POST_ADDRESS', '');
isset($_POST['description']) ? define('POST_DESCRIPTION', $_POST['description']): define('POST_DESCRIPTION', '');
isset($_POST['status']) ? define('POST_STATUS', $_POST['status']): define('POST_STATUS', '');
isset($_POST['tags']) ? define('POST_TAGS', $_POST['tags']): define('POST_TAGS', '');
isset($_GET['popup']) ? define('GET_POPUP', $_GET['popup']): define('GET_POPUP', '');
isset($_POST['popup']) ? define('POST_POPUP', $_POST['popup']): define('POST_POPUP', '');
isset($_GET['page']) ? define('GET_PAGE', $_GET['page']): define('GET_PAGE', 0);
isset($_GET['sort']) ? define('GET_SORT', $_GET['sort']): define('GET_SORT', '');
if ((GET_ACTION == "add") && !$userservice->isLoggedOn()) {
$loginqry = str_replace("'", '%27', stripslashes($_SERVER['QUERY_STRING']));
header('Location: '. createURL('login', '?'. $loginqry));
exit();
}
if ($userservice->isLoggedOn()) {
//$currentUser = $userservice->getCurrentUser();
//$currentUserID = $userservice->getCurrentUserId();
//$currentUsername = $currentUser[$userservice->getFieldName('username')];
$currentObjectUser = $userservice->getCurrentObjectUser();
$currentUserID = $currentObjectUser->getId();
$currentUsername = $currentObjectUser->getUsername();
}
@list($url, $user, $cat) = isset($_SERVER['PATH_INFO']) ? explode('/', $_SERVER['PATH_INFO']) : NULL;
$loggedon = false;
if ($userservice->isLoggedOn()) {
$loggedon = true;
$currentUser = $userservice->getCurrentUser();
$currentUserID = $userservice->getCurrentUserId();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
}
$endcache = false;
if ($usecache) {
// Generate hash for caching on
$hash = md5($_SERVER['REQUEST_URI'] . $user);
// Generate hash for caching on
$hash = md5($_SERVER['REQUEST_URI'] . $user);
// Don't cache if its users' own bookmarks
if ($loggedon) {
if ($currentUsername != $user) {
// Cache for 5 minutes
$cacheservice->Start($hash);
$endcache = true;
}
} else {
// Cache for 30 minutes
$cacheservice->Start($hash, 1800);
$endcache = true;
}
// Don't cache if its users' own bookmarks
if ($userservice->isLoggedOn()) {
if ($currentUsername != $user) {
// Cache for 5 minutes
$cacheservice->Start($hash);
$endcache = true;
}
} else {
// Cache for 30 minutes
$cacheservice->Start($hash, 1800);
$endcache = true;
}
}
$pagetitle = $rssCat = $catTitle = '';
if ($user) {
if (is_int($user)) {
$userid = intval($user);
} else {
if (!($userinfo = $userservice->getUserByUsername($user))) {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
exit();
} else {
$userid =& $userinfo['uId'];
}
}
$pagetitle .= ': '. $user;
if (is_int($user)) {
$userid = intval($user);
} else {
if (!($userinfo = $userservice->getUserByUsername($user))) {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
exit();
} else {
$userid =& $userinfo['uId'];
}
}
$pagetitle .= ': '. $user;
}
if ($cat) {
$catTitle = ': '. str_replace('+', ' + ', $cat);
$pagetitle .= $catTitle;
$catTitle = ': '. str_replace('+', ' + ', $cat);
$pagetitle .= $catTitle;
}
$pagetitle = substr($pagetitle, 2);
@ -90,137 +117,139 @@ $tplVars['loadjs'] = true;
// ADD A BOOKMARK
$saved = false;
$templatename = 'bookmarks.tpl';
if ($loggedon && isset($_POST['submitted'])) {
if (!$_POST['title'] || !$_POST['address']) {
$tplVars['error'] = T_('Your bookmark must have a title and an address');
$templatename = 'editbookmark.tpl';
} else {
$address = trim($_POST['address']);
// If the bookmark exists already, edit the original
if ($bookmarkservice->bookmarkExists($address, $currentUserID)) {
$bookmark =& $bookmarkservice->getBookmarkByAddress($address);
header('Location: '. createURL('edit', $bookmark['bId']));
exit();
// If it's new, save it
} else {
$title = trim($_POST['title']);
$description = trim($_POST['description']);
$status = intval($_POST['status']);
$categories = trim($_POST['tags']);
$saved = true;
if ($bookmarkservice->addBookmark($address, $title, $description, $status, $categories)) {
if (isset($_POST['popup'])) {
$tplVars['msg'] = '<script type="text/javascript">window.close();</script>';
} else {
$tplVars['msg'] = T_('Bookmark saved');
// Redirection option
if ($GLOBALS['useredir']) {
$address = $GLOBALS['url_redir'] . $address;
}
//header('Location: '. $address); // not useful
}
} else {
$tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.');
$templatename = 'editbookmark.tpl';
$saved = false;
}
}
}
if ($userservice->isLoggedOn() && POST_SUBMITTED != '') {
if (!POST_TITLE || !POST_ADDRESS) {
$tplVars['error'] = T_('Your bookmark must have a title and an address');
$templatename = 'editbookmark.tpl';
} else {
$address = trim(POST_ADDRESS);
// If the bookmark exists already, edit the original
if ($bookmarkservice->bookmarkExists($address, $currentUserID)) {
$bookmark =& $bookmarkservice->getBookmarkByAddress($address);
header('Location: '. createURL('edit', $bookmark['bId']));
exit();
// If it's new, save it
} else {
$title = trim(POST_TITLE);
$description = trim(POST_DESCRIPTION);
$status = intval(POST_STATUS);
$categories = trim(POST_TAGS);
$saved = true;
if ($bookmarkservice->addBookmark($address, $title, $description, $status, $categories)) {
if (POST_POPUP != '') {
$tplVars['msg'] = '<script type="text/javascript">window.close();</script>';
} else {
$tplVars['msg'] = T_('Bookmark saved');
// Redirection option
if ($GLOBALS['useredir']) {
$address = $GLOBALS['url_redir'] . $address;
}
//header('Location: '. $address); // not useful
}
} else {
$tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.');
$templatename = 'editbookmark.tpl';
$saved = false;
}
}
}
}
if (isset($_GET['action']) && ($_GET['action'] == "add")) {
// If the bookmark exists already, edit the original
if ($bookmarkservice->bookmarkExists(stripslashes($_GET['address']), $currentUserID)) {
$bookmark =& $bookmarkservice->getBookmarks(0, NULL, $currentUserID, NULL, NULL, NULL, NULL, NULL, NULL, md5(stripslashes($_GET['address'])));
$popup = (isset($_GET['popup'])) ? '?popup=1' : '';
header('Location: '. createURL('edit', $bookmark['bookmarks'][0]['bId'] . $popup));
exit();
}
$templatename = 'editbookmark.tpl';
if (GET_ACTION == "add") {
// If the bookmark exists already, edit the original
if ($bookmarkservice->bookmarkExists(stripslashes(GET_ADDRESS), $currentUserID)) {
$bookmark =& $bookmarkservice->getBookmarks(0, NULL, $currentUserID, NULL, NULL, NULL, NULL, NULL, NULL, md5(stripslashes(GET_ADDRESS)));
$popup = (GET_POPUP!='') ? '?popup=1' : '';
header('Location: '. createURL('edit', $bookmark['bookmarks'][0]['bId'] . $popup));
exit();
}
$templatename = 'editbookmark.tpl';
}
if ($templatename == 'editbookmark.tpl') {
if ($loggedon) {
$tplVars['formaction'] = createURL('bookmarks', $currentUsername);
if (isset($_POST['submitted'])) {
$tplVars['row'] = array(
'bTitle' => stripslashes($_POST['title']),
'bAddress' => stripslashes($_POST['address']),
'bDescription' => stripslashes($_POST['description']),
'tags' => ($_POST['tags'] ? explode(',', stripslashes($_POST['tags'])) : array())
);
$tplVars['tags'] = $_POST['tags'];
} else {
$tplVars['row'] = array(
'bTitle' => stripslashes($_GET['title']),
'bAddress' => stripslashes($_GET['address']),
'bDescription' => stripslashes($_GET['description']),
'tags' => ($_GET['tags'] ? explode(',', stripslashes($_GET['tags'])) : array())
);
}
$title = T_('Add a Bookmark');
$tplVars['pagetitle'] = $title;
$tplVars['subtitle'] = $title;
$tplVars['btnsubmit'] = T_('Add Bookmark');
$tplVars['popup'] = (isset($_GET['popup'])) ? $_GET['popup'] : null;
} else {
$tplVars['error'] = T_('You must be logged in before you can add bookmarks.');
}
} else if ($user && !isset($_GET['popup'])) {
if ($userservice->isLoggedOn()) {
$tplVars['formaction'] = createURL('bookmarks', $currentUsername);
if (POST_SUBMITTED != '') {
$tplVars['row'] = array(
'bTitle' => stripslashes(POST_TITLE),
'bAddress' => stripslashes(POST_ADDRESS),
'bDescription' => stripslashes(POST_DESCRIPTION),
'tags' => (POST_TAGS ? explode(',', stripslashes(POST_TAGS)) : array()),
'bStatus' => 0,
);
$tplVars['tags'] = POST_TAGS;
} else {
$tplVars['row'] = array(
'bTitle' => stripslashes(GET_TITLE),
'bAddress' => stripslashes(GET_ADDRESS),
'bDescription' => stripslashes(GET_DESCRIPTION),
'tags' => (GET_TAGS ? explode(',', stripslashes(GET_TAGS)) : array()),
'bStatus' => 0
);
}
$title = T_('Add a Bookmark');
$tplVars['pagetitle'] = $title;
$tplVars['subtitle'] = $title;
$tplVars['btnsubmit'] = T_('Add Bookmark');
$tplVars['popup'] = (GET_POPUP!='') ? GET_POPUP : null;
} else {
$tplVars['error'] = T_('You must be logged in before you can add bookmarks.');
}
} else if ($user && GET_POPUP == '') {
$tplVars['sidebar_blocks'] = array('profile', 'watchstatus');
$tplVars['sidebar_blocks'] = array('profile', 'watchstatus');
if (!$cat) {
$cat = NULL;
$tplVars['currenttag'] = NULL;
$tplVars['sidebar_blocks'][] = 'menu';
} else {
$rssCat = '/'. filter($cat, 'url');
$tplVars['currenttag'] = $cat;
$tplVars['sidebar_blocks'][] = 'tagactions';
$tplVars['sidebar_blocks'][] = 'linked';
$tplVars['sidebar_blocks'][] = 'related';
$tplVars['sidebar_blocks'][] = 'menu';
}
$tplVars['popCount'] = 30;
$tplVars['sidebar_blocks'][] = 'popular';
if (!$cat) {
$cat = NULL;
$tplVars['currenttag'] = NULL;
$tplVars['sidebar_blocks'][] = 'menu';
} else {
$rssCat = '/'. filter($cat, 'url');
$tplVars['currenttag'] = $cat;
$tplVars['sidebar_blocks'][] = 'tagactions';
$tplVars['sidebar_blocks'][] = 'linked';
$tplVars['sidebar_blocks'][] = 'related';
$tplVars['sidebar_blocks'][] = 'menu';
}
$tplVars['popCount'] = 30;
$tplVars['sidebar_blocks'][] = 'popular';
$tplVars['userid'] = $userid;
$tplVars['userinfo'] =& $userinfo;
$tplVars['user'] = $user;
$tplVars['range'] = 'user';
$tplVars['userid'] = $userid;
$tplVars['userinfo'] =& $userinfo;
$tplVars['user'] = $user;
$tplVars['range'] = 'user';
// Pagination
$perpage = getPerPageCount();
if (isset($_GET['page']) && intval($_GET['page']) > 1) {
$page = $_GET['page'];
$start = ($page - 1) * $perpage;
} else {
$page = 0;
$start = 0;
}
// Pagination
$perpage = getPerPageCount();
if (intval(GET_PAGE) > 1) {
$page = GET_PAGE;
$start = ($page - 1) * $perpage;
} else {
$page = 0;
$start = 0;
}
// Set template vars
$tplVars['rsschannels'] = array(
array(filter($sitename .': '. $pagetitle), createURL('rss', filter($user, 'url') . $rssCat.'?sort='.getSortOrder()))
);
// Set template vars
$tplVars['rsschannels'] = array(
array(filter($sitename .': '. $pagetitle), createURL('rss', filter($user, 'url') . $rssCat.'?sort='.getSortOrder()))
);
$tplVars['page'] = $page;
$tplVars['start'] = $start;
$tplVars['bookmarkCount'] = $start + 1;
$tplVars['page'] = $page;
$tplVars['start'] = $start;
$tplVars['bookmarkCount'] = $start + 1;
$bookmarks =& $bookmarkservice->getBookmarks($start, $perpage, $userid, $cat, null, getSortOrder());
$tplVars['total'] = $bookmarks['total'];
$tplVars['bookmarks'] =& $bookmarks['bookmarks'];
$tplVars['cat_url'] = createURL('bookmarks', '%s/%s');
$tplVars['nav_url'] = createURL('bookmarks', '%s/%s%s');
if ($userservice->isLoggedOn() && $user == $currentUsername) {
$title = T_('My Bookmarks') . filter($catTitle);
} else {
$title = filter($pagetitle);
}
$tplVars['pagetitle'] = $title;
$tplVars['subtitle'] = $title;
$bookmarks =& $bookmarkservice->getBookmarks($start, $perpage, $userid, $cat, null, getSortOrder());
$tplVars['total'] = $bookmarks['total'];
$tplVars['bookmarks'] =& $bookmarks['bookmarks'];
$tplVars['cat_url'] = createURL('bookmarks', '%s/%s');
$tplVars['nav_url'] = createURL('bookmarks', '%s/%s%s');
if ($userservice->isLoggedOn() && $user == $currentUsername) {
$title = T_('My Bookmarks') . filter($catTitle);
} else {
$title = filter($pagetitle);
}
$tplVars['pagetitle'] = $title;
$tplVars['subtitle'] = $title;
}
$tplVars['summarizeLinkedTags'] = true;
@ -229,7 +258,7 @@ $tplVars['pageName'] = PAGE_BOOKMARKS;
$templateservice->loadTemplate($templatename, $tplVars);
if ($usecache && $endcache) {
// Cache output if existing copy has expired
$cacheservice->End($hash);
// Cache output if existing copy has expired
$cacheservice->End($hash);
}
?>

View File

@ -1,6 +1,6 @@
<?php
/*
* Define constants use in all the application.
* Define constants used in all the application.
* Some constants are based on variables from configuration file.
*/

View File

@ -21,10 +21,29 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice = & ServiceFactory :: getServiceInstance('BookmarkService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
/* Managing all possible inputs */
isset($_POST['submitted']) ? define('POST_SUBMITTED', $_POST['submitted']): define('POST_SUBMITTED', '');
isset($_POST['delete']) ? define('POST_DELETE', $_POST['delete']): define('POST_DELETE', '');
isset($_POST['title']) ? define('POST_TITLE', $_POST['title']): define('POST_TITLE', '');
isset($_POST['address']) ? define('POST_ADDRESS', $_POST['address']): define('POST_ADDRESS', '');
isset($_POST['description']) ? define('POST_DESCRIPTION', $_POST['description']): define('POST_DESCRIPTION', '');
isset($_POST['status']) ? define('POST_STATUS', $_POST['status']): define('POST_STATUS', '');
isset($_POST['tags']) ? define('POST_TAGS', $_POST['tags']): define('POST_TAGS', '');
isset($_GET['popup']) ? define('GET_POPUP', $_GET['popup']): define('GET_POPUP', '');
isset($_POST['popup']) ? define('POST_POPUP', $_POST['popup']): define('POST_POPUP', '');
isset($_POST['referrer']) ? define('POST_REFERRER', $_POST['referrer']): define('POST_REFERRER', '');
/* Managing current logged user */
$currentObjectUser = $userservice->getCurrentObjectUser();
// Header variables
$tplVars['subtitle'] = T_('Edit Bookmark');
$tplVars['loadjs'] = true;
@ -39,39 +58,41 @@ if (!($row = $bookmarkservice->getBookmark(intval($bookmark), true))) {
$tplVars['error'] = T_('You are not allowed to edit this bookmark');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
} else if ($_POST['submitted']) {
if (!$_POST['title'] || !$_POST['address']) {
} else if (POST_SUBMITTED != '') {
if (!POST_TITLE || !POST_ADDRESS) {
$tplVars['error'] = T_('Your bookmark must have a title and an address');
} else {
// Update bookmark
$bId = intval($bookmark);
$address = trim($_POST['address']);
$title = trim($_POST['title']);
$description = trim($_POST['description']);
$status = intval($_POST['status']);
$tags = trim($_POST['tags']);
$logged_on_user = $userservice->getCurrentUser();
$address = trim(POST_ADDRESS);
$title = trim(POST_TITLE);
$description = trim(POST_DESCRIPTION);
$status = intval(POST_STATUS);
$tags = trim(POST_TAGS);
if (!$bookmarkservice->updateBookmark($bId, $address, $title, $description, $status, $tags)) {
$tplvars['error'] = T_('Error while saving your bookmark');
} else {
if (isset($_POST['popup'])) {
$tplVars['msg'] = (isset($_POST['popup'])) ? '<script type="text/javascript">window.close();</script>' : T_('Bookmark saved');
} elseif (isset($_POST['referrer'])) {
header('Location: '. $_POST['referrer']);
if (POST_POPUP != '') {
//$tplVars['msg'] = (POST_POPUP != '') ? '<script type="text/javascript">window.close();</script>' : T_('Bookmark saved');
$tplVars['msg'] = '<script type="text/javascript">window.close();</script>';
} elseif (POST_REFERRER != '') {
$tplVars['msg'] = T_('Bookmark saved');
header('Location: '. POST_REFERRER);
} else {
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')]));
$tplVars['msg'] = T_('Bookmark saved');
header('Location: '. createURL('bookmarks', $currentObjectUser->getUsername()));
}
}
}
} else {
if ($_POST['delete']) {
if (POST_DELETE != '') {
// Delete bookmark
if ($bookmarkservice->deleteBookmark($bookmark)) {
$logged_on_user = $userservice->getCurrentUser();
if (isset($_POST['referrer'])) {
header('Location: '. $_POST['referrer']);
if (POST_REFERRER != '') {
header('Location: '. POST_REFERRER);
} else {
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')]));
header('Location: '. createURL('bookmarks', $currentObjectUser->getUsername()));
}
exit();
} else {
@ -82,7 +103,7 @@ if (!($row = $bookmarkservice->getBookmark(intval($bookmark), true))) {
}
}
$tplVars['popup'] = (isset($_GET['popup'])) ? $_GET['popup'] : null;
$tplVars['popup'] = (GET_POPUP) ? GET_POPUP : null;
$tplVars['row'] =& $row;
$tplVars['formaction'] = createURL('edit', $bookmark);
$tplVars['btnsubmit'] = T_('Save Changes');

View File

@ -21,27 +21,34 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
/* Managing all possible inputs */
isset($_GET['page']) ? define('GET_PAGE', $_GET['page']): define('GET_PAGE', 0);
isset($_GET['sort']) ? define('GET_SORT', $_GET['sort']): define('GET_SORT', '');
$tplVars = array();
@list($url, $hash) = isset($_SERVER['PATH_INFO']) ? explode('/', $_SERVER['PATH_INFO']) : NULL;
$loggedon = false;
$currentObjectUser = $userservice->getCurrentObjectUser();
/*$loggedon = false;
if ($userservice->isLoggedOn()) {
$loggedon = true;
$currentUser = $userservice->getCurrentUser();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
}
}*/
if ($usecache) {
// Generate hash for caching on
$hashtext = $_SERVER['REQUEST_URI'];
if ($userservice->isLoggedOn()) {
$hashtext .= $currentUsername;
$hashtext .= $currentObjectUser->getUsername();
}
$cachehash = md5($hashtext);
@ -51,8 +58,8 @@ if ($usecache) {
// Pagination
$perpage = getPerPageCount();
if (isset($_GET['page']) && intval($_GET['page']) > 1) {
$page = $_GET['page'];
if (intval(GET_PAGE) > 1) {
$page = GET_PAGE;
$start = ($page - 1) * $perpage;
} else {
$page = 0;
@ -76,6 +83,12 @@ if ($bookmark =& $bookmarkservice->getBookmarkByHash($hash)) {
//$tplVars['cat_url'] = createURL('tags', '%2$s');
$tplVars['cat_url'] = createURL('bookmarks', '%1$s/%2$s');
$tplVars['nav_url'] = createURL('history', $hash .'/%3$s');
$tplVars['rsschannels'] = array();
if($userservice->isLoggedOn()) {
$tplVars['user'] = $currentObjectUser->getUsername();
} else {
$tplVars['user'] = '';
}
$templateservice->loadTemplate('bookmarks.tpl', $tplVars);
} else {
// Throw a 404 error

View File

@ -1,109 +1,121 @@
<?
/***************************************************************************
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$userservice =& ServiceFactory::getServiceInstance('UserService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
/* Managing all possible inputs */
// First input is $_FILES
// Other inputs
isset($_POST['status']) ? define('POST_STATUS', $_POST['status']): define('POST_STATUS', '');
$tplVars = array();
if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['size'] > 0) {
$userinfo = $userservice->getCurrentUser();
$userinfo = $userservice->getCurrentObjectUser();
if (isset($_POST['status']) && is_numeric($_POST['status'])) {
$status = intval($_POST['status']);
} else {
$status = 2;
}
if (is_numeric(POST_STATUS)) {
$status = intval(POST_STATUS);
} else {
$status = 2;
}
$depth = array();
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
$depth = array();
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($_FILES['userfile']['tmp_name'], "r")))
die(T_("Could not open XML input"));
if (!($fp = fopen($_FILES['userfile']['tmp_name'], "r")))
die(T_("Could not open XML input"));
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf(T_("XML error: %s at line %d"),
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
header('Location: '. createURL('bookmarks', $userinfo[$userservice->getFieldName('username')]));
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf(T_("XML error: %s at line %d"),
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
header('Location: '. createURL('bookmarks', $userinfo->getUsername()));
} else {
$templatename = 'importDelicious.tpl';
$tplVars['subtitle'] = T_('Import Bookmarks from del.icio.us');
$tplVars['formaction'] = createURL('import');
$templateservice->loadTemplate($templatename, $tplVars);
$templatename = 'importDelicious.tpl';
$tplVars['subtitle'] = T_('Import Bookmarks from del.icio.us');
$tplVars['formaction'] = createURL('import');
$templateservice->loadTemplate($templatename, $tplVars);
}
function startElement($parser, $name, $attrs) {
global $depth, $status, $tplVars, $userservice;
global $depth, $status, $tplVars, $userservice;
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
if ($name == 'POST') {
while(list($attrTitle, $attrVal) = each($attrs)) {
switch ($attrTitle) {
case 'HREF':
$bAddress = $attrVal;
break;
case 'DESCRIPTION':
$bTitle = $attrVal;
break;
case 'EXTENDED':
$bDescription = $attrVal;
break;
case 'TIME':
$bDatetime = $attrVal;
break;
case 'TAG':
$tags = strtolower($attrVal);
break;
}
}
if ($bookmarkservice->bookmarkExists($bAddress, $userservice->getCurrentUserId())) {
$tplVars['error'] = T_('You have already submitted this bookmark.');
} else {
// Strangely, PHP can't work out full ISO 8601 dates, so we have to chop off the Z.
$bDatetime = substr($bDatetime, 0, -1);
if ($name == 'POST') {
while(list($attrTitle, $attrVal) = each($attrs)) {
switch ($attrTitle) {
case 'HREF':
$bAddress = $attrVal;
break;
case 'DESCRIPTION':
$bTitle = $attrVal;
break;
case 'EXTENDED':
$bDescription = $attrVal;
break;
case 'TIME':
$bDatetime = $attrVal;
break;
case 'TAG':
$tags = strtolower($attrVal);
break;
}
}
if ($bookmarkservice->bookmarkExists($bAddress, $userservice->getCurrentUserId())) {
$tplVars['error'] = T_('You have already submitted this bookmark.');
} else {
// Strangely, PHP can't work out full ISO 8601 dates, so we have to chop off the Z.
$bDatetime = substr($bDatetime, 0, -1);
// If bookmark claims to be from the future, set it to be now instead
if (strtotime($bDatetime) > time()) {
$bDatetime = gmdate('Y-m-d H:i:s');
}
// If bookmark claims to be from the future, set it to be now instead
if (strtotime($bDatetime) > time()) {
$bDatetime = gmdate('Y-m-d H:i:s');
}
if ($bookmarkservice->addBookmark($bAddress, $bTitle, $bDescription, $status, $tags, $bDatetime, true, true))
$tplVars['msg'] = T_('Bookmark imported.');
else
$tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.');
}
}
$depth[$parser]++;
if ($bookmarkservice->addBookmark($bAddress, $bTitle, $bDescription, $status, $tags, $bDatetime, true, true))
$tplVars['msg'] = T_('Bookmark imported.');
else
$tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.');
}
}
$depth[$parser]++;
}
function endElement($parser, $name) {
global $depth;
$depth[$parser]--;
global $depth;
$depth[$parser]--;
}
?>

View File

@ -20,16 +20,26 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
/* Managing all possible inputs */
// First input is $_FILES
// Other inputs
isset($_POST['status']) ? define('POST_STATUS', $_POST['status']): define('POST_STATUS', '');
$tplVars = array();
if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['size'] > 0) {
$userinfo = $userservice->getCurrentUser();
$userinfo = $userservice->getCurrentObjectUser();
if (isset($_POST['status']) && is_numeric($_POST['status'])) {
$status = intval($_POST['status']);
if (is_numeric(POST_STATUS)) {
$status = intval(POST_STATUS);
} else {
$status = 2;
}
@ -79,7 +89,7 @@ if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['si
}
}
}
header('Location: '. createURL('bookmarks', $userinfo[$userservice->getFieldName('username')]));
header('Location: '. createURL('bookmarks', $userinfo->getUsername()));
} else {
$templatename = 'importNetscape.tpl';
$tplVars['subtitle'] = T_('Import Bookmarks from Browser File');

View File

@ -28,11 +28,10 @@ $templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
/* Managing possible inputs */
/* Managing all possible inputs */
isset($_GET['action']) ? define('GET_ACTION', $_GET['action']): define('GET_ACTION', '');
isset($_GET['page']) ? define('GET_PAGE', $_GET['page']): define('GET_PAGE', 0);
isset($_GET['sort']) ? define('GET_SORT', $_GET['sort']): define('GET_SORT', '');
//isset($_GET['popup']) ? define('GET_POPUP', $_GET['popup']): define('GET_SORT', '');
// Logout action
@ -91,6 +90,8 @@ $tplVars['cat_url'] = createURL('bookmarks', '%1$s/%2$s');
$tplVars['nav_url'] = createURL('index', '%3$s');
$tplVars['summarizeLinkedTags'] = true;
$tplVars['pageName'] = PAGE_INDEX;
$tplVars['user'] = '';
$tplVars['currenttag'] = '';
$templateservice->loadTemplate('bookmarks.tpl', $tplVars);

View File

@ -20,20 +20,32 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$userservice =& ServiceFactory::getServiceInstance('UserService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
/* Managing all possible inputs */
isset($_POST['keeppass']) ? define('POST_KEEPPASS', $_POST['keeppass']): define('POST_KEEPPASS', '');
isset($_POST['submitted']) ? define('POST_SUBMITTED', $_POST['submitted']): define('POST_SUBMITTED', '');
isset($_POST['username']) ? define('POST_USERNAME', $_POST['username']): define('POST_USERNAME', '');
isset($_POST['password']) ? define('POST_PASSWORD', $_POST['password']): define('POST_PASSWORD', '');
isset($_POST['query']) ? define('POST_QUERY', $_POST['query']): define('POST_QUERY', '');
$tplVars = array();
$keeppass = isset($_POST['keeppass'])&&($_POST['keeppass']=='yes')?true:false;
$keeppass = (POST_KEEPPASS=='yes')?true:false;
$login = false;
if (isset($_POST['submitted']) && isset($_POST['username']) && isset($_POST['password'])) {
$posteduser = trim(utf8_strtolower($_POST['username']));
$login = $userservice->login($posteduser, $_POST['password'], $keeppass);
if (POST_SUBMITTED!='' && POST_USERNAME!='' && POST_PASSWORD!='') {
$posteduser = trim(utf8_strtolower(POST_USERNAME));
$login = $userservice->login($posteduser, POST_PASSWORD, $keeppass);
if ($login) {
if ($_POST['query'])
header('Location: '. createURL('bookmarks', $posteduser .'?'. $_POST['query']));
if (POST_QUERY)
header('Location: '. createURL('bookmarks', $posteduser .'?'. POST_QUERY));
else
header('Location: '. createURL('bookmarks', $posteduser));
} else {
@ -42,9 +54,8 @@ if (isset($_POST['submitted']) && isset($_POST['username']) && isset($_POST['pas
}
if (!$login) {
if ($userservice->isLoggedOn()) {
$cUser = $userservice->getCurrentUser();
$cUsername = strtolower($cUser[$userservice->getFieldName('username')]);
header('Location: '. createURL('bookmarks', $cUsername));
$cUser = $userservice->getCurrentObjectUser();
header('Location: '. createURL('bookmarks', strtolower($cUser->getUsername())));
}
$tplVars['subtitle'] = T_('Log In');

View File

@ -1,68 +1,78 @@
<?
/***************************************************************************
Copyright (C) 2005 Scuttle project
https://sourceforge.net/projects/scuttle/
Copyright (C) 2005 Scuttle project
https://sourceforge.net/projects/scuttle/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$userservice =& ServiceFactory::getServiceInstance('UserService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
/* Managing all possible inputs */
isset($_POST['submitted']) ? define('POST_SUBMITTED', $_POST['submitted']): define('POST_SUBMITTED', '');
isset($_POST['username']) ? define('POST_USERNAME', $_POST['username']): define('POST_USERNAME', '');
isset($_POST['email']) ? define('POST_EMAIL', $_POST['email']): define('POST_EMAIL', '');
$tplVars = array();
// IF SUBMITTED
if (isset($_POST['submitted'])) {
if (POST_SUBMITTED != '') {
// NO USERNAME
if (!$_POST['username']) {
$tplVars['error'] = T_('You must enter your username.');
// NO USERNAME
if (!POST_USERNAME) {
$tplVars['error'] = T_('You must enter your username.');
// NO E-MAIL
} elseif (!$_POST['email']) {
$tplVars['error'] = T_('You must enter your <abbr title="electronic mail">e-mail</abbr> address.');
// NO E-MAIL
} elseif (!POST_EMAIL) {
$tplVars['error'] = T_('You must enter your <abbr title="electronic mail">e-mail</abbr> address.');
// USERNAME AND E-MAIL
} else {
// USERNAME AND E-MAIL
} else {
// NO MATCH
if (!($userinfo = $userservice->getUserByUsername($_POST['username']))) {
$tplVars['error'] = T_('No matches found for that username.');
// NO MATCH
$userinfo = $userservice->getObjectUserByUsername(POST_USERNAME);
if ($userinfo == '') {
$tplVars['error'] = T_('No matches found for that username.');
} elseif ($_POST['email'] != $userinfo['email']) {
$tplVars['error'] = T_('No matches found for that combination of username and <abbr title="electronic mail">e-mail</abbr> address.');
} elseif (POST_EMAIL != $userinfo->getEmail()) {
$tplVars['error'] = T_('No matches found for that combination of username and <abbr title="electronic mail">e-mail</abbr> address.');
// MATCH
} else {
// MATCH
} else {
// GENERATE AND STORE PASSWORD
$password = $userservice->generatePassword($userinfo['uId']);
if (!($password = $userservice->generatePassword($userinfo['uId']))) {
$tplVars['error'] = T_('There was an error while generating your new password. Please try again.');
// GENERATE AND STORE PASSWORD
$password = $userservice->generatePassword($userinfo->getId());
if (!($password = $userservice->generatePassword($userinfo->getId()))) {
$tplVars['error'] = T_('There was an error while generating your new password. Please try again.');
} else {
// SEND E-MAIL
$message = T_('Your new password is:') ."\n". $password ."\n\n". T_('To keep your bookmarks secure, you should change this password in your profile the next time you log in.');
$message = wordwrap($message, 70);
$headers = 'From: '. $adminemail;
$mail = mail($_POST['email'], sprintf(T_('%s Account Information'), $sitename), $message);
} else {
// SEND E-MAIL
$message = T_('Your new password is:') ."\n". $password ."\n\n". T_('To keep your bookmarks secure, you should change this password in your profile the next time you log in.');
$message = wordwrap($message, 70);
$headers = 'From: '. $adminemail;
$mail = mail(POST_EMAIL, sprintf(T_('%s Account Information'), $sitename), $message);
$tplVars['msg'] = sprintf(T_('New password generated and sent to %s'), $_POST['email']);
}
}
}
$tplVars['msg'] = sprintf(T_('New password generated and sent to %s'), POST_EMAIL);
}
}
}
}
$templatename = 'password.tpl';

View File

@ -20,21 +20,25 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
/* Managing current logged user */
$currentObjectUser = $userservice->getCurrentObjectUser();
list($url, $user) = explode('/', $_SERVER['PATH_INFO']);
if ($usecache) {
// Generate hash for caching on
$hashtext = $_SERVER['REQUEST_URI'];
if ($userservice->isLoggedOn()) {
$hashtext .= $userservice->getCurrentUserID();
$currentUser = $userservice->getCurrentUser();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
if ($currentUsername == $user) {
$hashtext .= $currentObjectUser->getId();
if ($currentObjectUser->getUsername() == $user) {
$hashtext .= $user;
}
}
@ -52,8 +56,9 @@ if (isset($user) && $user != '') {
if (is_int($user)) {
$userid = intval($user);
} else {
if ($userinfo = $userservice->getUserByUsername($user)) {
$userid =& $userinfo[$userservice->getFieldName('primary')];
$userinfo = $userservice->getObjectUserByUsername($user);
if ($userinfo != '') {
$userid = $userinfo->getId();
} else {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
@ -77,8 +82,8 @@ if (isset($userid)) {
}
$tplVars['sidebar_blocks'] = array('linked');
$tplVars['subtitle'] = $pagetitle;
$templateservice->loadTemplate('tags.tpl', $tplVars);
if ($usecache) {

View File

@ -20,32 +20,45 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
/* Managing all possible inputs */
isset($_POST['submitted']) ? define('POST_SUBMITTED', $_POST['submitted']): define('POST_SUBMITTED', '');
isset($_POST['pPass']) ? define('POST_PASS', $_POST['pPass']): define('POST_PASS', '');
isset($_POST['pPassConf']) ? define('POST_PASSCONF', $_POST['pPassConf']): define('POST_PASSCONF', '');
isset($_POST['pName']) ? define('POST_NAME', $_POST['pName']): define('POST_NAME', '');
isset($_POST['pMail']) ? define('POST_MAIL', $_POST['pMail']): define('POST_MAIL', '');
isset($_POST['pPage']) ? define('POST_PAGE', $_POST['pPage']): define('POST_PAGE', '');
isset($_POST['pDesc']) ? define('POST_DESC', $_POST['pDesc']): define('POST_DESC', '');
isset($_POST['token']) ? define('POST_TOKEN', $_POST['token']): define('POST_TOKEN', '');
isset($_SESSION['token']) ? define('SESSION_TOKEN', $_SESSION['token']): define('SESSION_TOKEN', '');
isset($_SESSION['token_stamp']) ? define('SESSION_TOKENSTAMP', $_SESSION['token_stamp']): define('SESSION_TOKENSTAMP', '');
/* Managing current logged user */
$currentObjectUser = $userservice->getCurrentObjectUser();
$tplVars = array();
@list($url, $user) = isset($_SERVER['PATH_INFO']) ? explode('/', $_SERVER['PATH_INFO']) : NULL;
$loggedon = false;
if ($userservice->isLoggedOn()) {
$loggedon = true;
$currentUser = $userservice->getCurrentUser();
$currentUserID = $userservice->getCurrentUserId();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
}
if ($user) {
if (is_int($user)) {
$userid = intval($user);
} else {
$user = urldecode($user);
if (!($userinfo = $userservice->getUserByUsername($user))) {
$userinfo = $userservice->getObjectUserByUsername($user);
if ($userinfo == '') {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
exit();
} else {
$userid =& $userinfo['uId'];
$userid =& $userinfo->getId();
}
}
} else {
@ -54,7 +67,7 @@ if ($user) {
exit();
}
if ($user == $currentUsername) {
if ($userservice->isLoggedOn() && $user == $currentObjectUser->getUsername()) {
$title = T_('My Profile');
} else {
$title = T_('Profile') .': '. $user;
@ -65,19 +78,19 @@ $tplVars['subtitle'] = $title;
$tplVars['user'] = $user;
$tplVars['userid'] = $userid;
if (isset($_POST['submitted']) && $currentUserID == $userid) {
if (POST_SUBMITTED!='' && $currentObjectUser->getId() == $userid) {
$error = false;
$detPass = trim($_POST['pPass']);
$detPassConf = trim($_POST['pPassConf']);
$detName = trim($_POST['pName']);
$detMail = trim($_POST['pMail']);
$detPage = trim($_POST['pPage']);
$detDesc = filter($_POST['pDesc']);
$detPass = trim(POST_PASS);
$detPassConf = trim(POST_PASSCONF);
$detName = trim(POST_NAME);
$detMail = trim(POST_MAIL);
$detPage = trim(POST_PAGE);
$detDesc = filter(POST_DESC);
// manage token preventing from CSRF vulnaribilities
if ( !isset($_SESSION['token'], $_SESSION['token_stamp'])
|| time() - $_SESSION['token_stamp'] > 600 //limit token lifetime, optionnal
|| $_SESSION['token'] != $_POST['token']) {
if ( SESSION_TOKEN == ''
|| time() - SESSION_TOKENSTAMP > 600 //limit token lifetime, optionnal
|| SESSION_TOKEN != POST_TOKEN) {
$error = true;
$tplVars['error'] = T_('Invalid Token');
}
@ -101,10 +114,10 @@ if (isset($_POST['submitted']) && $currentUserID == $userid) {
$tplVars['msg'] = T_('Changes saved.');
}
}
$userinfo = $userservice->getUserByUsername($user);
$userinfo = $userservice->getObjectUserByUsername($user);
}
if ($currentUserID != $userid) {
if (!$userservice->isLoggedOn() || $currentObjectUser->getId() != $userid) {
$templatename = 'profile.tpl.php';
} else {
//Token Init
@ -117,6 +130,6 @@ if ($currentUserID != $userid) {
}
$tplVars['row'] = $userinfo;
$tplVars['objectUser'] = $userinfo;
$templateservice->loadTemplate($templatename, $tplVars);
?>

View File

@ -20,16 +20,26 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$userservice =& ServiceFactory::getServiceInstance('UserService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
/* Managing all possible inputs */
isset($_POST['submitted']) ? define('POST_SUBMITTED', $_POST['submitted']): define('POST_SUBMITTED', '');
isset($_POST['username']) ? define('POST_USERNAME', $_POST['username']): define('POST_USERNAME', '');
isset($_POST['password']) ? define('POST_PASS', $_POST['password']): define('POST_PASS', '');
isset($_POST['email']) ? define('POST_MAIL', $_POST['email']): define('POST_MAIL', '');
isset($_POST['antispamAnswer']) ? define('POST_ANTISPAMANSWER', $_POST['antispamAnswer']): define('POST_ANTISPAMANSWER', '');
$tplVars = array();
if (isset($_POST['submitted'])) {
$posteduser = trim(utf8_strtolower($_POST['username']));
if (POST_SUBMITTED != '') {
$posteduser = trim(utf8_strtolower(POST_USERNAME));
// Check if form is incomplete
if (!($posteduser) || !($_POST['password']) || !($_POST['email'])) {
if (!($posteduser) || POST_PASS == '' || POST_MAIL == '') {
$tplVars['error'] = T_('You <em>must</em> enter a username, password and e-mail address.');
// Check if username is reserved
@ -45,17 +55,17 @@ if (isset($_POST['submitted'])) {
$tplVars['error'] = T_('This username is not valid (too long, forbidden characters...), please make another choice.');
// Check if e-mail address is valid
} elseif (!$userservice->isValidEmail($_POST['email'])) {
} elseif (!$userservice->isValidEmail(POST_MAIL)) {
$tplVars['error'] = T_('E-mail address is not valid. Please try again.');
// Check if antispam answer is valid
} elseif (strcmp($_POST['antispamAnswer'], $GLOBALS['antispamAnswer']) != 0) {
} elseif (strcmp(POST_ANTISPAMANSWER, $GLOBALS['antispamAnswer']) != 0) {
$tplVars['error'] = T_('Antispam answer is not valid. Please try again.');
// Register details
} elseif ($userservice->addUser($posteduser, $_POST['password'], $_POST['email'])) {
} elseif ($userservice->addUser($posteduser, POST_PASS, POST_MAIL)) {
// Log in with new username
$login = $userservice->login($posteduser, $_POST['password']);
$login = $userservice->login($posteduser, POST_PASS);
if ($login) {
header('Location: '. createURL('bookmarks', $posteduser));
}

134
rss.php
View File

@ -1,77 +1,88 @@
<?php
/***************************************************************************
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$tplVars = array();
header('Content-Type: application/xml');
list($url, $user, $cat) = explode('/', $_SERVER['PATH_INFO']);
if(isset($_SERVER['PATH_INFO']) && strlen($_SERVER['PATH_INFO']) >1) {
list($url, $user, $cat) = explode('/', $_SERVER['PATH_INFO']);
} else {
$url = '';
$user = '';
$cat = NULL;
}
if ($usecache) {
// Generate hash for caching on
$hashtext = $_SERVER['REQUEST_URI'];
if ($userservice->isLoggedOn()) {
$hashtext .= $userservice->getCurrentUserID();
$currentUser = $userservice->getCurrentUser();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
if ($currentUsername == $user) {
$hashtext .= $user;
}
}
$hash = md5($hashtext);
// Generate hash for caching on
$hashtext = $_SERVER['REQUEST_URI'];
if ($userservice->isLoggedOn()) {
$hashtext .= $userservice->getCurrentUserID();
$currentUser = $userservice->getCurrentUser();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
if ($currentUsername == $user) {
$hashtext .= $user;
}
}
$hash = md5($hashtext);
// Cache for an hour
$cacheservice->Start($hash, 3600);
// Cache for an hour
$cacheservice->Start($hash, 3600);
}
$watchlist = null;
$pagetitle = '';
if ($user && $user != 'all') {
if ($user == 'watchlist') {
$user = $cat;
$cat = null;
$watchlist = true;
}
if (is_int($user)) {
$userid = intval($user);
} else {
if ($userinfo = $userservice->getUserByUsername($user)) {
$userid =& $userinfo[$userservice->getFieldName('primary')];
} else {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
//throw a 404 error
exit();
}
}
$pagetitle .= ": ". $user;
if ($user == 'watchlist') {
$user = $cat;
$cat = null;
$watchlist = true;
}
if (is_int($user)) {
$userid = intval($user);
} else {
if ($userinfo = $userservice->getUserByUsername($user)) {
$userid =& $userinfo[$userservice->getFieldName('primary')];
} else {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
//throw a 404 error
exit();
}
}
$pagetitle .= ": ". $user;
} else {
$userid = NULL;
$userid = NULL;
}
if ($cat) {
$pagetitle .= ": ". str_replace('+', ' + ', $cat);
$pagetitle .= ": ". str_replace('+', ' + ', $cat);
}
$tplVars['feedtitle'] = filter($GLOBALS['sitename'] . (isset($pagetitle) ? $pagetitle : ''));
@ -79,28 +90,29 @@ $tplVars['feedlink'] = ROOT;
$tplVars['feeddescription'] = sprintf(T_('Recent bookmarks posted to %s'), $GLOBALS['sitename']);
$bookmarks =& $bookmarkservice->getBookmarks(0, 15, $userid, $cat, NULL, getSortOrder(), $watchlist);
$bookmarks_tmp =& filter($bookmarks['bookmarks']);
$bookmarks_tpl = array();
foreach(array_keys($bookmarks_tmp) as $key) {
$row =& $bookmarks_tmp[$key];
$row =& $bookmarks_tmp[$key];
$_link = $row['bAddress'];
// Redirection option
if ($GLOBALS['useredir']) {
$_link = $GLOBALS['url_redir'] . $_link;
}
$_pubdate = gmdate("r", strtotime($row['bDatetime']));
// array_walk($row['tags'], 'filter');
$_link = $row['bAddress'];
// Redirection option
if ($GLOBALS['useredir']) {
$_link = $GLOBALS['url_redir'] . $_link;
}
$_pubdate = gmdate("r", strtotime($row['bDatetime']));
// array_walk($row['tags'], 'filter');
$bookmarks_tpl[] = array(
$bookmarks_tpl[] = array(
'title' => $row['bTitle'],
'link' => $_link,
'description' => $row['bDescription'],
'creator' => $row['username'],
'pubdate' => $_pubdate,
'tags' => $row['tags']
);
);
}
unset($bookmarks_tmp);
unset($bookmarks);
@ -109,7 +121,7 @@ $tplVars['bookmarks'] =& $bookmarks_tpl;
$templateservice->loadTemplate('rss.tpl', $tplVars);
if ($usecache) {
// Cache output if existing copy has expired
$cacheservice->End($hash);
// Cache output if existing copy has expired
$cacheservice->End($hash);
}
?>

View File

@ -1,5 +1,7 @@
<?php
/* Manage input */
/* Managing all possible inputs */
$select_watchlist = isset($select_watchlist)?$select_watchlist:'';
$select_all = isset($select_all)?$select_all:'';
?>
@ -9,13 +11,11 @@ $select_all = isset($select_all)?$select_all:'';
<table>
<tr>
<?php
$logged_on = false;
if ($userservice->isLoggedOn()) {
$currentUser = $userservice->getCurrentUser();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
$logged_on = true;
$currentUser = $userservice->getCurrentObjectUser();
$currentUsername = $currentUser->getUsername();
}
if ($logged_on || isset($user)) {
if ($userservice->isLoggedOn() || isset($user)) {
?>
<td><?php echo T_('Search' /* Search ... for */); ?></td>
<td>
@ -26,7 +26,7 @@ $select_all = isset($select_all)?$select_all:'';
<option value="<?php echo $user ?>"<?php //echo $selectUser; ?>><?php echo T_("this user's bookmarks"); ?></option>
<?php
}
if ($logged_on) {
if ($userservice->isLoggedOn()) {
?>
<option value="<?php echo $currentUsername; ?>"<?php //echo $selectMy; ?>><?php echo T_('my bookmarks'); ?></option>
<option value="watchlist"<?php echo $select_watchlist; ?>><?php echo T_('my watchlist'); ?></option>

View File

@ -1,117 +1,136 @@
<?php
/***************************************************************************
Copyright (C) 2005 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2005 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Managing all possible inputs */
isset($_POST['terms']) ? define('POST_TERMS', $_POST['terms']): define('POST_TERMS', '');
isset($_POST['range']) ? define('POST_RANGE', $_POST['range']): define('POST_RANGE', '');
isset($_GET['page']) ? define('GET_PAGE', $_GET['page']): define('GET_PAGE', 0);
isset($_GET['sort']) ? define('GET_SORT', $_GET['sort']): define('GET_SORT', '');
// POST
if (isset($_POST['terms'])) {
// Redirect to GET
header('Location: '. createURL('search', $_POST['range'] .'/'. filter($_POST['terms'], 'url')));
if (POST_TERMS != '') {
// Redirect to GET
header('Location: '. createURL('search', POST_RANGE .'/'. filter(POST_TERMS, 'url')));
// GET
// GET
} else {
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$searchhistoryservice =& ServiceFactory::getServiceInstance('SearchHistoryService');
/* Service creation: only useful services are created */
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$searchhistoryservice =& ServiceFactory::getServiceInstance('SearchHistoryService');
$logged_on_userid = $userservice->getCurrentUserId();
list($url, $range, $terms, $page) = explode('/', $_SERVER['PATH_INFO']);
/* Managing current logged user */
$currentUserId = $userservice->getCurrentUserId();
$tplvars = array();
$tplVars['loadjs'] = true;
// Pagination
$perpage = getPerPageCount();
if (isset($_GET['page']) && intval($_GET['page']) > 1) {
$page = $_GET['page'];
$start = ($page - 1) * $perpage;
} else {
$page = 0;
$start = 0;
}
$exploded = explode('/', $_SERVER['PATH_INFO']);
if(count($exploded) == 4) {
list($url, $range, $terms, $page) = $exploded;
} else {
list($url, $range, $terms) = $exploded;
$page= NULL;
}
$s_user = NULL;
$s_start = NULL;
$s_end = NULL;
$s_watchlist = NULL;
$tplvars = array();
$tplVars['loadjs'] = true;
// No search terms
if (is_null($terms)) {
$tplVars['subtitle'] = T_('Search Bookmarks');
$s_start = date('Y-m-d H:i:s', strtotime($dtend .' -'. $defaultRecentDays .' days'));
$s_end = date('Y-m-d H:i:s', strtotime('tomorrow'));
// Pagination
$perpage = getPerPageCount();
if (intval(GET_PAGE) > 1) {
$page = GET_PAGE;
$start = ($page - 1) * $perpage;
} else {
$page = 0;
$start = 0;
}
// Search terms
} else {
$tplVars['subtitle'] = T_('Search Results');
$selected = ' selected="selected"';
$s_user = NULL;
$s_start = NULL;
$s_end = NULL;
$s_watchlist = NULL;
switch ($range) {
case 'all':
$tplVars['select_all'] = $selected;
$s_user = NULL;
break;
case 'watchlist':
$tplVars['select_watchlist'] = $selected;
$s_user = $logged_on_userid;
$s_watchlist = true;
break;
default:
$s_user = $range;
break;
}
// No search terms
if (is_null($terms)) {
$tplVars['subtitle'] = T_('Search Bookmarks');
$s_start = date('Y-m-d H:i:s', strtotime($dtend .' -'. $defaultRecentDays .' days'));
$s_end = date('Y-m-d H:i:s', strtotime('tomorrow'));
if (isset($s_user)) {
if (is_numeric($s_user)) {
$s_user = intval($s_user);
} else {
if (!($userinfo = $userservice->getUserByUsername($s_user) ) ) {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $s_user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
exit();
} else {
$s_user =& $userinfo[$userservice->getFieldName('primary')];
}
}
}
}
$bookmarks =& $bookmarkservice->getBookmarks($start, $perpage, $s_user, NULL, $terms, getSortOrder(), $s_watchlist, $s_start, $s_end);
// Search terms
} else {
$tplVars['subtitle'] = T_('Search Results');
$selected = ' selected="selected"';
// Save search
$searchhistoryservice->addSearch($terms, $range, $bookmarks['total'], $logged_on_userid);
switch ($range) {
case 'all':
$tplVars['select_all'] = $selected;
$s_user = NULL;
break;
case 'watchlist':
$tplVars['select_watchlist'] = $selected;
$s_user = $currentUserId;
$s_watchlist = true;
break;
default:
$s_user = $range;
break;
}
$tplVars['page'] = $page;
$tplVars['start'] = $start;
$tplVars['popCount'] = 25;
$tplVars['sidebar_blocks'] = array('search', 'recent');
$tplVars['range'] = $range;
$tplVars['terms'] = $terms;
$tplVars['pagetitle'] = T_('Search Bookmarks');
$tplVars['bookmarkCount'] = $start + 1;
$tplVars['total'] = $bookmarks['total'];
$tplVars['bookmarks'] =& $bookmarks['bookmarks'];
$tplVars['cat_url'] = createURL('tags', '%2$s');
$tplVars['nav_url'] = createURL('search', $range .'/'. $terms .'/%3$s');
if (isset($s_user)) {
if (is_numeric($s_user)) {
$s_user = intval($s_user);
} else {
$userinfo = $userservice->getObjectUserByUsername($s_user);
if ($userinfo == '' ) {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $s_user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
exit();
} else {
$s_user =& $userinfo->getId();
}
}
}
}
$bookmarks =& $bookmarkservice->getBookmarks($start, $perpage, $s_user, NULL, $terms, getSortOrder(), $s_watchlist, $s_start, $s_end);
$templateservice->loadTemplate('bookmarks.tpl', $tplVars);
// Save search
$searchhistoryservice->addSearch($terms, $range, $bookmarks['total'], $currentUserId);
$tplVars['rsschannels'] = array();
$tplVars['page'] = $page;
$tplVars['start'] = $start;
$tplVars['popCount'] = 25;
$tplVars['sidebar_blocks'] = array('search', 'recent');
$tplVars['range'] = $range;
$tplVars['terms'] = $terms;
$tplVars['pagetitle'] = T_('Search Bookmarks');
$tplVars['bookmarkCount'] = $start + 1;
$tplVars['total'] = $bookmarks['total'];
$tplVars['bookmarks'] =& $bookmarks['bookmarks'];
$tplVars['cat_url'] = createURL('tags', '%2$s');
$tplVars['nav_url'] = createURL('search', $range .'/'. $terms .'/%3$s');
$templateservice->loadTemplate('bookmarks.tpl', $tplVars);
}
?>

View File

@ -1,188 +1,189 @@
<?php
class Bookmark2TagService {
var $db;
var $tablename;
function &getInstance(&$db) {
static $instance;
if (!isset($instance))
$instance =& new Bookmark2TagService($db);
return $instance;
}
function Bookmark2TagService(&$db) {
$this->db =& $db;
$this->tablename = $GLOBALS['tableprefix'] .'bookmarks2tags';
}
function isNotSystemTag($var) {
if (utf8_substr($var, 0, 7) == 'system:')
return false;
else
return true;
}
function attachTags($bookmarkid, $tags, $fromApi = false, $extension = NULL, $replace = true, $fromImport = false) {
// Make sure that categories is an array of trimmed strings, and that if the categories are
// coming in from an API call to add a bookmark, that underscores are converted into strings.
if (!is_array($tags)) {
$tags = trim($tags);
if ($tags != '') {
if (substr($tags, -1) == ',') {
$tags = substr($tags, 0, -1);
}
if ($fromApi) {
$tags = explode(' ', $tags);
} else {
$tags = explode(',', $tags);
}
} else {
$tags = null;
}
}
//clean tags from strange characters
$tags = str_replace(array('"', '\''), "_", $tags);
$tags_count = count($tags);
for ($i = 0; $i < $tags_count; $i++) {
$tags[$i] = trim(strtolower($tags[$i]));
if ($fromApi) {
include_once(dirname(__FILE__) .'/../functions.inc.php');
$tags[$i] = convertTag($tags[$i], 'in');
}
}
if ($tags_count > 0) {
// Remove system tags
$tags = array_filter($tags, array($this, "isNotSystemTag"));
// Eliminate any duplicate categories
$temp = array_unique($tags);
$tags = array_values($temp);
} else {
// Unfiled
$tags[] = 'system:unfiled';
}
// Media and file types
if (!is_null($extension)) {
include_once(dirname(__FILE__) .'/../functions.inc.php');
if ($keys = multi_array_search($extension, $GLOBALS['filetypes'])) {
$tags[] = 'system:filetype:'. $extension;
$tags[] = 'system:media:'. array_shift($keys);
}
}
// Imported
if ($fromImport) {
$tags[] = 'system:imported';
}
$this->db->sql_transaction('begin');
if ($replace) {
if (!$this->deleteTagsForBookmark($bookmarkid)){
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not attach tags (deleting old ones failed)', '', __LINE__, __FILE__, $sql, $this->db);
return false;
}
}
$bs =& ServiceFactory::getServiceInstance('BookmarkService');
$tts =& ServiceFactory::getServiceInstance('Tag2TagService');
// Create links between tags
foreach($tags as $key => $tag) {
if(strpos($tag, '=')) {
// case "="
$pieces = explode('=', $tag);
$nbPieces = count($pieces);
if($nbPieces > 1) {
for($i = 0; $i < $nbPieces-1; $i++) {
$bookmark = $bs->getBookmark($bookmarkid);
$uId = $bookmark['uId'];
$tts->addLinkedTags($pieces[$i], $pieces[$i+1], '=', $uId);
}
$tags[$key] = $pieces[0]; // Attach just the last tag to the bookmark
}
} else {
// case ">"
$pieces = explode('>', $tag);
$nbPieces = count($pieces);
if($nbPieces > 1) {
for($i = 0; $i < $nbPieces-1; $i++) {
$bookmark = $bs->getBookmark($bookmarkid);
$uId = $bookmark['uId'];
$tts->addLinkedTags($pieces[$i], $pieces[$i+1], '>', $uId);
}
$tags[$key] = $pieces[$nbPieces-1]; // Attach just the last tag to the bookmark
}
}
var $db;
var $tablename;
function &getInstance(&$db) {
static $instance;
if (!isset($instance))
$instance =& new Bookmark2TagService($db);
return $instance;
}
// Add the categories to the DB.
for ($i = 0; $i < count($tags); $i++) {
if ($tags[$i] != '') {
$values = array(
function Bookmark2TagService(&$db) {
$this->db =& $db;
$this->tablename = $GLOBALS['tableprefix'] .'bookmarks2tags';
}
function isNotSystemTag($var) {
if (utf8_substr($var, 0, 7) == 'system:')
return false;
else
return true;
}
function attachTags($bookmarkid, $tags, $fromApi = false, $extension = NULL, $replace = true, $fromImport = false) {
// Make sure that categories is an array of trimmed strings, and that if the categories are
// coming in from an API call to add a bookmark, that underscores are converted into strings.
if (!is_array($tags)) {
$tags = trim($tags);
if ($tags != '') {
if (substr($tags, -1) == ',') {
$tags = substr($tags, 0, -1);
}
if ($fromApi) {
$tags = explode(' ', $tags);
} else {
$tags = explode(',', $tags);
}
} else {
$tags = null;
}
}
//clean tags from strange characters
$tags = str_replace(array('"', '\''), "_", $tags);
$tags_count = is_array($tags)?count($tags):0;
for ($i = 0; $i < $tags_count; $i++) {
$tags[$i] = trim(strtolower($tags[$i]));
if ($fromApi) {
include_once(dirname(__FILE__) .'/../functions.inc.php');
$tags[$i] = convertTag($tags[$i], 'in');
}
}
if ($tags_count > 0) {
// Remove system tags
$tags = array_filter($tags, array($this, "isNotSystemTag"));
// Eliminate any duplicate categories
$temp = array_unique($tags);
$tags = array_values($temp);
} else {
// Unfiled
$tags[] = 'system:unfiled';
}
// Media and file types
if (!is_null($extension)) {
include_once(dirname(__FILE__) .'/../functions.inc.php');
if ($keys = multi_array_search($extension, $GLOBALS['filetypes'])) {
$tags[] = 'system:filetype:'. $extension;
$tags[] = 'system:media:'. array_shift($keys);
}
}
// Imported
if ($fromImport) {
$tags[] = 'system:imported';
}
$this->db->sql_transaction('begin');
if ($replace) {
if (!$this->deleteTagsForBookmark($bookmarkid)){
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not attach tags (deleting old ones failed)', '', __LINE__, __FILE__, $sql, $this->db);
return false;
}
}
$bs =& ServiceFactory::getServiceInstance('BookmarkService');
$tts =& ServiceFactory::getServiceInstance('Tag2TagService');
// Create links between tags
foreach($tags as $key => $tag) {
if(strpos($tag, '=')) {
// case "="
$pieces = explode('=', $tag);
$nbPieces = count($pieces);
if($nbPieces > 1) {
for($i = 0; $i < $nbPieces-1; $i++) {
$bookmark = $bs->getBookmark($bookmarkid);
$uId = $bookmark['uId'];
$tts->addLinkedTags($pieces[$i], $pieces[$i+1], '=', $uId);
}
$tags[$key] = $pieces[0]; // Attach just the last tag to the bookmark
}
} else {
// case ">"
$pieces = explode('>', $tag);
$nbPieces = count($pieces);
if($nbPieces > 1) {
for($i = 0; $i < $nbPieces-1; $i++) {
$bookmark = $bs->getBookmark($bookmarkid);
$uId = $bookmark['uId'];
$tts->addLinkedTags($pieces[$i], $pieces[$i+1], '>', $uId);
}
$tags[$key] = $pieces[$nbPieces-1]; // Attach just the last tag to the bookmark
}
}
}
// Add the categories to the DB.
for ($i = 0; $i < count($tags); $i++) {
if ($tags[$i] != '') {
$values = array(
'bId' => intval($bookmarkid),
'tag' => $tags[$i]
);
);
if (!$this->hasTag($bookmarkid, $tags[$i])) {
$sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
if (!($dbresult =& $this->db->sql_query($sql))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not attach tags', '', __LINE__, __FILE__, $sql, $this->db);
return false;
}
}
}
}
$this->db->sql_transaction('commit');
return true;
}
if (!$this->hasTag($bookmarkid, $tags[$i])) {
$sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
if (!($dbresult =& $this->db->sql_query($sql))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not attach tags', '', __LINE__, __FILE__, $sql, $this->db);
return false;
}
}
}
}
$this->db->sql_transaction('commit');
return true;
}
function deleteTag($uId, $tag) {
$bs =& ServiceFactory::getServiceInstance('BookmarkService');
function deleteTag($uId, $tag) {
$bs =& ServiceFactory::getServiceInstance('BookmarkService');
$query = 'DELETE FROM '. $this->getTableName();
$query.= ' USING '. $this->getTableName() .', '. $bs->getTableName();
$query.= ' WHERE '. $this->getTableName() .'.bId = '. $bs->getTableName() .'.bId';
$query.= ' AND '. $bs->getTableName() .'.uId = '. $uId;
$query.= ' AND '. $this->getTableName() .'.tag = "'. $this->db->sql_escape($tag) .'"';
$query = 'DELETE FROM '. $this->getTableName();
$query.= ' USING '. $this->getTableName() .', '. $bs->getTableName();
$query.= ' WHERE '. $this->getTableName() .'.bId = '. $bs->getTableName() .'.bId';
$query.= ' AND '. $bs->getTableName() .'.uId = '. $uId;
$query.= ' AND '. $this->getTableName() .'.tag = "'. $this->db->sql_escape($tag) .'"';
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return true;
}
return true;
}
function deleteTagsForBookmark($bookmarkid) {
if (!is_int($bookmarkid)) {
message_die(GENERAL_ERROR, 'Could not delete tags (invalid bookmarkid)', '', __LINE__, __FILE__, $query);
return false;
}
function deleteTagsForBookmark($bookmarkid) {
if (!is_int($bookmarkid)) {
message_die(GENERAL_ERROR, 'Could not delete tags (invalid bookmarkid)', '', __LINE__, __FILE__, $query);
return false;
}
$query = 'DELETE FROM '. $this->getTableName() .' WHERE bId = '. intval($bookmarkid);
$query = 'DELETE FROM '. $this->getTableName() .' WHERE bId = '. intval($bookmarkid);
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return true;
}
return true;
}
/* Allow deletion in admin page */
function deleteTagsForUser($uId) {
$qmask = 'DELETE FROM %s USING %s, %s WHERE %s.bId = %s.bId AND %s.uId = %d';
$query = sprintf($qmask,
/* Allow deletion in admin page */
function deleteTagsForUser($uId) {
$qmask = 'DELETE FROM %s USING %s, %s WHERE %s.bId = %s.bId AND %s.uId = %d';
$query = sprintf($qmask,
$this->getTableName(),
$this->getTableName(),
$GLOBALS['tableprefix'].'bookmarks',
@ -191,245 +192,246 @@ class Bookmark2TagService {
$GLOBALS['tableprefix'].'bookmarks',
$uId);
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return true;
}
return true;
}
function &getTagsForBookmark($bookmarkid) {
if (!is_int($bookmarkid)) {
message_die(GENERAL_ERROR, 'Could not get tags (invalid bookmarkid)', '', __LINE__, __FILE__, $query);
return false;
}
function &getTagsForBookmark($bookmarkid) {
if (!is_int($bookmarkid)) {
message_die(GENERAL_ERROR, 'Could not get tags (invalid bookmarkid)', '', __LINE__, __FILE__, $query);
return false;
}
$query = 'SELECT tag FROM '. $this->getTableName() .' WHERE bId = '. intval($bookmarkid) .' AND LEFT(tag, 7) <> "system:" ORDER BY tag';
$query = 'SELECT tag FROM '. $this->getTableName() .' WHERE bId = '. intval($bookmarkid) .' AND LEFT(tag, 7) <> "system:" ORDER BY tag';
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$tags = array();
while ($row =& $this->db->sql_fetchrow($dbresult)) {
$tags[] = $row['tag'];
}
$tags = array();
while ($row =& $this->db->sql_fetchrow($dbresult)) {
$tags[] = $row['tag'];
}
return $tags;
}
return $tags;
}
function &getTags($userid = NULL) {
$userservice =& ServiceFactory::getServiceInstance('UserService');
$logged_on_user = $userservice->getCurrentUserId();
function &getTags($userid = NULL) {
$userservice =& ServiceFactory::getServiceInstance('UserService');
$logged_on_user = $userservice->getCurrentUserId();
$query = 'SELECT T.tag, COUNT(B.bId) AS bCount FROM '. $GLOBALS['tableprefix'] .'bookmarks AS B INNER JOIN '. $userservice->getTableName() .' AS U ON B.uId = U.'. $userservice->getFieldName('primary') .' INNER JOIN '. $GLOBALS['tableprefix'] .'bookmarks2tags AS T ON B.bId = T.bId';
$query = 'SELECT T.tag, COUNT(B.bId) AS bCount FROM '. $GLOBALS['tableprefix'] .'bookmarks AS B INNER JOIN '. $userservice->getTableName() .' AS U ON B.uId = U.'. $userservice->getFieldName('primary') .' INNER JOIN '. $GLOBALS['tableprefix'] .'bookmarks2tags AS T ON B.bId = T.bId';
$conditions = array();
if (!is_null($userid)) {
$conditions['U.'. $userservice->getFieldName('primary')] = intval($userid);
if ($logged_on_user != $userid)
$conditions['B.bStatus'] = 0;
} else {
$conditions['B.bStatus'] = 0;
}
$conditions = array();
if (!is_null($userid)) {
$conditions['U.'. $userservice->getFieldName('primary')] = intval($userid);
if ($logged_on_user != $userid)
$conditions['B.bStatus'] = 0;
} else {
$conditions['B.bStatus'] = 0;
}
$query .= ' WHERE '. $this->db->sql_build_array('SELECT', $conditions) .' AND LEFT(T.tag, 7) <> "system:" GROUP BY T.tag ORDER BY bCount DESC, tag';
$query .= ' WHERE '. $this->db->sql_build_array('SELECT', $conditions) .' AND LEFT(T.tag, 7) <> "system:" GROUP BY T.tag ORDER BY bCount DESC, tag';
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$output = $this->db->sql_fetchrowset($dbresult);
return $output;
}
$output = $this->db->sql_fetchrowset($dbresult);
return $output;
}
// Returns the tags related to the specified tags; i.e. attached to the same bookmarks
function &getRelatedTags($tags, $for_user = NULL, $logged_on_user = NULL, $limit = 10) {
$conditions = array();
// Only count the tags that are visible to the current user.
if ($for_user != $logged_on_user || is_null($for_user))
$conditions['B.bStatus'] = 0;
// Returns the tags related to the specified tags; i.e. attached to the same bookmarks
function &getRelatedTags($tags, $for_user = NULL, $logged_on_user = NULL, $limit = 10) {
$conditions = array();
// Only count the tags that are visible to the current user.
if ($for_user != $logged_on_user || is_null($for_user))
$conditions['B.bStatus'] = 0;
if (!is_null($for_user))
$conditions['B.uId'] = $for_user;
if (!is_null($for_user))
$conditions['B.uId'] = $for_user;
// Set up the tags, if need be.
if (is_numeric($tags))
$tags = NULL;
if (!is_array($tags) and !is_null($tags))
$tags = explode('+', trim($tags));
// Set up the tags, if need be.
if (is_numeric($tags))
$tags = NULL;
if (!is_array($tags) and !is_null($tags))
$tags = explode('+', trim($tags));
$tagcount = count($tags);
for ($i = 0; $i < $tagcount; $i++) {
$tags[$i] = trim($tags[$i]);
}
$tagcount = count($tags);
for ($i = 0; $i < $tagcount; $i++) {
$tags[$i] = trim($tags[$i]);
}
// Set up the SQL query.
$query_1 = 'SELECT DISTINCTROW T0.tag, COUNT(B.bId) AS bCount FROM '. $GLOBALS['tableprefix'] .'bookmarks AS B, '. $this->getTableName() .' AS T0';
$query_2 = '';
$query_3 = ' WHERE B.bId = T0.bId ';
if (count($conditions) > 0)
$query_4 = ' AND '. $this->db->sql_build_array('SELECT', $conditions);
else
$query_4 = '';
// Handle the parts of the query that depend on any tags that are present.
for ($i = 1; $i <= $tagcount; $i++) {
$query_2 .= ', '. $this->getTableName() .' AS T'. $i;
$query_4 .= ' AND T'. $i .'.bId = B.bId AND T'. $i .'.tag = "'. $this->db->sql_escape($tags[$i - 1]) .'" AND T0.tag <> "'. $this->db->sql_escape($tags[$i - 1]) .'"';
}
$query_5 = ' AND LEFT(T0.tag, 7) <> "system:" GROUP BY T0.tag ORDER BY bCount DESC, T0.tag';
$query = $query_1 . $query_2 . $query_3 . $query_4 . $query_5;
// Set up the SQL query.
$query_1 = 'SELECT DISTINCTROW T0.tag, COUNT(B.bId) AS bCount FROM '. $GLOBALS['tableprefix'] .'bookmarks AS B, '. $this->getTableName() .' AS T0';
$query_2 = '';
$query_3 = ' WHERE B.bId = T0.bId ';
if (count($conditions) > 0)
$query_4 = ' AND '. $this->db->sql_build_array('SELECT', $conditions);
else
$query_4 = '';
// Handle the parts of the query that depend on any tags that are present.
for ($i = 1; $i <= $tagcount; $i++) {
$query_2 .= ', '. $this->getTableName() .' AS T'. $i;
$query_4 .= ' AND T'. $i .'.bId = B.bId AND T'. $i .'.tag = "'. $this->db->sql_escape($tags[$i - 1]) .'" AND T0.tag <> "'. $this->db->sql_escape($tags[$i - 1]) .'"';
}
$query_5 = ' AND LEFT(T0.tag, 7) <> "system:" GROUP BY T0.tag ORDER BY bCount DESC, T0.tag';
$query = $query_1 . $query_2 . $query_3 . $query_4 . $query_5;
if (! ($dbresult =& $this->db->sql_query_limit($query, $limit)) ){
message_die(GENERAL_ERROR, 'Could not get related tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$output = $this->db->sql_fetchrowset($dbresult);
return $output;
}
if (! ($dbresult =& $this->db->sql_query_limit($query, $limit)) ){
message_die(GENERAL_ERROR, 'Could not get related tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$output = $this->db->sql_fetchrowset($dbresult);
return $output;
}
// Returns the most popular tags used for a particular bookmark hash
function &getRelatedTagsByHash($hash, $limit = 20) {
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$sId = $userservice->getCurrentUserId();
// Logged in
if ($userservice->isLoggedOn()) {
$arrWatch = $userservice->getWatchList($sId);
// From public bookmarks or user's own
$privacy = ' AND ((B.bStatus = 0) OR (B.uId = '. $sId .')';
// From shared bookmarks in watchlist
foreach ($arrWatch as $w) {
$privacy .= ' OR (B.uId = '. $w .' AND B.bStatus = 1)';
}
$privacy .= ') ';
// Not logged in
} else {
$privacy = ' AND B.bStatus = 0 ';
}
// Returns the most popular tags used for a particular bookmark hash
function &getRelatedTagsByHash($hash, $limit = 20) {
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$sId = $userservice->getCurrentUserId();
// Logged in
if ($userservice->isLoggedOn()) {
$arrWatch = $userservice->getWatchList($sId);
// From public bookmarks or user's own
$privacy = ' AND ((B.bStatus = 0) OR (B.uId = '. $sId .')';
// From shared bookmarks in watchlist
foreach ($arrWatch as $w) {
$privacy .= ' OR (B.uId = '. $w .' AND B.bStatus = 1)';
}
$privacy .= ') ';
// Not logged in
} else {
$privacy = ' AND B.bStatus = 0 ';
}
$query = 'SELECT T.tag, COUNT(T.tag) AS bCount FROM '.$GLOBALS['tableprefix'].'bookmarks AS B LEFT JOIN '.$GLOBALS['tableprefix'].'bookmarks2tags AS T ON B.bId = T.bId WHERE B.bHash = "'. $hash .'" '. $privacy .'AND LEFT(T.tag, 7) <> "system:" GROUP BY T.tag ORDER BY bCount DESC';
$query = 'SELECT T.tag, COUNT(T.tag) AS bCount FROM '.$GLOBALS['tableprefix'].'bookmarks AS B LEFT JOIN '.$GLOBALS['tableprefix'].'bookmarks2tags AS T ON B.bId = T.bId WHERE B.bHash = "'. $hash .'" '. $privacy .'AND LEFT(T.tag, 7) <> "system:" GROUP BY T.tag ORDER BY bCount DESC';
if (!($dbresult =& $this->db->sql_query_limit($query, $limit))) {
message_die(GENERAL_ERROR, 'Could not get related tags for this hash', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
if (!($dbresult =& $this->db->sql_query_limit($query, $limit))) {
message_die(GENERAL_ERROR, 'Could not get related tags for this hash', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$output = $this->db->sql_fetchrowset($dbresult);
return $output;
}
function &getPopularTags($user = NULL, $limit = 30, $logged_on_user = NULL, $days = NULL) {
// Only count the tags that are visible to the current user.
if (($user != $logged_on_user) || is_null($user) || ($user === false))
$privacy = ' AND B.bStatus = 0';
else
$privacy = '';
function &getPopularTags($user = NULL, $limit = 30, $logged_on_user = NULL, $days = NULL) {
// Only count the tags that are visible to the current user.
if (($user != $logged_on_user) || is_null($user) || ($user === false))
$privacy = ' AND B.bStatus = 0';
else
$privacy = '';
if (is_null($days) || !is_int($days))
$span = '';
else
$span = ' AND B.bDatetime > "'. date('Y-m-d H:i:s', time() - (86400 * $days)) .'"';
if (is_null($days) || !is_int($days))
$span = '';
else
$span = ' AND B.bDatetime > "'. date('Y-m-d H:i:s', time() - (86400 * $days)) .'"';
$query = 'SELECT T.tag, COUNT(T.bId) AS bCount FROM '. $this->getTableName() .' AS T, '. $GLOBALS['tableprefix'] .'bookmarks AS B WHERE ';
if (is_null($user) || ($user === false)) {
$query .= 'B.bId = T.bId AND B.bStatus = 0';
} else {
$query .= 'B.uId = '. $this->db->sql_escape($user) .' AND B.bId = T.bId'. $privacy;
}
$query .= $span .' AND LEFT(T.tag, 7) <> "system:" GROUP BY T.tag ORDER BY bCount DESC, tag';
$query = 'SELECT T.tag, COUNT(T.bId) AS bCount FROM '. $this->getTableName() .' AS T, '. $GLOBALS['tableprefix'] .'bookmarks AS B WHERE ';
if (is_null($user) || ($user === false)) {
$query .= 'B.bId = T.bId AND B.bStatus = 0';
} else {
$query .= 'B.uId = '. $this->db->sql_escape($user) .' AND B.bId = T.bId'. $privacy;
}
$query .= $span .' AND LEFT(T.tag, 7) <> "system:" GROUP BY T.tag ORDER BY bCount DESC, tag';
if (!($dbresult =& $this->db->sql_query_limit($query, $limit))) {
message_die(GENERAL_ERROR, 'Could not get popular tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (!($dbresult =& $this->db->sql_query_limit($query, $limit))) {
message_die(GENERAL_ERROR, 'Could not get popular tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$output = $this->db->sql_fetchrowset($dbresult);
return $output;
}
$output = $this->db->sql_fetchrowset($dbresult);
return $output;
}
function hasTag($bookmarkid, $tag) {
$query = 'SELECT COUNT(*) AS tCount FROM '. $this->getTableName() .' WHERE bId = '. intval($bookmarkid) .' AND tag ="'. $this->db->sql_escape($tag) .'"';
function hasTag($bookmarkid, $tag) {
$query = 'SELECT COUNT(*) AS tCount FROM '. $this->getTableName() .' WHERE bId = '. intval($bookmarkid) .' AND tag ="'. $this->db->sql_escape($tag) .'"';
if (! ($dbresult =& $this->db->sql_query($query)) ) {
message_die(GENERAL_ERROR, 'Could not find tag', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (! ($dbresult =& $this->db->sql_query($query)) ) {
message_die(GENERAL_ERROR, 'Could not find tag', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
if ($row['tCount'] > 0) {
return true;
}
}
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
if ($row['tCount'] > 0) {
return true;
}
}
return false;
}
function renameTag($userid, $old, $new, $fromApi = false) {
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
function renameTag($userid, $old, $new, $fromApi = false) {
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
if (is_null($userid) || is_null($old) || is_null($new))
return false;
if (is_null($userid) || is_null($old) || is_null($new))
return false;
// Find bookmarks with old tag
$bookmarksInfo =& $bookmarkservice->getBookmarks(0, NULL, $userid, $old);
$bookmarks =& $bookmarksInfo['bookmarks'];
// Find bookmarks with old tag
$bookmarksInfo =& $bookmarkservice->getBookmarks(0, NULL, $userid, $old);
$bookmarks =& $bookmarksInfo['bookmarks'];
// Delete old tag
$this->deleteTag($userid, $old);
// Delete old tag
$this->deleteTag($userid, $old);
// Attach new tags
foreach(array_keys($bookmarks) as $key) {
$row =& $bookmarks[$key];
$this->attachTags($row['bId'], $new, $fromApi, NULL, false);
}
// Attach new tags
foreach(array_keys($bookmarks) as $key) {
$row =& $bookmarks[$key];
$this->attachTags($row['bId'], $new, $fromApi, NULL, false);
}
return true;
}
return true;
}
function &tagCloud($tags = NULL, $steps = 5, $sizemin = 90, $sizemax = 225, $sortOrder = NULL) {
function &tagCloud($tags = NULL, $steps = 5, $sizemin = 90, $sizemax = 225, $sortOrder = NULL) {
if (is_null($tags) || count($tags) < 1) {
$output = false;
return $output;
}
if (is_null($tags) || count($tags) < 1) {
$output = false;
return $output;
}
$min = $tags[count($tags) - 1]['bCount'];
$max = $tags[0]['bCount'];
$min = $tags[count($tags) - 1]['bCount'];
$max = $tags[0]['bCount'];
for ($i = 1; $i <= $steps; $i++) {
$delta = ($max - $min) / (2 * $steps - $i);
$limit[$i] = $i * $delta + $min;
}
$sizestep = ($sizemax - $sizemin) / $steps;
foreach ($tags as $row) {
$next = false;
for ($i = 1; $i <= $steps; $i++) {
if (!$next && $row['bCount'] <= $limit[$i]) {
$size = $sizestep * ($i - 1) + $sizemin;
$next = true;
}
}
$tempArray = array('size' => $size .'%');
$row = array_merge($row, $tempArray);
$output[] = $row;
}
for ($i = 1; $i <= $steps; $i++) {
$delta = ($max - $min) / (2 * $steps - $i);
$limit[$i] = $i * $delta + $min;
}
$sizestep = ($sizemax - $sizemin) / $steps;
foreach ($tags as $row) {
$next = false;
for ($i = 1; $i <= $steps; $i++) {
if (!$next && $row['bCount'] <= $limit[$i]) {
$size = $sizestep * ($i - 1) + $sizemin;
$next = true;
}
}
$tempArray = array('size' => $size .'%');
$row = array_merge($row, $tempArray);
$output[] = $row;
}
if ($sortOrder == 'alphabet_asc') {
usort($output, create_function('$a,$b','return strcasecmp(utf8_deaccent($a["tag"]), utf8_deaccent($b["tag"]));'));
}
if ($sortOrder == 'alphabet_asc') {
usort($output, create_function('$a,$b','return strcasecmp(utf8_deaccent($a["tag"]), utf8_deaccent($b["tag"]));'));
}
return $output;
}
return $output;
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
}
// Properties
function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; }
// Properties
function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; }
}
?>

View File

@ -20,6 +20,8 @@ class BookmarkService {
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$sId = $userservice->getCurrentUserId();
$range = ' AND uId = '. $sId;
} else {
$range = '';
}
$query = 'SELECT * FROM '. $this->getTableName() .' WHERE '. $fieldname .' = "'. $this->db->sql_escape($value) .'"'. $range;
@ -271,6 +273,7 @@ class BookmarkService {
} else {
$arrWatch = $userservice->getWatchlist($user);
if (count($arrWatch) > 0) {
$query_3_1 = '';
foreach($arrWatch as $row) {
$query_3_1 .= 'B.uId = '. intval($row) .' OR ';
}

View File

@ -1,153 +1,153 @@
<?php
class CommonDescriptionService {
var $db;
var $tablename;
var $db;
var $tablename;
function &getInstance(&$db) {
static $instance;
if (!isset($instance))
$instance =& new CommonDescriptionService($db);
return $instance;
}
function CommonDescriptionService(&$db) {
$this->db =& $db;
$this->tablename = $GLOBALS['tableprefix'] .'commondescription';
}
function addTagDescription($tag, $desc, $uId, $time) {
// Check if no modification
$lastDesc = $this->getLastTagDescription($tag);
if($lastDesc['cdDescription'] == $desc) {
return true;
function &getInstance(&$db) {
static $instance;
if (!isset($instance))
$instance =& new CommonDescriptionService($db);
return $instance;
}
// If modification
$datetime = gmdate('Y-m-d H:i:s', $time);
$values = array('tag'=>$tag, 'cdDescription'=>$desc, 'uId'=>$uId, 'cdDatetime'=>$datetime);
$sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
if (!($dbresult =& $this->db->sql_query($sql))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not add tag description', '', __LINE__, __FILE__, $sql, $this->db);
return false;
function CommonDescriptionService(&$db) {
$this->db =& $db;
$this->tablename = $GLOBALS['tableprefix'] .'commondescription';
}
return true;
}
function addTagDescription($tag, $desc, $uId, $time) {
// Check if no modification
$lastDesc = $this->getLastTagDescription($tag);
if($lastDesc['cdDescription'] == $desc) {
return true;
}
function getLastTagDescription($tag) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE tag='".$tag."'";
$query.= " ORDER BY cdDatetime DESC";
// If modification
$datetime = gmdate('Y-m-d H:i:s', $time);
$values = array('tag'=>$tag, 'cdDescription'=>$desc, 'uId'=>$uId, 'cdDatetime'=>$datetime);
$sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
if (!($dbresult = & $this->db->sql_query_limit($query, 1, 0))) {
message_die(GENERAL_ERROR, 'Could not get tag description', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (!($dbresult =& $this->db->sql_query($sql))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not add tag description', '', __LINE__, __FILE__, $sql, $this->db);
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
return $row;
} else {
return false;
}
}
function getAllTagsDescription($tag) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE tag='".$tag."'";
$query.= " ORDER BY cdDatetime DESC";
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tag descriptions', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
function getDescriptionById($cdId) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE cdId='".$cdId."'";
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tag descriptions', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
return $row;
} else {
return false;
}
}
function addBookmarkDescription($bHash, $title, $desc, $uId, $time) {
// Check if no modification
$lastDesc = $this->getLastBookmarkDescription($bHash);
if($lastDesc['cdTitle'] == $title && $lastDesc['cdDescription'] == $desc) {
return true;
return true;
}
// If modification
$datetime = gmdate('Y-m-d H:i:s', $time);
$values = array('bHash'=>$bHash, 'cdTitle'=>$title, 'cdDescription'=>$desc, 'uId'=>$uId, 'cdDatetime'=>$datetime);
$sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
function getLastTagDescription($tag) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE tag='".$tag."'";
$query.= " ORDER BY cdDatetime DESC";
if (!($dbresult =& $this->db->sql_query($sql))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not add bookmark description', '', __LINE__, __FILE__, $sql, $this->db);
return false;
if (!($dbresult = & $this->db->sql_query_limit($query, 1, 0))) {
message_die(GENERAL_ERROR, 'Could not get tag description', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
return $row;
} else {
return false;
}
}
return true;
}
function getLastBookmarkDescription($bHash) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE bHash='".$bHash."'";
$query.= " ORDER BY cdDatetime DESC";
function getAllTagsDescription($tag) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE tag='".$tag."'";
$query.= " ORDER BY cdDatetime DESC";
if (!($dbresult = & $this->db->sql_query_limit($query, 1, 0))) {
message_die(GENERAL_ERROR, 'Could not get bookmark description', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tag descriptions', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
return $row;
} else {
return false;
}
}
return $this->db->sql_fetchrowset($dbresult);
function getAllBookmarksDescription($bHash) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE bHash='".$bHash."'";
$query.= " ORDER BY cdDatetime DESC";
}
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get bookmark descriptions', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
function getDescriptionById($cdId) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE cdId='".$cdId."'";
return $this->db->sql_fetchrowset($dbresult);
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tag descriptions', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
return $row;
} else {
return false;
}
}
function addBookmarkDescription($bHash, $title, $desc, $uId, $time) {
// Check if no modification
$lastDesc = $this->getLastBookmarkDescription($bHash);
if($lastDesc['cdTitle'] == $title && $lastDesc['cdDescription'] == $desc) {
return true;
}
// If modification
$datetime = gmdate('Y-m-d H:i:s', $time);
$values = array('bHash'=>$bHash, 'cdTitle'=>$title, 'cdDescription'=>$desc, 'uId'=>$uId, 'cdDatetime'=>$datetime);
$sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
if (!($dbresult =& $this->db->sql_query($sql))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not add bookmark description', '', __LINE__, __FILE__, $sql, $this->db);
return false;
}
return true;
}
function getLastBookmarkDescription($bHash) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE bHash='".$bHash."'";
$query.= " ORDER BY cdDatetime DESC";
if (!($dbresult = & $this->db->sql_query_limit($query, 1, 0))) {
message_die(GENERAL_ERROR, 'Could not get bookmark description', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
return $row;
} else {
return false;
}
}
function getAllBookmarksDescription($bHash) {
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE bHash='".$bHash."'";
$query.= " ORDER BY cdDatetime DESC";
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get bookmark descriptions', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
}
// Properties
function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; }
// Properties
function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; }
}
?>

View File

@ -1,297 +1,297 @@
<?php
class Tag2TagService {
var $db;
var $tablename;
var $db;
var $tablename;
function &getInstance(&$db) {
static $instance;
if (!isset($instance))
$instance =& new Tag2TagService($db);
return $instance;
}
function &getInstance(&$db) {
static $instance;
if (!isset($instance))
$instance =& new Tag2TagService($db);
return $instance;
}
function Tag2TagService(&$db) {
$this->db =& $db;
$this->tablename = $GLOBALS['tableprefix'] .'tags2tags';
}
function Tag2TagService(&$db) {
$this->db =& $db;
$this->tablename = $GLOBALS['tableprefix'] .'tags2tags';
}
function addLinkedTags($tag1, $tag2, $relationType, $uId) {
if($tag1 == $tag2 || strlen($tag1) == 0 || strlen($tag2) == 0
function addLinkedTags($tag1, $tag2, $relationType, $uId) {
if($tag1 == $tag2 || strlen($tag1) == 0 || strlen($tag2) == 0
|| ($relationType != ">" && $relationType != "=")
|| ($this->existsLinkedTags($tag1, $tag2, $relationType, $uId))) {
return false;
}
$values = array('tag1' => $tag1, 'tag2' => $tag2, 'relationType'=> $relationType, 'uId'=> $uId);
$query = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
//die($query);
if (!($dbresult =& $this->db->sql_query($query))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not attach tag to tag', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$this->db->sql_transaction('commit');
// Update stats
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->updateStat($tag1, $relationType, $uId);
return true;
}
// Return the target linked tags. If inverseRelation is true, return the source linked tags.
function getLinkedTags($tag, $relationType, $uId = null, $inverseRelation = false, $stopList = array()) {
// Set up the SQL query.
if($inverseRelation) {
$queriedTag = "tag1";
$givenTag = "tag2";
} else {
$queriedTag = "tag2";
$givenTag = "tag1";
}
$query = "SELECT DISTINCT ". $queriedTag ." as 'tag'";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE 1=1";
if($tag !=null) {
$query.= " AND ". $givenTag ." = '". $tag ."'";
}
if($relationType) {
$query.= " AND relationType = '". $relationType ."'";
}
if($uId != null) {
$query.= " AND uId = '".$uId."'";
}
//die($query);
if (! ($dbresult =& $this->db->sql_query($query)) ){
message_die(GENERAL_ERROR, 'Could not get related tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$rowset = $this->db->sql_fetchrowset($dbresult);
$output = array();
foreach($rowset as $row) {
if(!in_array($row['tag'], $stopList)) {
$output[] = $row['tag'];
}
}
//bijective case for '='
if($relationType == '=' && $inverseRelation == false) {
//$stopList[] = $tag;
$bijectiveOutput = $this->getLinkedTags($tag, $relationType, $uId, true, $stopList);
$output = array_merge($output, $bijectiveOutput);
//$output = array_unique($output); // remove duplication
}
return $output;
}
/* TODO: clean the outputs to obtain homogenous ones*/
function getAllLinkedTags($tag1, $relationType, $uId, $asFlatList=true, $stopList=array()) {
$asFlatList = true; //we disable the tree list parameter for the moment
if(in_array($tag1, $stopList)) {
return array();
}
$stopList[] = $tag1;
$linkedTags = $this->getLinkedTags($tag1, $relationType, $uId, false, $stopList);
if($relationType != '=') {
$linkedTags = array_merge($linkedTags, $this->getLinkedTags($tag1, '=', $uId, false, $stopList));
}
if(count($linkedTags) == 0) {
return array();
} else {
$output = array();
if($asFlatList == true) {
//$output[$tag1] = $tag1;
} else {
$output = array('node'=>$tag1);
}
foreach($linkedTags as $linkedTag) {
$allLinkedTags = $this->getAllLinkedTags($linkedTag, $relationType, $uId, $asFlatList, $stopList);
if($asFlatList == true) {
$output[] = $linkedTag;
if(is_array($allLinkedTags)) {
$output = array_merge($output, $allLinkedTags);
} else {
$output[] = $allLinkedTags;
}
} else {
$output[] = $allLinkedTags;
return false;
}
}
}
//$output = array_unique($output); // remove duplication
return $output;
}
$values = array('tag1' => $tag1, 'tag2' => $tag2, 'relationType'=> $relationType, 'uId'=> $uId);
$query = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
//die($query);
if (!($dbresult =& $this->db->sql_query($query))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not attach tag to tag', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$this->db->sql_transaction('commit');
function getOrphewTags($relationType, $uId = 0, $limit = null, $orderBy = null) {
$query = "SELECT DISTINCT tts.tag1 as tag";
$query.= " FROM `". $this->getTableName() ."` tts";
if($orderBy != null) {
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$query.= ", ".$tsts->getTableName() ." tsts";
}
$query.= " WHERE tts.tag1 <> ALL";
$query.= " (SELECT DISTINCT tag2 FROM `". $this->getTableName() ."`";
$query.= " WHERE relationType = '".$relationType."'";
if($uId > 0) {
$query.= " AND uId = '".$uId."'";
}
$query.= ")";
if($uId > 0) {
$query.= " AND tts.uId = '".$uId."'";
// Update stats
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->updateStat($tag1, $relationType, $uId);
return true;
}
switch($orderBy) {
// Return the target linked tags. If inverseRelation is true, return the source linked tags.
function getLinkedTags($tag, $relationType, $uId = null, $inverseRelation = false, $stopList = array()) {
// Set up the SQL query.
if($inverseRelation) {
$queriedTag = "tag1";
$givenTag = "tag2";
} else {
$queriedTag = "tag2";
$givenTag = "tag1";
}
$query = "SELECT DISTINCT ". $queriedTag ." as 'tag'";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE 1=1";
if($tag !=null) {
$query.= " AND ". $givenTag ." = '". $tag ."'";
}
if($relationType) {
$query.= " AND relationType = '". $relationType ."'";
}
if($uId != null) {
$query.= " AND uId = '".$uId."'";
}
//die($query);
if (! ($dbresult =& $this->db->sql_query($query)) ){
message_die(GENERAL_ERROR, 'Could not get related tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$rowset = $this->db->sql_fetchrowset($dbresult);
$output = array();
foreach($rowset as $row) {
if(!in_array($row['tag'], $stopList)) {
$output[] = $row['tag'];
}
}
//bijective case for '='
if($relationType == '=' && $inverseRelation == false) {
//$stopList[] = $tag;
$bijectiveOutput = $this->getLinkedTags($tag, $relationType, $uId, true, $stopList);
$output = array_merge($output, $bijectiveOutput);
//$output = array_unique($output); // remove duplication
}
return $output;
}
/* TODO: clean the outputs to obtain homogenous ones*/
function getAllLinkedTags($tag1, $relationType, $uId, $asFlatList=true, $stopList=array()) {
$asFlatList = true; //we disable the tree list parameter for the moment
if(in_array($tag1, $stopList) || $tag1 == '') {
return array();
}
$stopList[] = $tag1;
$linkedTags = $this->getLinkedTags($tag1, $relationType, $uId, false, $stopList);
if($relationType != '=') {
$linkedTags = array_merge($linkedTags, $this->getLinkedTags($tag1, '=', $uId, false, $stopList));
}
if(count($linkedTags) == 0) {
return array();
} else {
$output = array();
if($asFlatList == true) {
//$output[$tag1] = $tag1;
} else {
$output = array('node'=>$tag1);
}
foreach($linkedTags as $linkedTag) {
$allLinkedTags = $this->getAllLinkedTags($linkedTag, $relationType, $uId, $asFlatList, $stopList);
if($asFlatList == true) {
$output[] = $linkedTag;
if(is_array($allLinkedTags)) {
$output = array_merge($output, $allLinkedTags);
} else {
$output[] = $allLinkedTags;
}
} else {
$output[] = $allLinkedTags;
}
}
}
//$output = array_unique($output); // remove duplication
return $output;
}
function getOrphewTags($relationType, $uId = 0, $limit = null, $orderBy = null) {
$query = "SELECT DISTINCT tts.tag1 as tag";
$query.= " FROM `". $this->getTableName() ."` tts";
if($orderBy != null) {
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$query.= ", ".$tsts->getTableName() ." tsts";
}
$query.= " WHERE tts.tag1 <> ALL";
$query.= " (SELECT DISTINCT tag2 FROM `". $this->getTableName() ."`";
$query.= " WHERE relationType = '".$relationType."'";
if($uId > 0) {
$query.= " AND uId = '".$uId."'";
}
$query.= ")";
if($uId > 0) {
$query.= " AND tts.uId = '".$uId."'";
}
switch($orderBy) {
case "nb":
$query.= " AND tts.tag1 = tsts.tag1";
$query.= " AND tsts.relationType = '".$relationType."'";
if($uId > 0) {
$query.= " AND tsts.uId = ".$uId;
}
$query.= " ORDER BY tsts.nb DESC";
break;
$query.= " AND tts.tag1 = tsts.tag1";
$query.= " AND tsts.relationType = '".$relationType."'";
if($uId > 0) {
$query.= " AND tsts.uId = ".$uId;
}
$query.= " ORDER BY tsts.nb DESC";
break;
case "depth": // by nb of descendants
$query.= " AND tts.tag1 = tsts.tag1";
$query.= " AND tsts.relationType = '".$relationType."'";
if($uId > 0) {
$query.= " AND tsts.uId = ".$uId;
}
$query.= " ORDER BY tsts.depth DESC";
break;
$query.= " AND tts.tag1 = tsts.tag1";
$query.= " AND tsts.relationType = '".$relationType."'";
if($uId > 0) {
$query.= " AND tsts.uId = ".$uId;
}
$query.= " ORDER BY tsts.depth DESC";
break;
case "nbupdate":
$query.= " AND tts.tag1 = tsts.tag1";
$query.= " AND tsts.relationType = '".$relationType."'";
if($uId > 0) {
$query.= " AND tsts.uId = ".$uId;
}
$query.= " ORDER BY tsts.nbupdate DESC";
break;
$query.= " AND tts.tag1 = tsts.tag1";
$query.= " AND tsts.relationType = '".$relationType."'";
if($uId > 0) {
$query.= " AND tsts.uId = ".$uId;
}
$query.= " ORDER BY tsts.nbupdate DESC";
break;
}
if($limit != null) {
$query.= " LIMIT 0,".$limit;
}
if (! ($dbresult =& $this->db->sql_query($query)) ){
message_die(GENERAL_ERROR, 'Could not get linked tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
if($limit != null) {
$query.= " LIMIT 0,".$limit;
function getMenuTags($uId) {
if(strlen($GLOBALS['menuTag']) < 1) {
return array();
} else {
// we don't use the getAllLinkedTags function in order to improve performance
$query = "SELECT tag2 as 'tag', COUNT(tag2) as 'count'";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE tag1 = '".$GLOBALS['menuTag']."'";
$query.= " AND relationType = '>'";
if($uId > 0) {
$query.= " AND uId = '".$uId."'";
}
$query.= " GROUP BY tag2";
$query.= " ORDER BY count DESC";
$query.= " LIMIT 0, ".$GLOBALS['maxSizeMenuBlock'];
if (! ($dbresult =& $this->db->sql_query($query)) ){
message_die(GENERAL_ERROR, 'Could not get linked tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
}
if (! ($dbresult =& $this->db->sql_query($query)) ){
message_die(GENERAL_ERROR, 'Could not get linked tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
function getMenuTags($uId) {
if(strlen($GLOBALS['menuTag']) < 1) {
return array();
} else {
// we don't use the getAllLinkedTags function in order to improve performance
$query = "SELECT tag2 as 'tag', COUNT(tag2) as 'count'";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE tag1 = '".$GLOBALS['menuTag']."'";
$query.= " AND relationType = '>'";
if($uId > 0) {
$query.= " AND uId = '".$uId."'";
}
$query.= " GROUP BY tag2";
$query.= " ORDER BY count DESC";
$query.= " LIMIT 0, ".$GLOBALS['maxSizeMenuBlock'];
function existsLinkedTags($tag1, $tag2, $relationType, $uId) {
$query = "SELECT tag1, tag2, relationType, uId FROM `". $this->getTableName() ."`";
$query.= " WHERE tag1 = '" .$tag1 ."'";
$query.= " AND tag2 = '".$tag2."'";
$query.= " AND relationType = '". $relationType ."'";
$query.= " AND uId = '".$uId."'";
if (! ($dbresult =& $this->db->sql_query($query)) ){
message_die(GENERAL_ERROR, 'Could not get linked tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
}
function existsLinkedTags($tag1, $tag2, $relationType, $uId) {
$query = "SELECT tag1, tag2, relationType, uId FROM `". $this->getTableName() ."`";
$query.= " WHERE tag1 = '" .$tag1 ."'";
$query.= " AND tag2 = '".$tag2."'";
$query.= " AND relationType = '". $relationType ."'";
$query.= " AND uId = '".$uId."'";
return $this->db->sql_numrows($this->db->sql_query($query)) > 0;
}
function getLinks($uId) {
$query = "SELECT tag1, tag2, relationType, uId FROM `". $this->getTableName() ."`";
$query.= " WHERE 1=1";
if($uId > 0) {
$query.= " AND uId = '".$uId."'";
return $this->db->sql_numrows($this->db->sql_query($query)) > 0;
}
return $this->db->sql_fetchrowset($this->db->sql_query($query));
}
function getLinks($uId) {
$query = "SELECT tag1, tag2, relationType, uId FROM `". $this->getTableName() ."`";
$query.= " WHERE 1=1";
if($uId > 0) {
$query.= " AND uId = '".$uId."'";
}
function removeLinkedTags($tag1, $tag2, $relationType, $uId) {
if(($tag1 != '' && $tag1 == $tag2) ||
($relationType != ">" && $relationType != "=" && $relationType != "") ||
($tag1 == '' && $tag2 == '' && $relationType == '' && $uId == '')) {
return false;
return $this->db->sql_fetchrowset($this->db->sql_query($query));
}
$query = 'DELETE FROM '. $this->getTableName();
$query.= ' WHERE 1=1';
$query.= strlen($tag1)>0 ? ' AND tag1 = "'. $tag1 .'"' : '';
$query.= strlen($tag2)>0 ? ' AND tag2 = "'. $tag2 .'"' : '';
$query.= strlen($relationType)>0 ? ' AND relationType = "'. $relationType .'"' : '';
$query.= strlen($uId)>0 ? ' AND uId = "'. $uId .'"' : '';
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not remove tag relation', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
function removeLinkedTags($tag1, $tag2, $relationType, $uId) {
if(($tag1 != '' && $tag1 == $tag2) ||
($relationType != ">" && $relationType != "=" && $relationType != "") ||
($tag1 == '' && $tag2 == '' && $relationType == '' && $uId == '')) {
return false;
}
$query = 'DELETE FROM '. $this->getTableName();
$query.= ' WHERE 1=1';
$query.= strlen($tag1)>0 ? ' AND tag1 = "'. $tag1 .'"' : '';
$query.= strlen($tag2)>0 ? ' AND tag2 = "'. $tag2 .'"' : '';
$query.= strlen($relationType)>0 ? ' AND relationType = "'. $relationType .'"' : '';
$query.= strlen($uId)>0 ? ' AND uId = "'. $uId .'"' : '';
// Update stats
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->updateStat($tag1, $relationType, $uId);
if (!($dbresult =& $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not remove tag relation', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return true;
}
// Update stats
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->updateStat($tag1, $relationType, $uId);
function renameTag($uId, $oldName, $newName) {
$query = 'UPDATE `'. $this->getTableName() .'`';
$query.= ' SET tag1="'.$newName.'"';
$query.= ' WHERE tag1="'.$oldName.'"';
$query.= ' AND uId="'.$uId.'"';
$this->db->sql_query($query);
return true;
}
$query = 'UPDATE `'. $this->getTableName() .'`';
$query.= ' SET tag2="'.$newName.'"';
$query.= ' WHERE tag2="'.$oldName.'"';
$query.= ' AND uId="'.$uId.'"';
$this->db->sql_query($query);
function renameTag($uId, $oldName, $newName) {
$query = 'UPDATE `'. $this->getTableName() .'`';
$query.= ' SET tag1="'.$newName.'"';
$query.= ' WHERE tag1="'.$oldName.'"';
$query.= ' AND uId="'.$uId.'"';
$this->db->sql_query($query);
// Update stats
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->updateStat($oldName, '=', $uId);
$tsts->updateStat($oldName, '>', $uId);
$tsts->updateStat($newName, '=', $uId);
$tsts->updateStat($newName, '>', $uId);
$query = 'UPDATE `'. $this->getTableName() .'`';
$query.= ' SET tag2="'.$newName.'"';
$query.= ' WHERE tag2="'.$oldName.'"';
$query.= ' AND uId="'.$uId.'"';
$this->db->sql_query($query);
return true;
// Update stats
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->updateStat($oldName, '=', $uId);
$tsts->updateStat($oldName, '>', $uId);
$tsts->updateStat($newName, '=', $uId);
$tsts->updateStat($newName, '>', $uId);
}
return true;
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
}
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->deleteAll();
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
// Properties
function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; }
$tsts =& ServiceFactory::getServiceInstance('TagStatService');
$tsts->deleteAll();
}
// Properties
function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; }
}
?>

View File

@ -1,89 +1,90 @@
<?php
class TagService {
var $db;
var $tablename;
var $db;
var $tablename;
function &getInstance(&$db) {
static $instance;
if (!isset($instance))
$instance =& new TagService($db);
return $instance;
}
function TagService(&$db) {
$this->db =& $db;
$this->tablename = $GLOBALS['tableprefix'] .'tags';
}
function getDescription($tag, $uId) {
$query = 'SELECT tag, uId, tDescription';
$query.= ' FROM '.$this->getTableName();
$query.= ' WHERE tag = "'.$tag.'"';
$query.= ' AND uId = "'.$uId.'"';
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tag description', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
return $row;
} else {
return array();
}
}
function getAllDescriptions($tag) {
$query = 'SELECT tag, uId, tDescription';
$query.= ' FROM '.$this->getTableName();
$query.= ' WHERE tag = "'.$tag.'"';
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tag description', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
function updateDescription($tag, $uId, $desc) {
if(count($this->getDescription($tag, $uId))>0) {
$query = 'UPDATE '.$this->getTableName();
$query.= ' SET tDescription="'.$this->db->sql_escape($desc).'"';
$query.= ' WHERE tag="'.$tag.'" AND uId="'.$uId.'"';
} else {
$values = array('tag'=>$tag, 'uId'=>$uId, 'tDescription'=>$desc);
$query = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
function &getInstance(&$db) {
static $instance;
if (!isset($instance))
$instance =& new TagService($db);
return $instance;
}
$this->db->sql_transaction('begin');
if (!($dbresult = & $this->db->sql_query($query))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not delete bookmarks', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$this->db->sql_transaction('commit');
return true;
}
function TagService(&$db) {
$this->db =& $db;
$this->tablename = $GLOBALS['tableprefix'] .'tags';
}
function renameTag($uId, $oldName, $newName) {
$query = 'UPDATE `'. $this->getTableName() .'`';
$query.= ' SET tag="'.$newName.'"';
$query.= ' WHERE tag="'.$oldName.'"';
$query.= ' AND uId="'.$uId.'"';
$this->db->sql_query($query);
return true;
}
function getDescription($tag, $uId) {
$query = 'SELECT tag, uId, tDescription';
$query.= ' FROM '.$this->getTableName();
$query.= ' WHERE tag = "'.$tag.'"';
$query.= ' AND uId = "'.$uId.'"';
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tag description', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
if ($row =& $this->db->sql_fetchrow($dbresult)) {
return $row;
} else {
return array('tDescription'=>'');
}
}
function getAllDescriptions($tag) {
$query = 'SELECT tag, uId, tDescription';
$query.= ' FROM '.$this->getTableName();
$query.= ' WHERE tag = "'.$tag.'"';
if (!($dbresult = & $this->db->sql_query($query))) {
message_die(GENERAL_ERROR, 'Could not get tag description', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
return $this->db->sql_fetchrowset($dbresult);
}
function updateDescription($tag, $uId, $desc) {
$objectTag = $this->getDescription($tag, $uId);
if(count($objectTag)>0 && $objectTag['tDescription'] != '') {
$query = 'UPDATE '.$this->getTableName();
$query.= ' SET tDescription="'.$this->db->sql_escape($desc).'"';
$query.= ' WHERE tag="'.$tag.'" AND uId="'.$uId.'"';
} else {
$values = array('tag'=>$tag, 'uId'=>$uId, 'tDescription'=>$desc);
$query = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);
}
$this->db->sql_transaction('begin');
if (!($dbresult = & $this->db->sql_query($query))) {
$this->db->sql_transaction('rollback');
message_die(GENERAL_ERROR, 'Could not delete bookmarks', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
$this->db->sql_transaction('commit');
return true;
}
function renameTag($uId, $oldName, $newName) {
$query = 'UPDATE `'. $this->getTableName() .'`';
$query.= ' SET tag="'.$newName.'"';
$query.= ' WHERE tag="'.$oldName.'"';
$query.= ' AND uId="'.$uId.'"';
$this->db->sql_query($query);
return true;
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
}
// Properties
function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; }
// Properties
function getTableName() { return $this->tablename; }
function setTableName($value) { $this->tablename = $value; }
}
?>

View File

@ -76,6 +76,22 @@ class UserService {
return $users;
}
function & getObjectUsers($nb=0) {
$query = 'SELECT * FROM '. $this->getTableName() .' ORDER BY `uId` DESC';
if($nb>0) {
$query .= ' LIMIT 0, '.$nb;
}
if (! ($dbresult =& $this->db->sql_query($query)) ) {
message_die(GENERAL_ERROR, 'Could not get user', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
while ($row = & $this->db->sql_fetchrow($dbresult)) {
$users[] = new User($row[$this->getFieldName('primary')], $row[$this->getFieldName('username')]);
}
return $users;
}
function _randompassword() {
$seed = (integer) md5(microtime());
mt_srand($seed);
@ -109,6 +125,11 @@ class UserService {
return $this->_getuser($this->getFieldName('username'), $username);
}
function getObjectUserByUsername($username) {
$user = $this->_getuser($this->getFieldName('username'), $username);
return new User($user[$this->getFieldName('primary')], $username);
}
function getUser($id) {
return $this->_getuser($this->getFieldName('primary'), $id);
}
@ -152,6 +173,22 @@ class UserService {
return $currentObjectUser;
}
function existsUserWithUsername($username) {
if($this->getUserByUsername($username) != '') {
return true;
} else {
return false;
}
}
function existsUser($id) {
if($this->getUser($id) != '') {
return true;
} else {
return false;
}
}
function isAdmin($userid) {
$user = $this->getUser($userid);
@ -446,10 +483,17 @@ class UserService {
function setCookieKey($value) { $this->cookiekey = $value; }
}
/* Defines a user. Rare fields are filled if required. */
class User {
var $id;
var $username;
var $name;
var $email;
var $homepage;
var $content;
var $datetime;
var $isAdmin;
function User($id, $username) {
@ -465,8 +509,58 @@ class User {
return $this->username;
}
function getName() {
// Look for value only if not already set
if(!isset($this->name)) {
$userservice =& ServiceFactory::getServiceInstance('UserService');
$user = $userservice->getUser($this->id);
$this->name = $user['name'];
}
return $this->name;
}
function getEmail() {
// Look for value only if not already set
if(!isset($this->email)) {
$userservice =& ServiceFactory::getServiceInstance('UserService');
$user = $userservice->getUser($this->id);
$this->email = $user['email'];
}
return $this->email;
}
function getHomepage() {
// Look for value only if not already set
if(!isset($this->homepage)) {
$userservice =& ServiceFactory::getServiceInstance('UserService');
$user = $userservice->getUser($this->id);
$this->homepage = $user['homepage'];
}
return $this->homepage;
}
function getContent() {
// Look for value only if not already set
if(!isset($this->content)) {
$userservice =& ServiceFactory::getServiceInstance('UserService');
$user = $userservice->getUser($this->id);
$this->content = $user['uContent'];
}
return $this->content;
}
function getDatetime() {
// Look for value only if not already set
if(!isset($this->content)) {
$userservice =& ServiceFactory::getServiceInstance('UserService');
$user = $userservice->getUser($this->id);
$this->datetime = $user['uDatetime'];
}
return $this->datetime;
}
function isAdmin() {
// Look for value if not already set
// Look for value only if not already set
if(!isset($this->isAdmin)) {
$userservice =& ServiceFactory::getServiceInstance('UserService');
$this->isAdmin = $userservice->isAdmin($this->id);

View File

@ -20,43 +20,52 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$tag2tagservice = & ServiceFactory :: getServiceInstance('Tag2TagService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
/* Managing all possible inputs */
isset($_POST['confirm']) ? define('POST_CONFIRM', $_POST['confirm']): define('POST_CONFIRM', '');
isset($_POST['cancel']) ? define('POST_CANCEL', $_POST['cancel']): define('POST_CANCEL', '');
isset($_POST['tag1']) ? define('POST_TAG1', $_POST['tag1']): define('POST_TAG1', '');
isset($_POST['linkType']) ? define('POST_LINKTYPE', $_POST['linkType']): define('POST_LINKTYPE', '');
isset($_POST['tag2']) ? define('POST_TAG2', $_POST['tag2']): define('POST_TAG2', '');
$logged_on_user = $userservice->getCurrentUser();
/* Managing current logged user */
$currentObjectUser = $userservice->getCurrentObjectUser();
//permissions
if($logged_on_user == null) {
if(!$userservice->isLoggedOn()) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
/* Managing path info */
list ($url, $tag1) = explode('/', $_SERVER['PATH_INFO']);
if ($_POST['confirm']) {
$tag1 = $_POST['tag1'];
$linkType = $_POST['linkType'];
$tag2 = $_POST['tag2'];
if ($tag2tagservice->addLinkedTags($tag1, $tag2, $linkType, $userservice->getCurrentUserId())) {
if (POST_CONFIRM != '') {
$tag1 = POST_TAG1;
$linkType = POST_LINKTYPE;
$tag2 = POST_TAG2;
if ($tag2tagservice->addLinkedTags($tag1, $tag2, $linkType, $currentObjectUser->getId())) {
$tplVars['msg'] = T_('Tag link created');
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')]));
header('Location: '. createURL('bookmarks', $currentObjectUser->getUsername()));
} else {
$tplVars['error'] = T_('Failed to create the link');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
} elseif ($_POST['cancel']) {
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')] .'/'. $tags));
} elseif (POST_CANCEL) {
header('Location: '. createURL('bookmarks', $currentObjectUser->getUsername() .'/'. $tags));
}
$tplVars['links'] = $tag2tagservice->getLinks($userservice->getCurrentUserId());
$tplVars['links'] = $tag2tagservice->getLinks($currentObjectUser->getId());
$tplVars['tag1'] = $tag1;
$tplVars['tag2'] = '';
$tplVars['subtitle'] = T_('Add Tag Link') .': '. $tag1;
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag1;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];

View File

@ -1,62 +1,87 @@
<?php
/***************************************************************************
Copyright (C) 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$tag2tagservice = & ServiceFactory :: getServiceInstance('Tag2TagService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$logged_on_user = $userservice->getCurrentUser();
/* Managing all possible inputs */
isset($_POST['confirm']) ? define('POST_CONFIRM', $_POST['confirm']): define('POST_CONFIRM', '');
isset($_POST['cancel']) ? define('POST_CANCEL', $_POST['cancel']): define('POST_CANCEL', '');
isset($_POST['tag1']) ? define('POST_TAG1', $_POST['tag1']): define('POST_TAG1', '');
isset($_POST['linkType']) ? define('POST_LINKTYPE', $_POST['linkType']): define('POST_LINKTYPE', '');
isset($_POST['tag2']) ? define('POST_TAG2', $_POST['tag2']): define('POST_TAG2', '');
isset($_SERVER['HTTP_REFERER']) ? define('HTTP_REFERER', $_SERVER['HTTP_REFERER']): define('HTTP_REFERER', '');
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
//permissions
if($logged_on_user == null) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
if(!$userservice->isloggedOn()) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
list ($url, $tag1, $tag2) = explode('/', $_SERVER['PATH_INFO']);
if ($_POST['confirm']) {
$tag = $_POST['tag1'];
$linkType = $_POST['linkType'];
$newTag = $_POST['tag2'];
if ($tag2tagservice->removeLinkedTags($_POST['tag1'], $_POST['tag2'], $linkType, $userservice->getCurrentUserId())) {
$tplVars['msg'] = T_('Tag link deleted');
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')].'/'.$tag));
} else {
$tplVars['error'] = T_('Failed to delete the link');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
} elseif ($_POST['cancel']) {
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')] .'/'. $tags));
/* Managing path info */
if(isset($_SERVER['PATH_INFO'])) {
$exploded = explode('/', $_SERVER['PATH_INFO']);
if(count($exploded) == 3) {
list ($url, $tag1, $tag2) = explode('/', $_SERVER['PATH_INFO']);
} else {
list ($url, $tag1) = explode('/', $_SERVER['PATH_INFO']);
$tag2 = '';
}
} else {
$url = $tag1 = $tag2 = '';
}
$tplVars['links'] = $tag2tagservice->getLinks($userservice->getCurrentUserId());
if (POST_CONFIRM) {
$tag = POST_TAG1;
$linkType = POST_LINKTYPE;
$newTag = POST_TAG2;
if ($tag2tagservice->removeLinkedTags(POST_TAG1, POST_TAG2, POST_LINKTYPE, $currentUser->getId())) {
$tplVars['msg'] = T_('Tag link deleted');
header('Location: '. createURL('bookmarks', $currentUser->getUsername().'/'.$tag));
} else {
$tplVars['error'] = T_('Failed to delete the link');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
} elseif (POST_CANCEL) {
header('Location: '. createURL('bookmarks', $currentUser->getUsername() .'/'. $tags));
}
$tplVars['links'] = $tag2tagservice->getLinks($currentUser->getId());
$tplVars['tag1'] = $tag1;
$tplVars['tag2'] = $tag2;
$tplVars['subtitle'] = T_('Delete Link Between Tags') .': '. $tag1.' > '.$tag2;
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'];
$tplVars['referrer'] = HTTP_REFERER;
$templateservice->loadTemplate('tag2tagdelete.tpl', $tplVars);
?>

View File

@ -20,12 +20,19 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$tag2tagservice = & ServiceFactory :: getServiceInstance('Tag2TagService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
/* Managing all possible inputs */
isset($_SERVER['HTTP_REFERER']) ? define('HTTP_REFERER', $_SERVER['HTTP_REFERER']): define('HTTP_REFERER', '');
/* Managing current logged user */
$logged_on_user = $userservice->getCurrentUser();
//permissions
if($logged_on_user == null) {
$tplVars['error'] = T_('Permission denied.');
@ -33,23 +40,18 @@ if($logged_on_user == null) {
exit();
}
list ($url, $tag1, $tag2) = explode('/', $_SERVER['PATH_INFO']);
/*if ($_POST['confirm']) {
$tag = $_POST['tag1'];
$linkType = $_POST['linkType'];
$newTag = $_POST['tag2'];
if ($tag2tagservice->removeLinkedTags($_POST['tag1'], $_POST['tag2'], $linkType, $userservice->getCurrentUserId())) {
$tplVars['msg'] = T_('Tag link deleted');
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')]));
} else {
$tplVars['error'] = T_('Failed to delete the link');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
} elseif ($_POST['cancel']) {
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')] .'/'. $tags));
}*/
/* Managing path info */
if(isset($_SERVER['PATH_INFO'])) {
$exploded = explode('/', $_SERVER['PATH_INFO']);
if(count($exploded) == 3) {
list ($url, $tag1, $tag2) = explode('/', $_SERVER['PATH_INFO']);
} else {
list ($url, $tag1) = explode('/', $_SERVER['PATH_INFO']);
$tag2 = '';
}
} else {
$url = $tag1 = $tag2 = '';
}
$tplVars['links'] = $tag2tagservice->getLinks($userservice->getCurrentUserId());
@ -58,6 +60,6 @@ $tplVars['tag2'] = $tag2;
$tplVars['subtitle'] = T_('Edit Link Between Tags') .': '. $tag1.' > '.$tag2;
$tplVars['formaddaction'] = createUrl('tag2tagadd');
$tplVars['formdeleteaction'] = createUrl('tag2tagdelete');
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['referrer'] = HTTP_REFERER;
$templateservice->loadTemplate('tag2tagedit.tpl', $tplVars);
?>

View File

@ -1,62 +1,73 @@
<?php
/***************************************************************************
Copyright (C) 2006 - 2007 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2006 - 2007 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$b2tservice = & ServiceFactory :: getServiceInstance('Bookmark2TagService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$cdservice = & ServiceFactory :: getServiceInstance('CommonDescriptionService');
list ($url, $tag) = explode('/', $_SERVER['PATH_INFO']);
$template = 'tagcommondescriptionedit.tpl';
/* Managing all possible inputs */
isset($_POST['confirm']) ? define('POST_CONFIRM', $_POST['confirm']): define('POST_CONFIRM', '');
isset($_POST['cancel']) ? define('POST_CANCEL', $_POST['cancel']): define('POST_CANCEL', '');
isset($_POST['description']) ? define('POST_DESCRIPTION', $_POST['description']): define('POST_DESCRIPTION', '');
isset($_POST['referrer']) ? define('POST_REFERRER', $_POST['referrer']): define('POST_REFERRER', '');
$logged_on_user = $userservice->getCurrentUser();
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
/* Managing path info */
list ($url, $tag) = explode('/', $_SERVER['PATH_INFO']);
//permissions
if($logged_on_user == null) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
if(!$userservice->isLoggedOn()) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
if ($_POST['confirm']) {
$template = 'tagcommondescriptionedit.tpl';
if ( strlen($tag)>0 &&
$cdservice->addTagDescription($tag, stripslashes($_POST['description']), $logged_on_user['uId'], time())
) {
$tplVars['msg'] = T_('Tag common description updated');
header('Location: '. $_POST['referrer']);
} else {
$tplVars['error'] = T_('Failed to update the tag common description');
$template = 'error.500.tpl';
}
} elseif ($_POST['cancel']) {
$logged_on_user = $userservice->getCurrentUser();
header('Location: '. $_POST['referrer']);
if (POST_CONFIRM) {
if ( strlen($tag)>0 &&
$cdservice->addTagDescription($tag, stripslashes(POST_DESCRIPTION), $currentUser->getId(), time())
) {
$tplVars['msg'] = T_('Tag common description updated');
header('Location: '. POST_REFERRER);
} else {
$tplVars['error'] = T_('Failed to update the tag common description');
$template = 'error.500.tpl';
}
} elseif (POST_CANCEL) {
header('Location: '. POST_REFERRER);
} else {
$tplVars['subtitle'] = T_('Edit Tag Common Description') .': '. $tag;
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['tag'] = $tag;
$tplVars['description'] = $cdservice->getLastTagDescription($tag);
$tplVars['subtitle'] = T_('Edit Tag Common Description') .': '. $tag;
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['tag'] = $tag;
$tplVars['description'] = $cdservice->getLastTagDescription($tag);
}
$templateservice->loadTemplate($template, $tplVars);
?>

View File

@ -20,25 +20,36 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$b2tservice = & ServiceFactory :: getServiceInstance('Bookmark2TagService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$logged_on_user = $userservice->getCurrentUser();
/* Managing all possible inputs */
isset($_POST['confirm']) ? define('POST_CONFIRM', $_POST['confirm']): define('POST_CONFIRM', '');
isset($_POST['cancel']) ? define('POST_CANCEL', $_POST['cancel']): define('POST_CANCEL', '');
isset($_POST['referrer']) ? define('POST_REFERRER', $_POST['referrer']): define('POST_REFERRER', '');
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
/* Managing path info */
list ($url, $tag) = explode('/', $_SERVER['PATH_INFO']);
if ($_POST['confirm']) {
if ($b2tservice->deleteTag($logged_on_user['uId'], $tag)) {
if (POST_CONFIRM) {
if ($b2tservice->deleteTag($currentUser->getId(), $tag)) {
$tplVars['msg'] = T_('Tag deleted');
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')]));
header('Location: '. createURL('bookmarks', $currentUser->getUsername()));
} else {
$tplVars['error'] = T_('Failed to delete the tag');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
} elseif ($_POST['cancel']) {
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')] .'/'. $tags));
} elseif (POST_CANCEL) {
header('Location: '. POST_REFERRER);
}
$tplVars['subtitle'] = T_('Delete Tag') .': '. $tag;

View File

@ -1,61 +1,70 @@
<?php
/***************************************************************************
Copyright (C) 2006 - 2007 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2006 - 2007 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$tagservice = & ServiceFactory :: getServiceInstance('TagService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
/* Managing all possible inputs */
isset($_POST['confirm']) ? define('POST_CONFIRM', $_POST['confirm']): define('POST_CONFIRM', '');
isset($_POST['cancel']) ? define('POST_CANCEL', $_POST['cancel']): define('POST_CANCEL', '');
isset($_POST['description']) ? define('POST_DESCRIPTION', $_POST['description']): define('POST_DESCRIPTION', '');
isset($_POST['referrer']) ? define('POST_REFERRER', $_POST['referrer']): define('POST_REFERRER', '');
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
/* Managing path info */
list ($url, $tag) = explode('/', $_SERVER['PATH_INFO']);
$template = 'tagedit.tpl';
$logged_on_user = $userservice->getCurrentUser();
//permissions
if($logged_on_user == null) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
if(!$userservice->isLoggedOn()) {
$tplVars['error'] = T_('Permission denied.');
$templateservice->loadTemplate('error.500.tpl', $tplVars);
exit();
}
if ($_POST['confirm']) {
if ( strlen($tag)>0 &&
$tagservice->updateDescription($tag, $logged_on_user['uId'], $_POST['description'])
) {
$tplVars['msg'] = T_('Tag description updated');
header('Location: '. $_POST['referrer']);
} else {
$tplVars['error'] = T_('Failed to update the tag description');
$template = 'error.500.tpl';
}
} elseif ($_POST['cancel']) {
$logged_on_user = $userservice->getCurrentUser();
header('Location: '. $_POST['referrer']);
if (POST_CONFIRM) {
if ( strlen($tag)>0 &&
$tagservice->updateDescription($tag, $currentUser->getId(), POST_DESCRIPTION)
) {
$tplVars['msg'] = T_('Tag description updated');
header('Location: '. POST_REFERRER);
} else {
$tplVars['error'] = T_('Failed to update the tag description');
$template = 'error.500.tpl';
}
} elseif (POST_CANCEL) {
header('Location: '. POST_REFERRER);
} else {
$tplVars['subtitle'] = T_('Edit Tag Description') .': '. $tag;
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['tag'] = $tag;
$tplVars['description'] = $tagservice->getDescription($tag, $logged_on_user['uId']);
$tplVars['subtitle'] = T_('Edit Tag Description') .': '. $tag;
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['tag'] = $tag;
$tplVars['description'] = $tagservice->getDescription($tag, $currentUser->getId());
}
$templateservice->loadTemplate($template, $tplVars);
?>

View File

@ -1,68 +1,80 @@
<?php
/***************************************************************************
Copyright (C) 2006 - 2007 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2006 - 2007 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$b2tservice = & ServiceFactory :: getServiceInstance('Bookmark2TagService');
$tagservice = & ServiceFactory :: getServiceInstance('TagService');
$tag2tagservice = & ServiceFactory :: getServiceInstance('Tag2tagService');
$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
$userservice = & ServiceFactory :: getServiceInstance('UserService');
/* Managing all possible inputs */
isset($_POST['confirm']) ? define('POST_CONFIRM', $_POST['confirm']): define('POST_CONFIRM', '');
isset($_POST['cancel']) ? define('POST_CANCEL', $_POST['cancel']): define('POST_CANCEL', '');
isset($_POST['old']) ? define('POST_OLD', $_POST['old']): define('POST_OLD', '');
isset($_POST['new']) ? define('POST_NEW', $_POST['new']): define('POST_NEW', '');
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
/* Managing path info */
list ($url, $tag) = explode('/', $_SERVER['PATH_INFO']);
//$tag = isset($_GET['query']) ? $_GET['query'] : NULL;
$template = 'tagrename.tpl';
if ($_POST['confirm']) {
if (isset($_POST['old']) && trim($_POST['old']) != '')
$old = trim($_REQUEST['old']);
else
$old = NULL;
if (POST_CONFIRM) {
if (trim(POST_OLD) != '') {
$old = trim(POST_OLD);
} else {
$old = NULL;
}
if (isset($_POST['new']) && trim($_POST['new']) != '')
$new = trim($_POST['new']);
else
$new = NULL;
if (trim(POST_NEW) != '') {
$new = trim(POST_NEW);
} else {
$new = NULL;
}
if (
!is_null($old) &&
!is_null($new) &&
$tagservice->renameTag($userservice->getCurrentUserId(), $old, $new) &&
$b2tservice->renameTag($userservice->getCurrentUserId(), $old, $new) &&
$tag2tagservice->renameTag($userservice->getCurrentUserId(), $old, $new)
) {
$tplVars['msg'] = T_('Tag renamed');
$logged_on_user = $userservice->getCurrentUser();
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')]));
} else {
$tplVars['error'] = T_('Failed to rename the tag');
$template = 'error.500.tpl';
}
} elseif ($_POST['cancel']) {
$logged_on_user = $userservice->getCurrentUser();
header('Location: '. createURL('bookmarks', $logged_on_user[$userservice->getFieldName('username')] .'/'. $tags));
if (
!is_null($old) &&
!is_null($new) &&
$tagservice->renameTag($currentUser->getId(), $old, $new) &&
$b2tservice->renameTag($currentUser->getId(), $old, $new) &&
$tag2tagservice->renameTag($currentUser->getId(), $old, $new)
) {
$tplVars['msg'] = T_('Tag renamed');
header('Location: '. createURL('bookmarks', $currentUser->getUsername()));
} else {
$tplVars['error'] = T_('Failed to rename the tag');
$template = 'error.500.tpl';
}
} elseif (POST_CANCEL) {
header('Location: '. createURL('bookmarks', $currentUser->getUsername() .'/'. $tags));
} else {
$tplVars['subtitle'] = T_('Rename Tag') .': '. $tag;
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['old'] = $tag;
$tplVars['subtitle'] = T_('Rename Tag') .': '. $tag;
$tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag;
$tplVars['referrer'] = $_SERVER['HTTP_REFERER'];
$tplVars['old'] = $tag;
}
$templateservice->loadTemplate($template, $tplVars);
?>

View File

@ -1,69 +1,80 @@
<?php
/***************************************************************************
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
/* Managing all possible inputs */
isset($_GET['page']) ? define('GET_PAGE', $_GET['page']): define('GET_PAGE', 0);
isset($_GET['sort']) ? define('GET_SORT', $_GET['sort']): define('GET_SORT', '');
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
/* Managing path info */
list($url, $cat) = explode('/', $_SERVER['PATH_INFO']);
$tplVars = array();
list($url, $cat) = explode('/', $_SERVER['PATH_INFO']);
if (!$cat) {
header('Location: '. createURL('populartags'));
exit;
header('Location: '. createURL('populartags'));
exit;
} else {
$cattitle = str_replace('+', ' + ', $cat);
$cattitle = str_replace('+', ' + ', $cat);
}
$pagetitle = T_('Tags') .': '. $cattitle;
if ($usecache) {
// Generate hash for caching on
if ($userservice->isLoggedOn()) {
$hash = md5($_SERVER['REQUEST_URI'] . $userservice->getCurrentUserID());
} else {
$hash = md5($_SERVER['REQUEST_URI']);
}
// Generate hash for caching on
if ($userservice->isLoggedOn()) {
$hash = md5($_SERVER['REQUEST_URI'] . $currentUser->getId());
} else {
$hash = md5($_SERVER['REQUEST_URI']);
}
// Cache for 30 minutes
$cacheservice->Start($hash, 1800);
// Cache for 30 minutes
$cacheservice->Start($hash, 1800);
}
// Header variables
$tplVars['pagetitle'] = $pagetitle;
$tplVars['loadjs'] = true;
$tplVars['rsschannels'] = array(
array(filter($sitename .': '. $pagetitle), createURL('rss', 'all/'. filter($cat, 'url')).'?sort='.getSortOrder())
array(filter($sitename .': '. $pagetitle), createURL('rss', 'all/'. filter($cat, 'url')).'?sort='.getSortOrder())
);
// Pagination
$perpage = getPerPageCount();
if (isset($_GET['page']) && intval($_GET['page']) > 1) {
$page = $_GET['page'];
$start = ($page - 1) * $perpage;
if (intval(GET_PAGE) > 1) {
$page = GET_PAGE;
$start = ($page - 1) * $perpage;
} else {
$page = 0;
$start = 0;
$page = 0;
$start = 0;
}
$tplVars['page'] = $page;
@ -82,7 +93,7 @@ $tplVars['nav_url'] = createURL('tags', '%2$s%3$s');
$templateservice->loadTemplate('bookmarks.tpl', $tplVars);
if ($usecache) {
// Cache output if existing copy has expired
$cacheservice->End($hash);
// Cache output if existing copy has expired
$cacheservice->End($hash);
}
?>

View File

@ -1,9 +1,13 @@
<?php
$this->includeTemplate($GLOBALS['top_include']);
/* Service creation: only useful services are created */
$userservice =& ServiceFactory::getServiceInstance('UserService');
$currentUser = $userservice->getCurrentUser();
$currentUserId = $userservice->getCurrentUserId();
//$currentUser = $userservice->getCurrentUser();
//$currentUserId = $userservice->getCurrentUserId();
$currentObjectUser = $userservice->getCurrentObjectUser();
$this->includeTemplate($GLOBALS['top_include']);
?>
<ul>
@ -20,9 +24,10 @@ $currentUserId = $userservice->getCurrentUserId();
<?php if(!is_null($currentUser) && $userservice->isAdmin($currentUserId)): ?>
<?php if(!is_null($currentObjectUser) && $currentObjectUser->isAdmin()): ?>
<li>SemanticScuttle v0.91</li>
<?php endif ?>
</ul>
<?php

View File

@ -1,7 +1,12 @@
<?php
$this->includeTemplate($GLOBALS['top_include']);
/* Service creation: only useful services are created */
$userservice = & ServiceFactory :: getServiceInstance('UserService');
$this->includeTemplate($GLOBALS['top_include']);
list ($url, $hash) = explode('/', $_SERVER['PATH_INFO']);
?>
<script type="text/javascript">
window.onload = function() {

View File

@ -6,8 +6,6 @@ $bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$tagservice =& ServiceFactory::getServiceInstance('TagService');
$cdservice =& ServiceFactory::getServiceInstance('CommonDescriptionService');
//$logged_on_userid = $userservice->getCurrentUserId();
//$currentUser = $userservice->getCurrentUser();
//$currentUsername = $currentUser[$userservice->getFieldName('username')];
@ -28,10 +26,13 @@ include('search.inc.php');
<?php
if((isset($currenttag) && $GLOBALS['enableCommonTagDescription'])
// common tag description
if((isset($currenttag) && $currenttag!= '' && $GLOBALS['enableCommonTagDescription'])
|| (isset($hash) && $GLOBALS['enableCommonBookmarkDescription'])):?>
<p class="commondescription"><?php
if(isset($currenttag) && $cdservice->getLastTagDescription($currenttag)) {
if(isset($currenttag) && $currenttag!= '' && $cdservice->getLastTagDescription($currenttag)) {
$description = $cdservice->getLastTagDescription($currenttag);
echo nl2br(filter($description['cdDescription']));
} elseif(isset($hash) && $cdservice->getLastBookmarkDescription($hash)) {
@ -40,8 +41,9 @@ if(isset($currenttag) && $cdservice->getLastTagDescription($currenttag)) {
echo nl2br(filter($description['cdDescription'])). "<br/>";
}
//common tag description edit
if($userservice->isLoggedOn()) {
if(isset($currenttag)) {
if(isset($currenttag) && $currenttag!= '') {
echo ' (<a href="'. createURL('tagcommondescriptionedit', $currenttag).'">';
echo T_('edit common description').'</a>)';
} elseif(isset($hash)) {
@ -55,7 +57,7 @@ if($userservice->isLoggedOn()) {
<?php
/* Private tag description */
if(isset($currenttag) && isset($user)) {
if(isset($currenttag) && $currenttag!= '' && isset($user)) {
$userObject = $userservice->getUserByUsername($user);
if($tagservice->getDescription($currenttag, $userObject['uId'])) { ?>
@ -87,7 +89,7 @@ if (!isset($hash)) {
<?php
}
?> <?php
if(isset($currenttag)) {
if(isset($currenttag) && $currenttag!= '') {
if(isset($user)) {
echo ' - ';
echo '<a href="'. createURL('tags', $currenttag) .'">';
@ -216,8 +218,8 @@ if(isset($currenttag)) {
// Ordering
$sortOrder = '';
if (isset($_GET['sort'])) {
$sortOrder = 'sort='. $_GET['sort'];
if (GET_SORT != '') {
$sortOrder = 'sort='. GET_SORT;
}
$sortAmp = (($sortOrder) ? '&amp;'. $sortOrder : '');

View File

@ -47,8 +47,6 @@ switch ($row['bStatus']) {
<input type="text" dojoType="dojox.form.MultiComboBox" id="tags" name="tags" size="75" value="<?php echo filter(implode(', ', $row['tags']), 'xml'); ?>" store="memberTagStore" delimiter="," searchAttr="tag" hasDownArrow="false"/></td>
<td>&larr; <?php echo T_('Comma-separated'); ?></td>
</tr>
<tr>
<th></th>
<td align="right"><small><?php echo T_('Note: use ">" to include one tag in another. e.g.: europe>france>paris')?><small></td>
@ -73,7 +71,7 @@ switch ($row['bStatus']) {
<td>
<input type="submit" name="submitted" value="<?php echo $btnsubmit; ?>" />
<?php
if ($showdelete) {
if (isset($showdelete) && $showdelete) {
?>
<input type="submit" name="delete" value="<?php echo T_('Delete Bookmark'); ?>" />
<?php
@ -82,7 +80,7 @@ switch ($row['bStatus']) {
?>
<input type="hidden" name="popup" value="1" />
<?php
} elseif ($referrer) {
} elseif (isset($referrer)) {
?>
<input type="hidden" name="referrer" value="<?php echo $referrer; ?>" />
<?php
@ -99,7 +97,7 @@ switch ($row['bStatus']) {
$this->includeTemplate('dynamictags.inc');
// Bookmarklets and import links
if (empty($_REQUEST['popup']) && !$showdelete) {
if (empty($_REQUEST['popup']) && (!isset($showdelete) || !$showdelete)) {
?>
<h3><?php echo T_('Bookmarklet'); ?></h3>

View File

@ -27,7 +27,7 @@ $this->includeTemplate($GLOBALS['top_include']);
</tr>
<tr>
<th align="left"><?php echo T_('E-mail'); ?></th>
<td><input type="text" name="pMail" size="75" value="<?php echo filter($row['email'], 'xml'); ?>" /></td>
<td><input type="text" name="pMail" size="75" value="<?php echo filter($objectUser->getEmail(), 'xml'); ?>" /></td>
<td>&larr; <?php echo T_('Required'); ?></td>
</tr>
</table>
@ -37,15 +37,15 @@ $this->includeTemplate($GLOBALS['top_include']);
<table class="profile">
<tr>
<th align="left"><?php echo T_('Name'); ?></th>
<td><input type="text" name="pName" size="75" value="<?php echo filter($row['name'], 'xml'); ?>" /></td>
<td><input type="text" name="pName" size="75" value="<?php echo filter($objectUser->getName(), 'xml'); ?>" /></td>
</tr>
<tr>
<th align="left"><?php echo T_('Homepage'); ?></th>
<td><input type="text" name="pPage" size="75" value="<?php echo filter($row['homepage']); ?>" /></td>
<td><input type="text" name="pPage" size="75" value="<?php echo filter($objectUser->getHomepage()); ?>" /></td>
</tr>
<tr>
<th align="left"><?php echo T_('Description'); ?></th>
<td><textarea name="pDesc" cols="75" rows="10"><?php echo $row['uContent']; ?></textarea></td>
<td><textarea name="pDesc" cols="75" rows="10"><?php echo $objectUser->getContent(); ?></textarea></td>
</tr>
<tr>
<th></th>

View File

@ -7,26 +7,26 @@ $this->includeTemplate($GLOBALS['top_include']);
<dt><?php echo T_('Username'); ?></dt>
<dd><?php echo $user; ?></dd>
<?php
if ($row['name'] != "") {
if ($objectUser->getName() != "") {
?>
<dt><?php echo T_('Name'); ?></dt>
<dd><?php echo filter($row['name']); ?></dd>
<dd><?php echo filter($objectUser->getName()); ?></dd>
<?php
}
if ($row['homepage'] != "") {
if ($objectUser->getHomepage() != "") {
?>
<dt><?php echo T_('Homepage'); ?></dt>
<dd><a href="<?php echo filter($row['homepage']); ?>"><?php echo filter($row['homepage']); ?></a></dd>
<dd><a href="<?php echo filter($objectUser->getHomepage()); ?>"><?php echo filter($objectUser->getHomepage()); ?></a></dd>
<?php
}
?>
<dt><?php echo T_('Member Since'); ?></dt>
<dd><?php echo date($GLOBALS['longdate'], strtotime($row['uDatetime'])); ?></dd>
<dd><?php echo date($GLOBALS['longdate'], strtotime($objectUser->getDatetime())); ?></dd>
<?php
if ($row['uContent'] != "") {
if ($objectUser->getContent() != "") {
?>
<dt><?php echo T_('Description'); ?></dt>
<dd><?php echo $row['uContent']; ?></dd>
<dd><?php echo $objectUser->getContent(); ?></dd>
<?php
}
$watching = $userservice->getWatchNames($userid);

View File

@ -4,25 +4,23 @@ $commonTags =& $b2tservice->getRelatedTagsByHash($hash);
$commonTags =& $b2tservice->tagCloud($commonTags, 5, 90, 225, 'alphabet_asc');
if ($commonTags && count($commonTags) > 0) {
?>
?>
<h2><?php echo T_('Popular Tags'); ?></h2>
<div id="common">
<p class="tags">
<?php
$contents = '';
<p class="tags"><?php
$contents = '';
if(strlen($user)==0) {
if(strlen($user)==0) {
$cat_url = createURL('tags', '%2$s');
}
}
foreach ($commonTags as $row) {
$entries = T_ngettext('bookmark', 'bookmarks', $row['bCount']);
$contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> ';
}
echo $contents ."\n";
?>
</p>
foreach ($commonTags as $row) {
$entries = T_ngettext('bookmark', 'bookmarks', $row['bCount']);
$contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> ';
}
echo $contents ."\n";
?></p>
</div>
<?php

View File

@ -2,6 +2,13 @@
$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
if(!isset($user)) {
$user = '';
}
if(!isset($userid)) {
$userid = NULL;
}
$logged_on_userid = $userservice->getCurrentUserId();
if ($logged_on_userid === false) {
$logged_on_userid = NULL;

View File

@ -20,7 +20,7 @@ if ($recentTags && count($recentTags) > 0) {
<?php
$contents = '<p class="tags">';
if(!isset($user)) {
if(!isset($user) || $user == '') {
$user = '';
$cat_url = createURL('tags', '%2$s');
}

View File

@ -6,7 +6,12 @@ $logged_on_userid = $userservice->getCurrentUserId();
if ($logged_on_userid === false) {
$logged_on_userid = NULL;
}
if(strlen($user)==0) {
if(!isset($userid)) {
$userid = NULL;
}
if(isset($user) && strlen($user)==0) {
$cat_url = createURL('tags', '%2$s');
}
if ($currenttag) {

View File

@ -22,6 +22,7 @@ if(isset($rsschannels)) {
<script type="text/javascript"
src="<?php echo ROOT ?>jsScuttle.php"></script>
<link rel="stylesheet" type="text/css"
href="http://ajax.googleapis.com/ajax/libs/dojo/1.2/dijit/themes/nihilo/nihilo.css">

View File

@ -1,27 +1,24 @@
<?php
/* Service creation: only useful services are created */
$userservice =& ServiceFactory::getServiceInstance('UserService');
$currentUser = $userservice->getCurrentUser();
$currentUserID = $userservice->getCurrentUserId();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
$currentObjectUser = $userservice->getCurrentObjectUser();
$this->includeTemplate($GLOBALS['top_include']);
echo '<ol id="bookmarks">';
foreach(array_keys($users) as $key) {
foreach($users as $user) {
echo '<li class="xfolkentry">'."\n";
echo '<div class="link">';
echo '<a href="'.createURL('profile', $users[$key][$userservice->getFieldname('username')]).'">'.$users[$key][$userservice->getFieldName('username')].'</a>';
echo '<a href="'.createURL('profile', $user->getUsername()).'">'.$user->getUsername().'</a>';
echo '</div>';
if($users[$key][$userservice->getFieldName('username')] != $currentUsername) {
if($user->getUsername() != $currentObjectUser->getUsername()) {
echo '<div class="meta">';
echo '<a href="'.createURL('admin','delete/'.$users[$key][$userservice->getFieldname('username')]).'" onclick="return confirm(\''.T_('Are you sure?').'\');">'.T_('Delete').'</a>';
echo '<a href="'.createURL('admin','delete/'.$user->getUsername()).'" onclick="return confirm(\''.T_('Are you sure?').'\');">'.T_('Delete').'</a>';
echo '</div>';
}

View File

@ -21,21 +21,26 @@
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
$tplVars = array();
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
/* Managing path info */
list($url, $cat) = explode('/', $_SERVER['PATH_INFO']);
$tplVars = array();
$pagetitle = T_('Users');
if ($usecache) {
// Generate hash for caching on
if ($userservice->isLoggedOn()) {
$hash = md5($_SERVER['REQUEST_URI'] . $userservice->getCurrentUserID());
$hash = md5($_SERVER['REQUEST_URI'] . $currentUser->getId());
} else {
$hash = md5($_SERVER['REQUEST_URI']);
}

View File

@ -1,56 +1,62 @@
<?php
/***************************************************************************
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
Copyright (C) 2004 - 2006 Scuttle project
http://sourceforge.net/projects/scuttle/
http://scuttle.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$userservice =& ServiceFactory::getServiceInstance('UserService');
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
/* Managing path info */
@list($url, $user) = isset($_SERVER['PATH_INFO']) ? explode('/', $_SERVER['PATH_INFO']) : NULL;
if ($userservice->isLoggedOn() && $user) {
$tplVars = array();
$pagetitle = '';
$tplVars = array();
$pagetitle = '';
if (is_int($user)) {
$userid = intval($user);
} else {
if (!($userinfo = $userservice->getUserByUsername($user))) {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
exit();
} else {
$userid =& $userinfo['uId'];
}
}
if (is_int($user)) {
$userid = intval($user);
} else {
$userinfo = $userservice->getObjectUserByUsername($user);
if ($userinfo == '') {
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
exit();
} else {
$userid =& $userinfo->getId();
}
}
$watched = $userservice->getWatchStatus($userid, $userservice->getCurrentUserId());
$changed = $userservice->setWatchStatus($userid);
$watched = $userservice->getWatchStatus($userid, $currentUser->getId());
$changed = $userservice->setWatchStatus($userid);
if ($watched) {
$tplVars['msg'] = T_('User removed from your watchlist');
} else {
$tplVars['msg'] = T_('User added to your watchlist');
}
if ($watched) {
$tplVars['msg'] = T_('User removed from your watchlist');
} else {
$tplVars['msg'] = T_('User added to your watchlist');
}
$currentUser = $userservice->getCurrentUser();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
header('Location: '. createURL('watchlist', $currentUsername));
header('Location: '. createURL('watchlist', $currentUser->getUsername()));
}
?>

View File

@ -20,27 +20,29 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
require_once('header.inc.php');
/* Service creation: only useful services are created */
$bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService');
$templateservice =& ServiceFactory::getServiceInstance('TemplateService');
$userservice =& ServiceFactory::getServiceInstance('UserService');
$cacheservice =& ServiceFactory::getServiceInstance('CacheService');
$tplVars = array();
/* Managing all possible inputs */
isset($_GET['page']) ? define('GET_PAGE', $_GET['page']): define('GET_PAGE', 0);
isset($_GET['sort']) ? define('GET_SORT', $_GET['sort']): define('GET_SORT', '');
/* Managing current logged user */
$currentUser = $userservice->getCurrentObjectUser();
/* Managing path info */
@list($url, $user, $page) = isset($_SERVER['PATH_INFO']) ? explode('/', $_SERVER['PATH_INFO']) : NULL;
$loggedon = false;
if ($userservice->isLoggedOn()) {
$loggedon = true;
$currentUser = $userservice->getCurrentUser();
$currentUsername = $currentUser[$userservice->getFieldName('username')];
}
$tplVars = array();
if ($usecache) {
// Generate hash for caching on
if ($loggedon) {
if ($currentUsername != $user) {
$cachehash = md5($_SERVER['REQUEST_URI'] . $currentUsername);
if ($userservice->isLoggedOn()) {
if ($currentUser->getUsername() != $user) {
$cachehash = md5($_SERVER['REQUEST_URI'] . $currentUser->getUsername());
// Cache for 5 minutes
$cacheservice->Start($cachehash);
@ -56,13 +58,14 @@ if ($user) {
if (is_int($user)) {
$userid = intval($user);
} else {
if (!($userinfo = $userservice->getUserByUsername($user) ) ) {
$userinfo = $userservice->getObjectUserByUsername($user);
if ($userinfo == '' ) {
// Throw a 404 error
$tplVars['error'] = sprintf(T_('User with username %s was not found'), $user);
$templateservice->loadTemplate('error.404.tpl', $tplVars);
exit();
} else {
$userid =& $userinfo['uId'];
$userid =& $userinfo->getId();
}
}
}
@ -77,8 +80,8 @@ if ($user) {
// Pagination
$perpage = getPerPageCount();
if (isset($_GET['page']) && intval($_GET['page']) > 1) {
$page = $_GET['page'];
if (intval(GET_PAGE) > 1) {
$page = GET_PAGE;
$start = ($page - 1) * $perpage;
} else {
$page = 0;
@ -86,6 +89,7 @@ if ($user) {
}
// Set template vars
$tplVars['currenttag'] = '';
$tplVars['page'] = $page;
$tplVars['start'] = $start;
$tplVars['bookmarkCount'] = $start + 1;
@ -99,7 +103,7 @@ if ($user) {
$tplVars['cat_url'] = createURL('tags', '%2$s');
$tplVars['nav_url'] = createURL('watchlist', '%s/%s%s');
if ($user == $currentUsername) {
if ($userservice->isLoggedOn() && $user == $currentUser->getUsername()) {
$title = T_('My Watchlist');
} else {
$title = T_('Watchlist') .': '. $user;