Retour : Page Principale > sommaire aide > sommaire aide logiciels

TapirLink

Voir aussi

Installation

Télécharger l'archive tapirlink_tb_0.7.x.zip sur http://tela-botanica.net/dl/
Dézipper l'archive est l'uploader sur le serveur.

Ajouter le fichier .htaccess suivant dans le dossier /admin :
AuthUserFile /home/telabotap/www/phpmyadmin/.htpasswd
AuthGroupFile /dev/null
AuthName "Administrateur de TapirLink"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>


Ajouter le fichier .htaccess suivant à la racine (c'est à dire au même niveau que le dossier www) :
# Raccourci pour les applications intégrées à Papyrus
RewriteEngine On
# Redirection vers les services TapirLink
RewriteRule ^tapirlink(.*)$ www/tapirlink$1 [QSA,L]
RewriteRule ^$ www/index.php [QSA,L]

Ajouter un fichier .htaccess comme suit dans tous les dossiers présents au même niveau que le dossier www sauf stats et log:
deny from all

Copier le fichier www/localconfig_dist.php en www/localconfig.php
Décommenter les lignes : 276 et 278
$domains = array( 'api.tela-botanica.org', 'tdwg.org', 'gbif.org', 'cria.org.br', 'dublincore.org', 'www.w3.org', 'darwincore.googlecode.com', $_SERVER['HTTP_HOST'], '127.0.0.1', 'localhost' );
define( 'TP_ACCEPTED_DOMAINS', serialize( $domains ) );

Modifier la configuration dans www/localconfig.php selon les besoins.

Vérifier que votre fichier de config est correctement modifié en ouvrant l'url du fichier suivant dans un navigateur:
tapirlink/admin/check.php

Règles pour Nginx



Erreurs

Erreur : [phpxsd] Could not find namespace declaration for prefix "dwc" / Unknown type "dwc:DateTimeISO" for node "/dwrec:DarwinRecordSet/dwrec:DarwinRecord/dwcore:EarliestDateCollected". It will be discarded
Ce type d'erreur est du à une différence de syntaxe entre la valeur de l'attribut type du schéma XML du standard et celle de l'attribut name de l’élément de base d'un autre schéma XML.
Dans notre cas, il faut remplacer dwc:DateTimeISO par dwc:dateTimeISO.

Erreur : None of the node paths in the output model mapping section are accepted paths
Ce problème peut provenir d'une différence de notation des "name spaces" XML entre le fichier contenant le "output model" (le fichier xml avec la balise racine outputModel) et son schema XML indiqué dans la balise schema. Souvent un slash "/" final dans le name space peut provoquer l'erreur !

Erreur : Failed to count matched records
Si vous obtenez cette erreur c'est que vous avez saisie une apostrophe dans le mapping dans une champ de type "fixed value".
Pour supprimer l'erreur, rajouter une deuxième apostrophe devant celle que vous avez saisie. Ex. : "l'observation" devient "l''observation".

Erreur : mb_convert_encoding(): Illegal character encoding specified (/home/telabotap/www/tapirlink/classes/ TpServiceUtils.php:234)
Ceci peut être du à la tentative de passer du XML dans une champ mappé.
Utilisez à la place le format définit par le champ dynamicProperties.

Configurer le débogage dans Tapirlink
  • Aller en ftp dans le dossier .../tapirlink/www/
  • Copier le fichier localconfig_dist.php et renommez la copie localconfig.php
  • Éditez le fichier localconfig.php et dé-commentez/modifiez les lignes comme indiquez ci-dessous (n'oubliez de remplacer "/home/telabotap/www/" par le chemin correspondant sur votre serveur)
  • Vous pourrez ensuite ouvir le fichier /home/telabotap/www/tapirlink/log/debug.txt pour voir les logs de débogage de Tapirlink.
  • Une fois le problème résolu, n'oubliez pas de désactivez le débogage et d'activez le cache : define('TP_ALLOW_DEBUG', false); define('TP_USE_CACHE', true);
<?php
date_default_timezone_set
('Europe/Paris');
define('TP_CONFIG_DIR','/home/telabotap/www/tapirlink/config');
define('TP_LOG_DIR','/home/telabotap/www/tapirlink/log/');
define('TP_LOG_NAME','history.txt');
define'TP_DIAG_LEVEL');
define('TP_ALLOW_DEBUG'true);
define('TP_LOG_DEBUG'true);
define('TP_DEBUG_DIR'TP_LOG_DIR);
define('TP_DEBUG_LOGFILE''debug.txt');
define('TP_USE_CACHE'false);
define('TP_CACHE_DIR''/home/telabotap/www/tapirlink/cache');
$langs = array('fr' => 'French',
               
'en' => 'English',
               
'de' => 'German',
               
'it' => 'Italian',
               
'pt' => 'Portuguese',
               
'es' => 'Spanish');
define'TP_LANG_OPTIONS'serialize$langs ) );
define('TP_LOCAL_REPOSITORY''http://www.tela-botanica.org/tapirlink/depot');
define('TP_FILE_RETRIEVAL_BEHAVIOUR''prefer_local');
?>


Configuration de Tapirlink avec les données de Tela Botanica

Mise en ligne dans TapirLink des données du CEL
Création d'une vue cel_tapir :
CREATE VIEW `cel_tapir` AS 
	select concat(_utf8'urn:lsid:tela-botanica.org:cel:',`o`.`id_observation`) AS `guid`,
		`o`.`id_observation` AS `observation_id`,
		date_format(`o`.`date_observation`,'%Y-%m-%d') AS `observation_date`,
		`o`.`nom_ret` AS `nom_scientifique_complet`,
		`o`.`nom_ret_nn` AS `nom_num_nomenclatural`,
		`o`.`nt` AS `nom_num_taxonomique`,
		`o`.`famille` AS `nom_famille`,
		`o`.`pays` AS `pays`,
		concat(_utf8'',`zg`.`nom`,' [INSEE:',`zg`.`code`,']') AS `lieu_commune_nom_complet`,
		`zg`.`nom` AS `lieu_commune_nom`,
		`zg`.`code` AS `lieu_commune_code_insee`,
		if((`zg`.`code` <> ''), 'Lion1906 version 26-05-2008 - http://www.lion1906.com/', NULL) AS `lieu_commune_source`,
		format(if((`o`.`latitude` <> ''), `o`.`latitude`, `zg`.`wgs84_latitude`), 5) AS `lieu_latitude`,
		format(if((`o`.`longitude` <> ''), `o`.`longitude`, `zg`.`wgs84_longitude`), 5) AS `lieu_longitude`,
		`o`.`geodatum` AS `lieu_geodatum`,
		if((`o`.`geodatum` <> ''), 'Coordonnées issues de l''utilisation de Google Map', NULL) AS `lieu_georeference_source`,
		`o`.`lieudit` AS `lieu_localite`,
		`o`.`prenom_utilisateur` AS `observateur_prenom`,
		`o`.`nom_utilisateur` AS `observateur_nom`,
		IF(`o`.`courriel_utilisateur` = '', '', concat(_utf8'',substring_index(`o`.`courriel_utilisateur`,'@',1), '@...')) AS `observateur_courriel`,
		concat(`o`.`prenom_utilisateur`,_utf8' ',`o`.`nom_utilisateur`) AS `observateur_nom_complet`,
		IF((concat(`o`.`prenom_utilisateur`,`o`.`nom_utilisateur`,`o`.`courriel_utilisateur`) IS NULL OR concat(`o`.`prenom_utilisateur`,`o`.`nom_utilisateur`,`o`.`courriel_utilisateur`)=''), 'anonyme', concat_ws(' ',`o`.`prenom_utilisateur`,`o`.`nom_utilisateur`,IF(`o`.`courriel_utilisateur` = '', '', concat('<',concat(_utf8'',substring_index(`o`.`courriel_utilisateur`,'@',1), '@...'),'>')), IF(`o`.`ce_utilisateur` REGEXP '^[0-9]+$', concat(' - http://www.tela-botanica.org/profil:', `o`.`ce_utilisateur`), ''))) AS `observateur_intitule`,
		`o`.`commentaire` AS `observation_commentaire`,
		concat(_utf8'nom_num_nomenclatural=',ifnull(`o`.`nom_sel_nn`, ""),'; ',
			'nom_sel=', ifnull(encodeToDcsv(`o`.`nom_sel`), ""),'; ',
			'nom_num_sel=', ifnull(`o`.`nom_sel_nn`, ""),'; ',
			'nom_num_taxonomique=', ifnull(`o`.`nt`, ""),'; ',
			'nom_referentiel=',encodeToDcsv(`o`.`nom_referentiel`),'; ',
			'saisie_date_transmission=',`o`.`date_transmission`,'; ',
			'saisie_date_creation=',`o`.`date_creation`,'; ',
			'ordre=',`o`.`ordre`,'; ',
			'station=', ifnull(encodeToDcsv(`o`.`station`), ""),'; ',
			'milieu=', ifnull(encodeToDcsv(`o`.`milieu`), ""),'; ',
			'mots_cles=',ifnull(encodeToDcsv(`o`.`mots_cles_texte`), ""),'; ',
			'zg_utm_secteur=', ifnull(encodeToDcsv(`zg`.`utm_secteur`), ""),'; '
			'zg_date_modification=',`zg`.`date_modification`) AS `observation_information_complement`,
		`o`.`date_modification` AS `saisie_date_modification`,
		`o`.`date_creation` AS `saisie_date_creation` 
	from (`cel_obs` `o` 
		left join `cel_zones_geo` `zg` on((`o`.`ce_zone_geo` = `zg`.`id_zone_geo`))) 
	where `o`.`transmission` = 1 
		AND (`o`.`mots_cles_texte` NOT LIKE '%sensible%' OR `o`.`mots_cles_texte` IS NULL) AND o.nom_referentiel not in ("", "null", "autre") and o.`nom_sel_nn` != 0 and o.nom_ret != "" AND `latitude` is not null;

Vue pour Legumino
CREATE VIEW `legumino_tapir` AS 
		SELECT CONVERT(concat('urn:lsid:tela-botanica.org:legumino:',`c`.`id_contributions`) USING utf8) COLLATE utf8_general_ci AS `guid`,
			`c`.`id_contributions` AS `observation_id`,
			`c`.`date` AS `observation_date`,
			CONVERT(`HTML_UnEncode`(concat_ws(' ',`l`.`Genre`,`l`.`Espece`,if((`l`.`TypeInfra3` <> ''),`l`.`TypeInfra3`,if((`l`.`TypeInfra2` <> ''),`l`.`TypeInfra2`,if((`l`.`TypeSousEspece` <> ''),`l`.`TypeSousEspece`,NULL))),if((`l`.`Infra3` <> ''),`l`.`Infra3`,if((`l`.`Infra2` <> ''),`l`.`Infra2`,if((`l`.`SousEspece` <> ''),`l`.`SousEspece`,NULL))),if((`l`.`AuteurInfra3` <> ''),`l`.`AuteurInfra3`,if((`l`.`AuteurInfra2` <> ''),`l`.`AuteurInfra2`,if((`l`.`AuteurSousEspece` <> ''),`l`.`AuteurSousEspece`,if((`l`.`Auteur` <> ''),`l`.`Auteur`,NULL)))))) USING utf8) COLLATE utf8_general_ci AS `nom_scientifique_complet`,
			`l`.`NumNomen` AS `nom_num_nomenclatural`,
			`l`.`NumTaxon` AS `nom_num_taxonomique`,
			CONVERT(`HTML_UnEncode`(`l`.`Famille`) USING utf8) COLLATE utf8_general_ci AS `nom_famille`,
			CONVERT(`HTML_UnEncode`(`l`.`Genre`) USING utf8) COLLATE utf8_general_ci AS `nom_genre`,
			CONVERT(`HTML_UnEncode`(`l`.`Espece`) USING utf8) COLLATE utf8_general_ci AS `nom_espece`,
			CONVERT(if((`l`.`TypeInfra3` <> ''),`l`.`TypeInfra3`,if((`l`.`TypeInfra2` <> ''),`l`.`TypeInfra2`,if((`l`.`TypeSousEspece` <> ''),`l`.`TypeSousEspece`,NULL))) USING utf8) COLLATE utf8_general_ci AS `nom_type`,
			CONVERT(`HTML_UnEncode`(if((`l`.`Infra3` <> ''),`l`.`Infra3`,if((`l`.`Infra2` <> ''),`l`.`Infra2`,if((`l`.`SousEspece` <> ''),`l`.`SousEspece`,NULL)))) USING utf8) COLLATE utf8_general_ci AS `nom_infra_sp`,
			CONVERT(`HTML_UnEncode`(if((`l`.`AuteurInfra3` <> ''),`l`.`AuteurInfra3`,if((`l`.`AuteurInfra2` <> ''),`l`.`AuteurInfra2`,if((`l`.`AuteurSousEspece` <> ''),`l`.`AuteurSousEspece`,if((`l`.`Auteur` <> ''),`l`.`Auteur`,NULL))))) USING utf8) COLLATE utf8_general_ci AS `nom_auteur`,
			CONVERT(`d`.`nom_departements` USING utf8) COLLATE utf8_general_ci AS `lieu_departement_nom`,
			CONVERT(concat(convert(`cm`.`nom_communes` using utf8),' [INSEE:',substr(`cm`.`code_insee`,4),']') USING utf8) COLLATE utf8_general_ci AS `lieu_commune_nom_complet`,
			CONVERT(`cm`.`nom_communes` USING utf8) COLLATE utf8_general_ci AS `lieu_commune_nom`,
			substr(`cm`.`code_insee`,4) AS `lieu_commune_code_insee`,
			`cm`.`latitude` AS `lieu_commune_latitude`,
			`cm`.`longitude` AS `lieu_commune_longitude`,
			CONVERT(`HTML_UnEncode`(`ct`.`prenom_contributeurs`) USING utf8) COLLATE utf8_general_ci AS `observateur_prenom`,
			CONVERT(`HTML_UnEncode`(`ct`.`nom_contributeurs`) USING utf8) COLLATE utf8_general_ci AS `observateur_nom`,
			CONVERT(`ct`.`mail` USING utf8) COLLATE utf8_general_ci AS `observateur_courriel`,
			CONVERT(`HTML_UnEncode`(concat_ws(' ',`ct`.`prenom_contributeurs`,`ct`.`nom_contributeurs`)) USING utf8) COLLATE utf8_general_ci AS `observateur_nom_complet`,
			CONVERT(`HTML_UnEncode`(concat_ws(' ',`ct`.`prenom_contributeurs`,`ct`.`nom_contributeurs`,concat('<',`ct`.`mail`,'>'))) USING utf8) COLLATE utf8_general_ci AS `observateur_intitule`,
			CONVERT(`HTML_UnEncode`(`c`.`commentaire`) USING utf8) COLLATE utf8_general_ci AS `observation_commentaire`,
			CONVERT(concat(_utf8'nom_num_nomenclatural=',`l`.`NumNomen`,'; nom_num_taxonomique=',`l`.`NumTaxon`) USING utf8) COLLATE utf8_general_ci AS `observation_information_complement`,
			date_format(`c`.`date_saisie`,'%Y-%m-%d 00:00:00') AS `saisie_date_modification` 
		FROM ((((`contributions` `c` 
			left join `communes` `cm` on((`c`.`code_insee` = `cm`.`code_insee`))) 
			left join `departements` `d` on((`cm`.`num_departements` = `d`.`num_departements`))) 
			left join `legumino` `l` on((`c`.`NumTaxon` = `l`.`NumTaxon`))) 
			left join `contributeurs` `ct` on((`c`.`id_contributeurs` = `ct`.`id_contributeurs`)));

Vue pour Pterido
CREATE VIEW `pterido_tapir` AS 
		select CONVERT(concat('urn:lsid:tela-botanica.org:pterido:',`c`.`id_contributions`) USING utf8) COLLATE utf8_general_ci AS `guid`,
			`c`.`id_contributions` AS `observation_id`,
			`c`.`date` AS `observation_date`,
			CONVERT(`HTML_UnEncode`(concat_ws(' ',`l`.`Genre`,`l`.`Espece`,if((`l`.`TypeInfra3` <> ''),`l`.`TypeInfra3`,if((`l`.`TypeInfra2` <> ''),`l`.`TypeInfra2`,if((`l`.`TypeSousEspece` <> ''),`l`.`TypeSousEspece`,NULL))),if((`l`.`Infra3` <> ''),`l`.`Infra3`,if((`l`.`Infra2` <> ''),`l`.`Infra2`,if((`l`.`SousEspece` <> ''),`l`.`SousEspece`,NULL))),if((`l`.`AuteurInfra3` <> ''),`l`.`AuteurInfra3`,if((`l`.`AuteurInfra2` <> ''),`l`.`AuteurInfra2`,if((`l`.`AuteurSousEspece` <> ''),`l`.`AuteurSousEspece`,if((`l`.`Auteur` <> ''),`l`.`Auteur`,NULL)))))) USING utf8) COLLATE utf8_general_ci AS `nom_scientifique_complet`,
			`l`.`NumNomen` AS `nom_num_nomenclatural`,
			`l`.`NumTaxon` AS `nom_num_taxonomique`,
			CONVERT(`HTML_UnEncode`(`l`.`Famille`) USING utf8) COLLATE utf8_general_ci AS `nom_famille`,
			CONVERT(`HTML_UnEncode`(`l`.`Genre`) USING utf8) COLLATE utf8_general_ci AS `nom_genre`,
			CONVERT(`HTML_UnEncode`(`l`.`Espece`) USING utf8) COLLATE utf8_general_ci AS `nom_espece`,
			CONVERT(if((`l`.`TypeInfra3` <> ''),`l`.`TypeInfra3`,if((`l`.`TypeInfra2` <> ''),`l`.`TypeInfra2`,if((`l`.`TypeSousEspece` <> ''),`l`.`TypeSousEspece`,NULL))) USING utf8) COLLATE utf8_general_ci AS `nom_type`,
			CONVERT(`HTML_UnEncode`(if((`l`.`Infra3` <> ''),`l`.`Infra3`,if((`l`.`Infra2` <> ''),`l`.`Infra2`,if((`l`.`SousEspece` <> ''),`l`.`SousEspece`,NULL)))) USING utf8) COLLATE utf8_general_ci AS `nom_infra_sp`,
			CONVERT(`HTML_UnEncode`(if((`l`.`AuteurInfra3` <> ''),`l`.`AuteurInfra3`,if((`l`.`AuteurInfra2` <> ''),`l`.`AuteurInfra2`,if((`l`.`AuteurSousEspece` <> ''),`l`.`AuteurSousEspece`,if((`l`.`Auteur` <> ''),`l`.`Auteur`,NULL))))) USING utf8) COLLATE utf8_general_ci AS `nom_auteur`,
			CONVERT(`d`.`nom_departements` USING utf8) COLLATE utf8_general_ci AS `lieu_departement_nom`,
			CONVERT(concat(convert(`cm`.`nom_communes` using utf8),' [INSEE:',substr(`cm`.`code_insee`,4),']') USING utf8) COLLATE utf8_general_ci  AS `lieu_commune_nom_complet`,
			CONVERT(`cm`.`nom_communes` USING utf8) COLLATE utf8_general_ci AS `lieu_commune_nom`,
			CONVERT(substr(`cm`.`code_insee`,4) USING utf8) COLLATE utf8_general_ci AS `lieu_commune_code_insee`,
			CONVERT(`cm`.`latitude` USING utf8) COLLATE utf8_general_ci AS `lieu_commune_latitude`,
			CONVERT(`cm`.`longitude` USING utf8) COLLATE utf8_general_ci AS `lieu_commune_longitude`,
			CONVERT(`HTML_UnEncode`(`ct`.`prenom_contributeurs`) USING utf8) COLLATE utf8_general_ci AS `observateur_prenom`,
			CONVERT(`HTML_UnEncode`(`ct`.`nom_contributeurs`) USING utf8) COLLATE utf8_general_ci AS `observateur_nom`,
			CONVERT(`ct`.`mail` USING utf8) COLLATE utf8_general_ci AS `observateur_courriel`,
			CONVERT(`HTML_UnEncode`(concat_ws(' ',`ct`.`prenom_contributeurs`,`ct`.`nom_contributeurs`)) USING utf8) COLLATE utf8_general_ci AS `observateur_nom_complet`,
			CONVERT(`HTML_UnEncode`(concat_ws(' ',`ct`.`prenom_contributeurs`,`ct`.`nom_contributeurs`,concat('<',`ct`.`mail`,'>'))) USING utf8) COLLATE utf8_general_ci AS `observateur_intitule`,
			CONVERT(`HTML_UnEncode`(`c`.`commentaire`) USING utf8) COLLATE utf8_general_ci AS `observation_commentaire`,
			CONVERT(concat(_utf8'nom_num_nomenclatural=',`l`.`NumNomen`,'; nom_num_taxonomique=',`l`.`NumTaxon`) USING utf8) COLLATE utf8_general_ci AS `observation_information_complement`,
			date_format(`c`.`date_saisie`,'%Y-%m-%d 00:00:00') AS `saisie_date_modification` 
		from ((((`contributions` `c` left join `communes` `cm` on((`c`.`code_insee` = `cm`.`code_insee`))) 
			left join `departements` `d` on((`cm`.`num_departements` = `d`.`num_departements`))) 
			left join `pterido` `l` on((`c`.`NumTaxon` = `l`.`NumTaxon`))) 
			left join `contributeurs` `ct` on((`c`.`id_contributeurs` = `ct`.`id_contributeurs`)));


Fonction Mysql pour encoder en DCSV une valeur
DROP FUNCTION `encodeToDcsv`//
CREATE FUNCTION `encodeToDcsv` (`x` VARCHAR( 255 ) CHARSET utf8) RETURNS VARCHAR( 255 ) CHARSET utf8 
NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER 
BEGIN 
DECLARE TextString VARCHAR( 255 ) ;
SET TextString = x;

IF INSTR( x, ';' ) THEN 
SET TextString = REPLACE( TextString, ';', '\;' ) ;
END IF ;

IF INSTR( x, '=' ) THEN 
SET TextString = REPLACE( TextString, '=', '\=' ) ;
END IF ;

RETURN TextString;

END


Fonction Mysql pour décoder les entités HTML
DROP FUNCTION `HTML_UnEncode`//
CREATE FUNCTION `HTML_UnEncode`(`x` VARCHAR(255) CHARSET latin1) RETURNS varchar(255) CHARSET latin1
BEGIN

DECLARE TextString VARCHAR(255) ;
SET TextString = x ;

IF INSTR( x , '&#34;' )
THEN SET TextString = REPLACE(TextString, '&#34;', '"') ;
END IF ;

IF INSTR( x , '&#38;' )
THEN SET TextString = REPLACE(TextString, '&#38;', '&') ;
END IF ;

IF INSTR( x , '&#60;' )
THEN SET TextString = REPLACE(TextString, '&#60;', '<') ;
END IF ;

IF INSTR( x , '&#62;' )
THEN SET TextString = REPLACE(TextString, '&#62;', '>') ;
END IF ;

IF INSTR( x , '&#145;' )
THEN SET TextString = REPLACE(TextString, '&#145;', '‘') ;
END IF ;

IF INSTR( x , '&#146;' )
THEN SET TextString = REPLACE(TextString, '&#146;', '''') ;
END IF ;

IF INSTR( x , '&#147;' )
THEN SET TextString = REPLACE(TextString, '&#147;', '“') ;
END IF ;

IF INSTR( x , '&#148;' )
THEN SET TextString = REPLACE(TextString, '&#148;', '”') ;
END IF ;

IF INSTR( x , '&#156;' )
THEN SET TextString = REPLACE(TextString, '&#156;', 'œ') ;
END IF ;

IF INSTR( x , '&#171;' )
THEN SET TextString = REPLACE(TextString, '&#171;', '«') ;
END IF ;

IF INSTR( x , '&#176;' )
THEN SET TextString = REPLACE(TextString, '&#176;', '°') ;
END IF ;

IF INSTR( x , '&#177;' )
THEN SET TextString = REPLACE(TextString, '&#177;', '±') ;
END IF ;

IF INSTR( x , '&#178;' )
THEN SET TextString = REPLACE(TextString, '&#178;', '²') ;
END IF ;

IF INSTR( x , '&#185;' )
THEN SET TextString = REPLACE(TextString, '&#185;', '¹') ;
END IF ;

IF INSTR( x , '&#187;' )
THEN SET TextString = REPLACE(TextString, '&#187;', '»') ;
END IF ;

IF INSTR( x , '&#201;' )
THEN SET TextString = REPLACE(TextString, '&#201;', 'É');
END IF ;

IF INSTR( x , '&#206;' )
THEN SET TextString = REPLACE(TextString, '&#206;', 'ÃŽ');
END IF ;

IF INSTR( x , '&#225;' )
THEN SET TextString = REPLACE(TextString, '&#225;', 'á');
END IF ;

IF INSTR( x , '&#224;' )
THEN SET TextString = REPLACE(TextString, '&#224;', 'à');
END IF ;

IF INSTR( x , '&#226;' )
THEN SET TextString = REPLACE(TextString, '&#226;', 'â');
END IF ;

IF INSTR( x , '&#228;' )
THEN SET TextString = REPLACE(TextString, '&#228;', 'ä');
END IF ;

IF INSTR( x , '&#231;' )
THEN SET TextString = REPLACE(TextString, '&#231;', 'ç');
END IF ;

IF INSTR( x , '&#232;' )
THEN SET TextString = REPLACE(TextString, '&#232;', 'è');
END IF ;

IF INSTR( x , '&#233;' )
THEN SET TextString = REPLACE(TextString, '&#233;', 'é');
END IF ;

IF INSTR( x , '&#234;' )
THEN SET TextString = REPLACE(TextString, '&#234;', 'ê');
END IF ;

IF INSTR( x , '&#235;' )
THEN SET TextString = REPLACE(TextString, '&#235;', 'ë');
END IF ;

IF INSTR( x , '&#237;' )
THEN SET TextString = REPLACE(TextString, '&#237;', 'í');
END IF ;

IF INSTR( x , '&#238;' )
THEN SET TextString = REPLACE(TextString, '&#238;', 'î');
END IF ;

IF INSTR( x , '&#239;' )
THEN SET TextString = REPLACE(TextString, '&#239;', 'ï');
END IF ;

IF INSTR( x , '&#242;' )
THEN SET TextString = REPLACE(TextString, '&#242;', 'ò');
END IF ;

IF INSTR( x , '&#244;' )
THEN SET TextString = REPLACE(TextString, '&#244;', 'ô');
END IF ;

IF INSTR( x , '&#246;' )
THEN SET TextString = REPLACE(TextString, '&#246;', 'ö');
END IF ;

IF INSTR( x , '&#249;' )
THEN SET TextString = REPLACE(TextString, '&#249;', 'ù');
END IF ;

IF INSTR( x , '&#251;' )
THEN SET TextString = REPLACE(TextString, '&#251;', 'û');
END IF ;

IF INSTR( x , '&#252;' )
THEN SET TextString = REPLACE(TextString, '&#252;', 'ü');
END IF ;

IF INSTR( x , '&#255;' )
THEN SET TextString = REPLACE(TextString, '&#255;', 'ÿ');
END IF ;

/* Vertical TAB */
IF INSTR( x , '' )
THEN SET TextString = REPLACE(TextString, '', ' ');
END IF ;

RETURN TextString ;

END


Corrections des fichiers de TapirLink v0.7.1
ATTENTION : pour les exemples de code PHP ci-dessous ne recopiez pas les balises ouvrantes et fermante de PHP. Elles sont là seulement pour afficher la coloration syntaxique.

/classes/FixedValueMapping.php ligne 122
<?php
return $rAdodb->qstr($this->mValue);
?>

/class/ TpServiceUtils.php ligne 226
<?php
// Nous devons faire confiance au format définit par le mapping.
// En effet, la présence des caractères XML spécial renvoit une erreur "mb_convert_encoding : illegal character"
// Il est donc nécessaire de les Ã©chapper avant. Mais ne connaissant pas l'encodage, cela est impossible
// Commentez les lignes suivantes :
/*
if ( function_exists( 'mb_check_encoding' ) )
{
  // If db encoding is incorrrect
  if ( ! mb_check_encoding( $data, $encoding ) )
  {
     // Try to detect encoding and force conversion
     mb_substitute_character("entity");
     $data = mb_convert_encoding( $data, 'UTF-8', mb_detect_encoding( $data ) );
  }
}*/
?>

/class/ TpSchemaInspector.php ligne 762 à 769
<?php
// Only abort if expression is required
if ( $expression->IsRequired() )
{
    
$this->_ActivateAbort$path );
    
$msg .= ' Aborting.';
    
TpDiagnostics::AppendDC_CONTENT_UNAVAILABLE$msgDIAG_WARN );
} else {
    
TpDiagnostics::AppendDC_CONTENT_UNAVAILABLE$msgDIAG_DEBUG );
}
?>


Corrections des fichiers de TapirLink v0.7.0
/stats/statistics_include.php ligne 2370
<?php
$returnedRecs
$infoArray'type' ] ] = (isset($returnedRecs$infoArray'type' ] ]) ? $returnedRecs$infoArray'type' ] ] + $infoArray'returnedrecs' ] : $infoArray'returnedrecs' ]);
?>

/stats/statistics_include.php ligne 2383
<?php
if( isset($infoArray'recstr' ])) {
  if( ! isset( 
$recordStructs$infoArray'recstr' ] ]  ) )
  {
    
$recordStructs$infoArray'recstr' ] ] = array('hits' => 0'total' => );
  }
  
$recordStructs$infoArray'recstr' ] ]['hits']++;
  
$recordStructs$infoArray'recstr' ] ]['total'] += $infoArray'returnedrecs' ];
}
?>

/stats/statistics_include.php ligne 2705
<?php
$customArray
[0] = (isset($name)?$name:'');
?>

/classes/TpUtils.php ligne 650
<?php
$s 
.= "\n(".print_r($key,true).')='.print_r($key,true);
?>