From 4b0c282ae4cb2072b5d45ef33b78cf2f1bf33d0d Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 3 Jul 2016 14:57:25 +0200 Subject: [PATCH] =?UTF-8?q?Correction=20et=20adaptation=20du=20module=20'm?= =?UTF-8?q?achineDefault'=20+=20Correction=20recherche=20instantann=C3=A9e?= =?UTF-8?q?=20pour=20'machine'=20et=20'user'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/modules.json | 183 +++++++++++++------- manager/Database.php | 3 +- manager/module/machineDefault.php | 127 +++++++------- manager/module/module.php | 277 ++++++++++++++++++++++++++++++ manager/repo/machine.php | 12 +- view/js/machines-min.js | 17 ++ view/js/machines.js | 30 ++-- view/js/users-min.js | 2 +- view/js/users.js | 2 +- 9 files changed, 510 insertions(+), 143 deletions(-) create mode 100644 manager/module/module.php create mode 100644 view/js/machines-min.js diff --git a/config/modules.json b/config/modules.json index 7723edb..0d3dbc2 100755 --- a/config/modules.json +++ b/config/modules.json @@ -1,27 +1,5 @@ { - - "machineDefault" :[ - "create", - - "link", - "unlink", - - "search", - - "getAll", - "getById", - "getByCode", - "getByName", - - "getClusters", - - "edit", - - "delete" - ], - - "module": { "method": { "description": "Test de l'API", @@ -29,35 +7,6 @@ "parameters": {} }, - "phpunitParams": { - "description": "Méthode utile à phpunit pour le test des paramètres.", - "permissions": [], - "parameters": { - "p1": { "description": "Texte", "type": "text" }, - "p2": { "description": "Entier positif", "type": "id" } - }, - "output": { - "receivedArguments": { "description": "Liste des arguments reçus par la méthode", "type": "array" } - } - }, - - "phpunitOptionalParams": { - "description": "Méthode utile à phpunit pour le test des paramètres optionnels.", - "permissions": [], - "parameters": { - "p1": { "description": "Texte", "type": "text" }, - "p2": { "description": "Texte", "type": "text", "optional": false }, - "p3": { "description": "Entier positif (optionnel)", "type": "id", "optional": true } - } - }, - - "phpunitPermissions": { - "description": "Méthode utile à phpunit pour le test des permissions.", - "permissions": ["a", "b"], - "parameters": {} - }, - - "markdown": { "description": "Retourne une description en markdown des différents modules de l'API", "permissions": [], @@ -65,7 +14,6 @@ "parameters": {} }, - "apiBlueprint": { "description": "Retourne une documentation de l'API au format API Blueprint.", "permissions": [], @@ -111,13 +59,6 @@ - - - - - - - "userDefault": { "create": { @@ -253,7 +194,129 @@ } } + }, + + + "machineDefault": { + "create": { + "description": "Création d'une nouvelle machine.", + "permissions": [], + "parameters": { + "code": { "description": "Code RFID de la machine.", "type": "rfid" }, + "name": { "description": "Nom de la machine.", "type": "varchar(1,30,alphanumeric)" } + }, + "output": { + "id_machine": { "description": "UID de la machine.", "type": "id" }, + "id_cluster": { "description": "UID du groupe de la machine.", "type": "id" } + } + }, + + "link": { + "description": "Ajout d'une machine à un groupe.", + "permissions": [], + "parameters": { + "id_machine": { "description": "UID de la machine.", "type": "id" }, + "id_cluster": { "description": "UID du groupe de la machine.", "type": "id" } + }, + "output": {} + }, + + "unlink": { + "description": "Retrait d'une machine d'un groupe.", + "permissions": [], + "parameters": { + "id_machine": { "description": "UID de la machine.", "type": "id" }, + "id_cluster": { "description": "UID du groupe de la machine.", "type": "id" } + }, + "output": {} + }, + + "search": { + "description": "Recherche une machine par mots-clés.", + "permissions": [], + "parameters": { + "keywords": { "description": "Mots-clés de recherche de machine", "type": "text" } + }, + "output": { + "machines": { "description": "Liste des machines correspondant à la recherche.", "type": "array>" } + } + }, + + "getAll": { + "description": "Retourne la liste de toutes les machines.", + "permissions": [], + "parameters": {}, + "output": { + "machines": { "description": "Liste de toutes les machines.", "type": "array>" } + } + }, + + "getById": { + "description": "Retourne les données d'une machine.", + "permissions": [], + "parameters": { + "id_machine": { "description": "UID de la machine.", "type": "id" } + }, + "output": { + "machine": { "description": "Données de la machine.", "type": "array" } + } + }, + + "getByCode": { + "description": "Retourne les données d'une machine de code RFID donné.", + "permissions": [], + "parameters": { + "code": { "description": "Code RFID de la machine.", "type": "rfid" } + }, + "output": { + "machine": { "description": "Données de la machine.", "type": "array" } + } + }, + + "getByName": { + "description": "Retourne les données d'une machine de nom donné.", + "permissions": [], + "parameters": { + "name": { "description": "Nom de la machine.", "type": "varchar(1,30,alphanumeric)" } + }, + "output": { + "machine": { "description": "Données de la machine.", "type": "array" } + } + }, + + "getClusters": { + "description": "Retourne les groupes d'une machine.", + "permissions": [], + "parameters": { + "id_machine": { "description": "UID de la machine.", "type": "id" } + }, + "output": { + "clusters": { "description": "Liste des groupes de la machine.", "type": "array>" } + } + }, + + "edit": { + "description": "Modifie les attributs d'une machine.", + "permissions": [], + "parameters": { + "id_machine": { "description": "UID de la machine.", "type": "id" }, + "code": { "description": "Code RFID de la machine.", "type": "rfid", "optional": true }, + "name": { "description": "Nom de la machine.", "type": "varchar(1,30,alphanumeric)", "optional": true } + }, + "output": {} + }, + + "delete": { + "description": "Supprime une machine.", + "permissions": [], + "parameters": { + "id_machine": { "description": "UID de la machine.", "type": "id" } + }, + "output": { + "status": { "description": "Status de la suppression.", "type": "boolean" } + } + } + } - } diff --git a/manager/Database.php b/manager/Database.php index 134e899..e6a3125 100755 --- a/manager/Database.php +++ b/manager/Database.php @@ -228,7 +228,7 @@ // On verifie le type pour chaque element foreach($value as $element) // Si erreur dans au moins 1 element, on retourne que c'est incorrect - if( !self::check($elements_type, $element) ) + if( !self::check($elements_type, trim($element) ) ) return false; // Si aucune erreur, on retourne que tout est bon @@ -270,7 +270,6 @@ case 'alphanumeric': case 'user.username': - case 'machine.name': case 'group.name': return $checker && is_string($value) && preg_match('/^[\w-]+$/i', $value); break; diff --git a/manager/module/machineDefault.php b/manager/module/machineDefault.php index e39435c..9e5eb08 100755 --- a/manager/module/machineDefault.php +++ b/manager/module/machineDefault.php @@ -18,20 +18,10 @@ * @return status Retourne si oui ou non, tout s'est bien passe * */ - public static function create($code=null, $name=null){ - /* [1] Normalisation + verification des donnees - =========================================================*/ - $correct_param = Database::check('machine.code', $code); - $correct_param = $correct_param && Database::check('machine.name', $name); + public static function create($params){ + extract($params); - // Si les parametres ne sont pas corrects, on retourne une erreur - if( !$correct_param ) - return array('ModuleError' => ManagerError::ParamError); - - - - - /* [2] Creation de la machine + /* [1] Creation de la machine =========================================================*/ $create_machine = new Repo('machine/create', array($code, $name) ); $id_machine = $create_machine->answer(); @@ -43,7 +33,7 @@ - /* [3] Creation du groupe de meme nom que la machine + /* [2] Creation du groupe de meme nom que la machine =========================================================*/ $create_group = new Repo('cluster/create', array($name) ); $id_group = $create_group->answer(); @@ -55,7 +45,7 @@ - /* [4] Association au groupe + /* [3] Association au groupe =========================================================*/ $assoc_goup = new Repo('cluster/link', array($id_group, $id_machine, clusterRepo::MACHINE_CLASS)); $id_assoc = $assoc_goup->answer(); @@ -66,7 +56,7 @@ - /* [5] Gestion du retour + /* [4] Gestion du retour =========================================================*/ return array( 'ModuleError' => ManagerError::Success, @@ -88,21 +78,13 @@ * Renvoie FALSE si une erreur occure * */ - public static function link($id_cluster, $id_machine){ - /* [1] Normalisation + verification des donnees - =========================================================*/ - $correct_param = Database::check('auto_increment_id', $id_cluster); - $correct_param = $correct_param && Database::check('auto_increment_id', $id_machine); + public static function link($params){ + extract($params); - // Si les parametres ne sont pas corrects, on retourne une erreur - if( !$correct_param ) - return array('ModuleError' => ManagerError::ParamError); - - /* [2] Creation de l'association - =========================================================*/ + /* Creation de l'association */ $link_machine = new Repo('cluster/link', array($id_cluster, $id_machine, clusterRepo::MACHINE_CLASS)); - return $link_machine; + return array(); } @@ -119,21 +101,13 @@ * Renvoie FALSE si une erreur occure * */ - public static function unlink($id_cluster, $id_machine){ - /* [1] Normalisation + verification des donnees - =========================================================*/ - $correct_param = Database::check('auto_increment_id', $id_cluster); - $correct_param = $correct_param && Database::check('auto_increment_id', $id_machine); + public static function unlink($params){ + extract($params); - // Si les parametres ne sont pas corrects, on retourne une erreur - if( !$correct_param ) - return array('ModuleError' => ManagerError::ParamError); - - /* [2] Suppression de l'association - =========================================================*/ + /* Suppression de l'association */ $link_machine = new Repo('cluster/unlink', array($id_cluster, $id_machine, clusterRepo::MACHINE_CLASS)); - return $link_machine; + return array(); } @@ -143,14 +117,16 @@ /* RENVOIE UNE MACHINE EN FONCTION D'UN MOT CLE * - * @keyword Element de recherche + * @keywords Element de recherche * - * @return machines Retourne la liste des machines trouvees + * @return machines Retourne la liste des machines trouvees * */ - public static function search($keyword){ + public static function search($params){ + extract($params); + // On recupere les donnees - $machine = new Repo('machine/search', array($keyword)); + $machine = new Repo('machine/search', array($keywords)); return array( 'machines' => $machine->answer() @@ -186,14 +162,16 @@ * @return machine Machine d'UID donne * */ - public static function getById($id_machine){ + public static function getById($params){ + extract($params); + // On recupere les donnees $request = new Repo('machine/getById', array($id_machine)); $answer = $request->answer(); // Si aucun resultat, on retourne une erreur if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); + return array( 'ModuleError' => ManagerError::NoMatchFound ); return array( @@ -212,14 +190,45 @@ * @return machine Machine de code donne * */ - public static function getByCode($code){ + public static function getByCode($params){ + extract($params); + // On recupere les donnees $request = new Repo('machine/getByCode', array($code)); $answer = $request->answer(); // Si aucun resultat, on retourne une erreur if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); + return array( 'ModuleError' => ManagerError::NoMatchFound ); + + + return array( + 'machine' => $answer + ); + } + + + + + + /* RENVOIE LA MACHINE DE NAME DONNE + * + * @name Name de l'utilisateur en question + * + * @return machine Machine de name donne + * + */ + public static function getByName($params){ + extract($params); + + + // On recupere les donnees + $request = new Repo('machine/getByName', array($name)); + $answer = $request->answer(); + + // Si aucun resultat, on retourne une erreur + if( $answer === false ) + return array( 'ModuleError' => ManagerError::NoMatchFound ); return array( @@ -238,14 +247,16 @@ * @return clusters Groupes de la machine donne * */ - public static function getClusters($id_machine){ + public static function getClusters($params){ + extract($params); + // On recupere les donnees $request = new Repo('machine/getClusters', array($id_machine)); $answer = $request->answer(); // Si aucun resultat, on retourne une erreur if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); + return array( 'ModuleError' => ManagerError::NoMatchFound ); return array( @@ -266,10 +277,8 @@ * @return status Retourne si oui ou non tout s'est bien deroule * */ - public static function edit($id_machine=null, $code=null, $name=null){ - // Si @id_machine n'est pas au bon format, on retourne une erreur - if( !Database::check('auto_increment_id', $id_machine) ) - return array('ModuleError' => ManagerError::ModuleError); + public static function edit($params){ + extract($params); /* [1] On verifie l'existence de la machine @@ -279,7 +288,7 @@ // Si on a recupere aucune machine, on retourne une erreur if( !is_array($machine_data) ) - return array('ModuleError' => ManagerError::ModuleError); + return array('ModuleError' => ManagerError::NoMatchFound); @@ -289,8 +298,8 @@ /* (1) Verification des parametres (si correct et different)*/ $correct_param = array( - 'code' => Database::check('machine.code', $code ) && $machine_data['code'] != $code, - 'name' => Database::check('machine.name', $name ) && $machine_data['name'] != $name + 'code' => !is_null($code) && $machine_data['code'] != $code, + 'name' => !is_null($name) && $machine_data['name'] != $name ); /* (2) Gestion des parametres optionnels */ @@ -325,7 +334,9 @@ * @return status Retourne si oui ou non tout s'est bien deroule * */ - public static function delete($id_machine){ + public static function delete($params){ + extract($params); + // On recupere les donnees $request = new Repo('machine/delete', array($id_machine)); $answer = $request->answer(); diff --git a/manager/module/module.php b/manager/module/module.php new file mode 100644 index 0000000..f7f2254 --- /dev/null +++ b/manager/module/module.php @@ -0,0 +1,277 @@ + ManagerError::Success, + 'ReceivedArguments' => func_get_args() + ); + + } + + /* RENVOIE UNE DESCRIPTION EN MARKDOWN DES MODULES DE L'API + * + * @return markdown Description des modules + * + */ + public static function markdown(){ + /* [1] Récupération de la configuration + =========================================================*/ + // On récupère le fichier et on le parse + $modules = json_decode( ResourceDispatcher::getResource('f/json/modules/conf'), true ); + + // Gestion de l'erreur de parsage + if( $modules == null ) + return array( 'ModuleError' => ManagerError::ParsingFailed ); + + /* [2] Mise en forme de la liste des modules + =========================================================*/ + $markdown = "## Module List\n"; + + foreach($modules as $moduleName=>$moduleData) + $markdown .= "- $moduleName\n"; + + /* [3] Mise en forme des méthodes des modules + =========================================================*/ + $markdown .= "----\n## Method List & Description\n"; + + $count = 1; + foreach($modules as $moduleName=>$moduleData){ + $markdown .= "### $count - '$moduleName' methods\n"; + + foreach($moduleData as $methodName=>$methodData) + $markdown .= "`$methodName` - ".$methodData['description']."\n"; + + $markdown .= "----\n"; + + $count++; + } + + + + /* [n] Gestion du retour + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'headers' => array( + 'Content-Type' => 'text/markdown; charset=utf-8', + 'Content-Transfer-Encoding' => 'binary', + 'Content-Disposition' => 'attachment; filename=NxTIC.apib', + 'Pragma' => 'no-cache', + 'Expires' => '0' + ), + 'body' => $markdown + ); + } + + + /* RENVOIE UNE DOC API_BLUEPRINT DE L'API + * + * @return apiBlueprint Description des modules au format API Blueprint + * + */ + public static function apiBlueprint(){ + /* [0] Récupération de la configuration + =========================================================*/ + // On récupère le fichier et on le parse + $modules = json_decode( ResourceDispatcher::getResource('f/json/modules/conf'), true ); + + // Gestion de l'erreur de parsage + if( $modules == null ) + return array( 'ModuleError' => ManagerError::ParsingFailed ); + + + /* [1] Début du fichier custom + =========================================================*/ + $content = "FORMAT: 1A\n"; + $content .= "HOST: https://socioview.xdrm.io/api/\n\n"; + + $content .= "# NxTIC API\n"; + $content .= "API de la plateforme d'étude **NxTIC**, cette documentation présentera toutes les méthodes accessibles depuis la plateforme elle-même et depuis un logiciel tiers.\n"; + $content .= "La plateforme **NxTIC** est une plateforme d'étude sociale développé par Adrien Marquès _(xdrm-brackets)_ pour un laboratoire de sociologie du _CNRS_.\n"; + $content .= "Elle a pour objectif l'acquisition, la visualisation et l'extraction de données relationnelles.\n"; + $content .= "> Cette plateforme est temporairement hébergée sur https://socioview.xdrm.io/.\n\n"; + + $content .= "## Structure et fonctionnement\n"; + $content .= "Le fonctionnement est basé sur une délégation à 2 niveaux : des __modules__ contenant des __méthodes__.\n\n"; + + $content .= "***\n\n"; + + $content .= "### Paramètres\n"; + $content .= "Tous les paramètres doivent être envoyés en `multipart/form-data`.\n\n"; + + $content .= "1. Chacun formatté en `json` \n"; + $content .= "2. Portant le `nom` défini dans la documentation \n"; + $content .= "3. L'ordre n'a pas d'importance \n"; + $content .= "4. Respectant le `type` défini dans la documentation (cf. [Types](#introduction/types-de-donnees)) \n\n"; + + $content .= "> **Note:** Les `paramètres URI` ne correspondent pas aux paramètres URI. \n"; + $content .= "Ils servent à expliciter les paramètres et leurs types, et correspondent aux variables notées `{nomVar}` dans le corps de la requête.\n\n"; + + $content .= "### Réponses\n\n"; + + $content .= "#### A. Les réponses seront formattées en json et contiendront:\n\n"; + + $content .= "1. `ModuleError` - Le code de l'erreur \n"; + $content .= "2. `ErrorDescription` - La description de l'erreur\n\n"; + + $content .= "****\n\n"; + + $content .= "#### B. Codes `HTTP` et leur signification.\n\n"; + + $content .= "|Status|Code HTTP|\n"; + $content .= "|---|---|\n"; + $content .= "|OK|`200` - Success|\n"; + $content .= "|Erreur|`417` - Erreur quelconque|\n\n"; + + + $content .= "## Types de données\n\n"; + + $content .= "### Types Simples \n"; + $content .= "|Type|Exemple|Description|\n"; + $content .= "|---|---|---|\n"; + $content .= "|`mixed`|`[9,\"a\"]`, `\"a\"`|Type quelconque (peut être simple ou composé)|\n"; + $content .= "|`id`|`10`, `\"23\"`|Nombre entier positif compris entre `0` et `2147483647`|\n"; + $content .= "|`text`|`\"Hello!\"`|Chaine de caractères de longueur quelconque (peut être vide)|\n"; + $content .= "|`mail`|`\"a.b@c.def\"`|Adresse mail avec une syntaxe valide|\n"; + $content .= "|`number`|`0102030405`|Numéro de téléphone valide suivant les formats : `06`, `+336`, `+33 6`|\n"; + $content .= "|`array`|`[1, 3]`|Tableau quelconque non vide|\n"; + $content .= "|`boolean`|`true`, `false`|Booléen|\n"; + $content .= "|`varchar(a,b)`|`\"Hello!\"`|Chaine de caractères de taille comprise entre `a` et `b` (inclus)|\n\n"; + + + $content .= "### Type composé : array\n\n"; + + $content .= "|Type|Sous-Type|Description|\n"; + $content .= "|---|---|---|\n"; + $content .= "|`array`|`mixed`|Tableau contenant uniquement des données de type `mixed`|\n"; + $content .= "|`array`|`id`|Tableau contenant uniquement des données de type `id`|\n"; + $content .= "|`array`|`text`|Tableau contenant uniquement des données de type `text`|\n"; + $content .= "|`array`|`mail`|Tableau contenant uniquement des données de type `mail`|\n"; + $content .= "|`array`|`number`|Tableau contenant uniquement des données de type `number`|\n"; + $content .= "|`array`|`array`|Tableau contenant uniquement des données de type `array`|\n"; + $content .= "|`array`|`boolean`|Tableau contenant uniquement des données de type `boolean`|\n"; + $content .= "|`array`|`varchar(a,b)`|Tableau contenant uniquement des données de type `varchar(a,b)`|\n\n"; + + $content .= "> **Note:** Il est possible de chainer le type `array` autant de fois que nécessaire. \n"; + $content .= "**Ex.:** `array>` - Soit un tableau contenant des tableaux contenant exclusivement des données de type `id`.\n"; + + $content .= "\n\n\n\n\n"; + + + /* [2] Pour chaque module + =========================================================*/ + foreach($modules as $module=>$methods){ + + $content .= "## $module [/$module] \n\n"; + + /* [3] Pour chaque méthode + =========================================================*/ + foreach($methods as $methName=>$method){ + + /* (1) Description */ + $content .= "### $methName [POST /$module/$methName]\n\n"; + $content .= $method['description']."\n"; + if( count($method['permissions']) > 0) + $content .= '> Permissions `'.implode('``', $method['permissions'])."`\n\n"; + + // Liste des paramètres + if( isset($method['parameters']) && count($method['parameters']) > 0 ){ + // On explicite tous les paramètres + $content .= "+ Parameters\n\n"; + foreach($method['parameters'] as $argName=>$argument){ + $optional = isset($argument['optional']) && $argument['optional'] === true; + $content .= " + $argName (${argument['type']}, ".( $optional ? 'optional' : 'required' ).") - ${argument['description']}\n"; + } + $content .= "\n"; + } + + + /* (2) Requête */ + $content .= "+ Request (multipart/form-data; boundary=xxxBOUNDARYxxx)\n\n"; + + // Header + $content .= " + Headers\n\n"; + $content .= " Authorization: Digest {yourAccessToken}\n"; + $content .= " Cache-Control: no-cache\n"; + + if( isset($method['parameters']) && count($method['parameters']) > 0 ){ + + // Body + $content .= " + Body\n\n"; + foreach($method['parameters'] as $argName=>$argument){ + + $content .= " --xxxBOUNDARYxxx\n"; + $content .= " Content-Disposition: form-data; name=\"$argName\"\n"; + $content .= " Content-Type: application/json\n\n"; + $content .= " {".$argName."}\n"; + } + + $content .= " --xxxBOUNDARYxxx--\n"; + + // Schema + $content .= " + Schema\n\n"; + $content .= " {\n"; + foreach($method['parameters'] as $argName=>$argData) + $content .= " \"$argName\": @$argName\n"; + $content .= " }\n"; + } + + + /* (3) Réponse */ + $content .= "\n+ Response 200 (application/json)\n\n"; + if( isset($method['output']) && count($method['output']) > 0 ){ + + // Body + $content .= " + Body\n\n"; + $content .= " {\n"; + foreach($method['output'] as $outName=>$outData) + $content .= " \"$outName\": @$outName\n"; + $content .= " }\n"; + + // Schema + $content .= " + Schema\n\n"; + $content .= " {\n"; + foreach($method['output'] as $outName=>$outData) + $content .= " \"$outName\": @$outName\n"; + $content .= " }\n"; + + // On explicite tous les paramètres + $content .= " + Attributes (object)\n\n"; + foreach($method['output'] as $outName=>$outData) + $content .= " + $outName (${outData['type']}) - ${outData['description']}\n"; + } + + $content .= "\n\n"; + + } + + } + + + return array( + 'ModuleError' => ManagerError::Success, + 'headers' => array( + 'Content-Type' => 'application/octet-stream; charset=utf-8', + 'Content-Transfer-Encoding' => 'binary', + 'Content-Disposition' => 'attachment; filename=NxTIC.apib', + 'Pragma' => 'no-cache', + 'Expires' => '0' + ), + 'body' => $content + ); + } + } + + + +?> diff --git a/manager/repo/machine.php b/manager/repo/machine.php index 2255185..4a4596a 100755 --- a/manager/repo/machine.php +++ b/manager/repo/machine.php @@ -108,7 +108,7 @@ */ public static function getById($id){ // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM machine + $request = Database::getPDO()->prepare("SELECT * FROM machine WHERE id_machine = :id"); // On execute la requete @@ -144,7 +144,7 @@ */ public static function getByCode($code){ // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM machine + $request = Database::getPDO()->prepare("SELECT * FROM machine WHERE code = :code"); @@ -182,7 +182,7 @@ */ public static function getByName($name){ // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM machine + $request = Database::getPDO()->prepare("SELECT * FROM machine WHERE name = :name"); @@ -269,7 +269,7 @@ =========================================================*/ $edit_machine = Database::getPDO()->prepare("UPDATE machine SET code = :code, - name = :name + name = :name WHERE id_machine = :id_machine"); $edit_machine->execute(array( ':code' => $code, @@ -326,7 +326,7 @@ - + @@ -334,4 +334,4 @@ } -?> \ No newline at end of file +?> diff --git a/view/js/machines-min.js b/view/js/machines-min.js new file mode 100644 index 0000000..4e4478d --- /dev/null +++ b/view/js/machines-min.js @@ -0,0 +1,17 @@ +var section={view:{text:'#CONTAINER > section[data-sublink="view"] ',element:document.querySelector('#CONTAINER > section[data-sublink="view"]'),searchbar:document.querySelector('#CONTAINER > section[data-sublink="view"] > .searchbar')},create:{text:'#CONTAINER > section[data-sublink="create"] ',element:document.querySelector('#CONTAINER > section[data-sublink="create"]')},remove:{text:'#CONTAINER > section[data-sublink="remove"] ',element:document.querySelector('#CONTAINER > section[data-sublink="remove"]')}, +edit:{text:'#CONTAINER > section[data-sublink="edit"] ',element:document.querySelector('#CONTAINER > section[data-sublink="edit"]')}}; +if(null!=section.view.element){section.view.link={edit:document.querySelectorAll(section.view.text+".link_edit[data-machine]"),remove:document.querySelectorAll(section.view.text+".link_remove[data-machine]")};section.view.searchbar.addEventListener("keyup",function(b){api.send({path:"machineDefault/search",keywords:section.view.searchbar.value},function(a){if(0==a.ModuleError){for(var b=[],c=0;c article.inline-box[id]"); +for(c=0;c section[data-sublink="view"] ',element:document.querySelector('#CONTAINER > section[data-sublink="view"]'),searchbar:document.querySelector('#CONTAINER > section[data-sublink="view"] > .searchbar')},create:{text:'#CONTAINER > section[data-sublink="create"] ',element:document.querySelector('#CONTAINER > section[data-sublink="create"]')},remove:{text:'#CONTAINER > section[data-sublink="remove"] ',element:document.querySelector('#CONTAINER > section[data-sublink="remove"]')}, edit:{text:'#CONTAINER > section[data-sublink="edit"] ',element:document.querySelector('#CONTAINER > section[data-sublink="edit"]')}}; -if(null!=section.view.element){section.view.link={edit:document.querySelectorAll(section.view.text+".link_edit[data-user]"),remove:document.querySelectorAll(section.view.text+".link_remove[data-user]")};section.view.searchbar.addEventListener("keyup",function(b){api.send({path:"userDefault/search",data:[section.view.searchbar.value]},function(a){if(0==a.ModuleError&&(console.log(a.users.length),0==a.ModuleError)){for(var b=[],c=0;c article.inline-box[id]");for(c=0;c