From ad8db73e1b66935d234eca449b5491c80c3ed487 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 27 May 2016 12:50:32 +0200 Subject: [PATCH] =?UTF-8?q?Impl=C3=A9mentation=20module=20'subject/getFrie?= =?UTF-8?q?nds'=20qui=20renvoie=20tout=20les=20contacts=20renseign=C3=A9s?= =?UTF-8?q?=20par=20un=20sujet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/modules.json | 8 +++ manager/lightdb.php | 1 + manager/module/subject.php | 99 ++++++++++++++++++++++++++++++-------- view/input.php | 13 +++-- view/js/input-min.js | 2 +- view/js/input.js | 6 +-- 6 files changed, 100 insertions(+), 29 deletions(-) diff --git a/config/modules.json b/config/modules.json index 87d4e10..1c79509 100755 --- a/config/modules.json +++ b/config/modules.json @@ -211,6 +211,14 @@ } }, + "getFriends": { + "description": "Retourne les informations de tous les contacts renseignés par un sujet d'enquête.", + "permissions": ["admin"], + "parameters": { + "subject_id": { "description": "Identifiant du sujet duquel on veut les amis.", "type": "id" } + } + }, + "getAll": { "description": "Retourne les informations de tous les sujets.", "permissions": ["admin"], diff --git a/manager/lightdb.php b/manager/lightdb.php index 08938b2..3ab1d02 100755 --- a/manager/lightdb.php +++ b/manager/lightdb.php @@ -79,6 +79,7 @@ + /* RETOURNE LA LISTE DES INDEX * * @i Index pour lequel on veut la ligne et le hash diff --git a/manager/module/subject.php b/manager/module/subject.php index 72181e4..78daa01 100644 --- a/manager/module/subject.php +++ b/manager/module/subject.php @@ -32,10 +32,11 @@ /* (2) On récupère tous les sujets */ foreach($ids as $id){ $sub = $db->fetch($id)['subject']; - $sub['creation'] = date('d/m/Y H:i:s', $sub['creation']); + $sub['creation'] = date('d/m/Y H:i:s', $sub['creation']); $subjects[$id] = $sub; } + $db->close(); /* [2] On récupére la liste des sujets pour PHONE @@ -43,11 +44,9 @@ /* (1) On initialise et ouvre la bd */ $db = new lightdb('phone_db', __ROOT__.'/src/dynamic/'); $ids = array_keys( $db->index() ); - - /* (2) On ferme la bd */ $db->close(); - /* (3) Si un des sujets de 'survey' est dans PHONE, on ajoute la mention */ + /* (2) Si un des sujets de 'survey' est dans PHONE, on ajoute la mention */ foreach($subjects as $id=>$data) if( in_array($id, $ids) ) // Si dans phone $subjects[$id]['phone'] = true; @@ -60,11 +59,9 @@ /* (1) On initialise et ouvre la bd */ $db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/'); $ids = array_keys( $db->index() ); - - /* (2) On ferme la bd */ $db->close(); - /* (3) Si un des sujets de 'survey' est dans FACBEOOK, on ajoute la mention */ + /* (2) Si un des sujets de 'survey' est dans FACBEOOK, on ajoute la mention */ foreach($subjects as $id=>$data) if( in_array($id, $ids) ) // Si dans facebook $subjects[$id]['facebook'] = true; @@ -81,6 +78,73 @@ + /* RETOURNE LA LISTE DE TOUS LES AMIS D'UN SUJET + * + * @subject_id Identifiant du sujet d'enquête + * + * @return subjects Tableau contenant les informations de tous les utilisateurs + * + */ + public static function getFriends($params){ + extract($params); + + + // Contiendra les sujets + $subjects = array(); + + /* [1] On récupére la liste des sujets + =========================================================*/ + /* (1) On initialise et ouvre la bd */ + $db = new lightdb('survey_db', __ROOT__.'/src/dynamic/'); + $fetch = $db->fetch($subject_id); + $db->close(); + + /* (2) Si on trouve personne, on renvoie une erreur */ + if( $fetch === false ) + return array( 'ModuleError' => ManagerError::ModuleError ); + + /* (3) On enregistre ses contacts s'il en a */ + if( isset($fetch['contacts']) ) + $subjects = array_merge($subjects, $fetch['contacts']); + + + /* [2] On récupére la liste des contacts saisis dans PHONE + =========================================================*/ + /* (1) On initialise et ouvre la bd */ + $db = new lightdb('phone_db', __ROOT__.'/src/dynamic/'); + $fetch = $db->fetch($subject_id); + $db->close(); + + /* (2) Si on trouve des contacts, on les ajoute */ + if( $fetch !== false && isset($fetch['contacts']) ) + $subjects = array_merge($subjects, $fetch['contacts']); + + + + + /* [3] On récupére la liste des sujets pour FACEBOOK + =========================================================*/ + /* (1) On initialise et ouvre la bd */ + $db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/'); + $fetch = $db->fetch($subject_id); + $db->close(); + + /* (2) Si on trouve des contacts, on les ajoute */ + if( $fetch !== false && isset($fetch['contacts']) ) + $subjects = array_merge($subjects, $fetch['contacts']); + + + /* [4] Gestion du retour + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'subjects' => $subjects + ); + } + + + + /* CREATION D'UN SUJET * @@ -105,19 +169,18 @@ // 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/'); - + // On crée notre sujet $data = array( 'subject' => array( 'id' => $newId, 'name' => $name, 'creation' => time() )); + /* [2] On crée le sujet dans SURVEYS + =========================================================*/ + /* (1) On initialise et ouvre la bd */ + $db = new lightdb('survey_db', __ROOT__.'/src/dynamic/'); $db->insert( $newId, $data ); - $db->close(); @@ -130,7 +193,6 @@ fclose($funiq); - /* [2] Gestion du retour =========================================================*/ return array( @@ -231,6 +293,7 @@ $subjects[$id] = $sub; } } + $db->close(); /* [2] On récupére la liste des sujets pour PHONE @@ -238,11 +301,9 @@ /* (1) On initialise et ouvre la bd */ $db = new lightdb('phone_db', __ROOT__.'/src/dynamic/'); $ids = array_keys( $db->index() ); - - /* (2) On ferme la bd */ $db->close(); - /* (3) Si un des sujets de 'survey' est dans PHONE, on ajoute la mention */ + /* (2) Si un des sujets de 'survey' est dans PHONE, on ajoute la mention */ foreach($subjects as $id=>$data) if( in_array($id, $ids) ) // Si dans phone $subjects[$id]['phone'] = true; @@ -255,11 +316,9 @@ /* (1) On initialise et ouvre la bd */ $db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/'); $ids = array_keys( $db->index() ); - - /* (2) On ferme la bd */ $db->close(); - /* (3) Si un des sujets de 'survey' est dans FACBEOOK, on ajoute la mention */ + /* (2) Si un des sujets de 'survey' est dans FACBEOOK, on ajoute la mention */ foreach($subjects as $id=>$data) if( in_array($id, $ids) ) // Si dans facebook $subjects[$id]['facebook'] = true; diff --git a/view/input.php b/view/input.php index d764957..cf4d11b 100755 --- a/view/input.php +++ b/view/input.php @@ -4,6 +4,7 @@ use \manager\ManagerError; use \manager\ResourceDispatcher; use \manager\Repo; + debug(); ?> @@ -84,9 +85,10 @@ if( $getAllR->error == ManagerError::Success ) +       @@ -209,10 +211,11 @@ if( $getAllR->error == ManagerError::Success ) - +       + diff --git a/view/js/input-min.js b/view/js/input-min.js index aed7237..d51442d 100644 --- a/view/js/input-min.js +++ b/view/js/input-min.js @@ -6,7 +6,7 @@ function pDynamicUpdate(c){var b=c instanceof Element,a=b&&"INPUT"==c.tagName&&" pFicheManager.storageToFields();pMatriceManager.storageToFields();(a||b)&&pContactManager.storageToFields()}var fSubjectManager,fContactManager,fMiniManager,fFicheManager,fMatriceManager; function fDynamicUpdate(c){var b=c instanceof Element,a=b&&"INPUT"==c.tagName&&"submit"==c.type,e=b&&"SPAN"==c.tagName&&("f_nav-mini"==c.parentNode.id||"f_nav-fiche"==c.parentNode.id),b=b&&"SPAN"==c.tagName&&"f_nav-contact"==c.parentNode.id;if(!a&&!e&&!b&&!0!==c)return!1;console.log("> dynamic update");fMiniManager.fieldsToStorage();fFicheManager.fieldsToStorage();fContactManager.fieldsToStorage();fMatriceManager.fieldsToStorage();fFicheManager.sync();fMiniManager.sync();fMiniManager.storageToFields(); fFicheManager.storageToFields();fMatriceManager.storageToFields();(a||b)&&fContactManager.storageToFields()} -api.send({path:"subject/getAll"},function(c){if(0!=c.ModuleError)return Notification.error("Erreur",c.ModuleError),!1;lsi.createDataset("all-subjects");lsi["import"]("all-subjects",c.subjects);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= +api.send({path:"subject/getFriends",subject_id:1},function(c){if(0!=c.ModuleError)return Notification.error("Erreur",c.ModuleError),!1;lsi.createDataset("all-subjects");lsi["import"]("all-subjects",c.subjects);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"]'),$('[data-sublink="phone"] article.subject-panel [data-name="submit"]'));pSubjectManager.attach();pContactManager=new inputPhoneContact($('[data-sublink="phone"] article.contact-panel'),$('[data-sublink="phone"] #p_nav-contact'));pContactManager.attach(pDynamicUpdate); pMiniManager=new inputPhoneMini($('[data-sublink="phone"] article.mini-relation-panel'),$('[data-sublink="phone"] #p_nav-mini'));pMiniManager.attach(pDynamicUpdate);pFicheManager=new inputPhoneFiche($('[data-sublink="phone"] article.relation-panel'),$('[data-sublink="phone"] #p_nav-fiche'));pFicheManager.attach(pDynamicUpdate);pMatriceManager=new inputPhoneMatrice($('[data-sublink="phone"] article.matrice-panel'));pMatriceManager.attach(pDynamicUpdate);var b=new ShortcutManager;b.append("s+n+a+k+e", function(){pMatriceManager.snake()});b.listen();$('[data-sublink="phone"] input#p_call_log-import[type="file"]').addEventListener("click",function(a){a.target.value=null},!1);$('[data-sublink="phone"] input#p_call_log-import[type="file"]').addEventListener("change",function(a){a={path:"upload/call_log",phone_number:$('[data-sublink="phone"] #p_subject_phone_number').value,file:a.target.files[0]};api.send(a,function(a){console.log(a);var b=null;if(0!=a.ModuleError)9==a.ModuleError?Notification.error("Erreur", diff --git a/view/js/input.js b/view/js/input.js index 52bcc9d..a57f1f5 100644 --- a/view/js/input.js +++ b/view/js/input.js @@ -193,9 +193,9 @@ function fDynamicUpdate(target){ -/* [3] On récupère la liste des sujets +/* [3] On récupère la liste des "amis" =========================================================*/ -api.send({ path: 'subject/getAll' }, function(allSubjectsResponse){ +api.send({ path: 'subject/getFriends', subject_id: 1 }, function(allSubjectsResponse){ // Si erreur if( allSubjectsResponse.ModuleError != 0){ @@ -203,7 +203,7 @@ api.send({ path: 'subject/getAll' }, function(allSubjectsResponse){ return false; } - // On enregistre la liste des sujets existants + // On enregistre la liste des amis existants lsi.createDataset('all-subjects'); lsi.import('all-subjects', allSubjectsResponse.subjects);