PageRenderTime 6ms CodeModel.GetById 181ms app.highlight 104ms RepoModel.GetById 27ms app.codeStats 0ms

/modules/visitstat/cumulpage.php

https://bitbucket.org/meianki/voguersurlavague
PHP | 747 lines | 518 code | 99 blank | 130 comment | 80 complexity | 3abd6dcbc2af658b81ce399270d0777b MD5 | raw file
  1<?
  2/*
  3 -------------------------------------------------------------------------
  4 AllMyStats V1.39 - Statistiques de fr�quentation visiteurs et robots
  5 -------------------------------------------------------------------------
  6 Copyright (C) 2000 - C�dric TATANGELO (Cedstat)
  7 Copyright (C) 2008 - Herve Seywert
  8 -------------------------------------------------------------------------
  9 Web:   http://www.wertronic.com
 10 -------------------------------------------------------------------------
 11 Ce programme est libre, vous pouvez le redistribuer et/ou le modifier
 12 selon les termes de la Licence Publique G�nrale GNU publi�e par la Free
 13 Software Foundation .
 14 -------------------------------------------------------------------------
 15*/
 16
 17		//-----------------------------------------------------------------------------
 18		//Mise en en forme ($AllBots) pour preg_match des bot connus (dans la table + bot en g�n�rale (bot, spider , etc)
 19		$result1=mysql_query("select bot_name, org_name, crawler_url, crawler_info from ".TABLE_CRAWLER." "); 
 20		$AllBots = '/Bot|Slurp|Scooter|Spider|crawl|';
 21
 22		while($row=mysql_fetch_array($result1)){
 23			$Form_chaine = str_replace('/','\/',$row['bot_name']);
 24			$Form_chaine = str_replace('+','\+',$Form_chaine);
 25			$Form_chaine = str_replace('(','\(',$Form_chaine);
 26			$Form_chaine = str_replace(')','\)',$Form_chaine);
 27			$AllBots .= $Form_chaine.'|';
 28		}
 29//echo $AllBots;
 30		$AllBots = substr($AllBots,0,strlen($AllBots)-1); //supp last |
 31		$AllBots .= '/i';
 32		//-----------------------------------------------------------------------------
 33		//------------------------ Mise en tableau de la table bad user agent ---------
 34		unset($Matrice_bad_user_agent);
 35		$Bad_User_Agent=mysql_query("select * from ".TABLE_BAD_USER_AGENT.""); //
 36		while($bad_agents=mysql_fetch_array($Bad_User_Agent)){ // Mise en tableau des bad agents
 37			$Matrice_bad_user_agent[] = array($bad_agents['user_agent'], $bad_agents['info'],$bad_agents['type']);
 38		}
 39		//-----------------------------------------------------------------------------
 40
 41		//----------------------------------------------
 42		//Calcul Nb visiteurs et pages hors bot Robots
 43		$result = mysql_query("select * from ".TABLE_VISITEUR." where date like '%$mois'");
 44		
 45		$NbpageVues_HorsBots=0;
 46		$NbVisites_HorsBots=0;
 47		while($row=mysql_fetch_array($result)){
 48			if(!preg_match($AllBots, $row[agent])) {
 49			//---------------------------------------
 50				$User_Agent=$row[agent];
 51				$trash=false;
 52				for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
 53					if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
 54						$trash=true;
 55					}
 56				}
 57			//---------------------------------------
 58			}
 59
 60			if(!preg_match($AllBots, $row[agent]) && $trash==false) {		
 61				$NbpageVues_HorsBots = $NbpageVues_HorsBots+$row[nb_visite];
 62				$NbVisites_HorsBots = $NbVisites_HorsBots+1;
 63			}			
 64		}
 65		//echo 'Total Visites hors robots = '.$NbVisites_HorsBots.'<br>';
 66		//echo 'Total Page visit�es hors robots = '.$NbpageVues_HorsBots.'<br>'; // Nb de page vue
 67		//----------------------------------------------
 68
 69################################################################################################################################################################
 70			// Graphique visiteurs et page visit�es par Jour (todo en fonction car dans car existe aussi dans cumulpage.php, stats_in.php, histomois.php)
 71		//---------------------------------------------------------------------------------------------
 72
 73		//recup des donn�es
 74		$result=mysql_query("select agent, referer, date, code, ip, nb_visite from ".TABLE_VISITEUR." where date like '%$mois' order by code ASC");
 75			unset ($val_jour);
 76			while($row=mysql_fetch_array($result)){
 77				
 78				if(!preg_match($AllBots, $row['agent']) && $trash==false) {		
 79					$date_comp = $row['date'];
 80					$cpt_jour = substr($date_comp,0,2)+0; // + 0 pour faire disparaitre les 0 devant 01, 02, 03 etc (aussi simple qu'une regex)
 81					$val_jour[$cpt_jour][0] = $val_jour[$cpt_jour][0] + 1;
 82					$val_jour[$cpt_jour][1] = $val_jour[$cpt_jour][1] + $row['nb_visite'];
 83
 84					$total_nb_visiteurs = $total_nb_visiteurs + 1;
 85					$total_nb_pages_visitees = $total_nb_pages_visitees + $row['nb_visite'];
 86
 87					//Nombre max de pages visit�, pour height graph
 88					if($val_jour[$cpt_jour][1]>$max_pages){
 89						$max_pages=$val_jour[$cpt_jour][1];
 90					}
 91					
 92					//Pour affichage echelle y
 93					if($max_pages!=0){
 94						$indice_echelle = bcdiv($val_jour[$cpt_jour][1],$max_pages,2); $hauteur=bcmul($indice_echelle,180.00,2);
 95						if ($MaxHauteur_echelle <= $hauteur) { $MaxHauteur_echelle = $hauteur; $EchyMin = '0'; }
 96					} else { // pour ne pas afficher 0 si $max_pages = 0
 97						$EchyMin  = '';	
 98						$max_pages = '';
 99					}
100				}
101			}
102			$Nb_jours =  substr($date_comp,0,2);
103
104
105$graph_byday = "";
106
107		//---------- Affichage --------------------------------------------------------------------	
108$graph_byday .= "
109<TABLE align=center CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
110  <TBODY>
111  <TR>
112    <TD><!-- Data BEGIN -->
113      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
114        <TBODY>
115        <TR>
116          <TH class=TABLETITLE>"
117		  	.$MSG_STAT_GRAF_JOUR_TITRE." (".$MSG_ROBOTS_EXCLUS.") - ".$mois."
118		  </TH>
119          </TR>
120        <TR>
121          <TD colSpan=2><!-- Rows BEGIN -->
122		  	<small>Total visiteurs = ".$total_nb_visiteurs."<br>
123			Total pages visit�es = ".$total_nb_pages_visitees."</small>
124            <TABLE border=0 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
125              <TBODY>
126              <TR>
127          		<td rowspan=\"2\">
128					<B><SPAN class=PAGESVUES>".$MSG_PAGESVISITES."</SPAN><BR>
129					& 
130		  			<SPAN class=VISITES>".$MSG_VISITE."</SPAN></B>
131		  		</TD>";
132
133$graph_byday .= "
134		  	<td nowrap=nowrap valign=\"top\">".$max_pages."</td>
135		  	<td rowspan=\"2\" valign=\"bottom\"><img src=\"images/histo-v_black.gif\" height=\"".$MaxHauteur_echelle."\" width=\"1\" alt=\"\" title=\"\"></td>";
136			
137          for($i=1;$i<=$Nb_jours;$i++){
138				$graph_byday .= "<td rowspan=\"2\" valign=\"bottom\">";
139				if($max_pages!=0) {
140					$indice=bcdiv($val_jour[$i][1],$max_pages,2); $hauteur=bcmul($indice,180.00,2);
141				}
142				$graph_byday .= "<img src=\"images/histo-v.gif\" height=\"".$hauteur."\" width=\"7\" alt=\"".$val_jour[$i][1]."\" title=\"".$val_jour[$i][1]."\">";
143
144				if($max_pages!=0){
145					$indice=bcdiv($val_jour[$i][0],$max_pages,2); $hauteur=bcmul($indice,180.00,2);  
146				}
147				$graph_byday .=  "<img src=\"images/histo-vv.gif\" height=\"".$hauteur."\" width=\"7\" alt=\"".$val_jour[$i][0]."\" title=\"".$val_jour[$i][0]."\"></td>";
148          }
149
150$graph_byday .= "
151		  </TR>
152		  <tr>
153			 <td align=\"right\" valign=\"bottom\">".$EchyMin."</td>
154		  </tr>
155		  
156              <TR>
157                <TD><B>". $MSG_GRAF_JOUR."</B></TD>
158
159 	    <td align=center>&nbsp;</td><td align=center>&nbsp;</td>"; // Pour echelle x
160
161		//----------------- calcul jour du mois et week end pour echelle x ------------------------
162		$mois = $_POST["mois"];
163		$jm = explode("/",$mois);
164		$nbjourdumois = maxDaysInMonth($jm[0], $jm[1]);
165		
166		// Premier samedi du mois (6eme jour de la semaine) fonction get_first_day
167		$premiersamedi =  strftime("%d", get_first_day(6, $jm[0], $jm[1])); 
168		$weekend = "/";
169		if ($premiersamedi == 7) { $weekend .= sprintf("%02d",1).'|'; } //Le 1er jour du mois est un dimanche
170		for($i=$premiersamedi;$i<=$nbjourdumois;$i=$i+7){
171			$week = $i;
172			$week = $week+0;
173			$weekend .= sprintf("%02d",$week).'|'; 
174			$weekend .= sprintf("%02d",$week+1) .'|';
175		}
176		$weekend = substr($weekend,0,strlen($weekend)-1); //supp last |
177		$weekend .= "/";
178		//------------------ Affichage echelle x -----------------
179		for($i=1;$i<=$nbjourdumois;$i++){
180			$num=$i;
181			if(!preg_match($weekend, sprintf("%02d",$num))) {	//$num+0 pour supprimer les 0 devant 01, 02 ,03 etc
182		  		$graph_byday .=  "<td align=center>". sprintf("%02d", $num)."</td>";
183		  	} else {
184		  		$graph_byday .=  "<td align=center><b><font color=#990000>". sprintf("%02d", $num)."</font></b></td>";
185			}
186		}
187		//---------------------------------------------------------------------------------------
188
189$graph_byday .= "
190</TR></TBODY></TABLE><!-- Rows END --></TD></TR><!-- footer -->
191        <TR>
192		  </TR></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><br>";
193 
194		 //echo $graph_byday; //Affichage graph
195		 $show_cumul_page .= $graph_byday;
196		 $graph_byday ="";
197
198################################################################################################################################################################
199
200$show_cumul_page .= "
201<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
202  <TBODY>
203  <TR>
204    <TD><!-- Data BEGIN -->
205      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
206        <TBODY>
207        <TR>
208          <TH class=TABLETITLE>". $MSG_REF_TITRE. ' '. $mois."</TH>
209          </TR>
210        <TR>
211          <TD colSpan=2><!-- Rows BEGIN -->
212            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
213              <TBODY>
214              <TR>
215                <TH>". $MSG_REFERANT."</TH>
216                <TH>". $MSG_REF_MOTCLE."</TH>
217                <TH>". $MSG_VISITEURS."</TH>
218			  </TR>";
219	
220	require "config_moteur.php"; 
221
222	//-------------------------------------------------------------------------------------------
223	unset($Tab_referer);
224	$result = mysql_query("select * from ".TABLE_VISITEUR." where date like '%$mois' order by referer");
225	
226	$nb_unknow = 0;
227	while($row=mysql_fetch_array($result)){
228		$referer=parse_url($row[referer]);
229		
230		if(!preg_match($AllBots, $row['agent'])) { // && $trash == false A voir exlus aussi les "bad user agent"
231			//--------------------- extraction mots cl�s -------------
232			$url=parse_url($site);
233			$ref=$referer["host"];
234	
235			if($ref<>$url["host"]){
236				//Pour les adwords l'url est trouv�e car dans visiteur.php est ajout� au referer $Referer = urldecode($Url_syndication[0]). '?googlesyndication=1' ou '&googlesyndication=1';
237				$test_keword[] = array($ref,MotsCles($row[referer],$ref));
238			}
239			//--------------------------------------------------------
240				//--------------- ext referer et nb visite ---------------
241				if ($row['referer']) { //
242					$Tab_referer[] = $referer['host'];
243				} else { //Visiteurs avec user agent et referer vide modif 31-08-2009
244					$Tab_referer[] = "Unknown or direct";
245					$nb_unknow = $nb_unknow + 1;
246				}
247		}
248	}
249		
250		//Attention array_unique ne garde que les cl�s diff�rentes mais garde la chronologie --> faire usort($Tab_referer, "CompareValeurs"); apr?s
251		$Tab_referer_unique = @array_unique($Tab_referer);
252		@usort($Tab_referer_unique, "CompareValeurs");
253
254		unset($Tab_aff_ref);
255		for($i=0;$i<count($Tab_referer_unique);$i++){ 
256			$result_agent = mysql_query("select agent from ".TABLE_VISITEUR." where referer like '%".$Tab_referer_unique[$i]."%' and agent NOT REGEXP '".$AllBots."' and date like '%$mois'");
257			$test_agent = mysql_fetch_array($result_agent);
258		
259			//if(!preg_match($AllBots, $test_agent['agent'])) n'est pas n�cessaire mais certainement plus rapide comme �a
260			if(!preg_match($AllBots, $test_agent['agent'])) { // && $trash == false A voir exlus aussi les "bad user agent" modif 31-08-2009
261
262				if (trim($Tab_referer_unique[$i])<>'') {
263					// compte le nombre de visiteurs par referant
264					if ( strstr(trim($Tab_referer_unique[$i]), 'google') ) {
265						$result = mysql_query("select count(*) as somme from ".TABLE_VISITEUR." where referer like '%".$Tab_referer_unique[$i]."%' and agent NOT REGEXP '".$AllBots."' and date like '%$mois'");
266					} else {
267						$result = mysql_query("select count(*) as somme from ".TABLE_VISITEUR." where referer like '%".$Tab_referer_unique[$i]."%' and agent NOT REGEXP '".$AllBots."' and referer not like '%source=web%' and referer not like '%source=hp%' and date like '%$mois'");
268					}
269
270					if (!$result) {
271					   echo 'Impossible d\'ex�cuter la requ?te : ' . mysql_error();
272					   exit;
273					}
274					$row_nb_visites=mysql_fetch_row($result);
275					
276					//------------------------------------------
277					//tab mots cl�/referant
278					for($i2=0;$i2<count($test_keword);$i2++){ 
279						if(strstr($test_keword[$i2][0],$Tab_referer_unique[$i])) {
280								$referer_kew[$i] .= $test_keword[$i2][1].' ';
281						}
282					}
283					//------------------------------------------
284					
285					if ($row_nb_visites[0] == 0){ //si = 0 => referer vide (donc result mysql vide) user agent et referer vide modif 31-08-2009
286						$row_nb_visites[0] = $nb_unknow;
287					}
288
289					$Tab_aff_ref[] = array($row_nb_visites[0], $Tab_referer_unique[$i],$referer_kew[$i]); //dans ce sens car on trie sur nb visites
290				}
291			}
292		}
293		//--------------------------------------------------
294		// Mise en forme mots cl�s googlesyndication et Affichage
295		@array_multisort($Tab_aff_ref,SORT_DESC);
296
297		for($i=0;$i<count($Tab_aff_ref);$i++){ 
298			//echo $Tab_aff_ref[$i][2]."<br><br>";
299			$Mots_by_referer =  str_replace('] [', ']+-+[', $Tab_aff_ref[$i][2]);
300			$Mots_by_referer =  str_replace(']  [', ']+-+[', $Mots_by_referer); // car certains comportent 2 espaces --> A voir o? ils sont mis ou supprimmer espaces multiples
301			$Mots_by_referer =  str_replace(']   [', ']+-+[', $Mots_by_referer);// car certains comportent 3 espaces --> A voir o? ils sont mis
302			$Mots_by_referer = $Mots_by_referer; // Tout en minuscule
303			//echo $Mots_by_referer."<br><br>";
304			
305			unset($Tab_motcles);
306			$Tab_motcles = explode('+-+',$Mots_by_referer);
307			for($j=0;$j<count($Tab_motcles);$j++){ 
308				$Tab_motcles[$j] = trim($Tab_motcles[$j]); // Tr�s important pour array_unique apr?s str_replace
309				//echo $Tab_motcles[$j]."<br>";
310			}
311			
312			unset($Tab_motcles_unique);
313			$Tab_motcles_unique = array_unique($Tab_motcles);
314			
315			//----------------------
316			unset($tab_keywords);
317			for($j=0;$j<count($Tab_motcles_unique);$j++){ 
318				if (trim($Tab_motcles_unique[$j])) {
319					$tab_keywords[] = array($Tab_motcles_unique[$j], substr_count($Mots_by_referer, $Tab_motcles_unique[$j]));
320				}
321			}
322			
323			// Obtient une liste de colonnes
324			unset($Mot);
325			unset($Nb);
326			if ($tab_keywords) {
327				foreach ($tab_keywords as $key => $row) {
328					$Mot[$key]  = $row[0];
329					$Nb[$key] = $row[1];
330				}
331			}
332			
333			// Trie les donn�es par volume croissant
334			// Ajoute $tab_keywords en tant que dernier param?tre, pour trier par la cl� commune
335			@array_multisort($Nb, SORT_DESC, $tab_keywords);
336			//---------------------------------------------------------------
337			//Affichage
338			$lenmax=35;
339			if (strlen($Tab_aff_ref[$i][1])>$lenmax) {
340				$chaine1=substr($Tab_aff_ref[$i][1], 0, $lenmax);
341				$chaine2=substr($Tab_aff_ref[$i][1], $lenmax);
342				$Tab_aff_ref[$i][1] = $chaine1."<br>".$chaine2;
343			}
344
345			//-----------------------------
346				$show_cumul_page .= "<tr><td valign=top>".$Tab_aff_ref[$i][1]."</td>
347				<td nowrap>"; //R�f�rant
348			
349				if (count($Tab_motcles_unique)>1) {	
350					$show_cumul_page .= "<span> Diff�rents: ". count($Tab_motcles_unique)."</span>";
351				}
352				for($j=0;$j<count($tab_keywords);$j++){ //Affiche les phrases cl�s
353					
354					if (strstr($tab_keywords[$j][0],'googlesyndication=1')) { 
355						$tab_keywords[$j][0] = str_replace('?googlesyndication=1', '<font color=#666666>&nbsp;&nbsp;'.utf8_encode($MSG_ADWORDS_CONTENT_NETWORK).'</font><br>', $tab_keywords[$j][0]);
356						$tab_keywords[$j][0] = str_replace(htmlentities('&googlesyndication=1'), '<font color=#666666>&nbsp;&nbsp;'.utf8_encode($MSG_ADWORDS_CONTENT_NETWORK).'</font><br>', $tab_keywords[$j][0]);//ici il faut htmlentities('&googlesyndication=1'), voir si ne serait pas mieux au niveau de config moteur
357						$tab_keywords[$j][0] = substr(trim($tab_keywords[$j][0]),0,-5); //supp le dernier '<br> '
358					}
359					
360					$show_cumul_page .= "<br><span><font color=#990000>".utf8_decode(urldecode($tab_keywords[$j][0]))."</font></span>";
361				}
362				$show_cumul_page .= "&nbsp;</td>
363				<td nowrap>";
364				
365				$show_cumul_page .= "<span> Total: ".$Tab_aff_ref[$i][0]."</span>";
366				for($j=0;$j<count($tab_keywords);$j++){ //affiche le nombre de visite pour chaque mot ou r�f�rant
367						$show_cumul_page .= "<br><span><font color=#990000>".utf8_decode(urldecode($tab_keywords[$j][1]))."</font></span>"; 
368				}
369				$show_cumul_page .= "&nbsp;</td></tr>";
370			//----------------------------
371		}
372		//--------------------------------------------------
373		unset($Tab_referer);
374		unset($Tab_referer_unique);
375		unset($row_nb_visites);
376		unset($Tab_aff_ref);
377	//--------------------------------------------------------------------------------
378
379$show_cumul_page .= '
380</TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
381';
382
383	if ($mois==""){
384		$mois = date('m/Y',strtotime($UTC." hours", strtotime(date("Y-m-d H:i:s"))));
385	}
386
387	$result=mysql_query("select * from ".TABLE_VISITEUR." v,".TABLE_PAGE." p where date like '%$mois' and v.code=p.code order by heure");
388	$nb_visite=0;
389	$heure_premier="";
390	while($row=mysql_fetch_array($result)){
391		if($heure_premier==""){
392			$heure_premier=$row[heure];
393		}
394		$nb_visite=$nb_visite+$row[nb_visite]; //Pour calcul %
395		$heure_dernier=$row[heure];
396	}
397	
398	$max_visite=$NbpageVues_HorsBots;
399	
400	$result=mysql_query("select * from ".TABLE_VISITEUR." v,".TABLE_PAGE." p where v.date like '%$mois' and v.code=p.code order by page");
401	$row=mysql_fetch_array($result);
402	$url=$row[page];
403	$nb_url=0;
404	$nb_vis=0;
405	$result=mysql_query("select * from ".TABLE_VISITEUR." v,".TABLE_PAGE." p where v.date like '%$mois' and v.code=p.code order by page");
406
407	while($row=mysql_fetch_array($result)){
408		$page=$row[page];
409
410		if(!preg_match($AllBots, $row[agent])) {
411			//---------------------------------------
412				$User_Agent=$row[agent];
413				$trash=false;
414				for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
415					if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
416						$trash=true;
417					}
418				}
419			//---------------------------------------
420		}
421
422		if(!preg_match($AllBots, $row[agent]) && $trash==false) {
423			if($url==$page){
424				$nb_url=$nb_url+$row[nb_visite];
425				$nb_vis++;	
426			} else {
427				$nb=$nb_url*100; 
428				if($max_visite!=0){
429					$pourcent=bcdiv($nb,$max_visite,2);
430				}
431				$page_vue[]= array($url,$nb_vis, $nb_url, $pourcent);
432				$url=$page;
433				$nb_url=$row[nb_visite];
434				$nb_vis=1;
435			}
436		}
437	} // Fin if(!preg_match($AllBots, $row[agent])) {
438
439        $nb=$nb_url*100; 
440    	if($max_visite!=0){
441    		$pourcent=bcdiv($nb,$max_visite,2);
442    	}
443
444$show_cumul_page .= '
445<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
446  <TBODY>
447  <TR>
448    <TD><!-- Data BEGIN -->
449      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
450        <TBODY>
451        <TR>
452          <TH class=TABLETITLE>'. $MSG_PAGESVISITES.' ('.$MSG_ROBOTS_EXCLUS.')<br>'.$mois.'</TH>
453          </TR>
454
455        <TR>
456          <TD colSpan=2><!-- Rows BEGIN -->
457            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
458              <TBODY>
459				<tr>
460				<th valign="top" align="right">'. $MSG_TOTAL.' : <br><br></th>
461				<td valign="top" align="center">'. $NbVisites_HorsBots.'<br></td>
462				<td valign="top" align="center">'. $NbpageVues_HorsBots.'<br></td>
463				<td valign="top" align="center">&nbsp;<br></td>
464				</tr>
465              <TR>
466                <TH>'.$MSG_PAGE.'</TH>
467                <TH>'.$MSG_VISITE.'</TH>
468                <TH>'.$MSG_PAGESVISITES.'</TH>
469                <TH>'.$MSG_PAGES_POURCENTAGE.'</TH></TR>';
470				
471	$page_vue[]= array($url,$nb_vis, $nb_url, $pourcent);
472	@usort($page_vue, "CompareValeurs");
473	$cpt=0;
474	while ($page_vue[$cpt][0]<>""){
475		$show_cumul_page .= "<tr><td>".utf8_decode($page_vue[$cpt][0])."</td><td align=center>".$page_vue[$cpt][1]."</td><td align=center>".$page_vue[$cpt][2]."</td><td align=center>".$page_vue[$cpt][3]."%</td></tr>";
476		$cpt++;
477	}
478     
479$show_cumul_page .= '
480</TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
481';
482
483	//############################################################################################
484	//------------ Affichage Origine g�ographique des viteurs (hors robots) ----------------------
485
486		$result=mysql_query("select agent, nb_visite ,domaine from ".TABLE_VISITEUR." where date like '%$mois'");
487		while($row=mysql_fetch_array($result)){
488			$Country[] .= $row['domaine'];
489		}
490		$Country = @array_unique($Country);
491		@array_multisort ($Country, SORT_ASC); 
492
493		//----------------------------------
494		//Important mise ? 0 des variables
495		unset($Tab_country_pages_visiteurs);
496		for($i=0;$i<count($Country);$i++){ //Comment faire autrement
497			$Nb_visites = 'Nb_'.$Country[$i];
498			$$Nb_visites = 0;
499	
500			$Nb_pages_visites = $Country[$i];
501			$$Nb_pages_visites = 0;
502		}
503		//-----------------------------------
504
505		$result=mysql_query("select * from ".TABLE_VISITEUR." where date like '%$mois'");
506		while($row=mysql_fetch_array($result)){
507			//---------------------------------------
508			$User_Agent=$row[agent];
509			$trash=false;
510			for($nb_bad_user_agent=0;$nb_bad_user_agent<count($Matrice_bad_user_agent);$nb_bad_user_agent++){
511				if ($Matrice_bad_user_agent[$nb_bad_user_agent][0] == $User_Agent && $Matrice_bad_user_agent[$nb_bad_user_agent][2]=='S') {
512					$trash=true;
513				}
514			}
515				//---------------------------------------
516			if(!preg_match($AllBots, $row[agent]) && $trash==false) {
517				for($i=0;$i<count($Country);$i++){
518					if($row[domaine]==$Country[$i]) {
519						$Nb_visites = 'Nb_'.$Country[$i];
520						$$Nb_visites = $$Nb_visites + 1;
521	
522						$Nb_pages_visites = $Country[$i];
523						$$Nb_pages_visites = $$Nb_pages_visites + $row['nb_visite'];
524	
525						$Tab_country_pages_visiteurs[$i] = array($Country[$i],$$Nb_pages_visites,$$Nb_visites);
526					}
527				}
528			}
529		}
530		//--------- Affichage des r�sultats --------------------------
531		@usort($Tab_country_pages_visiteurs,"CompareValeurs");
532		$indice = @bcdiv(1,($Tab_country_pages_visiteurs[0][1]/300),2); //proportion en rapport au plus grand nb de pages visit�s
533
534$show_cumul_page .= '
535<TABLE CELLPADDING=1 CELLSPACING=0 class=TABLEBORDER>
536  <TBODY>
537  <TR>
538    <TD><!-- Data BEGIN -->
539      <TABLE CELLPADDING=5 CELLSPACING=0 class=TABLEFRAME><!-- header -->
540        <TBODY>
541        <TR>
542          <TH class=TABLETITLE>'.$MSG_DOMAIN_TITRE.' ('.$MSG_ROBOTS_EXCLUS.')</TH>
543          </TR>
544        <TR>
545          <TD colSpan=2><!-- Rows BEGIN -->
546            <TABLE border=1 CELLPADDING=2 CELLSPACING=0 class=TABLEDATA>
547              <TBODY>
548              <TR>
549                <TH>'.$MSG_DOMAIN.' ('.count($Tab_country_pages_visiteurs).')</TH>
550                <TH>'.$MSG_NB_VISITEURS.'</TH>
551                <TH>'.$MSG_PAGESVISITES.'</TH>
552			  </TR>
553';
554
555		for($i=0;$i<count($Tab_country_pages_visiteurs);$i++){
556			if ($Tab_country_pages_visiteurs[$i][0]=='') { $Tab_country_pages_visiteurs[$i][0] = $MSG_ORIGIN_UNKNOWN;}
557			$show_cumul_page .= "<tr>
558			<td> 
559			<b>".$Tab_country_pages_visiteurs[$i][0]."</b>
560			</td>
561			<td align=\"left\">
562			<img src=\"images/histo-h.gif\" width=\""; 
563			$hauteur=bcmul($Tab_country_pages_visiteurs[$i][2],$indice,2);  
564			$show_cumul_page .= $hauteur .	"\" height=\"8\">".$Tab_country_pages_visiteurs[$i][2].
565			"</td>
566			<td align=\"left\">
567			<img src=\"images/histo-h.gif\" width=\""; 
568			$hauteur=bcmul($Tab_country_pages_visiteurs[$i][1],$indice,2);  
569			$show_cumul_page .= $hauteur."\" height=\"8\">".$Tab_country_pages_visiteurs[$i][1].
570			"</td>";	
571		}
572
573$show_cumul_page .= '    
574</TBODY></TABLE><!-- Rows END --></TD></TR><!-- no footer --></TBODY></TABLE><!-- Data END --></TD></TR></TBODY></TABLE><BR>
575';
576
577	//################# AFFICHAGE ########################
578	echo $show_cumul_page;
579	//####################################################
580
581
582		$result = mysql_query("select * from ".TABLE_VISITEUR." where date like '%$mois'"); // Pour bots non d�finis
583		$nbr_result = mysql_num_rows($result);
584
585		$mois_actuelle = date('m/Y',strtotime($UTC." hours", strtotime(date("Y-m-d H:i:s"))));
586		$mois_Visualise = $mois;
587	
588		$Mois_Annee_visualise = explode("/", $mois_Visualise);
589		$mois_visualise = $Mois_Annee_visualise[0]; // mois
590		$annee_visualise = $Mois_Annee_visualise[1]; //ann�e
591		
592		$Mois_Annee_actuelle = explode("/", $mois_actuelle);
593		$mois_actuelle = $Mois_Annee_actuelle[0];
594		$annee_actuelle = $Mois_Annee_actuelle[1];
595		
596		if ($annee_actuelle.$mois_actuelle > $annee_visualise.$mois_visualise) { //Pas d'affichage du bouton ajouter robot		
597			$dislpay_button_tool_bots = "false"; //Important "false" entre guillemets car affiche le bouton si  $dislpay_button_tool_bots = ""; 
598		}	
599		$AfficheOS=true;
600		$AfficheNav=true;
601		$AfficheRobots=true;
602		include('tab_os_nav_robots.php'); // Affichage OS, navigateurs, robots
603
604//############################### Mise en cache ###################################################
605		//---------------- met en cache si mois entier --------------------------------------------
606	/*
607	echo "mois_visualise: ".$mois_visualise."<br>";
608	echo "Annee_visualise: ".$annee_visualise."<br>";
609	echo "mois__actuelle: ".$mois_actuelle."<br>";
610	echo "Annee_actuelle: ".$annee_actuelle."<br>";
611	*/
612	if ($annee_actuelle.$mois_actuelle > $annee_visualise.$mois_visualise) { //on met en cache si ann�emois_actuelle > ann�emois_Visualise et on archive MySQL
613
614				if (!is_dir("cache")) {
615					mkdir ("cache");
616				}
617	
618				if (!is_dir($path_allmystats."cache")) {
619					mkdir ($path_allmystats."cache");
620				}
621
622				//--------------------------------------------------------------------------------------
623				//car path image des fichiers cache  (A voir si faire path abs vers /allmystats/image/ comme dans stats_in.php)
624				if (!is_dir($path_allmystats."cache/images")) {
625					mkdir ($path_allmystats."cache/images");
626				}
627			
628				if (!file_exists("cache/images/histo-v_black.gif")) {
629					copy($path_allmystats."images/histo-v_black.gif", $path_allmystats."cache/images/histo-v_black.gif");
630				}
631				if (!file_exists("cache/images/histo-v.gif")) {
632					copy($path_allmystats."images/histo-v.gif", $path_allmystats."cache/images/histo-v.gif");
633				}
634				if (!file_exists("cache/images/histo-vv.gif")) {
635					copy($path_allmystats."images/histo-vv.gif", $path_allmystats."cache/images/histo-vv.gif");
636				}
637				if (!file_exists("cache/images/histo-h.gif")) {
638					copy($path_allmystats."images/histo-h.gif", $path_allmystats."cache/images/histo-h.gif");
639				}
640				//--------------------------------------------------------------------------------------
641
642			//$format_date_file_name = str_replace('/', '-', $mois_Visualise);
643			$Mois_Annee = explode("/", $mois_Visualise);
644			$format_date_file_name = $Mois_Annee[1].'-'.$Mois_Annee[0];
645			
646			//$Fnm = "cache/stats_".$site."_".$format_date_file_name.".html";
647			$Fnm = "cache/stats_".$site."_".$format_date_file_name.".php";
648
649			$inF = fopen($Fnm,"w");
650		
651			$show_footer = '<div align="center"><strong>AllMyStats Powered by</strong> <A href="http://www.wertronic.com" class="Style1">Wertronic</A><br>Cedstat Release</div><br>';
652		
653// A voir si on met dans config_allmystats  && $public == true	; et test si dessous	
654$page_html = 
655'<?
656include_once("../application_top.php");
657require "../config_allmystats.php";
658if(($user_login!=$_SESSION["userlogin"] || $passwd!=$_SESSION["userpass"]))	{ 
659	header("location: ../index_frame.php");
660}
661?>
662			<html>
663			<head>
664			<title>AllMyStats - '. $site.' - '.$format_date_file_name.'</title>
665			<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
666			<link rel="stylesheet" type="text/css" href="../stylesheet.css">
667			</head>
668			<body><table width="100%" border="0" align="center">
669			  <tr>
670				<td align="center"><big><strong>Archives site: '.$site." - Date: ".$mois_Visualise.'</strong></big><br></td>
671			  </tr>
672			  <tr>
673				<td align="center">'.$show_footer . $show_cumul_page . $show_page_os_nav_robots . $show_footer.'</td>
674			  </tr>
675			</table></body></html>';
676		
677			fwrite($inF,$page_html);
678			fclose($inF); 
679
680	//------------ Archive tables allmystats MySQL ------------------------------------------
681		/*
682		//variables dans tab_os_robots.php
683		echo "Test total robot: ".$Total_distinct_robots."<br>"; 
684		echo "Test ip robot: ".$Total_distincts_Ip_bots."<br>"; //r�sultat un peu diff�rent de cumul.php ?
685		echo "Test total bot robot: ".$Total_page_visites_bot."<br>";
686		//variables de cumulpage.php
687		echo "Test total visites hors robots: ".$NbVisites_HorsBots."<br>";
688		echo "Test total page vues hors robots: ".$NbpageVues_HorsBots."<br>";
689		
690		$Total_visites = $NbVisites_HorsBots + $Total_distincts_Ip_bots;
691		$Total_page_vues = $NbpageVues_HorsBots + $Total_page_visites_bot;
692		echo "Total visites: ".$Total_visites."<br>";
693		echo "Total page_vues: ". $Total_page_vues."<br><br><br>";
694		
695		*/
696		$Mois_Annee = explode("/", $mois_Visualise);
697		$mois = trim($Mois_Annee[0]);
698		$annee = trim($Mois_Annee[1]); //trim tjrs important derri?re un explode
699		$Total_visites = $NbVisites_HorsBots + $Total_distincts_Ip_bots;
700		$Total_page_vues = $NbpageVues_HorsBots + $Total_page_visites_bot;
701
702		$result = mysql_query("insert into ".TABLE_ARCHIVE." (annee, mois, visite, visiteur, visites_hors_bot, pages_hors_bot, visites_robot,pages_robots) values('$annee','$mois','$Total_page_vues','$Total_visites','$NbVisites_HorsBots','$NbpageVues_HorsBots','$Total_distincts_Ip_bots','$Total_page_visites_bot')") or die('Erreur SQL! '.$result.'<br>'.mysql_error()); 
703
704		$result = mysql_query("delete from ".TABLE_VISITEUR." where code like '".$annee.$mois."%'") or die('Erreur SQL! '.$result.'<br>'.mysql_error()); 
705		$result = mysql_query("delete from ".TABLE_PAGE." where code like '".$annee.$mois."%'") or die('Erreur SQL! '.$result.'<br>'.mysql_error()); ;
706
707		//---------------------------------------------------------------------------------------
708	}
709//-------------------------------------------------------------------------------------------
710############################################# Functions ######################################################
711//TODO rep functions car existe aussi dans cumulpage.php, stats_in.php, histomaois.php
712/**
713* Fonction retournant le nombre de jours dans un mois.
714* @param integer $month Mois de 1 ? 12
715* @param integer $year Ann�e
716* @return integer Nombre de jours
717*/
718function maxDaysInMonth($month, $year)
719{
720  $days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
721  return $days;
722}
723
724  /**
725   *
726   *  Gets the first weekday of that month and year
727   *
728   *  @param  int   The day of the week (0 = sunday, 1 = monday ... , 6 = saturday)
729   *  @param  int   The month (if false use the current month)
730   *  @param  int   The year (if false use the current year)
731   *
732   *  @return int   The timestamp of the first day of that month
733   *
734   **/ 
735  function get_first_day($day_number=1, $month=false, $year=false)
736  {
737    $month  = ($month === false) ? strftime("%m"): $month;
738    $year   = ($year === false) ? strftime("%Y"): $year;
739   
740    $first_day = 1 + ((7+$day_number - strftime("%w", mktime(0,0,0,$month, 1, $year)))%7);
741 
742    return mktime(0,0,0,$month, $first_day, $year);
743  }
744
745##############################################################################################################
746
747?>