diff --git a/routeSQL.php b/routeSQL.php index ad6083d..9cefb74 100644 --- a/routeSQL.php +++ b/routeSQL.php @@ -276,9 +276,10 @@ class routeSQL /** Add HTML routes */ $route = new route (); $route->allowSlashes=false; - $route->get ($this->url_prefix."/", function () use ($route) + $route->get ($this->url_prefix."/", function ($chain) use ($route) { - $route->redirect ("/".$this->url_prefix, ""); + $route->redirect ("/".str_replace ("{chain}", $chain, $this->url_prefix), + ""); }); $route->get ($this->url_prefix. @@ -365,16 +366,16 @@ class routeSQL } $nbentries = count ($datas); if ($num > 1000) - $route->redirect ("/".$this->url_prefix. - "?page=$page&num=1000&search=$search", ""); + $route->redirect ("/".str_replace ("{chain}", $chain, $this->url_prefix) + ."?page=$page&num=1000&search=$search", ""); if ($page < 1) - $route->redirect ("/".$this->url_prefix. - "?page=1&num=$num&search=$search", ""); + $route->redirect ("/".str_replace ("{chain}", $chain, $this->url_prefix) + . "?page=1&num=$num&search=$search", ""); // Push on the last page if the values are too high if ($nbentries > 0 && ($page-1)*$num > $nbentries) { $maxPage = intval ($nbentries/$num)+1; - $route->redirect ("/".$this->url_prefix. + $route->redirect ("/".str_replace("{chain}", $chain, $this->url_prefix). "?page=$maxPage&num=$num&search=$search", ""); } @@ -553,12 +554,16 @@ echo $content; { $csrf->checkToken ($token); $this->objectDB->delete ($id); - $route->redirect ("/".$this->url_prefix, ""); + $route->redirect ("/". + str_replace ("{chain}", $chain, $this->url_prefix), + ""); } catch (Exception $e) { $renderer->flash ("ERROR", $e->getMessage()); - $route->redirect ("/".$this->url_prefix, ""); + $route->redirect ("/". + str_replace ("{chain}", $chain, $this->url_prefix), + ""); } @@ -644,6 +649,11 @@ echo $content; $field->mandatory = true; if (in_array ("autoincrement", $this->objectDB->fields[$key])) $field->type = "hidden"; + if ($key === $this->chainedForeign) + { + $field->defaults = $chain; + $field->readonly = true; + } $fields[] = $field; unset ($field); } @@ -694,7 +704,9 @@ echo $content; $this->objectDB->insert ($values); $renderer = new renderer (); $renderer->flash ("SUCCESS", _("Creation done")); - $route->redirect ("/".$this->url_prefix, ""); + $route->redirect ("/". + str_replace ("{chain}", $chain, $this->url_prefix), + ""); } catch (Exception $e) { @@ -712,7 +724,8 @@ echo $content; // corrected $_SESSION["domframework"]["routeSQL"]["errors"] = $errors; $_SESSION["domframework"]["routeSQL"]["values"] = $values; - $route->redirect ("/".$this->url_prefix."/add", ""); + $route->redirect ("/".str_replace("{chain}", $chain, $this->url_prefix). + "/add", ""); }); @@ -801,6 +814,11 @@ echo $content; $field->type = "hidden"; if ($readonly === true || $this->readwriteAllowed === false) $field->readonly = true; + if ($key === $this->chainedForeign) + { + $field->defaults = $chain; + $field->readonly = true; + } $fields[] = $field; unset ($field); } @@ -854,15 +872,24 @@ echo $content; if ($values[$this->objectDB->primary] !== $id) throw new Exception (dgettext("domframework", "Can not change the primary key"), 403); + $errorsChain = array (); + if ($this->chainedForeign !== null && + $values[$this->chainedForeign] !== $chain) + $errorsChain[$this->chainedForeign] = + array ("error", dgettext("domframework", + "Can not change the external key")); + $errors = $this->objectDB->verify ($values, $id); - if (count ($errors) == 0) + if (count ($errors) == 0 && count ($errorsChain) == 0) { try { $this->objectDB->update ($id, $values); $renderer = new renderer (); $renderer->flash ("SUCCESS", _("Update done")); - $route->redirect ("/".$this->url_prefix, ""); + $route->redirect ("/". + str_replace ("{chain}", $chain, $this->url_prefix), + ""); } catch (Exception $e) { @@ -875,12 +902,15 @@ echo $content; $renderer = new renderer (); foreach ($errors as $error) $renderer->flash (strtoupper ($error[0]), $error[1]); + foreach ($errorsChain as $error) + $renderer->flash (strtoupper ($error[0]), $error[1]); } // If errors : save them and redirect to the page of editing to be // corrected $_SESSION["domframework"]["routeSQL"]["errors"] = $errors; $_SESSION["domframework"]["routeSQL"]["values"] = $values; - $route->redirect ("/".$this->url_prefix."/$id", ""); + $route->redirect ("/".str_replace ("{chain}", $chain, $this->url_prefix). + "/$id", ""); }); }