Crabs Contents Management System

crabs_cms-1.0.4 ©2006-2008 - Christophe Cazajus (crabs-mettre_le_signe_at-crabs-world.com)

~~ / LIB / generer.php
Makefile util.php mysql.php xml.php xml_session.php only_session.php xml_publie.php generer.php forum.php xml_post_session.php xml_post_only_session.php httprequest.js
    1 <?php
    2 //
    3 // =============================================================================
    4 //  crabs_cms-1.0.4 : Crabs Contents Management System
    5 //  Copyright (C) 2006-2008 : Christophe Cazajus (crabs-mettre_le_signe_at-crabs-world.com)
    6 //
    7 //  Ce source fait partie d'un projet logiciel libre. Vous pouvez le distribuer
    8 //  et/ou le modifier en respectant les termes de la GNU General Public License
    9 //  version 2 ou (suite a votre propre choix) une version ulterieure.
   10 //
   11 //  Ce programme est distribue dans l'espoir qu'il puisse etre utile, mais
   12 //  sans aucune garantie, meme si il est associe a un produit qui vous en
   13 //  propose une. Conformez-vous a la GNU General Public License pour avoir
   14 //  plus de precisions.
   15 //
   16 //  L'auteur ne peut etre tenu responsable de l'utilisation faite des
   17 //  composantes associees a ce projet (en partie ou dans leur totalite).
   18 //
   19 //  Une copie du fichier de la GNU GPL est fournie dans le repertoire DOC
   20 //  de ce projet sous le nom gnu_gpl.txt
   21 //
   22 // =============================================================================
   23 //
   24 function generer_accueil( &$xml, $c )
   25     {
   26     global $DB_PRFX ;
   27     $sql = <<<SQL
   28         SELECT titre, resume, contenu, pseudo,
   29             DATE_FORMAT( dt, '%d/%m/%Y à %Hh%i') as dtc
   30         FROM ${DB_PRFX}dossier
   31         WHERE court = 'accueil'
   32 SQL;
   33     $res = $c->query( $sql ) ;
   34     if ( $r = mysql_fetch_assoc( $res ) )
   35         {
   36         $xml->addElementText('page', toXML(fromMYSQL($r['titre'])) ) ;
   37         $attr = array(
   38             'titre'=> toXML(fromMYSQL($r['titre']), true ),
   39             'date'=> toXML( $r['dtc'], true ),
   40             'auteur'=> toXML( $r['pseudo'], true )
   41         ) ;
   42         $txt = espaceInsecable(fromMYSQL($r['contenu'])) ;
   43         $xml->addElementText('index', $txt, $attr ) ;
   44         $xml->addElementText('description',toXML(fromMYSQL($r['resume'])) ) ;
   45         }
   46     mysql_freeresult( $res ) ;
   47     $sql = <<<SQL
   48         SELECT titre, contenu, pseudo,
   49             DATE_FORMAT( dt, '%d/%m/%Y à %Hh%i') as dtc
   50         FROM ${DB_PRFX}news
   51         ORDER BY id DESC
   52         LIMIT 5
   53 SQL;
   54     $res = $c->query( $sql ) ; $news_xml = false ;
   55     while ( $r = mysql_fetch_assoc( $res ) )
   56         {
   57         if ( $news_xml == false )
   58             $news_xml = &$xml->addElement( 'nouveautes' ) ;
   59         $attr = array(
   60             'titre'=> toXML(fromMYSQL($r['titre']), true ),
   61             'date'=> toXML( $r['dtc'], true ),
   62             'auteur'=> toXML( $r['pseudo'], true ) ) ;
   63         $txt = espaceInsecable(fromMYSQL($r['contenu'])) ;
   64         $news_xml->addElementText( 'nouveaute', $txt, $attr );
   65         }
   66     ajouter_menu( $xml, $c ) ;
   67     ajouter_liste( $xml, $c, 'index' ) ;
   68     }
   69 
   70 function generer_dossier( &$xml, $c, $dossier )
   71     {
   72     global $DB_PRFX ;
   73     $sql = <<<SQL
   74         SELECT titre, resume, contenu, pseudo, sous_article,
   75             DATE_FORMAT( dt, '%d/%m/%Y à %Hh%i') as dtc
   76         FROM ${DB_PRFX}dossier
   77         WHERE court = '$dossier'
   78 SQL;
   79     $res = $c->query( $sql ) ;
   80     if ( $r = mysql_fetch_assoc( $res ) )
   81         {
   82         $xml->addElementText('page', toXML(fromMYSQL($r['titre'])) ) ;
   83         $attr = array(
   84             'titre'=> toXML(fromMYSQL($r['titre']), true ),
   85             'date'=> toXML( $r['dtc'], true ),
   86             'auteur'=> toXML( $r['pseudo'], true )
   87         ) ;
   88         $txt = espaceInsecable(fromMYSQL($r['contenu'])) ;
   89         $xml->addElementText( 'dossier', $txt, $attr );
   90         $xml->addElementText( 'description', toXML(fromMYSQL($r['resume'])) ) ;
   91         }
   92     mysql_freeresult( $res ) ;
   93     ajouter_menu( $xml, $c ) ;
   94     if ( $r['sous_article'] == 'N' )
   95         ajouter_liste( $xml, $c, $dossier ) ;
   96     else
   97         ajouter_articles( $xml, $c, $dossier, -1 ) ;
   98     }
   99 
  100 function generer_article( &$xml, $c, $dossier, $numero )
  101     {
  102     global $DB_PRFX ;
  103     $sql = <<<SQL
  104         SELECT titre, resume, contenu, pseudo,
  105             DATE_FORMAT( dt, '%d/%m/%Y à %Hh%i') as dtc
  106         FROM ${DB_PRFX}article
  107         WHERE dossier = '$dossier' AND numero='$numero'
  108 SQL;
  109     $res = $c->query( $sql ) ;
  110     if ( $r = mysql_fetch_assoc( $res ) )
  111         {
  112         $xml->addElementText('page', toXML(fromMYSQL($r['titre'])) ) ;
  113         $attr = array(
  114             'titre'=> toXML(fromMYSQL($r['titre']), true ),
  115             'date'=> toXML( $r['dtc'], true ),
  116             'auteur'=> toXML( $r['pseudo'], true )
  117         ) ;
  118         $txt = espaceInsecable(fromMYSQL($r['contenu'])) ;
  119         $xml->addElementText( 'article', $txt , $attr );
  120         $xml->addElementText( 'description', toXML(fromMYSQL($r['resume'])) ) ;
  121         }
  122     mysql_freeresult( $res ) ;
  123     ajouter_menu( $xml, $c ) ;
  124     ajouter_articles( $xml, $c, $dossier, $numero ) ;
  125     }
  126 
  127 function ajouter_menu( &$xml, $c )
  128     {
  129     global $DB_PRFX ;
  130     $sql = <<<SQL
  131         SELECT court, titre, titre_item
  132             FROM ${DB_PRFX}dossier
  133             WHERE rang_menu >= 0
  134             ORDER BY rang_menu
  135 SQL;
  136     $menu = &$xml->addElement( 'menu' ) ;
  137     $res = $c->query( $sql ) ;
  138     while ( $r = mysql_fetch_assoc( $res ) )
  139         {
  140         if ( $r['court'] == 'accueil' )
  141             $page = 'index' ;
  142         else
  143             $page = $r['court'] ;
  144         $attr = array(
  145             'page'=> $page,
  146             'titre'=> toXML(fromMYSQL($r['titre']), true ),
  147             'titre_item'=> toXML(fromMYSQL($r['titre_item']), true )
  148         ) ;
  149         $menu->addElementSimple( 'item', $attr ) ;
  150         }
  151     mysql_freeresult( $res ) ;
  152     }
  153 
  154 function ajouter_liste( &$xml, $c, $courant )
  155     {
  156     global $DB_PRFX ;
  157     $sql = <<<SQL
  158         SELECT court, titre, titre_item
  159             FROM ${DB_PRFX}dossier
  160             WHERE rang_liste >= 0
  161             ORDER BY rang_liste
  162 SQL;
  163     $menu = &$xml->addElement( 'liste',
  164         array('type'=>'menu','courant'=>toXML($courant,true)) ) ;
  165     $res = $c->query( $sql ) ;
  166     while ( $r = mysql_fetch_assoc( $res ) )
  167         {
  168         if ( $r['court'] == 'accueil' )
  169             $page = 'index' ;
  170         else
  171             $page = $r['court'] ;
  172         $actif = ( $page == $courant )?'Y':'N' ;
  173         $attr = array(
  174             'page'=> $page,
  175             'titre'=> toXML(fromMYSQL($r['titre']), true ),
  176             'titre_item'=> toXML(fromMYSQL($r['titre_item']), true ),
  177             'actif'=> $actif
  178         ) ;
  179         $menu->addElementSimple( 'item', $attr ) ;
  180         }
  181     mysql_freeresult( $res ) ;
  182     }
  183 
  184 function ajouter_articles( &$xml, $c, $dossier, $numero )
  185     {
  186     global $DB_PRFX ;
  187     $menu = &$xml->addElement( 'liste', array('type'=>'article') ) ;
  188     $sql = <<<SQL
  189         SELECT titre, titre_item
  190             FROM ${DB_PRFX}dossier
  191             WHERE court = '$dossier'
  192 SQL;
  193     $res = $c->query( $sql ) ;
  194     if ( $r = mysql_fetch_assoc( $res ) )
  195         {
  196         $page = $dossier ;
  197         $attr = array(
  198             'page'=> $page,
  199             'titre'=> toXML(fromMYSQL($r['titre']), true ),
  200             'titre_item'=> toXML(fromMYSQL($r['titre_item']), true ),
  201             'actif'=>($numero==-1)?'Y':'N'
  202         ) ;
  203         $menu->addElementSimple( 'titre_liste', $attr ) ;
  204         }
  205     $sql = <<<SQL
  206         SELECT numero, titre, titre_item
  207             FROM ${DB_PRFX}article
  208             WHERE dossier='$dossier'
  209             ORDER BY numero
  210 SQL;
  211     $res = $c->query( $sql ) ; $art = array() ;
  212     while ( $r = mysql_fetch_assoc( $res ) )
  213         {
  214         $page = $dossier.'_'.$r['numero'] ;
  215         $attr = array(
  216             'page'=> $page,
  217             'titre'=> toXML(fromMYSQL($r['titre']), true ),
  218             'titre_item'=> toXML(fromMYSQL($r['titre_item']), true ),
  219             'actif'=>($r['numero']==$numero)?'Y':'N'
  220         ) ;
  221         $menu->addElementSimple( 'item', $attr ) ;
  222         $art[] = $attr ;
  223         }
  224     mysql_freeresult( $res ) ;
  225     if ( $numero == -1 )
  226         {
  227         $la = &$xml->addElement( 'liste_article' ) ;
  228         foreach( $art as $a )
  229             $la->addElementSimple( 'item_article', $a ) ;
  230         }
  231     }
  232 
  233 // le retour de cette fonction
  234 // 0 : OK, il y a une page suivante
  235 // 1 : OK, il n'a pas de page suivante
  236 // 2 : PB
  237 function generer_album( &$xml, $c, $album, $page )
  238     {
  239     global $DB_PRFX ;
  240     // Les info de l'album
  241     $sql = <<<SQL
  242         SELECT numero, titre, resume
  243         FROM ${DB_PRFX}pha
  244         WHERE court='$album'
  245 SQL;
  246     $res = $c->query( $sql ) ;
  247     if ( ! ( $r = mysql_fetch_assoc( $res ) ) ) return 2 ;
  248     $xml->addElementText( 'description', toXML(fromMYSQL($r['resume'])) ) ;
  249     $attr = array( 'titre'=> toXML(fromMYSQL($r['titre']), true) ) ;
  250     $album_num = $r['numero'] ;
  251     mysql_freeresult( $res ) ;
  252 
  253     // le nombre d'images dans l'album : verification de la page
  254     $sql = "SELECT COUNT(*) FROM  ${DB_PRFX}phf WHERE album='$album_num'" ;
  255     $res = $c->query( $sql ) ;
  256     if ( ! ( $r = mysql_fetch_array( $res, MYSQL_NUM ) ) ) return 2 ;
  257     $nbphoto = $r[0] ;
  258     mysql_freeresult( $res ) ;
  259     $nbpage = (int)( ($nbphoto+14) / 15 ) ;
  260     if ( $page >= $nbpage ) return 2 ; // les pages commencencent à 0
  261 
  262     $premier = $page*15 ;
  263     $xml_album = &$xml->addElement( 'album', $attr ) ;
  264     $sql = <<<SQL
  265         SELECT numero, titre, fichier, vw, vh
  266             FROM ${DB_PRFX}phf
  267             WHERE album='$album_num'
  268             ORDER BY numero
  269             LIMIT $premier, 15
  270 SQL;
  271     $res = $c->query( $sql ) ;
  272     while ( $r = mysql_fetch_assoc( $res ) )
  273         {
  274         $attr = array(
  275             'page'=> 'PHOTOS/'.$album.'_p_'.$r['numero'],
  276             'titre'=> toXML(fromMYSQL($r['titre']), true ),
  277             'fichier'=> toXML( $r['fichier'], true ),
  278             'w'=> $r['vw'], 'h'=>$r['vh']
  279         ) ;
  280         $xml_album->addElementSimple( 'photo_album', $attr ) ;
  281         }
  282     mysql_freeresult( $res ) ;
  283     $premier = '<premier page="PHOTOS/'.$album.'_a_0"/>' ;
  284     $precedent = '<precedent page="PHOTOS/'.$album.'_a_'.($page-1).'"/>' ;
  285     $suivant = '<suivant page="PHOTOS/'.$album.'_a_'.($page+1).'"/>' ;
  286     $dernier = '<dernier page="PHOTOS/'.$album.'_a_'.($nbpage-1).'"/>' ;
  287     if ( $page == 0 ) { $premier = '' ; $precedent = '' ; }
  288     if ( $page == 1 ) { $precedent = '' ; }
  289     if ( $page == $nbpage-2 ) { $suivant = '' ; }
  290     if ( $page == $nbpage-1 ) { $suivant = '' ; $dernier='' ; }
  291     $nav = $premier.$precedent.$suivant.$dernier ;
  292     $attr = array( 'page'=>$album.'_p_'.$page, 'mode'=>'a' ) ;
  293     $xml_album->addElementText( 'navigation', $nav, $attr ) ;
  294     ajouter_menu( $xml, $c ) ;
  295     return 0 ;
  296     }
  297 function generer_photo( &$xml, $c, $album, $num )
  298     {
  299     global $DB_PRFX ;
  300     // Les info de l'album
  301     $sql = <<<SQL
  302         SELECT numero, titre
  303         FROM ${DB_PRFX}pha
  304         WHERE court='$album'
  305 SQL;
  306     $res = $c->query( $sql ) ;
  307     if ( ! ( $r = mysql_fetch_assoc( $res ) ) ) return 2 ;
  308     $album_num = $r['numero'] ;
  309     $album_titre = fromMYSQL($r['titre']) ;
  310     mysql_freeresult( $res ) ;
  311 
  312     // les images dans l'album : recherche des liens
  313     $sql = "SELECT numero FROM  ${DB_PRFX}phf" ;
  314     $sql.= " WHERE album='$album_num' ORDER BY NUMERO" ;
  315     $res = $c->query( $sql ) ;
  316     $photo_nb = 0 ; $prec = -1 ; $prem = -1 ; $suiv = -1 ; $der = -1 ;
  317     while( $r = mysql_fetch_array( $res, MYSQL_NUM ) )
  318         {
  319         $n = $r[0] ;
  320         if ( $prem == -1 ) $prem = $n ;
  321         if ( $n < $num ) $prec = $n ;
  322         if ( $n > $num ) if ( $suiv == -1 ) $suiv = $n ;
  323         $der = $n ;
  324         if ( $n <= $num ) $photo_nb++ ;
  325         }
  326     mysql_freeresult( $res ) ;
  327     $nupage = (int)( ($photo_nb+14) / 15 ) - 1 ;
  328 
  329     $sql = <<<SQL
  330         SELECT numero, titre, fichier, resume, w, h
  331             FROM ${DB_PRFX}phf
  332             WHERE numero='$num'
  333 SQL;
  334     $attr = array( 'album'=>toXML( $album_titre, true ) ) ;
  335     $xml_photo = &$xml->addElement( 'grande_photo', $attr ) ;
  336     $res = $c->query( $sql ) ;
  337     if ( $r = mysql_fetch_assoc( $res ) )
  338         {
  339         $attr = array(
  340             'page'=> 'PHOTOS/'.$album.'_p_'.$r['numero'],
  341             'titre'=> toXML( fromMYSQL($r['titre']), true ),
  342             'fichier'=> toXML( $r['fichier'], true ),
  343             'w'=> $r['w'], 'h'=>$r['h']
  344         ) ;
  345         $xml_photo->addElementSimple( 'la_photo', $attr ) ;
  346         $xml->addElementText( 'description', toXML(fromMYSQL($r['resume'])) ) ;
  347         }
  348     mysql_freeresult( $res ) ;
  349 
  350     $up = '<album page="PHOTOS/'.$album.'_a_'.$nupage.'"/>' ;
  351     $premier = '<premier page="PHOTOS/'.$album.'_p_'.$prem.'"/>' ;
  352     $precedent = '<precedent page="PHOTOS/'.$album.'_p_'.$prec.'"/>' ;
  353     $suivant = '<suivant page="PHOTOS/'.$album.'_p_'.$suiv.'"/>' ;
  354     $dernier = '<dernier page="PHOTOS/'.$album.'_p_'.$der.'"/>' ;
  355 
  356     if ( $num == $prem ) { $premier = '' ; $precedent = '' ; }
  357     if ( $prem == $prec ) { $precedent = '' ; }
  358     if ( $num == $der ) { $dernier=''; $suivant = '' ; }
  359     if ( $der == $suiv ) { $suivant = '' ; }
  360     $nav = $up.$premier.$precedent.$suivant.$dernier ;
  361     $attr = array( 'page'=>$album.'_p_'.$nupage, 'mode'=>'a' ) ;
  362     $xml_photo->addElementText( 'navigation', $nav, $attr ) ;
  363     ajouter_menu( $xml, $c ) ;
  364     return 0 ;
  365     }
  366 function generer_nouveautes( &$xml, $c )
  367     {
  368     global $DB_PRFX ;
  369     $c = new MYSQL ;
  370     $sql = <<<SQL
  371         SELECT titre, contenu, pseudo,
  372             DATE_FORMAT( dt, '%d/%m/%Y à %Hh%i') as dtc
  373         FROM ${DB_PRFX}news
  374         ORDER BY id DESC
  375 SQL;
  376     $res = $c->query( $sql ) ; $news_xml = false ;
  377     while ( $r = mysql_fetch_assoc( $res ) )
  378         {
  379         if ( $news_xml == false )
  380             $news_xml = &$xml->addElement( 'nouveautes' ) ;
  381         $attr = array(
  382             'titre'=> toXML(fromMYSQL($r['titre']), true ),
  383             'date'=> toXML( $r['dtc'], true ),
  384             'auteur'=> toXML( $r['pseudo'], true ) ) ;
  385         $txt = espaceInsecable(fromMYSQL($r['contenu'])) ;
  386         $news_xml->addElementText( 'nouveaute', $txt, $attr );
  387         }
  388     ajouter_menu( $xml, $c ) ;
  389     ajouter_liste( $xml, $c, 'nouveautes' ) ;
  390     }
  391 
  392 function generer_cal( &$xml, $c, $saison )
  393     {
  394     global $DB_PRFX ;
  395     if ( $saison == false )
  396         {
  397         $annee = date('Y')+0 ; $mois = date('m')+0 ; $jour = date('d')+0 ;
  398         $sql = "SELECT saison FROM ${DB_PRFX}cal WHERE annee='$annee'" ;
  399         $sql.= " AND mois='$mois' AND jour='$jour'" ;
  400         $res = $c->query( $sql ) ;
  401         $r = mysql_fetch_object( $res ) ;
  402         $saison = $r->saison ;
  403         mysql_freeresult( $res ) ;
  404         file_put_contents( 'sql.txt', $sql."\n" ) ;
  405         }
  406     $LES_MOIS = array (
  407         1=>'Janvier', 2=>'Fevrier', 3=>'Mars', 4=>'Avril',
  408         5=>'Mai', 6=>'Juin', 7=>'Juillet', 8=>'Août',
  409         9=>'Septembre', 10=>'Octobre', 11=>'Novembre', 12=>'Décembre' ) ;
  410     $jattr = array( 'id', 'jour', 'jsem', 'classe', 'info' ) ;
  411 
  412     $sql = "SELECT saison FROM ${DB_PRFX}cal GROUP BY saison ORDER BY saison" ;
  413     $res = $c->query( $sql ) ;
  414     $prec = -1 ; $suiv = -1 ;
  415     while ( $r = mysql_fetch_object( $res ) )
  416         {
  417         if ( $r->saison < $saison ) $prec = $r->saison ;
  418         if ( $r->saison > $saison ) if ( $suiv == -1 ) $suiv = $r->saison ;
  419         }
  420     mysql_freeresult( $res ) ;
  421     $attr = array( 'saison'=>$saison ) ;
  422     if ( $prec != -1 ) $attr['precedente'] = $prec ;
  423     if ( $suiv != -1 ) $attr['suivante'] = $suiv ;
  424     $cal = &$xml->addElement( 'cal', $attr ) ;
  425     $mois_courant = -1 ; $mois_xml = false ; $mois_pos=0 ;
  426     $sql = <<<SQL
  427         SELECT *
  428             FROM ${DB_PRFX}cal
  429             WHERE saison='$saison'
  430             ORDER BY annee, mois, jour
  431 SQL;
  432     file_put_contents( 'sql2.txt', $sql."\n" ) ;
  433     $res = $c->query( $sql ) ;
  434     while ( $r = mysql_fetch_assoc( $res ) )
  435         {
  436         foreach( $r as $var => $val )
  437             $$var = fromMYSQL( $val ) ;
  438         if ( $mois != $mois_courant )
  439             {
  440             $mois_pos++ ;
  441             $mois_xml = &$cal->addElement( 'mois', array( 'pos'=>$mois_pos,
  442                 'm'=>$mois, 'mois'=>$LES_MOIS[$mois], 'annee'=>$annee ) ) ;
  443             $mois_courant = $mois ;
  444             }
  445         $attr = array() ;
  446         foreach( $jattr as $a ) $attr[$a] = toXML( $$a, true ) ;
  447         $mois_xml->addElementSimple( 'jour', $attr ) ;
  448         }
  449     mysql_freeresult( $res ) ;
  450     $sql = "SELECT * FROM ${DB_PRFX}calcl ORDER BY info" ;
  451     $res = $c->query( $sql ) ;
  452     while ( $r = mysql_fetch_assoc( $res ) )
  453         {
  454         $attr = array() ;
  455         foreach( $r as $var => $val )
  456             $attr[$var] = toXML( fromMYSQL( $val ), true ) ;
  457         $cal->addElementSimple( 'classe', $attr ) ;
  458         }
  459     mysql_freeresult( $res ) ;
  460     ajouter_menu( $xml, $c ) ;
  461     }
  462 ?>
Makefile util.php mysql.php xml.php xml_session.php only_session.php xml_publie.php generer.php forum.php xml_post_session.php xml_post_only_session.php httprequest.js
~~ / LIB / generer.php

Haut de page

Contacter crabs

Date de génération : 24/10/2008 21:34