Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/**
 * @author              Raphaël Droz <raphael@tela-botanica.org>
 * @author              Aurélien PERONNET <aurelien@tela-botanica.org>
 * @copyright   Copyright (c) 2013, Tela Botanica (accueil@tela-botanica.org)
 * @license             Licence CECILL http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt
 * @license             Licence GNU-GPL http://www.gnu.org/licenses/gpl.html
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
 */
class MotClePictoflora {

        // cf: images/VotesImage.php
        static function updateStats($db, $id_image) {
                $id_image = intval($id_image);
                if(!$id_image) throw new Exception("Ne peut mettre à jour les statistiques de vote",
                                                                                   RestServeur::HTTP_CODE_ERREUR);

                // on utilise toujours cette table de stats (ListeImages) pour les mots-clef "actif".
                $db->requeter(sprintf('UPDATE del_image_stat SET nb_tags = (select COUNT(id_tag) FROM del_image_tag WHERE ce_image = %1$d AND actif = 1) WHERE ce_image = %1$d', $id_image));
        }

        //TODO: déplacer les fonctions ci dessus et dessous dans une classe
        // utilitaire
        static function normaliserMotCle($str, $charset='utf-8') {
                $str = htmlentities($str, ENT_NOQUOTES, $charset);
        
                $str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
                $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
                $str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
                // supprime les espaces, tirets et simple-quotes en underscores
                return str_replace(array(" ", "-", "'"),
                                                   array('_', '_', '_'),
                                                   $str);
        
                return mb_strtolower($str);
        }
}