format getPopularTags and add docblock
This commit is contained in:
parent
9f46e9f3ff
commit
5c480c9bab
1 changed files with 56 additions and 19 deletions
|
@ -477,35 +477,70 @@ class SemanticScuttle_Service_Bookmark2Tag extends SemanticScuttle_DbService
|
||||||
return $this->getPopularTags($contacts, $limit, $logged_on_user, $days);
|
return $this->getPopularTags($contacts, $limit, $logged_on_user, $days);
|
||||||
}
|
}
|
||||||
|
|
||||||
// $users can be {NULL, an id, an array of id}
|
/**
|
||||||
function &getPopularTags($user = NULL, $limit = 30, $logged_on_user = NULL, $days = NULL) {
|
* The the most popular tags and their usage count
|
||||||
|
*
|
||||||
|
* @param mixed $user Integer user ID or array of user IDs to limit tag
|
||||||
|
* finding to
|
||||||
|
* @param integer $limit Number of tags to return
|
||||||
|
* @param integer $logged_on_user ID of the user that's currently logged in.
|
||||||
|
* If the logged in user equals the $user to find
|
||||||
|
* tags for, tags of private bookmarks are
|
||||||
|
* returned.
|
||||||
|
* @param integer $days Bookmarks have to be changed in the last X days
|
||||||
|
* if their tags shall count*
|
||||||
|
*
|
||||||
|
* @return array Array of found tags. Each tag entry is an array with two keys,
|
||||||
|
* 'tag' (tag name) and 'bCount'.
|
||||||
|
*/
|
||||||
|
public function getPopularTags(
|
||||||
|
$user = null, $limit = 30, $logged_on_user = null, $days = null
|
||||||
|
) {
|
||||||
// Only count the tags that are visible to the current user.
|
// Only count the tags that are visible to the current user.
|
||||||
if (($user != $logged_on_user) || is_null($user) || ($user === false))
|
if (($user != $logged_on_user) || is_null($user) || ($user === false)) {
|
||||||
$privacy = ' AND B.bStatus = 0';
|
$privacy = ' AND B.bStatus = 0';
|
||||||
else
|
} else {
|
||||||
$privacy = '';
|
$privacy = '';
|
||||||
|
}
|
||||||
|
|
||||||
if (is_null($days) || !is_int($days))
|
if (is_null($days) || !is_int($days)) {
|
||||||
$span = '';
|
$span = '';
|
||||||
else
|
} else {
|
||||||
$span = ' AND B.bDatetime > "'. date('Y-m-d H:i:s', time() - (86400 * $days)) .'"';
|
$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';
|
||||||
|
|
||||||
$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)) {
|
if (is_null($user) || ($user === false)) {
|
||||||
$query .= 'B.bId = T.bId AND B.bStatus = 0';
|
$query .= ' B.bId = T.bId AND B.bStatus = 0';
|
||||||
} elseif(is_array($user)) {
|
} else if (is_array($user)) {
|
||||||
$query .= ' (1 = 0'; //tricks
|
$query .= ' (1 = 0'; //tricks
|
||||||
foreach($user as $u) {
|
foreach ($user as $u) {
|
||||||
$query .= ' OR B.uId = '. $this->db->sql_escape($u) .' AND B.bId = T.bId';
|
$query .= ' OR B.uId = ' . $this->db->sql_escape($u)
|
||||||
|
. ' AND B.bId = T.bId';
|
||||||
}
|
}
|
||||||
$query .= ' )';
|
$query .= ' )';
|
||||||
} else {
|
} else {
|
||||||
$query .= 'B.uId = '. $this->db->sql_escape($user) .' AND B.bId = T.bId'. $privacy;
|
$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))) {
|
$query .= $span . ' AND LEFT(T.tag, 7) <> "system:"'
|
||||||
message_die(GENERAL_ERROR, 'Could not get popular tags', '', __LINE__, __FILE__, $query, $this->db);
|
. ' 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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,6 +549,8 @@ class SemanticScuttle_Service_Bookmark2Tag extends SemanticScuttle_DbService
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function hasTag($bookmarkid, $tag) {
|
function hasTag($bookmarkid, $tag) {
|
||||||
$query = 'SELECT COUNT(*) AS tCount FROM '. $this->getTableName() .' WHERE bId = '. intval($bookmarkid) .' AND tag ="'. $this->db->sql_escape($tag) .'"';
|
$query = 'SELECT COUNT(*) AS tCount FROM '. $this->getTableName() .' WHERE bId = '. intval($bookmarkid) .' AND tag ="'. $this->db->sql_escape($tag) .'"';
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue