⌈⌋ branch:  freshcode


Hex Artifact Content

Artifact 1556e3eca8555b3aef76a423dd32f11aad13df77:

  • File page_projects.php — part of check-in [bfb37e7d77] at 2016-03-08 22:58:48 on branch trunk — Introduce $renamed_proj[] aliasing. (user: mario size: 2098)

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 50 72 6f 6a 65 63 74 20 64 65 74 61 69 6c  : Project detail
0030: 20 76 69 65 77 0a 20 2a 20 64 65 73 63 72 69 70   view. * descrip
0040: 74 69 6f 6e 3a 20 4c 69 73 74 20 70 72 6f 6a 65  tion: List proje
0050: 63 74 20 65 6e 74 72 79 20 77 69 74 68 20 61 6c  ct entry with al
0060: 6c 20 55 52 4c 73 20 61 6e 64 20 72 65 6c 65 61  l URLs and relea
0070: 73 65 73 0a 20 2a 20 6c 69 63 65 6e 73 65 3a 20  ses. * license: 
0080: 41 47 50 4c 0a 20 2a 20 76 65 72 73 69 6f 6e 20  AGPL. * version 
0090: 30 2e 36 0a 20 2a 20 0a 20 2a 20 53 68 6f 77 73  0.6. * . * Shows
00a0: 3a 0a 20 2a 20 20 20 e2 86 92 20 47 65 6e 65 72  :. *   ... Gener
00b0: 61 6c 20 70 72 6f 6a 65 63 74 20 64 65 73 63 72  al project descr
00c0: 69 70 74 69 6f 6e 0a 20 2a 20 20 20 e2 86 92 20  iption. *   ... 
00d0: 53 69 64 65 62 61 72 20 77 69 74 68 20 70 72 6f  Sidebar with pro
00e0: 6a 65 63 74 20 6c 69 6e 6b 73 2c 20 73 75 62 6d  ject links, subm
00f0: 69 74 74 65 72 2c 20 6d 61 6e 61 67 65 6d 65 6e  itter, managemen
0100: 74 20 6c 69 6e 6b 73 2c 20 73 6f 63 69 61 6c 20  t links, social 
0110: 73 68 61 72 65 20 63 6f 75 6e 74 0a 20 2a 20 20  share count. *  
0120: 20 e2 86 92 20 52 65 6c 65 61 73 65 20 68 69 73   ... Release his
0130: 74 6f 72 79 20 61 6e 64 20 63 68 61 6e 67 65 6c  tory and changel
0140: 6f 67 73 0a 20 2a 20 41 64 64 73 3a 0a 20 2a 20  ogs. * Adds:. * 
0150: 20 20 e2 86 92 20 52 53 53 2f 41 74 6f 6d 20 6c    ... RSS/Atom l
0160: 69 6e 6b 73 20 74 6f 20 68 65 61 64 65 72 20 74  inks to header t
0170: 65 6d 70 6c 61 74 65 0a 20 2a 0a 20 2a 2f 0a 0a  emplate. *. */..
0180: 2f 2f 20 43 75 72 72 65 6e 74 20 70 72 6f 6a 65  // Current proje
0190: 63 74 20 69 64 0a 24 6e 61 6d 65 20 3d 20 24 5f  ct id.$name = $_
01a0: 52 45 51 55 45 53 54 2d 3e 70 72 6f 6a 5f 6e 61  REQUEST->proj_na
01b0: 6d 65 5b 22 6e 61 6d 65 22 5d 3b 0a 0a 2f 2f 20  me["name"];..// 
01c0: 52 65 64 69 72 65 63 74 20 74 6f 20 6e 65 77 20  Redirect to new 
01d0: 6e 61 6d 65 3f 0a 69 66 20 28 69 73 73 65 74 28  name?.if (isset(
01e0: 24 72 65 6e 61 6d 65 64 5f 70 72 6f 6a 5b 24 6e  $renamed_proj[$n
01f0: 61 6d 65 5d 29 29 20 7b 0a 20 20 20 20 65 78 69  ame])) {.    exi
0200: 74 28 68 65 61 64 65 72 28 22 4c 6f 63 61 74 69  t(header("Locati
0210: 6f 6e 3a 20 2f 70 72 6f 6a 65 63 74 73 2f 24 72  on: /projects/$r
0220: 65 6e 61 6d 65 64 5f 70 72 6f 6a 5b 6e 61 6d 65  enamed_proj[name
0230: 5d 22 2c 20 33 30 33 29 29 3b 0a 7d 0a 0a 23 2d  ]", 303));.}..#-
0240: 2d 20 46 65 74 63 68 20 70 72 6f 6a 65 63 74 2f  - Fetch project/
0250: 72 65 6c 65 61 73 65 20 65 6e 74 72 69 65 73 0a  release entries.
0260: 24 72 65 6c 65 61 73 65 73 20 3d 20 64 62 28 22  $releases = db("
0270: 0a 20 20 20 20 20 20 20 20 53 45 4c 45 43 54 20  .        SELECT 
0280: 2a 2c 20 4d 41 58 28 74 5f 63 68 61 6e 67 65 64  *, MAX(t_changed
0290: 29 0a 20 20 20 20 20 20 20 20 20 20 46 52 4f 4d  ).          FROM
02a0: 20 72 65 6c 65 61 73 65 0a 20 20 20 20 20 20 20   release.       
02b0: 20 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 3f    WHERE name = ?
02c0: 0a 20 20 20 20 20 20 20 20 20 20 20 41 4e 44 20  .           AND 
02d0: 66 6c 61 67 20 3c 20 35 0a 20 20 20 20 20 20 20  flag < 5.       
02e0: 20 20 20 20 41 4e 44 20 4e 4f 54 20 64 65 6c 65      AND NOT dele
02f0: 74 65 64 0a 20 20 20 20 20 20 47 52 4f 55 50 20  ted.      GROUP 
0300: 42 59 20 76 65 72 73 69 6f 6e 0a 20 20 20 20 20  BY version.     
0310: 20 4f 52 44 45 52 20 42 59 20 74 5f 70 75 62 6c   ORDER BY t_publ
0320: 69 73 68 65 64 20 44 45 53 43 2c 20 74 5f 63 68  ished DESC, t_ch
0330: 61 6e 67 65 64 20 44 45 53 43 0a 22 2c 20 24 6e  anged DESC.", $n
0340: 61 6d 65 29 3b 0a 0a 0a 2f 2f 20 52 65 74 72 69  ame);...// Retri
0350: 65 76 65 20 6d 6f 73 74 20 63 75 72 72 65 6e 74  eve most current
0360: 20 70 72 6f 6a 65 63 74 20 76 65 72 73 69 6f 6e   project version
0370: 0a 69 66 20 28 24 65 6e 74 72 79 20 3d 20 24 72  .if ($entry = $r
0380: 65 6c 65 61 73 65 73 2d 3e 66 65 74 63 68 28 29  eleases->fetch()
0390: 29 20 7b 0a 0a 0a 20 20 20 20 2f 2f 20 70 72 65  ) {...    // pre
03a0: 70 61 72 65 20 48 54 4d 4c 20 68 65 61 64 65 72  pare HTML header
03b0: 20 77 69 74 68 20 69 6e 6a 65 63 74 65 64 20 52   with injected R
03c0: 53 53 2f 41 74 6f 6d 20 6c 69 6e 6b 73 0a 20 20  SS/Atom links.  
03d0: 20 20 24 68 65 61 64 65 72 5f 61 64 64 20 3d 20    $header_add = 
03e0: 22 3c 6c 69 6e 6b 20 72 65 6c 3d 61 6c 74 65 72  "<link rel=alter
03f0: 6e 61 74 65 20 74 79 70 65 3d 61 70 70 6c 69 63  nate type=applic
0400: 61 74 69 6f 6e 2f 72 73 73 2b 78 6d 6c 20 68 72  ation/rss+xml hr
0410: 65 66 3d 2f 66 65 65 64 2f 24 6e 61 6d 65 2e 72  ef=/feed/$name.r
0420: 73 73 3e 5c 6e 22 0a 20 20 20 20 20 20 20 20 20  ss>\n".         
0430: 20 20 20 20 20 20 20 2e 20 22 3c 6c 69 6e 6b 20         . "<link 
0440: 72 65 6c 3d 61 6c 74 65 72 6e 61 74 65 20 74 79  rel=alternate ty
0450: 70 65 3d 61 70 70 6c 69 63 61 74 69 6f 6e 2f 61  pe=application/a
0460: 74 6f 6d 2b 78 6d 6c 20 68 72 65 66 3d 2f 66 65  tom+xml href=/fe
0470: 65 64 2f 24 6e 61 6d 65 2e 61 74 6f 6d 3e 5c 6e  ed/$name.atom>\n
0480: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
0490: 20 20 2e 20 22 3c 6c 69 6e 6b 20 72 65 6c 3d 61    . "<link rel=a
04a0: 6c 74 65 72 6e 61 74 65 20 74 79 70 65 3d 6a 73  lternate type=js
04b0: 6f 6e 2f 76 6e 64 2e 66 72 65 73 68 63 6f 64 65  on/vnd.freshcode
04c0: 2e 63 6c 75 62 20 68 72 65 66 3d 2f 66 65 65 64  .club href=/feed
04d0: 2f 24 6e 61 6d 65 2e 6a 73 6f 6e 3e 22 3b 0a 20  /$name.json>";. 
04e0: 20 20 20 24 74 69 74 6c 65 20 3d 20 69 6e 70 75     $title = inpu
04f0: 74 3a 3a 68 74 6d 6c 28 24 65 6e 74 72 79 5b 22  t::html($entry["
0500: 74 69 74 6c 65 22 5d 29 20 2e 20 22 20 2d 20 66  title"]) . " - f
0510: 72 65 73 68 63 6f 64 65 2e 63 6c 75 62 22 3b 0a  reshcode.club";.
0520: 20 20 20 20 69 6e 63 6c 75 64 65 28 22 74 65 6d      include("tem
0530: 70 6c 61 74 65 2f 68 65 61 64 65 72 2e 70 68 70  plate/header.php
0540: 22 29 3b 0a 0a 0a 20 20 20 20 2f 2f 20 53 68 6f  ");...    // Sho
0550: 77 20 73 69 64 65 62 61 72 20 2b 20 6c 6f 6e 67  w sidebar + long
0560: 20 70 72 6f 6a 65 63 74 20 64 65 73 63 72 69 70   project descrip
0570: 74 69 6f 6e 0a 20 20 20 20 70 72 65 70 61 72 65  tion.    prepare
0580: 5f 6f 75 74 70 75 74 28 24 65 6e 74 72 79 29 3b  _output($entry);
0590: 0a 20 20 20 20 24 73 62 5f 65 6e 74 72 79 20 3d  .    $sb_entry =
05a0: 20 24 65 6e 74 72 79 3b 0a 20 20 20 20 69 6e 63   $entry;.    inc
05b0: 6c 75 64 65 28 22 74 65 6d 70 6c 61 74 65 2f 74  lude("template/t
05c0: 61 62 6c 65 5f 6d 61 69 6e 2e 70 68 70 22 29 3b  able_main.php");
05d0: 0a 20 20 20 20 69 6e 63 6c 75 64 65 28 22 74 65  .    include("te
05e0: 6d 70 6c 61 74 65 2f 70 72 6f 6a 65 63 74 73 5f  mplate/projects_
05f0: 64 65 73 63 72 69 70 74 69 6f 6e 2e 70 68 70 22  description.php"
0600: 29 3b 0a 0a 0a 20 20 20 20 23 2d 2d 20 44 69 73  );...    #-- Dis
0610: 70 6c 61 79 20 61 6c 6c 20 6f 74 68 65 72 20 72  play all other r
0620: 65 6c 65 61 73 65 64 20 76 65 72 73 69 6f 6e 73  eleased versions
0630: 0a 20 20 20 20 3f 3e 20 3c 61 72 74 69 63 6c 65  .    ?> <article
0640: 20 63 6c 61 73 73 3d 72 65 6c 65 61 73 65 2d 6c   class=release-l
0650: 69 73 74 3e 20 20 3c 68 34 3e 52 65 63 65 6e 74  ist>  <h4>Recent
0660: 20 52 65 6c 65 61 73 65 73 3c 2f 68 34 3e 20 3c   Releases</h4> <
0670: 3f 70 68 70 0a 20 20 20 20 64 6f 20 7b 0a 20 20  ?php.    do {.  
0680: 20 20 20 20 20 20 69 6e 63 6c 75 64 65 28 22 74        include("t
0690: 65 6d 70 6c 61 74 65 2f 70 72 6f 6a 65 63 74 73  emplate/projects
06a0: 5f 72 65 6c 65 61 73 65 5f 65 6e 74 72 79 2e 70  _release_entry.p
06b0: 68 70 22 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20  hp");.    }.    
06c0: 77 68 69 6c 65 20 28 24 65 6e 74 72 79 20 3d 20  while ($entry = 
06d0: 24 72 65 6c 65 61 73 65 73 2d 3e 66 65 74 63 68  $releases->fetch
06e0: 28 29 20 61 6e 64 20 70 72 65 70 61 72 65 5f 6f  () and prepare_o
06f0: 75 74 70 75 74 28 24 65 6e 74 72 79 29 20 2b 20  utput($entry) + 
0700: 31 29 3b 0a 20 20 20 20 3f 3e 20 3c 2f 61 72 74  1);.    ?> </art
0710: 69 63 6c 65 3e 20 3c 3f 70 68 70 0a 0a 20 20 20  icle> <?php..   
0720: 20 2f 2f 20 68 74 6d 6c 20 74 61 69 6c 0a 20 20   // html tail.  
0730: 20 20 24 65 6e 74 72 79 20 3d 20 24 73 62 5f 65    $entry = $sb_e
0740: 6e 74 72 79 3b 0a 20 20 20 20 69 6e 63 6c 75 64  ntry;.    includ
0750: 65 28 22 74 65 6d 70 6c 61 74 65 2f 70 72 6f 6a  e("template/proj
0760: 65 63 74 73 5f 73 69 64 65 62 61 72 2e 70 68 70  ects_sidebar.php
0770: 22 29 3b 0a 20 20 20 20 69 6e 63 6c 75 64 65 28  ");.    include(
0780: 22 74 65 6d 70 6c 61 74 65 2f 74 61 62 6c 65 5f  "template/table_
0790: 65 6e 64 2e 70 68 70 22 29 3b 0a 20 20 20 20 69  end.php");.    i
07a0: 6e 63 6c 75 64 65 28 22 74 65 6d 70 6c 61 74 65  nclude("template
07b0: 2f 62 6f 74 74 6f 6d 2e 70 68 70 22 29 3b 0a 7d  /bottom.php");.}
07c0: 0a 0a 0a 2f 2f 20 4e 6f 20 65 6e 74 72 79 20 66  ...// No entry f
07d0: 6f 75 6e 64 0a 65 6c 73 65 20 7b 0a 20 20 20 20  ound.else {.    
07e0: 65 78 69 74 28 24 65 72 72 6f 72 20 3d 20 22 50  exit($error = "P
07f0: 72 6f 6a 65 63 74 20 6e 61 6d 65 20 64 6f 65 73  roject name does
0800: 6e 27 74 20 65 78 69 73 74 2e 22 20 61 6e 64 20  n't exist." and 
0810: 69 6e 63 6c 75 64 65 28 22 70 61 67 65 5f 65 72  include("page_er
0820: 72 6f 72 2e 70 68 70 22 29 29 3b 0a 7d 0a 0a 0a  ror.php"));.}...
0830: 3f 3e                                            ?>