From 15b91c7e661d928d8b125ec9cfbda1702319c8b4 Mon Sep 17 00:00:00 2001 From: mensonge Date: Tue, 25 Nov 2008 15:57:29 +0000 Subject: 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 --- about.php | 2 + admin.php | 19 +- ajaxDelete.php | 9 +- ajaxGetTitle.php | 5 +- ajaxIsAvailable.php | 11 +- alltags.php | 8 +- bookmarkcommondescriptionedit.php | 92 +-- bookmarks.php | 397 +++++------ constants.inc.php | 2 +- edit.php | 59 +- history.php | 23 +- import.php | 188 +++--- importNetscape.php | 18 +- index.php | 5 +- login.php | 29 +- password.php | 98 +-- populartags.php | 19 +- profile.php | 63 +- register.php | 24 +- rss.php | 136 ++-- search.inc.php | 14 +- search.php | 227 ++++--- services/bookmark2tagservice.php | 832 ++++++++++++------------ services/bookmarkservice.php | 5 +- services/commondescriptionservice.php | 280 ++++---- services/tag2tagservice.php | 522 +++++++-------- services/tagservice.php | 141 ++-- services/userservice.php | 104 ++- tag2tagadd.php | 35 +- tag2tagdelete.php | 103 +-- tag2tagedit.php | 38 +- tagcommondescriptionedit.php | 93 +-- tagdelete.php | 23 +- tagedit.php | 89 +-- tagrename.php | 102 +-- tags.php | 83 ++- templates/about.tpl.php | 13 +- templates/bookmarkcommondescriptionedit.tpl.php | 7 +- templates/bookmarks.tpl.php | 20 +- templates/editbookmark.tpl.php | 8 +- templates/editprofile.tpl.php | 8 +- templates/profile.tpl.php | 14 +- templates/sidebar.block.common.php | 26 +- templates/sidebar.block.popular.php | 7 + templates/sidebar.block.recent.php | 2 +- templates/sidebar.block.related.php | 7 +- templates/top.inc.php | 3 +- templates/userlist.tpl.php | 19 +- users.php | 9 +- watch.php | 92 +-- watchlist.php | 34 +- 51 files changed, 2297 insertions(+), 1870 deletions(-) diff --git a/about.php b/about.php index 795d0a6..b8d2fd9 100644 --- a/about.php +++ b/about.php @@ -19,6 +19,8 @@ ***************************************************************************/ require_once('header.inc.php'); + +/* Service creation: only useful services are created */ $templateservice =& ServiceFactory::getServiceInstance('TemplateService'); $tplVars = array(); diff --git a/admin.php b/admin.php index c5563f6..d72d4a0 100644 --- a/admin.php +++ b/admin.php @@ -18,7 +18,8 @@ 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'); @@ -27,19 +28,21 @@ $templateservice = & ServiceFactory :: getServiceInstance('TemplateService'); // Header variables $tplVars['subtitle'] = T_('Manage users'); -$tplVars['loadjs'] = true; +$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(); diff --git a/ajaxDelete.php b/ajaxDelete.php index ad3efc8..e40dc1a 100644 --- a/ajaxDelete.php +++ b/ajaxDelete.php @@ -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)) { diff --git a/ajaxGetTitle.php b/ajaxGetTitle.php index d440802..2bec47c 100644 --- a/ajaxGetTitle.php +++ b/ajaxGetTitle.php @@ -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 ''; getTitle - + diff --git a/ajaxIsAvailable.php b/ajaxIsAvailable.php index 80883c6..e9d82e7 100644 --- a/ajaxIsAvailable.php +++ b/ajaxIsAvailable.php @@ -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'; } ?> diff --git a/alltags.php b/alltags.php index f2520a0..61ad345 100644 --- a/alltags.php +++ b/alltags.php @@ -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); diff --git a/bookmarkcommondescriptionedit.php b/bookmarkcommondescriptionedit.php index c70dac0..1ac316e 100644 --- a/bookmarkcommondescriptionedit.php +++ b/bookmarkcommondescriptionedit.php @@ -1,64 +1,76 @@ 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); ?> diff --git a/bookmarks.php b/bookmarks.php index 232249f..f222202 100644 --- a/bookmarks.php +++ b/bookmarks.php @@ -1,26 +1,27 @@ 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', ''); -@list($url, $user, $cat) = isset($_SERVER['PATH_INFO']) ? explode('/', $_SERVER['PATH_INFO']) : NULL; -$loggedon = false; + +if ((GET_ACTION == "add") && !$userservice->isLoggedOn()) { + $loginqry = str_replace("'", '%27', stripslashes($_SERVER['QUERY_STRING'])); + header('Location: '. createURL('login', '?'. $loginqry)); + exit(); +} + if ($userservice->isLoggedOn()) { - $loggedon = true; - $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(); + $currentUserID = $currentObjectUser->getId(); + $currentUsername = $currentObjectUser->getUsername(); } + +@list($url, $user, $cat) = isset($_SERVER['PATH_INFO']) ? explode('/', $_SERVER['PATH_INFO']) : NULL; + + $endcache = false; if ($usecache) { - // 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; - } + // Generate hash for caching on + $hash = md5($_SERVER['REQUEST_URI'] . $user); + + // 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'] = ''; - } 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'] = ''; + } 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'])) { - - $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'; - - $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; - } - - // 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; - - $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; + 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'); + + 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'; + + // 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())) + ); + + $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; } $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); } ?> diff --git a/constants.inc.php b/constants.inc.php index e779852..23dcc4a 100644 --- a/constants.inc.php +++ b/constants.inc.php @@ -1,6 +1,6 @@ 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'])) ? '' : T_('Bookmark saved'); - } elseif (isset($_POST['referrer'])) { - header('Location: '. $_POST['referrer']); + if (POST_POPUP != '') { + //$tplVars['msg'] = (POST_POPUP != '') ? '' : T_('Bookmark saved'); + $tplVars['msg'] = ''; + } 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'); diff --git a/history.php b/history.php index f7ae927..e66973c 100644 --- a/history.php +++ b/history.php @@ -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 diff --git a/import.php b/import.php index f25b439..8d051c8 100644 --- a/import.php +++ b/import.php @@ -1,109 +1,121 @@ isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['size'] > 0) { - $userinfo = $userservice->getCurrentUser(); - - if (isset($_POST['status']) && 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"); - - 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')])); + $userinfo = $userservice->getCurrentObjectUser(); + + 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"); + + 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->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; - - $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 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]++; + global $depth, $status, $tplVars, $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 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]++; } function endElement($parser, $name) { - global $depth; - $depth[$parser]--; + global $depth; + $depth[$parser]--; } ?> diff --git a/importNetscape.php b/importNetscape.php index 97f458f..f4cf653 100644 --- a/importNetscape.php +++ b/importNetscape.php @@ -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'); diff --git a/index.php b/index.php index a72f1f9..030f06e 100644 --- a/index.php +++ b/index.php @@ -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); diff --git a/login.php b/login.php index f09996e..b1b9fcb 100644 --- a/login.php +++ b/login.php @@ -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'); diff --git a/password.php b/password.php index 1763fd2..e3a8721 100644 --- a/password.php +++ b/password.php @@ -1,68 +1,78 @@ e-mail address.'); + // NO E-MAIL + } elseif (!POST_EMAIL) { + $tplVars['error'] = T_('You must enter your e-mail 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 e-mail address.'); + } elseif (POST_EMAIL != $userinfo->getEmail()) { + $tplVars['error'] = T_('No matches found for that combination of username and e-mail 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'; diff --git a/populartags.php b/populartags.php index 1b99ca2..80ed0ed 100644 --- a/populartags.php +++ b/populartags.php @@ -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) { diff --git a/profile.php b/profile.php index 1ad92ba..df5ae7e 100644 --- a/profile.php +++ b/profile.php @@ -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']) { + // manage token preventing from CSRF vulnaribilities + 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); ?> diff --git a/register.php b/register.php index b70d724..aeaa18f 100644 --- a/register.php +++ b/register.php @@ -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 must 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)); } diff --git a/rss.php b/rss.php index 476a28d..08b4567 100644 --- a/rss.php +++ b/rss.php @@ -1,77 +1,88 @@ 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); - - // Cache for an hour - $cacheservice->Start($hash, 3600); + // 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); } $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); } ?> diff --git a/search.inc.php b/search.inc.php index 832a70c..d3ebe4c 100644 --- a/search.inc.php +++ b/search.inc.php @@ -1,5 +1,7 @@ @@ -9,13 +11,11 @@ $select_all = isset($select_all)?$select_all:''; 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)) { ?>
@@ -26,7 +26,7 @@ $select_all = isset($select_all)?$select_all:''; isLoggedOn()) { ?> diff --git a/search.php b/search.php index 6e002bb..ff3729e 100644 --- a/search.php +++ b/search.php @@ -1,117 +1,136 @@ getCurrentUserId(); - list($url, $range, $terms, $page) = explode('/', $_SERVER['PATH_INFO']); - - $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; - } - - $s_user = NULL; - $s_start = NULL; - $s_end = NULL; - $s_watchlist = NULL; - - // 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')); - - // Search terms - } else { - $tplVars['subtitle'] = T_('Search Results'); - $selected = ' selected="selected"'; - - 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; - } - - 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); - - // Save search - $searchhistoryservice->addSearch($terms, $range, $bookmarks['total'], $logged_on_userid); - - $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); + /* Service creation: only useful services are created */ + $bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService'); + $templateservice =& ServiceFactory::getServiceInstance('TemplateService'); + $userservice =& ServiceFactory::getServiceInstance('UserService'); + $searchhistoryservice =& ServiceFactory::getServiceInstance('SearchHistoryService'); + + /* Managing current logged user */ + $currentUserId = $userservice->getCurrentUserId(); + + + $exploded = explode('/', $_SERVER['PATH_INFO']); + if(count($exploded) == 4) { + list($url, $range, $terms, $page) = $exploded; + } else { + list($url, $range, $terms) = $exploded; + $page= NULL; + } + + $tplvars = array(); + $tplVars['loadjs'] = true; + + // Pagination + $perpage = getPerPageCount(); + if (intval(GET_PAGE) > 1) { + $page = GET_PAGE; + $start = ($page - 1) * $perpage; + } else { + $page = 0; + $start = 0; + } + + $s_user = NULL; + $s_start = NULL; + $s_end = NULL; + $s_watchlist = NULL; + + // 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')); + + // Search terms + } else { + $tplVars['subtitle'] = T_('Search Results'); + $selected = ' selected="selected"'; + + 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; + } + + 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); + + // 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); } ?> diff --git a/services/bookmark2tagservice.php b/services/bookmark2tagservice.php index 9cafec9..26a05c1 100644 --- a/services/bookmark2tagservice.php +++ b/services/bookmark2tagservice.php @@ -1,188 +1,189 @@ 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); + 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 = 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'); } - $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); + } + + 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); } - $tags[$key] = $pieces[$nbPieces-1]; // Attach just the last tag to the bookmark - } - } + } + // 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( + + } + + // 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; - } - - 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) .'"'; - - if (!($dbresult =& $this->db->sql_query($query))) { - message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db); - return false; - } - - return true; - } - - 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); - - if (!($dbresult =& $this->db->sql_query($query))) { - message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db); - return false; - } - - 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, + ); + + 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'); + + $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; + } + + return true; + } + + 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); + + if (!($dbresult =& $this->db->sql_query($query))) { + message_die(GENERAL_ERROR, 'Could not delete tags', '', __LINE__, __FILE__, $query, $this->db); + return false; + } + + 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, $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; - } - - 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'; - - 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']; - } - - return $tags; - } - - 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'; - - $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'; - - 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; - } - - - // 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; - - // 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]); - } - - // 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; - } - - // 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'; - - 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); - } - - 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)) .'"'; - - $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; - } - - $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) .'"'; - - 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; - } - - function renameTag($userid, $old, $new, $fromApi = false) { - $bookmarkservice =& ServiceFactory::getServiceInstance('BookmarkService'); - - 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']; - - // 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); - } - - return true; - } - - function &tagCloud($tags = NULL, $steps = 5, $sizemin = 90, $sizemax = 225, $sortOrder = NULL) { - - if (is_null($tags) || count($tags) < 1) { - $output = false; - return $output; - } - - $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; - } - - if ($sortOrder == 'alphabet_asc') { - usort($output, create_function('$a,$b','return strcasecmp(utf8_deaccent($a["tag"]), utf8_deaccent($b["tag"]));')); - } - - return $output; - } - - function deleteAll() { - $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; - $this->db->sql_query($query); - } - - - // Properties - function getTableName() { return $this->tablename; } - function setTableName($value) { $this->tablename = $value; } + return true; + } + + 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'; + + 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']; + } + + return $tags; + } + + 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'; + + $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'; + + 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; + } + + + // 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; + + // 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]); + } + + // 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; + } + + // 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'; + + 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 = ''; + + 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'; + + 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; + } + + 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 ($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'); + + 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']; + + // 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); + } + + return true; + } + + function &tagCloud($tags = NULL, $steps = 5, $sizemin = 90, $sizemax = 225, $sortOrder = NULL) { + + if (is_null($tags) || count($tags) < 1) { + $output = false; + return $output; + } + + $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; + } + + if ($sortOrder == 'alphabet_asc') { + usort($output, create_function('$a,$b','return strcasecmp(utf8_deaccent($a["tag"]), utf8_deaccent($b["tag"]));')); + } + + return $output; + } + + function deleteAll() { + $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; + $this->db->sql_query($query); + } + + + // Properties + function getTableName() { return $this->tablename; } + function setTableName($value) { $this->tablename = $value; } } ?> diff --git a/services/bookmarkservice.php b/services/bookmarkservice.php index 9127c12..73cdf84 100644 --- a/services/bookmarkservice.php +++ b/services/bookmarkservice.php @@ -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 '; } @@ -280,7 +283,7 @@ class BookmarkService { } $query_3 .= ' AND ('. $query_3_1 .') AND B.bStatus IN (0, 1)'; } - + $query_5 = ''; if($hash == null) { $query_5.= ' GROUP BY B.bHash'; diff --git a/services/commondescriptionservice.php b/services/commondescriptionservice.php index 6c591a9..0a96f74 100644 --- a/services/commondescriptionservice.php +++ b/services/commondescriptionservice.php @@ -1,153 +1,153 @@ 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; + var $db; + var $tablename; + + 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); + function CommonDescriptionService(&$db) { + $this->db =& $db; + $this->tablename = $GLOBALS['tableprefix'] .'commondescription'; + } - 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 addTagDescription($tag, $desc, $uId, $time) { + // Check if no modification + $lastDesc = $this->getLastTagDescription($tag); + if($lastDesc['cdDescription'] == $desc) { + return true; + } + + // 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; + } + + return true; } - return true; - } - - function getLastTagDescription($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 tag description', '', __LINE__, __FILE__, $query, $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; + function getLastTagDescription($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 tag description', '', __LINE__, __FILE__, $query, $this->db); + return false; + } + + if ($row =& $this->db->sql_fetchrow($dbresult)) { + return $row; + } else { + return false; + } } - // 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 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); - 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); - } - - // Properties - function getTableName() { return $this->tablename; } - function setTableName($value) { $this->tablename = $value; } + + 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; + } + + // 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); + } + + // Properties + function getTableName() { return $this->tablename; } + function setTableName($value) { $this->tablename = $value; } } ?> diff --git a/services/tag2tagservice.php b/services/tag2tagservice.php index f24ef79..8c97606 100644 --- a/services/tag2tagservice.php +++ b/services/tag2tagservice.php @@ -1,297 +1,297 @@ db =& $db; - $this->tablename = $GLOBALS['tableprefix'] .'tags2tags'; - } - - 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"; + var $db; + var $tablename; + + function &getInstance(&$db) { + static $instance; + if (!isset($instance)) + $instance =& new Tag2TagService($db); + return $instance; } - $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']; - } + function Tag2TagService(&$db) { + $this->db =& $db; + $this->tablename = $GLOBALS['tableprefix'] .'tags2tags'; } - //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 + 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 $output; - } + // 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; + } - /* 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 + $rowset = $this->db->sql_fetchrowset($dbresult); + $output = array(); + foreach($rowset as $row) { + if(!in_array($row['tag'], $stopList)) { - if(in_array($tag1, $stopList)) { - return array(); - } + $output[] = $row['tag']; + } + } - $stopList[] = $tag1; - $linkedTags = $this->getLinkedTags($tag1, $relationType, $uId, false, $stopList); + //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 + } - if($relationType != '=') { - $linkedTags = array_merge($linkedTags, $this->getLinkedTags($tag1, '=', $uId, false, $stopList)); + return $output; } - 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; - } + /* 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[] = $allLinkedTags; + $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."'"; + //$output = array_unique($output); // remove duplication + return $output; } - switch($orderBy) { + 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); + } + + 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($limit != null) { - $query.= " LIMIT 0,".$limit; + + 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_fetchrowset($this->db->sql_query($query)); } - 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']; - - 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 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 .'"' : ''; + + if (!($dbresult =& $this->db->sql_query($query))) { + message_die(GENERAL_ERROR, 'Could not remove tag relation', '', __LINE__, __FILE__, $query, $this->db); + return false; + } + + // Update stats + $tsts =& ServiceFactory::getServiceInstance('TagStatService'); + $tsts->updateStat($tag1, $relationType, $uId); + + return true; } - } + 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); + + $query = 'UPDATE `'. $this->getTableName() .'`'; + $query.= ' SET tag2="'.$newName.'"'; + $query.= ' WHERE tag2="'.$oldName.'"'; + $query.= ' AND uId="'.$uId.'"'; + $this->db->sql_query($query); - 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."'"; + // Update stats + $tsts =& ServiceFactory::getServiceInstance('TagStatService'); + $tsts->updateStat($oldName, '=', $uId); + $tsts->updateStat($oldName, '>', $uId); + $tsts->updateStat($newName, '=', $uId); + $tsts->updateStat($newName, '>', $uId); - return $this->db->sql_numrows($this->db->sql_query($query)) > 0; - } + return true; - 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_fetchrowset($this->db->sql_query($query)); - } + function deleteAll() { + $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; + $this->db->sql_query($query); - function removeLinkedTags($tag1, $tag2, $relationType, $uId) { - if(($tag1 != '' && $tag1 == $tag2) || - ($relationType != ">" && $relationType != "=" && $relationType != "") || - ($tag1 == '' && $tag2 == '' && $relationType == '' && $uId == '')) { - return false; + $tsts =& ServiceFactory::getServiceInstance('TagStatService'); + $tsts->deleteAll(); } - $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; - } - - // Update stats - $tsts =& ServiceFactory::getServiceInstance('TagStatService'); - $tsts->updateStat($tag1, $relationType, $uId); - - return true; - } - - 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); - - $query = 'UPDATE `'. $this->getTableName() .'`'; - $query.= ' SET tag2="'.$newName.'"'; - $query.= ' WHERE tag2="'.$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); - - return true; - - } - - function deleteAll() { - $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; - $this->db->sql_query($query); - - $tsts =& ServiceFactory::getServiceInstance('TagStatService'); - $tsts->deleteAll(); - } - - // Properties - function getTableName() { return $this->tablename; } - function setTableName($value) { $this->tablename = $value; } + + // Properties + function getTableName() { return $this->tablename; } + function setTableName($value) { $this->tablename = $value; } } ?> diff --git a/services/tagservice.php b/services/tagservice.php index 47f82d6..83349c6 100644 --- a/services/tagservice.php +++ b/services/tagservice.php @@ -1,89 +1,90 @@ db =& $db; - $this->tablename = $GLOBALS['tableprefix'] .'tags'; - } + 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.'"'; + 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 (!($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(); - } - } + 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.'"'; + 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; - } + 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); - } + 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 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; } - $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 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; } } ?> diff --git a/services/userservice.php b/services/userservice.php index 19e81c6..241934e 100644 --- a/services/userservice.php +++ b/services/userservice.php @@ -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,10 +125,15 @@ 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); } - + // Momentary useful in order to go to object code function getObjectUser($id) { $user = $this->_getuser($this->getFieldName('primary'), $id); @@ -136,7 +157,7 @@ class UserService { } return $currentuser; } - + // Momentary useful in order to go to object code function getCurrentObjectUser($refresh = FALSE, $newval = NULL) { static $currentObjectUser; @@ -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,27 +483,84 @@ 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) { $this->id = $id; $this->username = $username; } - + function getId() { return $this->id; } - + function getUsername() { 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); diff --git a/tag2tagadd.php b/tag2tagadd.php index 935cf88..07ce3a9 100644 --- a/tag2tagadd.php +++ b/tag2tagadd.php @@ -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']; diff --git a/tag2tagdelete.php b/tag2tagdelete.php index f0ae6ed..b62b623 100644 --- a/tag2tagdelete.php +++ b/tag2tagdelete.php @@ -1,62 +1,87 @@ 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 = ''; +} + + + +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($userservice->getCurrentUserId()); +$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); ?> diff --git a/tag2tagedit.php b/tag2tagedit.php index 6dd7b51..e75553f 100644 --- a/tag2tagedit.php +++ b/tag2tagedit.php @@ -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); ?> diff --git a/tagcommondescriptionedit.php b/tagcommondescriptionedit.php index 4c77b14..113c5bf 100644 --- a/tagcommondescriptionedit.php +++ b/tagcommondescriptionedit.php @@ -1,62 +1,73 @@ 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']) { - - 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']); +$template = 'tagcommondescriptionedit.tpl'; + +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); ?> diff --git a/tagdelete.php b/tagdelete.php index efdca16..8c4b1af 100644 --- a/tagdelete.php +++ b/tagdelete.php @@ -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; diff --git a/tagedit.php b/tagedit.php index aca0607..cd248a5 100644 --- a/tagedit.php +++ b/tagedit.php @@ -1,61 +1,70 @@ getCurrentObjectUser(); + +/* Managing path info */ list ($url, $tag) = explode('/', $_SERVER['PATH_INFO']); -$template = 'tagedit.tpl'; -$logged_on_user = $userservice->getCurrentUser(); +$template = 'tagedit.tpl'; //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); ?> diff --git a/tagrename.php b/tagrename.php index 29b44fb..3dde296 100644 --- a/tagrename.php +++ b/tagrename.php @@ -1,68 +1,80 @@ 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); ?> diff --git a/tags.php b/tags.php index 599b6fb..308069d 100644 --- a/tags.php +++ b/tags.php @@ -1,69 +1,80 @@ getCurrentObjectUser(); +/* Managing path info */ list($url, $cat) = explode('/', $_SERVER['PATH_INFO']); + +$tplVars = array(); + + 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']); - } - - // Cache for 30 minutes - $cacheservice->Start($hash, 1800); + // 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); } // 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); } ?> diff --git a/templates/about.tpl.php b/templates/about.tpl.php index 3f3cbe3..a4bc718 100644 --- a/templates/about.tpl.php +++ b/templates/about.tpl.php @@ -1,9 +1,13 @@ 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']); ?>
    @@ -20,9 +24,10 @@ $currentUserId = $userservice->getCurrentUserId(); -isAdmin($currentUserId)): ?> +isAdmin()): ?>
  • SemanticScuttle v0.91
  • +
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']); + + ?> + - +