Artifact 78dfc10a01778d9faf4ca44a2d566c5dce86949d:


0000: 3c 3f 70 68 70 0a 0a 6e 61 6d 65 73 70 61 63 65  <?php..namespace
0010: 20 47 61 72 72 61 64 69 6e 3b 0a 0a 63 6c 61 73   Garradin;..clas
0020: 73 20 53 71 75 65 6c 65 74 74 65 5f 46 69 6c 74  s Squelette_Filt
0030: 72 65 73 0a 7b 0a 20 20 20 20 73 74 61 74 69 63  res.{.    static
0040: 20 70 72 69 76 61 74 65 20 24 67 32 78 20 3d 20   private $g2x = 
0050: 6e 75 6c 6c 3b 0a 20 20 20 20 73 74 61 74 69 63  null;.    static
0060: 20 70 72 69 76 61 74 65 20 24 61 6c 74 20 3d 20   private $alt = 
0070: 5b 5d 3b 0a 0a 20 20 20 20 73 74 61 74 69 63 20  [];..    static 
0080: 70 75 62 6c 69 63 20 24 66 69 6c 74 72 65 73 5f  public $filtres_
0090: 70 68 70 20 3d 20 5b 0a 20 20 20 20 20 20 20 20  php = [.        
00a0: 27 73 74 72 74 6f 6c 6f 77 65 72 27 2c 0a 20 20  'strtolower',.  
00b0: 20 20 20 20 20 20 27 73 74 72 74 6f 75 70 70 65        'strtouppe
00c0: 72 27 2c 0a 20 20 20 20 20 20 20 20 27 75 63 66  r',.        'ucf
00d0: 69 72 73 74 27 2c 0a 20 20 20 20 20 20 20 20 27  irst',.        '
00e0: 75 63 77 6f 72 64 73 27 2c 0a 20 20 20 20 20 20  ucwords',.      
00f0: 20 20 27 73 74 72 5f 72 6f 74 31 33 27 2c 0a 20    'str_rot13',. 
0100: 20 20 20 20 20 20 20 27 73 74 72 5f 73 68 75 66         'str_shuf
0110: 66 6c 65 27 2c 0a 20 20 20 20 20 20 20 20 27 68  fle',.        'h
0120: 74 6d 6c 65 6e 74 69 74 69 65 73 27 2c 0a 20 20  tmlentities',.  
0130: 20 20 20 20 20 20 27 68 74 6d 6c 73 70 65 63 69        'htmlspeci
0140: 61 6c 63 68 61 72 73 27 2c 0a 20 20 20 20 20 20  alchars',.      
0150: 20 20 27 74 72 69 6d 27 2c 0a 20 20 20 20 20 20    'trim',.      
0160: 20 20 27 6c 74 72 69 6d 27 2c 0a 20 20 20 20 20    'ltrim',.     
0170: 20 20 20 27 72 74 72 69 6d 27 2c 0a 20 20 20 20     'rtrim',.    
0180: 20 20 20 20 27 6c 63 66 69 72 73 74 27 2c 0a 20      'lcfirst',. 
0190: 20 20 20 20 20 20 20 27 6d 64 35 27 2c 0a 20 20         'md5',.  
01a0: 20 20 20 20 20 20 27 73 68 61 31 27 2c 0a 20 20        'sha1',.  
01b0: 20 20 20 20 20 20 27 6d 65 74 61 70 68 6f 6e 65        'metaphone
01c0: 27 2c 0a 20 20 20 20 20 20 20 20 27 6e 6c 32 62  ',.        'nl2b
01d0: 72 27 2c 0a 20 20 20 20 20 20 20 20 27 73 6f 75  r',.        'sou
01e0: 6e 64 65 78 27 2c 0a 20 20 20 20 20 20 20 20 27  ndex',.        '
01f0: 73 74 72 5f 73 70 6c 69 74 27 2c 0a 20 20 20 20  str_split',.    
0200: 20 20 20 20 27 73 74 72 5f 77 6f 72 64 5f 63 6f      'str_word_co
0210: 75 6e 74 27 2c 0a 20 20 20 20 20 20 20 20 27 73  unt',.        's
0220: 74 72 72 65 76 27 2c 0a 20 20 20 20 20 20 20 20  trrev',.        
0230: 27 73 74 72 6c 65 6e 27 2c 0a 20 20 20 20 20 20  'strlen',.      
0240: 20 20 27 77 6f 72 64 77 72 61 70 27 2c 0a 20 20    'wordwrap',.  
0250: 20 20 20 20 20 20 27 73 74 72 69 70 5f 74 61 67        'strip_tag
0260: 73 27 20 3d 3e 20 27 73 75 70 70 72 69 6d 65 72  s' => 'supprimer
0270: 5f 74 61 67 73 27 2c 0a 20 20 20 20 20 20 20 20  _tags',.        
0280: 27 76 61 72 5f 64 75 6d 70 27 2c 0a 20 20 20 20  'var_dump',.    
0290: 5d 3b 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70  ];..    static p
02a0: 75 62 6c 69 63 20 24 66 69 6c 74 72 65 73 5f 61  ublic $filtres_a
02b0: 6c 69 61 73 20 3d 20 5b 0a 20 20 20 20 20 20 20  lias = [.       
02c0: 20 27 21 3d 27 20 20 20 20 3d 3e 20 20 27 64 69   '!='    =>  'di
02d0: 66 66 65 72 65 6e 74 5f 64 65 27 2c 0a 20 20 20  fferent_de',.   
02e0: 20 20 20 20 20 27 3d 3d 27 20 20 20 20 3d 3e 20       '=='    => 
02f0: 20 27 65 67 61 6c 5f 61 27 2c 0a 20 20 20 20 20   'egal_a',.     
0300: 20 20 20 27 3f 27 20 20 20 20 20 3d 3e 20 20 27     '?'     =>  '
0310: 63 68 6f 69 78 73 69 76 69 64 65 27 2c 0a 20 20  choixsivide',.  
0320: 20 20 20 20 20 20 27 3e 27 20 20 20 20 20 3d 3e        '>'     =>
0330: 20 20 27 73 75 70 65 72 69 65 75 72 5f 61 27 2c    'superieur_a',
0340: 0a 20 20 20 20 20 20 20 20 27 3e 3d 27 20 20 20  .        '>='   
0350: 20 3d 3e 20 20 27 73 75 70 65 72 69 65 75 72 5f   =>  'superieur_
0360: 6f 75 5f 65 67 61 6c 5f 61 27 2c 0a 20 20 20 20  ou_egal_a',.    
0370: 20 20 20 20 27 3c 27 20 20 20 20 20 3d 3e 20 20      '<'     =>  
0380: 27 69 6e 66 65 72 69 65 75 72 5f 61 27 2c 0a 20  'inferieur_a',. 
0390: 20 20 20 20 20 20 20 27 3c 3d 27 20 20 20 20 3d         '<='    =
03a0: 3e 20 20 27 69 6e 66 65 72 69 65 75 72 5f 6f 75  >  'inferieur_ou
03b0: 5f 65 67 61 6c 5f 61 27 2c 0a 20 20 20 20 20 20  _egal_a',.      
03c0: 20 20 27 79 65 73 27 20 20 20 3d 3e 20 20 27 6f    'yes'   =>  'o
03d0: 75 69 27 2c 0a 20 20 20 20 20 20 20 20 27 6e 6f  ui',.        'no
03e0: 27 20 20 20 20 3d 3e 20 20 27 6e 6f 6e 27 2c 0a  '    =>  'non',.
03f0: 20 20 20 20 20 20 20 20 27 61 6e 64 27 20 20 20          'and'   
0400: 3d 3e 20 20 27 65 74 27 2c 0a 20 20 20 20 20 20  =>  'et',.      
0410: 20 20 27 6f 72 27 20 20 20 20 3d 3e 20 20 27 6f    'or'    =>  'o
0420: 75 27 2c 0a 20 20 20 20 20 20 20 20 27 78 6f 72  u',.        'xor
0430: 27 20 20 20 3d 3e 20 20 27 78 6f 75 27 2c 0a 20  '   =>  'xou',. 
0440: 20 20 20 5d 3b 0a 0a 20 20 20 20 73 74 61 74 69     ];..    stati
0450: 63 20 70 75 62 6c 69 63 20 24 64 65 73 61 63 74  c public $desact
0460: 69 76 65 72 5f 64 65 66 61 75 74 20 3d 20 5b 0a  iver_defaut = [.
0470: 20 20 20 20 20 20 20 20 27 66 6f 72 6d 61 74 74          'formatt
0480: 65 72 5f 74 65 78 74 65 27 2c 0a 20 20 20 20 20  er_texte',.     
0490: 20 20 20 27 65 6e 74 69 74 65 73 5f 68 74 6d 6c     'entites_html
04a0: 27 2c 0a 20 20 20 20 20 20 20 20 27 70 72 6f 74  ',.        'prot
04b0: 65 67 65 72 5f 63 6f 6e 74 61 63 74 27 2c 0a 20  eger_contact',. 
04c0: 20 20 20 20 20 20 20 27 65 63 68 61 70 70 65 72         'echapper
04d0: 5f 78 6d 6c 27 2c 0a 20 20 20 20 5d 3b 0a 0a 20  _xml',.    ];.. 
04e0: 20 20 20 73 74 61 74 69 63 20 70 75 62 6c 69 63     static public
04f0: 20 66 75 6e 63 74 69 6f 6e 20 64 61 74 65 5f 65   function date_e
0500: 6e 5f 66 72 61 6e 63 61 69 73 28 24 64 61 74 65  n_francais($date
0510: 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20  ).    {.        
0520: 72 65 74 75 72 6e 20 75 63 66 69 72 73 74 28 73  return ucfirst(s
0530: 74 72 74 6f 6c 6f 77 65 72 28 55 74 69 6c 73 3a  trtolower(Utils:
0540: 3a 73 74 72 66 74 69 6d 65 5f 66 72 28 27 25 41  :strftime_fr('%A
0550: 20 25 65 20 25 42 20 25 59 27 2c 20 24 64 61 74   %e %B %Y', $dat
0560: 65 29 29 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  e)));.    }..   
0570: 20 73 74 61 74 69 63 20 70 75 62 6c 69 63 20 66   static public f
0580: 75 6e 63 74 69 6f 6e 20 68 65 75 72 65 5f 65 6e  unction heure_en
0590: 5f 66 72 61 6e 63 61 69 73 28 24 64 61 74 65 29  _francais($date)
05a0: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 72  .    {.        r
05b0: 65 74 75 72 6e 20 55 74 69 6c 73 3a 3a 73 74 72  eturn Utils::str
05c0: 66 74 69 6d 65 5f 66 72 28 27 25 48 68 25 49 27  ftime_fr('%Hh%I'
05d0: 2c 20 24 64 61 74 65 29 3b 0a 20 20 20 20 7d 0a  , $date);.    }.
05e0: 0a 20 20 20 20 73 74 61 74 69 63 20 70 75 62 6c  .    static publ
05f0: 69 63 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 69 73  ic function mois
0600: 5f 65 6e 5f 66 72 61 6e 63 61 69 73 28 24 64 61  _en_francais($da
0610: 74 65 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  te).    {.      
0620: 20 20 72 65 74 75 72 6e 20 55 74 69 6c 73 3a 3a    return Utils::
0630: 73 74 72 66 74 69 6d 65 5f 66 72 28 27 25 42 20  strftime_fr('%B 
0640: 25 59 27 2c 20 24 64 61 74 65 29 3b 0a 20 20 20  %Y', $date);.   
0650: 20 7d 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70   }..    static p
0660: 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 64  ublic function d
0670: 61 74 65 5f 70 65 72 73 6f 28 24 64 61 74 65 2c  ate_perso($date,
0680: 20 24 66 6f 72 6d 61 74 29 0a 20 20 20 20 7b 0a   $format).    {.
0690: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
06a0: 74 69 6c 73 3a 3a 73 74 72 66 74 69 6d 65 5f 66  tils::strftime_f
06b0: 72 28 24 66 6f 72 6d 61 74 2c 20 24 64 61 74 65  r($format, $date
06c0: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 74  );.    }..    st
06d0: 61 74 69 63 20 70 75 62 6c 69 63 20 66 75 6e 63  atic public func
06e0: 74 69 6f 6e 20 64 61 74 65 5f 69 6e 74 65 6c 6c  tion date_intell
06f0: 69 67 65 6e 74 65 28 24 64 61 74 65 29 0a 20 20  igente($date).  
0700: 20 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28    {.        if (
0710: 64 61 74 65 28 27 59 6d 64 27 2c 20 24 64 61 74  date('Ymd', $dat
0720: 65 29 20 3d 3d 20 64 61 74 65 28 27 59 6d 64 27  e) == date('Ymd'
0730: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )).            r
0740: 65 74 75 72 6e 20 27 41 75 6a 6f 75 72 64 5c 27  eturn 'Aujourd\'
0750: 68 75 69 2c 20 27 2e 64 61 74 65 28 27 48 5c 68  hui, '.date('H\h
0760: 69 27 2c 20 24 64 61 74 65 29 3b 0a 20 20 20 20  i', $date);.    
0770: 20 20 20 20 65 6c 73 65 69 66 20 28 64 61 74 65      elseif (date
0780: 28 27 59 6d 64 27 2c 20 24 64 61 74 65 29 20 3d  ('Ymd', $date) =
0790: 3d 20 64 61 74 65 28 27 59 6d 64 27 2c 20 73 74  = date('Ymd', st
07a0: 72 74 6f 74 69 6d 65 28 27 79 65 73 74 65 72 64  rtotime('yesterd
07b0: 61 79 27 29 29 29 0a 20 20 20 20 20 20 20 20 20  ay'))).         
07c0: 20 20 20 72 65 74 75 72 6e 20 27 48 69 65 72 2c     return 'Hier,
07d0: 20 27 2e 64 61 74 65 28 27 48 5c 68 69 27 2c 20   '.date('H\hi', 
07e0: 24 64 61 74 65 29 3b 0a 20 20 20 20 20 20 20 20  $date);.        
07f0: 65 6c 73 65 69 66 20 28 64 61 74 65 28 27 59 27  elseif (date('Y'
0800: 2c 20 24 64 61 74 65 29 20 3d 3d 20 64 61 74 65  , $date) == date
0810: 28 27 59 27 29 29 0a 20 20 20 20 20 20 20 20 20  ('Y')).         
0820: 20 20 20 72 65 74 75 72 6e 20 73 74 72 74 6f 6c     return strtol
0830: 6f 77 65 72 28 55 74 69 6c 73 3a 3a 73 74 72 66  ower(Utils::strf
0840: 74 69 6d 65 5f 66 72 28 27 25 65 20 25 42 2c 20  time_fr('%e %B, 
0850: 25 48 68 25 4d 27 2c 20 24 64 61 74 65 29 29 3b  %Hh%M', $date));
0860: 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20  .        else.  
0870: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
0880: 20 73 74 72 74 6f 6c 6f 77 65 72 28 55 74 69 6c   strtolower(Util
0890: 73 3a 3a 73 74 72 66 74 69 6d 65 5f 66 72 28 27  s::strftime_fr('
08a0: 25 65 20 25 42 20 25 59 27 2c 20 24 64 61 74 65  %e %B %Y', $date
08b0: 29 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73  ));.    }..    s
08c0: 74 61 74 69 63 20 70 75 62 6c 69 63 20 66 75 6e  tatic public fun
08d0: 63 74 69 6f 6e 20 64 61 74 65 5f 61 74 6f 6d 28  ction date_atom(
08e0: 24 64 61 74 65 29 0a 20 20 20 20 7b 0a 20 20 20  $date).    {.   
08f0: 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65       return date
0900: 28 44 41 54 45 5f 41 54 4f 4d 2c 20 24 64 61 74  (DATE_ATOM, $dat
0910: 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73  e);.    }..    s
0920: 74 61 74 69 63 20 70 75 62 6c 69 63 20 66 75 6e  tatic public fun
0930: 63 74 69 6f 6e 20 61 6c 74 65 72 6e 65 72 28 24  ction alterner($
0940: 76 2c 20 24 6e 61 6d 65 2c 20 24 76 61 6c 65 75  v, $name, $valeu
0950: 72 31 2c 20 24 76 61 6c 65 75 72 32 29 0a 20 20  r1, $valeur2).  
0960: 20 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28    {.        if (
0970: 21 61 72 72 61 79 5f 6b 65 79 5f 65 78 69 73 74  !array_key_exist
0980: 73 28 24 6e 61 6d 65 2c 20 73 65 6c 66 3a 3a 24  s($name, self::$
0990: 61 6c 74 29 29 0a 20 20 20 20 20 20 20 20 7b 0a  alt)).        {.
09a0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66              self
09b0: 3a 3a 24 61 6c 74 5b 24 6e 61 6d 65 5d 20 3d 20  ::$alt[$name] = 
09c0: 30 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20  0;.        }..  
09d0: 20 20 20 20 20 20 69 66 20 28 73 65 6c 66 3a 3a        if (self::
09e0: 24 61 6c 74 5b 24 6e 61 6d 65 5d 2b 2b 20 25 20  $alt[$name]++ % 
09f0: 32 20 3d 3d 20 30 29 0a 20 20 20 20 20 20 20 20  2 == 0).        
0a00: 20 20 20 20 72 65 74 75 72 6e 20 24 76 61 6c 65      return $vale
0a10: 75 72 31 3b 0a 20 20 20 20 20 20 20 20 65 6c 73  ur1;.        els
0a20: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  e.            re
0a30: 74 75 72 6e 20 24 76 61 6c 65 75 72 32 3b 0a 20  turn $valeur2;. 
0a40: 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74 69 63     }..    static
0a50: 20 70 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e   public function
0a60: 20 70 72 6f 74 65 67 65 72 5f 63 6f 6e 74 61 63   proteger_contac
0a70: 74 28 24 63 6f 6e 74 61 63 74 29 0a 20 20 20 20  t($contact).    
0a80: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 74  {.        if (!t
0a90: 72 69 6d 28 24 63 6f 6e 74 61 63 74 29 29 0a 20  rim($contact)). 
0aa0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
0ab0: 6e 20 27 27 3b 0a 0a 20 20 20 20 20 20 20 20 69  n '';..        i
0ac0: 66 20 28 73 74 72 70 6f 73 28 24 63 6f 6e 74 61  f (strpos($conta
0ad0: 63 74 2c 20 27 40 27 29 29 0a 20 20 20 20 20 20  ct, '@')).      
0ae0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 3c 73        return '<s
0af0: 70 61 6e 20 73 74 79 6c 65 3d 22 75 6e 69 63 6f  pan style="unico
0b00: 64 65 2d 62 69 64 69 3a 62 69 64 69 2d 6f 76 65  de-bidi:bidi-ove
0b10: 72 72 69 64 65 3b 64 69 72 65 63 74 69 6f 6e 3a  rride;direction:
0b20: 20 72 74 6c 3b 22 3e 27 2e 68 74 6d 6c 73 70 65   rtl;">'.htmlspe
0b30: 63 69 61 6c 63 68 61 72 73 28 73 74 72 72 65 76  cialchars(strrev
0b40: 28 24 63 6f 6e 74 61 63 74 29 2c 20 45 4e 54 5f  ($contact), ENT_
0b50: 51 55 4f 54 45 53 2c 20 27 55 54 46 2d 38 27 29  QUOTES, 'UTF-8')
0b60: 2e 27 3c 2f 73 70 61 6e 3e 27 3b 0a 20 20 20 20  .'</span>';.    
0b70: 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20      else.       
0b80: 20 20 20 20 20 72 65 74 75 72 6e 20 27 3c 61 20       return '<a 
0b90: 68 72 65 66 3d 22 27 2e 68 74 6d 6c 73 70 65 63  href="'.htmlspec
0ba0: 69 61 6c 63 68 61 72 73 28 24 63 6f 6e 74 61 63  ialchars($contac
0bb0: 74 2c 20 45 4e 54 5f 51 55 4f 54 45 53 2c 20 27  t, ENT_QUOTES, '
0bc0: 55 54 46 2d 38 27 29 2e 27 22 3e 27 2e 68 74 6d  UTF-8').'">'.htm
0bd0: 6c 73 70 65 63 69 61 6c 63 68 61 72 73 28 24 63  lspecialchars($c
0be0: 6f 6e 74 61 63 74 2c 20 45 4e 54 5f 51 55 4f 54  ontact, ENT_QUOT
0bf0: 45 53 2c 20 27 55 54 46 2d 38 27 29 2e 27 3c 2f  ES, 'UTF-8').'</
0c00: 61 3e 27 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  a>';.    }..    
0c10: 73 74 61 74 69 63 20 70 75 62 6c 69 63 20 66 75  static public fu
0c20: 6e 63 74 69 6f 6e 20 65 6e 74 69 74 65 73 5f 68  nction entites_h
0c30: 74 6d 6c 28 24 74 65 78 74 65 29 0a 20 20 20 20  tml($texte).    
0c40: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  {.        return
0c50: 20 68 74 6d 6c 73 70 65 63 69 61 6c 63 68 61 72   htmlspecialchar
0c60: 73 28 24 74 65 78 74 65 2c 20 45 4e 54 5f 51 55  s($texte, ENT_QU
0c70: 4f 54 45 53 2c 20 27 55 54 46 2d 38 27 29 3b 0a  OTES, 'UTF-8');.
0c80: 20 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74 69      }..    stati
0c90: 63 20 70 75 62 6c 69 63 20 66 75 6e 63 74 69 6f  c public functio
0ca0: 6e 20 65 63 68 61 70 70 65 72 5f 78 6d 6c 28 24  n echapper_xml($
0cb0: 74 65 78 74 65 29 0a 20 20 20 20 7b 0a 20 20 20  texte).    {.   
0cc0: 20 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 5f       return str_
0cd0: 72 65 70 6c 61 63 65 28 27 26 23 30 33 39 3b 27  replace('&#039;'
0ce0: 2c 20 27 26 61 70 6f 73 3b 27 2c 20 68 74 6d 6c  , '&apos;', html
0cf0: 73 70 65 63 69 61 6c 63 68 61 72 73 28 24 74 65  specialchars($te
0d00: 78 74 65 2c 20 45 4e 54 5f 51 55 4f 54 45 53 2c  xte, ENT_QUOTES,
0d10: 20 27 55 54 46 2d 38 27 29 29 3b 0a 20 20 20 20   'UTF-8'));.    
0d20: 7d 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70 75  }..    static pu
0d30: 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 66 6f  blic function fo
0d40: 72 6d 61 74 74 65 72 5f 74 65 78 74 65 28 24 74  rmatter_texte($t
0d50: 65 78 74 65 29 0a 20 20 20 20 7b 0a 20 20 20 20  exte).    {.    
0d60: 20 20 20 20 24 74 65 78 74 65 20 3d 20 55 74 69      $texte = Uti
0d70: 6c 73 3a 3a 53 6b 72 69 76 54 6f 48 54 4d 4c 28  ls::SkrivToHTML(
0d80: 24 74 65 78 74 65 29 3b 0a 20 20 20 20 20 20 20  $texte);.       
0d90: 20 24 74 65 78 74 65 20 3d 20 73 65 6c 66 3a 3a   $texte = self::
0da0: 74 79 70 6f 5f 66 72 28 24 74 65 78 74 65 29 3b  typo_fr($texte);
0db0: 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
0dc0: 20 24 74 65 78 74 65 3b 0a 20 20 20 20 7d 0a 0a   $texte;.    }..
0dd0: 20 20 20 20 73 74 61 74 69 63 20 70 75 62 6c 69      static publi
0de0: 63 20 66 75 6e 63 74 69 6f 6e 20 74 79 70 6f 5f  c function typo_
0df0: 66 72 28 24 73 74 72 2c 20 24 68 74 6d 6c 20 3d  fr($str, $html =
0e00: 20 74 72 75 65 29 0a 20 20 20 20 7b 0a 20 20 20   true).    {.   
0e10: 20 20 20 20 20 24 73 70 61 63 65 20 3d 20 24 68       $space = $h
0e20: 74 6d 6c 20 3f 20 27 26 6e 62 73 70 3b 27 20 3a  tml ? '&nbsp;' :
0e30: 20 27 20 27 3b 0a 20 20 20 20 20 20 20 20 24 73   ' ';.        $s
0e40: 74 72 20 3d 20 70 72 65 67 5f 72 65 70 6c 61 63  tr = preg_replac
0e50: 65 28 27 2f 28 3f 3a 5b 5c 68 5d 7c 26 6e 62 73  e('/(?:[\h]|&nbs
0e60: 70 3b 29 2a 28 5b 3f 21 3a c2 bb 5d 29 28 5c 73  p;)*([?!:..])(\s
0e70: 2b 7c 24 29 2f 75 27 2c 20 24 73 70 61 63 65 2e  +|$)/u', $space.
0e80: 27 5c 5c 31 5c 5c 32 27 2c 20 24 73 74 72 29 3b  '\\1\\2', $str);
0e90: 0a 20 20 20 20 20 20 20 20 24 73 74 72 20 3d 20  .        $str = 
0ea0: 70 72 65 67 5f 72 65 70 6c 61 63 65 28 27 2f 28  preg_replace('/(
0eb0: 5e 7c 5c 73 2b 29 28 5b c2 ab 5d 29 28 3f 3a 5b  ^|\s+)([..])(?:[
0ec0: 5c 68 5d 7c 26 6e 62 73 70 3b 29 2a 2f 75 27 2c  \h]|&nbsp;)*/u',
0ed0: 20 27 5c 5c 31 5c 5c 32 27 2e 24 73 70 61 63 65   '\\1\\2'.$space
0ee0: 2c 20 24 73 74 72 29 3b 0a 20 20 20 20 20 20 20  , $str);.       
0ef0: 20 72 65 74 75 72 6e 20 24 73 74 72 3b 0a 20 20   return $str;.  
0f00: 20 20 7d 0a 0a 20 20 20 20 73 74 61 74 69 63 20    }..    static 
0f10: 70 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20  public function 
0f20: 70 61 67 69 6e 61 74 69 6f 6e 28 24 74 6f 74 61  pagination($tota
0f30: 6c 2c 20 24 64 65 62 75 74 2c 20 24 70 61 72 5f  l, $debut, $par_
0f40: 70 61 67 65 29 0a 20 20 20 20 7b 0a 20 20 20 20  page).    {.    
0f50: 20 20 20 20 24 6d 61 78 5f 70 61 67 65 20 3d 20      $max_page = 
0f60: 63 65 69 6c 28 24 74 6f 74 61 6c 20 2f 20 24 70  ceil($total / $p
0f70: 61 72 5f 70 61 67 65 29 3b 0a 20 20 20 20 20 20  ar_page);.      
0f80: 20 20 24 63 75 72 72 65 6e 74 20 3d 20 28 24 64    $current = ($d
0f90: 65 62 75 74 20 3e 20 30 29 20 3f 20 63 65 69 6c  ebut > 0) ? ceil
0fa0: 28 24 64 65 62 75 74 20 2f 20 24 70 61 72 5f 70  ($debut / $par_p
0fb0: 61 67 65 29 20 2b 20 31 20 3a 20 31 3b 0a 20 20  age) + 1 : 1;.  
0fc0: 20 20 20 20 20 20 24 6f 75 74 20 3d 20 27 27 3b        $out = '';
0fd0: 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 63  ..        if ($c
0fe0: 75 72 72 65 6e 74 20 3e 20 31 29 0a 20 20 20 20  urrent > 1).    
0ff0: 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20 20      {.          
1000: 20 20 24 6f 75 74 20 2e 3d 20 27 3c 61 20 68 72    $out .= '<a hr
1010: 65 66 3d 22 2e 2f 27 2e 28 24 63 75 72 72 65 6e  ef="./'.($curren
1020: 74 20 3e 20 32 20 3f 20 27 2b 27 20 2e 20 28 24  t > 2 ? '+' . ($
1030: 64 65 62 75 74 20 2d 20 24 70 61 72 5f 70 61 67  debut - $par_pag
1040: 65 29 20 3a 20 27 27 29 2e 27 22 3e 26 6c 61 71  e) : '').'">&laq
1050: 75 6f 3b 20 50 61 67 65 20 70 72 26 65 61 63 75  uo; Page pr&eacu
1060: 74 65 3b 63 26 65 61 63 75 74 65 3b 64 65 6e 74  te;c&eacute;dent
1070: 65 3c 2f 61 3e 20 2d 20 27 3b 0a 20 20 20 20 20  e</a> - ';.     
1080: 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 66 6f     }..        fo
1090: 72 20 28 24 69 20 3d 20 31 3b 20 24 69 20 3c 3d  r ($i = 1; $i <=
10a0: 20 24 6d 61 78 5f 70 61 67 65 3b 20 24 69 2b 2b   $max_page; $i++
10b0: 29 0a 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20  ).        {.    
10c0: 20 20 20 20 20 20 20 20 24 6c 69 6e 6b 20 3d 20          $link = 
10d0: 28 24 69 20 3d 3d 20 31 29 20 3f 20 27 2e 2f 27  ($i == 1) ? './'
10e0: 20 3a 20 27 2e 2f 2b 27 20 2e 20 28 28 24 69 20   : './+' . (($i 
10f0: 2d 20 31 29 20 2a 20 24 70 61 72 5f 70 61 67 65  - 1) * $par_page
1100: 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1110: 69 66 20 28 24 69 20 3d 3d 20 24 63 75 72 72 65  if ($i == $curre
1120: 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt).            
1130: 20 20 20 20 24 6f 75 74 20 2e 3d 20 27 3c 73 74      $out .= '<st
1140: 72 6f 6e 67 3e 27 2e 24 69 2e 27 3c 2f 73 74 72  rong>'.$i.'</str
1150: 6f 6e 67 3e 20 2d 20 27 3b 0a 20 20 20 20 20 20  ong> - ';.      
1160: 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20 20        else.     
1170: 20 20 20 20 20 20 20 20 20 20 20 24 6f 75 74 20             $out 
1180: 2e 3d 20 27 3c 61 20 68 72 65 66 3d 22 27 2e 24  .= '<a href="'.$
1190: 6c 69 6e 6b 2e 27 22 3e 27 2e 24 69 2e 27 3c 2f  link.'">'.$i.'</
11a0: 61 3e 20 2d 20 27 3b 0a 20 20 20 20 20 20 20 20  a> - ';.        
11b0: 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 24  }..        if ($
11c0: 63 75 72 72 65 6e 74 20 3c 20 24 6d 61 78 5f 70  current < $max_p
11d0: 61 67 65 29 0a 20 20 20 20 20 20 20 20 7b 0a 20  age).        {. 
11e0: 20 20 20 20 20 20 20 20 20 20 20 24 6f 75 74 20             $out 
11f0: 2e 3d 20 27 3c 61 20 68 72 65 66 3d 22 2e 2f 2b  .= '<a href="./+
1200: 27 2e 28 24 64 65 62 75 74 20 2b 20 24 70 61 72  '.($debut + $par
1210: 5f 70 61 67 65 29 2e 27 22 3e 50 61 67 65 20 73  _page).'">Page s
1220: 75 69 76 61 6e 74 65 20 26 72 61 71 75 6f 3b 3c  uivante &raquo;<
1230: 2f 61 3e 27 3b 0a 20 20 20 20 20 20 20 20 7d 0a  /a>';.        }.
1240: 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20          else.   
1250: 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 20       {.         
1260: 20 20 20 24 6f 75 74 20 3d 20 73 75 62 73 74 72     $out = substr
1270: 28 24 6f 75 74 2c 20 30 2c 20 2d 33 29 3b 0a 20  ($out, 0, -3);. 
1280: 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20         }..      
1290: 20 20 72 65 74 75 72 6e 20 24 6f 75 74 3b 0a 20    return $out;. 
12a0: 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 43 6f 6d     }..    // Com
12b0: 70 61 74 69 62 69 6c 69 74 c3 a9 20 53 50 49 50  patibilit.. SPIP
12c0: 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70 75 62  ..    static pub
12d0: 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 65 67 61  lic function ega
12e0: 6c 5f 61 28 24 76 61 6c 75 65 2c 20 24 74 65 73  l_a($value, $tes
12f0: 74 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20  t).    {.       
1300: 20 69 66 20 28 24 76 61 6c 75 65 20 3d 3d 20 24   if ($value == $
1310: 74 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20  test).          
1320: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20    return true;. 
1330: 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 20         else.    
1340: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1350: 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  alse;.    }..   
1360: 20 73 74 61 74 69 63 20 70 75 62 6c 69 63 20 66   static public f
1370: 75 6e 63 74 69 6f 6e 20 64 69 66 66 65 72 65 6e  unction differen
1380: 74 5f 64 65 28 24 76 61 6c 75 65 2c 20 24 74 65  t_de($value, $te
1390: 73 74 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  st).    {.      
13a0: 20 20 69 66 20 28 24 76 61 6c 75 65 20 21 3d 20    if ($value != 
13b0: 24 74 65 73 74 29 0a 20 20 20 20 20 20 20 20 20  $test).         
13c0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a     return true;.
13d0: 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20          else.   
13e0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13f0: 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20 20  false;.    }..  
1400: 20 20 2f 2f 20 64 69 73 70 6f 6e 69 62 6c 65 20    // disponible 
1410: 61 75 73 73 69 20 61 76 65 63 20 3a 20 7c 20 3f  aussi avec : | ?
1420: 7b 73 69 6f 75 69 2c 20 73 69 6e 6f 6e 7d 0a 20  {sioui, sinon}. 
1430: 20 20 20 73 74 61 74 69 63 20 70 75 62 6c 69 63     static public
1440: 20 66 75 6e 63 74 69 6f 6e 20 63 68 6f 69 78 73   function choixs
1450: 69 76 69 64 65 28 24 76 61 6c 75 65 2c 20 24 75  ivide($value, $u
1460: 6e 2c 20 24 64 65 75 78 20 3d 20 27 27 29 0a 20  n, $deux = ''). 
1470: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20     {.        if 
1480: 28 65 6d 70 74 79 28 24 76 61 6c 75 65 29 20 7c  (empty($value) |
1490: 7c 20 21 74 72 69 6d 28 24 76 61 6c 75 65 29 29  | !trim($value))
14a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
14b0: 75 72 6e 20 24 64 65 75 78 3b 0a 20 20 20 20 20  urn $deux;.     
14c0: 20 20 20 65 6c 73 65 0a 20 20 20 20 20 20 20 20     else.        
14d0: 20 20 20 20 72 65 74 75 72 6e 20 24 75 6e 3b 0a      return $un;.
14e0: 20 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74 69      }..    stati
14f0: 63 20 70 75 62 6c 69 63 20 66 75 6e 63 74 69 6f  c public functio
1500: 6e 20 73 69 6e 6f 6e 28 24 76 61 6c 75 65 2c 20  n sinon($value, 
1510: 24 73 69 6e 6f 6e 20 3d 20 27 27 29 0a 20 20 20  $sinon = '').   
1520: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 24   {.        if ($
1530: 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20  value).         
1540: 20 20 20 72 65 74 75 72 6e 20 24 76 61 6c 75 65     return $value
1550: 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20  ;.        else. 
1560: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1570: 6e 20 24 73 69 6e 6f 6e 3b 0a 20 20 20 20 7d 0a  n $sinon;.    }.
1580: 0a 20 20 20 20 73 74 61 74 69 63 20 70 75 62 6c  .    static publ
1590: 69 63 20 66 75 6e 63 74 69 6f 6e 20 63 68 6f 69  ic function choi
15a0: 78 73 69 65 67 61 6c 28 24 76 61 6c 75 65 2c 20  xsiegal($value, 
15b0: 24 74 65 73 74 2c 20 24 75 6e 2c 20 24 64 65 75  $test, $un, $deu
15c0: 78 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20  x).    {.       
15d0: 20 72 65 74 75 72 6e 20 28 24 76 61 6c 75 65 20   return ($value 
15e0: 3d 3d 20 24 74 65 73 74 29 20 3f 20 24 75 6e 20  == $test) ? $un 
15f0: 3a 20 24 64 65 75 78 3b 0a 20 20 20 20 7d 0a 0a  : $deux;.    }..
1600: 20 20 20 20 73 74 61 74 69 63 20 70 75 62 6c 69      static publi
1610: 63 20 66 75 6e 63 74 69 6f 6e 20 73 75 70 70 72  c function suppr
1620: 69 6d 65 72 5f 74 61 67 73 28 24 76 61 6c 75 65  imer_tags($value
1630: 2c 20 24 72 65 70 6c 61 63 65 20 3d 20 27 27 29  , $replace = '')
1640: 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 72  .    {.        r
1650: 65 74 75 72 6e 20 70 72 65 67 5f 72 65 70 6c 61  eturn preg_repla
1660: 63 65 28 27 21 3c 5b 5e 3e 5d 2a 3e 21 27 2c 20  ce('!<[^>]*>!', 
1670: 24 72 65 70 6c 61 63 65 2c 20 24 76 61 6c 75 65  $replace, $value
1680: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 74  );.    }..    st
1690: 61 74 69 63 20 70 75 62 6c 69 63 20 66 75 6e 63  atic public func
16a0: 74 69 6f 6e 20 73 75 70 70 72 69 6d 65 72 5f 73  tion supprimer_s
16b0: 70 69 70 28 24 76 61 6c 75 65 29 0a 20 20 20 20  pip($value).    
16c0: 7b 0a 20 20 20 20 20 20 20 20 24 76 61 6c 75 65  {.        $value
16d0: 20 3d 20 70 72 65 67 5f 72 65 70 6c 61 63 65 28   = preg_replace(
16e0: 27 21 5c 5b 28 5b 5e 5c 5d 5d 2b 29 28 3f 3a 2d  '!\[([^\]]+)(?:-
16f0: 3e 5b 5e 5c 5d 5d 2a 29 3f 5c 5d 21 55 27 2c 20  >[^\]]*)?\]!U', 
1700: 27 24 31 27 2c 20 24 76 61 6c 75 65 29 3b 0a 20  '$1', $value);. 
1710: 20 20 20 20 20 20 20 24 76 61 6c 75 65 20 3d 20         $value = 
1720: 70 72 65 67 5f 72 65 70 6c 61 63 65 28 27 21 5c  preg_replace('!\
1730: 7b 2b 28 5b 5e 5c 7d 5d 2a 29 5c 7d 2b 21 27 2c  {+([^\}]*)\}+!',
1740: 20 27 24 31 27 2c 20 24 76 61 6c 75 65 29 3b 0a   '$1', $value);.
1750: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24          return $
1760: 76 61 6c 75 65 3b 0a 20 20 20 20 7d 0a 0a 20 20  value;.    }..  
1770: 20 20 73 74 61 74 69 63 20 70 75 62 6c 69 63 20    static public 
1780: 66 75 6e 63 74 69 6f 6e 20 63 6f 75 70 65 72 28  function couper(
1790: 24 74 65 78 74 65 2c 20 24 74 61 69 6c 6c 65 2c  $texte, $taille,
17a0: 20 24 65 74 63 20 3d 20 27 20 28 2e 2e 2e 29 27   $etc = ' (...)'
17b0: 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20  ).    {.        
17c0: 69 66 20 28 73 74 72 6c 65 6e 28 24 74 65 78 74  if (strlen($text
17d0: 65 29 20 3e 20 24 74 61 69 6c 6c 65 29 0a 20 20  e) > $taille).  
17e0: 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20        {.        
17f0: 20 20 20 20 24 74 65 78 74 65 20 3d 20 73 75 62      $texte = sub
1800: 73 74 72 28 24 74 65 78 74 65 2c 20 30 2c 20 24  str($texte, 0, $
1810: 74 61 69 6c 6c 65 29 3b 0a 20 20 20 20 20 20 20  taille);.       
1820: 20 20 20 20 20 24 74 61 69 6c 6c 65 20 2d 3d 20       $taille -= 
1830: 28 24 74 61 69 6c 6c 65 20 2a 20 30 2e 31 29 3b  ($taille * 0.1);
1840: 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 74  ..            $t
1850: 65 78 74 65 20 3d 20 70 72 65 67 5f 72 65 70 6c  exte = preg_repl
1860: 61 63 65 28 27 21 28 5b 5c 73 2e 2c 3b 3a 5c 21  ace('!([\s.,;:\!
1870: 3f 5d 29 5b 5e 5c 73 2e 2c 3b 3a 5c 21 3f 5d 2a  ?])[^\s.,;:\!?]*
1880: 3f 24 21 27 2c 20 27 5c 5c 31 27 2c 20 24 74 65  ?$!', '\\1', $te
1890: 78 74 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20  xte);.          
18a0: 20 20 24 74 65 78 74 65 2e 3d 20 24 65 74 63 3b    $texte.= $etc;
18b0: 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20  .        }..    
18c0: 20 20 20 20 72 65 74 75 72 6e 20 24 74 65 78 74      return $text
18d0: 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 74  e;.    }..    st
18e0: 61 74 69 63 20 70 75 62 6c 69 63 20 66 75 6e 63  atic public func
18f0: 74 69 6f 6e 20 72 65 70 6c 61 63 65 28 24 74 65  tion replace($te
1900: 78 74 65 2c 20 24 65 78 70 72 65 73 73 69 6f 6e  xte, $expression
1910: 2c 20 24 72 65 70 6c 61 63 65 2c 20 24 6d 6f 64  , $replace, $mod
1920: 69 66 3d 27 55 73 69 6d 73 53 27 29 0a 20 20 20  if='UsimsS').   
1930: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   {.        retur
1940: 6e 20 70 72 65 67 5f 72 65 70 6c 61 63 65 28 27  n preg_replace('
1950: 2f 27 2e 24 65 78 70 72 65 73 73 69 6f 6e 2e 27  /'.$expression.'
1960: 2f 27 2e 24 6d 6f 64 69 66 2c 20 24 72 65 70 6c  /'.$modif, $repl
1970: 61 63 65 2c 20 24 74 65 78 74 65 29 3b 0a 20 20  ace, $texte);.  
1980: 20 20 7d 0a 0a 20 20 20 20 73 74 61 74 69 63 20    }..    static 
1990: 70 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20  public function 
19a0: 70 6c 75 73 28 24 61 2c 20 24 62 29 0a 20 20 20  plus($a, $b).   
19b0: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   {.        retur
19c0: 6e 20 24 61 20 2b 20 24 62 3b 0a 20 20 20 20 7d  n $a + $b;.    }
19d0: 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70 75 62  ..    static pub
19e0: 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 69  lic function moi
19f0: 6e 73 28 24 61 2c 20 24 62 29 0a 20 20 20 20 7b  ns($a, $b).    {
1a00: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
1a10: 24 61 20 2d 20 24 62 3b 0a 20 20 20 20 7d 0a 0a  $a - $b;.    }..
1a20: 20 20 20 20 73 74 61 74 69 63 20 70 75 62 6c 69      static publi
1a30: 63 20 66 75 6e 63 74 69 6f 6e 20 6d 75 6c 74 28  c function mult(
1a40: 24 61 2c 20 24 62 29 0a 20 20 20 20 7b 0a 20 20  $a, $b).    {.  
1a50: 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 61 20        return $a 
1a60: 2a 20 24 62 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  * $b;.    }..   
1a70: 20 73 74 61 74 69 63 20 70 75 62 6c 69 63 20 66   static public f
1a80: 75 6e 63 74 69 6f 6e 20 64 69 76 28 24 61 2c 20  unction div($a, 
1a90: 24 62 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  $b).    {.      
1aa0: 20 20 72 65 74 75 72 6e 20 24 62 20 3f 20 24 61    return $b ? $a
1ab0: 20 2f 20 24 62 20 3a 20 30 3b 0a 20 20 20 20 7d   / $b : 0;.    }
1ac0: 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70 75 62  ..    static pub
1ad0: 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 6d 6f 64  lic function mod
1ae0: 75 6c 6f 28 24 61 2c 20 24 6d 6f 64 2c 20 24 61  ulo($a, $mod, $a
1af0: 64 64 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  dd).    {.      
1b00: 20 20 72 65 74 75 72 6e 20 28 24 6d 6f 64 20 3f    return ($mod ?
1b10: 20 24 6e 62 20 25 20 24 6d 6f 64 20 3a 20 30 29   $nb % $mod : 0)
1b20: 20 2b 20 24 61 64 64 3b 0a 20 20 20 20 7d 0a 0a   + $add;.    }..
1b30: 20 20 20 20 73 74 61 74 69 63 20 70 75 62 6c 69      static publi
1b40: 63 20 66 75 6e 63 74 69 6f 6e 20 76 69 64 65 28  c function vide(
1b50: 24 76 61 6c 75 65 29 0a 20 20 20 20 7b 0a 20 20  $value).    {.  
1b60: 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 27 3b        return '';
1b70: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74  .    }..    stat
1b80: 69 63 20 70 75 62 6c 69 63 20 66 75 6e 63 74 69  ic public functi
1b90: 6f 6e 20 63 6f 6e 63 61 74 28 29 0a 20 20 20 20  on concat().    
1ba0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  {.        return
1bb0: 20 69 6d 70 6c 6f 64 65 28 27 27 2c 20 66 75 6e   implode('', fun
1bc0: 63 5f 67 65 74 5f 61 72 67 73 28 29 29 3b 0a 20  c_get_args());. 
1bd0: 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74 69 63     }..    static
1be0: 20 70 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e   public function
1bf0: 20 73 69 6e 67 75 6c 69 65 72 5f 6f 75 5f 70 6c   singulier_ou_pl
1c00: 75 72 69 65 6c 28 24 6e 62 2c 20 24 73 69 6e 67  uriel($nb, $sing
1c10: 75 6c 69 65 72 2c 20 24 70 6c 75 72 69 65 6c 2c  ulier, $pluriel,
1c20: 20 24 76 61 72 20 3d 20 6e 75 6c 6c 29 0a 20 20   $var = null).  
1c30: 20 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28    {.        if (
1c40: 21 24 6e 62 29 0a 20 20 20 20 20 20 20 20 20 20  !$nb).          
1c50: 20 20 72 65 74 75 72 6e 20 27 27 3b 0a 0a 20 20    return '';..  
1c60: 20 20 20 20 20 20 69 66 20 28 24 6e 62 20 3d 3d        if ($nb ==
1c70: 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20   1).            
1c80: 72 65 74 75 72 6e 20 73 74 72 5f 72 65 70 6c 61  return str_repla
1c90: 63 65 28 27 40 27 2e 24 76 61 72 2e 27 40 27 2c  ce('@'.$var.'@',
1ca0: 20 24 6e 62 2c 20 24 73 69 6e 67 75 6c 69 65 72   $nb, $singulier
1cb0: 29 3b 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a  );.        else.
1cc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1cd0: 72 6e 20 73 74 72 5f 72 65 70 6c 61 63 65 28 27  rn str_replace('
1ce0: 40 27 2e 24 76 61 72 2e 27 40 27 2c 20 24 6e 62  @'.$var.'@', $nb
1cf0: 2c 20 24 70 6c 75 72 69 65 6c 29 3b 0a 20 20 20  , $pluriel);.   
1d00: 20 7d 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70   }..    static p
1d10: 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 64  ublic function d
1d20: 61 74 65 5f 77 33 63 28 24 64 61 74 65 29 0a 20  ate_w3c($date). 
1d30: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74     {.        ret
1d40: 75 72 6e 20 64 61 74 65 28 44 41 54 45 5f 57 33  urn date(DATE_W3
1d50: 43 2c 20 24 64 61 74 65 29 3b 0a 20 20 20 20 7d  C, $date);.    }
1d60: 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70 75 62  ..    static pub
1d70: 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 65 74 28  lic function et(
1d80: 24 76 61 6c 75 65 2c 20 24 74 65 73 74 29 0a 20  $value, $test). 
1d90: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74     {.        ret
1da0: 75 72 6e 20 28 24 76 61 6c 75 65 20 26 26 20 24  urn ($value && $
1db0: 74 65 73 74 29 3b 0a 20 20 20 20 7d 0a 0a 20 20  test);.    }..  
1dc0: 20 20 73 74 61 74 69 63 20 70 75 62 6c 69 63 20    static public 
1dd0: 66 75 6e 63 74 69 6f 6e 20 6f 75 28 24 76 61 6c  function ou($val
1de0: 75 65 2c 20 24 74 65 73 74 29 0a 20 20 20 20 7b  ue, $test).    {
1df0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
1e00: 28 24 76 61 6c 75 65 20 7c 7c 20 24 74 65 73 74  ($value || $test
1e10: 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 74  );.    }..    st
1e20: 61 74 69 63 20 70 75 62 6c 69 63 20 66 75 6e 63  atic public func
1e30: 74 69 6f 6e 20 78 6f 75 28 24 76 61 6c 75 65 2c  tion xou($value,
1e40: 20 24 74 65 73 74 29 0a 20 20 20 20 7b 0a 20 20   $test).    {.  
1e50: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 24 76        return ($v
1e60: 61 6c 75 65 20 58 4f 52 20 24 74 65 73 74 29 3b  alue XOR $test);
1e70: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74  .    }..    stat
1e80: 69 63 20 70 75 62 6c 69 63 20 66 75 6e 63 74 69  ic public functi
1e90: 6f 6e 20 6f 75 69 28 24 76 61 6c 75 65 29 0a 20  on oui($value). 
1ea0: 20 20 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74     {.        ret
1eb0: 75 72 6e 20 24 76 61 6c 75 65 20 3f 20 74 72 75  urn $value ? tru
1ec0: 65 20 3a 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d  e : false;.    }
1ed0: 0a 0a 20 20 20 20 73 74 61 74 69 63 20 70 75 62  ..    static pub
1ee0: 6c 69 63 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 6e  lic function non
1ef0: 28 24 76 61 6c 75 65 29 0a 20 20 20 20 7b 0a 20  ($value).    {. 
1f00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 24         return !$
1f10: 76 61 6c 75 65 20 3f 20 74 72 75 65 20 3a 20 66  value ? true : f
1f20: 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  alse;.    }..   
1f30: 20 73 74 61 74 69 63 20 70 75 62 6c 69 63 20 66   static public f
1f40: 75 6e 63 74 69 6f 6e 20 73 75 70 65 72 69 65 75  unction superieu
1f50: 72 5f 61 28 24 76 61 6c 75 65 2c 20 24 74 65 73  r_a($value, $tes
1f60: 74 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20  t).    {.       
1f70: 20 72 65 74 75 72 6e 20 28 24 76 61 6c 75 65 20   return ($value 
1f80: 3e 20 24 74 65 73 74 29 20 3f 20 74 72 75 65 20  > $test) ? true 
1f90: 3a 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a  : false;.    }..
1fa0: 20 20 20 20 73 74 61 74 69 63 20 70 75 62 6c 69      static publi
1fb0: 63 20 66 75 6e 63 74 69 6f 6e 20 73 75 70 65 72  c function super
1fc0: 69 65 75 72 5f 6f 75 5f 65 67 61 6c 5f 61 28 24  ieur_ou_egal_a($
1fd0: 76 61 6c 75 65 2c 20 24 74 65 73 74 29 0a 20 20  value, $test).  
1fe0: 20 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75    {.        retu
1ff0: 72 6e 20 28 24 76 61 6c 75 65 20 3e 3d 20 24 74  rn ($value >= $t
2000: 65 73 74 29 20 3f 20 74 72 75 65 20 3a 20 66 61  est) ? true : fa
2010: 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20  lse;.    }..    
2020: 73 74 61 74 69 63 20 70 75 62 6c 69 63 20 66 75  static public fu
2030: 6e 63 74 69 6f 6e 20 69 6e 66 65 72 69 65 75 72  nction inferieur
2040: 5f 61 28 24 76 61 6c 75 65 2c 20 24 74 65 73 74  _a($value, $test
2050: 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20  ).    {.        
2060: 72 65 74 75 72 6e 20 28 24 76 61 6c 75 65 20 3c  return ($value <
2070: 20 24 74 65 73 74 29 20 3f 20 74 72 75 65 20 3a   $test) ? true :
2080: 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 0a 20   false;.    }.. 
2090: 20 20 20 73 74 61 74 69 63 20 70 75 62 6c 69 63     static public
20a0: 20 66 75 6e 63 74 69 6f 6e 20 69 6e 66 65 72 69   function inferi
20b0: 65 75 72 5f 6f 75 5f 65 67 61 6c 5f 61 28 24 76  eur_ou_egal_a($v
20c0: 61 6c 75 65 2c 20 24 74 65 73 74 29 0a 20 20 20  alue, $test).   
20d0: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72   {.        retur
20e0: 6e 20 28 24 76 61 6c 75 65 20 3c 3d 20 24 74 65  n ($value <= $te
20f0: 73 74 29 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  st) ? true : fal
2100: 73 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73  se;.    }..    s
2110: 74 61 74 69 63 20 70 75 62 6c 69 63 20 66 75 6e  tatic public fun
2120: 63 74 69 6f 6e 20 65 75 72 6f 73 28 24 76 61 6c  ction euros($val
2130: 75 65 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20  ue).    {.      
2140: 20 20 72 65 74 75 72 6e 20 73 74 72 5f 72 65 70    return str_rep
2150: 6c 61 63 65 28 27 20 27 2c 20 27 26 6e 62 73 70  lace(' ', '&nbsp
2160: 3b 27 2c 20 6e 75 6d 62 65 72 5f 66 6f 72 6d 61  ;', number_forma
2170: 74 28 24 76 61 6c 75 65 2c 20 28 72 6f 75 6e 64  t($value, (round
2180: 28 24 76 61 6c 75 65 29 20 3d 3d 20 72 6f 75 6e  ($value) == roun
2190: 64 28 24 76 61 6c 75 65 2c 20 32 29 20 3f 20 30  d($value, 2) ? 0
21a0: 20 3a 20 32 29 2c 20 27 2c 27 2c 20 27 20 27 29   : 2), ',', ' ')
21b0: 29 20 2e 20 27 26 6e 62 73 70 3b e2 82 ac 27 3b  ) . '&nbsp;...';
21c0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 74 61 74  .    }..    stat
21d0: 69 63 20 70 75 62 6c 69 63 20 66 75 6e 63 74 69  ic public functi
21e0: 6f 6e 20 74 61 69 6c 6c 65 5f 65 6e 5f 6f 63 74  on taille_en_oct
21f0: 65 74 73 28 24 76 61 6c 75 65 29 0a 20 20 20 20  ets($value).    
2200: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  {.        return
2210: 20 55 74 69 6c 73 3a 3a 66 6f 72 6d 61 74 5f 62   Utils::format_b
2220: 79 74 65 73 28 24 76 61 6c 75 65 29 3b 0a 20 20  ytes($value);.  
2230: 20 20 7d 0a 7d 0a                                  }.}.