. * */ //no apps or filesystem $RUNTIME_NOSETUPFS=true; require_once('../../../lib/base.php'); // Check if we are a user OC_JSON::checkLoggedIn(); OC_JSON::checkAppEnabled('bookmarks'); $params=array(OC_User::getUser()); $CONFIG_DBTYPE = OC_Config::getValue( 'dbtype', 'sqlite' ); //Filter for tag? $filterTag = isset($_GET['tag']) ? '%' . htmlspecialchars_decode($_GET['tag']) . '%' : false; if($filterTag){ $sqlFilterTag = 'HAVING tags LIKE ?'; $params[] = $filterTag; } else { $sqlFilterTag = ''; } $offset = isset($_GET['page']) ? intval($_GET['page']) * 10 : 0; $params[] = $offset; $sort = isset($_GET['sort']) ? ($_GET['sort']) : 'bookmarks_sorting_recent'; if($sort == 'bookmarks_sorting_clicks') { $sqlSort = 'clickcount DESC'; } else { $sqlSort = 'id DESC'; } if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ $_gc_separator = ', \' \''; } else { $_gc_separator = 'SEPARATOR \' \''; } $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 = ? GROUP BY url '.$sqlFilterTag.' ORDER BY *PREFIX*bookmarks.'.$sqlSort.' LIMIT ?, 10'); $bookmarks = $query->execute($params)->fetchAll(); OC_JSON::success(array('data' => $bookmarks));