/tags/v0.1-20130829/bibliotheque/AppUrls.php |
---|
New file |
0,0 → 1,284 |
<?php |
class AppUrls { |
private $urlBase = null; |
private $urlMobile = null; |
private $urlBaseDossier = null; |
private $urlCourante = null; |
private $urlRedirection = null; |
private $urlPopUp = null; |
public function __construct(Url $urlBase = null, Url $urlBaseDossier = null, Url $urlPopUp = null, Url $urlMobile = null) { |
$this->urlBase = (is_null($urlBase)) ? Registre::get('eFlore.urlBase') : $urlBase; |
$this->urlBaseDossier = (is_null($urlBaseDossier)) ? Registre::get('eFlore.urlBaseDossier') : $urlBaseDossier; |
$this->urlPopUp = (is_null($urlPopUp)) ? Registre::get('eFlore.urlPopUp') : $urlPopUp; |
$this->urlMobile = (is_null($urlMobile)) ? Registre::get('eFlore.urlMobile') : $urlMobile; |
} |
public function obtenirUrlBase() { |
$this->urlBase->setRequete(array()); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function obtenirUrlBaseDossier() { |
$this->urlBaseDossier->setRequete(array()); |
$url = $this->urlBaseDossier->getURL(); |
return $url; |
} |
public function redirigerVers($url) { |
$url = str_replace('&', '&', $url); |
header("Location: $url"); |
} |
public function getParametresUrlListe() { |
$parametres = array( |
'referentiel' => Registre::get('parametres.referentiel'), |
'module' => 'liste', |
'action' => 'liste', |
'rang' => $this->rang, |
'lettre' => $this->lettre |
); |
return $parametres; |
} |
public function obtenirUrlListeFamille() { |
$parametres = $this->getParametresUrlListe(); |
$parametres['rang'] = 'F'; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function obtenirUrlListeGenre() { |
$parametres = $this->getParametresUrlListe(); |
$parametres['rang'] = 'G'; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function getParametresUrlRecherche() { |
$parametres = array( |
'referentiel' => Registre::get('parametres.referentiel'), |
'module' => 'recherche', |
'action' => 'rechercheSimple', |
'submit' => 'Rechercher' |
); |
return $parametres; |
} |
public function obtenirUrlRechercheSimple($nom = null, $type = 'nom_scientifique') { |
$parametres = $this->getParametresUrlRecherche(); |
$parametres['type_nom'] = $type; |
$parametres['nom'] = $nom; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function getParametresUrlRechercheAvancee() { |
$parametres = array( |
'referentiel' => Registre::get('parametres.referentiel'), |
'niveau' => Registre::get('parametres.niveau'), |
'module' => 'recherche', |
'action' => 'rechercheAvancee', |
'type_nom' => 'nom_scientifique' |
); |
return $parametres; |
} |
public function obtenirUrlResultatAvanceOnglets($onglet, $params = array()) { |
$parametres = $this->getParametresUrlRechercheAvancee(); |
$parametres['resultat'] = $onglet; |
$parametres = array_merge($parametres, $params); |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function obtenirUrlRechercheAvancee($params = array()) { |
$parametres = $this->getParametresUrlRechercheAvancee(); |
$parametres = array_merge($parametres,$params); |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function getParametresUrlResultat() { |
$parametres = array( |
'referentiel' => Registre::get('parametres.referentiel'), |
'module' => 'recherche', |
'niveau' => Registre::get('parametres.niveau'), |
'action' => Registre::get('parametres.action'), |
'submit' => 'Rechercher', |
'type_nom' => isset($_GET['type_nom']) ? $_GET['type_nom'] : 'nom_scientifique', |
'nom' => isset($_GET['nom']) ? $_GET['nom'] : '' |
); |
return $parametres; |
} |
public function obtenirUrlResultatDetermination() { |
$parametres = $this->getParametresUrlResultat(); |
$parametres['resultat'] = 'determination'; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function obtenirUrlResultatAlphab() { |
$parametres = $this->getParametresUrlResultat(); |
$parametres['resultat'] = 'alphab'; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function obtenirUrlResultatRetenu() { |
$parametres = $this->getParametresUrlResultat(); |
$parametres['resultat'] = 'retenu'; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function obtenirUrlResultatDecompo() { |
$parametres = $this->getParametresUrlResultat(); |
$parametres['resultat'] = 'decompo'; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function getParametresUrlFiche() { |
$parametres = array( |
'referentiel' => Registre::get('parametres.referentiel'), |
'niveau' => Registre::get('parametres.niveau'), |
'module' => 'fiche', |
'action' => 'fiche' |
); |
return $parametres; |
} |
public function obtenirUrlFiche($numNom, $type_nom = 'nom_vernaculaire', $nom = '') { |
$parametres = $this->getParametresUrlFiche(); |
$parametres['num_nom'] = $numNom; |
$parametres['type_nom'] = $type_nom; |
$parametres['nom'] = $nom; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function getParametresUrlMobile() { |
$parametres = array( |
'referentiel' => Registre::get('parametres.referentiel'), |
'niveau' => 1, |
'module' => 'mobile', |
'action' => 'fiche' |
); |
return $parametres; |
} |
public function obtenirUrlMobile($numNom, $type_nom = 'nom_vernaculaire', $nom = '') { |
$parametres = $this->getParametresUrlMobile(); |
$parametres['num_nom'] = $numNom; |
$parametres['type_nom'] = $type_nom; |
$parametres['nom'] = $nom; |
$this->urlMobile->setRequete($parametres); |
$url = $this->urlMobile->getURL(); |
return $url; |
} |
public function getParametresUrlMetaDonnees() { |
$parametres = array( |
'module' => 'fiche-metadonnees', |
'action' => 'affichageMetaDonnees' |
); |
return $parametres; |
} |
public function obtenirUrlMetaDonnees($projet) { |
$parametres = $this->getParametresUrlMetaDonnees(); |
$parametres['projet'] = $projet; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function getParametresUrlListeFancyBoxPhytosocio() { |
$parametres = array( |
'module' => 'liste-fancy-box-phytosocio', |
'action' => 'lister' |
); |
return $parametres; |
} |
public function obtenirUrlListeFancyBoxPhytosocio($liste,$referentiel,$num_nom, $catminat) { |
$parametres = $this->getParametresUrlListeFancyBoxPhytosocio(); |
$parametres['type'] = $liste; |
$parametres['referentiel'] = $referentiel; |
$parametres['num_nom'] = $num_nom; |
$parametres['catminat'] = $catminat; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function getParametresUrlPopUpIllustrations() { |
$parametres = array( |
'module' => 'popup-illustrations', |
'action' => 'fiche', |
'referentiel' => Registre::get('parametres.referentiel') |
); |
return $parametres; |
} |
public function obtenirUrlPopUpIllustrations($idImg) { |
$parametres = $this->getParametresUrlPopUpIllustrations(); |
$parametres['id'] = $idImg; |
$this->urlPopUp->setRequete($parametres); |
$url = $this->urlPopUp->getURL(); |
return $url; |
} |
public function getParametresPdfExport() { |
$parametres = array( |
'referentiel' => Registre::get('parametres.referentiel'), |
'niveau' => Registre::get('parametres.niveau'), |
'module' => 'pdf-export', |
'action' => 'pdf-export' |
); |
return $parametres; |
} |
public function obtenirUrlPdfExport($numNom) { |
$parametres = $this->getParametresPdfExport(); |
$parametres['num_nom'] = $numNom; |
$this->urlBase->setRequete($parametres); |
$url = $this->urlBase->getURL(); |
return $url; |
} |
public function getParametresUrlPopUpContact($action) { |
$action = is_null($action) ? 'form' : $action; |
$parametres = array( |
'module' => 'popup-contact', |
'action' => $action, |
'referentiel' => Registre::get('parametres.referentiel') |
); |
return $parametres; |
} |
public function obtenirUrlPopUpContact($idDestinataire, $idImage, $action = null) { |
$parametres = $this->getParametresUrlPopUpContact($action); |
$parametres['id_destinataire'] = $idDestinataire; |
$parametres['id_img'] = $idImage; |
$this->urlPopUp->setRequete($parametres); |
$url = $this->urlPopUp->getURL(); |
return $url; |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/Nom.php |
---|
New file |
0,0 → 1,34 |
<?php |
class Nom { |
private $infos = array(); |
public function __construct(Array $infos) { |
$this->infos = $infos; |
} |
public function setTaxonsSuperieurs(Array $taxonsSup, $nns) { |
$this->infos['taxonsSup'] = $taxonsSup[$nns]; |
} |
public function getInfos() { |
return $this->infos; |
} |
public function get($cle) { |
$valeur = ''; |
if (array_key_exists($cle, $this->infos)) { |
$valeur = $this->infos[$cle]; |
} |
return $valeur; |
} |
public function getTaxonSupRang($rang) { |
$nom_sci = ''; |
foreach ($this->infos['taxonsSup'] as $taxon) { |
if ($taxon['rang.code'] == 'bdnt.rangTaxo:'.$rang) { |
$nom_sci = $taxon['nom_sci_complet']; |
} |
} |
return $nom_sci; |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/Trieur.php |
---|
New file |
0,0 → 1,97 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe fournissant des méthodes de trie de tableaux (Array). |
* |
* @category PHP 5.2 |
* @package eFlore/Bibliotheque |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 |
* @version $Id$ |
*/ |
// TODO : réaliser une seule méthode pour trierMD et trierMDType |
class Trieur { |
const TRI_NATUREL = 'nat'; |
const TRI_CASSE_SENSIBLE = 'ci'; |
const TRI_CASSE_INSENSIBLE = 'ci'; |
private $manipulateurDeChaine = null; |
private $tableau = array(); |
private $champsEtOrdres = array(); |
private $triType = self::TRI_NATUREL; |
public function __construct(Array $tableau = null, ChaineManipulateur $manipulateurDeChaine = null) { |
if (is_array($tableau)) { |
$this->setTableau($tableau); |
} |
$this->manipulateurDeChaine = is_null($tableau) ? new ChaineManipulateur() : $manipulateurDeChaine; |
} |
public function setTableau($tableau) { |
$this->tableau = $tableau; |
} |
/** |
* Fournir un tableau contenant en clé les noms des champs et en valeur l'ordre de tri. Exemple : |
* array('ma_cle1' => SORT_ASC, 'ma_cle2' => SORT_DESC), $type_de_tri); |
* Utiliser les constantes php SORT_DESC ou SORT_ASC pour l'odre de tri. |
* @param array en clé les noms des champs et en valeur l'ordre de tri. |
*/ |
public function setChampsEtOrdres($champsEtOrdres) { |
$this->champsEtOrdres = $champsEtOrdres; |
} |
/** |
* Pour le type de tri : utiliser : |
* - Trieur::TRI_NATUREL pour un tri naturel, |
* - Tableau::TRI_CASSE_SENSIBLE pour un tri sensible à la casse, |
* - Tableau::TRI_CASSE_INSENSIBLE pour un tri insensible à la casse. |
* @param string le type de tri à appliquer. |
*/ |
public function setTriType($type) { |
$this->triType = $type; |
} |
/** |
* Méthode réalisant un tri d'un tableau multidimension. Attention les clés du tableau ne sont pas modifiées. |
* A utiliser de cette façon: |
* EfloreTriage::trieMultiple( $tableau_multidimension, array('ma_cle1' => SORT_ASC, 'ma_cle2' => SORT_DESC), $type_de_tri); |
* Utiliser les constantes php SORT_DESC ou SORT_ASC pour l'odre de tri. |
* @param array le tableau à trier |
* @param array le tableau des colonnes à trier qui a des noms de clés pour clés et des ordres de tri pour valeurs. |
* @param string le type de tri à appliquer. |
* @return array le tableau trié. |
*/ |
public function trier() { |
uasort($this->tableau, array($this, 'comparer')); |
return $this->tableau; |
} |
public function comparer($a, $b) { |
$resultat = 0; |
foreach ($this->champsEtOrdres as $champ => $ordre) { |
if ($resultat == 0) { |
$mot_01 = $this->manipulateurDeChaine->supprimerAccents($b[$champ]); |
$mot_02 = $this->manipulateurDeChaine->supprimerAccents($a[$champ]); |
switch ($this->triType) { |
case self::TRI_NATUREL : |
$resultat = ($ordre == SORT_DESC) ? strnatcmp($mot_01, $mot_02) : strnatcmp($mot_02, $mot_01); |
break; |
case self::TRI_CASSE_SENSIBLE : |
$resultat = ($ordre == SORT_DESC) ? strcmp($mot_01, $mot_02) : strcmp($mot_02, $mot_01); |
break; |
case self::TRI_CASSE_INSENSIBLE : |
$resultat = ($ordre == SORT_DESC) ? strcasecmp($mot_01, $mot_02) : strcasecmp($mot_02, $mot_01); |
break; |
default: |
$resultat = ($ordre == SORT_DESC) ? strcasecmp($mot_01, $mot_02) : strcasecmp($mot_02, $mot_01); |
break; |
} |
} |
} |
return $resultat; |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/Utilisateur.php |
---|
New file |
0,0 → 1,92 |
<?php |
class Utilisateur { |
const NIVEAU_DEBUTANT = 1; |
const NIVEAU_INTERMEDIAIRE = 2; |
const NIVEAU_EXPERT = 3; |
private $dureeSauvegarde = null; |
private $nomCookieUtilisateur = ''; |
private $nomCookieUtilisateurPersistant = ''; |
private $nomCookieNiveau = ''; |
private $niveauDefaut = ''; |
private $urlWsAnnuaire = ''; |
private $restClient = null; |
private $niveau = null; |
private $identifie = false; |
private $courriel = null; |
private $md5Mdp = null; |
public function __construct(Conteneur $conteneur) { |
$this->dureeSauvegarde = $conteneur->getParametre('cookies.duree'); |
$this->nomCookieUtilisateur = $conteneur->getParametre('cookies.utilisateur'); |
$this->nomCookieUtilisateurPersistant = $conteneur->getParametre('cookies.utilisateurPersistant'); |
$this->nomCookieNiveau = $conteneur->getParametre('cookies.niveau'); |
$this->niveauDefaut = $conteneur->getParametre('utilisateur.niveau.defaut'); |
$this->urlWsAnnuaire = $conteneur->getParametre('baseUrlServicesAnnuaireTpl'); |
$this->restClient = $conteneur->getRestClient(); |
$this->analyserCookies(); |
} |
public function getCourriel() { |
return $this->courriel; |
} |
public function getNiveau() { |
return $this->niveau; |
} |
public function sauver() { |
setcookie($this->nomCookieNiveau, time()+$this->dureeSauvegarde, '/'); |
} |
public function etreIdentifie() { |
$this->analyserCookies(); |
return $this->identifie; |
} |
public function connecter($courriel, $mdp, $persistance = false) { |
$url = sprintf($this->urlWsAnnuaire, 'utilisateur'); |
$donnees['methode'] = 'connexion'; |
$donnees['courriel'] = $courriel; |
$donnees['mdp'] = $mdp; |
$donnees['persistance'] = $persistance; |
$json = $this->restClient->ajouter($url, $donnees); |
$forceTableauAssociatif = true; |
$resultat = json_decode($json, $forceTableauAssociatif); |
return $resultat['identifie']; |
} |
private function analyserCookies() { |
$this->analyserCookiesIdentite(); |
$this->analyserCookiesNiveau(); |
} |
private function analyserCookiesIdentite() { |
if ($this->identifie == false) { |
if (isset($_COOKIE[$this->nomCookieUtilisateurPersistant])) { |
$idTela = $_COOKIE[$this->nomCookieUtilisateurPersistant]; |
$this->extraireMdpEtCourriel($idTela); |
} else if (isset($_COOKIE[$this->nomCookieUtilisateur])) { |
$idTela = $_COOKIE[$this->nomCookieUtilisateur]; |
$this->extraireMdpEtCourriel($idTela); |
} |
} |
} |
private function extraireMdpEtCourriel($idTela) { |
$this->md5Mdp = substr($idTela, 0, 32); |
$this->courriel = substr($idTela, 32); |
$this->identifie = true; |
} |
private function analyserCookiesNiveau() { |
$this->niveau = $this->niveauDefaut; |
if (isset($_COOKIE[$this->nomCookieNiveau])) { |
$this->niveau = $_COOKIE[$this->nomCookieNiveau]; |
} |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/QrCode.php |
---|
New file |
0,0 → 1,74 |
<?php |
/** |
* BarcodeQR - Code QR Barcode Image Generator (PNG) |
* |
* @package BarcodeQR |
* @category BarcodeQR |
* @name BarcodeQR |
* @version 1.0 |
* @author Shay Anderson 05.11 |
* @link http://www.shayanderson.com/php/php-qr-code-generator-class.htm |
* @license http://www.gnu.org/licenses/gpl.html GPL License |
* This is free software and is distributed WITHOUT ANY WARRANTY |
*/ |
final class QrCode { |
private $API_CHART_URL = ''; |
private $taille = '150'; |
private $contenu; |
private $urlQrCodeTpl; |
private $dossierQrCode; |
public function __construct($conteneur) { |
$this->API_CHART_URL = $conteneur->getParametre('urlApiChart'); |
$this->dossierQrCode = $conteneur->getParametre('dossierQrCode'); |
$this->urlQrCodeTpl = $conteneur->getParametre('urlQrCodeTpl'); |
} |
/** |
* URL code |
* |
* @param string $url |
*/ |
public function setUrl($url = '') { |
$this->contenu = $url; |
} |
/** |
* Taille du QRcode en pixel. Cela sera forcément un carré. |
* |
* @param string $taille |
*/ |
public function setTaille($taille) { |
$this->taille = $taille; |
} |
/** |
* Generate QR code image |
* |
* @param string $filename |
* @return bool |
*/ |
public function dessiner($idQrCode = null) { |
if (!preg_match('/\.png$/i', $idQrCode)) { |
$idQrCode .= '.png'; |
} |
$cheminImg = $this->dossierQrCode.$idQrCode; |
if (file_exists($cheminImg) == false) { |
$ch = curl_init(); |
curl_setopt($ch, CURLOPT_URL, $this->API_CHART_URL); |
curl_setopt($ch, CURLOPT_POST, true); |
curl_setopt($ch, CURLOPT_POSTFIELDS, "chs={$this->taille}x{$this->taille}&cht=qr&chl=".urlencode($this->contenu)); |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); |
curl_setopt($ch, CURLOPT_HEADER, false); |
curl_setopt($ch, CURLOPT_TIMEOUT, 30); |
$img = curl_exec($ch); |
curl_close($ch); |
file_put_contents($cheminImg, $img); |
} |
$urlQrCode = sprintf($this->urlQrCodeTpl, $idQrCode); |
return $urlQrCode; |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/ChaineManipulateur.php |
---|
New file |
0,0 → 1,76 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe fournissant des méthodes statiques de manipulation des chaînes de caractères (String). |
* |
* @category PHP 5.2 |
* @package eFlore/Bibliotheque |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 |
* @version $Id$ |
*/ |
class ChaineManipulateur { |
private $encodage = 'UTF-8'; |
private $caracteresAccentues = array( |
'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', |
'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', |
'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', |
'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', |
'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', |
'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', |
'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', |
'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', |
'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', |
'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', |
'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', |
'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', |
'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', |
'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ'); |
private $caracteresNormaux = array( |
'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', |
'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', |
'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', |
'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', |
'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', |
'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', |
'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', |
'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', |
'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', |
'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', |
'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', |
'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', |
'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o'); |
public function __construct($encodage = null) { |
if (is_string($encodage)) { |
$this->setEncodage($encodage); |
} |
} |
public function setEncodage($encodage) { |
$this->encodage = $encodage; |
} |
/** |
* Supprime ou remplace les accents d'une chaine en PHP. |
* La solution retenu, provenant du site |
* {@link http://www.lecoindunet.com/zone_php/scripts_utiles/remplacer-les-caracteres-accentues-dune-chaine-en-php-72 lecoindunet.com}, |
* consiste en deux tableaux (caractères avec et sans accents) car cela permetra éventuellement |
* de fournir des méthodes pour récupérer ces tableaux pour d'autres traitements. |
* Une autre solution aurait été d'utiliser les entités HTML comme proposé par le site |
* {@link http://www.weirdog.com/blog/php/supprimer-les-accents-des-caracteres-accentues.html weirdog.com}. |
* |
* @param String $chaine la chaine de caractères dans laquelle supprimer les accents. |
* @param String $encodage le code d'encodage de la chaine si ce n'est pas de l'UTF-8. |
* @return la chaine de caractères sans accent. |
*/ |
public function supprimerAccents($chaine) { |
if ($this->encodage != 'UTF-8') { |
mb_convert_variables($encodage, 'UTF-8', $this->caracteresAccentues, $this->caracteresNormaux); |
} |
return str_replace($this->caracteresAccentues, $this->caracteresNormaux, $chaine); |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/Surligneur.php |
---|
New file |
0,0 → 1,97 |
<?php |
class Surligneur { |
private $texte = ''; |
private $texteSansAccent = ''; |
private $tags = array(); |
private $nbreSurlignageMaxParMot = 1; |
private $nbreSurlignageCourant = 0; |
public function __construct($texte = null, $surlignageMaxParMot = null) { |
if (is_null($texte) == false) { |
$this->setTexte($texte); |
} |
if (is_null($surlignageMaxParMot) == false) { |
$this->setNbreMaxSurlignageParMot($surlignageMaxParMot); |
} |
} |
public function setTexte($txt) { |
$this->texte = $txt; |
} |
public function setNbreMaxSurlignageParMot($nbre) { |
$this->nbreSurlignageMaxParMot = $nbre; |
} |
function supprimerAccents($chaine){ |
return strtr($chaine,array('à' => 'a','á' => 'a','â' => 'a','ã' => 'a','ä' => 'a', |
'ç' => 'c', |
'è' => 'e','é' => 'e','ê' => 'e','ë' => 'e', |
'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i', |
'ñ' => 'n', |
'ò' => 'o', 'ó' => 'o' , 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', |
'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', |
'ý' => 'y', 'ÿ' => 'y')); |
} |
public function surlignerMots($mots) { |
$this->verifierTableauDeMots($mots); |
$this->texte = preg_replace_callback('`<[^>]+>`', array($this, 'sauverTags'), $this->texte); |
foreach ($mots as $mot) { |
$this->initialiserNbreSurlignageCourant(); |
$this->texte = $this->surlignerMot($mot); |
} |
$this->texte = preg_replace_callback('`<([0-9]+)>`', array($this, 'restaurerTags'), $this->texte); |
return $this->texte; |
} |
private function verifierTableauDeMots($mots) { |
if (is_array($mots) === false) { |
$message = "Surligneur::surlignerMots() n'accepte que les tableaux de mots en argument"; |
throw new InvalidArgumentException($message); |
} else { |
if (count($mots) == 0) { |
$message = "Surligneur::surlignerMots() n'accepte que des tableaux contenant au moins un mot"; |
throw new LengthException($message); |
} |
} |
} |
private function sauverTags($match) { |
$i = count($this->tags); |
$this->tags[$i] = $match[0]; |
return '<'.$i.'>'; |
} |
private function initialiserNbreSurlignageCourant() { |
$this->nbreSurlignageCourant = 0; |
} |
private function surlignerMot($mot) { |
$positionDebutMot = stripos($this->texte, $mot); |
$longueurMot = strlen($mot); |
$surlignage = $this->texte; |
if ($positionDebutMot !== false) { |
$this->nbreSurlignageCourant++; |
if ($this->nbreSurlignageCourant <= $this->nbreSurlignageMaxParMot) { |
$debut = substr($this->texte, 0, $positionDebutMot); |
$milieu = substr($this->texte, $positionDebutMot, $longueurMot); |
$this->texte = substr($this->texte, $positionDebutMot + $longueurMot); |
$fin = $this->surlignerMot($mot); |
$surlignage = $debut.$this->sauverTagSurlignage($milieu).$fin; |
} |
} |
return $surlignage; |
} |
private function sauverTagSurlignage($motTrouve) { |
$i = count($this->tags); |
$this->tags[$i] = '<span class="surlignage">'.$motTrouve.'</span>'; |
return '<'.$i.'>'; |
} |
private function restaurerTags($match) { |
return $this->tags[$match[1]]; |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/Conteneur.php |
---|
New file |
0,0 → 1,159 |
<?php |
class Conteneur { |
protected $parametres = array(); |
protected $partages = array(); |
public function __construct(array $parametres = null) { |
$this->parametres = is_null($parametres) ? array() : $parametres; |
} |
public function getParametre($cle) { |
$valeur = isset($this->parametres[$cle]) ? $this->parametres[$cle] : Config::get($cle); |
return $valeur; |
} |
public function getParametreTableau($cle) { |
$tableau = array(); |
$parametre = $this->getParametre($cle); |
if (empty($parametre) === false) { |
$tableauPartiel = explode(',', $parametre); |
$tableauPartiel = array_map('trim', $tableauPartiel); |
foreach ($tableauPartiel as $champ) { |
if (strpos($champ, '=') === false) { |
$tableau[] = trim($champ); |
} else { |
list($cle, $val) = explode('=', $champ); |
$tableau[trim($cle)] = trim($val); |
} |
} |
} |
return $tableau; |
} |
public function setParametre($cle, $valeur) { |
$this->parametres[$cle] = $valeur; |
} |
public function getAppUrls() { |
if (!isset($this->partages['AppUrls'])){ |
$this->partages['AppUrls'] = new AppUrls(); |
} |
return $this->partages['AppUrls']; |
} |
public function getApiNoms() { |
$noms = new Noms($this->getParametre('referentiel')); |
return $noms; |
} |
public function getApiTaxons() { |
$taxons = new Taxons($this->getParametre('referentiel')); |
return $taxons; |
} |
public function getApiBiblioBota() { |
$biblioBota = new BiblioBota(); |
return $biblioBota; |
} |
public function getApiImages() { |
$images = new Images(); |
return $images; |
} |
public function getApiCartes() { |
$cartes = new Cartes(); |
return $cartes; |
} |
public function getApiNomsVernaculaires() { |
$nomsVernaculaires = new NomsVernaculaires(); |
return $nomsVernaculaires; |
} |
public function getApiTextes() { |
$textes = new Textes(); |
return $textes; |
} |
public function getApiWikini() { |
$wiki = new Wikini(); |
return $wiki; |
} |
public function getApiGraphiques() { |
$graphique = new Graphiques(); |
return $graphique; |
} |
public function getApiSyntaxons() { |
$syntaxon = new Syntaxons(); |
return $syntaxon; |
} |
public function getApiMetaDonnees() { |
$meta = new MetaDonnees(); |
return $meta; |
} |
public function getApiInformations() { |
$informations = new Informations(); |
return $informations; |
} |
public function getApiStatuts() { |
$statuts = new Statuts(); |
return $statuts; |
} |
public function getNomCourant() { |
if (!isset($this->partages['NomCourant'])){ |
$nns = $this->getParametre('num_nom'); |
$noms = $this->getApiNoms(); |
$taxons = $this->getApiTaxons(); |
$this->partages['NomCourant'] = new NomCourant($nns, $noms, $taxons); |
} |
return $this->partages['NomCourant']; |
} |
public function getUtilisateur() { |
if (!isset($this->partages['Utilisateur'])){ |
$this->partages['Utilisateur'] = new Utilisateur($this); |
} |
return $this->partages['Utilisateur']; |
} |
public function getBdd() { |
if (!isset($this->partages['Bdd'])){ |
$this->partages['Bdd'] = new Bdd(); |
} |
return $this->partages['Bdd']; |
} |
public function getCache($dossierStockage = null) { |
if (!isset($this->partages['Cache'])){ |
$params = array( |
'mise_en_cache' => $this->getParametre('cache'), |
'stockage_chemin' => is_null($dossierStockage) ? $this->getParametre('chemincache') : $dossierStockage, |
'duree_de_vie' => $this->getParametre('dureecache') |
); |
$this->partages['Cache'] = new CacheSimple($params); |
} |
return $this->partages['Cache']; |
} |
public function getRestClient() { |
if (!isset($this->partages['RestClient'])){ |
$this->partages['RestClient'] = new RestClient(); |
} |
return $this->partages['RestClient']; |
} |
public function getQrCode() { |
if (!isset($this->partages['QrCode'])){ |
$this->partages['QrCode'] = new QrCode($this); |
} |
return $this->partages['QrCode']; |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/TableauManipulateur.php |
---|
New file |
0,0 → 1,58 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe fournissant des méthodes de manipulation de tableau (Array). |
* |
* @category PHP 5.2 |
* @package eFlore/Bibliotheque |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org) |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 |
* @version $Id$ |
*/ |
class TableauManipulateur { |
private $tableau = array(); |
public function __construct(Array $tableau = null) { |
if (is_array($tableau)) { |
$this->setTableau($tableau); |
} |
} |
public function setTableau(Array $tableau) { |
$this->tableau = $tableau; |
} |
public function getTableau() { |
return $this->tableau; |
} |
/** |
* Etend le tableau principal avec les données du tableau à copier. Si des clés sont identiques entre les deux tableaux |
* une excetion est déclenchée et la valeur du tableau à étendre est gardée. Si les deux tableaux ont des clés numériques |
* leurs valeurs sont gardées (à la différence de array_merge). |
* Le tableau à copier est passé par copie et il est progressivement détruit pour éviter la consomation |
* de mémoire. |
* |
* @param array $tableau_a_copier |
* @return void |
*/ |
public function etendreAvec(Array $tableau_a_copier) { |
$cles_existantes = null; |
foreach ($tableau_a_copier as $cle => $val) { |
if (array_key_exists($cle, $this->tableau) == false) { |
$this->tableau[$cle] = $val; |
unset($tableau_a_copier[$cle]); |
} else { |
$cles_existantes[] = $cle; |
} |
} |
if (is_array($cles_existantes)) { |
$message = "Le tableau a étendre contenait déjà les clés suivantes : ".implode(', ', $cles_existantes); |
throw new Exception($message); |
} |
} |
} |
?> |
/tags/v0.1-20130829/bibliotheque/NomCourant.php |
---|
New file |
0,0 → 1,46 |
<?php |
class NomCourant { |
private $nns = null; |
private $nnr = null; |
private $selectionne = null; |
private $retenu = null; |
public function __construct($num_nom_selectionne, Noms $noms, Taxons $taxons) { |
$this->nns = $num_nom_selectionne; |
$this->selectionne = new Nom($noms->getNom($this->nns)); |
$this->retenu = new Nom($taxons->getTaxon($this->nns)); |
$this->nnr = $this->retenu->get('id'); |
$taxons_sup = $taxons->getTaxonsSup($this->nnr); |
$this->taxons_sup = $taxons_sup[$this->nnr]; |
$this->retenu->setTaxonsSuperieurs($taxons_sup, $this->nnr); |
} |
/** |
* Retour le numéro du nom sélectionné courant. |
* |
* @return le numéro du nom sélectionné. |
*/ |
public function getNns() { |
return $this->nns; |
} |
public function getNnr() { |
return $this->nnr; |
} |
public function getNomSelectionne() { |
return $this->selectionne; |
} |
public function getNomRetenu() { |
return $this->retenu; |
} |
public function getNt() { |
return $this->retenu->get('num_taxonomique'); |
} |
} |
?> |