function enfants_aff($id_parent, $decalage, $taille, $critere, $gauche = 0) { global $spip_lang_right, $spip_lang_left; static $total_site = null; static $niveau = 0; static $nombre_branche; static $nombre_rub; if (is_null($total_site)) { $nombre_branche = array(); $nombre_rub = array(); $total_site = enfants(0, $critere, $nombre_branche, $nombre_rub); if ($total_site < 1) { $total_site = 1; } } $visites_abs = 0; $out = ""; $width = intval(floor($nombre_branche[$id_parent] / $total_site * $taille)); $width = "width:{$width}px;float:{$spip_lang_left};"; $result = sql_select("id_rubrique, titre, descriptif", "spip_rubriques", "id_parent={$id_parent}", '', '0+titre,titre'); while ($row = sql_fetch($result)) { $id_rubrique = $row['id_rubrique']; $titre = typo($row['titre']); $descriptif = attribut_html(couper(typo($row['descriptif']), 80)); if ($nombre_branche[$id_rubrique] > 0 or $nombre_rub[$id_rubrique] > 0) { $largeur_branche = floor(($nombre_branche[$id_rubrique] - $nombre_rub[$id_rubrique]) * $taille / $total_site); $largeur_rub = floor($nombre_rub[$id_rubrique] * $taille / $total_site); if ($largeur_branche + $largeur_rub > 0) { if ($niveau == 0) { $couleur = "#cccccc"; } else { if ($niveau == 1) { $couleur = "#eeeeee"; } else { $couleur = "white"; } } $out .= "<table cellpadding='2' cellspacing='0' border='0' width='100%'>"; $out .= "\n<tr style='background-color: {$couleur}'>"; $out .= "\n<td style='border-bottom: 1px solid #aaaaaa; padding-{$spip_lang_left}: " . ($niveau * 20 + 5) . "px;'>"; if ($largeur_branche > 2) { $out .= bouton_block_depliable("<a href='" . generer_url_entite($id_rubrique, 'rubrique') . "' style='color: black;' title=\"{$descriptif}\">{$titre}</a>", "incertain", "stats{$id_rubrique}"); } else { $out .= "<div class='rubsimple' style='padding-left: 18px;'>" . "<a href='" . generer_url_entite($id_rubrique, 'rubrique') . "' style='color: black;' title=\"{$descriptif}\">{$titre}</a>" . "</div>"; } $out .= "</td>"; // pourcentage de visites dans la branche par rapport au total du site $pourcent = round($nombre_branche[$id_rubrique] / $total_site * 1000) / 10; $out .= "\n<td class='verdana1' style='text-align: {$spip_lang_right}; width: 40px; border-bottom: 1px solid #aaaaaa;'>{$pourcent}%</td>"; $out .= "\n<td align='right' style='border-bottom: 1px solid #aaaaaa; width:" . ($taille + 5) . "px'>"; $out .= "\n<table cellpadding='0' cellspacing='0' border='0' width='" . ($decalage + 1 + $gauche) . "'>"; $out .= "\n<tr>"; if ($gauche > 0) { $out .= "<td style='width: " . $gauche . "px'></td>"; } $out .= "\n<td style='border: 0px; white-space: nowrap;'>"; $out .= "<div style='border: 1px solid #999999; background-color: #dddddd; height: 1em; padding: 0px; margin: 0px;{$width}'>"; if ($visites_abs > 0) { $out .= "<img src='" . chemin_image('rien.gif') . "' style='vertical-align: top; height: 1em; border: 0px; width: " . $visites_abs . "px;' alt= ' '/>"; } if ($largeur_branche > 0) { $out .= "<img src='" . chemin_image('rien.gif') . "' class='couleur_cumul' style='vertical-align: top; height: 1em; border: 0px; width: " . $largeur_branche . "px;' alt=' ' />"; } if ($largeur_rub > 0) { $out .= "<img src='" . chemin_image('rien.gif') . "' class='couleur_nombre' style='vertical-align: top; width: " . $largeur_rub . "px; height: 1em; border: 0px' alt=' ' />"; } $out .= "</div>"; $out .= "</td></tr></table>\n"; $out .= "</td></tr></table>"; } } if (isset($largeur_branche) && $largeur_branche > 0) { $niveau++; $out .= debut_block_depliable(false, "stats{$id_rubrique}"); $out .= enfants_aff($id_rubrique, $largeur_branche, $taille, $critere, $visites_abs + $gauche); $out .= fin_block(); $niveau--; } $visites_abs = $visites_abs + round($nombre_branche[$id_rubrique] / $total_site * $taille); } return $out; }
function enfants($id, $niveau, &$resultat, &$profondeurmax, $imprimer = false) { global $dbh, $aff_langue; if ($imprimer) { $resultat = infos_noeud($id, $niveau, $profondeurmax); echo $resultat; flush(); } elseif ($niveau > $profondeurmax) { $profondeurmax = $niveau; } // chercher les enfants $rqt = "select id_noeud from noeuds, categories where num_parent='{$id}' and id_noeud=num_noeud and langue='{$aff_langue}' and autorite!='TOP' and autorite!='ORPHELINS' and autorite!='NONCLASSES' order by libelle_categorie "; $res = pmb_mysql_query($rqt); if (pmb_mysql_num_rows($res)) { $niveau++; while ($data = pmb_mysql_fetch_object($res)) { enfants($data->id_noeud, $niveau, $resultat, $profondeurmax, $imprimer); } } }
function exec_statistiques_repartition_dist() { global $abs_total, $nombre_vis, $taille, $spip_ecran; if (!autoriser('voirstats')) { include_spip('inc/minipres'); echo minipres(); } else { $taille = _request('taille'); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('titre_page_statistiques'), "statistiques_visites", "repartition"); echo debut_grand_cadre(true); echo gros_titre(_T('titre_page_statistiques'),'',false); if ($spip_ecran == "large") { $largeur_table = 974; $taille = 550; } else { $largeur_table = 750; $taille = 400; } echo "\n<br /><br /><table width='$largeur_table'><tr><td class='verdana2' style='text-align: center; width: $largeur_table" . "px;'>"; $critere = _request('critere'); if ($critere == "debut") { $critere = "visites"; echo barre_onglets("stat_depuis", "debut"); } else { $critere = "popularite"; echo barre_onglets("stat_depuis", "popularite"); } $abs_total=enfants(0, $critere); if ($abs_total<1) $abs_total=1; $nombre_vis[0] = 0; echo debut_cadre_relief("statistiques-24.gif",true); echo "<div style='border: 1px solid #aaaaaa; border-bottom: 0px;'>"; enfants_aff(0,$taille, $critere); echo "</div><br />", "<div class='verdana3' style='text-align: left;'>", _T('texte_signification'), "</div>"; echo fin_cadre_relief(true); echo "</td></tr></table>"; echo fin_grand_cadre(true),fin_page(); } }