Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1566 → Rev 1567

/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));
}
}
/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/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";