19declare(strict_types=1);
 
   28use Psr\Http\Message\ServerRequestInterface;
 
   42        private ServerRequestInterface $request,
 
   44        private bool $has_write_access,
 
   50        $cmd = $this->
ctrl->getCmd(
"view");
 
   59                if ($this->has_write_access) {
 
   70        $a_get_post_values = 
false,
 
   71        bool $add_entry = 
false 
   74        $post = $this->request->getParsedBody();
 
   76        if ($a_get_post_values) {
 
   78            foreach ((
$post[
"title"] ?? []) as $k => $v) {
 
   79                $def = 
$post[
"default"] ?? 
"";
 
   80                $vals[] = array(
"title" => $v,
 
   81                                "desc" => (
$post[
"desc"][$k] ?? 
""),
 
   82                                "lang" => (
$post[
"lang"][$k] ?? 
""),
 
   83                                "default" => ($def == $k));
 
   86                $vals[] = array(
"title" => 
"",
 
   91            $table->setData($vals);
 
   93            $data = $this->repo->getHeaderTitleTranslations();
 
   94            if (isset(
$data[
"Fobject"]) && is_array(
$data[
"Fobject"])) {
 
   95                foreach (
$data[
"Fobject"] as $k => $v) {
 
   96                    if ($k == 
$data[
"default_language"]) {
 
   97                        $data[
"Fobject"][$k][
"default"] = 
true;
 
   99                        $data[
"Fobject"][$k][
"default"] = 
false;
 
  103                $data[
"Fobject"] = array();
 
  105            $table->setData(
$data[
"Fobject"]);
 
  107        $this->tpl->setContent($table->getHTML());
 
  113    public function add(): void
 
  115        $this->view(
true, 
true);
 
  121    public function save(
bool $delete = 
false)
 
  123        $post = $this->request->getParsedBody();
 
  124        foreach (
$post[
"title"] as $k => $v) {
 
  125            if ($delete && (
$post[
"check"][$k] ?? 
false)) {
 
  126                unset(
$post[
"title"][$k]);
 
  127                unset(
$post[
"desc"][$k]);
 
  128                unset(
$post[
"lang"][$k]);
 
  129                if ($k == 
$post[
"default"]) {
 
  130                    unset(
$post[
"default"]);
 
  136        if (!isset(
$post[
"default"]) && count(
$post[
"lang"]) > 0) {
 
  137            $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_no_default_language"));
 
  143        if (array_key_exists(
"", 
$post[
"lang"])) {
 
  144            $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_no_language_selected"));
 
  150        if (count(array_unique(
$post[
"lang"])) < count(
$post[
"lang"])) {
 
  151            $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_multi_language_selected"));
 
  157        $this->repo->removeHeaderTitleTranslations();
 
  158        foreach (
$post[
"title"] as $k => $v) {
 
  159            $desc = 
$post[
"desc"][$k] ?? 
"";
 
  160            $this->repo->addHeaderTitleTranslation(
 
  163                (
$post[
"default"] == $k)
 
  168        $this->
ctrl->redirect($this, 
"view");
 
  174    public function delete(): 
void 
Class ilCtrl provides processing control methods.
 
TableGUI class for title/description translations.
 
Util class various functions, usage as namespace.
 
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
 
const MESSAGE_TYPE_SUCCESS