class MyPlugin extends StudIPPlugin implements StandardPlugin, PrivacyPlugin
{
public function __construct()
{
parent::__construct();
NotificationCenter::addObserver($this, 'deleteUser', 'UserDidDelete');
NotificationCenter::addObserver($this, 'removeData', 'UserDataDidRemove');
}
...
/**
* Export available data of a given user into a storage object
* (an instance of the StoredUserData class) for that user.
*
* @param StoredUserData $store object to store data into
*/
public function exportUserData(StoredUserData $storage)
{
$db = DBManager::get();
$table_data = $db->fetchAll('SELECT * FROM my_table WHERE user_id = ?', [$storage->user_id]);
$storage->addTabularData('Anzeigetitel', 'my_table', $table_data);
$file_data = $db->fetchAll('SELECT * FROM my_files WHERE user_id = ?', [$storage->user_id]);
foreach ($file_data as $file) {
$storage->addFileAtPath($file['name'], $file['path']);
}
}
/**
* delete given user from plugin
*
* @param String $event name of the notification event
* @param User $user
*/
public function deleteUser($event, $user)
{
...
PageLayout::postInfo('Nutzer X aus MyPlugin gelöscht.');
}
/**
* delete data of given user from plugin
*
* @param String $event name of the notification event
* @param String $user_id
* @param String $type of data that should be removed
*/
public function removeData($event, $user_id, $type)
{
switch ($type) {
case 'course_documents':
case 'personal_documents':
...
PageLayout::postInfo('Dokumente von Nutzer X aus MyPlugin gelöscht');
break;
case 'course_contents':
case 'personal_contents':
...
PageLayout::postInfo('Inhalte von Nutzer X aus MyPlugin gelöscht');
break;
case 'names':
...
PageLayout::postInfo('Namen von Nutzer X aus MyPlugin gelöscht');
break;
case 'memberships':
...
PageLayout::postInfo('Veranstaltungszuordnungen von Nutzer X aus MyPlugin gelöscht');
break;
}
}
}