Merge branch 'master' of gitorious.org:owncloud/owncloud
This commit is contained in:
commit
9b1c881ca8
|
@ -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;
|
||||||
|
|
|
@ -62,6 +62,8 @@ if ($source !== false) {
|
||||||
$tmpl->assign("fileList", $list->fetchPage());
|
$tmpl->assign("fileList", $list->fetchPage());
|
||||||
$tmpl->assign("breadcrumb", $breadcrumbNav->fetchPage());
|
$tmpl->assign("breadcrumb", $breadcrumbNav->fetchPage());
|
||||||
$tmpl->assign("readonly", true);
|
$tmpl->assign("readonly", true);
|
||||||
|
$tmpl->assign("allowZipDownload", false);
|
||||||
|
$tmpl->assign("dir", 'shared dir');
|
||||||
$tmpl->printPage();
|
$tmpl->printPage();
|
||||||
} else {
|
} else {
|
||||||
//get time mimetype and set the headers
|
//get time mimetype and set the headers
|
||||||
|
|
|
@ -2,8 +2,11 @@ $(document).ready(function() {
|
||||||
var shared_status = {};
|
var shared_status = {};
|
||||||
if (typeof FileActions !== 'undefined') {
|
if (typeof FileActions !== 'undefined') {
|
||||||
FileActions.register('all', 'Share', function(filename) {
|
FileActions.register('all', 'Share', function(filename) {
|
||||||
if (scanFiles.scanning){return;}//workaround to prevent aditional http request block scanning feedback
|
if (scanFiles.scanning){return;}//workaround to prevent additional http request block scanning feedback
|
||||||
var icon;
|
var icon;
|
||||||
|
if (typeof filename == 'undefined') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
var file = $('#dir').val()+'/'+filename;
|
var file = $('#dir').val()+'/'+filename;
|
||||||
if(shared_status[file])
|
if(shared_status[file])
|
||||||
return shared_status[file].icon;
|
return shared_status[file].icon;
|
||||||
|
@ -145,7 +148,7 @@ $(document).ready(function() {
|
||||||
data: data,
|
data: data,
|
||||||
success: function(token) {
|
success: function(token) {
|
||||||
if (token) {
|
if (token) {
|
||||||
showPublicLink(token);
|
showPublicLink(token, source.substr(source.lastIndexOf('/')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -203,7 +206,7 @@ function createDropdown(filename, files) {
|
||||||
if (users) {
|
if (users) {
|
||||||
$.each(users, function(index, row) {
|
$.each(users, function(index, row) {
|
||||||
if (row.uid_shared_with == 'public') {
|
if (row.uid_shared_with == 'public') {
|
||||||
showPublicLink(row.token);
|
showPublicLink(row.token, '/'+filename);
|
||||||
} else if (isNaN(index)) {
|
} else if (isNaN(index)) {
|
||||||
addUser(row.uid_shared_with, row.permissions, index.substr(0, index.lastIndexOf('-')));
|
addUser(row.uid_shared_with, row.permissions, index.substr(0, index.lastIndexOf('-')));
|
||||||
} else {
|
} else {
|
||||||
|
@ -234,9 +237,9 @@ function addUser(uid_shared_with, permissions, parentFolder) {
|
||||||
$(user).appendTo('#shared_list');
|
$(user).appendTo('#shared_list');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showPublicLink(token) {
|
function showPublicLink(token, file) {
|
||||||
$('#makelink').attr('checked', true);
|
$('#makelink').attr('checked', true);
|
||||||
$('#link').data('token', token);
|
$('#link').data('token', token);
|
||||||
$('#link').val(parent.location.protocol+'//'+location.host+OC.linkTo('files_sharing','get.php')+'?token='+token);
|
$('#link').val(parent.location.protocol+'//'+location.host+OC.linkTo('files_sharing','get.php')+'?token='+token+'&f='+file);
|
||||||
$('#link').show('blind');
|
$('#link').show('blind');
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -94,10 +94,6 @@ class OC_USER_LDAP extends OC_User_Backend {
|
||||||
if( !$this->ldap_dc )
|
if( !$this->ldap_dc )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$email = OC_Preferences::getValue($uid, 'settings', 'email', '');
|
|
||||||
if ( !empty( $email ) )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
$email = $this->ldap_dc[$this->ldap_email_attr][0];
|
$email = $this->ldap_dc[$this->ldap_email_attr][0];
|
||||||
OC_Preferences::setValue($uid, 'settings', 'email', $email);
|
OC_Preferences::setValue($uid, 'settings', 'email', $email);
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,12 +140,17 @@ class OC_App{
|
||||||
OC_Installer::installShippedApp($app);
|
OC_Installer::installShippedApp($app);
|
||||||
}else{
|
}else{
|
||||||
$download=OC_OCSClient::getApplicationDownload($app,1);
|
$download=OC_OCSClient::getApplicationDownload($app,1);
|
||||||
if(isset($download['downloadlink']) and $download['downloadlink']<>'') {
|
if(isset($download['downloadlink']) and $download['downloadlink']!='') {
|
||||||
$app=OC_Installer::installApp(array('source'=>'http','href'=>$download['downloadlink']));
|
$app=OC_Installer::installApp(array('source'=>'http','href'=>$download['downloadlink']));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if($app!==false){
|
||||||
OC_Appconfig::setValue( $app, 'enabled', 'yes' );
|
OC_Appconfig::setValue( $app, 'enabled', 'yes' );
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -63,7 +63,7 @@ class OC_Files {
|
||||||
$executionTime = intval(ini_get('max_execution_time'));
|
$executionTime = intval(ini_get('max_execution_time'));
|
||||||
set_time_limit(0);
|
set_time_limit(0);
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
$filename = get_temp_dir().'/ownCloud_'.mt_rand(10000,99999).'.zip';
|
$filename = OC_Helper::tmpFile('.zip');
|
||||||
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) {
|
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) {
|
||||||
exit("cannot open <$filename>\n");
|
exit("cannot open <$filename>\n");
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ class OC_Files {
|
||||||
$executionTime = intval(ini_get('max_execution_time'));
|
$executionTime = intval(ini_get('max_execution_time'));
|
||||||
set_time_limit(0);
|
set_time_limit(0);
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
$filename = get_temp_dir().'/ownCloud_'.mt_rand(10000,99999).'.zip';
|
$filename = OC_Helper::tmpFile('.zip');
|
||||||
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) {
|
if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==TRUE) {
|
||||||
exit("cannot open <$filename>\n");
|
exit("cannot open <$filename>\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,8 +283,12 @@ class OC_FilesystemView {
|
||||||
if(OC_Filesystem::isValidPath($path)){
|
if(OC_Filesystem::isValidPath($path)){
|
||||||
$source=$this->fopen($path,'r');
|
$source=$this->fopen($path,'r');
|
||||||
if($source){
|
if($source){
|
||||||
$extention=substr($path,strrpos($path,'.'));
|
$extension='';
|
||||||
$tmpFile=OC_Helper::tmpFile($extention);
|
$extOffset=strpos($path,'.');
|
||||||
|
if($extOffset !== false) {
|
||||||
|
$extension=substr($path,strrpos($path,'.'));
|
||||||
|
}
|
||||||
|
$tmpFile=OC_Helper::tmpFile($extension);
|
||||||
file_put_contents($tmpFile,$source);
|
file_put_contents($tmpFile,$source);
|
||||||
return $tmpFile;
|
return $tmpFile;
|
||||||
}
|
}
|
||||||
|
|
|
@ -294,6 +294,9 @@ class OC_Helper {
|
||||||
}elseif(file_exists($dir)){
|
}elseif(file_exists($dir)){
|
||||||
unlink($dir);
|
unlink($dir);
|
||||||
}
|
}
|
||||||
|
if(file_exists($dir)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -472,10 +475,21 @@ class OC_Helper {
|
||||||
* remove all files created by self::tmpFile
|
* remove all files created by self::tmpFile
|
||||||
*/
|
*/
|
||||||
public static function cleanTmp(){
|
public static function cleanTmp(){
|
||||||
foreach(self::$tmpFiles as $file){
|
$leftoversFile='/tmp/oc-not-deleted';
|
||||||
if(file_exists($file)){
|
if(file_exists($leftoversFile)){
|
||||||
|
$leftovers=file($leftoversFile);
|
||||||
|
foreach($leftovers as $file) {
|
||||||
self::rmdirr($file);
|
self::rmdirr($file);
|
||||||
}
|
}
|
||||||
|
unlink($leftoversFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(self::$tmpFiles as $file){
|
||||||
|
if(file_exists($file)){
|
||||||
|
if(!self::rmdirr($file)) {
|
||||||
|
file_put_contents($leftoversFile, $file."\n", FILE_APPEND);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,204 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Class for connection to a remote owncloud installation
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class OC_REMOTE_CLOUD{
|
|
||||||
private $path;
|
|
||||||
private $connected=false;
|
|
||||||
private $cookiefile=false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* make an api call to the remote cloud
|
|
||||||
* @param string $action
|
|
||||||
* @param array parameters
|
|
||||||
* @param bool assoc when set to true, the result will be parsed as associative array
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private function apiCall($action,$parameters=false,$assoc=false){
|
|
||||||
if(!$this->cookiefile){
|
|
||||||
$this->cookiefile=get_temp_dir().'/remoteCloudCookie'.uniqid();
|
|
||||||
}
|
|
||||||
$url=$this->path.='/files/api.php';
|
|
||||||
$fields_string="action=$action&";
|
|
||||||
if(is_array($parameters)){
|
|
||||||
foreach($parameters as $key=>$value){
|
|
||||||
$fields_string.=$key.'='.$value.'&';
|
|
||||||
}
|
|
||||||
rtrim($fields_string,'&');
|
|
||||||
}
|
|
||||||
$ch=curl_init();
|
|
||||||
curl_setopt($ch,CURLOPT_URL,$url);
|
|
||||||
curl_setopt($ch,CURLOPT_POST,count($parameters));
|
|
||||||
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
|
|
||||||
curl_setopt($ch, CURLOPT_COOKIEFILE,$this->cookiefile);
|
|
||||||
curl_setopt($ch, CURLOPT_COOKIEJAR,$this->cookiefile);
|
|
||||||
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
|
|
||||||
$result=curl_exec($ch);
|
|
||||||
$result=trim($result);
|
|
||||||
$info=curl_getinfo($ch);
|
|
||||||
$httpCode=$info['http_code'];
|
|
||||||
curl_close($ch);
|
|
||||||
if($httpCode==200 or $httpCode==0){
|
|
||||||
return json_decode($result,$assoc);
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function __construct($path,$user,$password){
|
|
||||||
$this->path=$path;
|
|
||||||
$this->connected=$this->apiCall('login',array('username'=>$user,'password'=>$password));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* check if we are stull logged in on the remote cloud
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public function isLoggedIn(){
|
|
||||||
if(!$this->connected){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return $this->apiCall('checklogin');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function __get($name){
|
|
||||||
switch($name){
|
|
||||||
case 'connected':
|
|
||||||
return $this->connected;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* disconnect from the remote cloud
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public function disconnect(){
|
|
||||||
$this->connected=false;
|
|
||||||
if(is_file($this->cookiefile)){
|
|
||||||
unlink($this->cookiefile);
|
|
||||||
}
|
|
||||||
$this->cookiefile=false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* create a new file or directory
|
|
||||||
* @param string $dir
|
|
||||||
* @param string $name
|
|
||||||
* @param string $type
|
|
||||||
*/
|
|
||||||
public function newFile($dir,$name,$type){
|
|
||||||
if(!$this->connected){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return $this->apiCall('new',array('dir'=>$dir,'name'=>$name,'type'=>$type),true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* deletes a file or directory
|
|
||||||
* @param string $dir
|
|
||||||
* @param string $file
|
|
||||||
*/
|
|
||||||
public function delete($dir,$name){
|
|
||||||
if(!$this->connected){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return $this->apiCall('delete',array('dir'=>$dir,'file'=>$name),true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* moves a file or directory
|
|
||||||
* @param string $sorceDir
|
|
||||||
* @param string $sorceFile
|
|
||||||
* @param string $targetDir
|
|
||||||
* @param string $targetFile
|
|
||||||
*/
|
|
||||||
public function move($sourceDir,$sourceFile,$targetDir,$targetFile){
|
|
||||||
if(!$this->connected){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return $this->apiCall('move',array('sourcedir'=>$sourceDir,'source'=>$sourceFile,'targetdir'=>$targetDir,'target'=>$targetFile),true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* copies a file or directory
|
|
||||||
* @param string $sorceDir
|
|
||||||
* @param string $sorceFile
|
|
||||||
* @param string $targetDir
|
|
||||||
* @param string $targetFile
|
|
||||||
*/
|
|
||||||
public function copy($sourceDir,$sourceFile,$targetDir,$targetFile){
|
|
||||||
if(!$this->connected){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return $this->apiCall('copy',array('sourcedir'=>$sourceDir,'source'=>$sourceFile,'targetdir'=>$targetDir,'target'=>$targetFile),true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get a file tree
|
|
||||||
* @param string $dir
|
|
||||||
*/
|
|
||||||
public function getTree($dir){
|
|
||||||
if(!$this->connected){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return $this->apiCall('gettree',array('dir'=>$dir),true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the files inside a directory of the remote cloud
|
|
||||||
* @param string $dir
|
|
||||||
*/
|
|
||||||
public function getFiles($dir){
|
|
||||||
if(!$this->connected){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return $this->apiCall('getfiles',array('dir'=>$dir),true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get a remove file and save it in a temporary file and return the path of the temporary file
|
|
||||||
* @param string $dir
|
|
||||||
* @param string $file
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getFile($dir, $file){
|
|
||||||
if(!$this->connected){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$ch=curl_init();
|
|
||||||
if(!$this->cookiefile){
|
|
||||||
$this->cookiefile=get_temp_dir().'/remoteCloudCookie'.uniqid();
|
|
||||||
}
|
|
||||||
$tmpfile=tempnam(get_temp_dir(),'remoteCloudFile');
|
|
||||||
$fp=fopen($tmpfile,'w+');
|
|
||||||
$url=$this->path.="/files/api.php?action=get&dir=$dir&file=$file";
|
|
||||||
curl_setopt($ch,CURLOPT_URL,$url);
|
|
||||||
curl_setopt($ch, CURLOPT_COOKIEFILE,$this->cookiefile);
|
|
||||||
curl_setopt($ch, CURLOPT_COOKIEJAR,$this->cookiefile);
|
|
||||||
curl_setopt($ch, CURLOPT_FILE, $fp);
|
|
||||||
curl_exec($ch);
|
|
||||||
fclose($fp);
|
|
||||||
curl_close($ch);
|
|
||||||
return $tmpfile;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function sendFile($sourceDir,$sourceFile,$targetDir,$targetFile){
|
|
||||||
$source=$sourceDir.'/'.$sourceFile;
|
|
||||||
$tmp=OC_Filesystem::toTmpFile($source);
|
|
||||||
return $this->sendTmpFile($tmp,$targetDir,$targetFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function sendTmpFile($tmp,$targetDir,$targetFile){
|
|
||||||
$token=sha1(uniqid().$tmp);
|
|
||||||
$file=get_temp_dir().'/'.'remoteCloudFile'.$token;
|
|
||||||
rename($tmp,$file);
|
|
||||||
if( OC_Config::getValue( "forcessl", false ) or isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] == 'on') {
|
|
||||||
$url = "https://". $_SERVER['SERVER_NAME'] . OC::$WEBROOT;
|
|
||||||
}else{
|
|
||||||
$url = "http://". $_SERVER['SERVER_NAME'] . OC::$WEBROOT;
|
|
||||||
}
|
|
||||||
return $this->apiCall('pull',array('dir'=>$targetDir,'file'=>$targetFile,'token'=>$token,'source'=>$url),true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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){
|
||||||
|
|
|
@ -172,7 +172,7 @@ class OC_User_Database extends OC_User_Backend {
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public function userExists($uid){
|
public function userExists($uid){
|
||||||
$query = OC_DB::prepare( "SELECT * FROM `*PREFIX*users` WHERE uid = ?" );
|
$query = OC_DB::prepare( "SELECT * FROM `*PREFIX*users` WHERE uid LIKE ?" );
|
||||||
$result = $query->execute( array( $uid ));
|
$result = $query->execute( array( $uid ));
|
||||||
|
|
||||||
return $result->numRows() > 0;
|
return $result->numRows() > 0;
|
||||||
|
|
|
@ -0,0 +1,114 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ownCloud
|
||||||
|
*
|
||||||
|
* @author Frank Karlitschek
|
||||||
|
* @copyright 2010 Frank Karlitschek karlitschek@kde.org
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dummy user backend, does not keep state, only for testing use
|
||||||
|
*/
|
||||||
|
class OC_User_Dummy extends OC_User_Backend {
|
||||||
|
private $users=array();
|
||||||
|
/**
|
||||||
|
* @brief Create a new user
|
||||||
|
* @param $uid The username of the user to create
|
||||||
|
* @param $password The password of the new user
|
||||||
|
* @returns true/false
|
||||||
|
*
|
||||||
|
* Creates a new user. Basic checking of username is done in OC_User
|
||||||
|
* itself, not in its subclasses.
|
||||||
|
*/
|
||||||
|
public function createUser($uid, $password){
|
||||||
|
if(isset($this->users[$uid])){
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
$this->users[$uid]=$password;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief delete a user
|
||||||
|
* @param $uid The username of the user to delete
|
||||||
|
* @returns true/false
|
||||||
|
*
|
||||||
|
* Deletes a user
|
||||||
|
*/
|
||||||
|
public function deleteUser( $uid ){
|
||||||
|
if(isset($this->users[$uid])){
|
||||||
|
unset($this->users[$uid]);
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set password
|
||||||
|
* @param $uid The username
|
||||||
|
* @param $password The new password
|
||||||
|
* @returns true/false
|
||||||
|
*
|
||||||
|
* Change the password of a user
|
||||||
|
*/
|
||||||
|
public function setPassword($uid, $password){
|
||||||
|
if(isset($this->users[$uid])){
|
||||||
|
$this->users[$uid]=$password;
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the password is correct
|
||||||
|
* @param $uid The username
|
||||||
|
* @param $password The password
|
||||||
|
* @returns true/false
|
||||||
|
*
|
||||||
|
* Check if the password is correct without logging in the user
|
||||||
|
*/
|
||||||
|
public function checkPassword($uid, $password){
|
||||||
|
if(isset($this->users[$uid])){
|
||||||
|
return ($this->users[$uid]==$password);
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get a list of all users
|
||||||
|
* @returns array with all uids
|
||||||
|
*
|
||||||
|
* Get a list of all users.
|
||||||
|
*/
|
||||||
|
public function getUsers(){
|
||||||
|
return array_keys($this->users);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief check if a user exists
|
||||||
|
* @param string $uid the username
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function userExists($uid){
|
||||||
|
return isset($this->users[$uid]);
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,4 +6,4 @@ OC_JSON::setContentTypeHeader();
|
||||||
|
|
||||||
OC_App::disable($_POST['appid']);
|
OC_App::disable($_POST['appid']);
|
||||||
|
|
||||||
?>
|
OC_JSON::success();
|
||||||
|
|
|
@ -5,6 +5,8 @@ require_once('../../lib/base.php');
|
||||||
OC_JSON::checkAdminUser();
|
OC_JSON::checkAdminUser();
|
||||||
OC_JSON::setContentTypeHeader();
|
OC_JSON::setContentTypeHeader();
|
||||||
|
|
||||||
OC_App::enable($_POST['appid']);
|
if(OC_App::enable($_POST['appid'])){
|
||||||
|
OC_JSON::success();
|
||||||
?>
|
}else{
|
||||||
|
OC_JSON::error();
|
||||||
|
}
|
||||||
|
|
|
@ -28,10 +28,18 @@ $(document).ready(function(){
|
||||||
var active=$(this).data('active');
|
var active=$(this).data('active');
|
||||||
if(app){
|
if(app){
|
||||||
if(active){
|
if(active){
|
||||||
$.post(OC.filePath('settings','ajax','disableapp.php'),{appid:app});
|
$.post(OC.filePath('settings','ajax','disableapp.php'),{appid:app},function(result){
|
||||||
|
if(!result || result.status!='succes'){
|
||||||
|
OC.dialogs.alert('Error','Error while disabling app');
|
||||||
|
}
|
||||||
|
},'json');
|
||||||
$('#leftcontent li[data-id="'+app+'"]').removeClass('active');
|
$('#leftcontent li[data-id="'+app+'"]').removeClass('active');
|
||||||
}else{
|
}else{
|
||||||
$.post(OC.filePath('settings','ajax','enableapp.php'),{appid:app});
|
$.post(OC.filePath('settings','ajax','enableapp.php'),{appid:app},function(result){
|
||||||
|
if(!result || result.status!='succes'){
|
||||||
|
OC.dialogs.alert('Error','Error while enabling app');
|
||||||
|
}
|
||||||
|
},'json');
|
||||||
$('#leftcontent li[data-id="'+app+'"]').addClass('active');
|
$('#leftcontent li[data-id="'+app+'"]').addClass('active');
|
||||||
}
|
}
|
||||||
active=!active;
|
active=!active;
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* ownCloud
|
||||||
|
*
|
||||||
|
* @author Robin Appelman
|
||||||
|
* @copyright 2012 Robin Appelman icewind@owncloud.com
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class Test_User_Backend extends UnitTestCase {
|
||||||
|
/**
|
||||||
|
* @var OC_User_Backend $backend
|
||||||
|
*/
|
||||||
|
protected $backend;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get a new unique user name
|
||||||
|
* test cases can override this in order to clean up created user
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getUser(){
|
||||||
|
return uniqid('test_');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testAddRemove(){
|
||||||
|
//get the number of groups we start with, in case there are exising groups
|
||||||
|
$startCount=count($this->backend->getUsers());
|
||||||
|
|
||||||
|
$name1=$this->getUser();
|
||||||
|
$name2=$this->getUser();
|
||||||
|
$this->backend->createUser($name1,'');
|
||||||
|
$count=count($this->backend->getUsers())-$startCount;
|
||||||
|
$this->assertEqual(1,$count);
|
||||||
|
$this->assertTrue((array_search($name1,$this->backend->getUsers())!==false));
|
||||||
|
$this->assertFalse((array_search($name2,$this->backend->getUsers())!==false));
|
||||||
|
$this->backend->createUser($name2,'');
|
||||||
|
$count=count($this->backend->getUsers())-$startCount;
|
||||||
|
$this->assertEqual(2,$count);
|
||||||
|
$this->assertTrue((array_search($name1,$this->backend->getUsers())!==false));
|
||||||
|
$this->assertTrue((array_search($name2,$this->backend->getUsers())!==false));
|
||||||
|
|
||||||
|
$this->backend->deleteUser($name2);
|
||||||
|
$count=count($this->backend->getUsers())-$startCount;
|
||||||
|
$this->assertEqual(1,$count);
|
||||||
|
$this->assertTrue((array_search($name1,$this->backend->getUsers())!==false));
|
||||||
|
$this->assertFalse((array_search($name2,$this->backend->getUsers())!==false));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLogin(){
|
||||||
|
$name1=$this->getUser();
|
||||||
|
$name2=$this->getUser();
|
||||||
|
|
||||||
|
$this->assertFalse($this->backend->userExists($name1));
|
||||||
|
$this->assertFalse($this->backend->userExists($name2));
|
||||||
|
|
||||||
|
$this->backend->createUser($name1,'pass1');
|
||||||
|
$this->backend->createUser($name2,'pass2');
|
||||||
|
|
||||||
|
$this->assertTrue($this->backend->userExists($name1));
|
||||||
|
$this->assertTrue($this->backend->userExists($name2));
|
||||||
|
|
||||||
|
$this->assertTrue($this->backend->checkPassword($name1,'pass1'));
|
||||||
|
$this->assertTrue($this->backend->checkPassword($name2,'pass2'));
|
||||||
|
|
||||||
|
$this->assertFalse($this->backend->checkPassword($name1,'pass2'));
|
||||||
|
$this->assertFalse($this->backend->checkPassword($name2,'pass1'));
|
||||||
|
|
||||||
|
$this->assertFalse($this->backend->checkPassword($name1,'dummy'));
|
||||||
|
$this->assertFalse($this->backend->checkPassword($name2,'foobar'));
|
||||||
|
|
||||||
|
$this->backend->setPassword($name1,'newpass1');
|
||||||
|
$this->assertFalse($this->backend->checkPassword($name1,'pass1'));
|
||||||
|
$this->assertTrue($this->backend->checkPassword($name1,'newpass1'));
|
||||||
|
$this->assertFalse($this->backend->checkPassword($name2,'newpass1'));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* ownCloud
|
||||||
|
*
|
||||||
|
* @author Robin Appelman
|
||||||
|
* @copyright 2012 Robin Appelman icewind@owncloud.com
|
||||||
|
*
|
||||||
|
* 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 Test_User_Database extends Test_User_Backend {
|
||||||
|
private $user=array();
|
||||||
|
/**
|
||||||
|
* get a new unique user name
|
||||||
|
* test cases can override this in order to clean up created user
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getUser(){
|
||||||
|
$user=uniqid('test_');
|
||||||
|
$this->users[]=$user;
|
||||||
|
return $user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUp(){
|
||||||
|
$this->backend=new OC_User_Dummy();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tearDown(){
|
||||||
|
foreach($this->users as $user){
|
||||||
|
$this->backend->deleteUser($user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* ownCloud
|
||||||
|
*
|
||||||
|
* @author Robin Appelman
|
||||||
|
* @copyright 2012 Robin Appelman icewind@owncloud.com
|
||||||
|
*
|
||||||
|
* 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 Test_User_Dummy extends Test_User_Backend {
|
||||||
|
public function setUp(){
|
||||||
|
$this->backend=new OC_User_Dummy();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue