summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/admin_audit/appinfo/app.php18
-rw-r--r--apps/admin_audit/appinfo/info.xml10
-rw-r--r--apps/admin_audit/lib/hooks_handlers.php72
-rw-r--r--apps/bookmarks/addBm.php14
-rw-r--r--apps/bookmarks/css/bookmarks.css2
-rw-r--r--apps/calendar/ajax/events.php2
-rw-r--r--apps/calendar/js/calendar.js2
-rw-r--r--apps/calendar/lib/object.php6
-rw-r--r--apps/files_archive/lib/storage.php1
-rw-r--r--apps/files_sharing/appinfo/app.php9
-rw-r--r--apps/files_sharing/get.php1
-rw-r--r--apps/files_sharing/lib_share.php2
-rw-r--r--apps/files_sharing/sharedstorage.php31
-rw-r--r--apps/files_sharing_log/appinfo/app.php22
-rw-r--r--apps/files_sharing_log/appinfo/database.xml44
-rw-r--r--apps/files_sharing_log/appinfo/info.xml10
-rw-r--r--apps/files_sharing_log/appinfo/version1
-rw-r--r--apps/files_sharing_log/css/style.css7
-rw-r--r--apps/files_sharing_log/index.php21
-rw-r--r--apps/files_sharing_log/log.php34
-rw-r--r--apps/files_sharing_log/templates/index.php42
-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
-rw-r--r--apps/gallery/lib/hooks_handlers.php2
28 files changed, 448 insertions, 44 deletions
diff --git a/apps/admin_audit/appinfo/app.php b/apps/admin_audit/appinfo/app.php
new file mode 100644
index 00000000000..e52f633cf14
--- /dev/null
+++ b/apps/admin_audit/appinfo/app.php
@@ -0,0 +1,18 @@
+<?php
+
+OC::$CLASSPATH['OC_Admin_Audit_Hooks_Handlers'] = 'apps/admin_audit/lib/hooks_handlers.php';
+
+OCP\Util::connectHook('OCP\User', 'pre_login', 'OC_Admin_Audit_Hooks_Handlers', 'pre_login');
+OCP\Util::connectHook('OCP\User', 'post_login', 'OC_Admin_Audit_Hooks_Handlers', 'post_login');
+OCP\Util::connectHook('OCP\User', 'logout', 'OC_Admin_Audit_Hooks_Handlers', 'logout');
+
+OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename, 'OC_Admin_Audit_Hooks_Handlers', 'rename');
+OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_create, 'OC_Admin_Audit_Hooks_Handlers', 'create');
+OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_copy, 'OC_Admin_Audit_Hooks_Handlers', 'copy');
+OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_write, 'OC_Admin_Audit_Hooks_Handlers', 'write');
+OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_read, 'OC_Admin_Audit_Hooks_Handlers', 'read');
+OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_delete, 'OC_Admin_Audit_Hooks_Handlers', 'delete');
+
+OCP\Util::connectHook('OC_Share', 'public', 'OC_Admin_Audit_Hooks_Handlers', 'share_public');
+OCP\Util::connectHook('OC_Share', 'public-download', 'OC_Admin_Audit_Hooks_Handlers', 'share_public_download');
+OCP\Util::connectHook('OC_Share', 'user', 'OC_Admin_Audit_Hooks_Handlers', 'share_user');
diff --git a/apps/admin_audit/appinfo/info.xml b/apps/admin_audit/appinfo/info.xml
new file mode 100644
index 00000000000..6eb62fbbd16
--- /dev/null
+++ b/apps/admin_audit/appinfo/info.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<info>
+ <id>admin_audit</id>
+ <name>Log audit info</name>
+ <version>0.1</version>
+ <licence>AGPL</licence>
+ <author>Bart Visscher</author>
+ <require>2</require>
+ <description>Audit user actions in Owncloud</description>
+</info>
diff --git a/apps/admin_audit/lib/hooks_handlers.php b/apps/admin_audit/lib/hooks_handlers.php
new file mode 100644
index 00000000000..c5aec97d939
--- /dev/null
+++ b/apps/admin_audit/lib/hooks_handlers.php
@@ -0,0 +1,72 @@
+<?php
+
+class OC_Admin_Audit_Hooks_Handlers {
+ static public function pre_login($params) {
+ $path = $params['uid'];
+ self::log('Trying login '.$user);
+ }
+ static public function post_login($params) {
+ $path = $params['uid'];
+ self::log('Login '.$user);
+ }
+ static public function logout($params) {
+ $user = OCP\User::getUser();
+ self::log('Logout '.$user);
+ }
+
+ static public function rename($params) {
+ $oldpath = $params[OC_Filesystem::signal_param_oldpath];
+ $newpath = $params[OC_Filesystem::signal_param_newpath];
+ $user = OCP\User::getUser();
+ self::log('Rename "'.$oldpath.'" to "'.$newpath.'" by '.$user);
+ }
+ static public function create($params) {
+ $path = $params[OC_Filesystem::signal_param_path];
+ $user = OCP\User::getUser();
+ self::log('Create "'.$path.'" by '.$user);
+ }
+ static public function copy($params) {
+ $oldpath = $params[OC_Filesystem::signal_param_oldpath];
+ $newpath = $params[OC_Filesystem::signal_param_newpath];
+ $user = OCP\User::getUser();
+ self::log('Copy "'.$oldpath.'" to "'.$newpath.'" by '.$user);
+ }
+ static public function write($params) {
+ $path = $params[OC_Filesystem::signal_param_path];
+ $user = OCP\User::getUser();
+ self::log('Write "'.$path.'" by '.$user);
+ }
+ static public function read($params) {
+ $path = $params[OC_Filesystem::signal_param_path];
+ $user = OCP\User::getUser();
+ self::log('Read "'.$path.'" by '.$user);
+ }
+ static public function delete($params) {
+ $path = $params[OC_Filesystem::signal_param_path];
+ $user = OCP\User::getUser();
+ self::log('Delete "'.$path.'" by '.$user);
+ }
+ static public function share_public($params) {
+ $path = $params['source'];
+ $token = $params['token'];
+ $user = OCP\User::getUser();
+ self::log('Shared "'.$path.'" with public, token="'.$token.'" by '.$user);
+ }
+ static public function share_public_download($params) {
+ $path = $params['source'];
+ $token = $params['token'];
+ $user = $_SERVER['REMOTE_ADDR'];
+ self::log('Download of shared "'.$path.'" token="'.$token.'" by '.$user);
+ }
+ static public function share_user($params) {
+ $path = $params['source'];
+ $permissions = $params['permissions'];
+ $with = $params['with'];
+ $user = OCP\User::getUser();
+ $rw = $permissions & OC_Share::WRITE ? 'w' : 'o';
+ self::log('Shared "'.$path.'" (r'.$rw.') with user "'.$with.'" by '.$user);
+ }
+ static protected function log($msg) {
+ OCP\Util::writeLog('admin_audit', $msg, OCP\Util::INFO);
+ }
+}
diff --git a/apps/bookmarks/addBm.php b/apps/bookmarks/addBm.php
index 866fa1e7b1e..4df93c8b05f 100644
--- a/apps/bookmarks/addBm.php
+++ b/apps/bookmarks/addBm.php
@@ -5,20 +5,20 @@
*
* @author Arthur Schiwon
* @copyright 2011 Arthur Schiwon blizzz@arthur-schiwon.de
-*
+*
* 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
+* 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 Lesser General Public
+*
+* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
-*
+*
*/
@@ -28,6 +28,6 @@ OCP\User::checkLoggedIn();
OCP\App::checkAppEnabled('bookmarks');
require_once('bookmarksHelper.php');
-addBookmark($_POST['url'], '', 'Read-Later');
+addBookmark($_GET['url'], '', 'Read-Later');
include 'templates/addBm.php';
diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css
index 3a3e0fbf6b3..a67afcd44fa 100644
--- a/apps/bookmarks/css/bookmarks.css
+++ b/apps/bookmarks/css/bookmarks.css
@@ -1,5 +1,5 @@
#content { overflow: auto; height: 100%; }
-#firstrun { width: 80%; margin: 5em auto auto auto; text-align: center; font-weight:bold; font-size:1.5em; color:#777;}
+#firstrun { width: 80%; margin: 5em auto auto auto; text-align: center; font-weight:bold; font-size:1.5em; color:#777; position: relative;}
#firstrun small { display: block; font-weight: normal; font-size: 0.5em; margin-bottom: 1.5em; }
#firstrun .button { font-size: 0.7em; }
#firstrun #selections { font-size:0.8em; font-weight: normal; width: 100%; margin: 2em auto auto auto; clear: both; }
diff --git a/apps/calendar/ajax/events.php b/apps/calendar/ajax/events.php
index 6ea89e3e5b3..7178358c7b5 100644
--- a/apps/calendar/ajax/events.php
+++ b/apps/calendar/ajax/events.php
@@ -27,4 +27,4 @@ $output = array();
foreach($events as $event){
$output = array_merge($output, OC_Calendar_App::generateEventOutput($event, $start, $end));
}
-OCP\JSON::encodedPrint($output);
+OCP\JSON::encodedPrint(OCP\Util::sanitizeHTML($output));
diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js
index 5136c3e7745..3b1be59381b 100644
--- a/apps/calendar/js/calendar.js
+++ b/apps/calendar/js/calendar.js
@@ -869,7 +869,7 @@ $(document).ready(function(){
eventDrop: Calendar.UI.moveEvent,
eventResize: Calendar.UI.resizeEvent,
eventRender: function(event, element) {
- element.find('.fc-event-title').html(element.find('.fc-event-title').text());
+ element.find('.fc-event-title').html(element.find('.fc-event-title').html());
element.tipsy({
className: 'tipsy-event',
opacity: 0.9,
diff --git a/apps/calendar/lib/object.php b/apps/calendar/lib/object.php
index 2e0d37d14ad..a6ae6590080 100644
--- a/apps/calendar/lib/object.php
+++ b/apps/calendar/lib/object.php
@@ -605,8 +605,8 @@ class OC_Calendar_Object{
public static function updateVCalendarFromRequest($request, $vcalendar)
{
- $title = strip_tags($request["title"]);
- $location = strip_tags($request["location"]);
+ $title = $request["title"];
+ $location = $request["location"];
$categories = $request["categories"];
$allday = isset($request["allday"]);
$from = $request["from"];
@@ -616,7 +616,7 @@ class OC_Calendar_Object{
$totime = $request['totime'];
}
$vevent = $vcalendar->VEVENT;
- $description = strip_tags($request["description"]);
+ $description = $request["description"];
$repeat = $request["repeat"];
if($repeat != 'doesnotrepeat'){
$rrule = '';
diff --git a/apps/files_archive/lib/storage.php b/apps/files_archive/lib/storage.php
index 2f10d6a3e4e..86761663611 100644
--- a/apps/files_archive/lib/storage.php
+++ b/apps/files_archive/lib/storage.php
@@ -49,7 +49,6 @@ class OC_Filestorage_Archive extends OC_Filestorage_Common{
OC_FakeDirStream::$dirs[$id]=$content;
return opendir('fakedir://'.$id);
}
- public function readdir($path){}
public function stat($path){
$ctime=filectime($this->path);
$path=$this->stripPath($path);
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php
index ea3a9da6f7a..bbb753d5e69 100644
--- a/apps/files_sharing/appinfo/app.php
+++ b/apps/files_sharing/appinfo/app.php
@@ -1,15 +1,20 @@
<?php
-require_once('apps/files_sharing/sharedstorage.php');
-
OC::$CLASSPATH['OC_Share'] = "apps/files_sharing/lib_share.php";
+OC::$CLASSPATH['OC_Filestorage_Shared'] = "apps/files_sharing/sharedstorage.php";
+
OCP\App::registerAdmin('files_sharing', 'settings');
+
+OCP\Util::connectHook('OC_Filesystem', 'setup', 'OC_Filestorage_Shared', 'setup');
+
OCP\Util::connectHook("OC_Filesystem", "post_delete", "OC_Share", "deleteItem");
OCP\Util::connectHook("OC_Filesystem", "post_rename", "OC_Share", "renameItem");
OCP\Util::connectHook("OC_Filesystem", "post_write", "OC_Share", "updateItem");
+
OCP\Util::connectHook('OC_User', 'post_deleteUser', 'OC_Share', 'removeUser');
OCP\Util::connectHook('OC_User', 'post_addToGroup', 'OC_Share', 'addToGroupShare');
OCP\Util::connectHook('OC_User', 'post_removeFromGroup', 'OC_Share', 'removeFromGroupShare');
+
$dir = isset($_GET['dir']) ? $_GET['dir'] : '/';
if ($dir != '/Shared' || OCP\Config::getAppValue('files_sharing', 'resharing', 'yes') == 'yes') {
OCP\Util::addscript("files_sharing", "share");
diff --git a/apps/files_sharing/get.php b/apps/files_sharing/get.php
index a051451d33a..1ab8c6a257f 100644
--- a/apps/files_sharing/get.php
+++ b/apps/files_sharing/get.php
@@ -77,6 +77,7 @@ if (isset($_GET['token']) && $source = OC_Share::getSource($_GET['token'])) {
header("Content-Length: " . OC_Filesystem::filesize($source));
//download the file
@ob_clean();
+ OCP\Util::emitHook('OC_Share', 'public-download', array('source'=>$source, 'token'=>$token);
OC_Filesystem::readfile($source);
}
} else {
diff --git a/apps/files_sharing/lib_share.php b/apps/files_sharing/lib_share.php
index 4abf80ae19c..6e092269250 100644
--- a/apps/files_sharing/lib_share.php
+++ b/apps/files_sharing/lib_share.php
@@ -47,6 +47,7 @@ class OC_Share {
}
if ($uid_shared_with == self::PUBLICLINK) {
$token = sha1("$uid_shared_with-$source");
+ OCP\Util::emitHook('OC_Share', 'public', array('source'=>$source, 'token'=>$token, 'permissions'=>$permissions));
$query->execute(array($uid_owner, self::PUBLICLINK, $source, $token, $permissions));
$this->token = $token;
} else {
@@ -118,6 +119,7 @@ class OC_Share {
if (isset($gid)) {
$uid = $uid."@".$gid;
}
+ OCP\Util::emitHook('OC_Share', 'user', array('source'=>$source, 'target'=>$target, 'with'=>$uid, 'permissions'=>$permissions));
$query->execute(array($uid_owner, $uid, $source, $target, $permissions));
}
}
diff --git a/apps/files_sharing/sharedstorage.php b/apps/files_sharing/sharedstorage.php
index 9174334383c..62c86ee18e4 100644
--- a/apps/files_sharing/sharedstorage.php
+++ b/apps/files_sharing/sharedstorage.php
@@ -139,8 +139,6 @@ class OC_Filestorage_Shared extends OC_Filestorage {
}
}
- public function readdir( $path ) {}
-
public function is_dir($path) {
if ($path == "" || $path == "/") {
return true;
@@ -322,6 +320,11 @@ class OC_Filestorage_Shared extends OC_Filestorage {
public function file_get_contents($path) {
$source = $this->getSource($path);
if ($source) {
+ $info = array(
+ 'target' => $this->datadir.$path,
+ 'source' => $source,
+ );
+ OCP\Util::emitHook('OC_Filestorage_Shared', 'file_get_contents', $info);
$storage = OC_Filesystem::getStorage($source);
return $storage->file_get_contents($this->getInternalPath($source));
}
@@ -331,6 +334,11 @@ class OC_Filestorage_Shared extends OC_Filestorage {
if ($this->is_writable($path)) {
$source = $this->getSource($path);
if ($source) {
+ $info = array(
+ 'target' => $this->datadir.$path,
+ 'source' => $source,
+ );
+ OCP\Util::emitHook('OC_Filestorage_Shared', 'file_put_contents', $info);
$storage = OC_Filesystem::getStorage($source);
$result = $storage->file_put_contents($this->getInternalPath($source), $data);
if ($result) {
@@ -418,6 +426,12 @@ class OC_Filestorage_Shared extends OC_Filestorage {
public function fopen($path, $mode) {
$source = $this->getSource($path);
if ($source) {
+ $info = array(
+ 'target' => $this->datadir.$path,
+ 'source' => $source,
+ 'mode' => $mode,
+ );
+ OCP\Util::emitHook('OC_Filestorage_Shared', 'fopen', $info);
$storage = OC_Filesystem::getStorage($source);
return $storage->fopen($this->getInternalPath($source), $mode);
}
@@ -510,8 +524,9 @@ class OC_Filestorage_Shared extends OC_Filestorage {
}
}
- public static function setup() {
- OC_Filesystem::mount('OC_Filestorage_Shared', array('datadir' => '/'.OCP\USER::getUser().'/files/Shared'), '/'.OCP\USER::getUser().'/files/Shared/');
+ public static function setup($options) {
+ $user_dir = $options['user_dir'];
+ OC_Filesystem::mount('OC_Filestorage_Shared', array('datadir' => $user_dir.'/Shared'), $user_dir.'/Shared/');
}
/**
@@ -524,11 +539,3 @@ class OC_Filestorage_Shared extends OC_Filestorage {
return $this->filemtime($path)>$time;
}
}
-
-if (OCP\USER::isLoggedIn()) {
- OC_Filestorage_Shared::setup();
-} else {
- OCP\Util::connectHook('OC_User', 'post_login', 'OC_Filestorage_Shared', 'setup');
-}
-
-?>
diff --git a/apps/files_sharing_log/appinfo/app.php b/apps/files_sharing_log/appinfo/app.php
new file mode 100644
index 00000000000..23cae61fbf4
--- /dev/null
+++ b/apps/files_sharing_log/appinfo/app.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+OC::$CLASSPATH['OC_Files_Sharing_Log'] = 'apps/files_sharing_log/log.php';
+
+$l=new OC_L10N('files_sharing_log');
+OCP\App::addNavigationEntry( array(
+ 'id' => 'files_sharing_log_index',
+ 'order' => 5,
+ 'href' => OCP\Util::linkTo( 'files_sharing_log', 'index.php' ),
+ 'icon' => OCP\Util::imagePath( 'files_sharing_log', 'icon.png' ),
+ 'name' => $l->t('Shared files log'))
+);
+
+OCP\Util::connectHook('OC_Filestorage_Shared', 'fopen', 'OC_Files_Sharing_Log', 'fopen');
+OCP\Util::connectHook('OC_Filestorage_Shared', 'file_get_contents', 'OC_Files_Sharing_Log', 'file_get_contents');
+OCP\Util::connectHook('OC_Filestorage_Shared', 'file_put_contents', 'OC_Files_Sharing_Log', 'file_put_contents');
diff --git a/apps/files_sharing_log/appinfo/database.xml b/apps/files_sharing_log/appinfo/database.xml
new file mode 100644
index 00000000000..92e5f0125bd
--- /dev/null
+++ b/apps/files_sharing_log/appinfo/database.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<database>
+ <name>*dbname*</name>
+ <create>true</create>
+ <overwrite>false</overwrite>
+ <charset>latin1</charset>
+ <table>
+ <name>*dbprefix*sharing_log</name>
+ <declaration>
+ <field>
+ <name>user_id</name>
+ <type>text</type>
+ <notnull>true</notnull>
+ <length>64</length>
+ </field>
+ <field>
+ <name>source</name>
+ <type>text</type>
+ <notnull>true</notnull>
+ <length>128</length>
+ </field>
+ <field>
+ <name>uid_who</name>
+ <type>text</type>
+ <notnull>true</notnull>
+ <length>64</length>
+ </field>
+ <field>
+ <name>when</name>
+ <type>integer</type>
+ <default></default>
+ <notnull>false</notnull>
+ <unsigned>true</unsigned>
+ <length>4</length>
+ </field>
+ <field>
+ <name>mode</name>
+ <type>text</type>
+ <notnull>true</notnull>
+ <length>4</length>
+ </field>
+ </declaration>
+ </table>
+</database>
diff --git a/apps/files_sharing_log/appinfo/info.xml b/apps/files_sharing_log/appinfo/info.xml
new file mode 100644
index 00000000000..d5e3283df3f
--- /dev/null
+++ b/apps/files_sharing_log/appinfo/info.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<info>
+ <id>files_sharing_log</id>
+ <name>File Shared access logging app</name>
+ <description>Log access to shared files</description>
+ <licence>AGPL</licence>
+ <author>Bart Visscher</author>
+ <require>4</require>
+ <shipped>true</shipped>
+</info>
diff --git a/apps/files_sharing_log/appinfo/version b/apps/files_sharing_log/appinfo/version
new file mode 100644
index 00000000000..49d59571fbf
--- /dev/null
+++ b/apps/files_sharing_log/appinfo/version
@@ -0,0 +1 @@
+0.1
diff --git a/apps/files_sharing_log/css/style.css b/apps/files_sharing_log/css/style.css
new file mode 100644
index 00000000000..069d3a45e0d
--- /dev/null
+++ b/apps/files_sharing_log/css/style.css
@@ -0,0 +1,7 @@
+#files_sharing_log {
+padding: 2em;
+}
+#files_sharing_log th,
+#files_sharing_log td {
+padding: 0 1em;
+}
diff --git a/apps/files_sharing_log/index.php b/apps/files_sharing_log/index.php
new file mode 100644
index 00000000000..ffacbdd8604
--- /dev/null
+++ b/apps/files_sharing_log/index.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+OCP\User::checkLoggedIn();
+OCP\App::checkAppEnabled('files_sharing_log');
+
+OCP\App::setActiveNavigationEntry('files_sharing_log_index');
+
+OCP\Util::addStyle('files_sharing_log', 'style');
+
+$query = OCP\DB::prepare('SELECT * FROM *PREFIX*sharing_log WHERE user_id = ?');
+$log = $query->execute(array(OCP\User::getUser()))->fetchAll();
+
+$output = new OCP\Template('files_sharing_log', 'index', 'user');
+$output->assign('log', $log);
+$output->printPage();
diff --git a/apps/files_sharing_log/log.php b/apps/files_sharing_log/log.php
new file mode 100644
index 00000000000..e6a12b9fb1d
--- /dev/null
+++ b/apps/files_sharing_log/log.php
@@ -0,0 +1,34 @@
+<?php
+
+class OC_Files_Sharing_Log {
+ static public function fopen($arguments) {
+ $target = $arguments['target'];
+ $source = $arguments['source'];
+ $mode = $arguments['mode'];
+ self::log($target, $source, $mode);
+ }
+
+ static public function file_get_contents($arguments) {
+ $target = $arguments['target'];
+ $source = $arguments['source'];
+ $mode = 'get';
+ self::log($target, $source, $mode);
+ }
+
+ static public function file_put_contents($arguments) {
+ $target = $arguments['target'];
+ $source = $arguments['source'];
+ $mode = 'put';
+ self::log($target, $source, $mode);
+ }
+
+ static public function log($target, $source, $mode) {
+ $query = OCP\DB::prepare("SELECT * FROM *PREFIX*sharing WHERE source = ? AND target = ?");
+ $info = $query->execute(array($source, $target))->fetchAll();
+ $info = $info[0];
+ //var_dump($info);
+ $query = OCP\DB::prepare("INSERT INTO *PREFIX*sharing_log VALUES (?,?,?,?,?)");
+ $query->execute(array($info['uid_owner'], $source, OCP\User::getUser(), time(), $mode));
+ //die;
+ }
+}
diff --git a/apps/files_sharing_log/templates/index.php b/apps/files_sharing_log/templates/index.php
new file mode 100644
index 00000000000..55bfc1d6a3c
--- /dev/null
+++ b/apps/files_sharing_log/templates/index.php
@@ -0,0 +1,42 @@
+<table id="files_sharing_log">
+ <thead>
+ <tr>
+ <th><?php echo $l->t('File') ?></th>
+ <th><?php echo $l->t('Who') ?></th>
+ <th><?php echo $l->t('When') ?></th>
+ <th><?php echo $l->t('What') ?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach($_['log'] as $log): ?>
+ <tr>
+ <td>
+ <?php echo $log['source'] ?>
+ </td>
+ <td>
+ <?php echo $log['uid_who'] ?>
+ </td>
+ <td>
+ <?php echo date('Y-m-d H:i:s', $log['when']) ?>
+ </td>
+ <td>
+ <?php switch ($log['mode']):
+ case 'get':
+ echo $l->t('Read');
+ break;
+ case 'put':
+ echo $l->t('Write');
+ break;
+ default:
+ if (strpos('r', $log['mode']) !== false):
+ echo $l->t('Read');
+ else:
+ echo $l->t('Write');
+ endif;
+ endswitch;
+ ?>
+ </td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+</table>
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 49f1573f7c2..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::CLASSNAME, OC_Filesystem::signal_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;
+
+ }
}
diff --git a/apps/gallery/lib/hooks_handlers.php b/apps/gallery/lib/hooks_handlers.php
index a9f4dc6affc..093979834da 100644
--- a/apps/gallery/lib/hooks_handlers.php
+++ b/apps/gallery/lib/hooks_handlers.php
@@ -21,7 +21,7 @@
*
*/
-OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_delete, "OC_Gallery_Hooks_Handlers", "removePhoto");
+OCP\Util::connectHook('OC_Filesystem', 'delete', "OC_Gallery_Hooks_Handlers", "removePhoto");
//OCP\Util::connectHook(OC_Filesystem::CLASSNAME, OC_Filesystem::signal_post_rename, "OC_Gallery_Hooks_Handlers", "renamePhoto");
require_once(OC::$CLASSPATH['Pictures_Managers']);