Subversion Repositories Applications.papyrus

Rev

Rev 375 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

<?php

class Text_Wiki_Render_Xhtml_Plan extends Text_Wiki_Render {
    
    /**
    * 
    * Renders a token into text matching the requested format.
    * 
    * @access public
    * 
    * @param array $options The "options" portion of the token (second
    * element).
    * 
    * @return string The text rendered from the token options.
    * 
    */
    
    function token($options)
    {
        // Initialisation des variables
        $bdd =& $GLOBALS['_GEN_commun']['pear_db'];
        $sortie = '';
        $sites = $options['site'];
        // Récupération de l'affichage ou pas des raccourcis
        if (isset($options['permalien'])) {
            $permalien = $options['permalien'];
        }
        $tab_site = array_map('trim', explode(',', $sites));
        
        foreach ($tab_site as $cle => $site) {
            if (count($tab_site) > 1) {
                $aso_site = GEN_lireInfoSitePrincipalCodeAlpha($bdd, $site, DB_FETCHMODE_ASSOC);
                if (!empty($aso_site['gs_titre'])) {
                    $titre = $aso_site['gs_titre'];
                } else {
                    $titre = $aso_site['gs_nom'];
                }
                $url_site =& new Pap_URL();
                $url_site->setUrlType('SITE');
                $url_site->setId($aso_site['gs_id_site']);
                $sortie .= '<h2><a href="'.$url_site->getUrl().'">'.htmlentities($titre).'</a></h2>'."\n";
            }
            $sortie .= '<ul class="plan_site_'.$site.'" >'."\n";
            $aso_menus = GEN_retournerTableauMenusSiteCodeAlpha($bdd, $site);
            $sortie .= $this->parserTableauMenus($aso_menus, $permalien);
            $sortie .= '</ul>'."\n";
        }
        
        return $sortie;
    }
    
    function parserTableauMenus($aso_menus, $permalien)
    {
        $sortie = '';
        // Création de l'url
        foreach ($aso_menus as $menu_id => $menu_valeur) {
            if (    $menu_valeur['gm_date_fin_validite'] == '' 
                    || $menu_valeur['gm_date_fin_validite'] == '0000-00-00 00:00:00' 
                    || strtotime($menu_valeur['gm_date_fin_validite']) > time()) {
                $sortie .= '<li>';
                // Création de l'url
                $une_url =& new Pap_URL('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
                $une_url->setId($menu_id);
                
                // Construction de l'attribut title
                $title = '';
                if (!empty($menu_valeur['gm_titre'])) {
                    $title = ' title="'.htmlentities($menu_valeur['gm_titre']).'"';
                } elseif (!empty($menu_valeur['gm_titre_alternatif'])) {
                    $title = ' title="'.htmlentities($menu_valeur['gm_titre_alternatif']).'"';
                }
                
                // Construction du lien
                $sortie .= '<a href="'.$une_url->getURL().'"'.$title.'>'.htmlentities($menu_valeur['gm_nom']).'</a>';
                
                // Nous affichons ou pas le permalien
                if ($permalien) {
                    $une_url->setPermalien(true);
                    $sortie .= ' <span class="plan_permalien">'.'('.$une_url->getURL().')'.'</span>';
                    $une_url->setPermalien(false);
                }
                
                // Nous ajoutons les sous-menus s'il y en a.
                $retour = $this->parserTableauMenus($menu_valeur['sous_menus'], $permalien);
                if ($retour != '') {
                    $sortie .= "\n".'<ul>'."\n".$retour."\n".'</ul>'."\n";
                }
                
                $sortie .= '</li>'."\n";
            }
        }
        return $sortie;
    }
}
?>