diff options
| -rw-r--r-- | header.inc.php | 1 | ||||
| -rw-r--r-- | services/userservice.php | 858 | ||||
| -rw-r--r-- | templates/bookmarks.tpl.php | 428 | 
3 files changed, 662 insertions, 625 deletions
| diff --git a/header.inc.php b/header.inc.php index f26cb68..ccf198b 100644 --- a/header.inc.php +++ b/header.inc.php @@ -13,7 +13,6 @@ if(DEBUG_MODE) {  	ini_set('display_errors', '1');  	ini_set('mysql.trace_mode', '1');  	error_reporting(E_ALL); -	//error_reporting(E_ALL^E_NOTICE);  } else {  	ini_set('display_errors', '0');  	ini_set('mysql.trace_mode', '0'); diff --git a/services/userservice.php b/services/userservice.php index e611cb8..19e81c6 100644 --- a/services/userservice.php +++ b/services/userservice.php @@ -1,6 +1,15 @@  <?php  class UserService {  	var $db; +	var $fields = array( +        'primary'   =>  'uId', +        'username'  =>  'username', +        'password'  =>  'password'); +	var $profileurl; +	var $tablename; +	var $sessionkey; +	var $cookiekey; +	var $cookietime = 1209600; // 2 weeks  	function &getInstance(&$db) {  		static $instance; @@ -9,423 +18,460 @@ class UserService {  		return $instance;  	} -	var $fields = array( -        'primary'   =>  'uId', -        'username'  =>  'username', -        'password'  =>  'password' -        ); -        var $profileurl; -        var $tablename; -        var $sessionkey; -        var $cookiekey; -        var $cookietime = 1209600; // 2 weeks - -        function UserService(& $db) { -        	$this->db =& $db; -        	$this->tablename = $GLOBALS['tableprefix'] .'users'; -        	$this->sessionkey = INSTALLATION_ID.'-currentuserid'; -        	$this->cookiekey = INSTALLATION_ID.'-login'; -        	$this->profileurl = createURL('profile', '%2$s'); -        } - -        function _checkdns($host) { -        	if (function_exists('checkdnsrr')) { -        		return checkdnsrr($host); -        	} else { -        		return $this->_checkdnsrr($host); -        	} -        } - -        function _checkdnsrr($host, $type = "MX") { -        	if(!empty($host)) { -        		@exec("nslookup -type=$type $host", $output); -        		while(list($k, $line) = each($output)) { -        			if(eregi("^$host", $line)) { -        				return true; -        			} -        		} -        		return false; -        	} -        } - -        function _getuser($fieldname, $value) { -        	$query = 'SELECT * FROM '. $this->getTableName() .' WHERE '. $fieldname .' = "'. $this->db->sql_escape($value) .'"'; - -        	if (! ($dbresult =& $this->db->sql_query($query)) ) { -        		message_die(GENERAL_ERROR, 'Could not get user', '', __LINE__, __FILE__, $query, $this->db); -        		return false; -        	} - -        	if ($row =& $this->db->sql_fetchrow($dbresult)) -        	return $row; -        	else -        	return false; -        } - -        function & getUsers($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[] = $row; -        	} -        	return $users; -        } - -        function _randompassword() { -        	$seed = (integer) md5(microtime()); -        	mt_srand($seed); -        	$password = mt_rand(1, 99999999); -        	$password = substr(md5($password), mt_rand(0, 19), mt_rand(6, 12)); -        	return $password; -        } - -        function _updateuser($uId, $fieldname, $value) { -        	$updates = array ($fieldname => $value); -        	$sql = 'UPDATE '. $this->getTableName() .' SET '. $this->db->sql_build_array('UPDATE', $updates) .' WHERE '. $this->getFieldName('primary') .'='. intval($uId); - -        	// Execute the statement. -        	$this->db->sql_transaction('begin'); -        	if (!($dbresult = & $this->db->sql_query($sql))) { -        		$this->db->sql_transaction('rollback'); -        		message_die(GENERAL_ERROR, 'Could not update user', '', __LINE__, __FILE__, $sql, $this->db); -        		return false; -        	} -        	$this->db->sql_transaction('commit'); - -        	// Everything worked out, so return true. -        	return true; -        } - -        function getProfileUrl($id, $username) { -        	return sprintf($this->profileurl, urlencode($id), urlencode($username)); -        } - -        function getUserByUsername($username) { -        	return $this->_getuser($this->getFieldName('username'), $username); -        } - -        function getUser($id) { -        	return $this->_getuser($this->getFieldName('primary'), $id); -        } - -        function isLoggedOn() { -        	return ($this->getCurrentUserId() !== false); -        } - -        function &getCurrentUser($refresh = FALSE, $newval = NULL) { -        	static $currentuser; -        	if (!is_null($newval)) //internal use only: reset currentuser -        	$currentuser = $newval; -        	else if ($refresh || !isset($currentuser)) { -        		if ($id = $this->getCurrentUserId()) { -        			$currentuser = $this->getUser($id); -        		} else { -        			$currentuser = null; -        		} -        	} -        	return $currentuser; -        } - -        function isAdmin($userid) { -        	$user = $this->getUser($userid); -        	 -        	if(isset($GLOBALS['admin_users']) -        	&& in_array($user['username'], $GLOBALS['admin_users'])) { -        		return true; -        	} else { -        		return false; -        	} -        } - -        function getCurrentUserId() { -        	if (isset($_SESSION[$this->getSessionKey()])) { -        		//echo "session";die($_SESSION[$this->getSessionKey()]); -        		return $_SESSION[$this->getSessionKey()]; -        	} else if (isset($_COOKIE[$this->getCookieKey()])) { -        		//echo "cookie";die(); - -        		$cook = split(':', $_COOKIE[$this->getCookieKey()]); -        		//cookie looks like this: 'id:md5(username+password)' -        		$query = 'SELECT * FROM '. $this->getTableName() . +	function UserService(& $db) { +		$this->db =& $db; +		$this->tablename = $GLOBALS['tableprefix'] .'users'; +		$this->sessionkey = INSTALLATION_ID.'-currentuserid'; +		$this->cookiekey = INSTALLATION_ID.'-login'; +		$this->profileurl = createURL('profile', '%2$s'); +	} + +	function _checkdns($host) { +		if (function_exists('checkdnsrr')) { +			return checkdnsrr($host); +		} else { +			return $this->_checkdnsrr($host); +		} +	} + +	function _checkdnsrr($host, $type = "MX") { +		if(!empty($host)) { +			@exec("nslookup -type=$type $host", $output); +			while(list($k, $line) = each($output)) { +				if(eregi("^$host", $line)) { +					return true; +				} +			} +			return false; +		} +	} + +	function _getuser($fieldname, $value) { +		$query = 'SELECT * FROM '. $this->getTableName() .' WHERE '. $fieldname .' = "'. $this->db->sql_escape($value) .'"'; + +		if (! ($dbresult =& $this->db->sql_query($query)) ) { +			message_die(GENERAL_ERROR, 'Could not get user', '', __LINE__, __FILE__, $query, $this->db); +			return false; +		} + +		if ($row =& $this->db->sql_fetchrow($dbresult)) +		return $row; +		else +		return false; +	} + +	function & getUsers($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[] = $row; +		} +		return $users; +	} + +	function _randompassword() { +		$seed = (integer) md5(microtime()); +		mt_srand($seed); +		$password = mt_rand(1, 99999999); +		$password = substr(md5($password), mt_rand(0, 19), mt_rand(6, 12)); +		return $password; +	} + +	function _updateuser($uId, $fieldname, $value) { +		$updates = array ($fieldname => $value); +		$sql = 'UPDATE '. $this->getTableName() .' SET '. $this->db->sql_build_array('UPDATE', $updates) .' WHERE '. $this->getFieldName('primary') .'='. intval($uId); + +		// Execute the statement. +		$this->db->sql_transaction('begin'); +		if (!($dbresult = & $this->db->sql_query($sql))) { +			$this->db->sql_transaction('rollback'); +			message_die(GENERAL_ERROR, 'Could not update user', '', __LINE__, __FILE__, $sql, $this->db); +			return false; +		} +		$this->db->sql_transaction('commit'); + +		// Everything worked out, so return true. +		return true; +	} + +	function getProfileUrl($id, $username) { +		return sprintf($this->profileurl, urlencode($id), urlencode($username)); +	} + +	function getUserByUsername($username) { +		return $this->_getuser($this->getFieldName('username'), $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); +		return new User($id, $user[$this->getFieldName('username')]); +	} + +	function isLoggedOn() { +		return ($this->getCurrentUserId() !== false); +	} + +	function &getCurrentUser($refresh = FALSE, $newval = NULL) { +		static $currentuser; +		if (!is_null($newval)) { //internal use only: reset currentuser +			$currentuser = $newval; +		} else if ($refresh || !isset($currentuser)) { +			if ($id = $this->getCurrentUserId()) { +				$currentuser = $this->getUser($id); +			} else { +				$currentuser = null; +			} +		} +		return $currentuser; +	} +	 +	// Momentary useful in order to go to object code +	function getCurrentObjectUser($refresh = FALSE, $newval = NULL) { +		static $currentObjectUser; +		if (!is_null($newval)) { //internal use only: reset currentuser +			$currentObjectUser = $newval; +		} else if ($refresh || !isset($currentObjectUser)) { +			if ($id = $this->getCurrentUserId()) { +				$currentObjectUser = $this->getObjectUser($id); +			} else { +				$currentObjectUser = null; +			} +		} +		return $currentObjectUser; +	} + +	function isAdmin($userid) { +		$user = $this->getUser($userid); + +		if(isset($GLOBALS['admin_users']) +		&& in_array($user['username'], $GLOBALS['admin_users'])) { +			return true; +		} else { +			return false; +		} +	} + +	/* return current user id based on session or cookie */ +	function getCurrentUserId() { +		if (isset($_SESSION[$this->getSessionKey()])) { +			return $_SESSION[$this->getSessionKey()]; +		} else if (isset($_COOKIE[$this->getCookieKey()])) { +			$cook = split(':', $_COOKIE[$this->getCookieKey()]); +			//cookie looks like this: 'id:md5(username+password)' +			$query = 'SELECT * FROM '. $this->getTableName() .                       ' WHERE MD5(CONCAT('.$this->getFieldName('username') .                                       ', '.$this->getFieldName('password') .                       ')) = \''.$this->db->sql_escape($cook[1]).'\' AND '. -        		$this->getFieldName('primary'). ' = '. $this->db->sql_escape($cook[0]); - -        		if (! ($dbresult =& $this->db->sql_query($query)) ) { -        			message_die(GENERAL_ERROR, 'Could not get user', '', __LINE__, __FILE__, $query, $this->db); -        			return false; -        		} - -        		if ($row = $this->db->sql_fetchrow($dbresult)) { -        			$_SESSION[$this->getSessionKey()] = $row[$this->getFieldName('primary')]; -        			return $_SESSION[$this->getSessionKey()]; -        		} -        	} -        	return false; -        } - -        function login($username, $password, $remember = FALSE) { -        	$password = $this->sanitisePassword($password); -        	$query = 'SELECT '. $this->getFieldName('primary') .' FROM '. $this->getTableName() .' WHERE '. $this->getFieldName('username') .' = "'. $this->db->sql_escape($username) .'" AND '. $this->getFieldName('password') .' = "'. $this->db->sql_escape($password) .'"'; - -        	if (! ($dbresult =& $this->db->sql_query($query)) ) { -        		message_die(GENERAL_ERROR, 'Could not get user', '', __LINE__, __FILE__, $query, $this->db); -        		return false; -        	} - -        	if ($row =& $this->db->sql_fetchrow($dbresult)) { -        		$id = $_SESSION[$this->getSessionKey()] = $row[$this->getFieldName('primary')]; -        		if ($remember) { -        			$cookie = $id .':'. md5($username.$password); -        			setcookie($this->cookiekey, $cookie, time() + $this->cookietime, '/'); -        		} -        		return true; -        	} else { -        		return false; -        	} -        } - -        function logout() { -        	@setcookie($this->getCookiekey(), '', time() - 1, '/'); -        	unset($_COOKIE[$this->getCookiekey()]); -        	session_unset(); -        	$this->getCurrentUser(TRUE, false); -        } - -        function getWatchlist($uId) { -        	// Gets the list of user IDs being watched by the given user. -        	$query = 'SELECT watched FROM '. $GLOBALS['tableprefix'] .'watched WHERE uId = '. intval($uId); - -        	if (! ($dbresult =& $this->db->sql_query($query)) ) { -        		message_die(GENERAL_ERROR, 'Could not get watchlist', '', __LINE__, __FILE__, $query, $this->db); -        		return false; -        	} - -        	$arrWatch = array(); -        	if ($this->db->sql_numrows($dbresult) == 0) -        	return $arrWatch; -        	while ($row =& $this->db->sql_fetchrow($dbresult)) -        	$arrWatch[] = $row['watched']; -        	return $arrWatch; -        } - -        function getWatchNames($uId, $watchedby = false) { -        	// Gets the list of user names being watched by the given user. -        	// - If $watchedby is false get the list of users that $uId watches -        	// - If $watchedby is true get the list of users that watch $uId -        	if ($watchedby) { -        		$table1 = 'b'; -        		$table2 = 'a'; -        	} else { -        		$table1 = 'a'; -        		$table2 = 'b'; -        	} -        	$query = 'SELECT '. $table1 .'.'. $this->getFieldName('username') .' FROM '. $GLOBALS['tableprefix'] .'watched AS W, '. $this->getTableName() .' AS a, '. $this->getTableName() .' AS b WHERE W.watched = a.'. $this->getFieldName('primary') .' AND W.uId = b.'. $this->getFieldName('primary') .' AND '. $table2 .'.'. $this->getFieldName('primary') .' = '. intval($uId) .' ORDER BY '. $table1 .'.'. $this->getFieldName('username'); - -        	if (!($dbresult =& $this->db->sql_query($query))) { -        		message_die(GENERAL_ERROR, 'Could not get watchlist', '', __LINE__, __FILE__, $query, $this->db); -        		return false; -        	} - -        	$arrWatch = array(); -        	if ($this->db->sql_numrows($dbresult) == 0) { -        		return $arrWatch; -        	} -        	while ($row =& $this->db->sql_fetchrow($dbresult)) { -        		$arrWatch[] = $row[$this->getFieldName('username')]; -        	} -        	return $arrWatch; -        } - -        function getWatchStatus($watcheduser, $currentuser) { -        	// Returns true if the current user is watching the given user, and false otherwise. -        	$query = 'SELECT watched FROM '. $GLOBALS['tableprefix'] .'watched AS W INNER JOIN '. $this->getTableName() .' AS U ON U.'. $this->getFieldName('primary') .' = W.watched WHERE U.'. $this->getFieldName('primary') .' = '. intval($watcheduser) .' AND W.uId = '. intval($currentuser); - -        	if (! ($dbresult =& $this->db->sql_query($query)) ) { -        		message_die(GENERAL_ERROR, 'Could not get watchstatus', '', __LINE__, __FILE__, $query, $this->db); -        		return false; -        	} - -        	$arrWatch = array(); -        	if ($this->db->sql_numrows($dbresult) == 0) -        	return false; -        	else -        	return true; -        } - -        function setWatchStatus($subjectUserID) { -        	if (!is_numeric($subjectUserID)) -        	return false; - -        	$currentUserID = $this->getCurrentUserId(); -        	$watched = $this->getWatchStatus($subjectUserID, $currentUserID); - -        	if ($watched) { -        		$sql = 'DELETE FROM '. $GLOBALS['tableprefix'] .'watched WHERE uId = '. intval($currentUserID) .' AND watched = '. intval($subjectUserID); -        		if (!($dbresult =& $this->db->sql_query($sql))) { -        			$this->db->sql_transaction('rollback'); -        			message_die(GENERAL_ERROR, 'Could not add user to watch list', '', __LINE__, __FILE__, $sql, $this->db); -        			return false; -        		} -        	} else { -        		$values = array( +			$this->getFieldName('primary'). ' = '. $this->db->sql_escape($cook[0]); + +			if (! ($dbresult =& $this->db->sql_query($query)) ) { +				message_die(GENERAL_ERROR, 'Could not get user', '', __LINE__, __FILE__, $query, $this->db); +				return false; +			} + +			if ($row = $this->db->sql_fetchrow($dbresult)) { +				$_SESSION[$this->getSessionKey()] = $row[$this->getFieldName('primary')]; +				return $_SESSION[$this->getSessionKey()]; +			} +		} +		return false; +	} + +	function login($username, $password, $remember = FALSE) { +		$password = $this->sanitisePassword($password); +		$query = 'SELECT '. $this->getFieldName('primary') .' FROM '. $this->getTableName() .' WHERE '. $this->getFieldName('username') .' = "'. $this->db->sql_escape($username) .'" AND '. $this->getFieldName('password') .' = "'. $this->db->sql_escape($password) .'"'; + +		if (! ($dbresult =& $this->db->sql_query($query)) ) { +			message_die(GENERAL_ERROR, 'Could not get user', '', __LINE__, __FILE__, $query, $this->db); +			return false; +		} + +		if ($row =& $this->db->sql_fetchrow($dbresult)) { +			$id = $_SESSION[$this->getSessionKey()] = $row[$this->getFieldName('primary')]; +			if ($remember) { +				$cookie = $id .':'. md5($username.$password); +				setcookie($this->cookiekey, $cookie, time() + $this->cookietime, '/'); +			} +			return true; +		} else { +			return false; +		} +	} + +	function logout() { +		@setcookie($this->getCookiekey(), '', time() - 1, '/'); +		unset($_COOKIE[$this->getCookiekey()]); +		session_unset(); +		$this->getCurrentUser(TRUE, false); +	} + +	function getWatchlist($uId) { +		// Gets the list of user IDs being watched by the given user. +		$query = 'SELECT watched FROM '. $GLOBALS['tableprefix'] .'watched WHERE uId = '. intval($uId); + +		if (! ($dbresult =& $this->db->sql_query($query)) ) { +			message_die(GENERAL_ERROR, 'Could not get watchlist', '', __LINE__, __FILE__, $query, $this->db); +			return false; +		} + +		$arrWatch = array(); +		if ($this->db->sql_numrows($dbresult) == 0) +		return $arrWatch; +		while ($row =& $this->db->sql_fetchrow($dbresult)) +		$arrWatch[] = $row['watched']; +		return $arrWatch; +	} + +	function getWatchNames($uId, $watchedby = false) { +		// Gets the list of user names being watched by the given user. +		// - If $watchedby is false get the list of users that $uId watches +		// - If $watchedby is true get the list of users that watch $uId +		if ($watchedby) { +			$table1 = 'b'; +			$table2 = 'a'; +		} else { +			$table1 = 'a'; +			$table2 = 'b'; +		} +		$query = 'SELECT '. $table1 .'.'. $this->getFieldName('username') .' FROM '. $GLOBALS['tableprefix'] .'watched AS W, '. $this->getTableName() .' AS a, '. $this->getTableName() .' AS b WHERE W.watched = a.'. $this->getFieldName('primary') .' AND W.uId = b.'. $this->getFieldName('primary') .' AND '. $table2 .'.'. $this->getFieldName('primary') .' = '. intval($uId) .' ORDER BY '. $table1 .'.'. $this->getFieldName('username'); + +		if (!($dbresult =& $this->db->sql_query($query))) { +			message_die(GENERAL_ERROR, 'Could not get watchlist', '', __LINE__, __FILE__, $query, $this->db); +			return false; +		} + +		$arrWatch = array(); +		if ($this->db->sql_numrows($dbresult) == 0) { +			return $arrWatch; +		} +		while ($row =& $this->db->sql_fetchrow($dbresult)) { +			$arrWatch[] = $row[$this->getFieldName('username')]; +		} +		return $arrWatch; +	} + +	function getWatchStatus($watcheduser, $currentuser) { +		// Returns true if the current user is watching the given user, and false otherwise. +		$query = 'SELECT watched FROM '. $GLOBALS['tableprefix'] .'watched AS W INNER JOIN '. $this->getTableName() .' AS U ON U.'. $this->getFieldName('primary') .' = W.watched WHERE U.'. $this->getFieldName('primary') .' = '. intval($watcheduser) .' AND W.uId = '. intval($currentuser); + +		if (! ($dbresult =& $this->db->sql_query($query)) ) { +			message_die(GENERAL_ERROR, 'Could not get watchstatus', '', __LINE__, __FILE__, $query, $this->db); +			return false; +		} + +		$arrWatch = array(); +		if ($this->db->sql_numrows($dbresult) == 0) +		return false; +		else +		return true; +	} + +	function setWatchStatus($subjectUserID) { +		if (!is_numeric($subjectUserID)) +		return false; + +		$currentUserID = $this->getCurrentUserId(); +		$watched = $this->getWatchStatus($subjectUserID, $currentUserID); + +		if ($watched) { +			$sql = 'DELETE FROM '. $GLOBALS['tableprefix'] .'watched WHERE uId = '. intval($currentUserID) .' AND watched = '. intval($subjectUserID); +			if (!($dbresult =& $this->db->sql_query($sql))) { +				$this->db->sql_transaction('rollback'); +				message_die(GENERAL_ERROR, 'Could not add user to watch list', '', __LINE__, __FILE__, $sql, $this->db); +				return false; +			} +		} else { +			$values = array(                  'uId' => intval($currentUserID),                  'watched' => intval($subjectUserID) -        		); -        		$sql = 'INSERT INTO '. $GLOBALS['tableprefix'] .'watched '. $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 user to watch list', '', __LINE__, __FILE__, $sql, $this->db); -        			return false; -        		} -        	} - -        	$this->db->sql_transaction('commit'); -        	return true; -        } - -        function addUser($username, $password, $email) { -        	// Set up the SQL UPDATE statement. -        	$datetime = gmdate('Y-m-d H:i:s', time()); -        	$password = $this->sanitisePassword($password); -        	$values = array('username' => $username, 'password' => $password, 'email' => $email, 'uDatetime' => $datetime, 'uModified' => $datetime); -        	$sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values); - -        	// Execute the statement. -        	$this->db->sql_transaction('begin'); -        	if (!($dbresult = & $this->db->sql_query($sql))) { -        		$this->db->sql_transaction('rollback'); -        		message_die(GENERAL_ERROR, 'Could not insert user', '', __LINE__, __FILE__, $sql, $this->db); -        		return false; -        	} -        	$this->db->sql_transaction('commit'); - -        	// Everything worked out, so return true. -        	return true; -        } - -        function updateUser($uId, $password, $name, $email, $homepage, $uContent) { -        	if (!is_numeric($uId)) -        	return false; - -        	// Set up the SQL UPDATE statement. -        	$moddatetime = gmdate('Y-m-d H:i:s', time()); -        	if ($password == '') -        	$updates = array ('uModified' => $moddatetime, 'name' => $name, 'email' => $email, 'homepage' => $homepage, 'uContent' => $uContent); -        	else -        	$updates = array ('uModified' => $moddatetime, 'password' => $this->sanitisePassword($password), 'name' => $name, 'email' => $email, 'homepage' => $homepage, 'uContent' => $uContent); -        	$sql = 'UPDATE '. $this->getTableName() .' SET '. $this->db->sql_build_array('UPDATE', $updates) .' WHERE '. $this->getFieldName('primary') .'='. intval($uId); - -        	// Execute the statement. -        	$this->db->sql_transaction('begin'); -        	if (!($dbresult = & $this->db->sql_query($sql))) { -        		$this->db->sql_transaction('rollback'); -        		message_die(GENERAL_ERROR, 'Could not update user', '', __LINE__, __FILE__, $sql, $this->db); -        		return false; -        	} -        	$this->db->sql_transaction('commit'); - -        	// Everything worked out, so return true. -        	return true; -        } - -        function getAllUsers ( ) {
 -        	$query = 'SELECT * FROM '. $this->getTableName();
 +			); +			$sql = 'INSERT INTO '. $GLOBALS['tableprefix'] .'watched '. $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 user to watch list', '', __LINE__, __FILE__, $sql, $this->db); +				return false; +			} +		} + +		$this->db->sql_transaction('commit'); +		return true; +	} + +	function addUser($username, $password, $email) { +		// Set up the SQL UPDATE statement. +		$datetime = gmdate('Y-m-d H:i:s', time()); +		$password = $this->sanitisePassword($password); +		$values = array('username' => $username, 'password' => $password, 'email' => $email, 'uDatetime' => $datetime, 'uModified' => $datetime); +		$sql = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values); + +		// Execute the statement. +		$this->db->sql_transaction('begin'); +		if (!($dbresult = & $this->db->sql_query($sql))) { +			$this->db->sql_transaction('rollback'); +			message_die(GENERAL_ERROR, 'Could not insert user', '', __LINE__, __FILE__, $sql, $this->db); +			return false; +		} +		$this->db->sql_transaction('commit'); + +		// Everything worked out, so return true. +		return true; +	} + +	function updateUser($uId, $password, $name, $email, $homepage, $uContent) { +		if (!is_numeric($uId)) +		return false; + +		// Set up the SQL UPDATE statement. +		$moddatetime = gmdate('Y-m-d H:i:s', time()); +		if ($password == '') +		$updates = array ('uModified' => $moddatetime, 'name' => $name, 'email' => $email, 'homepage' => $homepage, 'uContent' => $uContent); +		else +		$updates = array ('uModified' => $moddatetime, 'password' => $this->sanitisePassword($password), 'name' => $name, 'email' => $email, 'homepage' => $homepage, 'uContent' => $uContent); +		$sql = 'UPDATE '. $this->getTableName() .' SET '. $this->db->sql_build_array('UPDATE', $updates) .' WHERE '. $this->getFieldName('primary') .'='. intval($uId); + +		// Execute the statement. +		$this->db->sql_transaction('begin'); +		if (!($dbresult = & $this->db->sql_query($sql))) { +			$this->db->sql_transaction('rollback'); +			message_die(GENERAL_ERROR, 'Could not update user', '', __LINE__, __FILE__, $sql, $this->db); +			return false; +		} +		$this->db->sql_transaction('commit'); + +		// Everything worked out, so return true. +		return true; +	} + +	function getAllUsers ( ) {
 +		$query = 'SELECT * FROM '. $this->getTableName();
 -        	if (! ($dbresult =& $this->db->sql_query($query)) ) {
 -        		message_die(GENERAL_ERROR, 'Could not get users', '', __LINE__, __FILE__, $query, $this->db);
 -        		return false;
 -        	}
 +		if (! ($dbresult =& $this->db->sql_query($query)) ) {
 +			message_die(GENERAL_ERROR, 'Could not get users', '', __LINE__, __FILE__, $query, $this->db);
 +			return false;
 +		}
 -        	$rows = array();
 +		$rows = array();
 -        	while ( $row = $this->db->sql_fetchrow($dbresult) ) {
 -        		$rows[] = $row;
 -        	}
 +		while ( $row = $this->db->sql_fetchrow($dbresult) ) {
 +			$rows[] = $row;
 +		}
 -        	return $rows;
 -        }
 +		return $rows;
 +	}
 -        function deleteUser($uId) {
 -        	$query = 'DELETE FROM '. $this->getTableName() .' WHERE uId = '. intval($uId);
 +	function deleteUser($uId) {
 +		$query = 'DELETE FROM '. $this->getTableName() .' WHERE uId = '. intval($uId);
 -        	if (!($dbresult = & $this->db->sql_query($query))) {
 -        		message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, __FILE__, $query, $this->db);
 -        		return false;
 -        	}
 +		if (!($dbresult = & $this->db->sql_query($query))) {
 +			message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, __FILE__, $query, $this->db);
 +			return false;
 +		}
 -        	return true;
 -        }
 - - -        function sanitisePassword($password) { -        	return sha1(trim($password)); -        } - -        function generatePassword($uId) { -        	if (!is_numeric($uId)) -        	return false; - -        	$password = $this->_randompassword(); - -        	if ($this->_updateuser($uId, $this->getFieldName('password'), $this->sanitisePassword($password))) -        	return $password; -        	else -        	return false; -        } - -        function isReserved($username) { -        	if (in_array($username, $GLOBALS['reservedusers'])) { -        		return true; -        	} else { -        		return false; -        	} -        } -         -        function isValidUsername($username) { -        	if (strlen($username) > 24) { -        		// too long usernames are cut by database and may cause bugs when compared  -        		return false; -        	} elseif (preg_match('/(\W)/', $username) > 0) { -        		// forbidden non-alphanumeric characters -        		return false; -        	} -        	return true; -        }         - -         - -        function isValidEmail($email) { -        	if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$", $email)) { -        		list($emailUser, $emailDomain) = split("@", $email); - -        		// Check if the email domain has a DNS record -        		if ($this->_checkdns($emailDomain)) { -        			return true; -        		} -        	} -        	return false; -        } - -        // Properties -        function getTableName()       { return $this->tablename; } -        function setTableName($value) { $this->tablename = $value; } - -        function getFieldName($field)         { return $this->fields[$field]; } -        function setFieldName($field, $value) { $this->fields[$field] = $value; } - -        function getSessionKey()       { return $this->sessionkey; } -        function setSessionKey($value) { $this->sessionkey = $value; } - -        function getCookieKey()       { return $this->cookiekey; } -        function setCookieKey($value) { $this->cookiekey = $value; } +		return true;
 +	}
 + + +	function sanitisePassword($password) { +		return sha1(trim($password)); +	} + +	function generatePassword($uId) { +		if (!is_numeric($uId)) +		return false; + +		$password = $this->_randompassword(); + +		if ($this->_updateuser($uId, $this->getFieldName('password'), $this->sanitisePassword($password))) +		return $password; +		else +		return false; +	} + +	function isReserved($username) { +		if (in_array($username, $GLOBALS['reservedusers'])) { +			return true; +		} else { +			return false; +		} +	} + +	function isValidUsername($username) { +		if (strlen($username) > 24) { +			// too long usernames are cut by database and may cause bugs when compared +			return false; +		} elseif (preg_match('/(\W)/', $username) > 0) { +			// forbidden non-alphanumeric characters +			return false; +		} +		return true; +	} + + + +	function isValidEmail($email) { +		if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$", $email)) { +			list($emailUser, $emailDomain) = split("@", $email); + +			// Check if the email domain has a DNS record +			if ($this->_checkdns($emailDomain)) { +				return true; +			} +		} +		return false; +	} + +	// Properties +	function getTableName()       { return $this->tablename; } +	function setTableName($value) { $this->tablename = $value; } + +	function getFieldName($field)         { return $this->fields[$field]; } +	function setFieldName($field, $value) { $this->fields[$field] = $value; } + +	function getSessionKey()       { return $this->sessionkey; } +	function setSessionKey($value) { $this->sessionkey = $value; } + +	function getCookieKey()       { return $this->cookiekey; } +	function setCookieKey($value) { $this->cookiekey = $value; } +} + +class User { + +	var $id; +	var $username; +	var $isAdmin; + +	function User($id, $username) { +		$this->id = $id; +		$this->username = $username; +	} +	 +	function getId() { +		return $this->id; +	} +	 +	function getUsername() { +		return $this->username; +	} +	 +	function isAdmin() { +		// Look for value if not already set +		if(!isset($this->isAdmin)) { +			$userservice =& ServiceFactory::getServiceInstance('UserService'); +			$this->isAdmin = $userservice->isAdmin($this->id); +		} +		return $this->isAdmin; +	}  }  ?> diff --git a/templates/bookmarks.tpl.php b/templates/bookmarks.tpl.php index e95f787..475436b 100644 --- a/templates/bookmarks.tpl.php +++ b/templates/bookmarks.tpl.php @@ -8,9 +8,13 @@ $cdservice =& ServiceFactory::getServiceInstance('CommonDescriptionService'); -$logged_on_userid = $userservice->getCurrentUserId(); -$currentUser = $userservice->getCurrentUser(); -$currentUsername = $currentUser[$userservice->getFieldName('username')]; +//$logged_on_userid = $userservice->getCurrentUserId(); +//$currentUser = $userservice->getCurrentUser(); +//$currentUsername = $currentUser[$userservice->getFieldName('username')]; + +// Momentary useful to go to object code +$currentObjectUser = $userservice->getCurrentObjectUser(); +  $pageName = isset($pageName)?$pageName:"";  $this->includeTemplate($GLOBALS['top_include']); @@ -23,50 +27,45 @@ include('search.inc.php');  <?php endif?> -<?php  -if((isset($currenttag) && $GLOBALS['enableCommonTagDescription']) - || (isset($hash) && $GLOBALS['enableCommonBookmarkDescription'])):?> -<p class="commondescription"> -  <?php +if((isset($currenttag) && $GLOBALS['enableCommonTagDescription']) +|| (isset($hash) && $GLOBALS['enableCommonBookmarkDescription'])):?> +<p class="commondescription"><?php  if(isset($currenttag) && $cdservice->getLastTagDescription($currenttag)) { -    $description = $cdservice->getLastTagDescription($currenttag); -    echo nl2br(filter($description['cdDescription'])); +	$description = $cdservice->getLastTagDescription($currenttag); +	echo nl2br(filter($description['cdDescription']));  } elseif(isset($hash) && $cdservice->getLastBookmarkDescription($hash)) { -    $description = $cdservice->getLastBookmarkDescription($hash); -    echo nl2br(filter($description['cdTitle'])). "<br/>"; -    echo nl2br(filter($description['cdDescription'])). "<br/>"; +	$description = $cdservice->getLastBookmarkDescription($hash); +	echo nl2br(filter($description['cdTitle'])). "<br/>"; +	echo nl2br(filter($description['cdDescription'])). "<br/>";  } -if($logged_on_userid>0) { -    if(isset($currenttag)) { -	echo ' (<a href="'. createURL('tagcommondescriptionedit', $currenttag).'">'; -	echo T_('edit common description').'</a>)'; -    } elseif(isset($hash)) { -	echo ' (<a href="'.createURL('bookmarkcommondescriptionedit', $hash).'">'; -	echo T_('edit common description').'</a>)'; -    } +if($userservice->isLoggedOn()) { +	if(isset($currenttag)) { +		echo ' (<a href="'. createURL('tagcommondescriptionedit', $currenttag).'">'; +		echo T_('edit common description').'</a>)'; +	} elseif(isset($hash)) { +		echo ' (<a href="'.createURL('bookmarkcommondescriptionedit', $hash).'">'; +		echo T_('edit common description').'</a>)'; +	}  } -?> -</p> +?></p>  <?php endif ?>  <?php  /* Private tag description */  if(isset($currenttag) && isset($user)) { -    $userObject = $userservice->getUserByUsername($user); -    if($tagservice->getDescription($currenttag, $userObject['uId'])) { ?> +	$userObject = $userservice->getUserByUsername($user); +	if($tagservice->getDescription($currenttag, $userObject['uId'])) { ?> -<p class="commondescription"> -<?php -    $description = $tagservice->getDescription($currenttag, $userObject['uId']); -    echo nl2br(filter($description['tDescription'])); -?> -</p> +<p class="commondescription"><?php +$description = $tagservice->getDescription($currenttag, $userObject['uId']); +echo nl2br(filter($description['tDescription'])); +?></p> -<?php  -    } +<?php +	}  }  ?> @@ -75,202 +74,195 @@ if(isset($currenttag) && isset($user)) {  window.onload = playerLoad;  </script> -<p id="sort"> -    <?php echo $total.' '.T_("bookmark(s)"); ?> -  -    <?php echo T_("Sort by:"); ?> -    <?php -	$dateSort = (getSortOrder()=='date_desc')? 'date_asc':'date_desc'; -	$titleSort = (getSortOrder()=='title_asc')? 'title_desc':'title_asc'; -	$urlSort = (getSortOrder()=='url_asc')? 'url_desc':'url_asc'; -    ?> -    <a href="?sort=<?php echo $dateSort ?>"><?php echo T_("Date"); ?></a><span> / </span> -    <a href="?sort=<?php echo $titleSort ?>"><?php echo T_("Title"); ?></a><span> / </span> -    <?php -    if (!isset($hash)) { -    ?> -    <a href="?sort=<?php echo $urlSort ?>"><?php echo T_("URL"); ?></a> -    <?php -    } -    ?> - -    <?php -    if(isset($currenttag)) { +<p id="sort"><?php echo $total.' '.T_("bookmark(s)"); ?> - <?php echo T_("Sort by:"); ?> +<?php +$dateSort = (getSortOrder()=='date_desc')? 'date_asc':'date_desc'; +$titleSort = (getSortOrder()=='title_asc')? 'title_desc':'title_asc'; +$urlSort = (getSortOrder()=='url_asc')? 'url_desc':'url_asc'; +?> <a href="?sort=<?php echo $dateSort ?>"><?php echo T_("Date"); ?></a><span> +/ </span> <a href="?sort=<?php echo $titleSort ?>"><?php echo T_("Title"); ?></a><span> +/ </span> <?php +if (!isset($hash)) { +	?> <a href="?sort=<?php echo $urlSort ?>"><?php echo T_("URL"); ?></a> +	<?php +} +?> <?php +if(isset($currenttag)) {  	if(isset($user)) { -	    echo ' - '; -	    echo '<a href="'. createURL('tags', $currenttag) .'">'; -	    echo T_('Bookmarks from other users for this tag').'</a>'; -	    //echo T_(' for these tags'); - 	} else if($logged_on_userid>0){ -	    echo ' - '; -	    echo '<a href="'. createURL('bookmarks', $currentUsername.'/'.$currenttag) .'">'; -	    echo T_('Only your bookmarks for this tag').'</a>'; -	    //echo T_(' for these tags'); +		echo ' - '; +		echo '<a href="'. createURL('tags', $currenttag) .'">'; +		echo T_('Bookmarks from other users for this tag').'</a>'; +		//echo T_(' for these tags'); +	} else if($userservice->isLoggedOn()){ +		echo ' - '; +		echo '<a href="'. createURL('bookmarks', $currentObjectUser->getUsername().'/'.$currenttag) .'">'; +		echo T_('Only your bookmarks for this tag').'</a>'; +		//echo T_(' for these tags'); +	} +} +?></p> + + + +<ol <?php echo ($start > 0 ? ' start="'. ++$start .'"' : ''); ?> +	id="bookmarks"> + +	<?php +	foreach(array_keys($bookmarks) as $key) { +		$row =& $bookmarks[$key]; +		switch ($row['bStatus']) { +			case 0: +				$access = ''; +				break; +			case 1: +				$access = ' shared'; +				break; +			case 2: +				$access = ' private'; +				break; +		} + +		$cats = ''; +		$tagsForCopy = ''; +		$tags = $row['tags']; +		foreach(array_keys($tags) as $key) { + +			$tag =& $tags[$key]; +			$cats .= '<a href="'. sprintf($cat_url, filter($row['username'], 'url'), filter($tag, 'url')) .'" rel="tag">'. filter($tag) .'</a>, '; +			$tagsForCopy.= $tag.','; +		} +		$cats = substr($cats, 0, -2); +		if ($cats != '') { +			$cats = ' '.T_('in').' '. $cats; +		} + +		// Edit and delete links +		$edit = ''; +		if ($bookmarkservice->editAllowed($row['bId'])) { +			$edit = ' - <a href="'. createURL('edit', $row['bId']) .'">'. T_('Edit') .'</a><script type="text/javascript">document.write(" - <a href=\"#\" onclick=\"deleteBookmark(this, '. $row['bId'] .'); return false;\">'. T_('Delete') .'<\/a>");</script>'; +		} + +		// User attribution +		$copy = ''; +		if (!isset($user) || isset($watched)) { +			$copy = ' '. T_('by') .' <a href="'. createURL('bookmarks', $row['username']) .'">'. $row['username'] .'</a>'; +		} + +		// Udders! +		if (!isset($hash)) { +			$others = $bookmarkservice->countOthers($row['bAddress']); +			$ostart = '<a href="'. createURL('history', $row['bHash']) .'">'; +			$oend = '</a>'; +			switch ($others) { +				case 0: +					break; +				case 1: +					$copy .= sprintf(T_(' and %s1 other%s'), $ostart, $oend); +					break; +				default: +					$copy .= sprintf(T_(' and %2$s%1$s others%3$s'), $others, $ostart, $oend); +			} +		} + +		// Copy link +		if ($userservice->isLoggedOn() +		&& ($currentObjectUser->getId() != $row['uId']) +		&& !$bookmarkservice->bookmarkExists($row['bAddress'], $currentObjectUser->getId())) { +			$copy .= ' - <a href="'. createURL('bookmarks', $currentObjectUser->getUsername() .'?action=add&address='. urlencode($row['bAddress']) .'&title='. urlencode($row['bTitle'])). '&description='.urlencode($row['bDescription']). '&tags='.$tagsForCopy  .'">'. T_('Copy') .'</a>'; +		} + +		// Nofollow option +		$rel = ''; +		if ($GLOBALS['nofollow']) { +			$rel = ' rel="nofollow"'; +		} + +		$address = filter($row['bAddress']); + +		// Redirection option +		if ($GLOBALS['useredir']) { +			$address = $GLOBALS['url_redir'] . $address; +		} + +		// Output +		echo '<li class="xfolkentry'. $access .'">'."\n"; +		if ($GLOBALS['enableWebsiteThumbnails']) { +			$thumbnailHash = md5($address.$GLOBALS['thumbnailsUserId'].$GLOBALS['thumbnailsKey']); +			echo '<a href="'. $address .'"'. $rel .' ><img class="thumbnail" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />  '; +		} +		echo '<div>'; + +		echo '<div class="link"><a href="'. $address .'"'. $rel .' class="taggedlink">'. filter($row['bTitle']) ."</a></div>\n"; +		if ($row['bDescription'] == '') { +			$row['bDescription'] = '-'; +		} +		echo '<div class="description">'. filter($row['bDescription']) ."</div>\n"; +		if(!isset($hash)) { +			echo '<div class="address">'.shortenString($address).'</div>'; +		} + +		echo '<div class="meta">'. date($GLOBALS['shortdate'], strtotime($row['bDatetime'])) . $cats . $copy . $edit ."</div>\n"; + +		echo '</div>'; + +		echo "</li>\n"; +	} +	?> + +</ol> + +	<?php +	// PAGINATION + +	// Ordering +	$sortOrder = ''; +	if (isset($_GET['sort'])) { +		$sortOrder = 'sort='. $_GET['sort'];  	} -    } -    ?> -</p> - - - -<ol<?php echo ($start > 0 ? ' start="'. ++$start .'"' : ''); ?> id="bookmarks"> - -    <?php -    foreach(array_keys($bookmarks) as $key) { -        $row =& $bookmarks[$key]; -        switch ($row['bStatus']) { -            case 0: -                $access = ''; -                break; -            case 1: -                $access = ' shared'; -                break; -            case 2: -                $access = ' private'; -                break; -        } - -        $cats = ''; -	$tagsForCopy = ''; -        $tags = $row['tags']; -        foreach(array_keys($tags) as $key) { - -            $tag =& $tags[$key]; -            $cats .= '<a href="'. sprintf($cat_url, filter($row['username'], 'url'), filter($tag, 'url')) .'" rel="tag">'. filter($tag) .'</a>, '; -	    $tagsForCopy.= $tag.','; -        } -        $cats = substr($cats, 0, -2); -        if ($cats != '') { -            $cats = ' '.T_('in').' '. $cats; -        } - -        // Edit and delete links -        $edit = ''; -        if ($bookmarkservice->editAllowed($row['bId'])) { -            $edit = ' - <a href="'. createURL('edit', $row['bId']) .'">'. T_('Edit') .'</a><script type="text/javascript">document.write(" - <a href=\"#\" onclick=\"deleteBookmark(this, '. $row['bId'] .'); return false;\">'. T_('Delete') .'<\/a>");</script>'; -        } - -        // User attribution -        $copy = ''; -        if (!isset($user) || isset($watched)) { -            $copy = ' '. T_('by') .' <a href="'. createURL('bookmarks', $row['username']) .'">'. $row['username'] .'</a>'; -        } - -        // Udders! -        if (!isset($hash)) { -            $others = $bookmarkservice->countOthers($row['bAddress']); -            $ostart = '<a href="'. createURL('history', $row['bHash']) .'">'; -            $oend = '</a>'; -            switch ($others) { -                case 0: -                    break; -                case 1: -                    $copy .= sprintf(T_(' and %s1 other%s'), $ostart, $oend); -                    break; -                default: -                    $copy .= sprintf(T_(' and %2$s%1$s others%3$s'), $others, $ostart, $oend); -            } -        } - -        // Copy link -        if ($userservice->isLoggedOn() && ($logged_on_userid != $row['uId']) && !$bookmarkservice->bookmarkExists($row['bAddress'], $logged_on_userid)) { -            // Get the username of the current user -            $currentUser = $userservice->getCurrentUser(); -            $currentUsername = $currentUser[$userservice->getFieldName('username')]; -            $copy .= ' - <a href="'. createURL('bookmarks', $currentUsername .'?action=add&address='. urlencode($row['bAddress']) .'&title='. urlencode($row['bTitle'])). '&description='.urlencode($row['bDescription']). '&tags='.$tagsForCopy  .'">'. T_('Copy') .'</a>';    -        } - -        // Nofollow option -        $rel = ''; -        if ($GLOBALS['nofollow']) { -            $rel = ' rel="nofollow"'; -        } - -        $address = filter($row['bAddress']); -         -        // Redirection option -        if ($GLOBALS['useredir']) { -            $address = $GLOBALS['url_redir'] . $address; -        } -         -        // Output -        echo '<li class="xfolkentry'. $access .'">'."\n"; -	if ($GLOBALS['enableWebsiteThumbnails']) { -		$thumbnailHash = md5($address.$GLOBALS['thumbnailsUserId'].$GLOBALS['thumbnailsKey']);	     -	    echo '<a href="'. $address .'"'. $rel .' ><img class="thumbnail" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />  '; + +	$sortAmp = (($sortOrder) ? '&'. $sortOrder : ''); +	$sortQue = (($sortOrder) ? '?'. $sortOrder : ''); + +	// Previous +	$perpage = getPerPageCount(); +	if (!$page || $page < 2) { +		$page = 1; +		$start = 0; +		$bfirst = '<span class="disable">'. T_('First') .'</span>'; +		$bprev = '<span class="disable">'. T_('Previous') .'</span>'; +	} else { +		$prev = $page - 1; +		$prev = 'page='. $prev; +		$start = ($page - 1) * $perpage; +		$bfirst= '<a href="'. sprintf($nav_url, $user, $currenttag, '') . $sortQue .'">'. T_('First') .'</a>'; +		$bprev = '<a href="'. sprintf($nav_url, $user, $currenttag, '?') . $prev . $sortAmp .'">'. T_('Previous') .'</a>';  	} -	echo '<div>'; - -        echo '<div class="link"><a href="'. $address .'"'. $rel .' class="taggedlink">'. filter($row['bTitle']) ."</a></div>\n"; -        if ($row['bDescription'] == '') { -            $row['bDescription'] = '-'; -        } -        echo '<div class="description">'. filter($row['bDescription']) ."</div>\n"; -	if(!isset($hash)) { -	    echo '<div class="address">'.shortenString($address).'</div>'; + +	// Next +	$next = $page + 1; +	$totalpages = ceil($total / $perpage); +	if (count($bookmarks) < $perpage || $perpage * $page == $total) { +		$bnext = '<span class="disable">'. T_('Next') .'</span>'; +		$blast = '<span class="disable">'. T_('Last') ."</span>\n"; +	} else { +		$bnext = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $next . $sortAmp .'">'. T_('Next') .'</a>'; +		$blast = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $totalpages . $sortAmp .'">'. T_('Last') ."</a>\n";  	} -        echo '<div class="meta">'. date($GLOBALS['shortdate'], strtotime($row['bDatetime'])) . $cats . $copy . $edit ."</div>\n"; +	// RSS +	$brss = ''; +	$size = count($rsschannels); +	for ($i = 0; $i < $size; $i++) { +		$brss =  '<a style="background:#FFFFFF" href="'. $rsschannels[$i][1] .'" title="'. $rsschannels[$i][0] .'"><img src="'. ROOT .'images/rss.gif" width="16" height="16" alt="'. $rsschannels[$i][0] .'" /></a>'; +	} -	echo '</div>'; +	echo '<p class="paging">'. $bfirst .'<span> / </span>'. $bprev .'<span> / </span>'. $bnext .'<span> / </span>'. $blast .'<span> / </span>'. sprintf(T_('Page %d of %d'), $page, $totalpages) ." ". $brss ." </p>\n"; -        echo "</li>\n"; -    } -    ?> -</ol> -    <?php -    // PAGINATION -     -    // Ordering -    $sortOrder = ''; -    if (isset($_GET['sort'])) { -        $sortOrder = 'sort='. $_GET['sort']; -    } -     -    $sortAmp = (($sortOrder) ? '&'. $sortOrder : ''); -    $sortQue = (($sortOrder) ? '?'. $sortOrder : ''); -     -    // Previous -    $perpage = getPerPageCount(); -    if (!$page || $page < 2) { -        $page = 1; -        $start = 0; -        $bfirst = '<span class="disable">'. T_('First') .'</span>'; -        $bprev = '<span class="disable">'. T_('Previous') .'</span>'; -    } else { -        $prev = $page - 1; -        $prev = 'page='. $prev; -        $start = ($page - 1) * $perpage; -        $bfirst= '<a href="'. sprintf($nav_url, $user, $currenttag, '') . $sortQue .'">'. T_('First') .'</a>'; -        $bprev = '<a href="'. sprintf($nav_url, $user, $currenttag, '?') . $prev . $sortAmp .'">'. T_('Previous') .'</a>'; -    } -     -    // Next -    $next = $page + 1; -    $totalpages = ceil($total / $perpage); -    if (count($bookmarks) < $perpage || $perpage * $page == $total) { -        $bnext = '<span class="disable">'. T_('Next') .'</span>'; -        $blast = '<span class="disable">'. T_('Last') ."</span>\n"; -    } else { -        $bnext = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $next . $sortAmp .'">'. T_('Next') .'</a>'; -        $blast = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $totalpages . $sortAmp .'">'. T_('Last') ."</a>\n"; -    } - -    // RSS -    $brss = ''; -    $size = count($rsschannels); -    for ($i = 0; $i < $size; $i++) { -        $brss =  '<a style="background:#FFFFFF" href="'. $rsschannels[$i][1] .'" title="'. $rsschannels[$i][0] .'"><img src="'. ROOT .'images/rss.gif" width="16" height="16" alt="'. $rsschannels[$i][0] .'" /></a>';  -    } - -    echo '<p class="paging">'. $bfirst .'<span> / </span>'. $bprev .'<span> / </span>'. $bnext .'<span> / </span>'. $blast .'<span> / </span>'. sprintf(T_('Page %d of %d'), $page, $totalpages) ." ". $brss ." </p>\n"; - - -      } else { -    echo '<p class="error">'.T_('No bookmarks available').'</p>'; +	echo '<p class="error">'.T_('No bookmarks available').'</p>';  }  $this->includeTemplate('sidebar.tpl');  $this->includeTemplate($GLOBALS['bottom_include']); | 
