Tableau contenant les données du sujet * @contacts Tableau contenant les données des contacts * @mini Tableau contenant les données des mini fiches relation * @fiches Tableau contenant les données des fiches relation * * @return subject_id Retourne l'id sujet de l'enquête * */ public static function phone($params){ extract($params); /* [1] On crée le sujet de l'enquête =========================================================*/ /* (1) On rédige la requête */ $create_subject_request = new ModuleRequest('subject/create', array( 'username' => $subject['username'], 'firstname' => $subject['firstname'], 'lastname' => $subject['lastname'], 'number' => $subject['number'] )); /* (2) On exécute la requête (création) */ $create_subject_response = $create_subject_request->dispatch(); /* (3) Gestion de l'erreur, si erreur de création */ if( $create_subject_response->error != ManagerError::Success ) return array( 'ModuleError' => $create_subject_response->error ); /* (4) On récupère l'id du sujet */ $subject_id = $create_subject_response->get('id_subject'); /* [2] On extrait les contacts des 2 top 10 (sans duplication) =========================================================*/ $closest = array(); foreach($fiches as $i=>$fiche){ /* (1) Si le contact n'est pas déja enregistré, on l'enregistre */ if( !array_key_exists($fiche['contact'], $closest) ) $closest[ $fiche['contact'] ] = array(); /* (2) Si c'est un lien par CALL, on l'ajoute */ if( $i < 10 ) array_push( $closest[ $fiche['contact'] ], 'CALL' ); /* (3) Si c'est un lien par SMS, on l'ajoute */ else array_push( $closest[ $fiche['contact'] ], 'SMS' ); } /* [3] On crée les contacts les plus proches =========================================================*/ $closest_id = array(); // Pour chacun des top 10*2 plus proches foreach($closest as $contact=>$relations){ /* (1) On rédige la requête de création de sujet*/ $create_contact_request = new ModuleRequest('subject/create', array( 'username' => $contacts[$contact]['username'], 'firstname' => $contacts[$contact]['firstname'], 'lastname' => $contacts[$contact]['lastname'], 'number' => $contacts[$contact]['number'] )); /* (2) On exécute la requête (création) */ $create_contact_response = $create_contact_request->dispatch(); /* (3) Gestion de l'erreur, si erreur de création */ if( $create_contact_response->error != ManagerError::Success ) return array( 'ModuleError' => $create_contact_response->error ); /* (4) On récupère l'id du sujet */ $closest_id[$contact] = $create_contact_response->get('id_subject'); /* [4] On crée les relations avec le sujet de l'enquête =========================================================*/ /* (1) Relation de type _CALL_ */ if( in_array('CALL', $relations) ){ $call_rel_request = new Repo('subject/link', array( $subject_id, $closest_id[$contact], '_CALL_' )); $call_rel_response = $call_rel_request->answer(); // Si erreur de création de relation if( $call_rel_response === false ) return array( 'ModuleError' => ManagerError::ModuleError ); } /* (2) Relation de type _SMS_ */ if( in_array('SMS', $relations) ){ $sms_rel_request = new Repo('subject/link', array( $subject_id, $closest_id[$contact], '_SMS_' )); $sms_rel_response = $sms_rel_request->answer(); // Si erreur de création de relation if( $sms_rel_response === false ) return array( 'ModuleError' => ManagerError::ModuleError ); } } /* [4] Ajout des relations de la matrice =========================================================*/ // Pour chacun des top 10*2 plus proches foreach($closest as $A=>$rels){ // Pour chaque relation avec le contact actuel (s'il y en a) if( isset($matrice[$A]) && is_array($matrice[$A]) ){ foreach($matrice[$A] as $B){ $relation_request = new Repo('subject/link', array( $closest_id[$A], $closest_id[$B], '' )); $relation_response = $relation_request->answer(); // Si erreur de création de relation if( $relation_response === false ) return array( 'ModuleError' => ManagerError::ModuleError ); } } } /* [5] Enregistrer les données des FICHES dans la base de données =========================================================*/ // TODO: Enregistrer les données des fiches dans la base de données /* [6] Enregistrement des mini-fiches dans un fichier '.json' =========================================================*/ $file = array(); /* (1) On enregistre les données des fiches */ foreach($mini as $id=>$miniFiche){ $data = array( 'number' => $contacts[$id]['number'], 'username' => $contacts[$id]['username'], 'firstname' => $contacts[$id]['firstname'], 'lastname' => $contacts[$id]['lastname'], // TODO: Finir l'implémentation du fichier XML contenant les données des MINI+des CONTACTS ); } /* (2) On enregistre les données des mini-fiches */ /* [n] Gestion du retour =========================================================*/ return array( 'ModuleError' => ManagerError::Success, 'subject_id' => $subject_id, 'contacts' => $closest, 'created' => $closest_id ); } } ?>