2011-08-16 00:05:07 +04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* ownCloud - bookmarks plugin
|
|
|
|
*
|
|
|
|
* @author Arthur Schiwon
|
|
|
|
* @copyright 2011 Arthur Schiwon blizzz@arthur-schiwon.de
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 3 of the License, or any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
//no apps or filesystem
|
|
|
|
$RUNTIME_NOSETUPFS=true;
|
|
|
|
|
|
|
|
require_once('../../../lib/base.php');
|
|
|
|
|
|
|
|
// We send json data
|
2011-08-23 14:03:20 +04:00
|
|
|
header( 'Content-Type: application/jsonrequest' );
|
2011-08-16 00:05:07 +04:00
|
|
|
|
|
|
|
// Check if we are a user
|
|
|
|
if( !OC_User::isLoggedIn()){
|
2011-08-23 14:03:20 +04:00
|
|
|
echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => 'Authentication error' )));
|
2011-08-16 00:05:07 +04:00
|
|
|
exit();
|
|
|
|
}
|
|
|
|
|
|
|
|
$params=array(OC_User::getUser());
|
2011-08-23 14:03:20 +04:00
|
|
|
$CONFIG_DBTYPE = OC_Config::getValue( 'dbtype', 'sqlite' );
|
2011-08-16 00:05:07 +04:00
|
|
|
|
|
|
|
//Filter for tag?
|
2011-08-25 15:51:48 +04:00
|
|
|
$filterTag = isset($_GET['tag']) ? '%' . htmlspecialchars_decode($_GET['tag']) . '%' : false;
|
2011-08-16 00:05:07 +04:00
|
|
|
if($filterTag){
|
2011-08-23 13:57:56 +04:00
|
|
|
$sqlFilterTag = 'HAVING tags LIKE ?';
|
2011-08-16 00:05:07 +04:00
|
|
|
$params[] = $filterTag;
|
|
|
|
} else {
|
|
|
|
$sqlFilterTag = '';
|
|
|
|
}
|
|
|
|
|
2011-08-23 14:03:20 +04:00
|
|
|
$offset = isset($_GET['page']) ? intval($_GET['page']) * 10 : 0;
|
2011-08-16 00:05:07 +04:00
|
|
|
$params[] = $offset;
|
|
|
|
|
2011-08-25 14:55:13 +04:00
|
|
|
$sort = isset($_GET['sort']) ? ($_GET['sort']) : 'bookmarks_sorting_recent';
|
|
|
|
if($sort == 'bookmarks_sorting_clicks') {
|
|
|
|
$sqlSort = 'clickcount DESC';
|
|
|
|
} else {
|
|
|
|
$sqlSort = 'id DESC';
|
|
|
|
}
|
|
|
|
|
2011-08-17 01:49:53 +04:00
|
|
|
if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){
|
2011-08-23 14:03:20 +04:00
|
|
|
$_gc_separator = ', \' \'';
|
2011-08-17 01:49:53 +04:00
|
|
|
} else {
|
2011-08-23 14:03:20 +04:00
|
|
|
$_gc_separator = 'SEPARATOR \' \'';
|
2011-08-17 01:49:53 +04:00
|
|
|
}
|
|
|
|
|
2011-08-23 14:03:20 +04:00
|
|
|
$query = OC_DB::prepare('
|
2011-09-13 15:08:11 +04:00
|
|
|
SELECT id, url, title, description,
|
2011-08-23 17:12:34 +04:00
|
|
|
CASE WHEN *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id
|
|
|
|
THEN GROUP_CONCAT( tag ' .$_gc_separator. ' )
|
|
|
|
ELSE \' \'
|
|
|
|
END
|
|
|
|
AS tags
|
2011-09-23 14:39:38 +04:00
|
|
|
FROM *PREFIX*bookmarks
|
|
|
|
LEFT JOIN *PREFIX*bookmarks_tags ON 1=1
|
2011-08-23 17:12:34 +04:00
|
|
|
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
|
|
|
|
)
|
|
|
|
)
|
2011-08-16 00:05:07 +04:00
|
|
|
AND *PREFIX*bookmarks.user_id = ?
|
|
|
|
GROUP BY url
|
2011-08-23 14:03:20 +04:00
|
|
|
'.$sqlFilterTag.'
|
2011-08-25 14:55:13 +04:00
|
|
|
ORDER BY *PREFIX*bookmarks.'.$sqlSort.'
|
2011-08-23 14:03:20 +04:00
|
|
|
LIMIT ?, 10');
|
2011-08-16 00:05:07 +04:00
|
|
|
|
|
|
|
$bookmarks = $query->execute($params)->fetchAll();
|
|
|
|
|
2011-08-23 14:03:20 +04:00
|
|
|
echo json_encode( array( 'status' => 'success', 'data' => $bookmarks));
|