*/ class admin_plugin_structnotification extends AdminPlugin { protected $headers = ['schema', 'field', 'operator', 'value', 'filters', 'users_and_groups', 'message']; protected $operators = ['before', 'after', 'at']; /** * @return int sort number in admin menu */ public function getMenuSort() { return 499; } /** * @return bool true if only access for superuser, false is for superusers and moderators */ public function forAdminOnly() { return false; } /** * Should carry out any processing required by the plugin. */ public function handle() { global $INPUT; global $ID; try { /** @var \helper_plugin_structnotification_db$db_helper */ $db_helper = plugin_load('helper', 'structnotification_db'); $sqlite = $db_helper->getDB(); } catch (Exception $e) { msg($e->getMessage(), -1); return; } if ($INPUT->str('action') && $INPUT->arr('predicate') && checkSecurityToken()) { $predicate = $INPUT->arr('predicate'); if ($INPUT->str('action') === 'add') { $errors = $this->validate($predicate); if ($errors) { $this->displayErrors($errors); return; } $ok = $sqlite->storeEntry('predicate', $predicate); if (!$ok) msg('failed to add predicate', -1); } elseif ($INPUT->str('action') === 'delete') { $ok = $sqlite->query('DELETE FROM predicate WHERE id=?', $predicate['id']); if (!$ok) msg('failed to delete predicate', -1); } elseif ($INPUT->str('action') === 'update') { $errors = $this->validate($predicate); if ($errors) { $this->displayErrors($errors); return; } $set = implode(',', array_map(static fn($header) => "$header=?", $this->headers)); $predicate['id'] = $INPUT->str('edit'); $ok = $sqlite->query("UPDATE predicate SET $set WHERE id=?", $predicate); if (!$ok) msg('failed to update predicate', -1); } if ($ok) send_redirect(wl($ID, ['do' => 'admin', 'page' => 'structnotification'], true, '&')); } } /** * Render HTML output, e.g. helpful text and a form */ public function html() { global $INPUT; global $ID; try { /** @var \helper_plugin_structnotification_db$db_helper */ $db_helper = plugin_load('helper', 'structnotification_db'); $sqlite = $db_helper->getDB(); } catch (Exception $e) { msg($e->getMessage(), -1); return; } echo '
| ' . $this->getLang('admin header ' . $header) . ' | '; } echo ''; echo ' | |
|---|---|---|
| ' . $html . ' | '; } else { echo '' . $value . ' | '; } } echo ''; $link = wl( $ID, ['do' => 'admin', 'page' => 'structnotification', 'edit' => $predicate['id']] ); echo '' . $this->getLang('edit') . ' | '; $link = wl( $ID, [ 'do' => 'admin', 'page' => 'structnotification', 'action' => 'delete', 'sectok' => getSecurityToken(), 'predicate[id]' => $predicate['id'] ] ); echo '' . $this->getLang('delete') . ''; echo ' | '; echo '