Subversion Repositories Sites.tela-botanica.org

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 david 1
<?php
2
 
3
/***************************************************************************\
4
 *  SPIP, Systeme de publication pour l'internet                           *
5
 *                                                                         *
6
 *  Copyright (c) 2001-2005                                                *
7
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8
 *                                                                         *
9
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11
\***************************************************************************/
12
 
13
 
14
include ("inc.php3");
15
include_ecrire ("inc_mots.php3");
16
include_ecrire ("inc_calendrier.php");
17
 
18
function http_afficher_rendez_vous($date_heure, $date_fin)
19
{
20
  global $spip_lang_rtl;
21
 
22
	if (jour($date_heure) == jour($date_fin) AND mois($date_heure) == mois($date_fin) AND annee($date_heure) == annee($date_fin)) {
23
	  echo "<p><center class='verdana2'>"._T('titre_rendez_vous')." ".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b><br><b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>";
24
	  echo " &nbsp; <img src='puce$spip_lang_rtl.gif' border='0'> &nbsp;  ".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</center>";
25
	} else {
26
	  echo "<p><center class='verdana2'>"._T('titre_rendez_vous')."<br> ".majuscules(nom_jour($date_heure))." <b>".majuscules(affdate($date_heure))."</b>, <b>".heures($date_heure)." "._T('date_mot_heures')." ".minutes($date_heure)."</b>";
27
	  echo "<center class='verdana2'><img src='puce$spip_lang_rtl.gif' border='0'> ".majuscules(nom_jour($date_fin))." ".majuscules(affdate($date_fin)).", <b>".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</b>";
28
	  //echo " &nbsp; <img src='puce$spip_lang_rtl.gif' border='0'> &nbsp;  ".heures($date_fin)." "._T('date_mot_heures')." ".minutes($date_fin)."</center>";
29
	}
30
}
31
 
32
function sql_nouveau_participant($nouv_auteur, $id_message)
33
{
34
  spip_query("DELETE FROM spip_auteurs_messages WHERE id_auteur='$nouv_auteur' AND id_message='$id_message'");
35
  spip_query("INSERT INTO spip_auteurs_messages (id_auteur,id_message,vu) VALUES ('$nouv_auteur','$id_message','non')");
36
}
37
 
38
function http_auteurs_ressemblants($cherche_auteur, $id_message)
39
{
40
  global $connect_id_auteur;
41
  $query = spip_query("
42
SELECT id_auteur, nom
43
FROM spip_auteurs
44
WHERE messagerie<>'non' AND id_auteur<>'$connect_id_auteur' AND pass<>'' AND login<>''");
45
  $table_auteurs = array();
46
  $table_ids = array();
47
  while ($row = spip_fetch_array($query)) {
48
    $table_auteurs[] = $row['nom'];
49
    $table_ids[] = $row['id_auteur'];
50
  }
51
  $resultat =  mots_ressemblants($cherche_auteur, $table_auteurs, $table_ids);
52
  if (!$resultat) {
53
    return '<b>' . _T('info_recherche_auteur_zero', array('cherche_auteur' => $cherche_auteur))."</b><br />";
54
  }
55
  else if (count($resultat) == 1) {
56
    list(, $nouv_auteur) = each($resultat);
57
    sql_nouveau_participant($nouv_auteur, $id_message);
58
    $row = spip_fetch_array(spip_query("SELECT nom FROM spip_auteurs WHERE id_auteur=$nouv_auteur"));
59
    $nom_auteur = $row['nom'];
60
    return "<b>"._T('info_ajout_participant')."</b><br />" .
61
      "<ul><li><font face='Verdana,Arial,Sans,sans-serif' size='2'><b><font size='3'>$nom_auteur</font></b></font>\n</ul>";
62
  }
63
  else if (count($resultat) < 16) {
64
    $res = '';
65
    $query = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur IN (" .
66
			 join(',', $resultat) .
67
			 ") ORDER BY nom");
68
    while ($row = spip_fetch_array($query)) {
69
      $id_auteur = $row['id_auteur'];
70
      $nom_auteur = $row['nom'];
71
      $email_auteur = $row['email'];
72
      $bio_auteur = $row['bio'];
73
      $res .= "<LI><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><b><FONT SIZE=3>$nom_auteur</FONT></b>" .
74
	($email_auteur ? " ($email_auteur)" : '') .
75
	" | <A HREF=\"message.php3?id_message=$id_message&ajout_auteur=oui&nouv_auteur=$id_auteur\">" .
76
	_T('lien_ajout_destinataire').
77
	"</A>" .
78
	(!trim($bio_auteur) ? '' :
79
	 ("<br /><FONT SIZE=1>".propre(couper($bio_auteur, 100))."</FONT>\n")) .
80
	"</FONT></LI>\n";
81
    }
82
    return  "<b>"._T('info_recherche_auteur_ok', array('cherche_auteur' => $cherche_auteur))."</b><br /><UL>$res</UL>";
83
  }
84
  else {
85
    return "<b>"._T('info_recherche_auteur_a_affiner', array('cherche_auteur' => $cherche_auteur))."</b><br />";
86
  }
87
}
88
 
89
function http_visualiser_participants($auteurs_tmp)
90
{
91
  return "\n<table border='0' cellspacing='0' cellpadding='3' width='100%' background=''><tr><td bgcolor='#EEEECC'>" .
92
    bouton_block_invisible("auteurs,ajouter_auteur") .
93
    "<span class='serif2'><b>" .
94
    _T('info_nombre_partcipants') .
95
    "</b></span>" .
96
    ((count($auteurs_tmp) == 0) ? '' :
97
     (" <font class='arial2'>".join($auteurs_tmp,", ")."</font>")) .
98
    "</td></tr></table>";
99
}
100
 
101
function http_ajouter_participants($ze_auteurs, $id_message)
102
{
103
    $query_ajout_auteurs = "SELECT * FROM spip_auteurs WHERE ";
104
    if ($ze_auteurs) $query_ajout_auteurs .= "id_auteur NOT IN ($ze_auteurs) AND ";
105
    $query_ajout_auteurs .= " messagerie<>'non' AND statut IN ('0minirezo', '1comite') ORDER BY statut, nom";
106
    $result_ajout_auteurs = spip_query($query_ajout_auteurs);
107
 
108
    if (spip_num_rows($result_ajout_auteurs) > 0) {
109
 
110
      echo "<FORM ACTION='message.php3' METHOD='post'>";
111
      echo "<DIV align=left><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2><b>"._T('bouton_ajouter_participant')." &nbsp; </b></FONT>\n";
112
      echo "<input TYPE='Hidden' NAME='id_message' VALUE=\"$id_message\">";
113
 
114
      if (spip_num_rows($result_ajout_auteurs) > 50) {
115
	echo "<input TYPE='text' NAME='cherche_auteur' CLASS='fondl' VALUE='' SIZE='20'>";
116
	echo "<input TYPE='submit' NAME='Chercher' VALUE='"._T('bouton_chercher')."' CLASS='fondo'>";
117
      }
118
      else {
119
	echo "<SELECT NAME='nouv_auteur' SIZE='1' STYLE='WIDTH=150' CLASS='fondl'>";
120
	$group = false;
121
	$group2 = false;
122
 
123
	while($row=spip_fetch_array($result_ajout_auteurs)) {
124
	  $id_auteur = $row['id_auteur'];
125
	  $nom = $row['nom'];
126
	  $email = $row['email'];
127
	  $statut_auteur = $row['statut'];
128
 
129
	  $statut_auteur=ereg_replace("0minirezo", _T('info_statut_administrateur'), $statut_auteur);
130
	  $statut_auteur=ereg_replace("1comite", _T('info_statut_redacteur'), $statut_auteur);
131
	  $statut_auteur=ereg_replace("2redac", _T('info_statut_redacteur'), $statut_auteur);
132
	  $statut_auteur=ereg_replace("5poubelle", _T('info_statut_efface'), $statut_auteur);
133
 
134
	  $premiere = strtoupper(substr(trim($nom), 0, 1));
135
 
136
	  if ($GLOBALS['connect_statut'] != '0minirezo') {
137
	    if ($p = strpos($email, '@')) $email = substr($email, 0, $p).'@...';
138
	  }
139
 
140
	  if ($statut_auteur != $statut_old) {
141
	    echo "\n<OPTION VALUE=\"x\">";
142
	    echo "\n<OPTION VALUE=\"x\"> $statut_auteur".'s';
143
	  }
144
 
145
	  if ($premiere != $premiere_old AND ($statut_auteur != _T('info_administrateur') OR !$premiere_old)) {
146
	    echo "\n<OPTION VALUE=\"x\">";
147
	  }
148
 
149
	  $texte_option = supprimer_tags(couper("$nom ($email) ", 40));
150
	  echo "\n<OPTION VALUE=\"$id_auteur\">&nbsp;&nbsp;&nbsp;&nbsp;$texte_option";
151
	  $statut_old = $statut_auteur;
152
	  $premiere_old = $premiere;
153
	}
154
 
155
	echo "</SELECT>";
156
	echo "<input TYPE='submit' NAME='Ajouter' VALUE='"._T('bouton_ajouter')."' CLASS='fondo'>";
157
      }
158
      echo "</div></FORM>";
159
    }
160
}
161
 
162
function http_afficher_forum_perso($id_message, $titre)
163
{
164
	$forum_retour = urlencode("message.php3?id_message=$id_message");
165
 
166
	echo "<br /><br />\n<div align='center'>";
167
	icone(_T('icone_poster_message'), "forum_envoi.php3?statut=perso&adresse_retour=".$forum_retour."&id_message=$id_message&titre_message=".urlencode($titre), "forum-interne-24.gif", "creer.gif");
168
	echo "</div>\n<p align='left'>";
169
 
170
	$query_forum = "SELECT * FROM spip_forum WHERE statut='perso' AND id_message='$id_message' AND id_parent=0 ORDER BY date_heure DESC LIMIT 0,20";
171
	afficher_forum(spip_query($query_forum), $forum_retour);
172
	echo "\n</p>";
173
}
174
 
175
 
176
 
177
if (!spip_num_rows(spip_query("
178
SELECT id_auteur FROM spip_auteurs_messages WHERE id_auteur=$connect_id_auteur AND id_message=$id_message"))) {
179
 
180
	$row = spip_fetch_array(spip_query("SELECT type FROM spip_messages WHERE id_message=$id_message"));
181
	if ($row['type'] != "affich"){
182
		debut_page(_T('info_acces_refuse'));
183
		debut_gauche();
184
		debut_droite();
185
		echo "<b>"._T('avis_non_acces_message')."</b><p>";
186
		fin_page();
187
		exit;
188
	}
189
}
190
 
191
if ($ajout_forum AND strlen($texte) > 10 AND strlen($titre) > 2) {
192
	spip_query("UPDATE spip_auteurs_messages SET vu='non' WHERE id_message='$id_message'");
193
}
194
 
195
if ($modifier_message == "oui") {
196
	$titre = addslashes($titre);
197
	$texte = addslashes($texte);
198
	spip_query("UPDATE spip_messages SET titre='$titre', texte='$texte' WHERE id_message='$id_message'");
199
}
200
 
201
if ($changer_rv) {
202
	spip_query("UPDATE spip_messages SET rv='$rv' WHERE id_message='$id_message'");
203
}
204
 
205
if ($jour) {
206
			// Convertir dates a calendrier correct (exemple: 31 fevrier devient debut mars, 24h12 devient 00h12 du lendemain)
207
			$date = date("Y-m-d H:i:s", mktime($heures,$minutes,0,$mois, $jour, $annee));
208
 
209
			$jour = journum($date);
210
			$mois = mois($date);
211
			$annee = annee($date);
212
			$heures = heures($date);
213
			$minutes = minutes($date);
214
 
215
			// Verifier que la date de fin est bien posterieure au debut
216
			$unix_debut = date("U", mktime($heures,$minutes,0,$mois, $jour, $annee));
217
			$unix_fin = date("U", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
218
			if ($unix_fin <= $unix_debut) {
219
				$jour_fin = $jour;
220
				$mois_fin = $mois;
221
				$annee_fin = $annee;
222
				$heures_fin = $heures + 1;
223
				$minutes_fin = $minutes;
224
			}
225
 
226
			$date_fin = date("Y-m-d H:i:s", mktime($heures_fin,$minutes_fin,0,$mois_fin, $jour_fin, $annee_fin));
227
 
228
			$jour_fin = journum($date_fin);
229
			$mois_fin = mois($date_fin);
230
			$annee_fin = annee($date_fin);
231
			$heures_fin = heures($date_fin);
232
			$minutes_fin = minutes($date_fin);
233
 
234
 
235
	spip_query("UPDATE spip_messages SET date_heure='$annee-$mois-$jour $heures:$minutes:00',  date_fin='$annee_fin-$mois_fin-$jour_fin $heures_fin:$minutes_fin:00' WHERE id_message='$id_message'");
236
}
237
 
238
if ($change_statut) {
239
	spip_query("UPDATE spip_messages SET statut='$change_statut' WHERE id_message='$id_message'");
240
	spip_query("UPDATE spip_messages SET date_heure=NOW() WHERE id_message='$id_message' AND rv<>'oui'");
241
}
242
 
243
if ($supp_dest) {
244
	spip_query("DELETE FROM spip_auteurs_messages WHERE id_message='$id_message' AND id_auteur='$supp_dest'");
245
}
246
 
247
if ($row = spip_fetch_array(spip_query("SELECT * FROM spip_messages WHERE id_message=$id_message"))) {
248
	$id_message = $row['id_message'];
249
	$date_heure = $row["date_heure"];
250
	$date_fin = $row["date_fin"];
251
	$titre = typo($row["titre"]);
252
	$texte = propre($row["texte"]);
253
	$type = $row["type"];
254
	$statut = $row["statut"];
255
	$page = $row["page"];
256
	$rv = $row["rv"];
257
	$expediteur = $row['id_auteur'];
258
 
259
	$lejour=journum($row['date_heure']);
260
	$lemois = mois($row['date_heure']);
261
	$lannee = annee($row['date_heure']);
262
 
263
 
264
	// Marquer le message vu pour le visiteur
265
	if ($type != "affich")
266
		spip_query("UPDATE spip_auteurs_messages SET vu='oui' WHERE id_message='$id_message' AND id_auteur='$connect_id_auteur'");
267
 
268
	debut_page($titre, "redacteurs", "messagerie");
269
 
270
	debut_gauche();
271
 
272
	if ($rv != 'non')
273
	  echo http_calendrier_agenda ($lannee, $lemois, $lejour, $lemois, $lannee,false, 'calendrier.php3');
274
 
275
	echo "<br />";
276
 
277
	echo  http_calendrier_rv(sql_calendrier_taches_annonces(),"annonces");
278
	echo  http_calendrier_rv(sql_calendrier_taches_pb(),"pb");
279
	echo  http_calendrier_rv(sql_calendrier_taches_rv(), "rv");
280
 
281
	if ($rv != "non") {
282
	  list ($sh, $ah) = sql_calendrier_interval(sql_calendrier_jour($lannee,$lemois, $lejour));
283
	  foreach ($ah as $k => $v)
284
	    {
285
	      foreach ($v as $l => $e)
286
		{
287
		  if (ereg("=$id_message$", $e['URL']))
288
		    {
289
		      $ah[$k][$l]['CATEGORIES'] = "calendrier-nb";
290
		      break;
291
		    }
292
		}
293
	    }
294
	  creer_colonne_droite();
295
	  echo http_calendrier_ics_titre($lannee,$lemois,$lejour,'calendrier.php3');
296
	  echo http_calendrier_ics($lannee,$lemois, $lejour, $echelle, $partie_cal, 90, array($sh, $ah));
297
	}
298
	debut_droite();
299
 
300
	if ($type == 'normal') {
301
		$le_type = _T('info_message_2').aide ("messut");
302
		$la_couleur = "#02531B";
303
		$couleur_fond = "#CFFEDE";
304
	}
305
	else if ($type == 'pb') {
306
		$le_type = _T('info_pense_bete').aide ("messpense");
307
		$la_couleur = "#3874B0";
308
		$couleur_fond = "#EDF3FE";
309
	}
310
	else if ($type == 'affich') {
311
		$le_type = _T('info_annonce');
312
		$la_couleur = "#ccaa00";
313
		$couleur_fond = "#ffffee";
314
	}
315
 
316
	// affichage des caracteristiques du message
317
 
318
	echo "<div style='border: 1px solid $la_couleur; background-color: $couleur_fond; padding: 5px;'>"; // debut cadre de couleur
319
	//debut_cadre_relief("messagerie-24.gif");
320
	echo "\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>";
321
	echo "<tr><td>"; # uniques
322
 
323
	echo "<font face='Verdana,Arial,Sans,sans-serif' size='2' color='$la_couleur'><b>$le_type</b></font><br />";
324
	echo "<font face='Verdana,Arial,Sans,sans-serif' size='5'><b>$titre</b></font>";
325
	if ($statut == 'redac') {
326
		echo "<br /><font face='Verdana,Arial,Sans,sans-serif' size='2' color='red'><b>"._T('info_redaction_en_cours')."</b></font>";
327
	}
328
	else if ($rv == 'non') {
329
		echo "<br /><font face='Verdana,Arial,Sans,sans-serif' size='2' color='#666666'><b>".nom_jour($date_heure).' '.affdate_heure($date_heure)."</b></font>";
330
	}
331
	echo "<p>";
332
 
333
 
334
	//////////////////////////////////////////////////////
335
	// Message avec participants
336
	//
337
 
338
	if ($type == 'normal') {
339
	  echo debut_cadre_enfonce("redacteurs-24.gif", true);
340
 
341
	  if ($cherche_auteur) {
342
			echo "\n<p align='left'><div class='cadre-info'>" .
343
			  http_auteurs_ressemblants($cherche_auteur , $id_message) .
344
			  "\n</div></p>";
345
	  }
346
 
347
	  if ($nouv_auteur > 0) sql_nouveau_participant($nouv_auteur, $id_message);
348
 
349
		//
350
		// Liste des participants
351
		//
352
 
353
	  $query_auteurs = "SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_messages AS lien WHERE lien.id_message=$id_message AND lien.id_auteur=auteurs.id_auteur";
354
	  $result_auteurs = spip_query($query_auteurs);
355
 
356
	  $total_dest = spip_num_rows($result_auteurs);
357
 
358
	  if ($total_dest > 0) {
359
			$couleurs = array("#FFFFFF",$couleur_claire);
360
			$auteurs_tmp = array();
361
			$ze_auteurs = array();
362
			$ifond = 0;
363
			$res = '';
364
			while($row = spip_fetch_array($result_auteurs)) {
365
				$id_auteur = $row["id_auteur"];
366
				$nom_auteur = typo($row["nom"]);
367
				$statut_auteur = $row["statut"];
368
				$ze_auteurs[] = $id_auteur;
369
 
370
				$couleur = $couleurs[$ifond];
371
				$ifond = 1 - $ifond;
372
 
373
				$auteurs_tmp[] = "<a href='auteurs_edit.php3?id_auteur=" . $id_auteur ."'>". $nom_auteur . "</a>";
374
 
375
				$res .= "<tr><td background='' bgcolor='$couleur'><font face='Verdana,Arial,Sans,sans-serif' size=2>&nbsp;".
376
				  bonhomme_statut($row)."&nbsp;" .
377
				  (($id_auteur != $expediteur) ? '' :
378
				   "<font class='arial0'>".
379
				   _T('info_auteur_message')
380
				   ."</font> ") .
381
				  $nom_auteur .
382
				  "</font></td>" .
383
				  "<td background='' bgcolor='$couleur' align='right'><font face='Verdana,Arial,Sans,sans-serif' size='1'>" .
384
				  (($id_auteur == $connect_id_auteur) ?
385
				   "&nbsp;" :
386
				   ("[<a href='message.php3?id_message=$id_message&supp_dest=$id_auteur'>"._T('lien_retrait_particpant')."</a>]")) .
387
				  "</font></td></tr>\n";
388
			}
389
			echo
390
			  http_visualiser_participants($auteurs_tmp),
391
			  debut_block_invisible("auteurs"),
392
			  "\n<table border=0 cellspacing=0 cellpadding=3 width=100% background=''><tr><td bgcolor='#eeeecc' colspan=2>",
393
			  $res,
394
			  "</td></tr></table>",
395
			  fin_block();
396
	  }
397
 
398
	  if ($statut == 'redac' OR $forcer_dest)
399
		  http_ajouter_participants(join(',', $ze_auteurs),
400
					    $id_message);
401
	  else {
402
		  echo
403
		    debut_block_invisible("ajouter_auteur"),
404
		    "<br /><div align='right'><font face='Verdana,Arial,Sans,sans-serif' size='2'><a href='message.php3?id_message=$id_message&forcer_dest=oui'>"._T('lien_ajouter_participant')."</a></font></div>",
405
		    fin_block();
406
		}
407
	  fin_cadre_enfonce();
408
	}
409
 
410
	if ($rv != "non") http_afficher_rendez_vous($date_heure, $date_fin);
411
 
412
 
413
	//////////////////////////////////////////////////////
414
	// Le message lui-meme
415
	//
416
 
417
	echo "<div align='left'>",
418
	  "\n<table width='100%' cellpadding='0' cellspacing='0' border='0'>",
419
	  "<tr><td>",
420
	  "<div class='serif'><p>$texte</p></div>";
421
 
422
	if ($expediteur == $connect_id_auteur AND $statut == 'redac') {
423
	  if ($type == 'normal' AND $total_dest < 2){
424
	    echo "<p align='right'><font face='Verdana,Arial,Sans,sans-serif' size='2' color='#666666'><b>"._T('avis_destinataire_obligatoire')."</b></font></p>";
425
	  } else {
426
	    echo "\n<p><center><table><tr><td>";
427
	    icone (_T('icone_envoyer_message'), ("message.php3?id_message=$id_message&change_statut=publie"), "messagerie-24.gif", "creer.gif");
428
	    echo "</td></tr></table></center></p>";
429
	  }
430
	}
431
	echo "</td></tr></table></div>";
432
 
433
	echo "</td></tr></table>"; //fin_cadre_relief();
434
	echo "</div>";			// fin du cadre de couleur
435
 
436
	// Les boutons
437
 
438
	echo "\n<table width='100%'><tr><td>";
439
 
440
	// bouton de suppression
441
 
442
	if ($expediteur == $connect_id_auteur AND ($statut == 'redac' OR $type == 'pb') OR ($type == 'affich' AND $connect_statut == '0minirezo')) {
443
	  echo "\n<table align='left'><tr><td>";
444
	  icone (_T('icone_supprimer_message'), ("messagerie.php3?detruire_message=$id_message"), "messagerie-24.gif", "supprimer.gif");
445
	  echo "</td></tr></table>";
446
	}
447
 
448
	// bouton retrait de la discussion
449
 
450
	if ($statut == 'publie' AND $type == 'normal') {
451
	  echo "\n<table align='left'><tr><td>";
452
	  icone (_T('icone_arret_discussion'), "messagerie.php3?id_message=$id_message&supp_dest=$connect_id_auteur", "messagerie-24.gif", "supprimer.gif");
453
	  echo "</td></tr></table>";
454
	}
455
 
456
	// bouton modifier ce message
457
 
458
	if ($expediteur == $connect_id_auteur OR ($type == 'affich' AND $connect_statut == '0minirezo')) {
459
	  echo "\n<table align='right'><tr><td>";
460
	  icone (_T('icone_modifier_message'), ("message_edit.php3?id_message=$id_message"), "messagerie-24.gif", "edit.gif");
461
	  echo "</td></tr></table>";
462
	}
463
	echo "</td></tr></table>";
464
 
465
	// reponses et bouton poster message
466
 
467
	http_afficher_forum_perso($id_message, $titre);
468
 }
469
 
470
 fin_page();
471
 
472
?>