moved some code from updateList.php to bookmarks.php, to make it reusableremotes/origin/stable4
parent
4145e3b265
commit
e229a6adec
@ -0,0 +1,22 @@ |
||||
/** |
||||
* Copyright (c) 2012 David Iwanowitsch <david at unclouded dot de> |
||||
* This file is licensed under the Affero General Public License version 3 or |
||||
* later. |
||||
* See the COPYING-README file. |
||||
*/ |
||||
$(document).ready(function(){ |
||||
OC.search.customResults.Bookm.=function(row,item){ |
||||
var a=row.find('a'); |
||||
a.attr('target','_blank'); |
||||
a.click(recordClick); |
||||
} |
||||
}); |
||||
|
||||
function recordClick(event) { |
||||
var jsFileLocation = $('script[src*=bookmarksearch]').attr('src'); |
||||
jsFileLocation = jsFileLocation.replace('js/bookmarksearch.js', ''); |
||||
$.ajax({ |
||||
url: jsFileLocation + 'ajax/recordClick.php', |
||||
data: 'url=' + encodeURI($(this).attr('href')), |
||||
});
|
||||
} |
@ -0,0 +1,5 @@ |
||||
../appinfo/app.php |
||||
../lib/search.php |
||||
../templates/settings.php |
||||
../templates/addBm.php |
||||
../templates/list.php |
@ -0,0 +1,117 @@ |
||||
<?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 Affero General Public |
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
/** |
||||
* This class manages bookmarks |
||||
*/ |
||||
class OC_Bookmarks_Bookmarks{ |
||||
|
||||
/** |
||||
* @brief Finds all bookmarks, matching the filter |
||||
* @param offset result offset |
||||
* @param sqlSortColumn sort result with this column |
||||
* @param filter can be: empty -> no filter, a string -> filter this, a string array -> filter for all strings |
||||
* @param filterTagOnly if true, filter affacts only tags, else filter affects url, title and tags |
||||
* @return void |
||||
*/ |
||||
public static function findBookmarks($offset, $sqlSortColumn, $filter, $filterTagOnly){ |
||||
//OC_Log::write('bookmarks', 'findBookmarks ' .$offset. ' '.$sqlSortColumn.' '. $filter.' '. $filterTagOnly ,OC_Log::DEBUG); |
||||
$CONFIG_DBTYPE = OC_Config::getValue( 'dbtype', 'sqlite' ); |
||||
|
||||
$params=array(OC_User::getUser()); |
||||
|
||||
if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ |
||||
$_gc_separator = ', \' \''; |
||||
} else { |
||||
$_gc_separator = 'SEPARATOR \' \''; |
||||
} |
||||
|
||||
if($filter){ |
||||
if($CONFIG_DBTYPE == 'pgsql' ) |
||||
$tagString = 'array_to_string(array_agg(tag), \' \')'; |
||||
else |
||||
$tagString = 'tags'; |
||||
|
||||
$sqlFilterTag = 'HAVING '; |
||||
if(is_array($filter)){ |
||||
$first = true; |
||||
$filterstring = ''; |
||||
foreach ($filter as $singleFilter){ |
||||
$filterstring = $filterstring . ($first?'':' AND ') . $tagString.' LIKE ? '; |
||||
$params[] = '%'.$singleFilter.'%'; |
||||
$first=false; |
||||
} |
||||
$sqlFilterTag = $sqlFilterTag . $filterstring; |
||||
} else{ |
||||
$sqlFilterTag = $sqlFilterTag .$tagString.' LIKE ? '; |
||||
$params[] = '%'.$filter.'%'; |
||||
} |
||||
} else { |
||||
$sqlFilterTag = ''; |
||||
} |
||||
|
||||
if($CONFIG_DBTYPE == 'pgsql' ){ |
||||
$query = OC_DB::prepare(' |
||||
SELECT id, url, title, '.($filterTagOnly?'':'url || title ||').' array_to_string(array_agg(tag), \' \') as tags |
||||
FROM *PREFIX*bookmarks |
||||
LEFT JOIN *PREFIX*bookmarks_tags ON *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id |
||||
WHERE |
||||
*PREFIX*bookmarks.user_id = ? |
||||
GROUP BY id, url, title |
||||
'.$sqlFilterTag.' |
||||
ORDER BY *PREFIX*bookmarks.'.$sqlSortColumn.' DESC |
||||
LIMIT 10 |
||||
OFFSET '. $offset); |
||||
} else { |
||||
if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ) |
||||
$concatFunction = '(url || title || '; |
||||
else |
||||
$concatFunction = 'Concat(Concat( url, title), '; |
||||
|
||||
$query = OC_DB::prepare(' |
||||
SELECT id, url, title, ' |
||||
.($filterTagOnly?'':$concatFunction). |
||||
'CASE WHEN *PREFIX*bookmarks.id = *PREFIX*bookmarks_tags.bookmark_id |
||||
THEN GROUP_CONCAT( tag ' .$_gc_separator. ' ) |
||||
ELSE \' \' |
||||
END ' |
||||
.($filterTagOnly?'':')').' |
||||
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.'.$sqlSortColumn.' DESC |
||||
LIMIT '.$offset.', 10'); |
||||
} |
||||
|
||||
$bookmarks = $query->execute($params)->fetchAll(); |
||||
return $bookmarks; |
||||
} |
||||
} |
||||
?> |
@ -0,0 +1,50 @@ |
||||
<?php |
||||
/** |
||||
* ownCloud - bookmarks plugin |
||||
* |
||||
* @author David Iwanowitsch |
||||
* @copyright 2012 David Iwanowitsch <david at unclouded dot 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 Affero General Public |
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
class OC_Search_Provider_Bookmarks extends OC_Search_Provider{ |
||||
function search($query){ |
||||
$results=array(); |
||||
|
||||
$offset = 0; |
||||
$sqlSortColumn = 'id'; |
||||
|
||||
$searchquery=array(); |
||||
if(substr_count($query, ' ') > 0){ |
||||
$searchquery = explode(' ', $query); |
||||
}else{ |
||||
$searchquery = $query; |
||||
} |
||||
|
||||
// OC_Log::write('bookmarks', 'search ' .$query ,OC_Log::DEBUG); |
||||
$bookmarks = OC_Bookmarks_Bookmarks::findBookmarks($offset, $sqlSortColumn, $searchquery, false); |
||||
// OC_Log::write('bookmarks', 'found ' .count($bookmarks) ,OC_Log::DEBUG); |
||||
//$l = new OC_l10n('bookmarks'); //resulttype can't be localized, javascript relies on that type |
||||
foreach($bookmarks as $bookmark){ |
||||
$results[]=new OC_Search_Result($bookmark['title'],'', $bookmark['url'],'Bookm.'); |
||||
} |
||||
|
||||
return $results; |
||||
} |
||||
} |
||||
new OC_Search_Provider_Bookmarks(); |
||||
|
||||
?> |
Loading…
Reference in new issue