]> source.dussan.org Git - nextcloud-server.git/commitdiff
added new user settings interface for deleting old file versions
authorSam Tuke <samtuke@owncloud.com>
Wed, 20 Jun 2012 17:25:12 +0000 (18:25 +0100)
committerSam Tuke <samtuke@owncloud.com>
Wed, 20 Jun 2012 17:25:12 +0000 (18:25 +0100)
fixed OCA_VersionsexpireAll() to use native PHP readdir()
removed local storage implementation of readdir()

apps/files_versions/ajax/expireAll.php [new file with mode: 0644]
apps/files_versions/appinfo/app.php
apps/files_versions/js/settings-personal.js [new file with mode: 0644]
apps/files_versions/settings-personal.php [new file with mode: 0644]
apps/files_versions/templates/settings-personal.php [new file with mode: 0644]
apps/files_versions/versions.php
lib/filestorage/local.php

diff --git a/apps/files_versions/ajax/expireAll.php b/apps/files_versions/ajax/expireAll.php
new file mode 100644 (file)
index 0000000..f9cd74a
--- /dev/null
@@ -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
index 8b891848c571e986a1cd5d99477401257c10afbd..ef2f54dd3f9b5e04cb48f105f93822a99b1a0f20 100644 (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");
\ 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 (file)
index 0000000..d9456f3
--- /dev/null
@@ -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 (file)
index 0000000..db80172
--- /dev/null
@@ -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 (file)
index 0000000..7ff016b
--- /dev/null
@@ -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
index 6feb0cbb9c7794920b4a44f35abe68483d605a6c..7522538caf22c34519f6977a609a16e8429698ee 100644 (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;
+                       
+               }
        
         }
 
index 27794fe17c09a24f212a4b7867ffbf98da33d570..44a2ab0f634017d2c80532d8a4d0da24404d63fc 100644 (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);