|
|
@ -38,6 +38,9 @@ $filterTag = isset($_GET['tag']) ? '%' . htmlspecialchars_decode($_GET['tag']) . |
|
|
|
if($filterTag){ |
|
|
|
if($filterTag){ |
|
|
|
$sqlFilterTag = 'HAVING tags LIKE ?'; |
|
|
|
$sqlFilterTag = 'HAVING tags LIKE ?'; |
|
|
|
$params[] = $filterTag; |
|
|
|
$params[] = $filterTag; |
|
|
|
|
|
|
|
if($CONFIG_DBTYPE == 'pgsql' ) { |
|
|
|
|
|
|
|
$sqlFilterTag = 'HAVING array_to_string(array_agg(tag), \' \') LIKE ?'; |
|
|
|
|
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$sqlFilterTag = ''; |
|
|
|
$sqlFilterTag = ''; |
|
|
|
} |
|
|
|
} |
|
|
@ -58,26 +61,40 @@ if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ |
|
|
|
$_gc_separator = 'SEPARATOR \' \''; |
|
|
|
$_gc_separator = 'SEPARATOR \' \''; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$query = OC_DB::prepare(' |
|
|
|
if($CONFIG_DBTYPE == 'pgsql' ){ |
|
|
|
SELECT id, url, title, |
|
|
|
$query = OC_DB::prepare(' |
|
|
|
CASE WHEN *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id |
|
|
|
SELECT id, url, title, array_to_string(array_agg(tag), \' \') as tags |
|
|
|
THEN GROUP_CONCAT( tag ' .$_gc_separator. ' ) |
|
|
|
FROM *PREFIX*bookmarks |
|
|
|
ELSE \' \' |
|
|
|
LEFT JOIN *PREFIX*bookmarks_tags ON *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id |
|
|
|
END |
|
|
|
WHERE |
|
|
|
AS tags |
|
|
|
*PREFIX*bookmarks.user_id = ? |
|
|
|
FROM *PREFIX*bookmarks |
|
|
|
GROUP BY id, url, title |
|
|
|
LEFT JOIN *PREFIX*bookmarks_tags ON 1=1 |
|
|
|
'.$sqlFilterTag.' |
|
|
|
WHERE (*PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id |
|
|
|
ORDER BY *PREFIX*bookmarks.'.$sqlSort.' |
|
|
|
OR *PREFIX*bookmarks.id NOT IN ( |
|
|
|
LIMIT 10 |
|
|
|
SELECT *PREFIX*bookmarks_tags.bookmark_id FROM *PREFIX*bookmarks_tags |
|
|
|
OFFSET ?'); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$query = OC_DB::prepare(' |
|
|
|
|
|
|
|
SELECT id, url, title, |
|
|
|
|
|
|
|
CASE WHEN *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id |
|
|
|
|
|
|
|
THEN GROUP_CONCAT( tag ' .$_gc_separator. ' ) |
|
|
|
|
|
|
|
ELSE \' \' |
|
|
|
|
|
|
|
END |
|
|
|
|
|
|
|
AS tags |
|
|
|
|
|
|
|
FROM *PREFIX*bookmarks |
|
|
|
|
|
|
|
LEFT JOIN *PREFIX*bookmarks_tags ON 1=1 |
|
|
|
|
|
|
|
WHERE (*PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id |
|
|
|
|
|
|
|
OR *PREFIX*bookmarks.id NOT IN ( |
|
|
|
|
|
|
|
SELECT *PREFIX*bookmarks_tags.bookmark_id FROM *PREFIX*bookmarks_tags |
|
|
|
|
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
AND *PREFIX*bookmarks.user_id = ? |
|
|
|
AND *PREFIX*bookmarks.user_id = ? |
|
|
|
GROUP BY url |
|
|
|
GROUP BY url |
|
|
|
'.$sqlFilterTag.' |
|
|
|
'.$sqlFilterTag.' |
|
|
|
ORDER BY *PREFIX*bookmarks.'.$sqlSort.' |
|
|
|
ORDER BY *PREFIX*bookmarks.'.$sqlSort.' |
|
|
|
LIMIT ?, 10'); |
|
|
|
LIMIT ?, 10'); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$bookmarks = $query->execute($params)->fetchAll(); |
|
|
|
$bookmarks = $query->execute($params)->fetchAll(); |
|
|
|
|
|
|
|
|
|
|
|
OC_JSON::success(array('data' => $bookmarks)); |
|
|
|
OC_JSON::success(array('data' => $bookmarks)); |
|
|
|