aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/admin/autoinsert.php16
-rw-r--r--app/views/admin/autoinsert/manual.php45
-rw-r--r--lib/classes/AutoInsert.class.php11
3 files changed, 47 insertions, 25 deletions
diff --git a/app/controllers/admin/autoinsert.php b/app/controllers/admin/autoinsert.php
index 70464e1..f899795 100644
--- a/app/controllers/admin/autoinsert.php
+++ b/app/controllers/admin/autoinsert.php
@@ -149,14 +149,17 @@ class Admin_AutoinsertController extends AuthenticatedController
$this->seminar_search = [];
PageLayout::setTitle(_('Manuelles Eintragen von Nutzergruppen in Veranstaltungen'));
- if (Request::submitted('submit')) {
+ if (Request::submittedSome('submit', 'force')) {
$filters = array_filter(Request::getArray('filter'));
- if (!Request::get('sem_id') || Request::get('sem_id') == 'false') {
+ $force = Request::bool('force', false);
+ $seminar_id = Request::option('sem_id');
+
+ if (!$seminar_id || $seminar_id === 'false') {
PageLayout::postError(_('Ungültiger Aufruf'));
} elseif (!count($filters)) {
PageLayout::postError(_('Keine Filterkriterien gewählt'));
} else {
- $seminar = Seminar::GetInstance(Request::option('sem_id'));
+ $seminar = Seminar::GetInstance($seminar_id);
$userlookup = new UserLookup();
foreach ($filters as $type => $values) {
@@ -166,9 +169,9 @@ class Admin_AutoinsertController extends AuthenticatedController
$real_users = 0;
foreach ($user_ids as $user_id) {
- if (!AutoInsert::checkAutoInsertUser(Request::option('sem_id'), $user_id)) {
- $seminar->addMember($user_id);
- $real_users += AutoInsert::saveAutoInsertUser(Request::option('sem_id'), $user_id);
+ if ($force || !AutoInsert::checkAutoInsertUser($seminar_id, $user_id)) {
+ $real_users += $seminar->addMember($user_id) ? 1 : 0;
+ AutoInsert::saveAutoInsertUser($seminar_id, $user_id);
}
}
@@ -192,6 +195,7 @@ class Admin_AutoinsertController extends AuthenticatedController
}
$this->redirect('admin/autoinsert/manual');
+ return;
}
}
diff --git a/app/views/admin/autoinsert/manual.php b/app/views/admin/autoinsert/manual.php
index c064548..dd0f834 100644
--- a/app/views/admin/autoinsert/manual.php
+++ b/app/views/admin/autoinsert/manual.php
@@ -134,6 +134,25 @@
</tr>
</tbody>
<? endif ?>
+ <thead>
+ <tr>
+ <th colspan="3"><?= _('Einstellungen') ?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td colspan="3">
+ <label>
+ <input type="checkbox" name="force" value="1">
+ <?= _('Eintragung forcieren') ?>
+ <?= tooltipIcon(implode("\n", [
+ _('Über diese Einstellung kann forciert werden, dass alle gefundenen Personen in die Veranstaltung eingetragen werden.'),
+ _('Ansonsten werden nur die Personen eingetragen, die bislang noch nicht über diesen Mechanismus eingetragen wurden.'),
+ ])) ?>
+ </label>
+ </td>
+ </tr>
+ </tbody>
<tfoot>
<tr>
<td colspan="3">
@@ -157,20 +176,20 @@
if (!$(this).next().length || !$(this).next().is('span')) {
$(this).after($('<span id="autoinsert_count" style="vertical-align: middle;"/>'));
}
- $.getJSON('<?= $controller->manual_count() ?>',
- $(this).closest('form').serializeArray(),
- function (json) {
- var result = "";
- if (!json || json.error) {
- result = '<?= _('Fehler') ?>: ';
- result += json.error || '<?= _('Fehler bei der Übertragung') ?>';
- } else {
- result = '<?= _('Gefundene Nutzer') ?>: ';
- result += "<strong>" + json.users + "</strong>";
- }
- $('#autoinsert_count').html(result);
+ $.getJSON(
+ '<?= $controller->manual_count() ?>',
+ $(this).closest('form').serializeArray()
+ ).done(function (json) {
+ let result = '';
+ if (!json || json.error) {
+ result = '<?= _('Fehler') ?>: ';
+ result += json.error || '<?= _('Fehler bei der Übertragung') ?>';
+ } else {
+ result = '<?= _('Gefundene Personen') ?>: ';
+ result += "<strong>" + json.users + "</strong>";
}
- );
+ $('#autoinsert_count').html(' ' + result);
+ });
event.preventDefault();
});
$('input[name^=remove_filter]').click(function (event) {
diff --git a/lib/classes/AutoInsert.class.php b/lib/classes/AutoInsert.class.php
index 417e6ff..fd0f7bb 100644
--- a/lib/classes/AutoInsert.class.php
+++ b/lib/classes/AutoInsert.class.php
@@ -313,12 +313,11 @@ class AutoInsert
*/
public static function saveAutoInsertUser($seminar_id, $user_id)
{
- $query = "INSERT INTO auto_insert_user (Seminar_id, user_id, mkdate)
- SELECT ?, user_id, UNIX_TIMESTAMP() FROM auth_user_md5 WHERE
- user_id=? AND perms NOT IN('root','admin')";
- $statement = DBManager::get()->prepare($query);
- $statement->execute([$seminar_id, $user_id]);
- return $statement->rowCount();
+ $query = "INSERT IGNORE INTO auto_insert_user (Seminar_id, user_id, mkdate)
+ SELECT ?, user_id, UNIX_TIMESTAMP()
+ FROM auth_user_md5
+ WHERE user_id = ? AND perms NOT IN ('root','admin')";
+ return DBManager::get()->execute($query, [$seminar_id, $user_id]);
}
/**