[ Index ]
 

Code source de Dotclear 1.2.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/layout/ -> functions.php (source)

   1  <?php
   2  # ***** BEGIN LICENSE BLOCK *****
   3  # This file is part of DotClear.
   4  # Copyright (c) 2004 Olivier Meunier and contributors. All rights
   5  # reserved.
   6  #
   7  # DotClear is free software; you can redistribute it and/or modify
   8  # it under the terms of the GNU General Public License as published by
   9  # the Free Software Foundation; either version 2 of the License, or
  10  # (at your option) any later version.
  11  # 
  12  # DotClear is distributed in the hope that it will be useful,
  13  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15  # GNU General Public License for more details.
  16  # 
  17  # You should have received a copy of the GNU General Public License
  18  # along with DotClear; if not, write to the Free Software
  19  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20  #
  21  # ***** END LICENSE BLOCK *****
  22  
  23  /**
  24  @doc
  25  
  26  == Fonctionnement des gabarits ==
  27  
  28  === Introduction ===
  29  
  30  Le système de modèle de page de DotClear n'est pas ce qui se fait de plus
  31  simple à l'usage mais reste abordable pour peu de bien lire la
  32  documentation.
  33  
  34  Le fonctionnement est très simple, il s'agit de fonctions PHP qui se
  35  chargent d'afficher l'information qu'on leur demande.
  36  
  37  Parfois un motif est utilisé pour formater l'information affichée. Ce motif
  38  constitue une marque de substitution, généralement identifiée par %s. Pour de
  39  plus amples détails, suivre la documentation de la fonction
  40  PHP|PHP Hypertext Processor,
  41  [http://fr2.php.net/manual/fr/function.sprintf.php sprintf].
  42  Pour chaque fonction utilisant un motif, nous expliquerons comment le remplir.
  43  */
  44  
  45  /**
  46  @doc
  47  
  48  === Les fonctions informatives ===
  49  
  50  Les fonctions suivantes permettent d'afficher des renseignements divers sur
  51  le blog ou les billets.
  52  */
  53  
  54  
  55  /**
  56  @function dcInfo
  57  
  58  Fonction affichant une information sur le blog.
  59  La propriété '''name''' peut prendre les valeurs suivantes :
  60  
  61   * name : non du weblogue
  62   * theme : chemin vers le répertoire du thème
  63   * img : chemin vers les images
  64   * url : URL de la home page du blog
  65   * rss : chemin vers le fil RSS
  66   * atom : chemin vers le fil Atom
  67   * search : chemin de l'action pour le moteur de rechercher
  68   * logo : chemin vers l'image du logo
  69   * encoding : Encodage des caractères
  70   * lang : langue principale du weblogue
  71  
  72  Exemple :
  73  
  74  {{{
  75  #!php
  76  <h1><?php dcInfo(); ?></h1>
  77  
  78  <a href="<?php dcInfo('rss'); ?>">fil rss</a>
  79  }}}
  80  
  81  Note : vous pouvez faire un lien vers le fil RSS ou Atom d'une catégorie
  82  très facilement en ajoutant l'identifiant de la catégorie à l'URL, comme
  83  ceci par exemple :
  84  
  85  {{{
  86  #!php
  87  <a href="<?php dcInfo('rss'); ?>?cat=General">RSS général</a>
  88  }}}
  89  
  90  @param     string name     Nom de la propriété à afficher     ('name')
  91  */
  92  function dcInfo($name='name')
  93  {
  94      switch ($name)
  95      {
  96          case 'theme' : echo $GLOBALS['theme_uri'].$GLOBALS['__theme']; break;
  97          case 'img' : echo $GLOBALS['img_path']; break;
  98          case 'url' : echo dc_blog_url; break;
  99          case 'rss' : echo dc_blog_rss; break;
 100          case 'atom' : echo dc_blog_atom; break;
 101          case 'search' : echo dc_blog_url; break;
 102          case 'logo' : echo $GLOBALS['img_path'].'/dotclear_pw.png'; break;
 103          case 'encoding' : echo dc_encoding; break;
 104          case 'lang' : echo dc_default_lang; break;
 105          default : echo dc_blog_name;
 106      }
 107  }
 108  
 109  /**
 110  @function dcDayDate
 111  
 112  Cette fonction affiche la date du jour. Elle est utilisée dans la boucle
 113  des billets et n'affiche la date que lors du premier billet du jour. Cela
 114  permet d'afficher la date du jour au dessus de plusieurs billets du même
 115  jour.
 116  
 117  On peut entourer la date de marqueur ou de texte grâce à la chaîne
 118  de substitution '''s''' passée en argument. Par exemple:
 119  
 120  {{{
 121  #!php
 122  <?php dcDayDate('<h2>%s</h2>'); ?>
 123  }}}
 124  
 125  @param string s Chaine de substition ('%s')
 126  */
 127  function dcDayDate($s='%s')
 128  {
 129      if ($GLOBALS['news']->firstPostOfDay())
 130      {
 131          printf($s,$GLOBALS['news']->getLDate());
 132      }
 133  }
 134  
 135  /**
 136  @function dcCalendar
 137  
 138  Cette fonction affiche un calendrier contextuel (mois, année, jour).
 139  Le calendrier est un tableau dans une balise <div> dont la classe
 140  CSS|Cascading Style Sheet est ''cal''. Les nom des jours sont indiqués avec des
 141  cellules d'en-tête (th) et le titre avec (caption).
 142  
 143  Exemple d'utilisation :
 144  
 145  {{{
 146  #!php
 147  <?php dcCalendar(); ?>
 148  }}}
 149  
 150  @param string  block Chaine de substitution pour pour le tableau ('<div class="cal"><table summary="calendrier">%s</table></div>')
 151  */
 152  function dcCalendar($block='<div class="cal"><table summary="calendrier">%s</table></div>')
 153  {
 154      global $year,$month,$day,$cat_id,$lang;
 155      
 156      echo $GLOBALS['blog']->xCalendar($year,$month,$day,$cat_id,$lang,$block);
 157  }
 158  
 159  /**
 160  @function dcHeadLinks
 161  
 162  Cette fonction affiche les liens (link) dans l'en-tête du fichier HTML.
 163  Elle génère automatiquement les liens de navigation dans le blog. Il
 164  suffit de la placer dans l'en-tête du document :
 165  
 166  {{{
 167  #!php
 168  <head>
 169  <?php dcHeadLinks(); ?>
 170  </head>
 171  }}}
 172  */
 173  function dcHeadLinks()
 174  {
 175      global $blog, $cat_id, $rs_cat;
 176      
 177      echo dcPostNext(1,'<link rel="next" href="%3$s" title="%2$s" />'."\n");
 178      echo dcPostNext(-1,'<link rel="previous" href="%3$s" title="%2$s" />'."\n");
 179      
 180      if (!$rs_cat->isEmpty() && !$cat_id)
 181      {
 182          while (!$rs_cat->EOF())
 183          {
 184              if ($rs_cat->f('nb_post') > 0)
 185              {
 186                  $id = $rs_cat->f('cat_libelle_url');
 187                  $libelle = $rs_cat->f('cat_libelle');
 188                  $lien = sprintf($blog->front_url['cat'],$id);
 189                  
 190                  echo '<link rel="section" href="'.$lien.'" title="'.$libelle.'" />'."\n";
 191              }
 192              $rs_cat->moveNext();
 193          }
 194          $rs_cat->moveStart();
 195      }
 196      
 197      $arry_months = $GLOBALS['arry_months'];
 198      $comp_url = '';
 199      if ($cat_id) {
 200          $comp_url = $cat_id.'/';
 201      }
 202      foreach ($arry_months as $ts => $d)
 203      {
 204          $titre = dt::str('%B %Y',$ts);
 205          $url = sprintf($blog->front_url['archive'],$comp_url.date('Y',$ts),date('m',$ts));
 206          echo '<link rel="archive" href="'.$url.'" title="'.$titre.'" />'."\n";
 207      }
 208      
 209      if ($GLOBALS['mode'] == 'home')
 210      {
 211          echo $GLOBALS['news']->getHeadLinks();
 212      }
 213  }
 214  
 215  /**
 216  @function dcSinglePostTitle
 217  
 218  Cette fonction affiche le titre d'un billet si on est sur une page présentant
 219  un billet (/blog/yyyy/mm/dd/titre par exemple).
 220  
 221  On l'utilisera dans la balise <title> du document. Par exemple:
 222  
 223  {{{
 224  #!php
 225  <title><?php dcSinglePostTitle(); ?></title>
 226  }}}
 227  
 228  @param string s Chaîne de substitution ('%s - ')
 229  */
 230  function dcSinglePostTitle($s='%s - ')
 231  {
 232      if ($GLOBALS['mode'] == 'post') {
 233          printf($s,$GLOBALS['news']->f('post_titre'));
 234      }
 235  }
 236  
 237  /**
 238  @function dcSingleCatTitle
 239  
 240  Cette fonction affiche le nom de la catégorie s'il y a lieu de l'afficher. On peut
 241  l'utiliser dans le titre, comme '''dcSinglePostTitle'''.
 242  
 243  @param string s Chaîne de substitution ('%s - ')
 244  */
 245  function dcSingleCatTitle($s='%s - ')
 246  {
 247      if ($GLOBALS['cat_id'] != '') {
 248          printf($s,$GLOBALS['news']->f('cat_libelle'));
 249      }
 250  }
 251  
 252  /**
 253  @function dcSingleMonthTitle
 254  
 255  Cette fonction affiche le mois et l'année en cours s'il y a lieu de l'afficher.
 256  S'utilise aussi dans le titre comme '''dcSinglePostTitle'''.
 257  
 258  @param string s Chaîne de substitution ('%s - ')
 259  */
 260  function dcSingleMonthTitle($s='%s - ')
 261  {
 262      if ($GLOBALS['mode'] == 'month') {
 263          $ts = strtotime($GLOBALS['year'].'-'.$GLOBALS['month'].'-01 00:00');
 264          printf($s,dt::str('%B %Y',$ts));
 265      }
 266  }
 267  
 268  /**
 269  @function dcCustomTitle
 270  
 271  Cette fonction affiche le contenu de la variable globale $dc_custom_title.
 272  Cette variable peut-être assignée par un plugin.
 273  
 274  @param string s Chaîne de substitution ('%s - ')
 275  */
 276  function dcCustomTitle($s='%s - ')
 277  {
 278      if (!empty($GLOBALS['dc_custom_title'])) {
 279          printf($s,$GLOBALS['dc_custom_title']);
 280      }
 281  }
 282  
 283  /**
 284  @doc
 285  
 286  ==== Exemples d'usage des fonctions pour la balise <title> ====
 287  
 288  Voici un exemple de commun de balise <title> à partir des fonctions précédentes :
 289  
 290  {{{
 291  #!php
 292  <title><?php dcSinglePostTitle('%s - '); dcSingleCatTitle('%s - ');
 293  dcSingleMonthTitle('%s - '); dcCustomTitle('%s - '); dcInfo(); ?></title>
 294  }}}
 295  */
 296  
 297  /**
 298  @function dcLangList
 299  
 300  Cette fonction affiche une liste des langues définies dans les billets. Les
 301  langues s'affichent uniquement si au moins deux langues différentes existent.
 302  Ceci permet d'offrir une navigation par langue dans le weblogue.
 303  
 304  @param string  block Chaine de substitution pour pour la liste ('<ul>%s</ul>')
 305  @param string  item  Chaine de substitution pour un élément ('<li>%s</li>')
 306  */
 307  function dcLangList($block='<ul>%s</ul>',$item='<li>%s</li>')
 308  {
 309      global $rs_lang,$lang,$blog;
 310      
 311      if ($rs_lang->nbRow() > 1)
 312      {
 313          $res = '';
 314          while ($rs_lang->fetch())
 315          {
 316              $lien = '<a href="'.
 317              sprintf($blog->front_url['cat'],$rs_lang->f(0)).'">'.
 318              $rs_lang->f(0).'</a>';
 319              
 320              if ($lang == $rs_lang->f(0)) {
 321                  $lien = '<strong>'.$lien.'</strong>';
 322              }
 323              
 324              $res .= sprintf($item,$lien);
 325          }
 326          
 327          printf($block,$res);
 328      }
 329  }
 330  
 331  /**
 332  @function dcCatList
 333  
 334  Cette fonction affiche une liste des catégories avec les liens pour y
 335  accéder. La liste générée est une liste non ordonnée (<ul>), il est donc
 336  très simple de la mettre en forme par la suite.
 337  
 338  @param string  block Chaine de substitution pour pour la liste ('<ul>%s</ul>')
 339  @param string  item  Chaine de substitution pour un élément ('<li>%s</li>')
 340  */
 341  function dcCatList($block='<ul>%s</ul>',$item='<li>%s</li>')
 342  {
 343      global $rs_cat, $cat_id, $lang, $blog;
 344      
 345      $comp_url = '';
 346      
 347      if ($lang) {
 348          $comp_url = $lang.'/';
 349      }
 350      
 351      if (!$rs_cat->isEmpty())
 352      {
 353          $res = '';
 354          
 355          while (!$rs_cat->EOF())
 356          {
 357              if ($rs_cat->f('nb_post') > 0)
 358              {
 359                  $id = $rs_cat->f('cat_libelle_url');
 360                  $libelle = $rs_cat->f('cat_libelle');
 361                  
 362                  $lien = '<a href="'.
 363                  sprintf($blog->front_url['cat'],$comp_url.$id).
 364                  '">'.$libelle.'</a>';
 365                  
 366                  if ($cat_id == $id) {
 367                      $lien = '<strong>'.$lien.'</strong>';
 368                  }
 369                  
 370                  $res .= sprintf($item,$lien);
 371              }
 372              $rs_cat->moveNext();
 373          }
 374          $rs_cat->moveStart();
 375          
 376          printf($block,$res);
 377      }
 378  }
 379  
 380  /**
 381  @function dcMonthsList
 382  
 383  Cette fonction affiche la liste des mois contenant les archives.
 384  Si on se trouve dans une catégorie, seuls les mois de cette catégorie
 385  seront affichés.
 386  
 387  @param string  block Chaine de substitution pour pour la liste ('<ul>%s</ul>')
 388  @param string  item  Chaine de substitution pour un élément ('<li>%s</li>')
 389  */
 390  function dcMonthsList($block='<ul>%s</ul>',$item='<li>%s</li>')
 391  {
 392      global $arry_months, $month, $year, $cat_id, $lang, $blog;
 393      
 394      $comp_url = '';
 395      
 396      if ($lang) {
 397          $comp_url .= $lang.'/';
 398      }
 399      
 400      if($cat_id) {
 401          $comp_url .= $cat_id.'/';
 402      }
 403      
 404      $res = '';
 405      
 406      foreach($arry_months as $ts => $d)
 407      {
 408          $titre = dt::str('%B %Y',$ts);
 409          
 410          $url = sprintf($blog->front_url['archive'],$comp_url.date('Y',$ts),date('m',$ts));
 411          $lien = '<a href="'.$url.'">%s</a>';
 412          
 413          $liClass = '';
 414          
 415          if($year == date('Y',$ts) && $month == date('m',$ts)) {
 416              $lien = '<strong>'.$lien.'</strong>';
 417          }
 418          
 419          $res .= sprintf($item,sprintf($lien,$titre));
 420      }
 421      
 422      if (count($arry_months) > 0) {
 423          printf($block,$res);
 424      }
 425  }
 426  
 427  /**
 428  @function dcSelection
 429  
 430  Cette fonction affiche une liste des billets sélectionnés, avec simplement
 431  le titre et un lien vers le billet. L'affichage par défaut produira une liste,
 432  vous pouvez l'appeler tout simplement par '''dcSelection()'''.
 433  
 434  
 435  @param string  block Chaine de substitution pour pour la liste ('<ul>%s</ul>')
 436  @param string  item  Chaine de substitution pour un élément ('<li><a href="%2$s">%1$s</a></li>')
 437  @param integer limit Nombre de titres à afficher (ilimité)
 438  */
 439  function dcSelection($block='<ul>%s</ul>',$item='<li><a href="%2$s">%1$s</a></li>',$limit=NULL)
 440  {
 441      global $blog;
 442      
 443      $rs = $blog->getLastNews($limit,'','post_dt DESC',true);
 444      
 445      if (!$rs->isEmpty()) {
 446          $res = '';
 447          while (!$rs->EOF()) {
 448              $res .= sprintf($item,$rs->f('post_titre'),$rs->getPermURL());
 449              $rs->moveNext();
 450          }
 451          printf($block,$res);
 452      }
 453  }
 454  
 455  /**
 456  @function dcSearchString
 457  
 458  Cette fonction affiche la chaîne de recherche lorsque qu'une recherche vient d'être
 459  effectuée.
 460  
 461  @param string s Chaîne de substitution ('%s')
 462  */
 463  function dcSearchString($s='%s')
 464  {
 465      if(!empty($_GET['q'])) {
 466          printf($s,htmlspecialchars(stripslashes($_GET['q'])));
 467      }
 468  }
 469  
 470  /**
 471  @function dcAdminLink
 472  
 473  Cette fonction affiche un lien vers l'espace d'administration du blog dans le
 474  cas ou une session d'administration est ouverte (et seulement dans ce cas).
 475  
 476  @param string s Chaine de substitution ('<ul><li><a href="%s">admin</a></li></ul>')
 477  */
 478  function dcAdminLink($s='<ul><li><a href="%s">admin</a></li></ul>')
 479  {
 480      if (isset($_SESSION['sess_user_id']) && defined('DC_ECRIRE')) {
 481          $url = dc_app_url.'/'.DC_ECRIRE.'/index.php';
 482          printf($s,$url);
 483      }
 484  }
 485  
 486  
 487  # Billets #################################################
 488  /**
 489  @doc
 490  
 491  === Traitement des billets. ===
 492  
 493  Les fonctions suivantes doivent être utilisées uniquement dans un
 494  contexte de billet. Cela signifie qu'on l'utilisera si '''$mode'''
 495  vaut 'post' ou dans une boucle de billet. Exemple:
 496  
 497  {{{
 498  #!php
 499  <?php if ($mode == 'post') : ?>
 500   on peut utiliser les fonctions.
 501  <?php endif; ?>
 502  }}}
 503  
 504  L'affichage des listes de billets est géré par une boucle très simple
 505  à mettre en place. Voici un exemple qui affiche le titre des billets :
 506  
 507  {{{
 508  #!php
 509  <?php while ($news->fetch()) : ?>
 510   <h3><?php dcPostTitle(); ?></h3>
 511  <?php endwhile; ?>
 512  }}}
 513  */
 514  
 515  /**
 516  @function dcPostURL
 517  
 518  Cette fonction affiche l'URI du billet, son permalien. On l'utilisera dans
 519  l'affichage d'un billet (boucle ou pas). Par exemple:
 520  
 521  {{{
 522  #!php
 523  <a href="<?php dcPostURL(); ?>">lien permanent</a>
 524  }}}
 525  */
 526  function dcPostURL()
 527  {
 528      echo $GLOBALS['news']->getPermURL();
 529  }
 530  
 531  /**
 532  @function dcPostID
 533  
 534  Cette fonction affiche l'ID du billet (son numéro identifiant unique).
 535  */
 536  function dcPostID()
 537  {
 538      echo $GLOBALS['news']->f('post_id');
 539  }
 540  
 541  /**
 542  @function dcPostTitle
 543  
 544  Cette fonction affiche le titre d'un billet, avec chaîne de substitution
 545  possible. Exemple:
 546  
 547  {{{
 548  #!php
 549  <h2><?php dcPostTitle(); ?></h2>
 550  }}}
 551  */
 552  function dcPostTitle($s='%s')
 553  {
 554      printf($s,$GLOBALS['news']->f('post_titre'));
 555  }
 556  
 557  /**
 558  @function dcPostCatTitle
 559  
 560  Dans le contexte du billet, cette fonction affiche le nom de la catégorie
 561  du billet.
 562  */
 563  function dcPostCatTitle()
 564  {
 565      echo $GLOBALS['news']->f('cat_libelle');
 566  }
 567  
 568  /**
 569  @function dcPostCatURL
 570  
 571  Cette fonction affiche l'URL de la catégorie d'un billet. Ne s'utilise que dans
 572  le contexte d'un billet. Par exemple:
 573  
 574  {{{
 575  #!php
 576  <a href="<?php dcPostCarURL(); ?>"><?php dcPostCatTitle(); ?></a>
 577  }}}
 578  */
 579  function dcPostCatURL()
 580  {
 581      echo $GLOBALS['news']->getCatURL();
 582  }
 583  
 584  /**
 585  @function dcPostContent
 586  
 587  Cette fonction affiche le contenu d'un billet (sans son chapô). On peut
 588  limiter le nombre de mots affichés avec le paramère '''part'''.
 589  Si '''part''' vaut 0 alors on affiche tout le billet.
 590  
 591  @param integer part Nombre de mots à afficher
 592  */
 593  function dcPostContent($part=0)
 594  {
 595      global $news;
 596          
 597      if ($part > 0) {
 598          echo $news->blog->getPart($news->f('post_content'),$part);
 599      } else {
 600          echo $news->getContent();
 601      }
 602  }
 603  
 604  /**
 605  @function dcPostChapo
 606  
 607  Cette fonction affiche le chapô d'un billet s'il existe, sinon elle
 608  n'affiche rien. Le paramètre '''s''' permet d'ajouter des information lors
 609  de l'affichage du chapô. Exemple:
 610  
 611  {{{
 612  #!php
 613  <?php dcPostChapo('<h3>Chapô</h3> %s'); ?>
 614  }}}
 615  
 616  @param string s Chaine de substitution ('%s <hr />')
 617  */
 618  function dcPostChapo($s='%s <hr />')
 619  {
 620      printf($s,$GLOBALS['news']->getChapo());
 621  }
 622  
 623  /**
 624  @function dcPostAbstract
 625  
 626  Cette fonction affiche le chapô du billet s'il y en a un sinon elle affiche
 627  le contenu du billet. Si elle affiche le chapô, le paramètre '''l''' permet
 628  de définir un texte à afficher après le chapô. Dans le paramètre '''l''' la
 629  première chaîne %s indique le lien vers le billet et la seconde le titre
 630  du billet. On pourra donc par exemple faire ceci :
 631  
 632  {{{
 633  #!php
 634  <?php dcPostAbstract('%s','<p><a href="%s" title="Lire %s">Lire la suite</a></p>'); ?>
 635  }}}
 636  
 637  On notera que cette fonction trouve sa place dans un affichage de liste de
 638  billets, plutôt que dans l'affichage d'un seul billet.
 639  
 640  @param string s Chaîne de substitution du chapô ('%s')
 641  @param string l Chaîne affichée après le chapô ('<p><a href="%s" title="%s">Read next</a></p>')
 642  */
 643  function dcPostAbstract($s='%s',$l='<p><a href="%s" title="Read %s">Read next</a></p>')
 644  {
 645      global $news;
 646          
 647      if ($news->f('post_chapo') != '') {
 648          printf($s,$news->getChapo());
 649          printf($l,$news->getPermURL(),$news->f('post_titre'));
 650      } else {
 651          echo $news->getContent();
 652      }
 653  }
 654  
 655  /**
 656  @function dcPostAuthor
 657  
 658  Cette fonction affiche le nom canonique de l'auteur du billet. Le nom canonique
 659  est défini en fonction des informations données par le rédacteur. Si un pseudo
 660  est présent, il sera utilisé, sinon, le prénom et le nom seront utilisés.
 661  */
 662  function dcPostAuthor()
 663  {
 664      echo $GLOBALS['news']->getUserCN();
 665  }
 666  
 667  /**
 668  @function dcPostDate
 669  
 670  Cette fonction affiche la date d'un billet. On peut changer le formatage
 671  de la date en changeant le paramètre '''format'''. Par défaut, ce paramètre
 672  utilisera le format donné dans la configuration du blog.
 673  
 674  Voir [http://fr2.php.net/manual/fr/function.strftime.php strftime] pour les
 675  formats possible de date.
 676  
 677  @param string format Masque de formatage de la date ('')
 678  */
 679  function dcPostDate($format='')
 680  {
 681      if ($format) {
 682          echo dt::str($format,strtotime($GLOBALS['news']->f('post_dt')));
 683      } else {
 684          echo $GLOBALS['news']->getLDate();
 685      }
 686  }
 687  
 688  /**
 689  @function dcPostTime
 690  
 691  Cette fonction affiche l'heure d'un billet en utilisant le format donné dans la
 692  configuration du blog.
 693  */
 694  function dcPostTime($format='')
 695  {
 696      echo $GLOBALS['news']->getLTime();
 697  }
 698  
 699  /**
 700  @function dcPostLang
 701  
 702  Cette fonction affiche l'attribut lang="" pour un billet. Vous pouvez le
 703  positionner dans n'importe quel marqueur. Rien n'est affiché si la langue
 704  n'est pas présente.
 705  */
 706  function dcPostLang()
 707  {
 708      $lang = $GLOBALS['news']->f('post_lang');
 709      if ($lang != '') {
 710          echo 'lang="'.$lang.'"';
 711      }
 712  }
 713  
 714  /**
 715  @function dcPostNbComments
 716  
 717  Cette fonction affiche le nombre de commentaires d'un billet.
 718  Les trois arguments permettent de définir le texte affiché pour
 719  respectivement aucun, un ou plusieurs commentaires. Par exemple:
 720  
 721  {{{
 722  #!php
 723  <?php dcPostNbComments('aucun commentaire','un commentaire',
 724  '%s commentaires'); ?>
 725  }}}
 726  
 727  @param string zero Texte affiché pour 0 commentaire
 728  @param string one Texte affiché pour 1 commentaire
 729  @param string more Texte affiché plusieurs commentaires
 730  */
 731  function dcPostNbComments($zero,$one,$more)
 732  {
 733      $nb = $GLOBALS['news']->f('nb_comment');
 734      
 735      if($nb == 0) {
 736          echo $zero;
 737      } elseif($nb == 1) {
 738          echo $one;
 739      } elseif($nb > 1) {
 740          printf($more,$nb);
 741      }
 742  }
 743  
 744  /**
 745  @function dcPostNbTrackbacks
 746  
 747  Cette fonction affiche le nombre de trackbacks d'un billet.
 748  Les trois arguments permettent de définir le texte affiché pour
 749  respectivement aucun, un ou plusieurs trackbacks. Par exemple:
 750  
 751  {{{
 752  #!php
 753  <?php dcPostNbTrackbacks('aucun trackback','un trackback',
 754  '%s trackbacks'); ?>
 755  
 756  @param string zero Texte affiché pour 0 trackback
 757  @param string one Texte affiché pour 1 trackback
 758  @param string more Texte affiché plusieurs trackbacks
 759  */
 760  function dcPostNbTrackbacks($zero,$one,$more)
 761  {
 762      $nb = $GLOBALS['news']->f('nb_trackback');
 763      
 764      if($nb == 0) {
 765          echo $zero;
 766      } elseif($nb == 1) {
 767          echo $one;
 768      } elseif($nb > 1) {
 769          printf($more,$nb);
 770      }
 771  }
 772  
 773  /**
 774  @function dcPostNext
 775  
 776  Cette fonction permet d'afficher une information sur le billet suivant ou
 777  précédent. Le paramètre '''dir''' indique la direction dans laquelle chercher
 778  le billet (1 pour suivant, -1 pour précédent). Le paramètre '''s''' est une
 779  chaîne de substitution permettant de formater l'affichage des informations
 780  concernant le billet. Il y a trois paramètres à cette chaîne, donnant
 781  respectivement l'ID, le titre et l'url du billet suivant ou précédent. Cette
 782  fonction n'affiche rien si elle ne trouve pas de billet.
 783  
 784  On peut l'utiliser pour l'affichage individuel des billets, par exemple:
 785  
 786  {{{
 787  #!php
 788  <?php dcPostNext(1,'<a href="%3$s" title="%2$s">Billet suivant</a>'); ?>
 789  }}}
 790  
 791  Ceci affichera un lien vers le billet suivant s'il existe et ayant pour titre le
 792  titre du billet.
 793  
 794  @param integer dir Direction (1)
 795  @param string s Chaîne de substitution ('%1$s %2$s %3$s')
 796  */
 797  function dcPostNext($dir,$s='%1$s %2$s %3$s')
 798  {
 799      global $blog;
 800      
 801      if ($dir > 0 && (empty($GLOBALS['rs_next'])) || empty($GLOBALS['rs_prev'])) {
 802          return false;
 803      }
 804      
 805      $rs = ($dir > 0) ? $GLOBALS['rs_next'] : $GLOBALS['rs_prev'];
 806      
 807      if (!$rs->isEmpty())
 808      {
 809          $id = $rs->f('post_id');
 810          $titre = $rs->f('post_titre');
 811          $date = $rs->f('post_dt');
 812          
 813          $ts = strtotime($date);
 814          
 815          $url = sprintf($blog->front_url['post'],date('Y',$ts),
 816          date('m',$ts),date('d',$ts),$id,$blog->str2url($titre));
 817      
 818          printf($s,$id,$titre,$url);
 819      }
 820  }
 821  
 822  /**
 823  @function dcPostOpenComments
 824  
 825  Cette fonction indique si les commentaires sont autorisés pour un billet.
 826  On peut l'utiliser dans un test par exemple.
 827  
 828  @return boolean
 829  */
 830  function dcPostOpenComments()
 831  {
 832      return (boolean) $GLOBALS['news']->openComment();
 833  }
 834  
 835  /**
 836  @function dcPostOpenTrackbacks
 837  
 838  Cette fonction indique si les trackbacks sont autorisés pour un billet.
 839  On peut l'utiliser dans un test par exemple.
 840  
 841  @return boolean
 842  */
 843  function dcPostOpenTrackbacks()
 844  {
 845      return (boolean) $GLOBALS['news']->openTb();
 846  }
 847  
 848  /**
 849  @function dcPostTrackbackURI
 850  
 851  Cette fonction affiche l'URI à pinger pour faire un trackback sur un billet.
 852  */
 853  function dcPostTrackbackURI()
 854  {    
 855      echo
 856      'http://'.$_SERVER['HTTP_HOST'].
 857      dc_trackback_uri.'?id='.$GLOBALS['news']->f('post_id');
 858  }
 859  
 860  /**
 861  @function dcPostTrackbackAutoDiscovery
 862  
 863  Cette fonction affiche le commentaire HTML contenant les informations
 864  RDF permettant de réaliser la découverte automatique de l'URL de trackback.
 865  On l'utilisera dans l'en-tête du document de préférence.
 866  */
 867  function dcPostTrackbackAutoDiscovery()
 868  {    
 869      if ($GLOBALS['mode'] == 'post' && $GLOBALS['news']->openTb())
 870      {
 871          $tb_url = 'http://'.$_SERVER['HTTP_HOST'].
 872          dc_trackback_uri.'?id='.$GLOBALS['news']->f('post_id');
 873          
 874          echo '<!--'."\n".
 875          '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n".
 876          '  xmlns:dc="http://purl.org/dc/elements/1.1/"'."\n".
 877          '  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">'."\n".
 878          '<rdf:Description'."\n".
 879          '  rdf:about="http://'.$_SERVER['HTTP_HOST'].$GLOBALS['news']->getPermURL().'"'."\n".
 880          '  dc:identifier="http://'.$_SERVER['HTTP_HOST'].$GLOBALS['news']->getPermURL().'"'."\n".
 881          '  dc:title="'.$GLOBALS['news']->f('post_titre').'"'."\n".
 882          '  trackback:ping="'.$tb_url.'" />'."\n".
 883          '</rdf:RDF>'."\n".
 884          '-->'."\n";
 885      }
 886  }
 887  
 888  # Commentaires ############################################
 889  /**
 890  @doc
 891  
 892  === Traitement des commentaires ===
 893  
 894  Le traitement des commentaires est régis par la même système de boucle
 895  que les billets. Les fonctions suivantes ne s'utilisent que dans une
 896  boucle de commentaires sauf '''dcCommentFormError''' et '''dcCommentFormValue'''
 897  qui peuvent être utilisés partout.
 898  
 899  Exemple d'une boucle de commentaires affichant son contenu
 900  
 901  {{{
 902  #!php
 903  <?php while ($comments->fetch()) : ?>
 904   <?php dcCommentContent(); ?>
 905  <?php endwhile; ?>
 906  }}}
 907  */
 908  
 909  /**
 910  @function dcCommentContent
 911  
 912  Cette fonction affiche le contenu d'un commentaire.
 913  */
 914  function dcCommentContent()
 915  {
 916      echo $GLOBALS['comments']->xGetContent();
 917  }
 918  
 919  /**
 920  @function dcCommentContentTransform
 921  
 922  Cette fonction affiche un commentaire de type trackback avec le lien vers
 923  l'article dans le corps du commentaire (autour du titre). Sinon, il affiche
 924  que le commentaire comme dcCommentContent().
 925  */
 926  function dcCommentContentTransform()
 927  {
 928      dcCommentContent();
 929  }
 930  
 931  /**
 932  @function dcCommentDate
 933  
 934  Cette fonction affiche la date d'un commentaire. On peut changer le formatage
 935  de la date en changeant le paramètre '''format'''. Par défaut, ce paramètre
 936  utilisera le format donné dans la configuration du blog.
 937  
 938  Voir [http://fr2.php.net/manual/fr/function.strftime.php strftime] pour les
 939  formats possibles de date.
 940  
 941  @param string format Masque de formatage de la date ('')
 942  */
 943  function dcCommentDate($format='')
 944  {
 945       if ($format) {
 946          echo dt::str($format,strtotime($GLOBALS['comments']->f('comment_dt')));
 947      } else {
 948          echo $GLOBALS['comments']->getLDate();
 949      }
 950  }
 951  
 952  /**
 953  @function dcCommentTime
 954  
 955  Cette fonction affiche l'heure d'un commentaire en utilisant le format donné
 956  dans la configuration du blog.
 957  */
 958  function dcCommentTime()
 959  {
 960      echo $GLOBALS['comments']->getLTime();
 961  }
 962  
 963  /**
 964  @function dcCommentAuthor
 965  
 966  Cette fonction affiche le pseudo de l'auteur d'un commentaire. Avec un lien si
 967  l'auteur a laissé une URL
 968  
 969  @param string s Chaîne de substitution, uniquement si l'auteur a laissé une URL
 970  */
 971  function dcCommentAuthor($s='<a href="%1$s">%2$s</a>')
 972  {
 973      if (($link = $GLOBALS['comments']->auteurSite()) !== false) {
 974          printf($s,$link,$GLOBALS['comments']->f('comment_auteur'));
 975      } else {
 976          echo $GLOBALS['comments']->f('comment_auteur');
 977      }
 978  }
 979  
 980  /**
 981  @function dcCommentID
 982  
 983  Cette fonction affiche l'ID d'un commentaire
 984  */
 985  function dcCommentID()
 986  {
 987      echo $GLOBALS['comments']->f('comment_id');
 988  }
 989  
 990  /**
 991  @function dcCommentAuthorLink
 992  
 993  Cette fonction affiche le nom de l'auteur avec un lien
 994  vers son adresse email s'il en a laissé une.
 995  
 996  @param string s Chaîne de substitution
 997  */
 998  function dcCommentAuthorLink($s='%s')
 999  {
1000      if (($link = $GLOBALS['comments']->auteurLink()) !== false) {
1001          printf($s,$link);
1002      }
1003  }
1004  
1005  /**
1006  @function dcCommentAuthorSite
1007  
1008  Cette fonction affiche un lien vers le site de l'auteur d'un commentaire
1009  s'il en a laissé un.
1010  
1011  @param string s Chaîne de substitution
1012  */
1013  function dcCommentAuthorSite($s='%s')
1014  {
1015      if (($link = $GLOBALS['comments']->auteurSite()) !== false) {
1016          printf($s,$link);
1017      }
1018  }
1019  
1020  /**
1021  @function dcCommentPreview
1022  
1023  Cette fonction affiche la prévisualisation d'un commentaire. Elle affiche les
1024  émoticones et le formatage tel qu'il sera affiché.
1025  */
1026  function dcCommentPreview()
1027  {
1028      if (!empty($GLOBALS['in_content'])) {
1029          if (dc_use_smilies) {
1030              echo $GLOBALS['blog']->addSmilies($GLOBALS['in_content']);
1031          } else {
1032              echo $GLOBALS['in_content'];
1033          }
1034      }
1035  }
1036  
1037  /**
1038  @function dcCommentFormError
1039  
1040  Cette fonction affiche les erreurs qui ont pu se produire lors de la soumission
1041  d'un commentaire. Il est conseillé de la laisser.
1042  
1043  @param string s Chaîne de substitution
1044  */
1045  function dcCommentFormError($s='%s')
1046  {
1047      if (!empty($GLOBALS['form_err'])) {
1048          printf($s,$GLOBALS['form_err']);
1049      }
1050  }
1051  
1052  /**
1053  @function dcCommentFormMsg
1054  
1055  Cette fonction affiche un message après la soumission d'un commentaire. Le seul
1056  message actuellement est la confirmation de la réception du commentaire quand
1057  ceux-ci sont modérés. Si vous ne modérez pas les commentaires, cette fonction
1058  peut ne pas être utilisée.
1059  
1060  @param string s Chaîne de substitution
1061  */
1062  function dcCommentFormMsg($s='%s')
1063  {
1064      if (!empty($GLOBALS['form_msg'])) {
1065          printf($s,$GLOBALS['form_msg']);
1066      }
1067  }
1068  
1069  /**
1070  @function dcCommentFormValue
1071  
1072  Cette fonction affiche la valeur d'une variable pour le formulaire de
1073  commentaire. Elle permet par exemple de rappeler les valeurs en cas d'erreur.
1074  Les valeurs possibles de '''var''' sont :
1075  
1076   * c_nom : nom
1077   * c_mail : adresse email
1078   * c_site : site web
1079   * c_content : contenu du commentaire
1080  
1081  On pourra utiliser par exemple:
1082  
1083  {{{
1084  #!php
1085  <input name="c_nom" id="c_nom" type="text" size="30" maxlength="255"
1086  value="<?php dcCommentFormValue('c_nom'); ?>" />
1087  }}}
1088  
1089  @param string var Nom de la variable à afficher
1090  */
1091  function dcCommentFormValue($var)
1092  {
1093      echo htmlspecialchars($GLOBALS[$var]);
1094  }
1095  
1096  /**
1097  @function dcCommentFormRedir
1098  
1099  Cette fonction donne l'url vers laquelle on redirige le client une fois
1100  le commentaire posté.
1101  */
1102  function dcCommentFormRedir()
1103  {
1104      echo util::getPageURL();
1105  }
1106  
1107  /**
1108  @function dcCommentIsTrackBack
1109  
1110  Cette fonction indique si un commentaire est un trackback.
1111  
1112  @return boolean 
1113  */
1114  function dcCommentIsTrackBack()
1115  {
1116      return (boolean) $GLOBALS['comments']->f('comment_trackback');
1117  }
1118  
1119  /**
1120  @function dcCommentTrackBackURL
1121  
1122  Cette fonction retourne l'URL du trackback. Il s'agit en fait de l'URL
1123  du site dans le commentaire. Elle fait simplement un test supplémentaire
1124  pour vérifier que le commentaire est bien un trackback.
1125  */
1126  function dcCommentTrackBackURL($s='%s')
1127  {
1128      if ($GLOBALS['comments']->f('comment_trackback') == 1)
1129      {
1130          printf($s,$GLOBALS['comments']->f('comment_site'));
1131      }
1132  }
1133  
1134  # Trackbacks ##############################################
1135  /**
1136  @doc
1137  
1138  === Traitement des trackbacks ===
1139  
1140  Le traitement des trackbacks suit le même fonctionnement que les
1141  commentaires. Les fonctions suivantes ne s'utilisent que dans une
1142  boucle de trackbacks.
1143  
1144  Exemple d'une boucle de trackbacks affichant son contenu
1145  
1146  {{{
1147  #!php
1148  <?php while ($trackbacks->fetch()) : ?>
1149   <?php dcTBContent(); ?>
1150  <?php endwhile; ?>
1151  }}}
1152  */
1153  
1154  /**
1155  @function dcTBContent
1156  
1157  Cette fonction affiche un trackback avec le lien vers
1158  l'article dans le corps du commentaire (autour du titre).
1159  */
1160  function dcTBContent()
1161  {
1162      $content = $GLOBALS['trackbacks']->xGetContent();
1163      $link = '<a href="'.$GLOBALS['trackbacks']->auteurSite().'" rel="nofollow">$2</a>';
1164      
1165      echo preg_replace('|(<p><strong>)(.*)(</strong></p>)|msU','$1'.$link.'$3',$content);
1166  }
1167  
1168  /**
1169  @function dcTBDate
1170  
1171  Cette fonction affiche la date d'un trackback. On peut changer le formatage
1172  de la date en changeant le paramètre '''format'''. Par défaut, ce paramètre
1173  utilisera le format donné dans la configuration du blog.
1174  
1175  Voir [http://fr2.php.net/manual/fr/function.strftime.php strftime] pour les
1176  formats possibles de date.
1177  
1178  @param string format Masque de formatage de la date ('')
1179  */
1180  function dcTBDate($format='')
1181  {
1182       if ($format) {
1183          echo dt::str($format,strtotime($GLOBALS['trackbacks']->f('comment_dt')));
1184      } else {
1185          echo $GLOBALS['trackbacks']->getLDate();
1186      }
1187  }
1188  
1189  /**
1190  @function dcTBTime
1191  
1192  Cette fonction affiche l'heure d'un trackback en utilisant le format donné
1193  dans la configuration du blog.
1194  */
1195  function dcTBTime()
1196  {
1197      echo $GLOBALS['trackbacks']->getLTime();
1198  }
1199  
1200  /**
1201  @function dcTBAuthor
1202  
1203  Cette fonction affiche le nom de l'auteur d'un trackback.
1204  */
1205  function dcTBAuthor()
1206  {
1207      echo $GLOBALS['trackbacks']->f('comment_auteur');
1208  }
1209  
1210  /**
1211  @function dcTBID
1212  
1213  Cette fonction affiche l'ID d'un trackback
1214  */
1215  function dcTBID()
1216  {
1217      echo $GLOBALS['trackbacks']->f('comment_id');
1218  }
1219  ?>


Généré le : Fri Feb 23 21:40:15 2007 par Balluche grâce à PHPXref 0.7