summaryrefslogtreecommitdiffstats
path: root/apps/files_versions
diff options
context:
space:
mode:
authorSam Tuke <samtuke@owncloud.com>2012-06-20 18:25:12 +0100
committerSam Tuke <samtuke@owncloud.com>2012-06-20 18:25:12 +0100
commit72215a818d0e222af80000909f9fa78243112533 (patch)
tree54716cbc93bdfef0513043ef4528e49ac395b3cf /apps/files_versions
parentd6bf62ea4eb39cba5fbf8100cd8b56351cee6d0b (diff)
downloadnextcloud-server-72215a818d0e222af80000909f9fa78243112533.tar.gz
nextcloud-server-72215a818d0e222af80000909f9fa78243112533.zip
added new user settings interface for deleting old file versions
fixed OCA_VersionsexpireAll() to use native PHP readdir() removed local storage implementation of readdir()
Diffstat (limited to 'apps/files_versions')
-rw-r--r--apps/files_versions/ajax/expireAll.php41
-rw-r--r--apps/files_versions/appinfo/app.php4
-rw-r--r--apps/files_versions/js/settings-personal.js51
-rw-r--r--apps/files_versions/settings-personal.php8
-rw-r--r--apps/files_versions/templates/settings-personal.php9
-rw-r--r--apps/files_versions/versions.php26
6 files changed, 124 insertions, 15 deletions
diff --git a/apps/files_versions/ajax/expireAll.php b/apps/files_versions/ajax/expireAll.php
new file mode 100644
index 00000000000..f9cd74aed02
--- /dev/null
+++ b/apps/files_versions/ajax/expireAll.php
@@ -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();
+
+} \ No newline at end of file
diff --git a/apps/files_versions/appinfo/app.php b/apps/files_versions/appinfo/app.php
index 8b891848c57..ef2f54dd3f9 100644
--- a/apps/files_versions/appinfo/app.php
+++ b/apps/files_versions/appinfo/app.php
@@ -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"); \ No newline at end of file
diff --git a/apps/files_versions/js/settings-personal.js b/apps/files_versions/js/settings-personal.js
new file mode 100644
index 00000000000..d9456f3f2af
--- /dev/null
+++ b/apps/files_versions/js/settings-personal.js
@@ -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')+'" />');
+ }
+
+ );
+
+ }
+ }
+
+ );
+
+ });
+
+}); \ No newline at end of file
diff --git a/apps/files_versions/settings-personal.php b/apps/files_versions/settings-personal.php
new file mode 100644
index 00000000000..db80172979d
--- /dev/null
+++ b/apps/files_versions/settings-personal.php
@@ -0,0 +1,8 @@
+<?php
+
+$tmpl = new OCP\Template( 'files_versions', 'settings-personal');
+
+OCP\Util::addscript('files_versions','settings-personal');
+
+return $tmpl->fetchPage();
+?> \ No newline at end of file
diff --git a/apps/files_versions/templates/settings-personal.php b/apps/files_versions/templates/settings-personal.php
new file mode 100644
index 00000000000..7ff016b585e
--- /dev/null
+++ b/apps/files_versions/templates/settings-personal.php
@@ -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> \ No newline at end of file
diff --git a/apps/files_versions/versions.php b/apps/files_versions/versions.php
index 6feb0cbb9c7..7522538caf2 100644
--- a/apps/files_versions/versions.php
+++ b/apps/files_versions/versions.php
@@ -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;
+
+ }
}