0 ){ /* (3) Si @username+(@firstname et/ou @lastname) -> username (firstname lastname) */ if( $fl+$ll > 0 ) return $u.' ('.trim($f.' '.$l).')'; /* (4) Si @username uniquement -> username */ else return $u; /* (5) Si pas @username */ }else{ /* (6) Si @firstname et/ou @lastname -> firstname lastname*/ if( $fl+$ll > 0 ) return trim($f.' '.$l); /* (7) Si rien -> Inconnu */ else return 'Inconnu'; } } /* TRAITE LES DONNÉES D'UN FORMULAIRE DE TYPE TÉLÉPHONIQUE * * @subject 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); // TODO: Tout enregistrer dans le .json et non dans la bdd /* [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 ); // // } // } // // } $subject_id = '200'; // on hash son id $subject_id = sessionManager::sha1($subject_id); /* [5] Enregistrement des données des FICHES dans la base de données =========================================================*/ // TODO: Enregistrer les données des fiches dans la base de données /* [0] On récupère les logs s'ils existent =========================================================*/ // Contiendra le contenu du fichier $file = array( 'logs' => array() ); /* (1) Si on a déja crée le fichier avec le journal d'appel dedans, on le récupère */ $storage_already = is_string($subject['tmp_id']) && strlen($subject['tmp_id']) == 40; /* (2) On définit les 2 fichiers utiles */ $filename = array( 'old' => __ROOT__.'/tmp/phone_storage_'.$subject['tmp_id'].'.json', 'new' => __ROOT__.'/src/upload/phone_storage/'.$subject_id.'.json' ); /* (3) Si on a déja crée le fichier, on essaie de récupérer son contenu */ if( $storage_already ){ $file = json_decode( file_get_contents($filename['old']), true ); // erreur if( $file == null ) return array( 'ModuleRequest' => ManagerError::ParsingFailed ); } /* [1] On enregistre les données du sujet =========================================================*/ $file['subject'] = array( 'id' => $subject_id, 'number' => $subject['number'], 'name' => self::readableName($subject['username'], $subject['firstname'], $subject['lastname']) ); /* [2] On enregistre les contacts des MINI =========================================================*/ $file['contacts'] = array(); foreach($mini as $miniData){ // On récupère les données du contact associé $contact = $contacts[ $miniData['uid'] ]; // On remplit les données qui iront dans le fichier pour ce contact array_push($file['contacts'], array( 'id' => $miniData['uid'], 'number' => $contact['number'], 'name' => self::readableName($contact['username'], $contact['firstname'], $contact['lastname']), 'sexe' => $miniData['sexe'], 'age' => $miniData['age'], 'studies1' => $miniData['studies'], 'reltype' => ($miniData['reltype']==10) ? $miniData['reltypeSpecial'] : $miniData['reltype'], // si 'autre' -> valeur, sinon le code 'dist' => $miniData['loc'] )); } /* [3] On enregistre les contacts des FICHES =========================================================*/ foreach($fiches as $ficheData){ // On récupère les données du contact associé $contact = $contacts[ $ficheData['uid'] ]; // On remplit les données qui iront dans le fichier pour ce contact array_push($file['contacts'], array( 'id' => $ficheData['uid'], 'number' => $contact['number'], 'name' => self::readableName($contact['username'], $contact['firstname'], $contact['lastname']), 'sexe' => $ficheData['sexe'], 'age' => $ficheData['age'], 'studies2' => $ficheData['studies'], 'reltype' => ($ficheData['reltype']==10) ? $ficheData['reltypeSpecial'] : $ficheData['reltype'], // si 'autre' -> valeur, sinon le code 'dist' => $ficheData['loc'], 'job' => $ficheData['job'], 'famsit' => $ficheData['famsit'], 'city' => $ficheData['city'], 'cp' => $ficheData['cp'], 'duration' => $ficheData['duration'], 'context' => $ficheData['context'], 'contextExtra' => $ficheData['contextSpecial'], 'freq' => $ficheData['freq'], 'connect' => $ficheData['connect'], 'connectExtra' => $ficheData['connectSpecial'] )); } /* [4] On enregistre les relations de la MATRICE =========================================================*/ $file['relations'] = array(); foreach($matrice as $A=>$Bs) foreach($Bs as $B) array_push($file['relations'], array( 'idA' => $A, 'idB' => $B )); /* (5) On met le contenu en json */ $file = json_encode($file); /* (6) On l'enregistre dans le fichier */ $written = file_put_contents( $filename['old'], $file); // Si erreur d'écriture if( $written === false ) return array( 'ModuleError' => ManagerError::ModuleError ); /* (7) On renomme le fichier avec le nouvel identifiant */ if( !rename($filename['old'], $filename['new']) ) return array( 'ModuleError' => ManagerError::ModuleError ); // si erreur -> erreur /* [n] Gestion du retour =========================================================*/ return array( 'ModuleError' => ManagerError::Success, 'subject_id' => $subject_id ); } } ?>