aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2012-03-01 22:58:44 +0100
committerBart Visscher <bartv@thisnet.nl>2012-03-01 22:59:35 +0100
commitd1dcd7893cb878263b8179bab16d101036c57a88 (patch)
treec2759b3d1a862fed99144d79907d9b9628671d90
parent8c7b13db7011c8be986e9e525ca392bb13375432 (diff)
downloadnextcloud-server-d1dcd7893cb878263b8179bab16d101036c57a88.tar.gz
nextcloud-server-d1dcd7893cb878263b8179bab16d101036c57a88.zip
Search: Change provider registration to class name, for lazy loading of search providers
-rw-r--r--apps/bookmarks/appinfo/app.php3
-rw-r--r--apps/bookmarks/lib/search.php7
-rw-r--r--apps/calendar/appinfo/app.php3
-rw-r--r--apps/calendar/lib/search.php5
-rw-r--r--apps/contacts/appinfo/app.php3
-rw-r--r--apps/contacts/lib/search.php5
-rw-r--r--apps/gallery/appinfo/app.php6
-rw-r--r--apps/media/appinfo/app.php3
-rw-r--r--apps/media/lib_media.php6
-rw-r--r--files/appinfo/app.php2
-rw-r--r--lib/base.php3
-rw-r--r--lib/search.php4
-rw-r--r--lib/search/provider.php8
-rw-r--r--lib/search/provider/file.php4
14 files changed, 26 insertions, 36 deletions
diff --git a/apps/bookmarks/appinfo/app.php b/apps/bookmarks/appinfo/app.php
index a1f6139d89b..09d7b5df525 100644
--- a/apps/bookmarks/appinfo/app.php
+++ b/apps/bookmarks/appinfo/app.php
@@ -8,6 +8,7 @@
*/
OC::$CLASSPATH['OC_Bookmarks_Bookmarks'] = 'apps/bookmarks/lib/bookmarks.php';
+OC::$CLASSPATH['OC_Search_Provider_Bookmarks'] = 'apps/bookmarks/lib/search.php';
OC_App::register( array( 'order' => 70, 'id' => 'bookmark', 'name' => 'Bookmarks' ));
@@ -15,5 +16,5 @@ $l = new OC_l10n('bookmarks');
OC_App::addNavigationEntry( array( 'id' => 'bookmarks_index', 'order' => 70, 'href' => OC_Helper::linkTo( 'bookmarks', 'index.php' ), 'icon' => OC_Helper::imagePath( 'bookmarks', 'bookmarks.png' ), 'name' => $l->t('Bookmarks')));
OC_App::registerPersonal('bookmarks', 'settings');
-require_once('apps/bookmarks/lib/search.php');
OC_Util::addScript('bookmarks','bookmarksearch');
+OC_Search::registerProvider('OC_Search_Provider_Bookmarks');
diff --git a/apps/bookmarks/lib/search.php b/apps/bookmarks/lib/search.php
index 59495db82ea..235587855d9 100644
--- a/apps/bookmarks/lib/search.php
+++ b/apps/bookmarks/lib/search.php
@@ -20,8 +20,8 @@
*
*/
-class OC_Search_Provider_Bookmarks extends OC_Search_Provider{
- function search($query){
+class OC_Search_Provider_Bookmarks implements OC_Search_Provider{
+ static function search($query){
$results=array();
$offset = 0;
@@ -45,6 +45,3 @@ class OC_Search_Provider_Bookmarks extends OC_Search_Provider{
return $results;
}
}
-new OC_Search_Provider_Bookmarks();
-
-?>
diff --git a/apps/calendar/appinfo/app.php b/apps/calendar/appinfo/app.php
index 9c95768895f..174bc009e45 100644
--- a/apps/calendar/appinfo/app.php
+++ b/apps/calendar/appinfo/app.php
@@ -6,6 +6,7 @@ if(version_compare(PHP_VERSION, '5.3.0', '>=')){
OC::$CLASSPATH['OC_Calendar_Object'] = 'apps/calendar/lib/object.php';
OC::$CLASSPATH['OC_Calendar_Hooks'] = 'apps/calendar/lib/hooks.php';
OC::$CLASSPATH['OC_Connector_Sabre_CalDAV'] = 'apps/calendar/lib/connector_sabre.php';
+ OC::$CLASSPATH['OC_Search_Provider_Calendar'] = 'apps/calendar/lib/search.php';
OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Calendar_Hooks', 'deleteUser');
OC_Util::addScript('calendar','loader');
OC_App::register( array(
@@ -19,5 +20,5 @@ if(version_compare(PHP_VERSION, '5.3.0', '>=')){
'icon' => OC_Helper::imagePath( 'calendar', 'icon.svg' ),
'name' => $l->t('Calendar')));
OC_App::registerPersonal('calendar', 'settings');
- require_once('apps/calendar/lib/search.php');
+ OC_Search::registerProvider('OC_Search_Provider_Calendar');
}
diff --git a/apps/calendar/lib/search.php b/apps/calendar/lib/search.php
index 0016751a66a..8405866392d 100644
--- a/apps/calendar/lib/search.php
+++ b/apps/calendar/lib/search.php
@@ -1,6 +1,6 @@
<?php
-class OC_Search_Provider_Calendar extends OC_Search_Provider{
- function search($query){
+class OC_Search_Provider_Calendar implements OC_Search_Provider{
+ static function search($query){
$calendars = OC_Calendar_Calendar::allCalendars(OC_User::getUser(), 1);
if(count($calendars)==0 || !OC_App::isEnabled('calendar')){
//return false;
@@ -44,4 +44,3 @@ class OC_Search_Provider_Calendar extends OC_Search_Provider{
return $results;
}
}
-new OC_Search_Provider_Calendar();
diff --git a/apps/contacts/appinfo/app.php b/apps/contacts/appinfo/app.php
index c3b4916a3fd..63833dd5cd6 100644
--- a/apps/contacts/appinfo/app.php
+++ b/apps/contacts/appinfo/app.php
@@ -4,6 +4,7 @@ OC::$CLASSPATH['OC_Contacts_Addressbook'] = 'apps/contacts/lib/addressbook.php';
OC::$CLASSPATH['OC_Contacts_VCard'] = 'apps/contacts/lib/vcard.php';
OC::$CLASSPATH['OC_Contacts_Hooks'] = 'apps/contacts/lib/hooks.php';
OC::$CLASSPATH['OC_Connector_Sabre_CardDAV'] = 'apps/contacts/lib/connector_sabre.php';
+OC::$CLASSPATH['OC_Search_Provider_Contacts'] = 'apps/contacts/lib/search.php';
OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Contacts_Hooks', 'deleteUser');
OC_HOOK::connect('OC_Calendar', 'getEvents', 'OC_Contacts_Hooks', 'getBirthdayEvents');
OC_HOOK::connect('OC_Calendar', 'getSources', 'OC_Contacts_Hooks', 'getCalenderSources');
@@ -23,4 +24,4 @@ OC_App::addNavigationEntry( array(
OC_APP::registerPersonal('contacts','settings');
OC_UTIL::addScript('contacts', 'loader');
-require_once('apps/contacts/lib/search.php');
+OC_Search::registerProvider('OC_Search_Provider_Contacts');
diff --git a/apps/contacts/lib/search.php b/apps/contacts/lib/search.php
index 5aad6a25f09..cf0a5fe6997 100644
--- a/apps/contacts/lib/search.php
+++ b/apps/contacts/lib/search.php
@@ -1,6 +1,6 @@
<?php
-class OC_Search_Provider_Contacts extends OC_Search_Provider{
- function search($query){
+class OC_Search_Provider_Contacts implements OC_Search_Provider{
+ static function search($query){
$addressbooks = OC_Contacts_Addressbook::all(OC_User::getUser(), 1);
// if(count($calendars)==0 || !OC_App::isEnabled('contacts')){
// //return false;
@@ -26,4 +26,3 @@ class OC_Search_Provider_Contacts extends OC_Search_Provider{
return $results;
}
}
-new OC_Search_Provider_Contacts();
diff --git a/apps/gallery/appinfo/app.php b/apps/gallery/appinfo/app.php
index b8de32ea587..1e5e27d408f 100644
--- a/apps/gallery/appinfo/app.php
+++ b/apps/gallery/appinfo/app.php
@@ -40,8 +40,8 @@ OC_App::addNavigationEntry( array(
'icon' => OC_Helper::imagePath('core', 'places/picture.svg'),
'name' => $l->t('Gallery')));
- class OC_GallerySearchProvider extends OC_Search_Provider{
- function search($query){
+ class OC_GallerySearchProvider implements OC_Search_Provider{
+ static function search($query){
$stmt = OC_DB::prepare('SELECT * FROM *PREFIX*gallery_albums WHERE uid_owner = ? AND album_name LIKE ?');
$result = $stmt->execute(array(OC_User::getUser(),'%'.$query.'%'));
$results=array();
@@ -52,7 +52,7 @@ OC_App::addNavigationEntry( array(
}
}
-new OC_GallerySearchProvider();
+OC_Search::registerProvider('OC_GallerySearchProvider');
require_once('apps/gallery/lib/hooks_handlers.php');
?>
diff --git a/apps/media/appinfo/app.php b/apps/media/appinfo/app.php
index 475a33500f4..651067fbbe1 100644
--- a/apps/media/appinfo/app.php
+++ b/apps/media/appinfo/app.php
@@ -30,4 +30,5 @@ OC_APP::registerPersonal('media','settings');
OC_App::register( array( 'order' => 3, 'id' => 'media', 'name' => 'Media' ));
OC_App::addNavigationEntry(array('id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo('media', 'index.php'), 'icon' => OC_Helper::imagePath('core', 'places/music.svg'), 'name' => $l->t('Music')));
-?>
+
+OC_Search::registerProvider('OC_MediaSearchProvider');
diff --git a/apps/media/lib_media.php b/apps/media/lib_media.php
index a2109c151aa..9de291e8da2 100644
--- a/apps/media/lib_media.php
+++ b/apps/media/lib_media.php
@@ -82,8 +82,8 @@ class OC_MEDIA{
}
}
-class OC_MediaSearchProvider extends OC_Search_Provider{
- function search($query){
+class OC_MediaSearchProvider implements OC_Search_Provider{
+ static function search($query){
require_once('lib_collection.php');
$artists=OC_MEDIA_COLLECTION::getArtists($query);
$albums=OC_MEDIA_COLLECTION::getAlbums(0,$query);
@@ -107,5 +107,3 @@ class OC_MediaSearchProvider extends OC_Search_Provider{
}
}
-new OC_MediaSearchProvider();
-?>
diff --git a/files/appinfo/app.php b/files/appinfo/app.php
index e434296b250..0bf73d9a07e 100644
--- a/files/appinfo/app.php
+++ b/files/appinfo/app.php
@@ -7,4 +7,4 @@ OC_App::register( array( "order" => 2, "id" => "files", "name" => "Files" ));
OC_App::addNavigationEntry( array( "id" => "files_index", "order" => 1, "href" => OC_Helper::linkTo( "files", "index.php" ), "icon" => OC_Helper::imagePath( "core", "places/home.svg" ), "name" => $l->t("Files") ));
-?>
+OC_Search::registerProvider('OC_Search_Provider_File');
diff --git a/lib/base.php b/lib/base.php
index ee79f08eb22..336ff9fa231 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -350,6 +350,3 @@ if(!function_exists('get_temp_dir')) {
}
OC::init();
-
-// FROM search.php
-new OC_Search_Provider_File();
diff --git a/lib/search.php b/lib/search.php
index f6f805bfe65..6b33fa38140 100644
--- a/lib/search.php
+++ b/lib/search.php
@@ -29,7 +29,7 @@ class OC_Search{
/**
* register a new search provider to be used
- * @param OC_Search_Provider $provider
+ * @param string $provider class name of a OC_Search_Provider
*/
public static function registerProvider($provider){
self::$providers[]=$provider;
@@ -43,7 +43,7 @@ class OC_Search{
public static function search($query){
$results=array();
foreach(self::$providers as $provider){
- $results=array_merge($results,$provider->search($query));
+ $results=array_merge($results, $provider::search($query));
}
return $results;
}
diff --git a/lib/search/provider.php b/lib/search/provider.php
index cceed8b04a3..9487ca51f2b 100644
--- a/lib/search/provider.php
+++ b/lib/search/provider.php
@@ -2,15 +2,11 @@
/**
* provides search functionalty
*/
-abstract class OC_Search_Provider{
- public function __construct(){
- OC_Search::registerProvider($this);
- }
-
+interface OC_Search_Provider {
/**
* search for $query
* @param string $query
* @return array An array of OC_Search_Result's
*/
- abstract function search($query);
+ static function search($query);
}
diff --git a/lib/search/provider/file.php b/lib/search/provider/file.php
index a37af495599..3bdb3bcd2af 100644
--- a/lib/search/provider/file.php
+++ b/lib/search/provider/file.php
@@ -1,7 +1,7 @@
<?php
-class OC_Search_Provider_File extends OC_Search_Provider{
- function search($query){
+class OC_Search_Provider_File implements OC_Search_Provider{
+ static function search($query){
$files=OC_FileCache::search($query,true);
$results=array();
foreach($files as $fileData){