Compare commits
14 Commits
I30-Series
...
4fdb32934b
Author | SHA1 | Date | |
---|---|---|---|
|
4fdb32934b | ||
|
5bd96f69e0 | ||
38d2e7c363
|
|||
|
7691209360 | ||
f7216132a4
|
|||
67a8a2bfa4
|
|||
cfd463d2b0
|
|||
91cbc81a12
|
|||
|
c1a83f8baf | ||
3b72fe6d28
|
|||
76b976732b
|
|||
|
bf60d35ed1 | ||
e2cf52af6e
|
|||
414bae101a
|
@@ -26,6 +26,13 @@
|
||||
INNER JOIN episode_date
|
||||
ON eps.date > episode_date.date
|
||||
WHERE eps.date < date (\'now\')
|
||||
),
|
||||
comment_tallies AS (
|
||||
SELECT
|
||||
eps_id,
|
||||
COUNT(eps_id) AS eps_tally
|
||||
FROM comments
|
||||
GROUP BY eps_id
|
||||
)
|
||||
SELECT eps.id, eps.date, eps.title, eps.duration,
|
||||
eps.summary, eps.notes, eps.explicit, eps.license,
|
||||
@@ -33,28 +40,116 @@
|
||||
episode_maxmin.latest, episode_maxmin.earliest,
|
||||
episode_previous.previous, episode_next.next,
|
||||
hosts.hostid, hosts.host,
|
||||
miniseries.name AS \'series\', miniseries.id AS \'seriesid\'
|
||||
miniseries.name AS \'series\', miniseries.id AS \'seriesid\',
|
||||
miniseries.description AS \'series_description\',
|
||||
COALESCE (comment_tallies.eps_tally, 0) AS eps_tally
|
||||
FROM eps
|
||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||
INNER JOIN episode_maxmin ON eps.id = episode_maxmin.id
|
||||
INNER JOIN episode_previous ON eps.id = episode_previous.id
|
||||
INNER JOIN episode_next ON eps.id = episode_next.id
|
||||
LEFT JOIN comment_tallies ON eps.id = comment_tallies.eps_id
|
||||
WHERE eps.id = ?
|
||||
')
|
||||
%-->
|
||||
<!--% episode_result = query_episodes.execute(id, id, id, id, id) %-->
|
||||
<!--% FOREACH episode IN episode_result %-->
|
||||
<!--% episode_navigation = step_navigation(baseurl,episode) %-->
|
||||
<article>
|
||||
<header>
|
||||
<h1>hpr<!--% episode.id %--> :: <!--% episode.title %--></h1>
|
||||
<h3><!--% episode.summary %--></h3>
|
||||
<p class="meta"><!--% step_navigation(baseurl,episode) %-->
|
||||
<p class="meta"><!--% episode_navigation %-->
|
||||
</p>
|
||||
<p><!--% IF get_avatar(episode.hostid) != 'hpr_logo.png' %-->
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/<!--% get_avatar(episode.hostid) %-->" height="80" width="80" alt="" /></a><br><!--% END %-->
|
||||
Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(episode.hostid) %-->.html"><!--% episode.host %--></a>. <!--% show_meta(episode) %--></p>
|
||||
Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(episode.hostid) %-->.html"><!--% episode.host %--></a> on <span><!--% episode.date %--></span> is flagged as <span><!--% display_explicit(episode.explicit) %--></span> and is released under a <span><!--% episode.license %--> license</span>. <br>
|
||||
<!--% display_tags(episode.tags) %--> <br>
|
||||
<!--% display_listen_in(episode.id) %--> |
|
||||
<!--% display_comments_tally(episode.id, episode.eps_tally) %-->
|
||||
</p>
|
||||
<h3><!--% show_series(episode.series, episode.seriesid, "Part of the series") %--></h3>
|
||||
<p><em><!--% episode.series_description %--></em></p>
|
||||
</header>
|
||||
<div><!--% episode.notes %--></div>
|
||||
</article>
|
||||
<footer>
|
||||
<h2>Listen Now</h2>
|
||||
<p>Duration: <!--% display_episode_duration(episode.duration) %--></p>
|
||||
<audio controls preload="none">
|
||||
<source src="<!--% absolute_path(baseurl) %-->local/hpr<!--% episode.id %-->.ogg" type="audio/ogg" >
|
||||
<source src="<!--% absolute_path(baseurl) %-->local/hpr<!--% episode.id %-->.mp3" type="audio/mpeg" >
|
||||
</audio>
|
||||
<ul>
|
||||
<li>ogg: <a href="<!--% absolute_path(baseurl) %-->local/hpr<!--% episode.id %-->.ogg">https://www.hackerpublicradio.org/local/hpr<!--% episode.id %-->.ogg</a></li>
|
||||
<li>spx: <a href="<!--% absolute_path(baseurl) %-->local/hpr<!--% episode.id %-->.spx">https://www.hackerpublicradio.org/local/hpr<!--% episode.id %-->.spx</a></li>
|
||||
<li>mp3: <a href="<!--% absolute_path(baseurl) %-->local/hpr<!--% episode.id %-->.mp3">https://www.hackerpublicradio.org/local/hpr<!--% episode.id %-->.mp3</a></li>
|
||||
</ul>
|
||||
<p>
|
||||
<!--% episode_navigation %-->
|
||||
</p>
|
||||
</footer></article>
|
||||
<!--% END %-->
|
||||
<hr />
|
||||
<h1>Comments</h1>
|
||||
<p id="comments">
|
||||
Subscribe to the comments <a href="https://www.hackerpublicradio.org/comments_rss.php">RSS</a> feed.
|
||||
</p>
|
||||
<!--% query_comments = DBI.prepare('
|
||||
SELECT
|
||||
comment_timestamp,
|
||||
comment_author_name,
|
||||
comment_title,
|
||||
comment_text
|
||||
FROM comments
|
||||
WHERE eps_id = ?
|
||||
')
|
||||
%-->
|
||||
<!--% comment_index = 1 %-->
|
||||
<!--% comments_result = query_comments.execute(id) %-->
|
||||
<!--% FOREACH comment IN comments_result %-->
|
||||
<h5 id="1">Comment #<!--% comment_index %--> posted on <!--% comment.comment_timestamp %--> by <!--% comment.comment_author_name %--></h5>
|
||||
<h4><!--% comment.comment_title %--></h4>
|
||||
<!--% comment.comment_text %-->
|
||||
<!--% comment_index = comment_index + 1 %-->
|
||||
<!--% END %-->
|
||||
|
||||
<h2>Leave Comment</h2>
|
||||
<p>
|
||||
<strong>Note to Verbose Commenters</strong><br />
|
||||
If you can't fit everything you want to say in the comment below then you really should <a href="/contribute.php">record</a> a response show instead.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Note to Spammers</strong><br />
|
||||
All comments are moderated. All links are checked by humans. We strip out all html. Feel free to <a href="/contribute.php">record</a> a show about yourself, or your industry, or any other topic we may find interesting. <em>We also check shows for spam :)</em>.
|
||||
</p>
|
||||
<form method="POST" action="comment_confirm.php">
|
||||
<fieldset>
|
||||
<legend>Provide feedback</legend>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Your Name/Handle:</td>
|
||||
<td><input required type="text" name="comment_author_name" size="40" maxlength="40" placeholder="Enter your name" ></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Title:</td>
|
||||
<td><input required type="text" name="comment_title" size="50" maxlength="100" placeholder="What is your comment about ?"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Comment:</td>
|
||||
<td><textarea required name="comment_text" maxlength="2000" rows="10" cols="50" placeholder="Place the comment here."></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anti Spam Question:</td>
|
||||
<td>
|
||||
What does the <strong>P</strong> in <em>HPR</em> stand for ? <br />
|
||||
<input required type="text" name="anti_spam_question" size="50" maxlength="100" placeholder="Type out what the P in HPR stands for."></td>
|
||||
</tr>
|
||||
<input type="hidden" name="spammer" value="No">
|
||||
<input type="hidden" name="hostid" value="406">
|
||||
<input type="hidden" name="justification" value="No justification is asked for or required.">
|
||||
<input type="hidden" name="eps_id" value="3665 ">
|
||||
</table>
|
||||
<input type="submit" value="Next">
|
||||
</fieldset>
|
||||
</form>
|
||||
|
@@ -5,9 +5,30 @@
|
||||
<header>
|
||||
<h3>Welcome to HPR the Community Podcast</h3>
|
||||
</header>
|
||||
<!--% days_till_next_episode = 0 %-->
|
||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||
<!--% FOREACH next_available_episode_result IN DBI.query('
|
||||
WITH next_id AS (SELECT id, id + 1 AS \'id_next\', date as \'last_date\'
|
||||
FROM eps
|
||||
WHERE eps.date > date(\'now\')
|
||||
)
|
||||
SELECT
|
||||
MIN (next_id.id_next) AS \'next_id\',
|
||||
strftime(\'%Y\', MIN (last_date)) AS \'last_year\',
|
||||
strftime(\'%d\', MIN (last_date)) AS \'last_day\',
|
||||
strftime(\'%m\', MIN (last_date)) AS \'last_month\'
|
||||
FROM next_id
|
||||
LEFT JOIN eps ON next_id.id_next = eps.id
|
||||
WHERE eps.id IS NULL
|
||||
')
|
||||
%-->
|
||||
<!--% USE date %-->
|
||||
<!--% calc = date.calc %-->
|
||||
<!--% days_till_next_episode = calc.Delta_Days(date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d'),next_available_episode_result.last_year,next_available_episode_result.last_month,next_available_episode_result.last_day + 1) %-->
|
||||
<!--% END %-->
|
||||
<!--% USE date %-->
|
||||
<!--% delta = date.calc.N_Delta_YMD(2005,9,19, date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d')) %-->
|
||||
<p>We started producing shows as <a href="https://www.hackerpublicradio.org/twat.php"><em>Today with a Techie</em></a> on 2005-09-19, <!--% delta.0 %--> years, <!--% delta.1 %--> months, <!--% delta.2 %--> days ago. our shows are produced by <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">listeners</a> like you and can be on any <a href="<!--% absolute_path(baseurl) %-->eps/index.html">topic</a> that <strong>"are of interest to <a href="https://en.wikipedia.org/wiki/hacker_(hobbyist)">hackers</a>"</strong>. if you listen to HPR then please consider contributing one show a year. if you <a href="<!--% absolute_path(baseurl) %-->contribute.html">record</a> your show now it could be <a href="https://www.hackerpublicradio.org/calendar.php">released</a> in <strong>13</strong> days.</p>
|
||||
<p>We started producing shows as <a href="https://www.hackerpublicradio.org/twat.php"><em>Today with a Techie</em></a> on 2005-09-19, <!--% delta.0 %--> years, <!--% delta.1 %--> months, <!--% delta.2 %--> days ago. our shows are produced by <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">listeners</a> like you and can be on any <a href="<!--% absolute_path(baseurl) %-->eps/index.html">topic</a> that <strong>"are of interest to <a href="https://en.wikipedia.org/wiki/hacker_(hobbyist)">hackers</a>"</strong>. if you listen to HPR then please consider contributing one show a year. if you <a href="<!--% absolute_path(baseurl) %-->contribute.html">record</a> your show now it could be <a href="https://www.hackerpublicradio.org/calendar.php">released</a> in <strong><!--% days_till_next_episode %--></strong> days.</p>
|
||||
<h4>Meet the team</h4>
|
||||
<p>
|
||||
<audio controls preload="none">";
|
||||
@@ -19,21 +40,29 @@
|
||||
<hr>
|
||||
<!--% PROCESS 'shared-episode-summary.tpl.html' %-->
|
||||
<h1>Latest Shows</h1>
|
||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||
<!--% FOREACH latest_episodes IN DBI.query('
|
||||
WITH comment_tallies AS (
|
||||
SELECT
|
||||
eps_id,
|
||||
COUNT(eps_id) AS eps_tally
|
||||
FROM comments
|
||||
GROUP BY eps_id
|
||||
)
|
||||
SELECT
|
||||
eps.id,
|
||||
eps.explicit,
|
||||
eps.date, eps.license, eps.duration,
|
||||
eps.title, eps.summary, eps.tags,
|
||||
eps.notes,
|
||||
hosts.local_image,
|
||||
hosts.hostid,
|
||||
hosts.host, hosts.email,
|
||||
miniseries.name AS series, miniseries.id AS seriesid
|
||||
eps.id,
|
||||
eps.explicit,
|
||||
eps.date, eps.license, eps.duration,
|
||||
eps.title, eps.summary, eps.tags,
|
||||
eps.notes,
|
||||
hosts.local_image,
|
||||
hosts.hostid,
|
||||
hosts.host, hosts.email,
|
||||
miniseries.name AS series, miniseries.id AS seriesid,
|
||||
COALESCE (comment_tallies.eps_tally, 0) AS eps_tally
|
||||
FROM eps
|
||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||
LEFT JOIN comment_tallies ON eps.id = comment_tallies.eps_id
|
||||
WHERE eps.date < date(\'now\', \'+1 days\')
|
||||
ORDER BY date DESC
|
||||
LIMIT 10
|
||||
@@ -47,15 +76,15 @@
|
||||
<p class="meta"$><!--% IF get_avatar(latest_episodes.hostid) != 'hpr_logo.png' %-->
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/<!--% get_avatar(latest_episodes.hostid) %-->" height="80" width="80" alt="" /></a><!--% END %-->
|
||||
<br>Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(latest_episodes.hostid) %-->.html"><!--% latest_episodes.host %--></a> on <!--% latest_episodes.date %--> is flagged as <!--% display_explicit(latest_episodes.explicit) %--> and released under a <!--% latest_episodes.license %--> license. <br>
|
||||
<strong>Tags:</strong> <!--% latest_episodes.tags %--><em></em>.<br>
|
||||
<small>listen in <a href="local/hpr<!--% latest_episodes.id %-->.ogg">ogg</a>, <a href="local/hpr<!--% latest_episodes.id %-->.spx">spx</a>, or <a href="local/hpr<!--% latest_episodes.id %-->.mp3">mp3</a> format. <!--% show_series(latest_episodes.series, latest_episodes.seriesid) %-->
|
||||
<a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(latest_episodes.id) %-->/index.html#comments">View comments.</a></small>
|
||||
<!--% display_tags(latest_episodes.tags) %--><br>
|
||||
<small><!--% display_listen_in(latest_episodes.id) %--> <!--% show_series(latest_episodes.series, latest_episodes.seriesid) %--> |
|
||||
<!--% display_comments_tally(latest_episodes.id, latest_episodes.eps_tally) %--></small>
|
||||
</p>
|
||||
</header>
|
||||
<!--% latest_episodes.notes %-->
|
||||
<footer>
|
||||
<h2>listen now</h2>
|
||||
<p>Duration: <!--% latest_episodes.duration %--></p>
|
||||
<p>Duration: <!--% display_episode_duration(latest_episodes.duration) %--></p>
|
||||
<audio controls preload="none">
|
||||
<source src="local/hpr<!--% latest_episodes.id %-->.ogg" type="audio/ogg" >
|
||||
<source src="local/hpr<!--% latest_episodes.id %-->.mp3" type="audio/mpeg" >
|
||||
|
@@ -10,6 +10,7 @@
|
||||
<meta http-equiv="X-Clacks-Overhead" content="GNU Terry Pratchett" />
|
||||
<meta name="keywords" content="Technology, Tech News, Education, Training" />
|
||||
<meta name="description" content="Hacker Public Radio is an podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that are of interest to hackers and hobbyists." />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- Internal CSS -->
|
||||
<style type="text/css">
|
||||
article, aside, dialog, figure, footer, header, hgroup, menu, nav, section {
|
||||
|
@@ -1,12 +1,27 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
|
||||
<!--% MACRO show_series(series, series_id) IF series != "" %-->
|
||||
<label>Series:</label> <a href="<!--% absolute_path(baseurl) %-->series/<!--% zero_pad_left(series_id) %-->.html"><!--% series %--></a>.
|
||||
<!--% MACRO show_series(series, series_id, label) IF series != "" %-->
|
||||
<!--% IF label == "" %-->
|
||||
<!--% label = "Series" %-->
|
||||
<!--% END %-->
|
||||
<label><!--% label %-->:</label> <a href="<!--% absolute_path(baseurl) %-->series/<!--% zero_pad_left(series_id) %-->.html"><!--% series %--></a>.
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO display_tags(tags) BLOCK %-->
|
||||
<span><label>Tags:</label> <em><!--% tags %--></em>.</span>
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO display_listen_in(eps_id) BLOCK %-->
|
||||
Listen in <a href="<!--% absolute_path(baseurl) %-->local/hpr<!--% eps_id %-->.ogg">ogg</a>, <a href="<!--% absolute_path(baseurl) %-->local/hpr<!--% eps_id %-->.spx">spx</a>, or <a href="<!--% absolute_path(baseurl) %-->local/hpr<!--% eps_id %-->.mp3">mp3</a> format.
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO display_comments_tally(eps_id, tally) BLOCK %-->
|
||||
<a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(eps_id) %-->/index.html#comments">Comments (<!--% tally %-->)</a>.
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO show_meta(show) BLOCK %-->
|
||||
<span><label>Released:</label> <!--% show.date %-->.</span> <span><label>Duration:</label> <!--% show.duration %-->.</span> <span><label>Flag:</label> <!--% display_explicit(show.explicit) %-->.</span> <span><!--% show_series(show.series, show.seriesid) %--></span> <br>
|
||||
<span><label>Tags:</label> <em><!--% show.tags %--></em>.</span>
|
||||
<span><label>Released:</label> <!--% show.date %-->.</span> <span><label>Duration:</label> <!--% display_episode_duration(show.duration) %-->.</span> <span><label>Flag:</label> <!--% display_explicit(show.explicit) %-->.</span> <span><!--% show_series(show.series, show.seriesid) %--></span> <br>
|
||||
<!--% display_tags(tags) %-->
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO show_summary(show, hide_host) BLOCK %-->
|
||||
|
@@ -8,6 +8,20 @@
|
||||
<!--% ELSE %--><!--% display_when_false %--><!--% END %-->
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO display_episode_duration(duration_sec) BLOCK %-->
|
||||
<!--% seconds = duration_sec % 60 %-->
|
||||
<!--% USE format %-->
|
||||
<!--% minutes_only = format("%d") %-->
|
||||
<!--% minutes = minutes_only(duration_sec / 60) %-->
|
||||
<!--% hours_only = format("%d") %-->
|
||||
<!--% hours = hours_only(minutes / 60) %-->
|
||||
<!--% IF hours >= 1 %-->
|
||||
<!--% minutes = minutes - hours * 60 %-->
|
||||
<!--% END %-->
|
||||
<!--% display_hours = format("%02d:%02d:%02d") %-->
|
||||
<!--% display_hours(hours,minutes,seconds) %-->
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO display_explicit(is_explicit) BLOCK %-->
|
||||
<!--% display_choice(is_explicit, 'Explicit', 'Clean') %-->
|
||||
<!--% END %-->
|
||||
|
Reference in New Issue
Block a user