Gestion de la création de sujet + refonte min

This commit is contained in:
xdrm-brackets 2016-05-27 10:39:39 +02:00
parent 664434ee26
commit 66564f87db
22 changed files with 72 additions and 236 deletions

View File

@ -211,15 +211,6 @@
}
},
"getById": {
"description": "Retourne les informations d'un sujet.",
"permissions": ["admin"],
"parameters": {
"id_subject": { "description": "UID du sujet recherche.", "type": "id" }
}
},
"getAll": {
"description": "Retourne les informations de tous les sujets.",
"permissions": ["admin"],
@ -231,11 +222,7 @@
"description": "Creation d'un nouveau sujet.",
"permissions": ["admin"],
"parameters": {
"username" : { "description": "Pseudo du sujet, 30 caracteres maximum.", "type": "varchar(0,30)" },
"firstname" : { "description": "Prénom du sujet, 30 caracteres maximum.", "type": "varchar(0,30)" },
"lastname" : { "description": "Nom du sujet, 30 caracteres maximum.", "type": "varchar(0,30)" },
"id_facebook": { "description": "Id facebook du sujet (optionnel).", "type": "id", "optional": true },
"number" : { "description": "Numéro de téléphone du sujet (optionnel).", "type": "number", "optional": true }
"name" : { "description": "Pseudo du sujet, 50 caracteres maximum.", "type": "varchar(1,50)" }
}
},

View File

@ -51,7 +51,7 @@
/* [1] On récupère le dictionnaire des valeurs
=========================================================*/
/* (1) On récupère le fichier */
$dict = ResourceDispatcher::getResource('f/json/dictionary/dy/phone');
$dict = ResourceDispatcher::getResource('f/json/dictionary/dy');
/* (2) Si une erreur pour le fichier de conf */
if( $dict === false )

View File

@ -18,7 +18,7 @@
*
*/
private static function loadDictionary(){
$dict = ResourceDispatcher::getResource('f/json/dictionary/dy/phone');
$dict = ResourceDispatcher::getResource('f/json/dictionary/dy');
$dict = json_decode( $dict, true );

View File

@ -94,8 +94,8 @@
else
$output .= "\"".$dataset[$col[0]][$col[1]]."\"";
/* (6) Si la valeur n'est pas composée, on récupère la valeur */
elseif( !$composed )
/* (6) Si la valeur n'est pas composée, on récupère la valeur */
elseif( !$composed && !is_array($dataset[$col[0]]) )
$output .= "\"".$dataset[$col[0]]."\"";
}
@ -151,7 +151,7 @@
/* [0] On récupère le dictionnaire
=========================================================*/
$dict = ResourceDispatcher::getResource('f/json/dictionary/dy/phone');
$dict = ResourceDispatcher::getResource('f/json/dictionary/dy');
/* (2) Si une erreur pour le fichier de conf */
if( $dict === false )

View File

@ -25,7 +25,7 @@
/* [0] On récupère l'id unique actuel
=========================================================*/
$funiq = fopen( __ROOT__.'/src/dynamic/phone/uniqid', 'r+' );
$funiq = fopen( __ROOT__.'/src/dynamic/uniqid', 'r+' );
flock($funiq, LOCK_EX); // On verrouille le fichier
$uniqid = fgets( $funiq );
@ -235,7 +235,7 @@
/* [0] On récupère l'id unique actuel
=========================================================*/
$funiq = fopen( __ROOT__.'/src/dynamic/phone/uniqid', 'r+' );
$funiq = fopen( __ROOT__.'/src/dynamic/uniqid', 'r+' );
flock($funiq, LOCK_EX); // On verrouille le fichier
$uniqid = fgets( $funiq );

View File

@ -11,35 +11,6 @@
/* RETOURNE LE SUJET D'ID DONNE
*
* @id_subject<int> UID du sujet en question
*
* @return subject<Array> Tableau contenant les informations du sujet
*
*/
public static function getById($params){
extract($params);
/* [1] On recupere les donnees du sujet
=========================================================*/
$getUser = new Repo('subject/getById', array($id_subject));
$subject_data = $getUser->answer();
// Si aucun utilisateur n'est trouve
if( $subject_data === false ) return array('ModuleError' => ManagerError::ModuleError);
/* [2] Gestion du retour
=========================================================*/
return array(
'ModuleError' => ManagerError::Success,
'subject' => $subject_data
);
}
/* RETOURNE LA LISTE DE TOUS LES SUJETS
*
@ -47,13 +18,10 @@
*
*/
public static function getAll(){
/* [1] On recupere les donnees des utilisateurs
/* [1] On recupere les donnees des sujets
=========================================================*/
$getUsers = new Repo('subject/getAll');
$subjects_data = $getUsers->answer();
// Si aucun utilisateur n'est trouve
if( $subjects_data === false ) return array('ModuleError' => ManagerError::ModuleError);
/* [2] Gestion du retour
=========================================================*/
@ -69,11 +37,7 @@
/* CREATION D'UN SUJET
*
* @username<String> Pseudo du sujet
* @firstname<String> Prénom du sujet
* @lastname<String> Nom du sujet
* @id_facebook<int> Id facebook du sujet (optionnel)
* @number<String> Numéro de téléphone du sujet (optionnel)
* @name<String> Pseudo du sujet
*
* @return id_subject<int> Renvoie l'id du sujet cree
*
@ -81,24 +45,50 @@
public static function create($params){
extract($params);
/* [0] Verification et formattage des INPUT
=========================================================*/
$id_facebook = !is_null($id_facebook) ? (int) $id_facebook : null;
$number = !is_null($number) ? Database::formatNumber($number) : null;
/* [1] Creation du sujet
/* [1] On récupère l'id unique actuel
=========================================================*/
$create = new Repo('subject/create', array($username, $firstname, $lastname, $id_facebook, $number));
$created_id = $create->answer();
$funiq = fopen( __ROOT__.'/src/dynamic/uniqid', 'r+' );
flock($funiq, LOCK_EX); // On verrouille le fichier
$uniqid = fgets( $funiq );
if( !is_numeric($uniqid) )
$uniqid = 0;
// Décalage à appliquer à tous les ids
$newId = intval($uniqid) + 1;
/* [2] On crée le sujet dans SURVEYS
=========================================================*/
/* (1) On initialise et ouvre la bd */
$db = new lightdb('survey_db', __ROOT__.'/src/dynamic/');
$data = array( 'subject' => array(
'id' => $newId,
'name' => $name,
'creation' => time()
));
$db->insert( $newId, $data );
$db->close();
/* [3] On met à jour le nouvel ID unique
=========================================================*/
rewind($funiq); // On revient au début du fichier
fwrite($funiq, $newId); // On écrit la nouvelle valeur (forcément plus grande)
flock($funiq, LOCK_UN); // On débloque le verrou
fclose($funiq);
// Si erreur de creation, on retourne une erreur
if( $created_id === false ) return array( 'ModuleError' => ManagerError::ModuleError );
/* [2] Gestion du retour
=========================================================*/
return array(
'ModuleError' => ManagerError::Success,
'id_subject' => $created_id
'id_subject' => $newId
);
}
@ -239,8 +229,9 @@
if( !isset($subjects[$id]) )
$subjects[$id] = $sub;
$subjects[$id]['survey'] = true;
$subjects[$id]['name'] = $sub['name'];
$subjects[$id]['survey'] = true;
$subjects[$id]['name'] = $sub['name'];
$subjects[$id]['creation'] = date('d/m/Y H:i:s', $sub['creation']);
}
}

View File

View File

@ -1,147 +0,0 @@
{
"logs": {
"direction": { "0": "INCOMING", "1": "OUTGOING", "2": "MISSED" },
"type": { "0": "PHONE", "1": "SMS" }
},
"contacts": {
"sexe": { "0":"Homme", "1":"Femme" },
"age": {
".": "NA",
"0": "5 à 10", "1": "10 à 15", "2": "15 à 20", "3": "20 à 25", "4": "25 à 30",
"5": "30 à 35", "6": "35 à 40", "7": "40 à 45", "8": "45 à 50", "9": "50 à 55",
"10": "55 à 60", "11": "60 à 65", "12": "65 à 70", "13": "70 à 75", "14": "75 à 80",
"15": "80 à 85", "16": "85 à 90", "17": "90 à 95", "18": "95 à 100"
},
"studies1": {
".": "NA",
"0": "Inconnu",
"1": "< BAC",
"2": "BAC",
"3": "BAC+2",
"4": "BAC+3",
"5": "BAC+4 et plus"
},
"studies2": {
".": "NA",
"0": "Inconnue",
"01": "Pas de scolarité",
"02": "Aucun diplôme mais scolarité jusqu'en école primaire ou au collège",
"03": "Aucun diplôme mais scolarité au-delà du collège",
"04": "Certificat d'études primaires (CEP)",
"05": "BEPC, brevet élémentaire, brevet des collèges",
"06": "Certificat d'aptitudes professionnelles (CAP), brevet de compagnon, y compris CAPA",
"07": "Brevet d'études professionnelles (BEP), y compris BEPA et diplômes agricoles (BAA, BPA) Diplômes sociaux (aide-soignante, auxiliaire de puériculture, travailleuse familiale)",
"08": "Baccalauréat général, brevet supérieur BAC ( L, ES, S ou A, B , C, D, D, E )",
"09": "Bac technologique ou professionnel, brevet professionnel ou de technicien BAC (STI, STL, SMS, STT ou F, G, H) BEC, BEI, BEH, capacité en droit Brevet de technicien agricole (BTA)",
"10": "Diplôme universitaire de 1er cycle BTS, DUT, DEUG Diplôme des professions sociales ou de santé, d'infirmier(ère) Diplôme universitaire propédeutique, DUEL, DUES, DEUG, PCEM",
"11": "Diplôme universitaire de 2ème ou 3ème cycle MASTER, DOCTORAT (y compris médecine, pharmacie, dentaire), Maîtrise, DEA, DESS, CAPES, CAPET, agrégation Diplôme d'ingénieur, d'une grande école, etc."
},
"job": {
".": "NA",
"10": "Agriculteurs exploitants (Agriculteurs, maraîchers, viticulteurs…)",
"21": "Artisans (Maçons, électriciens, couturiers, boulangers, garagistes, coiffeurs…)",
"22": "Commerçants et assimilés (Commerçants en détail ou en gros, buralistes, cafetiers, agents immobiliers…)",
"23": "Chefs d'entreprise de 10 salariés ou plus",
"31": "Professions libérales et assimilés (Médecins, avocats, notaires, architectes libéraux…)",
"32": "Cadres de la fonction publique, professions intellectuelles et artistiques (Personnels administratifs de catégorie A, professeurs de lenseignement secondaire ou supérieur, médecins hospitaliers, artistes…)",
"36": "Cadres d'entreprise (Cadres administratifs, cadres commerciaux, ingénieurs…)",
"41": "Professions intermédiaires de l'enseignement, de la santé, de la fonction publique et assimilés (Personnels administratifs de catégorie B, instituteurs, infirmiers, travailleurs sociaux…)",
"46": "Professions intermédiaires administratives et commerciales des entreprises (Comptables, chargés de clientèles…)",
"47": "Techniciens (Techniciens détudes, techniciens de contrôle, dessinateurs en bâtiment, géomètres…)",
"48": "Contremaîtres, agents de maîtrise (Conducteurs de travaux, chefs déquipe…)",
"51": "Employés de la fonction publique (Personnels de catégorie C, agents administratifs, agents de service…)",
"54": "Employés administratifs d'entreprise (Secrétaires, agents daccueil…)",
"55": "Employés de commerce (Vendeurs, caissiers…)",
"56": "Personnels des services directs aux particuliers (Serveurs, coiffeurs, assistantes maternelles…)",
"61": "Ouvriers qualifiés de type industriel ou artisanal (Mécaniciens, chauffeurs, cuisiniers…)",
"66": "Ouvriers non qualifiés de type industriel ou artisanal (Ouvrier de production, manœuvres…)",
"69": "Ouvriers agricoles (Bergers, ouvriers de la viticulture, bûcherons, ouvrier forestiers…)",
"71": "Anciens agriculteurs exploitants",
"72": "Anciens artisans, commerçants, chefs d'entreprise",
"73": "Anciens cadres",
"74": "Anciennes professions intermédiaires",
"75": "Anciens employés",
"76": "Anciens ouvriers",
"81": "Chômeurs n'ayant jamais travaillé",
"82": "Inactifs divers (autres que retraités)"
},
"context": {
"0": "De la même famille",
"1": "Grandi ensemble",
"2": "Par mon mari/ma femme/relation amoureuse",
"3": "Par mes parents",
"4": "Par mes enfants",
"5": "Par un ami",
"6": "Comme voisin",
"7": "Par dautres membres de la famille",
"8": "Etudes",
"9": "Etudes supérieures",
"10": "Au travail",
"11": "Internet",
"12": "Association",
"13": "Autre"
},
"famsit": {
"0": "Seul",
"1": "Seul avec enfant(s)",
"2": "En couple sans enfants",
"3": "En couple avec enfants"
},
"reltype": {
"0": "Père, mère ou équivalent",
"1": "Frère ou soeur",
"2": "Autre membre de la famille",
"3": "Relation amoureuse",
"4": "Collègue",
"5": "Voisin",
"6": "Ami proche",
"7": "Ami",
"8": "Relation de service (médecin, ...)",
"9": "Inconnu"
},
"dist": {
"0": "- de 5 minutes",
"1": "de 5 à 15 minutes",
"2": "de 15 à 60 minutes",
"3": "+ d'une heure"
},
"freq": {
"0": "plusieurs fois par semaine",
"1": "1 fois par semaine",
"2": "1 fois par mois",
"3": "1 fois par an ou moins",
"4": "Jamais"
},
"connect": {
"0": "Oui",
"1": "Non"
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"1":{"line":0,"hash":"b4dcd4020e3843bda4df499b6af29099c0dd5f47"},"137":{"line":1,"hash":"3b48331c50740299531e82effd3126d2ffc12e6a"}}
[]

View File

@ -1 +0,0 @@
1261

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"1":{"line":0,"hash":"423bda798fbf4363a61d945e936c6a11ce9ac057"},"69":{"line":1,"hash":"785691cf7be9f8b18eb1a298db3187bdc86c4884"},"205":{"line":2,"hash":"0a296a89a05509be912fefda7fdcc2692a244208"},"273":{"line":3,"hash":"1b9c3317ae25f49f6cfdee6aa34fcbc381c3a7a7"},"341":{"line":4,"hash":"8857d8b1c8e7fbcb455847bdf3c9fd34e34ef217"},"409":{"line":5,"hash":"15dfb20042dbaaeafacf13224706bf5cc4bbb7e0"}}
[]

View File

@ -0,0 +1 @@
{"subject":{"id":1,"name":"Jean-Michel","creation":1464337747}}

View File

@ -1 +1 @@
[]
{"1":{"line":0,"hash":"b7ec0c5b00bda3ab9b6924938a247bbfe8b46fa2"}}

1
src/dynamic/uniqid Normal file
View File

@ -0,0 +1 @@
1

Binary file not shown.

View File

@ -0,0 +1,9 @@
<?php
header("Content-Type: application/zip; charset=utf-8");
header("Content-Disposition: attachment; filename=export_27_05_2016_.zip");
header("Pragma: no-cache");
header("Expires: 0");
readfile('/var/www/socioview/tmp/content_5747fcf4ce503.php');
unlink('/var/www/socioview/tmp/content_5747fcf4ce503.php');
unlink(__FILE__);
?>

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
var sField=$("#search-field"),sSubmit=$("#search-subject"),sList=$('section[data-sublink="survey"] ul[data-list]');
sSubmit.addEventListener("click",function(b){api.send({path:"subject/search",name:sField.value},function(a){if(0!=a.ModuleError)return Notification.error("Erreur","La recherche a \u00e9chou\u00e9."),!1;console.log(a);var c="",b;for(b in a.results)c+="<li data-element data-id='"+b+"'>",c+="<div data-user><span>SUJET</span></div>",c+="<div> <span data-prefix='Identifiant'><span class='flag'>"+b+"</span></span> </div>",c+="<div> <span data-prefix='Nom'>"+a.results[b].name+"</span> </div>",c+="<div> <span><input type='checkbox' id='s_"+
b+"' "+(null!=a.results[b].survey?"checked":"")+" disabled><label for='s_"+b+"'>ResTIC</label>",c+="</span> </div>",c+="<div> <span><input type='checkbox' id='s_"+b+"' "+(null!=a.results[b].facebook?"checked":"")+" disabled><label for='s_"+b+"'>Facebook</label>",c+="</span> </div>",c+="<div> <span><input type='checkbox' id='s_"+b+"' "+(null!=a.results[b].phone?"checked":"")+" disabled><label for='s_"+b+"'>Cellulaire</label>",c+="</span> </div>",c+="</li>";sList.innerHTML=c})},!1);
var pSubjectManager,pContactManager,pMiniManager,pFicheManager,pMatriceManager;
sSubmit.addEventListener("click",function(b){api.send({path:"subject/search",name:sField.value},function(a){if(0!=a.ModuleError)return Notification.error("Erreur","La recherche a \u00e9chou\u00e9."),!1;console.log(a);var c="",b;for(b in a.results)c+="<li data-element data-id='"+b+"'>",c+="<div data-user><span>SUJET</span></div>",c+="<div> <span><input type='text' readonly style='text-align: center' class='flag' value='"+b+"'></span> </div>",c+="<div> <span data-prefix='Nom'>"+a.results[b].name+"</span> </div>",
c+="<div> <span data-prefix='Cr\u00e9ation'>"+a.results[b].creation+"</span> </div>",c+="<div> <span><input type='checkbox' id='s_"+b+"' "+(null!=a.results[b].survey?"checked":"")+" disabled><label for='s_"+b+"'>ResTIC</label>",c+="</span> </div>",c+="<div> <span><input type='checkbox' id='s_"+b+"' "+(null!=a.results[b].facebook?"checked":"")+" disabled><label for='s_"+b+"'>Facebook</label>",c+="</span> </div>",c+="<div> <span><input type='checkbox' id='s_"+b+"' "+(null!=a.results[b].phone?"checked":
"")+" disabled><label for='s_"+b+"'>Cellulaire</label>",c+="</span> </div>",c+="</li>";sList.innerHTML=c})},!1);var pSubjectManager,pContactManager,pMiniManager,pFicheManager,pMatriceManager;
function pDynamicUpdate(b){var a=b instanceof Element,c=a&&"INPUT"==b.tagName&&"submit"==b.type,g=a&&"SPAN"==b.tagName&&("p_nav-mini"==b.parentNode.id||"p_nav-fiche"==b.parentNode.id),a=a&&"SPAN"==b.tagName&&"p_nav-contact"==b.parentNode.id;if(!c&&!g&&!a&&!0!==b)return!1;console.log("> dynamic update");pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();pContactManager.fieldsToStorage();pMatriceManager.fieldsToStorage();pFicheManager.sync();pMiniManager.sync();pMiniManager.storageToFields();
pFicheManager.storageToFields();pMatriceManager.storageToFields();(c||a)&&pContactManager.storageToFields()}
include("/js/includes/input-phone-subject-min.js",function(){include("/js/includes/input-phone-contact-min.js",function(){include("/js/includes/input-phone-mini-min.js",function(){include("/js/includes/input-phone-fiche-min.js",function(){include("/js/includes/input-phone-matrice-min.js",function(){pSubjectManager=new inputPhoneSubject($('[data-sublink="phone"] article.subject-panel [data-name="tmp_id"]'),$('[data-sublink="phone"] article.subject-panel [data-name="subject_id"]'),$('[data-sublink="phone"] article.subject-panel [data-name="number"]'),

View File

@ -33,10 +33,12 @@ sSubmit.addEventListener('click', function(e){
htmlContent += "<div data-user><span>SUJET</span></div>";
htmlContent += "<div> <span data-prefix='Identifiant'><span class='flag'>"+id+"</span></span> </div>";
htmlContent += "<div> <span><input type='text' readonly style='text-align: center' class='flag' value='"+id+"'></span> </div>";
htmlContent += "<div> <span data-prefix='Nom'>"+response.results[id].name+"</span> </div>";
htmlContent += "<div> <span data-prefix='Création'>"+response.results[id].creation+"</span> </div>";
htmlContent += "<div> <span><input type='checkbox' id='s_"+id+"' "+((response.results[id].survey!=null)?'checked':'')+" disabled><label for='s_"+id+"'>ResTIC</label>";
htmlContent += "</span> </div>";