Modification du module `call_log` pour qu'il trie le répertoire.

This commit is contained in:
xdrm-brackets 2016-04-27 22:18:58 +02:00
parent bf0598a483
commit 5f8968d580
1 changed files with 31 additions and 1 deletions

View File

@ -102,13 +102,43 @@
// Système de poids -> 5 sms = 1 appel // Système de poids -> 5 sms = 1 appel
// 0 -> {number, name, calls, sms} (closest contact) // 0 -> {number, name, calls, sms} (closest contact)
// 1 -> {number, name, calls, sms} (2nd closest contact) // 1 -> {number, name, calls, sms} (2nd closest contact)
$tmp = $phone_directory; // Permet de ne pas efface $phone_directory
$maxNumber = -1; // Contiendra le numéro du plus gros
$maxVal = null; // Contiendra la valeur max (sms+5*cal ls)
$sorted_directory = array(); // Contiendra l'annuaire trié par nombre d'interraction
/* (1) Tant qu'on a pas tout trié */
while( count($tmp) > 0 ){
$maxNumber = -1;
$maxVal = null;
/* (2) On parcours toutes les entrées puor trouver le plus proche */
foreach($tmp as $number=>$data)
if( $data['sms']+5*$data['calls'] > $maxVal || is_null($maxVal) ){
// On met à jour la valeur max
$maxVal = $data['sms']+5*$data['calls'];
// On met à jour l'indice
$maxNumber = $number;
}
/* (3) On supprime le plus proche qu'on a trouvé et on l'ajoute au tableau trié */
array_push($sorted_directory, array(
'number' => $maxNumber,
'name' => $tmp[$maxNumber]['name'],
'calls' => $tmp[$maxNumber]['calls'],
'sms' => $tmp[$maxNumber]['sms'],
'total' => $tmp[$maxNumber]['sms'] + 5*$tmp[$maxNumber]['calls']
));
unset($tmp[$maxNumber]);
}
/* [6] Gestion du retour /* [6] Gestion du retour
=========================================================*/ =========================================================*/
return array( return array(
'ModuleError' => ManagerError::Success, 'ModuleError' => ManagerError::Success,
'directory' => $phone_directory, 'directory' => $sorted_directory,
'logs' => $phone_logs 'logs' => $phone_logs
); );
} }