improve flexibility of search providers a bit
This commit is contained in:
parent
8ed4606685
commit
3babb8c22c
|
@ -20,8 +20,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class OC_Search_Provider_Bookmarks implements OC_Search_Provider{
|
class OC_Search_Provider_Bookmarks extends OC_Search_Provider{
|
||||||
static function search($query){
|
function search($query){
|
||||||
$results=array();
|
$results=array();
|
||||||
|
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
class OC_Search_Provider_Calendar implements OC_Search_Provider{
|
class OC_Search_Provider_Calendar extends OC_Search_Provider{
|
||||||
static function search($query){
|
function search($query){
|
||||||
$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser(), 1);
|
$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser(), 1);
|
||||||
if(count($calendars)==0 || !OC_App::isEnabled('calendar')){
|
if(count($calendars)==0 || !OC_App::isEnabled('calendar')){
|
||||||
//return false;
|
//return false;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
class OC_Search_Provider_Contacts implements OC_Search_Provider{
|
class OC_Search_Provider_Contacts extends OC_Search_Provider{
|
||||||
static function search($query){
|
function search($query){
|
||||||
$addressbooks = OC_Contacts_Addressbook::all(OC_User::getUser(), 1);
|
$addressbooks = OC_Contacts_Addressbook::all(OC_User::getUser(), 1);
|
||||||
// if(count($calendars)==0 || !OC_App::isEnabled('contacts')){
|
// if(count($calendars)==0 || !OC_App::isEnabled('contacts')){
|
||||||
// //return false;
|
// //return false;
|
||||||
|
|
|
@ -41,8 +41,8 @@ OC_App::addNavigationEntry( array(
|
||||||
'icon' => OC_Helper::imagePath('core', 'places/picture.svg'),
|
'icon' => OC_Helper::imagePath('core', 'places/picture.svg'),
|
||||||
'name' => $l->t('Pictures')));
|
'name' => $l->t('Pictures')));
|
||||||
|
|
||||||
class OC_GallerySearchProvider implements OC_Search_Provider{
|
class OC_GallerySearchProvider extends OC_Search_Provider{
|
||||||
static function search($query){
|
function search($query){
|
||||||
$stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ? AND album_name LIKE ?');
|
$stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ? AND album_name LIKE ?');
|
||||||
$result = $stmt->execute(array(OC_User::getUser(),'%'.$query.'%'));
|
$result = $stmt->execute(array(OC_User::getUser(),'%'.$query.'%'));
|
||||||
$results=array();
|
$results=array();
|
||||||
|
|
|
@ -82,8 +82,8 @@ class OC_MEDIA{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class OC_MediaSearchProvider implements OC_Search_Provider{
|
class OC_MediaSearchProvider extends OC_Search_Provider{
|
||||||
static function search($query){
|
function search($query){
|
||||||
require_once('lib_collection.php');
|
require_once('lib_collection.php');
|
||||||
$artists=OC_MEDIA_COLLECTION::getArtists($query);
|
$artists=OC_MEDIA_COLLECTION::getArtists($query);
|
||||||
$albums=OC_MEDIA_COLLECTION::getAlbums(0,$query);
|
$albums=OC_MEDIA_COLLECTION::getAlbums(0,$query);
|
||||||
|
|
|
@ -26,13 +26,22 @@
|
||||||
*/
|
*/
|
||||||
class OC_Search{
|
class OC_Search{
|
||||||
static private $providers=array();
|
static private $providers=array();
|
||||||
|
static private $registeredProviders=array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove all registered search providers
|
||||||
|
*/
|
||||||
|
public static function clearProviders(){
|
||||||
|
self::$providers=array();
|
||||||
|
self::$registeredProviders=array();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* register a new search provider to be used
|
* register a new search provider to be used
|
||||||
* @param string $provider class name of a OC_Search_Provider
|
* @param string $provider class name of a OC_Search_Provider
|
||||||
*/
|
*/
|
||||||
public static function registerProvider($provider){
|
public static function registerProvider($class,$options=array()){
|
||||||
self::$providers[]=$provider;
|
self::$registeredProviders[]=array('class'=>$class,'options'=>$options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -41,10 +50,25 @@ class OC_Search{
|
||||||
* @return array An array of OC_Search_Result's
|
* @return array An array of OC_Search_Result's
|
||||||
*/
|
*/
|
||||||
public static function search($query){
|
public static function search($query){
|
||||||
|
self::initProviders();
|
||||||
$results=array();
|
$results=array();
|
||||||
foreach(self::$providers as $provider){
|
foreach(self::$providers as $provider){
|
||||||
$results=array_merge($results, $provider::search($query));
|
$results=array_merge($results, $provider->search($query));
|
||||||
}
|
}
|
||||||
return $results;
|
return $results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create instances of all the registered search providers
|
||||||
|
*/
|
||||||
|
private static function initProviders(){
|
||||||
|
if(count(self::$providers)>0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach(self::$registeredProviders as $provider){
|
||||||
|
$class=$provider['class'];
|
||||||
|
$options=$provider['options'];
|
||||||
|
self::$providers[]=new $class($options);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,13 @@
|
||||||
/**
|
/**
|
||||||
* provides search functionalty
|
* provides search functionalty
|
||||||
*/
|
*/
|
||||||
interface OC_Search_Provider {
|
class OC_Search_Provider {
|
||||||
|
public function __construct($options){}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* search for $query
|
* search for $query
|
||||||
* @param string $query
|
* @param string $query
|
||||||
* @return array An array of OC_Search_Result's
|
* @return array An array of OC_Search_Result's
|
||||||
*/
|
*/
|
||||||
static function search($query);
|
public function search($query){}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
class OC_Search_Provider_File implements OC_Search_Provider{
|
class OC_Search_Provider_File extends OC_Search_Provider{
|
||||||
static function search($query){
|
function search($query){
|
||||||
$files=OC_FileCache::search($query,true);
|
$files=OC_FileCache::search($query,true);
|
||||||
$results=array();
|
$results=array();
|
||||||
foreach($files as $fileData){
|
foreach($files as $fileData){
|
||||||
|
|
Loading…
Reference in New Issue