/trunk/services/index.php |
---|
25,7 → 25,7 |
//echo "Recherche : $nom / $ns\n"; |
// Routes selon les namespaces |
$routes = array( |
'TelaBotanica\Del\Commun' => '..' . DS . 'commun' |
'TelaBotanica\Del\Commun' => Config::get('cheminDelCommun') |
); |
if (array_key_exists($ns, $routes)) { |
//echo "Route trouvée: " . $routes[$ns] . "\n"; |
/trunk/services/configurations/config.defaut.ini |
---|
74,6 → 74,9 |
; URL de base du service appelé pour autocompléter les noms de taxons |
url_service_completion_base="{ref:url_base}service:eflore:0.1/%s/noms?masque=%s&recherche=etendue&retour.format=min&navigation.limite=50&ns.structure=au"; |
; Espaces de noms --------------------------------------- |
cheminDelCommun = '../commun' |
; +------------------------------------------------------------------------------------------------------+ |
; Administrateurs de del |
admins = "accueil@tela-botanica.org,aurelien@tela-botanica.org,delphine@tela-botanica.org,gregoire@tela-botanica.org,jpm@tela-botanica.org"; |
/trunk/scripts/configurations/config.defaut.ini |
---|
67,4 → 67,7 |
; Adresse destinataire des messages récapitulatifs de détermination |
adresse_destinataire_recapitulatif_determination = "test@tela-botanica.org" |
; titre du message de récapitulatif des obs à déterminer |
titre_message_recapitulatif_obs = "Récapitulatif des dernieres observations à déterminer" |
titre_message_recapitulatif_obs = "Récapitulatif des dernieres observations à déterminer" |
; Espaces de noms --------------------------------------- |
cheminDelCommun = '../commun' |
/trunk/scripts/cli.php |
---|
27,7 → 27,7 |
//echo "Recherche : $nom / $ns\n"; |
// Routes selon les namespaces |
$routes = array( |
'TelaBotanica\Del\Commun' => '..' . DS . 'commun' |
'TelaBotanica\Del\Commun' => Config::get('cheminDelCommun') |
); |
if (array_key_exists($ns, $routes)) { |
//echo "Route trouvée: " . $routes[$ns] . "\n"; |
/trunk/commun/Stats.php |
---|
New file |
0,0 → 1,57 |
<?php |
namespace TelaBotanica\Del\Commun; |
class Stats { |
static function updateStats($db, $id_image, $id_proto) { |
// @TODO Attention aux situations de concurrence possible - nécessite une |
// transaction mais la flemme de tout mettre en InnoDB |
$id_image = intval($id_image); |
$id_proto = intval($id_proto); |
if(!$id_image || !$id_proto) throw new Exception("Ne peut mettre à jour les statistiques de vote", |
RestServeur::HTTP_CODE_ERREUR); |
// 1) choper tous les votes pour le protocole choisi |
$votes = $db->requeter(sprintf( |
' SELECT ce_image, ce_protocole, valeur'. |
' FROM del_image_vote'. |
' WHERE ce_image = %d AND ce_protocole = %d', |
$id_image, $id_proto)); |
// 2) calculer la moyenne pondérée, le nombre de points |
// @ACHTUNG_ALARM attention à ce que cette méthode corresponde avec les |
// calculs dans GWT, notamment l'échelle de points !! |
$nbPoints = 0; |
$nbVotes = 0; |
$echelle = array(-1, 0, 1, 4, 20); |
$notesParOccurrences = array(); |
foreach ($votes as $vote) { |
$note = $vote['valeur']; |
$nbPoints += $echelle[$note - 1]; |
if (array_key_exists($note, $notesParOccurrences)) { |
$notesParOccurrences[$note]++; |
} else { |
$notesParOccurrences[$note] = 1; |
} |
$nbVotes++; |
} |
$moyennePonderee = 0; |
$diviseur = 0; |
foreach ($notesParOccurrences as $n => $o) { |
$moyennePonderee += ($n * $o * $o); |
$diviseur += ($o * $o); |
} |
if ($diviseur > 0) { |
$moyennePonderee = $moyennePonderee / $diviseur; |
} |
// 3) mise à jour de la table stats |
$db->requeter(sprintf( |
' INSERT INTO del_image_stat (ce_image, ce_protocole, moyenne, nb_votes, nb_points)'. |
' VALUES (%d, %d, %s, %d, %d)'. |
' ON DUPLICATE KEY UPDATE moyenne = %s, nb_votes = %d, nb_points = %d', |
$id_image, $id_proto, number_format($moyennePonderee, 3, '.', ''), $nbVotes, $nbPoints, number_format($moyennePonderee, 3, '.', ''), $nbVotes, $nbPoints)); |
} |
} |