-
-
Save TechnoSparks/7aaf577e7b376e95c9b1ab642c0f2ff1 to your computer and use it in GitHub Desktop.
This is the source code for the blog running on my website
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function blog_printDatabaseEcho($entryData, $type = "default") { | |
if($type == "default") { | |
echo '<a href="/blog/entry/'.$entryData["filename"].'" class="entry-card white">'.'<h2 class="title">'.$entryData["title"].'</h3>'.'<p class="details">'.blog_timeparser($entryData["time"][0]).'<br>'; | |
blog_tagsDisplayAllTags($entryData["tags"]); echo '</p>'; | |
echo '</a>'; | |
} elseif ($type == "rss") { | |
echo " <entry>\n"; | |
echo ' <title>'.$entryData["title"].'</title>'."\n"; | |
echo ' <link type="text/html" href="https://www.technosparks.net/blog/entry/'.$entryData["filename"].'"/>'."\n"; | |
echo ' <updated>'.blog_timeparser($entryData["time"][0], "rss").'</updated>'."\n"; | |
echo ' <content type="xhtml">'."\n"; | |
echo ' <div xmlns="http://www.w3.org/1999/xhtml">'."\n"; | |
echo ' <p><a href="https://www.technosparks.net/blog/entry/'.$entryData[1].'">Read this entry</a></p>'."\n"; | |
echo ' </div>'."\n"; | |
echo ' </content>'."\n"; | |
echo ' <author><name>Shahmi Saidi</name></author>'."\n"; | |
echo " </entry>\n\n"; | |
} | |
} | |
function blog_printDatabase($type = "default") { | |
$fp = fopen("entries-list.txt", "r"); | |
// Check for total number of entries | |
$entries = 0; $fpEntryofPg = []; $fpEntryofPgi = 1; | |
while(!feof($fp)) { | |
// Line 1 | |
$fpBefore = ftell($fp); | |
if(empty(fgets($fp))) { break; } | |
// Line 2 | |
if(fgets($fp) == "wip\n") { | |
if(!isset($_GET["all"])) { | |
$entries--; | |
} | |
} | |
if($entries % 6 == 0) { | |
$fpEntryofPg[$fpEntryofPgi++] = $fpBefore; | |
} | |
// Line 3 - 7 | |
for($i = 1; $i <= 5; $i++) { | |
fgets($fp); | |
} | |
$entries++; | |
} | |
// Handle pagination | |
$maxPages = ceil($entries / 6); | |
if(!empty($_GET["page"])) { $page = $_GET["page"]; } else { $page = 1; } | |
if($page > $maxPages || $page <= 0) { | |
echo '<section>'.infobox("warn", ($page < 0 ? 'There's no such thing as negative pages! ' : '').'You attempted to access a page (page '.$page.') which does not exist! Showing you page 1 instead.').'</section>'; | |
$page = 1; | |
} | |
// Output entries based on page | |
fseek($fp, $fpEntryofPg[$page]); | |
echo '<section class="bloglist">'; | |
for($entry = 1; $entry <= 6; $entry++) { | |
// Line 1 | |
if(empty(fgets($fp))) { break; } | |
// Line 2 | |
if(fgets($fp) == "wip\n") { | |
if(!isset($_GET["all"])) { | |
for($i = 1; $i <= 5; $i++) { | |
fgets($fp); | |
} | |
$entry--; | |
continue; | |
} | |
} | |
// Line 3 | |
$entryData["time"] = explode(" ", trim(fgets($fp), "\n")); | |
// Line 4 | |
$entryData["filename"] = trim(fgets($fp), "\n"); | |
// Line 5 | |
$entryData["title"] = trim(fgets($fp), "\n"); | |
// Line 6 | |
$entryData["tags"] = explode(", ", trim(fgets($fp), "\n")); | |
// Line 7 | |
fgets($fp); | |
blog_printDatabaseEcho($entryData, $type); | |
} | |
echo '</section>'; | |
fclose($fp); | |
// Display pagination controls | |
if($type == "default") { | |
echo '<section style="text-align: center">'; | |
echo '<a class="blog pagination button-link" href="?page='.($page - 1).((isset($_GET["all"])) ? '&all' : '').'" style="min-width: initial; visibility: ' . ($page > 1 ? 'visible' : 'hidden') . ';"><i class="fa fa-chevron-left"></i></a> '; | |
echo '<span class="blog pagination">Page ' . $page . '</span> '; | |
echo '<a class="blog pagination button-link" href="?page=' . ($page + 1) . ((isset($_GET["all"])) ? '$all' : '') . '" style="min-width: initial; visibility: ' . ($page < $maxPages ? 'visible' : 'hidden') . ';"><i class="fa fa-chevron-right"></i></a> '; | |
echo '</section>'; | |
} elseif($type == "rss") { | |
if($page > 1) { | |
echo '<link rel="previous" href="https://www.technosparks.net/blog/atom-feed?page='.($page + 1).'"/>'; | |
} | |
if($page < $maxPages) { | |
echo '<link rel="next" href="https://www.technosparks.net/blog/atom-feed?page='.($page - 1).'"/>'; | |
} | |
} | |
} | |
function blog_processEntry($entryRequested) { | |
global $pgconfig_title, $blogSubtitle, $timestamp; | |
$entryFound = false; | |
$fp = fopen("entries-list.txt", "r"); | |
while(!feof($fp)) { | |
// Line 1 | |
$fpEntry = ftell($fp); | |
if(empty(fgets($fp))) { break; } | |
// Line 2 - 3 | |
fgets($fp); fgets($fp); | |
// Line 4 | |
if(trim(fgets($fp), "\n") == $entryRequested) { | |
$entryFound = true; | |
break; | |
} | |
// Line 5 - 7 | |
fgets($fp); fgets($fp); fgets($fp); | |
} | |
if($entryFound == false) { | |
fclose($fp); | |
redirect(404); | |
} | |
fseek($fp, $fpEntry); | |
// Line 1 - 2 | |
fgets($fp); fgets($fp); | |
// Line 3 | |
$timestamp = explode(" ", trim(fgets($fp), "\n")); | |
// Line 4 | |
fgets($fp); | |
// Line 5 | |
$pgconfig_title = trim(fgets($fp), "\n"); | |
// Line 6 | |
fgets($fp); | |
// Line 7 | |
$blogSubtitle = trim(fgets($fp), "\n"); | |
fclose($fp); | |
} | |
function blog_timeparser($timestamp, $type = "standard") { | |
if(empty($timestamp)) return null; | |
if($type == "standard") { | |
$fullDate = date("l d F Y h:ia", $timestamp); | |
} elseif($type == "rss") { | |
$fullDate = date(DATE_ATOM, $timestamp); | |
} elseif($type == "blog-header") { | |
$fullDate = [ "d" => date("d", $timestamp), "m" => date("M", $timestamp), "y" => date("Y", $timestamp)]; | |
} | |
return $fullDate; | |
} | |
function blog_tagsGetEntries($needtag = "") { | |
if(empty($needtag)) { return false; } else { $needtag = urldecode($needtag); } | |
$entryFound = false; | |
$fp = fopen("entries-list.txt", "r"); | |
$entries = 0; $fpEntry = []; $fpEntryofPg = []; $fpEntryofPgi = 0; $fpEntryi = 0; | |
while(!feof($fp)) { | |
// Line 1 | |
$fpBefore = ftell($fp); | |
if(empty(fgets($fp))) { break; } | |
// Line 2 | |
if(fgets($fp) == "wip\n") { | |
if(!isset($_GET["all"])) { | |
for($i = 1; $i <= 5; $i++) { | |
fgets($fp); | |
} | |
continue; | |
} | |
} | |
// Line 3 - 5 | |
fgets($fp); fgets($fp); fgets($fp); | |
// Line 6 | |
$tags = explode(", ", trim(fgets($fp), "\n")); | |
foreach($tags as $tag) { | |
if($tag == $needtag) { | |
$fpEntry[$fpEntryi++] = $fpBefore; | |
$entryFound = true; | |
break; | |
} | |
} | |
// Line 7 | |
fgets($fp); | |
} | |
if($entryFound == true) { | |
$entries = count($fpEntry); | |
$maxPages = ceil($entries / 6); | |
if(isset($_GET["page"])) { $page = $_GET["page"]; } else { $page = 1; } | |
if($page > $maxPages || $page <= 0) { | |
echo '<section>'.infobox("warn", ($page < 0 ? 'There's no such thing as negative pages! ' : '').'You attempted to access a page (page '.$page.') which does not exist! Showing you page 1 instead.').'</section>'; | |
$page = 1; | |
} | |
$fpEntryi = ($page - 1) * 6; | |
$fpEntryMax = $fpEntryi + 5; | |
while($fpEntryi < $entries && $fpEntryi < $fpEntryMax) { | |
fseek($fp, $fpEntry[$fpEntryi]); | |
// Line 1 - 2 | |
fgets($fp); fgets($fp); | |
// Line 3 | |
$entryData["time"] = explode(" ", trim(fgets($fp), "\n")); | |
// Line 4 | |
$entryData["filename"] = trim(fgets($fp), "\n"); | |
// Line 5 | |
$entryData["title"] = trim(fgets($fp), "\n"); | |
// Line 6 | |
$entryData["tags"] = explode(", ", trim(fgets($fp), "\n")); | |
// Line 7 | |
fgets($fp); | |
blog_printDatabaseEcho($entryData, "default"); | |
$fpEntryi++; | |
} | |
echo '<section style="text-align: center">'; | |
echo '<a class="blog pagination button-link" href="?page='.($page - 1).((isset($_GET["all"])) ? '$all' : '').'" style="min-width: initial; visibility: ' . ($page > 1 ? 'visible' : 'hidden') . ';"><i class="fa fa-chevron-left"></i></a> '; | |
echo '<span class="blog pagination">Page ' . $page . '</span> '; | |
echo '<a class="blog pagination button-link" style="min-width: initial;" href="?page=' . ($page + 1) . ((isset($_GET["all"])) ? '$all' : '') . '" style="min-width: initial; visibility: ' . ($page < $maxPages ? 'visible' : 'hidden') . ';"><i class="fa fa-chevron-right"></i></a> '; | |
echo '</section>'; | |
} else { | |
echo '<section>'.infobox("notify", 'Unfortunately, there are no articles with the tag “'.$needtag.'”').'</section>'; | |
} | |
fclose($fp); | |
} | |
function blog_tagsListAllTags() { | |
$tags = []; | |
$tagsi = 0; | |
$fp = fopen("entries-list.txt", "r"); | |
while(!feof($fp)) { | |
// Line 1 | |
if(empty(fgets($fp))) { break; } | |
// Line 2 | |
if(fgets($fp) == "wip\n") { | |
if(!isset($_GET["all"])) { | |
for($i = 1; $i <= 5; $i++) { | |
fgets($fp); | |
} | |
continue; | |
} | |
} | |
// Line 3 - 5 | |
fgets($fp); fgets($fp); fgets($fp); | |
// Line 6 | |
$tagsfromEntry = explode(", ", trim(fgets($fp), "\n")); | |
foreach($tagsfromEntry as $tagsfromEntry) { | |
$tags[$tagsi++] = $tagsfromEntry; | |
} | |
// Line 7 | |
fgets($fp); | |
} | |
fclose($fp); | |
$tags = array_unique($tags); | |
sort($tags); | |
foreach($tags as $tag) { | |
echo '<a href="?find='.urlencode($tag).((isset($_GET["all"])) ? '$all' : '').'" class="button-link" style="background-color: #6891bb;">'.$tag.'</a>'; | |
} | |
} | |
function blog_tagsDisplayAllTags($tags) { | |
if(isset($_GET["all"])) $appendViewAll = "$all"; else $appendViewAll = ""; | |
$arrSize = count($tags); | |
for($i = 0; $i < $arrSize; $i++) { | |
echo $tags[$i]; | |
if($i + 1 != $arrSize) { echo ", "; } | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment