[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / gis / inc / iptc.php
index 9eff943..56baaa3 100644 (file)
@@ -5,48 +5,48 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 //#############################################################################################
 //##############################################################################################
 
-/* INFOS SUR LE FICHIER 
+/* INFOS SUR LE FICHIER
 
-Nom : iptc.class.php 
-Rôle : contient la classe permettant de gérer les IPTC d'un fichier image 
-Développeur(s) : Arica Alex, Thies C. Arntzen 
+Nom : iptc.class.php
+Rôle : contient la classe permettant de gérer les IPTC d'un fichier image
+Développeur(s) : Arica Alex, Thies C. Arntzen
 
-FIN INFOS SUR LE FICHIER 
+FIN INFOS SUR LE FICHIER
 
 
-INFOS SUR LA CLASSE 'class_iptc' 
+INFOS SUR LA CLASSE 'class_iptc'
 
-REFERENCES : Développée le 04 Octobre 02 par Arica Alex avec l'aide de Thies C. Arntzen 
+REFERENCES : Développée le 04 Octobre 02 par Arica Alex avec l'aide de Thies C. Arntzen
 
-ROLE : permet de manipuler les iptc d'une image 
+ROLE : permet de manipuler les iptc d'une image
 
-VARIABLES : 
-- $h_codesIptc 
-- $h_cheminFichier 
-- $h_iptcData 
+VARIABLES :
+- $h_codesIptc
+- $h_cheminFichier
+- $h_iptcData
 
-METHODES : 
-- fct_lireIPTC 
-- fct_ecrireIPTC 
-- fct_iptcMaketag 
+METHODES :
+- fct_lireIPTC
+- fct_ecrireIPTC
+- fct_iptcMaketag
 
-FIN INFOS SUR LA CLASSE 
+FIN INFOS SUR LA CLASSE
 
-*/ 
+*/
 
 
-class class_IPTC 
-{ 
+class class_IPTC
+{
 
 
 
-/* VARIABLES statics */ 
+/* VARIABLES statics */
 
-var $h_codesIptc; /* $h_codesIptc : (tableau associatif) contient les codes des champs IPTC associés à un libellé */ 
-var $h_cheminImg; /* $h_cheminImg : (chaine) contient le chemin complet du fichier d'image */ 
-var $h_iptcData; /* $h_iptcData : (chaine) contient les données encodées de l'iptc de l'image */ 
+var $h_codesIptc; /* $h_codesIptc : (tableau associatif) contient les codes des champs IPTC associés à un libellé */
+var $h_cheminImg; /* $h_cheminImg : (chaine) contient le chemin complet du fichier d'image */
+var $h_iptcData; /* $h_iptcData : (chaine) contient les données encodées de l'iptc de l'image */
 
-/* FIN VARIABLES statics 
+/* FIN VARIABLES statics
 
 
 
@@ -56,7 +56,7 @@ var $h_iptcData; /* $h_iptcData : (chaine) contient les données encodées de l'
 
 
 
-------------------------------------------------------------------------------------------------------- 
+-------------------------------------------------------------------------------------------------------
 
 
 
@@ -65,68 +65,68 @@ var $h_iptcData; /* $h_iptcData : (chaine) contient les données encodées de l'
 
 
 
-INFOS SUR LA FONCTION 
+INFOS SUR LA FONCTION
 
-ROLE : constructeur 
-FONCTION : class_IPTC($cheminImg) 
-DESCRIPTION DES PARAMETRES : 
-- $cheminImg = (chaine) le chemin complet du fichier d'image à traiter 
+ROLE : constructeur
+FONCTION : class_IPTC($cheminImg)
+DESCRIPTION DES PARAMETRES :
+- $cheminImg = (chaine) le chemin complet du fichier d'image à traiter
 
-FIN INFOS SUR LA FONCTION */ 
+FIN INFOS SUR LA FONCTION */
 
 
-function class_IPTC($cheminImg) 
-{ 
+function class_IPTC($cheminImg)
+{
 
-// Inititalisations 
+// Inititalisations
 
-// Les valeurs IPTC pouvant être manipulées 
-$this -> h_codesIptc = array("005" => "objectName", 
-"007" => "editStatus", 
-"010" => "priority", 
-"015" => "category", 
-"020" => "supplementalCategory", 
-"022" => "fixtureIdentifier", 
-"025" => "keywords", 
-"030" => "releaseDate", 
-"035" => "releaseTime", 
-"040" => "specialInstructions", 
-"045" => "referenceService", 
-"047" => "referenceDate", 
-"050" => "referenceNumber", 
-"055" => "createdDate", 
-"060" => "createdTime", 
-"065" => "originatingProgram", 
-"070" => "programVersion", 
-"075" => "objectCycle", 
-"080" => "byline", 
-"085" => "bylineTitle", 
-"090" => "city", 
-"095" => "provinceState", 
-"100" => "countryCode", 
-"101" => "country", 
-"103" => "originalTransmissionReference", 
-"105" => "headline", 
-"110" => "credit", 
-"115" => "source", 
-"116" => "copyright", 
-"120" => "caption", 
-"121" => "localCaption", 
-"122" => "captionWriter"); 
+// Les valeurs IPTC pouvant être manipulées
+$this -> h_codesIptc = array("005" => "objectName",
+"007" => "editStatus",
+"010" => "priority",
+"015" => "category",
+"020" => "supplementalCategory",
+"022" => "fixtureIdentifier",
+"025" => "keywords",
+"030" => "releaseDate",
+"035" => "releaseTime",
+"040" => "specialInstructions",
+"045" => "referenceService",
+"047" => "referenceDate",
+"050" => "referenceNumber",
+"055" => "createdDate",
+"060" => "createdTime",
+"065" => "originatingProgram",
+"070" => "programVersion",
+"075" => "objectCycle",
+"080" => "byline",
+"085" => "bylineTitle",
+"090" => "city",
+"095" => "provinceState",
+"100" => "countryCode",
+"101" => "country",
+"103" => "originalTransmissionReference",
+"105" => "headline",
+"110" => "credit",
+"115" => "source",
+"116" => "copyright",
+"120" => "caption",
+"121" => "localCaption",
+"122" => "captionWriter");
 
 
-// On enregistre le chemin de l'image à traiter 
-$this -> h_cheminImg = $cheminImg; 
+// On enregistre le chemin de l'image à traiter
+$this -> h_cheminImg = $cheminImg;
 
 
-// On extrait les données encodées de l'iptc 
+// On extrait les données encodées de l'iptc
 // getimagesize($this -> h_cheminImg, &$info); //avant,marche pas sinon
-getimagesize($this -> h_cheminImg, $info); //marche sans le & 
-$this -> h_iptcData = $info["APP13"]; 
+getimagesize($this -> h_cheminImg, $info); //marche sans le &
+$this -> h_iptcData = $info["APP13"];
 
-} 
+}
 
-/* FIN FONCTION class_IPTC(); 
+/* FIN FONCTION class_IPTC();
 
 
 
@@ -136,7 +136,7 @@ $this -> h_iptcData = $info["APP13"];
 
 
 
-------------------------------------------------------------------------------------------------------- 
+-------------------------------------------------------------------------------------------------------
 
 
 
@@ -145,38 +145,38 @@ $this -> h_iptcData = $info["APP13"];
 
 
 
-INFOS SUR LA FONCTION 
+INFOS SUR LA FONCTION
 
-ROLE : lit les IPTC d'une image et les renvoie dans un tableau associatif 
-FONCTION : fct_lireIPTC() 
-TYPE RETOURNE : chaine sous forme de tableau associatif 
+ROLE : lit les IPTC d'une image et les renvoie dans un tableau associatif
+FONCTION : fct_lireIPTC()
+TYPE RETOURNE : chaine sous forme de tableau associatif
 
-FIN INFOS SUR LA FONCTION */ 
+FIN INFOS SUR LA FONCTION */
 
-function fct_lireIPTC() 
-{ 
-       $tblIPTC = iptcparse($this -> h_iptcData); 
-       
-       while( (is_array($tblIPTC)) && (list($codeIPTC, $valeurIPTC) = each($tblIPTC)) ) 
-       { 
-               $codeIPTC = str_replace("2#", "", $codeIPTC); 
-               
-               if( ($codeIPTC != "000") && ($codeIPTC != "140")  && $this->h_codesIptc["$codeIPTC"]) 
-               { 
-                       while(list($index, ) = each($valeurIPTC)) 
-                       { 
+function fct_lireIPTC()
+{
+       $tblIPTC = iptcparse($this -> h_iptcData);
+
+       while( (is_array($tblIPTC)) && (list($codeIPTC, $valeurIPTC) = each($tblIPTC)) )
+       {
+               $codeIPTC = str_replace("2#", "", $codeIPTC);
+
+               if( ($codeIPTC != "000") && ($codeIPTC != "140")  && $this->h_codesIptc["$codeIPTC"])
+               {
+                       while(list($index, ) = each($valeurIPTC))
+                       {
                                if ($this->h_codesIptc["$codeIPTC"]) $codeIPTC = $this->h_codesIptc["$codeIPTC"];
-                               $lesIptc[$codeIPTC] .= $valeurIPTC[$index].$retourLigne; 
-                               $retourLigne = "\n"; 
-                       } 
-               } 
-       } 
-       
-       if(is_array($lesIptc)) return $lesIptc; 
-       else return false; 
-} 
+                               $lesIptc[$codeIPTC] .= $valeurIPTC[$index].$retourLigne;
+                               $retourLigne = "\n";
+                       }
+               }
+       }
+
+       if(is_array($lesIptc)) return $lesIptc;
+       else return false;
+}
 
-/* FIN FONCTION fct_lireIPTC(); 
+/* FIN FONCTION fct_lireIPTC();
 
 
 
@@ -185,7 +185,7 @@ function fct_lireIPTC()
 
 
 
-------------------------------------------------------------------------------------------------------- 
+-------------------------------------------------------------------------------------------------------
 
 
 
@@ -194,79 +194,79 @@ function fct_lireIPTC()
 
 
 
-INFOS SUR LA FONCTION 
+INFOS SUR LA FONCTION
 
-ROLE : écrit des IPTC dans le fichier image 
-FONCTION : fct_ecrireIPTC() 
-DESCRIPTION DES PARAMETRES : 
-- $tblIPTC_util = (tableau associatif) contient les codes des champs IPTC à modifier associés leur valeur 
-- $cheminImgAModifier = (chaine) stocke le chemin de l'image dont l'IPTC est à modifier ; s'il est null 
-le chemin sera celui contenu dans '$this -> h_cheminImg' 
-TYPE RETOURNE : booléen 
+ROLE : écrit des IPTC dans le fichier image
+FONCTION : fct_ecrireIPTC()
+DESCRIPTION DES PARAMETRES :
+- $tblIPTC_util = (tableau associatif) contient les codes des champs IPTC à modifier associés leur valeur
+- $cheminImgAModifier = (chaine) stocke le chemin de l'image dont l'IPTC est à modifier ; s'il est null
+le chemin sera celui contenu dans '$this -> h_cheminImg'
+TYPE RETOURNE : booléen
 
-FIN INFOS SUR LA FONCTION */ 
+FIN INFOS SUR LA FONCTION */
 
-function fct_ecrireIPTC($tblIPTC_util, $cheminImgAModifier = "") 
-{ 
+function fct_ecrireIPTC($tblIPTC_util, $cheminImgAModifier = "")
+{
 
-// La tableau devant contenir des IPTC est vide ou n'est pas un tableau associatif 
-if( (empty($tblIPTC_util)) || (!is_array($tblIPTC_util)) ) return false; 
+// La tableau devant contenir des IPTC est vide ou n'est pas un tableau associatif
+if( (empty($tblIPTC_util)) || (!is_array($tblIPTC_util)) ) return false;
 
 
-// Si le chemin de l'image à modifier est vide alors on lui spécifie le chemin par défaut 
-if(empty($cheminImgAModifier)) $cheminImgAModifier = $this -> h_cheminImg; 
+// Si le chemin de l'image à modifier est vide alors on lui spécifie le chemin par défaut
+if(empty($cheminImgAModifier)) $cheminImgAModifier = $this -> h_cheminImg;
 
 
-// On récupère l'IPTC du fichier image courant 
-$tblIPTC_old = iptcparse($this -> h_iptcData); 
+// On récupère l'IPTC du fichier image courant
+$tblIPTC_old = iptcparse($this -> h_iptcData);
 
 
-// On prélève le tableau contenant les codes et les valeurs des IPTC de la photo 
-while(list($codeIPTC, $codeLibIPTC) = each($this -> h_codesIptc)) 
-{ 
+// On prélève le tableau contenant les codes et les valeurs des IPTC de la photo
+while(list($codeIPTC, $codeLibIPTC) = each($this -> h_codesIptc))
+{
 
-// On teste si les données originelles correspondant au code en cours sont présents 
-if (is_array($tblIPTC_old["2#".$codeIPTC])) $valIPTC_new = $tblIPTC_old["2#".$codeIPTC]; 
-else $valIPTC_new = array(); 
+// On teste si les données originelles correspondant au code en cours sont présents
+if (is_array($tblIPTC_old["2#".$codeIPTC])) $valIPTC_new = $tblIPTC_old["2#".$codeIPTC];
+else $valIPTC_new = array();
 
 
-// On remplace les valeurs des IPTC demandées 
-if (is_array($tblIPTC_util[$codeIPTC])) 
-{ 
-if (count($tblIPTC_util[$codeIPTC])) $valIPTC_new = $tblIPTC_util[$codeIPTC]; 
+// On remplace les valeurs des IPTC demandées
+if (is_array($tblIPTC_util[$codeIPTC]))
+{
+if (count($tblIPTC_util[$codeIPTC])) $valIPTC_new = $tblIPTC_util[$codeIPTC];
 
-}else{ 
+}else{
 
-$val = trim(strval($tblIPTC_util[$codeIPTC])); 
-if (strlen($val)) $valIPTC_new[0] = $val; 
-} 
+$val = trim(strval($tblIPTC_util[$codeIPTC]));
+if (strlen($val)) $valIPTC_new[0] = $val;
+}
 
 
-// On crée un nouveau iptcData à partir de '$tblIPTC_new' qui contient le code et la valeur de l'IPTC 
-foreach($valIPTC_new as $val) 
-{ 
-$iptcData_new .= $this -> fct_iptcMaketag(2, $codeIPTC, $val); 
-} 
+// On crée un nouveau iptcData à partir de '$tblIPTC_new' qui contient le code et la valeur de l'IPTC
+foreach($valIPTC_new as $val)
+{
+$iptcData_new .= $this -> fct_iptcMaketag(2, $codeIPTC, $val);
+}
 
-} 
+}
 
 
-/* A partir du nouveau iptcData contenu dans '$iptcData_new' on crée grâce à la fonction 'iptcembed()' 
-le contenu binaire du fichier image avec le nouveau IPTC inclu */ 
-$contenuImage = iptcembed($iptcData_new, $this -> h_cheminImg); 
+/* A partir du nouveau iptcData contenu dans '$iptcData_new' on crée grâce à la fonction 'iptcembed()'
+le contenu binaire du fichier image avec le nouveau IPTC inclu */
+$contenuImage = iptcembed($iptcData_new, $this -> h_cheminImg);
 
 
-// Ecriture dans le fichier image 
-$idFichier = fopen($cheminImgAModifier, "wb"); 
-fwrite($idFichier, $contenuImage); 
-fclose($idFichier); 
+// Ecriture dans le fichier image
+$idFichier = fopen($cheminImgAModifier, "wb");
+fwrite($idFichier, $contenuImage);
+fclose($idFichier);
 
 
-return true; 
+return true;
 
-} 
+}
 
-/* FIN FONCTION fct_ecrireIPTC(); 
+/* FIN FONCTION fct_ecrireIPTC();
 
 
 
@@ -275,7 +275,7 @@ return true;
 
 
 
-------------------------------------------------------------------------------------------------------- 
+-------------------------------------------------------------------------------------------------------
 
 
 
@@ -284,44 +284,44 @@ return true;
 
 
 
-INFOS SUR LA FONCTION 
+INFOS SUR LA FONCTION
 
-ROLE : permet de transformer une valeur de d'IPTC (code + valeur) en iptcData 
-AUTEUR : Thies C. Arntzen 
-FONCTION : fct_iptcMaketag($rec, $dat, $val) 
-DESCRIPTION DES PARAMETRES : 
-- $rec = (entier) toujours à mettre à 2 
-- $dat = (chaine) le code de l'IPTC (de type '110' et non '2#110') 
-- $val = (chaine) la valeur de l'IPTC 
-TYPE RETOURNE : booléen 
+ROLE : permet de transformer une valeur de d'IPTC (code + valeur) en iptcData
+AUTEUR : Thies C. Arntzen
+FONCTION : fct_iptcMaketag($rec, $dat, $val)
+DESCRIPTION DES PARAMETRES :
+- $rec = (entier) toujours à mettre à 2
+- $dat = (chaine) le code de l'IPTC (de type '110' et non '2#110')
+- $val = (chaine) la valeur de l'IPTC
+TYPE RETOURNE : booléen
 
-FIN INFOS SUR LA FONCTION */ 
+FIN INFOS SUR LA FONCTION */
 
-function fct_iptcMaketag($rec, $dat, $val) 
-{ 
-$len = strlen($val); 
-if ($len < 0x8000) 
-return chr(0x1c).chr($rec).chr($dat). 
-chr($len >> 8). 
-chr($len & 0xff). 
-$val; 
-else 
-return chr(0x1c).chr($rec).chr($dat). 
-chr(0x80).chr(0x04). 
-chr(($len >> 24) & 0xff). 
-chr(($len >> 16) & 0xff). 
-chr(($len >> 8 ) & 0xff). 
-chr(($len ) & 0xff). 
-$val; 
-} 
+function fct_iptcMaketag($rec, $dat, $val)
+{
+$len = strlen($val);
+if ($len < 0x8000)
+return chr(0x1c).chr($rec).chr($dat).
+chr($len >> 8).
+chr($len & 0xff).
+$val;
+else
+return chr(0x1c).chr($rec).chr($dat).
+chr(0x80).chr(0x04).
+chr(($len >> 24) & 0xff).
+chr(($len >> 16) & 0xff).
+chr(($len >> 8 ) & 0xff).
+chr(($len ) & 0xff).
+$val;
+}
 
-// FIN FONCTION fct_iptcMaketag(); 
+// FIN FONCTION fct_iptcMaketag();
 
 
 
 
 
-} 
+}
 
 /* Fin class_IPTC */