Skip to content
Snippets Groups Projects
Select Git revision
  • 3166b2335396e2f6793e47d3d1569f1c83e2b6ee
  • main default protected
2 results

Categorie.php

Blame
  • ControleurObjet.php 5.93 KiB
    <?php
    
    class ControleurObjet
    {
        /**
         * Affiche la page de cration d'un objet et se charge également de sa création.
         * @return string
         */
        public static function createObject(): string
        {
            $createdObject = [];
            // Si reçoie une requête POST pour créer un objet et qu'on a plus d'une entrée
            if (!empty($_POST["objectName"]) && count($_POST) > 1) {
                $columns = [];
                foreach ($_POST as $index => $value) {
                    if (!in_array($index, ["action", "objectName"])) {
                        $columns[$index] = $value;
                    }
                }
    
                $createdObject = Objet::addObject($_POST["objectName"], $columns);
                if ($createdObject["status"] === "fail") {
                    $createdObject["status"] = "danger"; // Pour le style Bootstrap
                }
            }
    
            return view('formulaire-creation-objet', [
                'pageTitle' => 'Créer un objet',
                'insertMessage' => $createdObject
            ]);
        }
    
        /**
         * Retourne une liste JSON de la description de la table
         * @return string
         */
        public static function describeTable(): string
        {
            if (!empty($_GET["tableName"])) {
                return json_encode(Objet::describeObject($_GET["tableName"]));
            } else {
                return json_encode([
                    "status" => "fail",
                    "message" => "Veuillez spécifier un nom de table!",
                    "columns" => []
                ]);
            }
        }
    
        public static function modifyObject(): string
        {
            if (!empty($_GET["tableName"]) && !empty($_GET["idName"]) && !empty($_GET["idValue"])) {
                $object = Objet::getObject($_GET["tableName"], ['name' => $_GET["idName"], 'value' => $_GET["idValue"]]);
                $ojectTableDesc = Objet::describeObject($_GET["tableName"]);
    
                $sqlToInputType = [
                    "int" => "number",
                    "varchar" => "text",
                    "date" => "date"
                ];
    
                $properties = [];
                foreach ($ojectTableDesc['columns'] as $column) {
                    // On vérifie que la colonne en question n'est pas une clé primaire
                    // Et qu'elle ne possède pas l'indicateur d'interdiction de modification "%!update%" en commentaire
                    if ($column['Key'] !== "PRI" && !in_array("%!update%", explode(',', $column["Comment"]))) {
                        $input["name"] = $column["Field"];
    
                        // Ici on transforme la CamelCase en Camel case
                        $input["showName"] = ucfirst(