source: spip-zone/_squelettes_/bloog/plug_exif.php @ 1483

Last change on this file since 1483 was 1483, checked in by webmaster@…, 14 years ago

article, discussion, mes fonctions, plug exif,

File size: 4.6 KB
Line 
1<?php
2
3function verifier_JPG_TIFF($id_document) {
4        if ($id_document > 0) {
5                $query = "SELECT id_type FROM spip_documents WHERE id_document = $id_document";
6                $result = spip_query($query);
7                if ($row = spip_fetch_array($result)) {
8                        $id_type = $row['id_type'];
9                }
10        }
11        return (($id_type==1) || ($id_type==6));
12}
13
14function tag_exif($url_document,$section='',$tag='') {
15  $to_ret = '';
16  static $last_url;
17  static $last_exif;
18
19  if($last_url == $url_document) {
20        $exif = $last_exif;
21  } else {
22        $exif = $last_exif =  @exif_read_data($url_document, 0, true);
23        $last_url = $url_document;
24  }
25
26  if($exif) {
27        if(($section != '') && ($tag != '')) {
28          $to_ret = $exif[$section][$tag];
29        } else if($section) {
30          if($exif[$section]) {
31                foreach ($exif[$section] as $name => $val) {
32                  $to_ret .= "<B>$section.$name</B>: $val<br />\n";
33                }
34          }
35        } else {
36          foreach ($exif as $key => $section) {
37                foreach ($section as $name => $val) {
38                  $to_ret .= "<B>$key.$name</B>: $val<br />\n";
39                }
40          }
41        }
42  }
43  return $to_ret;
44}
45
46function balise_EXIF($params) {
47
48  if ($a = $params->param) {
49        $sinon = array_shift($a);
50        if  (!array_shift($sinon)) {
51          $params->fonctions = $a;
52          array_shift( $params->param );
53          $section = array_shift($sinon);
54          $section = ($section[0]->type=='texte') ? $section[0]->texte : '';
55          $tag = array_shift($sinon);
56          $tag = ($tag[0]->type=='texte') ? $tag[0]->texte : '';
57        }
58  }
59
60  //  list($section,$tag) = split(',',param_balise($params));
61
62  $section = addslashes($section);
63  $tag = addslashes($tag);
64
65  $id_doc = champ_sql('id_document', $params);
66
67  $params->code = "(verifier_JPG_TIFF($id_doc))?(tag_exif(generer_url_document($id_doc),'$section','$tag')):''";
68  $params->type = 'php';
69 
70  return $params;
71}
72
73function generer_url_logo_EXIF($filename) {
74
75  $thumbname = substr($filename,0,-4).".exif.jpg";
76
77  if(file_exists($thumbname)) {
78        return $thumbname;
79  }
80
81  $image = exif_thumbnail($filename);
82  if ($image!==false) {
83        $handle = fopen ($thumbname, 'a');
84        fwrite($handle, $image);
85        fclose($handle);
86        return $thumbname;
87  }
88 
89  return '';
90
91}
92
93function generer_html_logo_EXIF($url_doc,$code_lien='',$align='') {
94
95  if($code_lien) {
96        $code = "<a href=\"$code_lien\">";
97  }
98
99  $code .= "<IMG src=\"$url_doc\"".(($align)?"align=$align":'').">";
100  if($code_lien) {
101        $code .= "</a>";
102  }
103
104  return $code;
105}
106
107function balise_LOGO_EXIF($p) {
108
109  // analyser les filtres
110  // analyser les faux filtres,
111  // supprimer ceux qui ont le tort d'etre vrais
112  $flag_fichier = 0;
113  $filtres = '';
114  if (is_array($p->fonctions)) {
115        foreach($p->fonctions as $couple) {
116          // eliminer les faux filtres
117          if (!$flag_stop) {
118                array_shift($p->param);
119                $nom = $couple[0];
120                if (ereg('^(left|right|center|top|bottom)$', $nom))
121                  $align = $nom;
122                else if ($nom == 'lien') {
123                  $flag_lien_auto = 'oui';
124                  $flag_stop = true;
125                }
126                else if ($nom == 'fichier') {
127                  $flag_fichier = 1;
128                                        $flag_stop = true;
129                }
130                // double || signifie "on passe aux filtres"
131                else if ($nom == '') {
132                  if (!$params = $couple[1])
133                        $flag_stop = true;
134                }
135                else if ($nom) {
136                  $lien = $nom;
137                  $flag_stop = true;
138                } else {
139                 
140                }
141          }
142          // apres un URL ou || ou |fichier ce sont
143          // des filtres (sauf left...lien...fichier)
144        }
145  }
146 
147  $id_doc = champ_sql('id_document', $p);
148  $code_lien = '';
149
150  $url_doc = "(verifier_JPG_TIFF($id_doc))?(generer_url_logo_EXIF(generer_url_document($id_doc))):''";
151
152
153  //
154  // Preparer le code du lien
155  //
156  // 1. filtre |lien
157  if ($flag_lien_auto AND !$lien) {
158        $code_lien = "$url_doc";
159  } else if ($lien) {
160        // 2. lien indique en clair (avec des balises : imprimer#ID_ARTICLE.html)
161        $code_lien = "'".texte_script(trim($lien))."'";
162                while (ereg("^([^#]*)#([A-Za-z_]+)(.*)$", $code_lien, $match)) {
163                        $c = new Champ();
164                        $c->nom_champ = $match[2];
165                        $c->id_boucle = $p->id_boucle;
166                        $c->boucles = &$p->boucles;
167                        $c->descr = $p->descr;
168                        $c = calculer_champ($c);
169                        $code_lien = str_replace('#'.$match[2], "'.".$c.".'", $code_lien);
170                }
171                // supprimer les '' disgracieux
172                $code_lien = ereg_replace("^''\.|\.''$", "", $code_lien);
173          }
174 
175  if($flag_fichier) {
176        $p->code = "ereg_replace(\"^IMG/\",\"\",$url_doc)";
177        $p->type = 'php';
178        return $p;
179  }
180 
181  if(!$code_lien)
182        $code_lien = "''";
183 
184 
185  if(!$align)
186        $align = "''";
187 
188  $p->code = "generer_html_logo_EXIF($url_doc,$code_lien,$align)";
189  $p->type = 'php';
190  return $p;
191}
192function date_EXIF2SPIP($date) {
193  return preg_replace('/^([0-9]*):([0-9]*):([0-9]*) /','\1-\2-\3 ',$date);}
194?>
Note: See TracBrowser for help on using the repository browser.