added new user settings interface for deleting old file versions

fixed OCA_VersionsexpireAll() to use native PHP readdir()
removed local storage implementation of readdir()
This commit is contained in:
Sam Tuke 2012-06-20 18:25:12 +01:00
parent d6bf62ea4e
commit 72215a818d
7 changed files with 124 additions and 18 deletions

View File

@ -0,0 +1,41 @@
<?php
/**
* ownCloud - user_migrate
*
* @author Sam Tuke
* @copyright 2012 Sam Tuke samtuke@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/>.
*
*/
// TODO: Allow admins to expire versions of any user
// TODO: Provide feedback as to how many versions were deleted
// Check user and app status
OCP\JSON::checkLoggedIn();
OCP\App::checkAppEnabled('files_versions');
if( OCA_Versions\Storage::expireAll() ){
OCP\JSON::success();
die();
} else {
OCP\JSON::error();
die();
}

View File

@ -3,7 +3,9 @@
require_once('apps/files_versions/versions.php');
OCP\App::registerAdmin('files_versions', 'settings');
OCP\App::registerPersonal('files_versions','settings-personal');
OCP\Util::addscript('files_versions', 'versions');
// Listen to write signals
OCP\Util::connectHook('OC_Filesystem', 'post_write', "OCA_Versions\Storage", "write_hook");
OCP\Util::connectHook('OC_Filesystem', 'post_write', "OCA_Versions\Storage", "write_hook");

View File

@ -0,0 +1,51 @@
// $(document).ready(function(){
// $('#versions').change( function(){
// OC.msg.startSaving('#calendar .msg')
// // Serialize the data
// var post = $( '#timezone' ).serialize();
// $.post( OC.filePath('calendar', 'ajax/settings', 'settimezone.php'), post, function(data){
// //OC.msg.finishedSaving('#calendar .msg', data);
// });
// return false;
// });
// });
$(document).ready(function(){
//
$('#expireAllBtn').click(function(){
// Prevent page from reloading
event.preventDefault();
// Show loading gif
$('.expireAllLoading').show();
$.getJSON(
OC.filePath('files_versions','ajax','expireAll.php'),
function(result){
if (result.status == 'success') {
$('.expireAllLoading').hide();
$('#expireAllBtn').html('Expiration successful');
} else {
// Cancel loading
$('#expireAllBtn').html('Expiration failed');
// Show Dialog
OC.dialogs.alert(
'Something went wrong, your files may not have been expired',
'An error has occurred',
function(){
$('#expireAllBtn').html(t('files_versions', 'Expire all versions')+'<img style="display: none;" class="loading" src="'+OC.filePath('core','img','loading.gif')+'" />');
}
);
}
}
);
});
});

View File

@ -0,0 +1,8 @@
<?php
$tmpl = new OCP\Template( 'files_versions', 'settings-personal');
OCP\Util::addscript('files_versions','settings-personal');
return $tmpl->fetchPage();
?>

View File

@ -0,0 +1,9 @@
<form id="versions">
<fieldset class="personalblock">
<legend>
<strong>Versions</strong><!-- translate using echo $l->t('foo'); -->
</legend>
<p>This will delete all existing backup versions of your files</p><!-- translate using echo $l->t('foo'); -->
<button id="expireAllBtn">Expire all versions<img style="display: none;" class="expireAllLoading" src="<?php echo OCP\Util::linkTo('core', 'img/loading.gif'); ?>" /></button>
</fieldset>
</form>

View File

@ -333,9 +333,9 @@ class Storage {
$foldername = \OCP\Config::getSystemValue('datadirectory') .'/' . \OCP\USER::getUser() .'/' . $directory; // have to set an absolute path for use with PHP's opendir as OC version doesn't work
$directoryHandle = opendir( $foldername );
while ( $contents = $view->readdir( $directoryHandle ) ) {
$directoryHandle = $view->opendir( \OCP\USER::getUser() . '/' . $directory );
while ( $contents = readdir( $directoryHandle ) ) {
if ( $contents != '.' && $contents != '..') {
@ -373,17 +373,15 @@ class Storage {
$dir = \OCP\Config::getSystemValue('files_versionsfolder', Storage::DEFAULTFOLDER);
deleteAll( $dir, true );
// if ( deleteAll( $dir, 1 ) ) {
//
// echo "<h1>deleted ok</h1>";
//
// } else {
//
// echo "<h1>not deleted</h1>";
//
// }
if ( deleteAll( $dir, true ) ) {
return true;
} else {
return false;
}
}

View File

@ -20,9 +20,6 @@ class OC_Filestorage_Local extends OC_Filestorage{
public function opendir($path){
return opendir($this->datadir.$path);
}
public function readdir($handle){
return readdir($handle);
}
public function is_dir($path){
if(substr($path,-1)=='/'){
$path=substr($path,0,-1);