⌈⌋ branch:  freshcode


Hex Artifact Content

Artifact 31e8b59f09f370590c82b79d93ec4d6516e5bc37:

  • File page_rc.php — part of check-in [686e87487e] at 2015-03-24 18:23:10 on branch trunk — Updated stylesheet to use table-layout for #main/#sidebar split. Padding still needs work. (user: mario size: 2951)

0000: 3c 3f 70 68 70 0a 2f 2a 2a 0a 20 2a 20 74 79 70  <?php./**. * typ
0010: 65 3a 20 70 61 67 65 0a 20 2a 20 74 69 74 6c 65  e: page. * title
0020: 3a 20 52 65 63 65 6e 74 20 43 68 61 6e 67 65 73  : Recent Changes
0030: 0a 20 2a 20 64 65 73 63 72 69 70 74 69 6f 6e 3a  . * description:
0040: 20 50 72 6f 76 69 64 65 73 20 61 20 72 65 76 69   Provides a revi
0050: 73 69 6f 6e 20 64 69 66 66 0a 20 2a 20 76 65 72  sion diff. * ver
0060: 73 69 6f 6e 3a 20 30 2e 31 0a 20 2a 0a 20 2a 20  sion: 0.1. *. * 
0070: 53 68 6f 77 20 64 69 66 66 65 72 65 6e 63 65 73  Show differences
0080: 20 62 65 74 77 65 65 6e 20 69 6e 63 72 65 6d 65   between increme
0090: 6e 74 61 6c 20 72 65 76 69 73 69 6f 6e 73 2e 0a  ntal revisions..
00a0: 20 2a 20 28 54 6f 20 64 65 74 65 63 74 20 73 6e   * (To detect sn
00b0: 65 61 6b 20 73 70 61 6d 20 77 68 69 6c 65 20 77  eak spam while w
00c0: 65 27 72 65 20 6e 6f 74 20 72 65 71 75 69 72 69  e're not requiri
00d0: 6e 67 20 4f 70 65 6e 49 44 20 6c 6f 67 6f 6e 73  ng OpenID logons
00e0: 2e 29 0a 20 2a 0a 20 2a 2f 0a 0a 0a 2f 2f 20 70  .). *. */...// p
00f0: 61 67 65 20 68 65 61 64 65 72 0a 69 6e 63 6c 75  age header.inclu
0100: 64 65 28 22 74 65 6d 70 6c 61 74 65 2f 68 65 61  de("template/hea
0110: 64 65 72 2e 70 68 70 22 29 3b 0a 3f 3e 3c 73 65  der.php");.?><se
0120: 63 74 69 6f 6e 20 69 64 3d 6d 61 69 6e 20 63 6c  ction id=main cl
0130: 61 73 73 3d 63 6f 6e 74 61 69 6e 65 72 2d 77 69  ass=container-wi
0140: 64 74 68 3e 3c 3f 70 68 70 0a 0a 0a 2f 2a 2a 0a  dth><?php.../**.
0150: 20 2a 20 46 69 65 6c 64 73 20 74 6f 20 69 6e 73   * Fields to ins
0160: 70 65 63 74 2f 64 69 66 66 2e 0a 20 2a 20 55 73  pect/diff.. * Us
0170: 69 6e 67 20 64 69 66 66 65 72 65 6e 74 20 73 65  ing different se
0180: 74 73 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  ts depending on 
0190: 70 75 62 6c 69 63 6e 65 73 73 2e 0a 20 2a 0a 20  publicness.. *. 
01a0: 2a 2f 0a 69 66 20 28 54 52 55 45 29 20 7b 20 20  */.if (TRUE) {  
01b0: 2f 2f 20 50 75 62 6c 69 63 0a 20 20 20 20 24 66  // Public.    $f
01c0: 69 65 6c 64 73 20 3d 20 22 6e 61 6d 65 2c 74 5f  ields = "name,t_
01d0: 63 68 61 6e 67 65 64 2c 74 69 74 6c 65 2c 76 65  changed,title,ve
01e0: 72 73 69 6f 6e 2c 74 5f 70 75 62 6c 69 73 68 65  rsion,t_publishe
01f0: 64 2c 6c 69 63 65 6e 73 65 2c 74 61 67 73 2c 73  d,license,tags,s
0200: 74 61 74 65 2c 73 63 6f 70 65 2c 68 6f 6d 65 70  tate,scope,homep
0210: 61 67 65 2c 64 6f 77 6e 6c 6f 61 64 2c 75 72 6c  age,download,url
0220: 73 2c 64 65 73 63 72 69 70 74 69 6f 6e 2c 63 68  s,description,ch
0230: 61 6e 67 65 73 2c 73 75 62 6d 69 74 74 65 72 22  anges,submitter"
0240: 3b 0a 7d 0a 69 66 20 28 24 5f 53 45 53 53 49 4f  ;.}.if ($_SESSIO
0250: 4e 5b 22 6f 70 65 6e 69 64 22 5d 29 20 7b 20 20  N["openid"]) {  
0260: 2f 2f 20 46 6f 72 20 6c 6f 67 67 65 64 20 69 6e  // For logged in
0270: 20 75 73 65 72 73 0a 20 20 20 20 24 66 69 65 6c   users.    $fiel
0280: 64 73 20 2e 3d 20 22 2c 61 75 74 6f 75 70 64 61  ds .= ",autoupda
0290: 74 65 5f 6d 6f 64 75 6c 65 2c 61 75 74 6f 75 70  te_module,autoup
02a0: 64 61 74 65 5f 75 72 6c 2c 61 75 74 6f 75 70 64  date_url,autoupd
02b0: 61 74 65 5f 72 65 67 65 78 2c 76 69 61 22 3b 0a  ate_regex,via";.
02c0: 7d 0a 69 66 20 28 69 6e 5f 61 72 72 61 79 28 24  }.if (in_array($
02d0: 5f 53 45 53 53 49 4f 4e 5b 22 6f 70 65 6e 69 64  _SESSION["openid
02e0: 22 5d 2c 20 24 6d 6f 64 65 72 61 74 6f 72 5f 69  "], $moderator_i
02f0: 64 73 29 29 20 7b 20 20 20 2f 2f 20 52 65 76 65  ds)) {   // Reve
0300: 61 6c 20 63 6f 6e 74 72 6f 6c 2f 70 72 69 76 61  al control/priva
0310: 63 79 2d 72 65 6c 61 74 65 64 20 66 69 65 6c 64  cy-related field
0320: 73 20 6f 6e 6c 79 20 74 6f 20 6d 6f 64 65 72 61  s only to modera
0330: 74 6f 72 73 0a 20 20 20 20 24 66 69 65 6c 64 73  tors.    $fields
0340: 20 2e 3d 20 22 2c 73 75 62 6d 69 74 74 65 72 5f   .= ",submitter_
0350: 69 6d 61 67 65 2c 73 75 62 6d 69 74 74 65 72 5f  image,submitter_
0360: 6f 70 65 6e 69 64 2c 6c 6f 63 6b 2c 68 69 64 64  openid,lock,hidd
0370: 65 6e 2c 64 65 6c 65 74 65 64 2c 65 64 69 74 6f  en,deleted,edito
0380: 72 5f 6e 6f 74 65 2c 61 75 74 6f 75 70 64 61 74  r_note,autoupdat
0390: 65 5f 64 65 6c 61 79 22 3b 0a 7d 0a 0a 0a 2f 2a  e_delay";.}.../*
03a0: 2a 0a 20 2a 20 50 72 65 70 61 72 65 20 53 51 4c  *. * Prepare SQL
03b0: 20 66 69 65 6c 64 20 61 6c 69 61 73 65 73 0a 20   field aliases. 
03c0: 2a 20 28 62 65 63 61 75 73 65 20 73 71 6c 69 74  * (because sqlit
03d0: 65 2d 70 64 6f 20 64 72 69 76 65 72 20 64 6f 65  e-pdo driver doe
03e0: 73 6e 27 74 20 73 75 70 70 6f 72 74 20 69 74 29  sn't support it)
03f0: 0a 20 2a 0a 20 2a 20 20 20 64 65 73 63 72 69 70  . *. *   descrip
0400: 74 69 6f 6e 20 e2 86 92 20 20 63 72 6e 74 2e 64  tion ...  crnt.d
0410: 65 73 63 72 69 70 74 69 6f 6e 20 41 53 20 63 72  escription AS cr
0420: 6e 74 5f 64 65 73 63 72 69 70 74 69 6f 6e 0a 20  nt_description. 
0430: 2a 20 20 20 64 65 73 63 72 69 70 74 69 6f 6e 20  *   description 
0440: e2 86 92 20 20 70 72 65 76 2e 64 65 73 63 72 69  ...  prev.descri
0450: 70 74 69 6f 6e 20 41 53 20 70 72 65 76 5f 64 65  ption AS prev_de
0460: 73 63 72 69 70 74 69 6f 6e 0a 20 2a 0a 20 2a 2f  scription. *. */
0470: 0a 24 63 72 6e 74 5f 66 69 65 6c 64 73 5f 61 6c  .$crnt_fields_al
0480: 69 61 73 20 3d 20 70 72 65 67 5f 72 65 70 6c 61  ias = preg_repla
0490: 63 65 28 22 2f 5c 77 2b 2f 22 2c 20 22 63 72 6e  ce("/\w+/", "crn
04a0: 74 2e 24 30 20 41 53 20 63 72 6e 74 5f 24 30 22  t.$0 AS crnt_$0"
04b0: 2c 20 24 66 69 65 6c 64 73 29 3b 0a 24 70 72 65  , $fields);.$pre
04c0: 76 5f 66 69 65 6c 64 73 5f 61 6c 69 61 73 20 3d  v_fields_alias =
04d0: 20 70 72 65 67 5f 72 65 70 6c 61 63 65 28 22 2f   preg_replace("/
04e0: 5c 77 2b 2f 22 2c 20 22 70 72 65 76 2e 24 30 20  \w+/", "prev.$0 
04f0: 41 53 20 70 72 65 76 5f 24 30 22 2c 20 24 66 69  AS prev_$0", $fi
0500: 65 6c 64 73 29 3b 0a 24 70 72 65 76 5f 66 69 65  elds);.$prev_fie
0510: 6c 64 73 5f 65 6d 70 74 79 20 3d 20 70 72 65 67  lds_empty = preg
0520: 5f 72 65 70 6c 61 63 65 28 22 2f 5c 77 2b 2f 22  _replace("/\w+/"
0530: 2c 20 22 20 20 20 4e 55 4c 4c 20 41 53 20 70 72  , "   NULL AS pr
0540: 65 76 5f 24 30 22 2c 20 24 66 69 65 6c 64 73 29  ev_$0", $fields)
0550: 3b 0a 0a 2f 2f 20 41 6c 73 6f 20 74 75 72 6e 20  ;..// Also turn 
0560: 43 53 56 20 6c 69 73 74 20 69 6e 74 6f 20 61 72  CSV list into ar
0570: 72 61 79 0a 24 66 69 65 6c 64 73 20 3d 20 61 72  ray.$fields = ar
0580: 72 61 79 5f 64 69 66 66 28 73 74 72 5f 67 65 74  ray_diff(str_get
0590: 63 73 76 28 24 66 69 65 6c 64 73 29 2c 20 61 72  csv($fields), ar
05a0: 72 61 79 28 22 74 5f 63 68 61 6e 67 65 64 22 29  ray("t_changed")
05b0: 29 3b 0a 0a 0a 0a 2f 2a 2a 0a 20 2a 20 52 65 74  );..../**. * Ret
05c0: 72 69 65 76 65 20 74 77 6f 20 63 6f 6e 73 65 63  rieve two consec
05d0: 75 74 69 76 65 20 72 65 76 69 73 69 6f 6e 73 20  utive revisions 
05e0: 65 61 63 68 2e 0a 20 2a 0a 20 2a 0a 20 2a 2f 0a  each.. *. *. */.
05f0: 24 72 63 20 3d 20 64 62 28 22 0a 0a 20 20 20 20  $rc = db("..    
0600: 53 45 4c 45 43 54 20 24 63 72 6e 74 5f 66 69 65  SELECT $crnt_fie
0610: 6c 64 73 5f 61 6c 69 61 73 2c 20 24 70 72 65 76  lds_alias, $prev
0620: 5f 66 69 65 6c 64 73 5f 61 6c 69 61 73 2c 0a 20  _fields_alias,. 
0630: 20 20 20 20 20 20 20 20 20 20 4d 41 58 28 70 72            MAX(pr
0640: 65 76 2e 74 5f 63 68 61 6e 67 65 64 29 0a 20 20  ev.t_changed).  
0650: 20 20 20 20 46 52 4f 4d 20 72 65 6c 65 61 73 65      FROM release
0660: 20 63 72 6e 74 0a 20 4c 45 46 54 20 4a 4f 49 4e   crnt. LEFT JOIN
0670: 20 72 65 6c 65 61 73 65 20 70 72 65 76 0a 20 20   release prev.  
0680: 20 20 20 20 20 20 4f 4e 20 63 72 6e 74 2e 6e 61        ON crnt.na
0690: 6d 65 20 3d 20 70 72 65 76 2e 6e 61 6d 65 0a 20  me = prev.name. 
06a0: 20 20 20 20 57 48 45 52 45 20 70 72 65 76 2e 74      WHERE prev.t
06b0: 5f 63 68 61 6e 67 65 64 20 3c 20 63 72 6e 74 2e  _changed < crnt.
06c0: 74 5f 63 68 61 6e 67 65 64 0a 2d 2d 20 20 20 20  t_changed.--    
06d0: 20 20 20 20 20 20 20 28 20 53 45 4c 45 43 54 20         ( SELECT 
06e0: 4d 41 58 28 74 5f 63 68 61 6e 67 65 64 29 0a 2d  MAX(t_changed).-
06f0: 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  -               
0700: 46 52 4f 4d 20 72 65 6c 65 61 73 65 0a 2d 2d 20  FROM release.-- 
0710: 20 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45               WHE
0720: 52 45 20 6e 61 6d 65 20 3d 20 63 72 6e 74 2e 6e  RE name = crnt.n
0730: 61 6d 65 0a 2d 2d 20 20 20 20 20 20 20 20 20 20  ame.--          
0740: 20 20 20 20 20 20 41 4e 44 20 74 5f 63 68 61 6e        AND t_chan
0750: 67 65 64 20 3c 20 63 72 6e 74 2e 74 5f 63 68 61  ged < crnt.t_cha
0760: 6e 67 65 64 20 29 0a 20 20 47 52 4f 55 50 20 42  nged ).  GROUP B
0770: 59 20 63 72 6e 74 2e 6e 61 6d 65 2c 20 63 72 6e  Y crnt.name, crn
0780: 74 2e 74 5f 63 68 61 6e 67 65 64 0a 20 20 4f 52  t.t_changed.  OR
0790: 44 45 52 20 42 59 20 63 72 6e 74 2e 74 5f 63 68  DER BY crnt.t_ch
07a0: 61 6e 67 65 64 20 44 45 53 43 0a 20 20 20 20 20  anged DESC.     
07b0: 4c 49 4d 49 54 20 31 30 30 2a 3f 2c 20 31 30 30  LIMIT 100*?, 100
07c0: 0a 0a 22 2c 20 24 5f 52 45 51 55 45 53 54 2d 3e  ..", $_REQUEST->
07d0: 69 6e 74 2d 3e 72 61 6e 67 65 e2 80 a6 31 e2 80  int->range...1..
07e0: a6 31 30 5b 22 6e 22 5d 20 2d 20 31 29 3b 0a 0a  .10["n"] - 1);..
07f0: 0a 0a 2f 2a 2a 0a 20 2a 20 49 74 65 72 61 74 65  ../**. * Iterate
0800: 20 6f 76 65 72 20 61 6c 6c 20 72 65 73 75 6c 74   over all result
0810: 73 20 74 6f 20 64 69 73 70 6c 61 79 20 64 69 66  s to display dif
0820: 66 65 72 65 6e 63 65 73 0a 20 2a 0a 20 2a 2f 0a  ferences. *. */.
0830: 66 6f 72 65 61 63 68 20 28 24 72 63 20 61 73 20  foreach ($rc as 
0840: 24 65 6e 74 72 79 29 20 7b 0a 0a 20 20 20 20 23  $entry) {..    #
0850: 2d 2d 20 50 72 65 70 61 72 65 20 66 69 65 6c 64  -- Prepare field
0860: 73 0a 20 20 20 20 24 6e 61 6d 65 20 3d 20 24 65  s.    $name = $e
0870: 6e 74 72 79 5b 22 63 72 6e 74 5f 6e 61 6d 65 22  ntry["crnt_name"
0880: 5d 3b 0a 20 20 20 20 24 64 61 74 65 20 3d 20 73  ];.    $date = s
0890: 74 72 66 74 69 6d 65 28 22 25 59 2d 25 6d 2d 25  trftime("%Y-%m-%
08a0: 64 20 25 48 3a 25 4d 3a 25 53 22 2c 20 24 65 6e  d %H:%M:%S", $en
08b0: 74 72 79 5b 22 63 72 6e 74 5f 74 5f 63 68 61 6e  try["crnt_t_chan
08c0: 67 65 64 22 5d 29 3b 0a 20 20 20 20 24 74 69 6d  ged"]);.    $tim
08d0: 65 5f 64 69 66 66 20 3d 20 20 24 65 6e 74 72 79  e_diff =  $entry
08e0: 5b 22 63 72 6e 74 5f 74 5f 63 68 61 6e 67 65 64  ["crnt_t_changed
08f0: 22 5d 20 2d 20 24 65 6e 74 72 79 5b 22 70 72 65  "] - $entry["pre
0900: 76 5f 74 5f 63 68 61 6e 67 65 64 22 5d 3b 0a 0a  v_t_changed"];..
0910: 20 20 20 20 23 2d 2d 20 54 61 62 6c 65 0a 20 20      #-- Table.  
0920: 20 20 70 72 69 6e 74 20 22 5c 6e 5c 6e 3c 74 61    print "\n\n<ta
0930: 62 6c 65 20 63 6c 61 73 73 3d 72 63 3e 3c 74 72  ble class=rc><tr
0940: 3e 3c 74 68 3e 3c 61 20 68 72 65 66 3d 2f 70 72  ><th><a href=/pr
0950: 6f 6a 65 63 74 73 2f 24 6e 61 6d 65 3e 24 6e 61  ojects/$name>$na
0960: 6d 65 3c 2f 61 3e 3c 2f 74 68 3e 3c 74 68 3e 24  me</a></th><th>$
0970: 64 61 74 65 20 3c 73 6d 61 6c 6c 3e c2 a4 24 74  date <small>..$t
0980: 69 6d 65 5f 64 69 66 66 3c 2f 73 6d 61 6c 6c 3e  ime_diff</small>
0990: 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 66 75 6e   <span class=fun
09a0: 63 73 3e 3c 61 20 68 72 65 66 3d 2f 73 75 62 6d  cs><a href=/subm
09b0: 69 74 2f 24 6e 61 6d 65 3e 65 64 69 74 3c 2f 61  it/$name>edit</a
09c0: 3e 20 3c 61 20 68 72 65 66 3d 2f 61 64 6d 69 6e  > <a href=/admin
09d0: 2f 24 6e 61 6d 65 3e 61 64 6d 69 6e 3c 2f 61 3e  /$name>admin</a>
09e0: 3c 2f 73 70 61 6e 3e 3c 2f 74 68 3e 3c 2f 74 72  </span></th></tr
09f0: 3e 5c 6e 22 3b 0a 20 20 20 20 66 6f 72 65 61 63  >\n";.    foreac
0a00: 68 20 28 24 66 69 65 6c 64 73 20 61 73 20 24 66  h ($fields as $f
0a10: 6e 20 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 2f  n ) {..        /
0a20: 2f 20 44 69 66 66 20 6f 6e 6c 79 20 69 66 20 74  / Diff only if t
0a30: 68 65 72 65 20 61 72 65 20 64 69 66 66 65 72 65  here are differe
0a40: 6e 63 65 73 2c 20 6f 62 76 69 6f 75 73 6c 79 0a  nces, obviously.
0a50: 20 20 20 20 20 20 20 20 69 66 20 28 24 65 6e 74          if ($ent
0a60: 72 79 5b 22 70 72 65 76 5f 24 66 6e 22 5d 20 21  ry["prev_$fn"] !
0a70: 3d 3d 20 24 65 6e 74 72 79 5b 22 63 72 6e 74 5f  == $entry["crnt_
0a80: 24 66 6e 22 5d 29 20 7b 0a 20 20 20 20 20 20 20  $fn"]) {.       
0a90: 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 64   .            $d
0aa0: 69 66 66 20 3d 20 70 64 69 66 66 3a 3a 68 74 6d  iff = pdiff::htm
0ab0: 6c 44 69 66 66 28 24 65 6e 74 72 79 5b 22 70 72  lDiff($entry["pr
0ac0: 65 76 5f 24 66 6e 22 5d 2c 20 24 65 6e 74 72 79  ev_$fn"], $entry
0ad0: 5b 22 63 72 6e 74 5f 24 66 6e 22 5d 29 3b 0a 20  ["crnt_$fn"]);. 
0ae0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74             print
0af0: 20 22 3c 74 72 3e 3c 74 64 3e 24 66 6e 3c 2f 74   "<tr><td>$fn</t
0b00: 64 3e 3c 74 64 20 63 6c 61 73 73 3d 74 72 69 6d  d><td class=trim
0b10: 6d 65 64 3e 24 64 69 66 66 3c 2f 74 64 3e 3c 2f  med>$diff</td></
0b20: 74 72 3e 5c 6e 22 3b 0a 20 20 20 20 20 20 20 20  tr>\n";.        
0b30: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 70 72 69 6e  }.    }.    prin
0b40: 74 20 22 3c 2f 74 61 62 6c 65 3e 5c 6e 22 3b 0a  t "</table>\n";.
0b50: 7d 0a 0a 0a 2f 2f 20 70 61 67 65 20 66 6f 6f 74  }...// page foot
0b60: 65 72 0a 69 6e 63 6c 75 64 65 28 22 74 65 6d 70  er.include("temp
0b70: 6c 61 74 65 2f 62 6f 74 74 6f 6d 2e 70 68 70 22  late/bottom.php"
0b80: 29 3b 0a 0a 0a 3f 3e                             );...?>