Changeset 34282 in spip-zone


Ignore:
Timestamp:
Jan 8, 2010, 12:10:06 PM (10 years ago)
Author:
cedric@…
Message:

une action pour supprimer une note avec un bouton action

Location:
_plugins_/notation
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/notation/formulaires/notation.php

    r34277 r34282  
    173173
    174174
    175 function insert_notation(){
    176         return sql_insertq("spip_notations", array(
    177                         "objet" => "",
    178                         "id_objet" => 0,
    179                         "id_auteur" => 0,
    180                         "ip" => "",
    181                         "note" => 0
    182                         ));
    183 }
    184 
    185 function modifier_notation($id_notation,$c=array()) {
    186         // pipeline pre edition
    187         sql_updateq('spip_notations',$c,'id_notation='.sql_quote($id_notation));
    188         // pipeline post edition
    189         return true;
    190        
    191 }
    192 
    193 function supprimer_notation($id_notation) {
    194         // pipeline pre edition
    195         sql_delete('spip_notations','id_notation='.sql_quote($id_notation));
    196         // pipeline post edition
    197         return true;
    198 }
    199 
    200 
    201 
    202 // je me demande vraiment si tout cela est utile...
    203 // vu que tout peut etre calcule en requete depuis spip_notations
    204 // a peu de choses pres (!)
    205 function notation_recalculer_total($objet,$id_objet){
    206        
    207         list($total, $note, $note_ponderee) = notation_calculer_total($objet, $id_objet);
    208        
    209         $objet = objet_type($objet);
    210        
    211         // Mise a jour ou insertion ?
    212         if (!sql_countsel("spip_notations_objets", array(
    213                                 "objet=" . sql_quote($objet),
    214                                 "id_objet=" . sql_quote($id_objet),
    215                                 ))) {
    216                 // Remplir la table de notation des objets
    217                 sql_insertq("spip_notations_objets", array(
    218                         "objet" => $objet,
    219                         "id_objet" => $id_objet,
    220                         "note" => $note,
    221                         "note_ponderee" => $note_ponderee,
    222                         "nombre_votes" => $total
    223                         ));
    224                 include_spip('inc/invalideur');
    225                 suivre_invalideur("notation/$objet/$id_objet");
    226                        
    227         } else {
    228                 $anc_note_ponderee = sql_getfetsel('note_ponderee','spip_notations_objets',array(
    229                                 "objet=" . sql_quote($objet),
    230                                 "id_objet=" . sql_quote($id_objet)
    231                         ));
    232                 // Mettre ajour dans les autres cas
    233                 sql_updateq("spip_notations_objets", array(
    234                         "note" => $note,
    235                         "note_ponderee" => $note_ponderee,
    236                         "nombre_votes" => $total),
    237                         array(
    238                                 "objet=" . sql_quote($objet),
    239                                 "id_objet=" . sql_quote($id_objet)
    240                         ));
    241                 // on optimise en n'invalidant que si la notre ponderee change (sinon ca ne se verra pas)
    242                 if (round($anc_note_ponderee)!=$note_ponderee){
    243                         include_spip('inc/invalideur');
    244                         suivre_invalideur("notation/$objet/$id_objet");
    245                 }
    246         }
    247 }
    248 
    249 
    250 function notation_calculer_total($objet, $id_objet){
    251 
    252         $ponderation = lire_config('notation/ponderation',30);
    253        
    254         // Calculer les moyennes
    255         // cf critere {notation}
    256         $select = array(
    257                 'notations.objet',
    258                 'notations.id_objet',
    259                 'COUNT(notations.note) AS nombre_votes',
    260                 'ROUND(AVG(notations.note),2) AS moyenne',
    261                 // *1.0 pour forcer une division reelle sinon 4/3=1 (sql server, sqlite...)
    262                 'ROUND(AVG(notations.note)*(1-EXP(-5*COUNT(notations.note)*1.0/'.$ponderation.')),2) AS moyenne_ponderee'
    263         );
    264         if (!$row = sql_fetsel(
    265                         $select,
    266                         "spip_notations AS notations",
    267                         array(
    268                                 "notations.objet=". sql_quote(objet_type($objet)),
    269                                 "notations.id_objet=" . sql_quote($id_objet)
    270                         ),'notations.id_objet')) {
    271                 return array(0,0,0);           
    272         } else {
    273                 return array($row['nombre_votes'], $row['moyenne'], $row['moyenne_ponderee']);
    274         }
    275 }
    276 
    277175?>
  • _plugins_/notation/inc/notation.php

    r24177 r34282  
    8383
    8484
     85function insert_notation(){
     86        return sql_insertq("spip_notations", array(
     87                        "objet" => "",
     88                        "id_objet" => 0,
     89                        "id_auteur" => 0,
     90                        "ip" => "",
     91                        "note" => 0
     92                        ));
     93}
     94
     95function modifier_notation($id_notation,$c=array()) {
     96        // pipeline pre edition
     97        sql_updateq('spip_notations',$c,'id_notation='.sql_quote($id_notation));
     98        // pipeline post edition
     99        return true;
     100
     101}
     102
     103function supprimer_notation($id_notation) {
     104        // pipeline pre edition
     105        sql_delete('spip_notations','id_notation='.sql_quote($id_notation));
     106        // pipeline post edition
     107        return true;
     108}
     109
     110
     111// je me demande vraiment si tout cela est utile...
     112// vu que tout peut etre calcule en requete depuis spip_notations
     113// a peu de choses pres (!)
     114function notation_recalculer_total($objet,$id_objet){
     115
     116        list($total, $note, $note_ponderee) = notation_calculer_total($objet, $id_objet);
     117
     118        $objet = objet_type($objet);
     119
     120        // Mise a jour ou insertion ?
     121        if (!sql_countsel("spip_notations_objets", array(
     122                                "objet=" . sql_quote($objet),
     123                                "id_objet=" . sql_quote($id_objet),
     124                                ))) {
     125                // Remplir la table de notation des objets
     126                sql_insertq("spip_notations_objets", array(
     127                        "objet" => $objet,
     128                        "id_objet" => $id_objet,
     129                        "note" => $note,
     130                        "note_ponderee" => $note_ponderee,
     131                        "nombre_votes" => $total
     132                        ));
     133                include_spip('inc/invalideur');
     134                suivre_invalideur("notation/$objet/$id_objet");
     135
     136        } else {
     137                $anc_note_ponderee = sql_getfetsel('note_ponderee','spip_notations_objets',array(
     138                                "objet=" . sql_quote($objet),
     139                                "id_objet=" . sql_quote($id_objet)
     140                        ));
     141                // Mettre ajour dans les autres cas
     142                sql_updateq("spip_notations_objets", array(
     143                        "note" => $note,
     144                        "note_ponderee" => $note_ponderee,
     145                        "nombre_votes" => $total),
     146                        array(
     147                                "objet=" . sql_quote($objet),
     148                                "id_objet=" . sql_quote($id_objet)
     149                        ));
     150                // on optimise en n'invalidant que si la notre ponderee change (sinon ca ne se verra pas)
     151                if (round($anc_note_ponderee)!=$note_ponderee){
     152                        include_spip('inc/invalideur');
     153                        suivre_invalideur("notation/$objet/$id_objet");
     154                }
     155        }
     156}
     157
     158
     159function notation_calculer_total($objet, $id_objet){
     160
     161        $ponderation = lire_config('notation/ponderation',30);
     162
     163        // Calculer les moyennes
     164        // cf critere {notation}
     165        $select = array(
     166                'notations.objet',
     167                'notations.id_objet',
     168                'COUNT(notations.note) AS nombre_votes',
     169                'ROUND(AVG(notations.note),2) AS moyenne',
     170                // *1.0 pour forcer une division reelle sinon 4/3=1 (sql server, sqlite...)
     171                'ROUND(AVG(notations.note)*(1-EXP(-5*COUNT(notations.note)*1.0/'.$ponderation.')),2) AS moyenne_ponderee'
     172        );
     173        if (!$row = sql_fetsel(
     174                        $select,
     175                        "spip_notations AS notations",
     176                        array(
     177                                "notations.objet=". sql_quote(objet_type($objet)),
     178                                "notations.id_objet=" . sql_quote($id_objet)
     179                        ),'notations.id_objet')) {
     180                return array(0,0,0);
     181        } else {
     182                return array($row['nombre_votes'], $row['moyenne'], $row['moyenne_ponderee']);
     183        }
     184}
     185
    85186?>
Note: See TracChangeset for help on using the changeset viewer.