Collection of themes/skins for the Fossil SCM

⌈⌋ ⎇ branch:  Fossil Skins Extra


Hex Artifact Content

Artifact 07e5a4e5b12f4b35bfe55db714346266c898038d:

  • Executable file extroot/user_config — part of check-in [53aa554cb8] at 2021-04-04 14:39:32 on branch trunk — Move fields declaration atop. (user: mario size: 6486)

0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 70 68 70 2d 63  #!/usr/bin/php-c
0010: 67 69 20 2d 64 63 67 69 2e 66 6f 72 63 65 5f 72  gi -dcgi.force_r
0020: 65 64 69 72 65 63 74 3d 30 0a 3c 3f 70 68 70 0a  edirect=0.<?php.
0030: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 75 74 66 2d  # encoding: utf-
0040: 38 0a 23 20 61 70 69 3a 20 63 67 69 0a 23 20 74  8.# api: cgi.# t
0050: 79 70 65 3a 20 65 64 69 74 0a 23 20 74 69 74 6c  ype: edit.# titl
0060: 65 3a 20 55 73 65 72 20 65 64 69 74 69 6e 67 0a  e: User editing.
0070: 23 20 64 65 73 63 72 69 70 74 69 6f 6e 3a 20 50  # description: P
0080: 72 6f 76 69 64 65 73 20 61 6e 20 65 64 69 74 69  rovides an editi
0090: 6e 67 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  ng interface to 
00a0: 75 73 65 72 20 66 69 65 6c 64 73 20 28 69 6e 66  user fields (inf
00b0: 6f 29 0a 23 20 76 65 72 73 69 6f 6e 3a 20 30 2e  o).# version: 0.
00c0: 32 0a 23 20 73 74 61 74 65 3a 20 61 6c 70 68 61  2.# state: alpha
00d0: 0a 23 20 64 65 70 65 6e 64 73 3a 20 70 68 70 3a  .# depends: php:
00e0: 73 71 6c 69 74 65 0a 23 20 63 6f 6e 66 69 67 3a  sqlite.# config:
00f0: 20 2d 0a 23 0a 23 20 46 61 69 72 6c 79 20 73 69   -.#.# Fairly si
0100: 6d 70 6c 65 20 65 64 69 74 69 6e 67 20 55 49 20  mple editing UI 
0110: 66 6f 72 20 75 73 65 72 2e 69 6e 66 6f 20 74 61  for user.info ta
0120: 62 6c 65 2c 20 61 6e 64 20 70 6f 73 73 69 62 6c  ble, and possibl
0130: 79 20 73 6f 6d 65 0a 23 20 6e 65 77 20 66 69 65  y some.# new fie
0140: 6c 64 73 2e 20 54 68 69 73 20 69 73 20 62 61 73  lds. This is bas
0150: 69 63 61 6c 6c 79 20 61 6e 20 61 64 64 69 74 69  ically an additi
0160: 6f 6e 20 74 6f 20 74 68 65 20 49 6e 64 69 65 41  on to the IndieA
0170: 75 74 68 20 70 6c 75 67 69 6e 2c 0a 23 20 73 6f  uth plugin,.# so
0180: 20 75 73 65 72 73 20 63 61 6e 20 61 63 74 75 61   users can actua
0190: 6c 6c 79 20 75 70 64 61 74 65 20 74 68 65 69 72  lly update their
01a0: 20 63 6f 6e 74 61 63 74 20 69 6e 66 6f 72 6d 61   contact informa
01b0: 74 69 6f 6e 20 65 74 63 2e 0a 23 0a 23 20 4e 65  tion etc..#.# Ne
01c0: 77 20 66 69 65 6c 64 73 20 6d 75 73 74 20 62 65  w fields must be
01d0: 20 61 64 64 65 64 20 69 6e 20 24 66 69 65 6c 64   added in $field
01e0: 73 5b 5d 20 61 74 6f 70 2e 0a 23 0a 0a 69 66 20  s[] atop..#..if 
01f0: 28 24 5f 52 45 51 55 45 53 54 5b 22 64 62 67 22  ($_REQUEST["dbg"
0200: 5d 29 20 7b 0a 20 20 20 20 65 72 72 6f 72 5f 72  ]) {.    error_r
0210: 65 70 6f 72 74 69 6e 67 28 45 5f 41 4c 4c 29 3b  eporting(E_ALL);
0220: 20 69 6e 69 5f 73 65 74 28 22 64 69 73 70 6c 61   ini_set("displa
0230: 79 5f 65 72 72 6f 72 73 22 2c 20 31 29 3b 0a 7d  y_errors", 1);.}
0240: 0a 0a 23 2d 2d 20 61 6c 6c 6f 77 65 64 2f 6e 65  ..#-- allowed/ne
0250: 77 20 66 69 65 6c 64 73 0a 24 66 69 65 6c 64 73  w fields.$fields
0260: 20 3d 20 5b 0a 20 20 20 20 22 69 6e 66 6f 22 20   = [.    "info" 
0270: 3d 3e 20 5b 0a 20 20 20 20 20 20 20 20 22 74 69  => [.        "ti
0280: 74 6c 65 22 20 3d 3e 20 22 43 6f 6e 74 61 63 74  tle" => "Contact
0290: 20 69 6e 66 6f 22 2c 0a 20 20 20 20 20 20 20 20   info",.        
02a0: 22 64 65 73 63 22 20 3d 3e 20 22 54 68 69 73 20  "desc" => "This 
02b0: 69 73 20 75 73 75 61 6c 6c 79 20 6a 75 73 74 20  is usually just 
02c0: 61 6e 20 65 6d 61 69 6c 20 61 64 64 72 65 73 73  an email address
02d0: 2e 20 46 6f 72 20 75 73 69 6e 67 20 67 69 74 2d  . For using git-
02e0: 66 61 73 74 2d 65 78 70 6f 72 74 20 74 68 69 73  fast-export this
02f0: 20 6d 75 73 74 20 62 65 20 61 20 73 69 6e 67 6c   must be a singl
0300: 65 20 6c 69 6e 65 2e 22 2c 0a 20 20 20 20 5d 2c  e line.",.    ],
0310: 0a 20 20 20 20 22 68 6f 6d 65 70 61 67 65 22 20  .    "homepage" 
0320: 3d 3e 20 5b 0a 20 20 20 20 20 20 20 20 22 74 69  => [.        "ti
0330: 74 6c 65 22 20 3d 3e 20 22 48 6f 6d 65 70 61 67  tle" => "Homepag
0340: 65 20 55 52 4c 73 22 2c 0a 20 20 20 20 20 20 20  e URLs",.       
0350: 20 22 64 65 73 63 22 20 3d 3e 20 22 54 68 69 73   "desc" => "This
0360: 20 77 69 6c 6c 20 63 72 65 61 74 65 20 61 20 6e   will create a n
0370: 65 77 20 63 6f 6c 75 6d 6e 20 66 6f 72 20 6c 69  ew column for li
0380: 73 74 69 6e 67 20 75 73 65 72 20 75 72 6c 73 2e  sting user urls.
0390: 20 57 68 69 63 68 20 69 73 20 75 73 65 64 20 62   Which is used b
03a0: 79 20 74 68 65 20 49 6e 64 69 65 41 75 74 68 20  y the IndieAuth 
03b0: 70 6c 75 67 69 6e 20 74 6f 20 76 65 72 69 66 79  plugin to verify
03c0: 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 72   authorization r
03d0: 65 71 75 65 73 74 73 2e 22 2c 0a 20 20 20 20 5d  equests.",.    ]
03e0: 2c 0a 5d 3b 0a 0a 0a 23 2d 2d 20 64 61 74 61 62  ,.];...#-- datab
03f0: 61 73 65 20 28 3d 3d 20 66 6f 73 73 69 6c 20 72  ase (== fossil r
0400: 65 70 6f 29 0a 66 75 6e 63 74 69 6f 6e 20 64 62  epo).function db
0410: 28 24 73 71 6c 3d 22 22 2c 20 24 70 61 72 61 6d  ($sql="", $param
0420: 73 3d 5b 5d 29 20 7b 0a 20 20 20 20 73 74 61 74  s=[]) {.    stat
0430: 69 63 20 24 64 62 3b 0a 20 20 20 20 69 66 20 28  ic $db;.    if (
0440: 65 6d 70 74 79 28 24 64 62 29 29 20 7b 0a 20 20  empty($db)) {.  
0450: 20 20 20 20 20 20 24 64 62 20 3d 20 6e 65 77 20        $db = new 
0460: 50 44 4f 28 22 73 71 6c 69 74 65 3a 24 5f 53 45  PDO("sqlite:$_SE
0470: 52 56 45 52 5b 46 4f 53 53 49 4c 5f 52 45 50 4f  RVER[FOSSIL_REPO
0480: 53 49 54 4f 52 59 5d 22 29 3b 0a 20 20 20 20 7d  SITORY]");.    }
0490: 0a 20 20 20 20 69 66 20 28 24 70 61 72 61 6d 73  .    if ($params
04a0: 29 20 7b 0a 20 20 20 20 20 20 20 20 24 73 74 6d  ) {.        $stm
04b0: 74 20 3d 20 24 64 62 2d 3e 70 72 65 70 61 72 65  t = $db->prepare
04c0: 28 24 73 71 6c 29 3b 0a 20 20 20 20 20 20 20 20  ($sql);.        
04d0: 24 73 74 6d 74 2d 3e 65 78 65 63 75 74 65 28 24  $stmt->execute($
04e0: 70 61 72 61 6d 73 29 3b 0a 20 20 20 20 20 20 20  params);.       
04f0: 20 72 65 74 75 72 6e 20 24 73 74 6d 74 2d 3e 66   return $stmt->f
0500: 65 74 63 68 41 6c 6c 28 50 44 4f 3a 3a 46 45 54  etchAll(PDO::FET
0510: 43 48 5f 41 53 53 4f 43 29 3b 0a 20 20 20 20 7d  CH_ASSOC);.    }
0520: 0a 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20  .    else {.    
0530: 20 20 20 20 72 65 74 75 72 6e 20 24 64 62 2d 3e      return $db->
0540: 71 75 65 72 79 28 24 73 71 6c 29 3b 0a 20 20 20  query($sql);.   
0550: 20 7d 0a 7d 0a 0a 23 2d 2d 20 66 6f 73 73 69 6c   }.}..#-- fossil
0560: 20 48 54 4d 4c 20 6f 75 74 70 75 74 0a 66 75 6e   HTML output.fun
0570: 63 74 69 6f 6e 20 70 61 67 65 5f 68 74 6d 6c 28  ction page_html(
0580: 24 68 74 6d 6c 29 20 7b 0a 20 20 20 20 68 65 61  $html) {.    hea
0590: 64 65 72 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70  der("Content-Typ
05a0: 65 3a 20 74 65 78 74 2f 68 74 6d 6c 3b 20 65 6e  e: text/html; en
05b0: 63 6f 64 69 6e 67 3d 75 74 66 2d 38 22 29 3b 0a  coding=utf-8");.
05c0: 20 20 20 20 24 68 74 6d 6c 20 3d 20 3c 3c 3c 48      $html = <<<H
05d0: 54 4d 4c 0a 20 20 20 20 20 20 20 20 3c 64 69 76  TML.        <div
05e0: 20 63 6c 61 73 73 3d 27 66 6f 73 73 69 6c 2d 64   class='fossil-d
05f0: 6f 63 27 20 64 61 74 61 2d 74 69 74 6c 65 3d 27  oc' data-title='
0600: 55 73 65 72 20 63 6f 6e 66 69 67 27 3e 0a 20 20  User config'>.  
0610: 20 20 20 20 20 20 3c 73 76 67 20 73 74 79 6c 65        <svg style
0620: 3d 22 66 6c 6f 61 74 3a 6c 65 66 74 3b 20 6d 61  ="float:left; ma
0630: 72 67 69 6e 2d 72 69 67 68 74 3a 33 30 70 74 3b  rgin-right:30pt;
0640: 22 20 77 69 64 74 68 3d 22 31 35 30 22 20 68 65  " width="150" he
0650: 69 67 68 74 3d 22 39 33 37 22 20 76 65 72 73 69  ight="937" versi
0660: 6f 6e 3d 22 31 2e 31 22 20 76 69 65 77 42 6f 78  on="1.1" viewBox
0670: 3d 22 30 20 30 20 31 35 2e 36 33 35 20 39 33 2e  ="0 0 15.635 93.
0680: 37 33 35 22 20 78 6d 6c 6e 73 3d 22 68 74 74 70  735" xmlns="http
0690: 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 32 30  ://www.w3.org/20
06a0: 30 30 2f 73 76 67 22 20 78 6d 6c 6e 73 3a 78 6c  00/svg" xmlns:xl
06b0: 69 6e 6b 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e  ink="http://www.
06c0: 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 6c 69 6e  w3.org/1999/xlin
06d0: 6b 22 3e 0a 20 20 20 20 20 20 20 20 20 3c 64 65  k">.         <de
06e0: 66 73 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 6c  fs>.          <l
06f0: 69 6e 65 61 72 47 72 61 64 69 65 6e 74 20 69 64  inearGradient id
0700: 3d 22 6c 69 6e 65 61 72 47 72 61 64 69 65 6e 74  ="linearGradient
0710: 39 33 38 22 20 78 31 3d 22 34 38 2e 35 38 34 22  938" x1="48.584"
0720: 20 78 32 3d 22 36 34 2e 38 38 31 22 20 79 31 3d   x2="64.881" y1=
0730: 22 38 38 2e 35 30 39 22 20 79 32 3d 22 38 36 2e  "88.509" y2="86.
0740: 35 32 35 22 20 67 72 61 64 69 65 6e 74 55 6e 69  525" gradientUni
0750: 74 73 3d 22 75 73 65 72 53 70 61 63 65 4f 6e 55  ts="userSpaceOnU
0760: 73 65 22 3e 0a 20 20 20 20 20 20 20 20 20 20 20  se">.           
0770: 3c 73 74 6f 70 20 73 74 6f 70 2d 63 6f 6c 6f 72  <stop stop-color
0780: 3d 22 23 35 66 39 33 32 30 22 20 6f 66 66 73 65  ="#5f9320" offse
0790: 74 3d 22 30 22 2f 3e 0a 20 20 20 20 20 20 20 20  t="0"/>.        
07a0: 20 20 20 3c 73 74 6f 70 20 73 74 6f 70 2d 63 6f     <stop stop-co
07b0: 6c 6f 72 3d 22 23 62 62 62 37 30 30 22 20 6f 66  lor="#bbb700" of
07c0: 66 73 65 74 3d 22 31 22 2f 3e 0a 20 20 20 20 20  fset="1"/>.     
07d0: 20 20 20 20 20 3c 2f 6c 69 6e 65 61 72 47 72 61       </linearGra
07e0: 64 69 65 6e 74 3e 0a 20 20 20 20 20 20 20 20 20  dient>.         
07f0: 3c 2f 64 65 66 73 3e 0a 20 20 20 20 20 20 20 20  </defs>.        
0800: 20 3c 67 20 74 72 61 6e 73 66 6f 72 6d 3d 22 74   <g transform="t
0810: 72 61 6e 73 6c 61 74 65 28 2d 34 38 2e 35 38 34  ranslate(-48.584
0820: 20 2d 34 31 2e 36 34 32 29 22 3e 0a 20 20 20 20   -41.642)">.    
0830: 20 20 20 20 20 20 3c 70 61 74 68 20 64 3d 22 6d        <path d="m
0840: 35 32 2e 32 35 33 20 34 31 2e 36 34 32 63 2d 32  52.253 41.642c-2
0850: 2e 30 33 32 36 20 30 2d 33 2e 36 36 39 20 31 2e  .0326 0-3.669 1.
0860: 36 33 35 39 2d 33 2e 36 36 39 20 33 2e 36 36 38  6359-3.669 3.668
0870: 35 76 38 2e 36 35 38 39 68 32 2e 38 30 30 39 63  5v8.6589h2.8009c
0880: 31 2e 31 35 30 34 20 30 20 32 2e 30 37 36 39 20  1.1504 0 2.0769 
0890: 30 2e 39 32 36 34 35 20 32 2e 30 37 36 39 20 32  0.92645 2.0769 2
08a0: 2e 30 37 36 39 76 31 2e 38 39 31 34 61 33 2e 37  .0769v1.8914a3.7
08b0: 30 38 34 20 33 2e 36 37 35 20 30 20 30 20 31 20  084 3.675 0 0 1 
08c0: 33 2e 35 37 34 35 2d 32 2e 36 39 38 35 20 33 2e  3.5745-2.6985 3.
08d0: 37 30 38 34 20 33 2e 36 37 35 20 30 20 30 20 31  7084 3.675 0 0 1
08e0: 20 33 2e 37 30 38 33 20 33 2e 36 37 35 32 20 33   3.7083 3.6752 3
08f0: 2e 37 30 38 34 20 33 2e 36 37 35 20 30 20 30 20  .7084 3.675 0 0 
0900: 31 2d 33 2e 37 30 38 33 20 33 2e 36 37 34 37 20  1-3.7083 3.6747 
0910: 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30 20 30  3.7084 3.675 0 0
0920: 20 31 2d 33 2e 35 37 34 35 2d 32 2e 37 31 33 76   1-3.5745-2.713v
0930: 32 2e 32 34 30 32 63 30 20 31 2e 31 35 30 34 2d  2.2402c0 1.1504-
0940: 30 2e 39 32 36 34 35 20 32 2e 30 37 36 34 2d 32  0.92645 2.0764-2
0950: 2e 30 37 36 39 20 32 2e 30 37 36 34 68 2d 32 2e  .0769 2.0764h-2.
0960: 38 30 30 39 76 31 33 2e 32 33 68 32 2e 39 33 34  8009v13.23h2.934
0970: 37 63 31 2e 31 35 30 34 20 30 20 32 2e 30 37 36  7c1.1504 0 2.076
0980: 39 20 30 2e 39 32 36 34 35 20 32 2e 30 37 36 39  9 0.92645 2.0769
0990: 20 32 2e 30 37 36 39 76 31 2e 38 39 31 34 61 33   2.0769v1.8914a3
09a0: 2e 37 30 38 34 20 33 2e 36 37 35 20 30 20 30 20  .7084 3.675 0 0 
09b0: 31 20 33 2e 35 37 34 35 2d 32 2e 36 39 38 35 20  1 3.5745-2.6985 
09c0: 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30 20 30  3.7084 3.675 0 0
09d0: 20 31 20 33 2e 37 30 38 33 20 33 2e 36 37 35 32   1 3.7083 3.6752
09e0: 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30 20   3.7084 3.675 0 
09f0: 30 20 31 2d 33 2e 37 30 38 33 20 33 2e 36 37 34  0 1-3.7083 3.674
0a00: 37 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30  7 3.7084 3.675 0
0a10: 20 30 20 31 2d 33 2e 35 37 34 35 2d 32 2e 37 31   0 1-3.5745-2.71
0a20: 33 76 32 2e 32 34 30 32 63 30 20 31 2e 31 35 30  3v2.2402c0 1.150
0a30: 34 2d 30 2e 39 32 36 34 35 20 32 2e 30 37 36 34  4-0.92645 2.0764
0a40: 2d 32 2e 30 37 36 39 20 32 2e 30 37 36 34 68 2d  -2.0769 2.0764h-
0a50: 32 2e 39 33 34 37 76 31 31 2e 36 31 68 32 2e 39  2.9347v11.61h2.9
0a60: 30 31 31 63 31 2e 31 35 30 34 20 30 20 32 2e 30  011c1.1504 0 2.0
0a70: 37 36 39 20 30 2e 39 32 36 34 34 20 32 2e 30 37  769 0.92644 2.07
0a80: 36 39 20 32 2e 30 37 36 39 76 31 2e 38 39 31 34  69 2.0769v1.8914
0a90: 61 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30 20  a3.7084 3.675 0 
0aa0: 30 20 31 20 33 2e 35 37 34 35 2d 32 2e 36 39 38  0 1 3.5745-2.698
0ab0: 35 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30  5 3.7084 3.675 0
0ac0: 20 30 20 31 20 33 2e 37 30 38 33 20 33 2e 36 37   0 1 3.7083 3.67
0ad0: 35 32 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20  52 3.7084 3.675 
0ae0: 30 20 30 20 31 2d 33 2e 37 30 38 33 20 33 2e 36  0 0 1-3.7083 3.6
0af0: 37 34 37 20 33 2e 37 30 38 34 20 33 2e 36 37 35  747 3.7084 3.675
0b00: 20 30 20 30 20 31 2d 33 2e 35 37 34 35 2d 32 2e   0 0 1-3.5745-2.
0b10: 37 31 33 76 32 2e 32 34 30 32 63 30 20 31 2e 31  713v2.2402c0 1.1
0b20: 35 30 34 2d 30 2e 39 32 36 34 35 20 32 2e 30 37  504-0.92645 2.07
0b30: 36 34 2d 32 2e 30 37 36 39 20 32 2e 30 37 36 34  64-2.0769 2.0764
0b40: 68 2d 32 2e 39 30 31 31 76 31 33 2e 32 33 68 33  h-2.9011v13.23h3
0b50: 2e 30 33 35 63 31 2e 31 35 30 34 20 30 20 32 2e  .035c1.1504 0 2.
0b60: 30 37 36 39 20 30 2e 39 32 36 34 35 20 32 2e 30  0769 0.92645 2.0
0b70: 37 36 39 20 32 2e 30 37 36 39 76 31 2e 38 39 31  769 2.0769v1.891
0b80: 34 61 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30  4a3.7084 3.675 0
0b90: 20 30 20 31 20 33 2e 35 37 34 35 2d 32 2e 36 39   0 1 3.5745-2.69
0ba0: 38 35 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20  85 3.7084 3.675 
0bb0: 30 20 30 20 31 20 33 2e 37 30 38 33 20 33 2e 36  0 0 1 3.7083 3.6
0bc0: 37 35 32 20 33 2e 37 30 38 34 20 33 2e 36 37 35  752 3.7084 3.675
0bd0: 20 30 20 30 20 31 2d 33 2e 37 30 38 33 20 33 2e   0 0 1-3.7083 3.
0be0: 36 37 34 37 20 33 2e 37 30 38 34 20 33 2e 36 37  6747 3.7084 3.67
0bf0: 35 20 30 20 30 20 31 2d 33 2e 35 37 34 35 2d 32  5 0 0 1-3.5745-2
0c00: 2e 37 31 33 76 32 2e 32 34 30 32 63 30 20 31 2e  .713v2.2402c0 1.
0c10: 31 35 30 34 2d 30 2e 39 32 36 34 35 20 32 2e 30  1504-0.92645 2.0
0c20: 37 36 34 2d 32 2e 30 37 36 39 20 32 2e 30 37 36  764-2.0769 2.076
0c30: 34 68 2d 32 2e 38 32 33 36 63 30 2e 35 30 32 30  4h-2.8236c0.5020
0c40: 35 20 31 2e 34 32 36 38 20 31 2e 38 35 35 20 32  5 1.4268 1.855 2
0c50: 2e 34 34 35 38 20 33 2e 34 35 37 37 20 32 2e 34  .4458 3.4577 2.4
0c60: 34 35 38 68 38 2e 32 39 37 32 63 32 2e 30 33 32  458h8.2972c2.032
0c70: 36 20 30 20 33 2e 36 36 39 2d 31 2e 36 33 36 34  6 0 3.669-1.6364
0c80: 20 33 2e 36 36 39 2d 33 2e 36 36 39 76 2d 31 30   3.669-3.669v-10
0c90: 2e 32 36 39 68 2d 32 2e 39 30 31 31 63 2d 31 2e  .269h-2.9011c-1.
0ca0: 31 35 30 34 20 30 2d 32 2e 30 37 36 39 2d 30 2e  1504 0-2.0769-0.
0cb0: 39 32 35 39 34 2d 32 2e 30 37 36 39 2d 32 2e 30  92594-2.0769-2.0
0cc0: 37 36 34 76 2d 32 2e 32 34 30 32 61 33 2e 37 30  764v-2.2402a3.70
0cd0: 38 34 20 33 2e 36 37 35 20 30 20 30 20 31 2d 33  84 3.675 0 0 1-3
0ce0: 2e 35 37 34 35 20 32 2e 37 31 33 20 33 2e 37 30  .5745 2.713 3.70
0cf0: 38 34 20 33 2e 36 37 35 20 30 20 30 20 31 2d 33  84 3.675 0 0 1-3
0d00: 2e 37 30 38 33 2d 33 2e 36 37 34 37 20 33 2e 37  .7083-3.6747 3.7
0d10: 30 38 34 20 33 2e 36 37 35 20 30 20 30 20 31 20  084 3.675 0 0 1 
0d20: 33 2e 37 30 38 33 2d 33 2e 36 37 35 32 20 33 2e  3.7083-3.6752 3.
0d30: 37 30 38 34 20 33 2e 36 37 35 20 30 20 30 20 31  7084 3.675 0 0 1
0d40: 20 33 2e 35 37 34 35 20 32 2e 36 39 38 35 76 2d   3.5745 2.6985v-
0d50: 31 2e 38 39 31 34 63 30 2d 31 2e 31 35 30 34 20  1.8914c0-1.1504 
0d60: 30 2e 39 32 36 34 35 2d 32 2e 30 37 36 39 20 32  0.92645-2.0769 2
0d70: 2e 30 37 36 39 2d 32 2e 30 37 36 39 68 32 2e 39  .0769-2.0769h2.9
0d80: 30 31 31 76 2d 31 32 2e 33 32 38 68 2d 32 2e 39  011v-12.328h-2.9
0d90: 30 31 31 63 2d 31 2e 31 35 30 34 20 30 2d 32 2e  011c-1.1504 0-2.
0da0: 30 37 36 39 2d 30 2e 39 32 35 39 34 2d 32 2e 30  0769-0.92594-2.0
0db0: 37 36 39 2d 32 2e 30 37 36 34 76 2d 32 2e 32 34  769-2.0764v-2.24
0dc0: 30 32 61 33 2e 37 30 38 34 20 33 2e 36 37 35 20  02a3.7084 3.675 
0dd0: 30 20 30 20 31 2d 33 2e 35 37 34 35 20 32 2e 37  0 0 1-3.5745 2.7
0de0: 31 33 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20  13 3.7084 3.675 
0df0: 30 20 30 20 31 2d 33 2e 37 30 38 33 2d 33 2e 36  0 0 1-3.7083-3.6
0e00: 37 34 37 20 33 2e 37 30 38 34 20 33 2e 36 37 35  747 3.7084 3.675
0e10: 20 30 20 30 20 31 20 33 2e 37 30 38 33 2d 33 2e   0 0 1 3.7083-3.
0e20: 36 37 35 32 20 33 2e 37 30 38 34 20 33 2e 36 37  6752 3.7084 3.67
0e30: 35 20 30 20 30 20 31 20 33 2e 35 37 34 35 20 32  5 0 0 1 3.5745 2
0e40: 2e 36 39 38 35 76 2d 31 2e 38 39 31 34 63 30 2d  .6985v-1.8914c0-
0e50: 31 2e 31 35 30 34 20 30 2e 39 32 36 34 35 2d 32  1.1504 0.92645-2
0e60: 2e 30 37 36 39 20 32 2e 30 37 36 39 2d 32 2e 30  .0769 2.0769-2.0
0e70: 37 36 39 68 32 2e 39 30 31 31 76 2d 31 32 2e 35  769h2.9011v-12.5
0e80: 31 31 68 2d 33 2e 30 30 31 34 63 2d 31 2e 31 35  11h-3.0014c-1.15
0e90: 30 34 20 30 2d 32 2e 30 37 36 39 2d 30 2e 39 32  04 0-2.0769-0.92
0ea0: 35 39 34 2d 32 2e 30 37 36 39 2d 32 2e 30 37 36  594-2.0769-2.076
0eb0: 34 76 2d 32 2e 32 34 30 32 61 33 2e 37 30 38 34  4v-2.2402a3.7084
0ec0: 20 33 2e 36 37 35 20 30 20 30 20 31 2d 33 2e 35   3.675 0 0 1-3.5
0ed0: 37 34 35 20 32 2e 37 31 33 20 33 2e 37 30 38 34  745 2.713 3.7084
0ee0: 20 33 2e 36 37 35 20 30 20 30 20 31 2d 33 2e 37   3.675 0 0 1-3.7
0ef0: 30 38 33 2d 33 2e 36 37 34 37 20 33 2e 37 30 38  083-3.6747 3.708
0f00: 34 20 33 2e 36 37 35 20 30 20 30 20 31 20 33 2e  4 3.675 0 0 1 3.
0f10: 37 30 38 33 2d 33 2e 36 37 35 32 20 33 2e 37 30  7083-3.6752 3.70
0f20: 38 34 20 33 2e 36 37 35 20 30 20 30 20 31 20 33  84 3.675 0 0 1 3
0f30: 2e 35 37 34 35 20 32 2e 36 39 38 35 76 2d 31 2e  .5745 2.6985v-1.
0f40: 38 39 31 34 63 30 2d 31 2e 31 35 30 34 20 30 2e  8914c0-1.1504 0.
0f50: 39 32 36 34 35 2d 32 2e 30 37 36 39 20 32 2e 30  92645-2.0769 2.0
0f60: 37 36 39 2d 32 2e 30 37 36 39 68 33 2e 30 30 31  769-2.0769h3.001
0f70: 34 76 2d 31 32 2e 33 32 38 68 2d 33 2e 30 30 31  4v-12.328h-3.001
0f80: 34 63 2d 31 2e 31 35 30 34 20 30 2d 32 2e 30 37  4c-1.1504 0-2.07
0f90: 36 39 2d 30 2e 39 32 35 39 34 2d 32 2e 30 37 36  69-0.92594-2.076
0fa0: 39 2d 32 2e 30 37 36 34 76 2d 32 2e 32 34 30 32  9-2.0764v-2.2402
0fb0: 61 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30 20  a3.7084 3.675 0 
0fc0: 30 20 31 2d 33 2e 35 37 34 35 20 32 2e 37 31 33  0 1-3.5745 2.713
0fd0: 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30 20   3.7084 3.675 0 
0fe0: 30 20 31 2d 33 2e 37 30 38 33 2d 33 2e 36 37 34  0 1-3.7083-3.674
0ff0: 37 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20 30  7 3.7084 3.675 0
1000: 20 30 20 31 20 33 2e 37 30 38 33 2d 33 2e 36 37   0 1 3.7083-3.67
1010: 35 32 20 33 2e 37 30 38 34 20 33 2e 36 37 35 20  52 3.7084 3.675 
1020: 30 20 30 20 31 20 33 2e 35 37 34 35 20 32 2e 36  0 0 1 3.5745 2.6
1030: 39 38 35 76 2d 31 2e 38 39 31 34 63 30 2d 31 2e  985v-1.8914c0-1.
1040: 31 35 30 34 20 30 2e 39 32 36 34 35 2d 32 2e 30  1504 0.92645-2.0
1050: 37 36 39 20 32 2e 30 37 36 39 2d 32 2e 30 37 36  769 2.0769-2.076
1060: 39 68 32 2e 34 35 31 63 2d 30 2e 36 34 35 36 32  9h2.451c-0.64562
1070: 2d 31 2e 30 34 32 39 2d 31 2e 37 39 36 39 2d 31  -1.0429-1.7969-1
1080: 2e 37 33 36 38 2d 33 2e 31 31 38 37 2d 31 2e 37  .7368-3.1187-1.7
1090: 33 36 38 7a 22 20 66 69 6c 6c 3d 22 75 72 6c 28  368z" fill="url(
10a0: 23 6c 69 6e 65 61 72 47 72 61 64 69 65 6e 74 39  #linearGradient9
10b0: 33 38 29 22 20 73 74 72 6f 6b 65 2d 77 69 64 74  38)" stroke-widt
10c0: 68 3d 22 30 22 2f 3e 0a 20 20 20 20 20 20 20 20  h="0"/>.        
10d0: 20 3c 2f 67 3e 0a 20 20 20 20 20 20 20 20 3c 2f   </g>.        </
10e0: 73 76 67 3e 0a 20 20 20 20 20 20 20 20 5c 6e 24  svg>.        \n$
10f0: 68 74 6d 6c 5c 6e 0a 20 20 20 20 20 20 20 20 3c  html\n.        <
1100: 2f 64 69 76 3e 0a 48 54 4d 4c 3b 0a 20 20 20 20  /div>.HTML;.    
1110: 70 72 69 6e 74 28 24 68 74 6d 6c 29 3b 0a 7d 0a  print($html);.}.
1120: 66 75 6e 63 74 69 6f 6e 20 6d 69 73 73 69 6e 67  function missing
1130: 5f 70 61 72 61 6d 28 24 6e 61 6d 65 29 20 7b 0a  _param($name) {.
1140: 20 20 20 20 64 69 65 28 70 61 67 65 5f 68 74 6d      die(page_htm
1150: 6c 28 22 3c 68 32 3e 4d 69 73 73 69 6e 67 20 69  l("<h2>Missing i
1160: 6e 70 75 74 3c 2f 68 32 3e 3c 70 3e 55 52 4c 20  nput</h2><p>URL 
1170: 6c 61 63 6b 73 20 3c 63 6f 64 65 3e 26 24 6e 61  lacks <code>&$na
1180: 6d 65 3d 3c 2f 63 6f 64 65 3e 20 70 61 72 61 6d  me=</code> param
1190: 65 74 65 72 2e 22 29 29 3b 0a 7d 0a 66 75 6e 63  eter."));.}.func
11a0: 74 69 6f 6e 20 70 61 67 65 5f 6d 64 28 24 74 65  tion page_md($te
11b0: 78 74 29 20 7b 0a 20 20 20 20 68 65 61 64 65 72  xt) {.    header
11c0: 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20  ("Content-Type: 
11d0: 74 65 78 74 2f 78 2d 6d 61 72 6b 64 6f 77 6e 3b  text/x-markdown;
11e0: 20 65 6e 63 6f 64 69 6e 67 3d 75 74 66 2d 38 22   encoding=utf-8"
11f0: 29 3b 0a 20 20 20 20 70 72 69 6e 74 28 24 74 65  );.    print($te
1200: 78 74 29 3b 0a 7d 0a 66 75 6e 63 74 69 6f 6e 20  xt);.}.function 
1210: 68 28 24 73 29 20 7b 0a 20 20 20 20 72 65 74 75  h($s) {.    retu
1220: 72 6e 20 68 74 6d 6c 73 70 65 63 69 61 6c 63 68  rn htmlspecialch
1230: 61 72 73 28 24 73 2c 20 45 4e 54 5f 51 55 4f 54  ars($s, ENT_QUOT
1240: 45 53 7c 45 4e 54 5f 48 54 4d 4c 35 2c 20 22 55  ES|ENT_HTML5, "U
1250: 54 46 2d 38 22 29 3b 0a 7d 0a 0a 0a 23 2d 2d 20  TF-8");.}...#-- 
1260: 73 68 6f 77 20 61 76 61 69 6c 61 62 6c 65 20 66  show available f
1270: 69 65 6c 64 73 0a 66 75 6e 63 74 69 6f 6e 20 66  ields.function f
1280: 69 65 6c 64 5f 69 6e 70 75 74 73 28 24 75 73 65  ield_inputs($use
1290: 72 2c 20 24 6e 61 6d 65 73 3d 22 69 6e 66 6f 2c  r, $names="info,
12a0: 68 6f 6d 65 70 61 67 65 22 29 20 7b 0a 20 20 20  homepage") {.   
12b0: 20 67 6c 6f 62 61 6c 20 24 66 69 65 6c 64 73 3b   global $fields;
12c0: 0a 0a 20 20 20 20 2f 2f 20 67 65 74 20 65 78 69  ..    // get exi
12d0: 73 74 69 6e 67 20 63 6f 6c 75 6d 6e 73 0a 20 20  sting columns.  
12e0: 20 20 24 76 61 6c 75 65 73 20 3d 20 64 62 28 22    $values = db("
12f0: 53 45 4c 45 43 54 20 24 6e 61 6d 65 73 20 46 52  SELECT $names FR
1300: 4f 4d 20 75 73 65 72 20 57 48 45 52 45 20 6c 6f  OM user WHERE lo
1310: 67 69 6e 3d 3f 22 2c 20 5b 24 75 73 65 72 5d 29  gin=?", [$user])
1320: 5b 30 5d 3b 0a 20 20 20 20 0a 20 20 20 20 2f 2f  [0];.    .    //
1330: 20 6f 75 74 70 75 74 20 66 6f 72 6d 0a 20 20 20   output form.   
1340: 20 24 68 74 6d 6c 20 3d 20 22 22 3b 20 24 68 20   $html = ""; $h 
1350: 3d 20 22 68 22 3b 0a 20 20 20 20 66 6f 72 65 61  = "h";.    forea
1360: 63 68 20 28 24 66 69 65 6c 64 73 20 61 73 20 24  ch ($fields as $
1370: 6e 61 6d 65 3d 3e 24 70 72 6f 70 73 29 20 7b 0a  name=>$props) {.
1380: 20 20 20 20 20 20 20 20 65 78 74 72 61 63 74 28          extract(
1390: 24 70 72 6f 70 73 29 3b 0a 20 20 20 20 20 20 20  $props);.       
13a0: 20 24 68 74 6d 6c 20 2e 3d 20 3c 3c 3c 48 54 4d   $html .= <<<HTM
13b0: 4c 0a 20 20 20 20 20 20 20 20 20 20 3c 70 3e 0a  L.          <p>.
13c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 68 34               <h4
13d0: 3e 7b 24 68 28 24 74 69 74 6c 65 20 3f 3a 20 24  >{$h($title ?: $
13e0: 6e 61 6d 65 29 7d 3c 2f 68 34 3e 0a 20 20 20 20  name)}</h4>.    
13f0: 20 20 20 20 20 20 20 20 20 3c 74 65 78 74 61 72           <textar
1400: 65 61 20 6e 61 6d 65 3d 27 7b 24 68 28 24 6e 61  ea name='{$h($na
1410: 6d 65 29 7d 27 20 72 6f 77 73 3d 33 20 63 6f 6c  me)}' rows=3 col
1420: 73 3d 38 30 3e 7b 24 68 28 24 76 61 6c 75 65 73  s=80>{$h($values
1430: 5b 24 6e 61 6d 65 5d 29 7d 3c 2f 74 65 78 74 61  [$name])}</texta
1440: 72 65 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20  rea>.           
1450: 20 20 3c 62 72 3e 5c 6e 3c 73 6d 61 6c 6c 3e 7b    <br>\n<small>{
1460: 24 64 65 73 63 7d 3c 2f 73 6d 61 6c 6c 3e 0a 20  $desc}</small>. 
1470: 20 20 20 20 20 20 20 20 20 3c 2f 70 3e 5c 6e 0a           </p>\n.
1480: 48 54 4d 4c 3b 0a 20 20 20 20 7d 0a 20 20 20 20  HTML;.    }.    
1490: 72 65 74 75 72 6e 20 24 68 74 6d 6c 3b 0a 7d 0a  return $html;.}.
14a0: 0a 23 2d 2d 20 73 74 6f 72 65 20 74 68 65 6d 20  .#-- store them 
14b0: 62 61 63 6b 2e 0a 66 75 6e 63 74 69 6f 6e 20 73  back..function s
14c0: 61 76 65 5f 66 69 65 6c 64 73 28 24 75 73 65 72  ave_fields($user
14d0: 29 20 7b 0a 20 20 20 20 67 6c 6f 62 61 6c 20 24  ) {.    global $
14e0: 66 69 65 6c 64 73 3b 0a 20 20 20 20 24 61 6c 6c  fields;.    $all
14f0: 6f 77 65 64 20 3d 20 61 72 72 61 79 5f 6b 65 79  owed = array_key
1500: 73 28 24 66 69 65 6c 64 73 29 3b 0a 20 20 20 20  s($fields);.    
1510: 24 65 78 69 73 74 69 6e 67 5f 63 6f 6c 75 6d 6e  $existing_column
1520: 73 20 3d 20 61 72 72 61 79 5f 6b 65 79 73 28 0a  s = array_keys(.
1530: 20 20 20 20 20 20 20 20 64 62 28 22 53 45 4c 45          db("SELE
1540: 43 54 20 2a 20 46 52 4f 4d 20 75 73 65 72 20 57  CT * FROM user W
1550: 48 45 52 45 20 6c 6f 67 69 6e 3d 3f 22 2c 20 5b  HERE login=?", [
1560: 24 75 73 65 72 5d 29 5b 30 5d 0a 20 20 20 20 29  $user])[0].    )
1570: 3b 0a 20 20 20 20 0a 20 20 20 20 66 6f 72 65 61  ;.    .    forea
1580: 63 68 20 28 24 66 69 65 6c 64 73 20 61 73 20 24  ch ($fields as $
1590: 6e 61 6d 65 3d 3e 24 76 61 6c 75 65 29 20 7b 0a  name=>$value) {.
15a0: 20 20 20 20 20 20 20 20 69 66 20 28 21 69 6e 5f          if (!in_
15b0: 61 72 72 61 79 28 24 6e 61 6d 65 2c 20 24 61 6c  array($name, $al
15c0: 6c 6f 77 65 64 29 29 20 7b 0a 20 20 20 20 20 20  lowed)) {.      
15d0: 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a        continue;.
15e0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
15f0: 20 20 69 66 20 28 21 69 6e 5f 61 72 72 61 79 28    if (!in_array(
1600: 24 6e 61 6d 65 2c 20 24 65 78 69 73 74 69 6e 67  $name, $existing
1610: 5f 63 6f 6c 75 6d 6e 73 29 29 20 7b 0a 20 20 20  _columns)) {.   
1620: 20 20 20 20 20 20 20 20 20 64 62 28 22 0a 20 20           db(".  
1630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 4c                AL
1640: 54 45 52 20 54 41 42 4c 45 20 60 75 73 65 72 60  TER TABLE `user`
1650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1660: 20 41 44 44 20 60 24 6e 61 6d 65 60 20 54 45 58   ADD `$name` TEX
1670: 54 20 44 45 46 41 55 4c 54 20 27 27 0a 20 20 20  T DEFAULT ''.   
1680: 20 20 20 20 20 20 20 20 20 22 29 3b 0a 20 20 20           ");.   
1690: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 64       }.        d
16a0: 62 28 22 55 50 44 41 54 45 20 75 73 65 72 20 53  b("UPDATE user S
16b0: 45 54 20 60 24 6e 61 6d 65 60 3d 3f 20 57 48 45  ET `$name`=? WHE
16c0: 52 45 20 6c 6f 67 69 6e 3d 3f 22 2c 20 5b 24 76  RE login=?", [$v
16d0: 61 6c 75 65 2c 20 24 75 73 65 72 5d 29 3b 0a 20  alue, $user]);. 
16e0: 20 20 20 7d 0a 20 20 20 20 70 61 67 65 5f 68 74     }.    page_ht
16f0: 6d 6c 28 22 55 73 65 72 20 69 6e 66 6f 73 20 75  ml("User infos u
1700: 70 64 61 74 65 64 22 29 3b 0a 7d 0a 0a 23 2d 2d  pdated");.}..#--
1710: 20 72 75 6e 0a 24 68 20 3d 20 22 68 22 3b 0a 69   run.$h = "h";.i
1720: 66 20 28 65 6d 70 74 79 28 24 75 73 65 72 20 3d  f (empty($user =
1730: 20 24 5f 53 45 52 56 45 52 5b 22 46 4f 53 53 49   $_SERVER["FOSSI
1740: 4c 5f 55 53 45 52 22 5d 29 20 6f 72 20 69 6e 5f  L_USER"]) or in_
1750: 61 72 72 61 79 28 24 75 73 65 72 2c 20 5b 22 61  array($user, ["a
1760: 6e 6f 6e 79 6d 6f 75 73 22 2c 20 22 6e 6f 62 6f  nonymous", "nobo
1770: 64 79 22 2c 20 22 64 65 76 65 6c 6f 70 65 72 22  dy", "developer"
1780: 2c 20 22 72 65 61 64 65 72 22 5d 29 29 20 7b 0a  , "reader"])) {.
1790: 20 20 20 20 70 61 67 65 5f 68 74 6d 6c 28 22 3c      page_html("<
17a0: 68 32 3e 4e 6f 74 20 6c 6f 67 67 65 64 20 69 6e  h2>Not logged in
17b0: 3c 2f 68 32 3e 3c 70 3e 45 64 69 74 20 63 6f 6e  </h2><p>Edit con
17c0: 74 61 63 74 20 69 6e 66 6f 73 20 72 65 71 75 69  tact infos requi
17d0: 72 65 73 20 61 6e 20 61 63 74 69 76 65 20 3c 61  res an active <a
17e0: 20 68 72 65 66 3d 27 2e 2e 2f 6c 6f 67 69 6e 27   href='../login'
17f0: 3e 6c 6f 67 69 6e 3c 2f 61 3e 2e 22 29 3b 0a 7d  >login</a>.");.}
1800: 0a 65 6c 73 65 69 66 20 28 21 65 6d 70 74 79 28  .elseif (!empty(
1810: 24 5f 50 4f 53 54 5b 22 73 61 76 65 22 5d 29 29  $_POST["save"]))
1820: 20 7b 0a 20 20 20 20 75 6e 73 65 74 28 24 5f 50   {.    unset($_P
1830: 4f 53 54 5b 22 73 61 76 65 22 5d 29 3b 0a 20 20  OST["save"]);.  
1840: 20 20 73 61 76 65 5f 66 69 65 6c 64 73 28 24 75    save_fields($u
1850: 73 65 72 2c 20 24 5f 50 4f 53 54 29 3b 0a 7d 0a  ser, $_POST);.}.
1860: 65 6c 73 65 20 7b 0a 20 20 20 20 24 68 74 6d 6c  else {.    $html
1870: 20 3d 20 66 69 65 6c 64 5f 69 6e 70 75 74 73 28   = field_inputs(
1880: 24 75 73 65 72 29 3b 0a 20 20 20 20 24 68 74 6d  $user);.    $htm
1890: 6c 20 3d 20 3c 3c 3c 48 54 4d 4c 0a 20 20 20 20  l = <<<HTML.    
18a0: 20 3c 68 32 3e 45 64 69 74 20 75 73 65 72 20 64   <h2>Edit user d
18b0: 65 74 61 69 6c 73 3c 2f 68 32 3e 0a 20 20 20 20  etails</h2>.    
18c0: 20 3c 66 6f 72 6d 20 61 63 74 69 6f 6e 3d 22 22   <form action=""
18d0: 20 6d 65 74 68 6f 64 3d 50 4f 53 54 3e 0a 20 20   method=POST>.  
18e0: 20 20 20 20 20 20 7b 24 68 74 6d 6c 7d 0a 20 20        {$html}.  
18f0: 20 20 20 20 20 20 3c 70 3e 3c 69 6e 70 75 74 20        <p><input 
1900: 74 79 70 65 3d 73 75 62 6d 69 74 20 6e 61 6d 65  type=submit name
1910: 3d 73 61 76 65 20 76 61 6c 75 65 3d 41 70 70 6c  =save value=Appl
1920: 79 3e 3c 2f 70 3e 0a 20 20 20 20 20 3c 2f 66 6f  y></p>.     </fo
1930: 72 6d 3e 0a 48 54 4d 4c 3b 0a 20 20 20 20 70 61  rm>.HTML;.    pa
1940: 67 65 5f 68 74 6d 6c 28 24 68 74 6d 6c 29 3b 0a  ge_html($html);.
1950: 7d 0a 0a 0a 3f 3e                                }...?>