aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Siegfried <david.siegfried@uni-vechta.de>2026-02-27 16:54:19 +0100
committerDavid Siegfried <david.siegfried@uni-vechta.de>2026-02-27 16:54:19 +0100
commitab8c6aee0e3df0565a56fc342c5107904935da2d (patch)
tree40cea85374999b0ecb0c6f6f75b790340c686f5b /lib
parenta4a60be9c7e810d1e0d2ce0b7d4c8bba6ac89afc (diff)
extend file and folder logging, fixes #6251tic-6251
Diffstat (limited to 'lib')
-rw-r--r--lib/models/FileRef.php41
-rw-r--r--lib/models/Folder.php49
2 files changed, 85 insertions, 5 deletions
diff --git a/lib/models/FileRef.php b/lib/models/FileRef.php
index 043aec1..0487121 100644
--- a/lib/models/FileRef.php
+++ b/lib/models/FileRef.php
@@ -74,6 +74,8 @@ class FileRef extends SimpleORMap implements PrivacyObject, FeedbackRange
$config['registered_callbacks']['after_delete'][] = 'cbRemoveFeedbackElements';
$config['registered_callbacks']['before_delete'][] = 'cbLogDeleteFileRef';
$config['registered_callbacks']['before_store'][] = 'cbMakeUniqueFilename';
+ $config['registered_callbacks']['after_store'][] = 'cbLogUpdateFileRef';
+ $config['registered_callbacks']['after_create'][] = 'cbLogCreateFileRef';
parent::configure($config);
}
@@ -82,18 +84,47 @@ class FileRef extends SimpleORMap implements PrivacyObject, FeedbackRange
protected $download_url;
public $path_to_blob;
+ private function getLogComment(): string
+ {
+ $comment = sprintf(
+ 'Kommentar: %s',
+ $this->name
+ );
+
+ $range_fullname = $this->folder->getRangeFullname();
+
+ if ($range_fullname) {
+ $comment .= " - $range_fullname";
+ }
+ return $comment;
+ }
+
+ public function cbLogUpdateFileRef()
+ {
+ StudipLog::log('FILE_UPDATE',
+ User::findCurrent()->id,
+ $this->folder->range_id,
+ $this->getLogComment()
+ );
+ }
public function cbLogDeleteFileRef()
{
StudipLog::log('FILE_DELETE',
User::findCurrent()->id,
- null,
- sprintf(
- 'Kommentar: %s',
- $this->name
- )
+ $this->folder->range_id,
+ $this->getLogComment()
+ );
+ }
+ public function cbLogCreateFileRef()
+ {
+ StudipLog::log('FILE_UPLOAD',
+ User::findCurrent()->id,
+ $this->folder->range_id,
+ $this->getLogComment()
);
}
+
/**
* This callback is called after deleting a FileRef.
* It removes the File object that is associated with the FileRef,
diff --git a/lib/models/Folder.php b/lib/models/Folder.php
index b3a08f5..f5ac297 100644
--- a/lib/models/Folder.php
+++ b/lib/models/Folder.php
@@ -84,6 +84,8 @@ class Folder extends SimpleORMap implements FeedbackRange
$config['serialized_fields']['data_content'] = JSONArrayObject::class;
$config['registered_callbacks']['before_store'][] = 'cbMakeUniqueName';
+ $config['registered_callbacks']['after_store'][] = 'cbLogUpdateFolder';
+ $config['registered_callbacks']['after_create'][] = 'cbLogCreateFolder';
$config['registered_callbacks']['after_delete'][] = 'cbRemoveFeedbackElements';
$config['registered_callbacks']['before_delete'][] = 'cbLogDeleteFolder';
@@ -94,6 +96,53 @@ class Folder extends SimpleORMap implements FeedbackRange
parent::configure($config);
}
+ public function getRangeFullname(): string
+ {
+ if ($this->user) {
+ return $this->user->getFullname();
+ }
+ if ($this->course) {
+ return $this->course->getFullname();
+ }
+ if ($this->institute) {
+ return $this->institute->getFullname();
+ }
+ return '';
+ }
+
+ public function getLogComment(): string
+ {
+ $comment = sprintf(
+ 'Kommentar: %s',
+ $this->name
+ );
+
+ $range_fullname = $this->getRangeFullname();
+
+ if ($range_fullname) {
+ $comment .= " - $range_fullname";
+ }
+ return $comment;
+ }
+
+ public function cbLogCreateFolder()
+ {
+ StudipLog::log('FOLDER_CREATE',
+ User::findCurrent()->id,
+ $this->range_id,
+ $this->getLogComment()
+ );
+ }
+
+ public function cbLogUpdateFolder()
+ {
+ StudipLog::log('FOLDER_UPDATE',
+ User::findCurrent()->id,
+ $this->range_id,
+ $this->getLogComment()
+ );
+ }
+
protected function cbLogDeleteFolder()
{
StudipLog::log('FOLDER_DELETE',